diff options
Diffstat (limited to 'src/mame/drivers/xain.cpp')
-rw-r--r-- | src/mame/drivers/xain.cpp | 100 |
1 files changed, 52 insertions, 48 deletions
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 ) |