summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/lockon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/lockon.cpp')
-rw-r--r--src/mame/drivers/lockon.cpp121
1 files changed, 63 insertions, 58 deletions
diff --git a/src/mame/drivers/lockon.cpp b/src/mame/drivers/lockon.cpp
index a701964d7c0..17af04ba09a 100644
--- a/src/mame/drivers/lockon.cpp
+++ b/src/mame/drivers/lockon.cpp
@@ -147,64 +147,69 @@ WRITE16_MEMBER(lockon_state::emres_w)
*
*************************************/
-ADDRESS_MAP_START(lockon_state::main_v30)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0x04000, 0x04003) AM_READWRITE(lockon_crtc_r, lockon_crtc_w)
- AM_RANGE(0x06000, 0x06001) AM_READ_PORT("DSW")
- AM_RANGE(0x08000, 0x081ff) AM_RAM AM_SHARE("hud_ram")
- AM_RANGE(0x09000, 0x09fff) AM_RAM_WRITE(lockon_char_w) AM_SHARE("char_ram")
- AM_RANGE(0x0a000, 0x0a001) AM_WRITE(adrst_w)
- AM_RANGE(0x0b000, 0x0bfff) AM_WRITE(lockon_rotate_w)
- AM_RANGE(0x0c000, 0x0cfff) AM_WRITE(lockon_fb_clut_w)
- AM_RANGE(0x0e000, 0x0e001) AM_WRITE(inten_w)
- AM_RANGE(0x0f000, 0x0f001) AM_WRITE(emres_w)
- AM_RANGE(0x10000, 0x1ffff) AM_READNOP AM_WRITE(tst_w)
- AM_RANGE(0x20000, 0x2ffff) AM_READWRITE(main_z80_r, main_z80_w)
- AM_RANGE(0x30000, 0x3ffff) AM_READWRITE(main_gnd_r, main_gnd_w)
- AM_RANGE(0x40000, 0x4ffff) AM_READWRITE(main_obj_r, main_obj_w)
- AM_RANGE(0x50000, 0x5ffff) AM_MIRROR(0x80000) AM_ROM
- AM_RANGE(0x60000, 0x6ffff) AM_MIRROR(0x80000) AM_ROM
- AM_RANGE(0x70000, 0x7ffff) AM_MIRROR(0x80000) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lockon_state::ground_v30)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0x04000, 0x04fff) AM_RAM AM_SHARE("scene_ram")
- AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("ground_ram")
- AM_RANGE(0x0C000, 0x0C001) AM_WRITE(lockon_scene_h_scr_w)
- AM_RANGE(0x0C002, 0x0C003) AM_WRITE(lockon_scene_v_scr_w)
- AM_RANGE(0x0C004, 0x0C005) AM_WRITE(lockon_ground_ctrl_w)
- AM_RANGE(0x20000, 0x2ffff) AM_MIRROR(0xc0000) AM_ROM
- AM_RANGE(0x30000, 0x3ffff) AM_MIRROR(0xc0000) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lockon_state::object_v30)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x00000, 0x03fff) AM_RAM
- AM_RANGE(0x04000, 0x04001) AM_READWRITE(lockon_obj_4000_r, lockon_obj_4000_w)
- AM_RANGE(0x08000, 0x08fff) AM_WRITE(lockon_tza112_w)
- AM_RANGE(0x0c000, 0x0c1ff) AM_RAM AM_SHARE("object_ram")
- AM_RANGE(0x30000, 0x3ffff) AM_MIRROR(0xc0000) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(lockon_state::sound_prg)
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x6fff) AM_ROM
- AM_RANGE(0x7000, 0x7000) AM_WRITE(sound_vol)
- AM_RANGE(0x7400, 0x7403) AM_READ(adc_r) AM_WRITENOP
- AM_RANGE(0x7800, 0x7fff) AM_MIRROR(0x8000) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lockon_state::sound_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0x02, 0x02) AM_NOP
-ADDRESS_MAP_END
+void lockon_state::main_v30(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x03fff).ram();
+ map(0x04000, 0x04003).rw(this, FUNC(lockon_state::lockon_crtc_r), FUNC(lockon_state::lockon_crtc_w));
+ map(0x06000, 0x06001).portr("DSW");
+ map(0x08000, 0x081ff).ram().share("hud_ram");
+ map(0x09000, 0x09fff).ram().w(this, FUNC(lockon_state::lockon_char_w)).share("char_ram");
+ map(0x0a000, 0x0a001).w(this, FUNC(lockon_state::adrst_w));
+ map(0x0b000, 0x0bfff).w(this, FUNC(lockon_state::lockon_rotate_w));
+ map(0x0c000, 0x0cfff).w(this, FUNC(lockon_state::lockon_fb_clut_w));
+ map(0x0e000, 0x0e001).w(this, FUNC(lockon_state::inten_w));
+ map(0x0f000, 0x0f001).w(this, FUNC(lockon_state::emres_w));
+ map(0x10000, 0x1ffff).nopr().w(this, FUNC(lockon_state::tst_w));
+ map(0x20000, 0x2ffff).rw(this, FUNC(lockon_state::main_z80_r), FUNC(lockon_state::main_z80_w));
+ map(0x30000, 0x3ffff).rw(this, FUNC(lockon_state::main_gnd_r), FUNC(lockon_state::main_gnd_w));
+ map(0x40000, 0x4ffff).rw(this, FUNC(lockon_state::main_obj_r), FUNC(lockon_state::main_obj_w));
+ map(0x50000, 0x5ffff).mirror(0x80000).rom();
+ map(0x60000, 0x6ffff).mirror(0x80000).rom();
+ map(0x70000, 0x7ffff).mirror(0x80000).rom();
+}
+
+
+void lockon_state::ground_v30(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x03fff).ram();
+ map(0x04000, 0x04fff).ram().share("scene_ram");
+ map(0x08000, 0x08fff).ram().share("ground_ram");
+ map(0x0C000, 0x0C001).w(this, FUNC(lockon_state::lockon_scene_h_scr_w));
+ map(0x0C002, 0x0C003).w(this, FUNC(lockon_state::lockon_scene_v_scr_w));
+ map(0x0C004, 0x0C005).w(this, FUNC(lockon_state::lockon_ground_ctrl_w));
+ map(0x20000, 0x2ffff).mirror(0xc0000).rom();
+ map(0x30000, 0x3ffff).mirror(0xc0000).rom();
+}
+
+
+void lockon_state::object_v30(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x00000, 0x03fff).ram();
+ map(0x04000, 0x04001).rw(this, FUNC(lockon_state::lockon_obj_4000_r), FUNC(lockon_state::lockon_obj_4000_w));
+ map(0x08000, 0x08fff).w(this, FUNC(lockon_state::lockon_tza112_w));
+ map(0x0c000, 0x0c1ff).ram().share("object_ram");
+ map(0x30000, 0x3ffff).mirror(0xc0000).rom();
+}
+
+
+void lockon_state::sound_prg(address_map &map)
+{
+ map.unmap_value_high();
+ map(0x0000, 0x6fff).rom();
+ map(0x7000, 0x7000).w(this, FUNC(lockon_state::sound_vol));
+ map(0x7400, 0x7403).r(this, FUNC(lockon_state::adc_r)).nopw();
+ map(0x7800, 0x7fff).mirror(0x8000).ram();
+}
+
+void lockon_state::sound_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0x02, 0x02).noprw();
+}
/*************************************