summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/arkanoid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/arkanoid.cpp')
-rw-r--r--src/mame/drivers/arkanoid.cpp157
1 files changed, 82 insertions, 75 deletions
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();
+}