diff options
Diffstat (limited to 'src/mame/drivers/pingpong.cpp')
-rw-r--r-- | src/mame/drivers/pingpong.cpp | 76 |
1 files changed, 39 insertions, 37 deletions
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)); +} |