diff options
Diffstat (limited to 'src/mame/drivers/20pacgal.cpp')
-rw-r--r-- | src/mame/drivers/20pacgal.cpp | 144 |
1 files changed, 74 insertions, 70 deletions
diff --git a/src/mame/drivers/20pacgal.cpp b/src/mame/drivers/20pacgal.cpp index 68d7bc914d8..94b47a12ad4 100644 --- a/src/mame/drivers/20pacgal.cpp +++ b/src/mame/drivers/20pacgal.cpp @@ -186,39 +186,41 @@ WRITE8_MEMBER(_20pacgal_state::sprite_lookup_w) // where does the clut (sprite_lookup_w) get uploaded? even if I set a WP on that data in ROM it isn't hit? // likewise the sound table.. is it being uploaded in a different format at 0x0c000? // we also need the palette data because there is only a single rom on this pcb? -ADDRESS_MAP_START(_25pacman_state::_25pacman_map) - AM_RANGE(0x00000, 0x3ffff) AM_DEVREADWRITE("flash", amd_29lv200t_device, read, write ) // (always fall through if nothing else is mapped?) +void _25pacman_state::_25pacman_map(address_map &map) +{ + map(0x00000, 0x3ffff).rw("flash", FUNC(amd_29lv200t_device::read), FUNC(amd_29lv200t_device::write)); // (always fall through if nothing else is mapped?) - AM_RANGE(0x04000, 0x047ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0x04800, 0x05fff) AM_RAM - AM_RANGE(0x06000, 0x06fff) AM_WRITEONLY AM_SHARE("char_gfx_ram") - AM_RANGE(0x07000, 0x0717f) AM_WRITE(sprite_ram_w) + map(0x04000, 0x047ff).ram().share("video_ram"); + map(0x04800, 0x05fff).ram(); + map(0x06000, 0x06fff).writeonly().share("char_gfx_ram"); + map(0x07000, 0x0717f).w(this, FUNC(_25pacman_state::sprite_ram_w)); // AM_RANGE(0x08000, 0x09fff) AM_READ_BANK("bank1") AM_WRITE(ram_48000_w) - AM_RANGE(0x08000, 0x09fff) AM_WRITENOP - AM_RANGE(0x0a000, 0x0bfff) AM_WRITE(sprite_gfx_w) - AM_RANGE(0x0c000, 0x0dfff) AM_WRITENOP // is this the sound waveforms in a different format? - AM_RANGE(0x0e000, 0x0ffff) AM_WRITENOP - AM_RANGE(0x1c000, 0x1ffff) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(_20pacgal_state::_20pacgal_map) - AM_RANGE(0x00000, 0x03fff) AM_ROM - AM_RANGE(0x04000, 0x07fff) AM_ROM - AM_RANGE(0x08000, 0x09fff) AM_ROM - AM_RANGE(0x0a000, 0x0ffff) AM_MIRROR(0x40000) AM_ROM - AM_RANGE(0x10000, 0x3ffff) AM_ROM - AM_RANGE(0x44000, 0x447ff) AM_RAM AM_SHARE("video_ram") - AM_RANGE(0x44800, 0x45eff) AM_RAM - AM_RANGE(0x45040, 0x4505f) AM_DEVWRITE("namco", namco_cus30_device, pacman_sound_w) - AM_RANGE(0x45f00, 0x45fff) AM_DEVWRITE("namco", namco_cus30_device, namcos1_cus30_w) - AM_RANGE(0x46000, 0x46fff) AM_WRITEONLY AM_SHARE("char_gfx_ram") - AM_RANGE(0x47100, 0x47100) AM_RAM /* leftover from original Galaga code */ - AM_RANGE(0x48000, 0x49fff) AM_READ_BANK("bank1") AM_WRITE(ram_48000_w) /* this should be a mirror of 08000-09fff */ - AM_RANGE(0x4c000, 0x4dfff) AM_WRITE(sprite_gfx_w) - AM_RANGE(0x4e000, 0x4e17f) AM_WRITE(sprite_ram_w) - AM_RANGE(0x4e180, 0x4feff) AM_WRITENOP - AM_RANGE(0x4ff00, 0x4ffff) AM_WRITE(sprite_lookup_w) -ADDRESS_MAP_END + map(0x08000, 0x09fff).nopw(); + map(0x0a000, 0x0bfff).w(this, FUNC(_25pacman_state::sprite_gfx_w)); + map(0x0c000, 0x0dfff).nopw(); // is this the sound waveforms in a different format? + map(0x0e000, 0x0ffff).nopw(); + map(0x1c000, 0x1ffff).nopw(); +} + +void _20pacgal_state::_20pacgal_map(address_map &map) +{ + map(0x00000, 0x03fff).rom(); + map(0x04000, 0x07fff).rom(); + map(0x08000, 0x09fff).rom(); + map(0x0a000, 0x0ffff).mirror(0x40000).rom(); + map(0x10000, 0x3ffff).rom(); + map(0x44000, 0x447ff).ram().share("video_ram"); + map(0x44800, 0x45eff).ram(); + map(0x45040, 0x4505f).w("namco", FUNC(namco_cus30_device::pacman_sound_w)); + map(0x45f00, 0x45fff).w("namco", FUNC(namco_cus30_device::namcos1_cus30_w)); + map(0x46000, 0x46fff).writeonly().share("char_gfx_ram"); + map(0x47100, 0x47100).ram(); /* leftover from original Galaga code */ + map(0x48000, 0x49fff).bankr("bank1").w(this, FUNC(_20pacgal_state::ram_48000_w)); /* this should be a mirror of 08000-09fff */ + map(0x4c000, 0x4dfff).w(this, FUNC(_20pacgal_state::sprite_gfx_w)); + map(0x4e000, 0x4e17f).w(this, FUNC(_20pacgal_state::sprite_ram_w)); + map(0x4e180, 0x4feff).nopw(); + map(0x4ff00, 0x4ffff).w(this, FUNC(_20pacgal_state::sprite_lookup_w)); +} /************************************* @@ -232,47 +234,49 @@ READ8_MEMBER( _25pacman_state::_25pacman_io_87_r ) return 0xff; } -ADDRESS_MAP_START(_25pacman_state::_25pacman_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x3f) AM_NOP /* Z180 internal registers */ - AM_RANGE(0x40, 0x7f) AM_NOP /* Z180 internal registers */ - AM_RANGE(0x80, 0x80) AM_READ_PORT("P1") - AM_RANGE(0x81, 0x81) AM_READ_PORT("P2") - AM_RANGE(0x82, 0x82) AM_READ_PORT("SERVICE") - AM_RANGE(0x80, 0x80) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x81, 0x81) AM_WRITE(timer_pulse_w) /* ??? pulsed by the timer irq */ - AM_RANGE(0x82, 0x82) AM_WRITE(irqack_w) +void _25pacman_state::_25pacman_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).noprw(); /* Z180 internal registers */ + map(0x40, 0x7f).noprw(); /* Z180 internal registers */ + map(0x80, 0x80).portr("P1"); + map(0x81, 0x81).portr("P2"); + map(0x82, 0x82).portr("SERVICE"); + map(0x80, 0x80).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x81, 0x81).w(this, FUNC(_25pacman_state::timer_pulse_w)); /* ??? pulsed by the timer irq */ + map(0x82, 0x82).w(this, FUNC(_25pacman_state::irqack_w)); // AM_RANGE(0x84, 0x84) AM_NOP /* ?? */ - AM_RANGE(0x85, 0x86) AM_WRITEONLY AM_SHARE("stars_seed") /* stars: rng seed (lo/hi) */ - AM_RANGE(0x87, 0x87) AM_READ( _25pacman_io_87_r ) // not eeprom on this - AM_RANGE(0x87, 0x87) AM_WRITENOP + map(0x85, 0x86).writeonly().share("stars_seed"); /* stars: rng seed (lo/hi) */ + map(0x87, 0x87).r(this, FUNC(_25pacman_state::_25pacman_io_87_r)); // not eeprom on this + map(0x87, 0x87).nopw(); // AM_RANGE(0x88, 0x88) AM_WRITE(ram_bank_select_w) - AM_RANGE(0x89, 0x89) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x8a, 0x8a) AM_WRITEONLY AM_SHARE("stars_ctrl") /* stars: bits 3-4 = active set; bit 5 = enable */ - AM_RANGE(0x8b, 0x8b) AM_WRITEONLY AM_SHARE("flip") - AM_RANGE(0x8c, 0x8c) AM_WRITENOP - AM_RANGE(0x8f, 0x8f) AM_WRITE(_20pacgal_coin_counter_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(_20pacgal_state::_20pacgal_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x3f) AM_NOP /* Z180 internal registers */ - AM_RANGE(0x40, 0x7f) AM_NOP /* Z180 internal registers */ - AM_RANGE(0x80, 0x80) AM_READ_PORT("P1") - AM_RANGE(0x81, 0x81) AM_READ_PORT("P2") - AM_RANGE(0x82, 0x82) AM_READ_PORT("SERVICE") - AM_RANGE(0x80, 0x80) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0x81, 0x81) AM_WRITE(timer_pulse_w) /* ??? pulsed by the timer irq */ - AM_RANGE(0x82, 0x82) AM_WRITE(irqack_w) - AM_RANGE(0x84, 0x84) AM_NOP /* ?? */ - AM_RANGE(0x85, 0x86) AM_WRITEONLY AM_SHARE("stars_seed") /* stars: rng seed (lo/hi) */ - AM_RANGE(0x87, 0x87) AM_READ_PORT("EEPROMIN") AM_WRITE_PORT("EEPROMOUT") - AM_RANGE(0x88, 0x88) AM_WRITE(ram_bank_select_w) - AM_RANGE(0x89, 0x89) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(0x8a, 0x8a) AM_WRITEONLY AM_SHARE("stars_ctrl") /* stars: bits 3-4 = active set; bit 5 = enable */ - AM_RANGE(0x8b, 0x8b) AM_WRITEONLY AM_SHARE("flip") - AM_RANGE(0x8f, 0x8f) AM_WRITE(_20pacgal_coin_counter_w) -ADDRESS_MAP_END + map(0x89, 0x89).w("dac", FUNC(dac_byte_interface::write)); + map(0x8a, 0x8a).writeonly().share("stars_ctrl"); /* stars: bits 3-4 = active set; bit 5 = enable */ + map(0x8b, 0x8b).writeonly().share("flip"); + map(0x8c, 0x8c).nopw(); + map(0x8f, 0x8f).w(this, FUNC(_25pacman_state::_20pacgal_coin_counter_w)); +} + +void _20pacgal_state::_20pacgal_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x3f).noprw(); /* Z180 internal registers */ + map(0x40, 0x7f).noprw(); /* Z180 internal registers */ + map(0x80, 0x80).portr("P1"); + map(0x81, 0x81).portr("P2"); + map(0x82, 0x82).portr("SERVICE"); + map(0x80, 0x80).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0x81, 0x81).w(this, FUNC(_20pacgal_state::timer_pulse_w)); /* ??? pulsed by the timer irq */ + map(0x82, 0x82).w(this, FUNC(_20pacgal_state::irqack_w)); + map(0x84, 0x84).noprw(); /* ?? */ + map(0x85, 0x86).writeonly().share("stars_seed"); /* stars: rng seed (lo/hi) */ + map(0x87, 0x87).portr("EEPROMIN").portw("EEPROMOUT"); + map(0x88, 0x88).w(this, FUNC(_20pacgal_state::ram_bank_select_w)); + map(0x89, 0x89).w("dac", FUNC(dac_byte_interface::write)); + map(0x8a, 0x8a).writeonly().share("stars_ctrl"); /* stars: bits 3-4 = active set; bit 5 = enable */ + map(0x8b, 0x8b).writeonly().share("flip"); + map(0x8f, 0x8f).w(this, FUNC(_20pacgal_state::_20pacgal_coin_counter_w)); +} |