summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/vcombat.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/vcombat.cpp')
-rw-r--r--src/mame/drivers/vcombat.cpp110
1 files changed, 57 insertions, 53 deletions
diff --git a/src/mame/drivers/vcombat.cpp b/src/mame/drivers/vcombat.cpp
index f9a1432d416..12663eb6fe5 100644
--- a/src/mame/drivers/vcombat.cpp
+++ b/src/mame/drivers/vcombat.cpp
@@ -355,72 +355,76 @@ WRITE16_MEMBER(vcombat_state::vcombat_dac_w)
fprintf(stderr, "dac overflow %04x\n", data & 0x801f);
}
-ADDRESS_MAP_START(vcombat_state::main_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM
- AM_RANGE(0x300000, 0x30ffff) AM_WRITE(main_video_write)
-
- AM_RANGE(0x400000, 0x43ffff) AM_RAM AM_SHARE("vid_0_ram") /* First i860 shared RAM */
- AM_RANGE(0x440000, 0x440003) AM_RAM AM_SHARE("share6") /* M0->P0 i860 #1 com 1 */
- AM_RANGE(0x480000, 0x480003) AM_RAM AM_SHARE("share7") /* M0<-P0 i860 #1 com 2 */
- AM_RANGE(0x4c0000, 0x4c0003) AM_WRITE(wiggle_i860p0_pins_w) /* i860 #1 stop/start/reset */
-
- AM_RANGE(0x500000, 0x53ffff) AM_RAM AM_SHARE("vid_1_ram") /* Second i860 shared RAM */
- AM_RANGE(0x540000, 0x540003) AM_RAM AM_SHARE("share8") /* M0->P1 i860 #2 com 1 */
- AM_RANGE(0x580000, 0x580003) AM_RAM AM_SHARE("share9") /* M0<-P1 i860 #2 com 2 */
- AM_RANGE(0x5c0000, 0x5c0003) AM_WRITE(wiggle_i860p1_pins_w) /* i860 #2 stop/start/reset */
-
- AM_RANGE(0x600000, 0x600001) AM_READ(control_1_r) /* IN0 port */
- AM_RANGE(0x600004, 0x600005) AM_RAM AM_SHARE("share5") /* M0<-M1 */
- AM_RANGE(0x600008, 0x600009) AM_READ(control_2_r) /* IN1 port */
- AM_RANGE(0x60001c, 0x60001d) AM_NOP
-
- AM_RANGE(0x60000c, 0x60000d) AM_WRITE(crtc_w)
- AM_RANGE(0x600010, 0x600011) AM_RAM AM_SHARE("fb_control")
- AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x701000, 0x701001) AM_READ(main_irqiack_r)
- AM_RANGE(0x702000, 0x702001) AM_READ(control_3_r)
- AM_RANGE(0x705000, 0x705001) AM_RAM AM_SHARE("share4") /* M1->M0 */
+void vcombat_state::main_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x200000, 0x20ffff).ram();
+ map(0x300000, 0x30ffff).w(this, FUNC(vcombat_state::main_video_write));
+
+ map(0x400000, 0x43ffff).ram().share("vid_0_ram"); /* First i860 shared RAM */
+ map(0x440000, 0x440003).ram().share("share6"); /* M0->P0 i860 #1 com 1 */
+ map(0x480000, 0x480003).ram().share("share7"); /* M0<-P0 i860 #1 com 2 */
+ map(0x4c0000, 0x4c0003).w(this, FUNC(vcombat_state::wiggle_i860p0_pins_w)); /* i860 #1 stop/start/reset */
+
+ map(0x500000, 0x53ffff).ram().share("vid_1_ram"); /* Second i860 shared RAM */
+ map(0x540000, 0x540003).ram().share("share8"); /* M0->P1 i860 #2 com 1 */
+ map(0x580000, 0x580003).ram().share("share9"); /* M0<-P1 i860 #2 com 2 */
+ map(0x5c0000, 0x5c0003).w(this, FUNC(vcombat_state::wiggle_i860p1_pins_w)); /* i860 #2 stop/start/reset */
+
+ map(0x600000, 0x600001).r(this, FUNC(vcombat_state::control_1_r)); /* IN0 port */
+ map(0x600004, 0x600005).ram().share("share5"); /* M0<-M1 */
+ map(0x600008, 0x600009).r(this, FUNC(vcombat_state::control_2_r)); /* IN1 port */
+ map(0x60001c, 0x60001d).noprw();
+
+ map(0x60000c, 0x60000d).w(this, FUNC(vcombat_state::crtc_w));
+ map(0x600010, 0x600011).ram().share("fb_control");
+ map(0x700000, 0x7007ff).ram().share("nvram");
+ map(0x701000, 0x701001).r(this, FUNC(vcombat_state::main_irqiack_r));
+ map(0x702000, 0x702001).r(this, FUNC(vcombat_state::control_3_r));
+ map(0x705000, 0x705001).ram().share("share4"); /* M1->M0 */
//AM_RANGE(0x703000, 0x703001) /* Headset rotation axis? */
//AM_RANGE(0x704000, 0x704001) /* Headset rotation axis? */
- AM_RANGE(0x706000, 0x70601f) AM_DEVREADWRITE8("tlc34076", tlc34076_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+ map(0x706000, 0x70601f).rw(m_tlc34076, FUNC(tlc34076_device::read), FUNC(tlc34076_device::write)).umask16(0x00ff);
+}
/* The first i860 - middle board */
-ADDRESS_MAP_START(vcombat_state::vid_0_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_RAM_WRITE(v0_fb_w) /* Shared framebuffer - half of the bits lost to 32-bit bus */
- AM_RANGE(0x20000000, 0x20000007) AM_RAM AM_SHARE("share6") /* M0<-P0 com 1 (0x440000 in 68k-land) */
- AM_RANGE(0x40000000, 0x401fffff) AM_ROM AM_REGION("gfx", 0)
- AM_RANGE(0x80000000, 0x80000007) AM_RAM AM_SHARE("share7") /* M0->P0 com 2 (0x480000 in 68k-land) */
- AM_RANGE(0xc0000000, 0xc0000fff) AM_NOP /* Dummy D$ flush page. */
- AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_SHARE("vid_0_ram") /* Shared RAM with main */
-ADDRESS_MAP_END
+void vcombat_state::vid_0_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).ram().w(this, FUNC(vcombat_state::v0_fb_w)); /* Shared framebuffer - half of the bits lost to 32-bit bus */
+ map(0x20000000, 0x20000007).ram().share("share6"); /* M0<-P0 com 1 (0x440000 in 68k-land) */
+ map(0x40000000, 0x401fffff).rom().region("gfx", 0);
+ map(0x80000000, 0x80000007).ram().share("share7"); /* M0->P0 com 2 (0x480000 in 68k-land) */
+ map(0xc0000000, 0xc0000fff).noprw(); /* Dummy D$ flush page. */
+ map(0xfffc0000, 0xffffffff).ram().share("vid_0_ram"); /* Shared RAM with main */
+}
/* The second i860 - top board */
-ADDRESS_MAP_START(vcombat_state::vid_1_map)
- AM_RANGE(0x00000000, 0x0001ffff) AM_RAM_WRITE(v1_fb_w) /* Half of the bits lost to 32-bit bus */
- AM_RANGE(0x20000000, 0x20000007) AM_RAM AM_SHARE("share8") /* M0->P1 com 1 (0x540000 in 68k-land) */
- AM_RANGE(0x40000000, 0x401fffff) AM_ROM AM_REGION("gfx", 0)
- AM_RANGE(0x80000000, 0x80000007) AM_RAM AM_SHARE("share9") /* M0<-P1 com 2 (0x580000 in 68k-land) */
- AM_RANGE(0xc0000000, 0xc0000fff) AM_NOP /* Dummy D$ flush page. */
- AM_RANGE(0xfffc0000, 0xffffffff) AM_RAM AM_SHARE("vid_1_ram") /* Shared RAM with main */
-ADDRESS_MAP_END
+void vcombat_state::vid_1_map(address_map &map)
+{
+ map(0x00000000, 0x0001ffff).ram().w(this, FUNC(vcombat_state::v1_fb_w)); /* Half of the bits lost to 32-bit bus */
+ map(0x20000000, 0x20000007).ram().share("share8"); /* M0->P1 com 1 (0x540000 in 68k-land) */
+ map(0x40000000, 0x401fffff).rom().region("gfx", 0);
+ map(0x80000000, 0x80000007).ram().share("share9"); /* M0<-P1 com 2 (0x580000 in 68k-land) */
+ map(0xc0000000, 0xc0000fff).noprw(); /* Dummy D$ flush page. */
+ map(0xfffc0000, 0xffffffff).ram().share("vid_1_ram"); /* Shared RAM with main */
+}
/* Sound CPU */
-ADDRESS_MAP_START(vcombat_state::sound_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x08ffff) AM_RAM
- AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(vcombat_dac_w)
- AM_RANGE(0x140000, 0x140001) AM_READ(sound_resetmain_r) /* Ping M0's reset line */
- AM_RANGE(0x180000, 0x180001) AM_RAM AM_SHARE("share4") /* M1<-M0 */
- AM_RANGE(0x1c0000, 0x1c0001) AM_RAM AM_SHARE("share5") /* M1->M0 */
- AM_RANGE(0x200000, 0x37ffff) AM_ROM AM_REGION("samples", 0)
-ADDRESS_MAP_END
+void vcombat_state::sound_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x08ffff).ram();
+ map(0x0c0000, 0x0c0001).w(this, FUNC(vcombat_state::vcombat_dac_w));
+ map(0x140000, 0x140001).r(this, FUNC(vcombat_state::sound_resetmain_r)); /* Ping M0's reset line */
+ map(0x180000, 0x180001).ram().share("share4"); /* M1<-M0 */
+ map(0x1c0000, 0x1c0001).ram().share("share5"); /* M1->M0 */
+ map(0x200000, 0x37ffff).rom().region("samples", 0);
+}
MACHINE_RESET_MEMBER(vcombat_state,vcombat)