diff options
Diffstat (limited to 'src/mame/drivers/topspeed.cpp')
-rw-r--r-- | src/mame/drivers/topspeed.cpp | 93 |
1 files changed, 49 insertions, 44 deletions
diff --git a/src/mame/drivers/topspeed.cpp b/src/mame/drivers/topspeed.cpp index 8fb71ca7edb..3ce9d47fc42 100644 --- a/src/mame/drivers/topspeed.cpp +++ b/src/mame/drivers/topspeed.cpp @@ -377,54 +377,59 @@ WRITE_LINE_MEMBER(topspeed_state::z80ctc_to0) MEMORY STRUCTURES ***********************************************************/ -ADDRESS_MAP_START(topspeed_state::cpua_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x500000, 0x503fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x600002, 0x600003) AM_WRITE(cpua_ctrl_w) - AM_RANGE(0x7e0000, 0x7e0001) AM_READNOP AM_DEVWRITE8("ciu", pc060ha_device, master_port_w, 0x00ff) - AM_RANGE(0x7e0002, 0x7e0003) AM_DEVREADWRITE8("ciu", pc060ha_device, master_comm_r, master_comm_w, 0x00ff) - AM_RANGE(0x800000, 0x8003ff) AM_RAM AM_SHARE("raster_ctrl") - AM_RANGE(0x800400, 0x80ffff) AM_RAM - AM_RANGE(0x880000, 0x880007) AM_WRITENOP // Lamps/outputs? - AM_RANGE(0xa00000, 0xa0ffff) AM_DEVREADWRITE("pc080sn_1", pc080sn_device, word_r, word_w) - AM_RANGE(0xa20000, 0xa20003) AM_DEVWRITE("pc080sn_1", pc080sn_device, yscroll_word_w) - AM_RANGE(0xa40000, 0xa40003) AM_DEVWRITE("pc080sn_1", pc080sn_device, xscroll_word_w) - AM_RANGE(0xa50000, 0xa50003) AM_DEVWRITE("pc080sn_1", pc080sn_device, ctrl_word_w) - AM_RANGE(0xb00000, 0xb0ffff) AM_DEVREADWRITE("pc080sn_2", pc080sn_device, word_r, word_w) - AM_RANGE(0xb20000, 0xb20003) AM_DEVWRITE("pc080sn_2", pc080sn_device, yscroll_word_w) - AM_RANGE(0xb40000, 0xb40003) AM_DEVWRITE("pc080sn_2", pc080sn_device, xscroll_word_w) - AM_RANGE(0xb50000, 0xb50003) AM_DEVWRITE("pc080sn_2", pc080sn_device, ctrl_word_w) - AM_RANGE(0xd00000, 0xd00fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xe00000, 0xe0ffff) AM_RAM AM_SHARE("spritemap") -ADDRESS_MAP_END - -ADDRESS_MAP_START(topspeed_state::cpub_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x880000, 0x880001) AM_READ8(input_bypass_r, 0x00ff) AM_DEVWRITE8("tc0040ioc", tc0040ioc_device, portreg_w, 0x00ff) - AM_RANGE(0x880002, 0x880003) AM_DEVREADWRITE8("tc0040ioc", tc0040ioc_device, port_r, port_w, 0x00ff) - AM_RANGE(0x900000, 0x9003ff) AM_READWRITE(motor_r, motor_w) -ADDRESS_MAP_END +void topspeed_state::cpua_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x400000, 0x40ffff).ram().share("sharedram"); + map(0x500000, 0x503fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x600002, 0x600003).w(this, FUNC(topspeed_state::cpua_ctrl_w)); + map(0x7e0000, 0x7e0001).nopr(); + map(0x7e0001, 0x7e0001).w("ciu", FUNC(pc060ha_device::master_port_w)); + map(0x7e0003, 0x7e0003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w)); + map(0x800000, 0x8003ff).ram().share("raster_ctrl"); + map(0x800400, 0x80ffff).ram(); + map(0x880000, 0x880007).nopw(); // Lamps/outputs? + map(0xa00000, 0xa0ffff).rw(m_pc080sn_1, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); + map(0xa20000, 0xa20003).w(m_pc080sn_1, FUNC(pc080sn_device::yscroll_word_w)); + map(0xa40000, 0xa40003).w(m_pc080sn_1, FUNC(pc080sn_device::xscroll_word_w)); + map(0xa50000, 0xa50003).w(m_pc080sn_1, FUNC(pc080sn_device::ctrl_word_w)); + map(0xb00000, 0xb0ffff).rw(m_pc080sn_2, FUNC(pc080sn_device::word_r), FUNC(pc080sn_device::word_w)); + map(0xb20000, 0xb20003).w(m_pc080sn_2, FUNC(pc080sn_device::yscroll_word_w)); + map(0xb40000, 0xb40003).w(m_pc080sn_2, FUNC(pc080sn_device::xscroll_word_w)); + map(0xb50000, 0xb50003).w(m_pc080sn_2, FUNC(pc080sn_device::ctrl_word_w)); + map(0xd00000, 0xd00fff).ram().share("spriteram"); + map(0xe00000, 0xe0ffff).ram().share("spritemap"); +} + +void topspeed_state::cpub_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x400000, 0x40ffff).ram().share("sharedram"); + map(0x880001, 0x880001).r(this, FUNC(topspeed_state::input_bypass_r)).w(m_tc0040ioc, FUNC(tc0040ioc_device::portreg_w)).umask16(0x00ff); + map(0x880003, 0x880003).rw(m_tc0040ioc, FUNC(tc0040ioc_device::port_r), FUNC(tc0040ioc_device::port_w)); + map(0x900000, 0x9003ff).rw(this, FUNC(topspeed_state::motor_r), FUNC(topspeed_state::motor_w)); +} /***************************************************************************/ -ADDRESS_MAP_START(topspeed_state::z80_prg) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("sndbank") - AM_RANGE(0x8000, 0x8fff) AM_RAM - AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("ciu", pc060ha_device, slave_port_w) - AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w) - AM_RANGE(0xb000, 0xcfff) AM_WRITE(msm5205_command_w) - AM_RANGE(0xd000, 0xdfff) AM_WRITE(volume_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(topspeed_state::z80_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) -ADDRESS_MAP_END +void topspeed_state::z80_prg(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x7fff).bankr("sndbank"); + map(0x8000, 0x8fff).ram(); + map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xa000, 0xa000).w("ciu", FUNC(pc060ha_device::slave_port_w)); + map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w)); + map(0xb000, 0xcfff).w(this, FUNC(topspeed_state::msm5205_command_w)); + map(0xd000, 0xdfff).w(this, FUNC(topspeed_state::volume_w)); +} + +void topspeed_state::z80_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); +} /*********************************************************** |