diff options
Diffstat (limited to 'src/mame/drivers/cyberbal.cpp')
-rw-r--r-- | src/mame/drivers/cyberbal.cpp | 171 |
1 files changed, 88 insertions, 83 deletions
diff --git a/src/mame/drivers/cyberbal.cpp b/src/mame/drivers/cyberbal.cpp index ced3401ec8b..61e3296afba 100644 --- a/src/mame/drivers/cyberbal.cpp +++ b/src/mame/drivers/cyberbal.cpp @@ -121,30 +121,31 @@ WRITE16_MEMBER(cyberbal_state::p2_reset_w) * *************************************/ -ADDRESS_MAP_START(cyberbal_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0xfc0000, 0xfc0fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0xfc8000, 0xfcffff) AM_DEVREAD8("soundcomm", atari_sound_comm_device, main_response_r, 0xff00) - AM_RANGE(0xfd0000, 0xfd1fff) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0xfd2000, 0xfd3fff) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_reset_w) - AM_RANGE(0xfd4000, 0xfd5fff) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xfd6000, 0xfd7fff) AM_WRITE(p2_reset_w) - AM_RANGE(0xfd8000, 0xfd9fff) AM_DEVWRITE8("soundcomm", atari_sound_comm_device, main_command_w, 0xff00) - AM_RANGE(0xfe0000, 0xfe0fff) AM_READ_PORT("IN0") - AM_RANGE(0xfe1000, 0xfe1fff) AM_READ_PORT("IN1") - AM_RANGE(0xfe8000, 0xfe8fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette") - AM_RANGE(0xfec000, 0xfecfff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette") - AM_RANGE(0xff0000, 0xff1fff) AM_RAM_DEVWRITE("playfield2", tilemap_device, write16) AM_SHARE("playfield2") - AM_RANGE(0xff2000, 0xff2fff) AM_RAM_DEVWRITE("alpha2", tilemap_device, write16) AM_SHARE("alpha2") - AM_RANGE(0xff3000, 0xff37ff) AM_RAM AM_SHARE("mob2") - AM_RANGE(0xff3800, 0xff3fff) AM_RAM AM_SHARE("ff3800") - AM_RANGE(0xff4000, 0xff5fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xff6000, 0xff6fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0xff7000, 0xff77ff) AM_RAM AM_SHARE("mob") - AM_RANGE(0xff7800, 0xff9fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xffa000, 0xffbfff) AM_READONLY AM_WRITENOP AM_SHARE("extraram") - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("mainram") -ADDRESS_MAP_END +void cyberbal_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0xfc0000, 0xfc0fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0xfc8000, 0xfcffff).r(m_soundcomm, FUNC(atari_sound_comm_device::main_response_r)).umask16(0xff00); + map(0xfd0000, 0xfd1fff).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0xfd2000, 0xfd3fff).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_reset_w)); + map(0xfd4000, 0xfd5fff).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xfd6000, 0xfd7fff).w(this, FUNC(cyberbal_state::p2_reset_w)); + map(0xfd8000, 0xfd9fff).w(m_soundcomm, FUNC(atari_sound_comm_device::main_command_w)).umask16(0xff00); + map(0xfe0000, 0xfe0fff).portr("IN0"); + map(0xfe1000, 0xfe1fff).portr("IN1"); + map(0xfe8000, 0xfe8fff).ram().w("rpalette", FUNC(palette_device::write16)).share("rpalette"); + map(0xfec000, 0xfecfff).ram().w("lpalette", FUNC(palette_device::write16)).share("lpalette"); + map(0xff0000, 0xff1fff).ram().w(m_playfield2_tilemap, FUNC(tilemap_device::write16)).share("playfield2"); + map(0xff2000, 0xff2fff).ram().w(m_alpha2_tilemap, FUNC(tilemap_device::write16)).share("alpha2"); + map(0xff3000, 0xff37ff).ram().share("mob2"); + map(0xff3800, 0xff3fff).ram().share("ff3800"); + map(0xff4000, 0xff5fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield"); + map(0xff6000, 0xff6fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha"); + map(0xff7000, 0xff77ff).ram().share("mob"); + map(0xff7800, 0xff9fff).ram().share("sharedram"); + map(0xffa000, 0xffbfff).readonly().nopw().share("extraram"); + map(0xffc000, 0xffffff).ram().share("mainram"); +} @@ -154,24 +155,25 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cyberbal_state::extra_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0xfc0000, 0xfdffff) AM_WRITE(video_int_ack_w) - AM_RANGE(0xfe0000, 0xfe0fff) AM_READ_PORT("IN0") - AM_RANGE(0xfe1000, 0xfe1fff) AM_READ_PORT("IN1") - AM_RANGE(0xfe8000, 0xfe8fff) AM_RAM_DEVWRITE("rpalette", palette_device, write16) AM_SHARE("rpalette") - AM_RANGE(0xfec000, 0xfecfff) AM_RAM_DEVWRITE("lpalette", palette_device, write16) AM_SHARE("lpalette") - AM_RANGE(0xff0000, 0xff1fff) AM_RAM_DEVWRITE("playfield2", tilemap_device, write16) AM_SHARE("playfield2") - AM_RANGE(0xff2000, 0xff2fff) AM_RAM_DEVWRITE("alpha2", tilemap_device, write16) AM_SHARE("alpha2") - AM_RANGE(0xff3000, 0xff37ff) AM_RAM AM_SHARE("mob2") - AM_RANGE(0xff3800, 0xff3fff) AM_RAM AM_SHARE("ff3800") - AM_RANGE(0xff4000, 0xff5fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xff6000, 0xff6fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0xff7000, 0xff77ff) AM_RAM AM_SHARE("mob") - AM_RANGE(0xff7800, 0xff9fff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("extraram") - AM_RANGE(0xffc000, 0xffffff) AM_READONLY AM_WRITENOP AM_SHARE("mainram") -ADDRESS_MAP_END +void cyberbal_state::extra_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0xfc0000, 0xfdffff).w(this, FUNC(cyberbal_state::video_int_ack_w)); + map(0xfe0000, 0xfe0fff).portr("IN0"); + map(0xfe1000, 0xfe1fff).portr("IN1"); + map(0xfe8000, 0xfe8fff).ram().w("rpalette", FUNC(palette_device::write16)).share("rpalette"); + map(0xfec000, 0xfecfff).ram().w("lpalette", FUNC(palette_device::write16)).share("lpalette"); + map(0xff0000, 0xff1fff).ram().w(m_playfield2_tilemap, FUNC(tilemap_device::write16)).share("playfield2"); + map(0xff2000, 0xff2fff).ram().w(m_alpha2_tilemap, FUNC(tilemap_device::write16)).share("alpha2"); + map(0xff3000, 0xff37ff).ram().share("mob2"); + map(0xff3800, 0xff3fff).ram().share("ff3800"); + map(0xff4000, 0xff5fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield"); + map(0xff6000, 0xff6fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha"); + map(0xff7000, 0xff77ff).ram().share("mob"); + map(0xff7800, 0xff9fff).ram().share("sharedram"); + map(0xffa000, 0xffbfff).ram().share("extraram"); + map(0xffc000, 0xffffff).readonly().nopw().share("mainram"); +} @@ -181,20 +183,21 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cyberbal_state::sound_map) - AM_RANGE(0x0000, 0x1fff) AM_RAM - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x2800, 0x2801) AM_WRITE(sound_68k_6502_w) - AM_RANGE(0x2802, 0x2803) AM_DEVREADWRITE("soundcomm", atari_sound_comm_device, sound_irq_ack_r, sound_irq_ack_w) - AM_RANGE(0x2804, 0x2805) AM_DEVWRITE("soundcomm", atari_sound_comm_device, sound_response_w) - AM_RANGE(0x2806, 0x2807) AM_WRITE(sound_bank_select_w) - AM_RANGE(0x2c00, 0x2c01) AM_DEVREAD("soundcomm", atari_sound_comm_device, sound_command_r) - AM_RANGE(0x2c02, 0x2c03) AM_READ(special_port3_r) - AM_RANGE(0x2c04, 0x2c05) AM_READ(sound_68k_6502_r) - AM_RANGE(0x2c06, 0x2c07) AM_READ(sound_6502_stat_r) - AM_RANGE(0x3000, 0x3fff) AM_ROMBANK("soundbank") - AM_RANGE(0x4000, 0xffff) AM_ROM -ADDRESS_MAP_END +void cyberbal_state::sound_map(address_map &map) +{ + map(0x0000, 0x1fff).ram(); + map(0x2000, 0x2001).rw(m_ymsnd, FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x2800, 0x2801).w(this, FUNC(cyberbal_state::sound_68k_6502_w)); + map(0x2802, 0x2803).rw(m_soundcomm, FUNC(atari_sound_comm_device::sound_irq_ack_r), FUNC(atari_sound_comm_device::sound_irq_ack_w)); + map(0x2804, 0x2805).w(m_soundcomm, FUNC(atari_sound_comm_device::sound_response_w)); + map(0x2806, 0x2807).w(this, FUNC(cyberbal_state::sound_bank_select_w)); + map(0x2c00, 0x2c01).r(m_soundcomm, FUNC(atari_sound_comm_device::sound_command_r)); + map(0x2c02, 0x2c03).r(this, FUNC(cyberbal_state::special_port3_r)); + map(0x2c04, 0x2c05).r(this, FUNC(cyberbal_state::sound_68k_6502_r)); + map(0x2c06, 0x2c07).r(this, FUNC(cyberbal_state::sound_6502_stat_r)); + map(0x3000, 0x3fff).bankr("soundbank"); + map(0x4000, 0xffff).rom(); +} @@ -204,14 +207,15 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cyberbal_state::sound_68k_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0xff8000, 0xff87ff) AM_READ(sound_68k_r) - AM_RANGE(0xff8800, 0xff8fff) AM_WRITE(sound_68k_w) - AM_RANGE(0xff9000, 0xff97ff) AM_WRITE(io_68k_irq_ack_w) - AM_RANGE(0xff9800, 0xff9fff) AM_WRITE(sound_68k_dac_w) - AM_RANGE(0xfff000, 0xffffff) AM_RAM -ADDRESS_MAP_END +void cyberbal_state::sound_68k_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0xff8000, 0xff87ff).r(this, FUNC(cyberbal_state::sound_68k_r)); + map(0xff8800, 0xff8fff).w(this, FUNC(cyberbal_state::sound_68k_w)); + map(0xff9000, 0xff97ff).w(this, FUNC(cyberbal_state::io_68k_irq_ack_w)); + map(0xff9800, 0xff9fff).w(this, FUNC(cyberbal_state::sound_68k_dac_w)); + map(0xfff000, 0xffffff).ram(); +} @@ -221,25 +225,26 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(cyberbal2p_state::cyberbal2p_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0xfc0000, 0xfc0003) AM_READ_PORT("IN0") - AM_RANGE(0xfc2000, 0xfc2003) AM_READ_PORT("IN1") - AM_RANGE(0xfc4000, 0xfc4003) AM_READ_PORT("IN2") - AM_RANGE(0xfc6000, 0xfc6003) AM_DEVREAD8("jsa", atari_jsa_ii_device, main_response_r, 0xff00) - AM_RANGE(0xfc8000, 0xfc8fff) AM_DEVREADWRITE8("eeprom", eeprom_parallel_28xx_device, read, write, 0x00ff) - AM_RANGE(0xfca000, 0xfcafff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xfd0000, 0xfd0003) AM_DEVWRITE("eeprom", eeprom_parallel_28xx_device, unlock_write16) - AM_RANGE(0xfd2000, 0xfd2003) AM_DEVWRITE("jsa", atari_jsa_ii_device, sound_reset_w) - AM_RANGE(0xfd4000, 0xfd4003) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xfd6000, 0xfd6003) AM_WRITE(video_int_ack_w) - AM_RANGE(0xfd8000, 0xfd8003) AM_DEVWRITE8("jsa", atari_jsa_ii_device, main_command_w, 0xff00) - AM_RANGE(0xfe0000, 0xfe0003) AM_READ(sound_state_r) - AM_RANGE(0xff0000, 0xff1fff) AM_RAM_DEVWRITE("playfield", tilemap_device, write16) AM_SHARE("playfield") - AM_RANGE(0xff2000, 0xff2fff) AM_RAM_DEVWRITE("alpha", tilemap_device, write16) AM_SHARE("alpha") - AM_RANGE(0xff3000, 0xff37ff) AM_RAM AM_SHARE("mob") - AM_RANGE(0xff3800, 0xffffff) AM_RAM -ADDRESS_MAP_END +void cyberbal2p_state::cyberbal2p_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0xfc0000, 0xfc0003).portr("IN0"); + map(0xfc2000, 0xfc2003).portr("IN1"); + map(0xfc4000, 0xfc4003).portr("IN2"); + map(0xfc6000, 0xfc6003).r("jsa", FUNC(atari_jsa_ii_device::main_response_r)).umask16(0xff00); + map(0xfc8000, 0xfc8fff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)).umask16(0x00ff); + map(0xfca000, 0xfcafff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0xfd0000, 0xfd0003).w("eeprom", FUNC(eeprom_parallel_28xx_device::unlock_write16)); + map(0xfd2000, 0xfd2003).w("jsa", FUNC(atari_jsa_ii_device::sound_reset_w)); + map(0xfd4000, 0xfd4003).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xfd6000, 0xfd6003).w(this, FUNC(cyberbal2p_state::video_int_ack_w)); + map(0xfd8000, 0xfd8003).w("jsa", FUNC(atari_jsa_ii_device::main_command_w)).umask16(0xff00); + map(0xfe0000, 0xfe0003).r(this, FUNC(cyberbal2p_state::sound_state_r)); + map(0xff0000, 0xff1fff).ram().w("playfield", FUNC(tilemap_device::write16)).share("playfield"); + map(0xff2000, 0xff2fff).ram().w("alpha", FUNC(tilemap_device::write16)).share("alpha"); + map(0xff3000, 0xff37ff).ram().share("mob"); + map(0xff3800, 0xffffff).ram(); +} |