diff options
Diffstat (limited to 'src/mame/drivers/mappy.cpp')
-rw-r--r-- | src/mame/drivers/mappy.cpp | 123 |
1 files changed, 65 insertions, 58 deletions
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 */ +} |