summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/mrgame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mrgame.cpp')
-rw-r--r--src/mame/drivers/mrgame.cpp104
1 files changed, 55 insertions, 49 deletions
diff --git a/src/mame/drivers/mrgame.cpp b/src/mame/drivers/mrgame.cpp
index f542791498f..36afdd317a9 100644
--- a/src/mame/drivers/mrgame.cpp
+++ b/src/mame/drivers/mrgame.cpp
@@ -116,55 +116,61 @@ private:
};
-ADDRESS_MAP_START(mrgame_state::main_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_REGION("roms", 0)
- AM_RANGE(0x020000, 0x02ffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x030000, 0x030001) AM_READ8(rsw_r, 0xff) //RSW ACK
- AM_RANGE(0x030002, 0x030003) AM_WRITE8(sound_w, 0xff) //W SOUND
- AM_RANGE(0x030004, 0x030005) AM_WRITE8(video_w, 0xff00) //W VID
- AM_RANGE(0x030006, 0x030007) AM_WRITE8(triple_w, 0xff) //W CS
- AM_RANGE(0x030008, 0x030009) AM_WRITENOP //W DATA - lamp/sol data
- AM_RANGE(0x03000a, 0x03000b) AM_WRITE8(row_w, 0xff) //W ROW
- AM_RANGE(0x03000c, 0x03000d) AM_READ8(col_r, 0xff) //R COL
- AM_RANGE(0x03000e, 0x03000f) AM_WRITENOP //EXT ADD - lamp/sol data
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrgame_state::video_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("video", 0)
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0x4800, 0x4bff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x5000, 0x50ff) AM_MIRROR(0x0700) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0x6800, 0x6807) AM_MIRROR(0x07f8) AM_WRITE(video_ctrl_w)
- AM_RANGE(0x7000, 0x77ff) AM_READNOP //AFR - looks like a watchdog
- AM_RANGE(0x8100, 0x8103) AM_MIRROR(0x7efc) AM_DEVREADWRITE("ppi", i8255_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrgame_state::audio1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audio1", 0)
- AM_RANGE(0xfc00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrgame_state::audio1_io)
- ADDRESS_MAP_GLOBAL_MASK(3)
- AM_RANGE(0x0000, 0x0000) AM_DEVWRITE("dacvol", dac_byte_interface, write) //DA1
- AM_RANGE(0x0001, 0x0001) AM_READ(sound_r) //IN1
- AM_RANGE(0x0002, 0x0002) AM_WRITE(ack1_w) //AKL1
- AM_RANGE(0x0003, 0x0003) AM_WRITENOP //SGS pass data to M114
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrgame_state::audio2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("audio2", 0)
- AM_RANGE(0xfc00, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mrgame_state::audio2_io)
- ADDRESS_MAP_GLOBAL_MASK(7)
- AM_RANGE(0x0000, 0x0000) AM_DEVWRITE("ldac", dac_byte_interface, write) //DA2
- AM_RANGE(0x0001, 0x0001) AM_READ(sound_r) //IN2
- AM_RANGE(0x0002, 0x0002) AM_WRITE(ack2_w) //AKL2
- AM_RANGE(0x0003, 0x0003) AM_DEVREADWRITE("tms", tms5220_device, status_r, data_w) //Speech
- AM_RANGE(0x0004, 0x0004) AM_DEVWRITE("rdac", dac_byte_interface, write) //DA3
-ADDRESS_MAP_END
+void mrgame_state::main_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom().region("roms", 0);
+ map(0x020000, 0x02ffff).ram().share("nvram");
+ map(0x030001, 0x030001).r(this, FUNC(mrgame_state::rsw_r)); //RSW ACK
+ map(0x030003, 0x030003).w(this, FUNC(mrgame_state::sound_w)); //W SOUND
+ map(0x030004, 0x030004).w(this, FUNC(mrgame_state::video_w)); //W VID
+ map(0x030007, 0x030007).w(this, FUNC(mrgame_state::triple_w)); //W CS
+ map(0x030008, 0x030009).nopw(); //W DATA - lamp/sol data
+ map(0x03000b, 0x03000b).w(this, FUNC(mrgame_state::row_w)); //W ROW
+ map(0x03000d, 0x03000d).r(this, FUNC(mrgame_state::col_r)); //R COL
+ map(0x03000e, 0x03000f).nopw(); //EXT ADD - lamp/sol data
+}
+
+void mrgame_state::video_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().region("video", 0);
+ map(0x4000, 0x47ff).ram();
+ map(0x4800, 0x4bff).mirror(0x0400).ram().share("videoram");
+ map(0x5000, 0x50ff).mirror(0x0700).ram().share("objectram");
+ map(0x6800, 0x6807).mirror(0x07f8).w(this, FUNC(mrgame_state::video_ctrl_w));
+ map(0x7000, 0x77ff).nopr(); //AFR - looks like a watchdog
+ map(0x8100, 0x8103).mirror(0x7efc).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+}
+
+void mrgame_state::audio1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("audio1", 0);
+ map(0xfc00, 0xffff).ram();
+}
+
+void mrgame_state::audio1_io(address_map &map)
+{
+ map.global_mask(3);
+ map(0x0000, 0x0000).w("dacvol", FUNC(dac_byte_interface::write)); //DA1
+ map(0x0001, 0x0001).r(this, FUNC(mrgame_state::sound_r)); //IN1
+ map(0x0002, 0x0002).w(this, FUNC(mrgame_state::ack1_w)); //AKL1
+ map(0x0003, 0x0003).nopw(); //SGS pass data to M114
+}
+
+void mrgame_state::audio2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().region("audio2", 0);
+ map(0xfc00, 0xffff).ram();
+}
+
+void mrgame_state::audio2_io(address_map &map)
+{
+ map.global_mask(7);
+ map(0x0000, 0x0000).w("ldac", FUNC(dac_byte_interface::write)); //DA2
+ map(0x0001, 0x0001).r(this, FUNC(mrgame_state::sound_r)); //IN2
+ map(0x0002, 0x0002).w(this, FUNC(mrgame_state::ack2_w)); //AKL2
+ map(0x0003, 0x0003).rw("tms", FUNC(tms5220_device::status_r), FUNC(tms5220_device::data_w)); //Speech
+ map(0x0004, 0x0004).w("rdac", FUNC(dac_byte_interface::write)); //DA3
+}
static INPUT_PORTS_START( mrgame )
PORT_START("DSW0")