diff options
Diffstat (limited to 'src/mame/drivers/terracre.cpp')
-rw-r--r-- | src/mame/drivers/terracre.cpp | 136 |
1 files changed, 71 insertions, 65 deletions
diff --git a/src/mame/drivers/terracre.cpp b/src/mame/drivers/terracre.cpp index 0d3cb8bbadb..091871f6154 100644 --- a/src/mame/drivers/terracre.cpp +++ b/src/mame/drivers/terracre.cpp @@ -231,71 +231,77 @@ MACHINE_START_MEMBER(terracre_state,amazon) save_item(NAME(m_mAmazonProtReg)); } -ADDRESS_MAP_START(terracre_state::terracre_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x020000, 0x0201ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x020200, 0x021fff) AM_RAM - AM_RANGE(0x022000, 0x022fff) AM_WRITE(amazon_background_w) AM_SHARE("bg_videoram") - AM_RANGE(0x023000, 0x023fff) AM_RAM - AM_RANGE(0x024000, 0x024001) AM_READ_PORT("P1") - AM_RANGE(0x024002, 0x024003) AM_READ_PORT("P2") - AM_RANGE(0x024004, 0x024005) AM_READ_PORT("SYSTEM") - AM_RANGE(0x024006, 0x024007) AM_READ_PORT("DSW") - AM_RANGE(0x026000, 0x026001) AM_WRITE(amazon_flipscreen_w) /* flip screen & coin counters */ - AM_RANGE(0x026002, 0x026003) AM_WRITE(amazon_scrollx_w) - AM_RANGE(0x026004, 0x026005) AM_READNOP AM_WRITE(amazon_scrolly_w) - AM_RANGE(0x02600a, 0x02600b) AM_NOP // video related - AM_RANGE(0x02600c, 0x02600d) AM_WRITE(amazon_sound_w) - AM_RANGE(0x02600e, 0x02600f) AM_NOP // video related - AM_RANGE(0x028000, 0x0287ff) AM_RAM_WRITE(amazon_foreground_w) AM_SHARE("fg_videoram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(terracre_state::amazon_base_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x040000, 0x0401ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x040200, 0x040fff) AM_RAM - AM_RANGE(0x042000, 0x042fff) AM_WRITE(amazon_background_w) AM_SHARE("bg_videoram") - AM_RANGE(0x044000, 0x044001) AM_READ_PORT("IN0") - AM_RANGE(0x044002, 0x044003) AM_READ_PORT("IN1") - AM_RANGE(0x044004, 0x044005) AM_READ_PORT("IN2") - AM_RANGE(0x044006, 0x044007) AM_READ_PORT("IN3") - AM_RANGE(0x046000, 0x046001) AM_WRITE(amazon_flipscreen_w) /* flip screen & coin counters */ - AM_RANGE(0x046002, 0x046003) AM_WRITE(amazon_scrollx_w) - AM_RANGE(0x046004, 0x046005) AM_READNOP AM_WRITE(amazon_scrolly_w) - AM_RANGE(0x04600a, 0x04600b) AM_NOP // video related - AM_RANGE(0x04600c, 0x04600d) AM_WRITE(amazon_sound_w) - AM_RANGE(0x04600e, 0x04600f) AM_NOP // video related - AM_RANGE(0x050000, 0x050fff) AM_RAM_WRITE(amazon_foreground_w) AM_SHARE("fg_videoram") - AM_RANGE(0x070000, 0x070003) AM_NOP // protection (nop for bootlegs) -ADDRESS_MAP_END - -ADDRESS_MAP_START(terracre_state::amazon_1412m2_map) - AM_IMPORT_FROM( amazon_base_map ) - AM_RANGE(0x070000, 0x070003) AM_READWRITE(amazon_protection_r, amazon_protection_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(terracre_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xcfff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(terracre_state::sound_3526_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ymsnd", ym3526_device, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_byte_interface, write) - AM_RANGE(0x04, 0x04) AM_READ(soundlatch_clear_r) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(terracre_state::sound_2203_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym1", ym2203_device, write) - AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0x03, 0x03) AM_DEVWRITE("dac2", dac_byte_interface, write) - AM_RANGE(0x04, 0x04) AM_READ(soundlatch_clear_r) - AM_RANGE(0x06, 0x06) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END +void terracre_state::terracre_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x020000, 0x0201ff).ram().share("spriteram"); + map(0x020200, 0x021fff).ram(); + map(0x022000, 0x022fff).w(this, FUNC(terracre_state::amazon_background_w)).share("bg_videoram"); + map(0x023000, 0x023fff).ram(); + map(0x024000, 0x024001).portr("P1"); + map(0x024002, 0x024003).portr("P2"); + map(0x024004, 0x024005).portr("SYSTEM"); + map(0x024006, 0x024007).portr("DSW"); + map(0x026000, 0x026001).w(this, FUNC(terracre_state::amazon_flipscreen_w)); /* flip screen & coin counters */ + map(0x026002, 0x026003).w(this, FUNC(terracre_state::amazon_scrollx_w)); + map(0x026004, 0x026005).nopr().w(this, FUNC(terracre_state::amazon_scrolly_w)); + map(0x02600a, 0x02600b).noprw(); // video related + map(0x02600c, 0x02600d).w(this, FUNC(terracre_state::amazon_sound_w)); + map(0x02600e, 0x02600f).noprw(); // video related + map(0x028000, 0x0287ff).ram().w(this, FUNC(terracre_state::amazon_foreground_w)).share("fg_videoram"); +} + +void terracre_state::amazon_base_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x040000, 0x0401ff).ram().share("spriteram"); + map(0x040200, 0x040fff).ram(); + map(0x042000, 0x042fff).w(this, FUNC(terracre_state::amazon_background_w)).share("bg_videoram"); + map(0x044000, 0x044001).portr("IN0"); + map(0x044002, 0x044003).portr("IN1"); + map(0x044004, 0x044005).portr("IN2"); + map(0x044006, 0x044007).portr("IN3"); + map(0x046000, 0x046001).w(this, FUNC(terracre_state::amazon_flipscreen_w)); /* flip screen & coin counters */ + map(0x046002, 0x046003).w(this, FUNC(terracre_state::amazon_scrollx_w)); + map(0x046004, 0x046005).nopr().w(this, FUNC(terracre_state::amazon_scrolly_w)); + map(0x04600a, 0x04600b).noprw(); // video related + map(0x04600c, 0x04600d).w(this, FUNC(terracre_state::amazon_sound_w)); + map(0x04600e, 0x04600f).noprw(); // video related + map(0x050000, 0x050fff).ram().w(this, FUNC(terracre_state::amazon_foreground_w)).share("fg_videoram"); + map(0x070000, 0x070003).noprw(); // protection (nop for bootlegs) +} + +void terracre_state::amazon_1412m2_map(address_map &map) +{ + amazon_base_map(map); + map(0x070000, 0x070003).rw(this, FUNC(terracre_state::amazon_protection_r), FUNC(terracre_state::amazon_protection_w)); +} + +void terracre_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xcfff).ram(); +} + +void terracre_state::sound_3526_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ymsnd", FUNC(ym3526_device::write)); + map(0x02, 0x02).w("dac1", FUNC(dac_byte_interface::write)); + map(0x03, 0x03).w("dac2", FUNC(dac_byte_interface::write)); + map(0x04, 0x04).r(this, FUNC(terracre_state::soundlatch_clear_r)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void terracre_state::sound_2203_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x01).w("ym1", FUNC(ym2203_device::write)); + map(0x02, 0x02).w("dac1", FUNC(dac_byte_interface::write)); + map(0x03, 0x03).w("dac2", FUNC(dac_byte_interface::write)); + map(0x04, 0x04).r(this, FUNC(terracre_state::soundlatch_clear_r)); + map(0x06, 0x06).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} static INPUT_PORTS_START( terracre ) PORT_START("P1") |