diff options
Diffstat (limited to 'src/mame/drivers/malzak.cpp')
-rw-r--r-- | src/mame/drivers/malzak.cpp | 106 |
1 files changed, 55 insertions, 51 deletions
diff --git a/src/mame/drivers/malzak.cpp b/src/mame/drivers/malzak.cpp index 3fa70edfb36..505cf3bc2c1 100644 --- a/src/mame/drivers/malzak.cpp +++ b/src/mame/drivers/malzak.cpp @@ -99,45 +99,47 @@ READ8_MEMBER(malzak_state::s2636_portA_r) } } -ADDRESS_MAP_START(malzak_state::malzak_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0c00, 0x0fff) AM_ROMBANK("bank1") - AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1100, 0x11ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1200, 0x12ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1300, 0x13ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data) - AM_RANGE(0x14cb, 0x14cb) AM_MIRROR(0x6000) AM_READ(fake_VRLE_r) - AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read_data, write_data) - AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_RAM_WRITE(malzak_playfield_w) - AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1800, 0x1fff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(malzak_state::malzak2_map) - ADDRESS_MAP_GLOBAL_MASK(0x7fff) - AM_RANGE(0x0000, 0x0bff) AM_ROM - AM_RANGE(0x0c00, 0x0fff) AM_ROMBANK("bank1") - AM_RANGE(0x1000, 0x10ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1100, 0x11ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1200, 0x12ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1300, 0x13ff) AM_MIRROR(0x6000) AM_RAM - AM_RANGE(0x1400, 0x14ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_0", s2636_device, read_data, write_data) - AM_RANGE(0x14cb, 0x14cb) AM_MIRROR(0x6000) AM_READ(fake_VRLE_r) - AM_RANGE(0x14cc, 0x14cc) AM_MIRROR(0x6000) AM_READ(s2636_portA_r) - AM_RANGE(0x1500, 0x15ff) AM_MIRROR(0x6000) AM_DEVREADWRITE("s2636_1", s2636_device, read_data, write_data) - AM_RANGE(0x1600, 0x16ff) AM_MIRROR(0x6000) AM_RAM_WRITE(malzak_playfield_w) - AM_RANGE(0x1700, 0x17ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("nvram") - AM_RANGE(0x1800, 0x1fff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("videoram") - AM_RANGE(0x2000, 0x2fff) AM_ROM - AM_RANGE(0x4000, 0x4fff) AM_ROM - AM_RANGE(0x6000, 0x6fff) AM_ROM -ADDRESS_MAP_END +void malzak_state::malzak_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x0bff).rom(); + map(0x0c00, 0x0fff).bankr("bank1"); + map(0x1000, 0x10ff).mirror(0x6000).ram(); + map(0x1100, 0x11ff).mirror(0x6000).ram(); + map(0x1200, 0x12ff).mirror(0x6000).ram(); + map(0x1300, 0x13ff).mirror(0x6000).ram(); + map(0x1400, 0x14ff).mirror(0x6000).rw(m_s2636_0, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x14cb, 0x14cb).mirror(0x6000).r(this, FUNC(malzak_state::fake_VRLE_r)); + map(0x1500, 0x15ff).mirror(0x6000).rw(m_s2636_1, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1600, 0x16ff).mirror(0x6000).ram().w(this, FUNC(malzak_state::malzak_playfield_w)); + map(0x1700, 0x17ff).mirror(0x6000).ram(); + map(0x1800, 0x1fff).mirror(0x6000).ram().share("videoram"); + map(0x2000, 0x2fff).rom(); + map(0x4000, 0x4fff).rom(); + map(0x6000, 0x6fff).rom(); +} + + +void malzak_state::malzak2_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0000, 0x0bff).rom(); + map(0x0c00, 0x0fff).bankr("bank1"); + map(0x1000, 0x10ff).mirror(0x6000).ram(); + map(0x1100, 0x11ff).mirror(0x6000).ram(); + map(0x1200, 0x12ff).mirror(0x6000).ram(); + map(0x1300, 0x13ff).mirror(0x6000).ram(); + map(0x1400, 0x14ff).mirror(0x6000).rw(m_s2636_0, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x14cb, 0x14cb).mirror(0x6000).r(this, FUNC(malzak_state::fake_VRLE_r)); + map(0x14cc, 0x14cc).mirror(0x6000).r(this, FUNC(malzak_state::s2636_portA_r)); + map(0x1500, 0x15ff).mirror(0x6000).rw(m_s2636_1, FUNC(s2636_device::read_data), FUNC(s2636_device::write_data)); + map(0x1600, 0x16ff).mirror(0x6000).ram().w(this, FUNC(malzak_state::malzak_playfield_w)); + map(0x1700, 0x17ff).mirror(0x6000).ram().share("nvram"); + map(0x1800, 0x1fff).mirror(0x6000).ram().share("videoram"); + map(0x2000, 0x2fff).rom(); + map(0x4000, 0x4fff).rom(); + map(0x6000, 0x6fff).rom(); +} READ8_MEMBER(malzak_state::s2650_data_r) @@ -180,18 +182,20 @@ READ8_MEMBER(malzak_state::collision_r) return 0xd0 + m_collision_counter; } -ADDRESS_MAP_START(malzak_state::malzak_io_map) - AM_RANGE(0x00, 0x00) AM_READ(collision_r) // returns where a collision can occur. - AM_RANGE(0x40, 0x40) AM_WRITE(port40_w) // possibly sound codes for dual SN76477s - AM_RANGE(0x60, 0x60) AM_WRITE(port60_w) // possibly playfield scroll X offset - AM_RANGE(0x80, 0x80) AM_READ_PORT("IN0") //controls - AM_RANGE(0xa0, 0xa0) AM_WRITENOP // echoes I/O port read from port 0x80 - AM_RANGE(0xc0, 0xc0) AM_WRITE(portc0_w) // possibly playfield row selection for writing and/or collisions -ADDRESS_MAP_END - -ADDRESS_MAP_START(malzak_state::malzak_data_map) - AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READ(s2650_data_r) // read upon death -ADDRESS_MAP_END +void malzak_state::malzak_io_map(address_map &map) +{ + map(0x00, 0x00).r(this, FUNC(malzak_state::collision_r)); // returns where a collision can occur. + map(0x40, 0x40).w(this, FUNC(malzak_state::port40_w)); // possibly sound codes for dual SN76477s + map(0x60, 0x60).w(this, FUNC(malzak_state::port60_w)); // possibly playfield scroll X offset + map(0x80, 0x80).portr("IN0"); //controls + map(0xa0, 0xa0).nopw(); // echoes I/O port read from port 0x80 + map(0xc0, 0xc0).w(this, FUNC(malzak_state::portc0_w)); // possibly playfield row selection for writing and/or collisions +} + +void malzak_state::malzak_data_map(address_map &map) +{ + map(S2650_DATA_PORT, S2650_DATA_PORT).r(this, FUNC(malzak_state::s2650_data_r)); // read upon death +} static INPUT_PORTS_START( malzak ) |