diff options
Diffstat (limited to 'src/mame/drivers/turbo.cpp')
-rw-r--r-- | src/mame/drivers/turbo.cpp | 132 |
1 files changed, 69 insertions, 63 deletions
diff --git a/src/mame/drivers/turbo.cpp b/src/mame/drivers/turbo.cpp index da8517c36bc..904bbcd5d8a 100644 --- a/src/mame/drivers/turbo.cpp +++ b/src/mame/drivers/turbo.cpp @@ -499,23 +499,24 @@ WRITE8_MEMBER(turbo_state::spriteram_w) * *************************************/ -ADDRESS_MAP_START(turbo_state::turbo_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0xa000, 0xa0ff) AM_MIRROR(0x0700) AM_READWRITE(spriteram_r, spriteram_w) - AM_RANGE(0xa800, 0xa807) AM_MIRROR(0x07f8) AM_DEVWRITE("outlatch", ls259_device, write_d0) - AM_RANGE(0xb000, 0xb3ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("spritepos") - AM_RANGE(0xb800, 0xbfff) AM_WRITE(turbo_analog_reset_w) - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(turbo_videoram_w) AM_SHARE("videoram") - AM_RANGE(0xe800, 0xefff) AM_WRITE(turbo_collision_clear_w) - AM_RANGE(0xf000, 0xf7ff) AM_RAM - AM_RANGE(0xf800, 0xf803) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_0", i8255_device, read, write) - AM_RANGE(0xf900, 0xf903) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_1", i8255_device, read, write) - AM_RANGE(0xfa00, 0xfa03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_2", i8255_device, read, write) - AM_RANGE(0xfb00, 0xfb03) AM_MIRROR(0x00fc) AM_DEVREADWRITE("i8255_3", i8255_device, read, write) - AM_RANGE(0xfc00, 0xfc01) AM_MIRROR(0x00fe) AM_DEVREADWRITE("i8279", i8279_device, read, write) - AM_RANGE(0xfd00, 0xfdff) AM_READ_PORT("INPUT") - AM_RANGE(0xfe00, 0xfeff) AM_READ(turbo_collision_r) -ADDRESS_MAP_END +void turbo_state::turbo_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0xa000, 0xa0ff).mirror(0x0700).rw(this, FUNC(turbo_state::spriteram_r), FUNC(turbo_state::spriteram_w)); + map(0xa800, 0xa807).mirror(0x07f8).w("outlatch", FUNC(ls259_device::write_d0)); + map(0xb000, 0xb3ff).mirror(0x0400).ram().share("spritepos"); + map(0xb800, 0xbfff).w(this, FUNC(turbo_state::turbo_analog_reset_w)); + map(0xe000, 0xe7ff).ram().w(this, FUNC(turbo_state::turbo_videoram_w)).share("videoram"); + map(0xe800, 0xefff).w(this, FUNC(turbo_state::turbo_collision_clear_w)); + map(0xf000, 0xf7ff).ram(); + map(0xf800, 0xf803).mirror(0x00fc).rw(m_i8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf900, 0xf903).mirror(0x00fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfa00, 0xfa03).mirror(0x00fc).rw(m_i8255_2, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfb00, 0xfb03).mirror(0x00fc).rw(m_i8255_3, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xfc00, 0xfc01).mirror(0x00fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); + map(0xfd00, 0xfdff).portr("INPUT"); + map(0xfe00, 0xfeff).r(this, FUNC(turbo_state::turbo_collision_r)); +} @@ -525,21 +526,22 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(turbo_state::subroc3d_map) - AM_RANGE(0x0000, 0x9fff) AM_ROM - AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_SHARE("spritepos") // CONT RAM - AM_RANGE(0xa400, 0xa7ff) AM_RAM AM_SHARE("spriteram") // CONT RAM - AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07fc) AM_READ_PORT("IN0") // INPUT 253 - AM_RANGE(0xa801, 0xa801) AM_MIRROR(0x07fc) AM_READ_PORT("IN1") // INPUT 253 - AM_RANGE(0xa802, 0xa802) AM_MIRROR(0x07fc) AM_READ_PORT("DSW2") // INPUT 253 - AM_RANGE(0xa803, 0xa803) AM_MIRROR(0x07fc) AM_READ_PORT("DSW3") // INPUT 253 - AM_RANGE(0xb000, 0xb7ff) AM_RAM // SCRATCH - AM_RANGE(0xb800, 0xbfff) // HANDLE CL - AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(turbo_videoram_w) AM_SHARE("videoram") // FIX PAGE - AM_RANGE(0xe800, 0xe803) AM_MIRROR(0x07fc) AM_DEVREADWRITE("i8255_0", i8255_device, read, write) - AM_RANGE(0xf000, 0xf003) AM_MIRROR(0x07fc) AM_DEVREADWRITE("i8255_1", i8255_device, read, write) - AM_RANGE(0xf800, 0xf801) AM_MIRROR(0x07fe) AM_DEVREADWRITE("i8279", i8279_device, read, write) -ADDRESS_MAP_END +void turbo_state::subroc3d_map(address_map &map) +{ + map(0x0000, 0x9fff).rom(); + map(0xa000, 0xa3ff).ram().share("spritepos"); // CONT RAM + map(0xa400, 0xa7ff).ram().share("spriteram"); // CONT RAM + map(0xa800, 0xa800).mirror(0x07fc).portr("IN0"); // INPUT 253 + map(0xa801, 0xa801).mirror(0x07fc).portr("IN1"); // INPUT 253 + map(0xa802, 0xa802).mirror(0x07fc).portr("DSW2"); // INPUT 253 + map(0xa803, 0xa803).mirror(0x07fc).portr("DSW3"); // INPUT 253 + map(0xb000, 0xb7ff).ram(); // SCRATCH + map(0xb800, 0xbfff); // HANDLE CL + map(0xe000, 0xe7ff).ram().w(this, FUNC(turbo_state::turbo_videoram_w)).share("videoram"); // FIX PAGE + map(0xe800, 0xe803).mirror(0x07fc).rw(m_i8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf000, 0xf003).mirror(0x07fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf800, 0xf801).mirror(0x07fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); +} @@ -549,37 +551,41 @@ ADDRESS_MAP_END * *************************************/ -ADDRESS_MAP_START(turbo_state::buckrog_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(turbo_videoram_w) AM_SHARE("videoram") // FIX PAGE - AM_RANGE(0xc800, 0xc803) AM_MIRROR(0x07fc) AM_DEVREAD("i8255_0", i8255_device, read) AM_WRITE(buckrog_i8255_0_w) // 8255 - AM_RANGE(0xd000, 0xd003) AM_MIRROR(0x07fc) AM_DEVREADWRITE("i8255_1", i8255_device, read, write) // 8255 - AM_RANGE(0xd800, 0xd801) AM_MIRROR(0x07fe) AM_DEVREADWRITE("i8279", i8279_device, read, write) - AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("spritepos") // CONT RAM - AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("spriteram") // CONT RAM - AM_RANGE(0xe800, 0xe800) AM_MIRROR(0x07fc) AM_READ_PORT("IN0") // INPUT - AM_RANGE(0xe801, 0xe801) AM_MIRROR(0x07fc) AM_READ_PORT("IN1") - AM_RANGE(0xe802, 0xe802) AM_MIRROR(0x07fc) AM_READ(buckrog_port_2_r) - AM_RANGE(0xe803, 0xe803) AM_MIRROR(0x07fc) AM_READ(buckrog_port_3_r) - AM_RANGE(0xf000, 0xf000) - AM_RANGE(0xf800, 0xffff) AM_RAM // SCRATCH -ADDRESS_MAP_END - -ADDRESS_MAP_START(turbo_state::decrypted_opcodes_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes") -ADDRESS_MAP_END - -ADDRESS_MAP_START(turbo_state::buckrog_cpu2_map) - AM_RANGE(0x0000, 0x1fff) AM_ROM - AM_RANGE(0x0000, 0xdfff) AM_WRITE(buckrog_bitmap_w) - AM_RANGE(0xe000, 0xe7ff) AM_MIRROR(0x1800) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(turbo_state::buckrog_cpu2_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0xff) AM_READ(buckrog_cpu2_command_r) -ADDRESS_MAP_END +void turbo_state::buckrog_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0xc000, 0xc7ff).ram().w(this, FUNC(turbo_state::turbo_videoram_w)).share("videoram"); // FIX PAGE + map(0xc800, 0xc803).mirror(0x07fc).r(m_i8255_0, FUNC(i8255_device::read)).w(this, FUNC(turbo_state::buckrog_i8255_0_w)); // 8255 + map(0xd000, 0xd003).mirror(0x07fc).rw(m_i8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write)); // 8255 + map(0xd800, 0xd801).mirror(0x07fe).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); + map(0xe000, 0xe3ff).ram().share("spritepos"); // CONT RAM + map(0xe400, 0xe7ff).ram().share("spriteram"); // CONT RAM + map(0xe800, 0xe800).mirror(0x07fc).portr("IN0"); // INPUT + map(0xe801, 0xe801).mirror(0x07fc).portr("IN1"); + map(0xe802, 0xe802).mirror(0x07fc).r(this, FUNC(turbo_state::buckrog_port_2_r)); + map(0xe803, 0xe803).mirror(0x07fc).r(this, FUNC(turbo_state::buckrog_port_3_r)); + map(0xf000, 0xf000); + map(0xf800, 0xffff).ram(); // SCRATCH +} + +void turbo_state::decrypted_opcodes_map(address_map &map) +{ + map(0x0000, 0x7fff).rom().share("decrypted_opcodes"); +} + +void turbo_state::buckrog_cpu2_map(address_map &map) +{ + map(0x0000, 0x1fff).rom(); + map(0x0000, 0xdfff).w(this, FUNC(turbo_state::buckrog_bitmap_w)); + map(0xe000, 0xe7ff).mirror(0x1800).ram(); +} + + +void turbo_state::buckrog_cpu2_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0xff).r(this, FUNC(turbo_state::buckrog_cpu2_command_r)); +} |