summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/turbo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/turbo.cpp')
-rw-r--r--src/mame/drivers/turbo.cpp132
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));
+}