summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/pacman.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/pacman.cpp')
-rw-r--r--src/mame/drivers/pacman.cpp806
1 files changed, 417 insertions, 389 deletions
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");
+}