diff options
Diffstat (limited to 'src/mame/drivers/mw8080bw.cpp')
-rw-r--r-- | src/mame/drivers/mw8080bw.cpp | 570 |
1 files changed, 296 insertions, 274 deletions
diff --git a/src/mame/drivers/mw8080bw.cpp b/src/mame/drivers/mw8080bw.cpp index df7fbc42f9e..cbfe91185cc 100644 --- a/src/mame/drivers/mw8080bw.cpp +++ b/src/mame/drivers/mw8080bw.cpp @@ -214,12 +214,13 @@ WRITE8_MEMBER(mw8080bw_state::mw8080bw_reversable_shift_count_w) * *************************************/ -ADDRESS_MAP_START(mw8080bw_state::main_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x1fff) AM_ROM AM_WRITENOP - AM_RANGE(0x2000, 0x3fff) AM_MIRROR(0x4000) AM_RAM AM_SHARE("main_ram") - AM_RANGE(0x4000, 0x5fff) AM_ROM AM_WRITENOP -ADDRESS_MAP_END +void mw8080bw_state::main_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x1fff).rom().nopw(); + map(0x2000, 0x3fff).mirror(0x4000).ram().share("main_ram"); + map(0x4000, 0x5fff).rom().nopw(); +} @@ -330,19 +331,20 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::seawolf_erase_input_r) } -ADDRESS_MAP_START(mw8080bw_state::seawolf_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_WRITE(seawolf_explosion_lamp_w) - AM_RANGE(0x02, 0x02) AM_WRITE(seawolf_periscope_lamp_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x05, 0x05) AM_WRITE(seawolf_audio_w) -ADDRESS_MAP_END +void mw8080bw_state::seawolf_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x01, 0x01).mirror(0x04).portr("IN0"); + map(0x02, 0x02).mirror(0x04).portr("IN1"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(this, FUNC(mw8080bw_state::seawolf_explosion_lamp_w)); + map(0x02, 0x02).w(this, FUNC(mw8080bw_state::seawolf_periscope_lamp_w)); + map(0x03, 0x03).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::seawolf_audio_w)); +} /* the 30 position encoder is verified */ @@ -443,16 +445,17 @@ WRITE8_MEMBER(mw8080bw_state::gunfight_io_w) } -ADDRESS_MAP_START(mw8080bw_state::gunfight_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) +void mw8080bw_state::gunfight_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); /* no decoder, just 3 AND gates */ - AM_RANGE(0x00, 0x07) AM_WRITE(gunfight_io_w) -ADDRESS_MAP_END + map(0x00, 0x07).w(this, FUNC(mw8080bw_state::gunfight_io_w)); +} static const ioport_value gunfight_controller_table[7] = @@ -638,16 +641,17 @@ WRITE8_MEMBER(mw8080bw_state::tornbase_io_w) } -ADDRESS_MAP_START(mw8080bw_state::tornbase_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) +void mw8080bw_state::tornbase_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); /* no decoder, just 3 AND gates */ - AM_RANGE(0x00, 0x07) AM_WRITE(tornbase_io_w) -ADDRESS_MAP_END + map(0x00, 0x07).w(this, FUNC(mw8080bw_state::tornbase_io_w)); +} static INPUT_PORTS_START( tornbase ) @@ -759,19 +763,20 @@ MACHINE_CONFIG_END * *************************************/ -ADDRESS_MAP_START(mw8080bw_state::zzzap_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x02, 0x02) AM_WRITE(zzzap_audio_1_w) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x05, 0x05) AM_WRITE(zzzap_audio_2_w) - AM_RANGE(0x07, 0x07) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void mw8080bw_state::zzzap_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x02, 0x02).w(this, FUNC(mw8080bw_state::zzzap_audio_1_w)); + map(0x03, 0x03).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::zzzap_audio_2_w)); + map(0x07, 0x07).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} static INPUT_PORTS_START( zzzap ) @@ -918,14 +923,15 @@ WRITE8_MEMBER(mw8080bw_state::maze_io_w) } -ADDRESS_MAP_START(mw8080bw_state::maze_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x3) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") +void mw8080bw_state::maze_io_map(address_map &map) +{ + map.global_mask(0x3); + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); /* no decoder, just a couple of AND gates */ - AM_RANGE(0x00, 0x03) AM_WRITE(maze_io_w) -ADDRESS_MAP_END + map(0x00, 0x03).w(this, FUNC(mw8080bw_state::maze_io_w)); +} static INPUT_PORTS_START( maze ) @@ -989,20 +995,21 @@ MACHINE_START_MEMBER(mw8080bw_state,boothill) } -ADDRESS_MAP_START(mw8080bw_state::boothill_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r) - - AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(boothill_audio_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) -ADDRESS_MAP_END +void mw8080bw_state::boothill_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_result_r)); + + map(0x01, 0x01).w(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::boothill_audio_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); +} static const ioport_value boothill_controller_table[7] = @@ -1084,16 +1091,17 @@ WRITE8_MEMBER(mw8080bw_state::checkmat_io_w) } -ADDRESS_MAP_START(mw8080bw_state::checkmat_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x3) - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_READ_PORT("IN3") +void mw8080bw_state::checkmat_io_map(address_map &map) +{ + map.global_mask(0x3); + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2"); + map(0x03, 0x03).portr("IN3"); /* no decoder, just a couple of AND gates */ - AM_RANGE(0x00, 0x03) AM_WRITE(checkmat_io_w) -ADDRESS_MAP_END + map(0x00, 0x03).w(this, FUNC(mw8080bw_state::checkmat_io_w)); +} static INPUT_PORTS_START( checkmat ) @@ -1219,21 +1227,22 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::desertgu_dip_sw_0_1_r) } -ADDRESS_MAP_START(mw8080bw_state::desertgu_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(desertgu_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) - AM_RANGE(0x07, 0x07) AM_WRITE(desertgu_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::desertgu_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x01, 0x01).mirror(0x04).portr("IN0"); + map(0x02, 0x02).mirror(0x04).portr("IN1"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::desertgu_audio_1_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::desertgu_audio_2_w)); +} static INPUT_PORTS_START( desertgu ) @@ -1344,20 +1353,21 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::dplay_pitch_right_input_r) } -ADDRESS_MAP_START(mw8080bw_state::dplay_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(dplay_audio_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) -ADDRESS_MAP_END +void mw8080bw_state::dplay_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::dplay_audio_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); +} static INPUT_PORTS_START( dplay ) @@ -1523,21 +1533,22 @@ MACHINE_START_MEMBER(mw8080bw_state,gmissile) } -ADDRESS_MAP_START(mw8080bw_state::gmissile_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r) - - AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(gmissile_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(gmissile_audio_2_w) +void mw8080bw_state::gmissile_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_result_r)); + + map(0x01, 0x01).w(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::gmissile_audio_1_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::gmissile_audio_2_w)); /* also writes 0x00 to 0x06, but it is not connected */ - AM_RANGE(0x07, 0x07) AM_WRITE(gmissile_audio_3_w) -ADDRESS_MAP_END + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::gmissile_audio_3_w)); +} static INPUT_PORTS_START( gmissile ) @@ -1620,19 +1631,20 @@ MACHINE_START_MEMBER(mw8080bw_state,m4) } -ADDRESS_MAP_START(mw8080bw_state::m4_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ(mw8080bw_reversable_shift_result_r) - - AM_RANGE(0x01, 0x01) AM_WRITE(mw8080bw_reversable_shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(m4_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(m4_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::m4_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_result_r)); + + map(0x01, 0x01).w(this, FUNC(mw8080bw_state::mw8080bw_reversable_shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::m4_audio_1_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::m4_audio_2_w)); +} static INPUT_PORTS_START( m4 ) @@ -1736,21 +1748,22 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::clowns_controller_r) } -ADDRESS_MAP_START(mw8080bw_state::clowns_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(clowns_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) - AM_RANGE(0x07, 0x07) AM_WRITE(clowns_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::clowns_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::clowns_audio_1_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::clowns_audio_2_w)); +} static INPUT_PORTS_START( clowns ) @@ -1876,22 +1889,23 @@ MACHINE_CONFIG_END * *************************************/ -ADDRESS_MAP_START(mw8080bw_state::spacwalk_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - - AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(spacwalk_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) - AM_RANGE(0x07, 0x07) AM_WRITE(spacwalk_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::spacwalk_io_map(address_map &map) +{ + map.global_mask(0x7); + + map(0x00, 0x00).portr("IN0"); + map(0x01, 0x01).portr("IN1"); + map(0x02, 0x02).portr("IN2"); + map(0x03, 0x03).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::spacwalk_audio_1_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::spacwalk_audio_2_w)); +} static INPUT_PORTS_START( spacwalk ) PORT_START("IN0") @@ -1973,21 +1987,22 @@ MACHINE_CONFIG_END * *************************************/ -ADDRESS_MAP_START(mw8080bw_state::shuffle_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xf) /* yes, 4, and no mirroring on the read handlers */ - AM_RANGE(0x01, 0x01) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0") - AM_RANGE(0x03, 0x03) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN1") - AM_RANGE(0x05, 0x05) AM_READ_PORT("IN2") - AM_RANGE(0x06, 0x06) AM_READ_PORT("IN3") - - AM_RANGE(0x01, 0x01) AM_MIRROR(0x08) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_MIRROR(0x08) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x04, 0x04) AM_MIRROR(0x08) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_MIRROR(0x08) AM_WRITE(shuffle_audio_1_w) - AM_RANGE(0x06, 0x06) AM_MIRROR(0x08) AM_WRITE(shuffle_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::shuffle_io_map(address_map &map) +{ + map.global_mask(0xf); /* yes, 4, and no mirroring on the read handlers */ + map(0x01, 0x01).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + map(0x02, 0x02).portr("IN0"); + map(0x03, 0x03).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x04, 0x04).portr("IN1"); + map(0x05, 0x05).portr("IN2"); + map(0x06, 0x06).portr("IN3"); + + map(0x01, 0x01).mirror(0x08).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).mirror(0x08).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).mirror(0x08).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).mirror(0x08).w(this, FUNC(mw8080bw_state::shuffle_audio_1_w)); + map(0x06, 0x06).mirror(0x08).w(this, FUNC(mw8080bw_state::shuffle_audio_2_w)); +} static INPUT_PORTS_START( shuffle ) @@ -2056,20 +2071,21 @@ MACHINE_CONFIG_END * *************************************/ -ADDRESS_MAP_START(mw8080bw_state::dogpatch_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(dogpatch_audio_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(midway_tone_generator_lo_w) - AM_RANGE(0x06, 0x06) AM_WRITE(midway_tone_generator_hi_w) -ADDRESS_MAP_END +void mw8080bw_state::dogpatch_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::dogpatch_audio_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::midway_tone_generator_lo_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::midway_tone_generator_hi_w)); +} static const ioport_value dogpatch_controller_table[7] = @@ -2207,16 +2223,17 @@ WRITE8_MEMBER(mw8080bw_state::spcenctr_io_w) } -ADDRESS_MAP_START(mw8080bw_state::spcenctr_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0xfc) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0xfc) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0xfc) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0xfc) AM_READNOP +void mw8080bw_state::spcenctr_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0xfc).portr("IN0"); + map(0x01, 0x01).mirror(0xfc).portr("IN1"); + map(0x02, 0x02).mirror(0xfc).portr("IN2"); + map(0x03, 0x03).mirror(0xfc).nopr(); /* complicated addressing logic */ - AM_RANGE(0x00, 0xff) AM_WRITE(spcenctr_io_w) -ADDRESS_MAP_END + map(0x00, 0xff).w(this, FUNC(mw8080bw_state::spcenctr_io_w)); +} static const ioport_value spcenctr_controller_table[] = @@ -2315,19 +2332,20 @@ MACHINE_START_MEMBER(mw8080bw_state,phantom2) } -ADDRESS_MAP_START(mw8080bw_state::phantom2_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(phantom2_audio_1_w) - AM_RANGE(0x06, 0x06) AM_WRITE(phantom2_audio_2_w) -ADDRESS_MAP_END +void mw8080bw_state::phantom2_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x01, 0x01).mirror(0x04).portr("IN0"); + map(0x02, 0x02).mirror(0x04).portr("IN1"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::phantom2_audio_1_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::phantom2_audio_2_w)); +} static INPUT_PORTS_START( phantom2 ) @@ -2443,27 +2461,28 @@ WRITE8_MEMBER(mw8080bw_state::bowler_lights_2_w) } -ADDRESS_MAP_START(mw8080bw_state::bowler_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xf) /* no masking on the reads, all 4 bits are decoded */ - AM_RANGE(0x01, 0x01) AM_READ(bowler_shift_result_r) - AM_RANGE(0x02, 0x02) AM_READ_PORT("IN0") - AM_RANGE(0x03, 0x03) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x04, 0x04) AM_READ_PORT("IN1") - AM_RANGE(0x05, 0x05) AM_READ_PORT("IN2") - AM_RANGE(0x06, 0x06) AM_READ_PORT("IN3") - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x05, 0x05) AM_WRITE(bowler_audio_1_w) - AM_RANGE(0x06, 0x06) AM_WRITE(bowler_audio_2_w) - AM_RANGE(0x07, 0x07) AM_WRITE(bowler_lights_1_w) - AM_RANGE(0x08, 0x08) AM_WRITE(bowler_audio_3_w) - AM_RANGE(0x09, 0x09) AM_WRITE(bowler_audio_4_w) - AM_RANGE(0x0a, 0x0a) AM_WRITE(bowler_audio_5_w) - AM_RANGE(0x0e, 0x0e) AM_WRITE(bowler_lights_2_w) - AM_RANGE(0x0f, 0x0f) AM_WRITE(bowler_audio_6_w) -ADDRESS_MAP_END +void mw8080bw_state::bowler_io_map(address_map &map) +{ + map.global_mask(0xf); /* no masking on the reads, all 4 bits are decoded */ + map(0x01, 0x01).r(this, FUNC(mw8080bw_state::bowler_shift_result_r)); + map(0x02, 0x02).portr("IN0"); + map(0x03, 0x03).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x04, 0x04).portr("IN1"); + map(0x05, 0x05).portr("IN2"); + map(0x06, 0x06).portr("IN3"); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::bowler_audio_1_w)); + map(0x06, 0x06).w(this, FUNC(mw8080bw_state::bowler_audio_2_w)); + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::bowler_lights_1_w)); + map(0x08, 0x08).w(this, FUNC(mw8080bw_state::bowler_audio_3_w)); + map(0x09, 0x09).w(this, FUNC(mw8080bw_state::bowler_audio_4_w)); + map(0x0a, 0x0a).w(this, FUNC(mw8080bw_state::bowler_audio_5_w)); + map(0x0e, 0x0e).w(this, FUNC(mw8080bw_state::bowler_lights_2_w)); + map(0x0f, 0x0f).w(this, FUNC(mw8080bw_state::bowler_audio_6_w)); +} static INPUT_PORTS_START( bowler ) @@ -2630,19 +2649,20 @@ int mw8080bw_state::invaders_is_cabinet_cocktail() } -ADDRESS_MAP_START(mw8080bw_state::invaders_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_WRITE(invaders_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invaders_audio_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void mw8080bw_state::invaders_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::invaders_audio_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::invaders_audio_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} static INPUT_PORTS_START( invaders ) @@ -2764,18 +2784,19 @@ CUSTOM_INPUT_MEMBER(mw8080bw_state::blueshrk_coin_input_r) } -ADDRESS_MAP_START(mw8080bw_state::blueshrk_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ(mw8080bw_shift_result_rev_r) - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x03, 0x03) AM_WRITE(blueshrk_audio_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) -ADDRESS_MAP_END +void mw8080bw_state::blueshrk_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).r(this, FUNC(mw8080bw_state::mw8080bw_shift_result_rev_r)); + map(0x01, 0x01).mirror(0x04).portr("IN0"); + map(0x02, 0x02).mirror(0x04).portr("IN1"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::blueshrk_audio_w)); + map(0x04, 0x04).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); +} static INPUT_PORTS_START( blueshrk ) @@ -2847,21 +2868,22 @@ uint32_t mw8080bw_state::invad2ct_coin_input_r(void *param) #endif -ADDRESS_MAP_START(mw8080bw_state::invad2ct_io_map) - ADDRESS_MAP_GLOBAL_MASK(0x7) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") - AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") - AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN2") - AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) - - AM_RANGE(0x01, 0x01) AM_WRITE(invad2ct_audio_3_w) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_device, shift_count_w) - AM_RANGE(0x03, 0x03) AM_WRITE(invad2ct_audio_1_w) - AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) - AM_RANGE(0x05, 0x05) AM_WRITE(invad2ct_audio_2_w) - AM_RANGE(0x06, 0x06) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x07, 0x07) AM_WRITE(invad2ct_audio_4_w) -ADDRESS_MAP_END +void mw8080bw_state::invad2ct_io_map(address_map &map) +{ + map.global_mask(0x7); + map(0x00, 0x00).mirror(0x04).portr("IN0"); + map(0x01, 0x01).mirror(0x04).portr("IN1"); + map(0x02, 0x02).mirror(0x04).portr("IN2"); + map(0x03, 0x03).mirror(0x04).r(m_mb14241, FUNC(mb14241_device::shift_result_r)); + + map(0x01, 0x01).w(this, FUNC(mw8080bw_state::invad2ct_audio_3_w)); + map(0x02, 0x02).w(m_mb14241, FUNC(mb14241_device::shift_count_w)); + map(0x03, 0x03).w(this, FUNC(mw8080bw_state::invad2ct_audio_1_w)); + map(0x04, 0x04).w(m_mb14241, FUNC(mb14241_device::shift_data_w)); + map(0x05, 0x05).w(this, FUNC(mw8080bw_state::invad2ct_audio_2_w)); + map(0x06, 0x06).w(m_watchdog, FUNC(watchdog_timer_device::reset_w)); + map(0x07, 0x07).w(this, FUNC(mw8080bw_state::invad2ct_audio_4_w)); +} static INPUT_PORTS_START( invad2ct ) |