summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/jack.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/jack.cpp')
-rw-r--r--src/mame/drivers/jack.cpp133
1 files changed, 70 insertions, 63 deletions
diff --git a/src/mame/drivers/jack.cpp b/src/mame/drivers/jack.cpp
index cea51a0a83b..55cf03acf21 100644
--- a/src/mame/drivers/jack.cpp
+++ b/src/mame/drivers/jack.cpp
@@ -177,69 +177,76 @@ WRITE8_MEMBER(jack_state::joinem_control_w)
*
*************************************/
-ADDRESS_MAP_START(jack_state::jack_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0xb000, 0xb07f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb400, 0xb400) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xb500, 0xb500) AM_READ_PORT("DSW1")
- AM_RANGE(0xb501, 0xb501) AM_READ_PORT("DSW2")
- AM_RANGE(0xb502, 0xb502) AM_READ_PORT("IN0")
- AM_RANGE(0xb503, 0xb503) AM_READ_PORT("IN1")
- AM_RANGE(0xb504, 0xb504) AM_READ_PORT("IN2")
- AM_RANGE(0xb505, 0xb505) AM_READ_PORT("IN3")
- AM_RANGE(0xb506, 0xb507) AM_READWRITE(jack_flipscreen_r, jack_flipscreen_w)
- AM_RANGE(0xb600, 0xb61f) AM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xb800, 0xbbff) AM_RAM_WRITE(jack_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(jack_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jack_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jack_state::striv_map)
- AM_IMPORT_FROM( jack_map )
- AM_RANGE(0xb000, 0xb0ff) AM_WRITENOP
- AM_RANGE(0xc000, 0xcfff) AM_READ(striv_question_r)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(jack_state::joinem_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0xb000, 0xb07f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb080, 0xb0ff) AM_RAM_WRITE(joinem_scroll_w) AM_SHARE("scrollram")
- AM_RANGE(0xb400, 0xb400) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xb500, 0xb500) AM_READ_PORT("DSW1")
- AM_RANGE(0xb501, 0xb501) AM_READ_PORT("DSW2")
- AM_RANGE(0xb502, 0xb502) AM_READ_PORT("IN0")
- AM_RANGE(0xb503, 0xb503) AM_READ_PORT("IN1")
- AM_RANGE(0xb504, 0xb504) AM_READ_PORT("IN2")
- AM_RANGE(0xb506, 0xb507) AM_READWRITE(jack_flipscreen_r, jack_flipscreen_w)
- AM_RANGE(0xb700, 0xb700) AM_WRITE(joinem_control_w)
- AM_RANGE(0xb800, 0xbbff) AM_RAM_WRITE(jack_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(jack_colorram_w) AM_SHARE("colorram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jack_state::unclepoo_map)
- AM_IMPORT_FROM( joinem_map )
- AM_RANGE(0x9000, 0x97ff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(jack_state::sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x43ff) AM_RAM
- AM_RANGE(0x6000, 0x6fff) AM_WRITENOP /* R/C filter ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(jack_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w)
- AM_RANGE(0x80, 0x80) AM_DEVWRITE("aysnd", ay8910_device, address_w)
-ADDRESS_MAP_END
+void jack_state::jack_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x5fff).ram();
+ map(0xb000, 0xb07f).ram().share("spriteram");
+ map(0xb400, 0xb400).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xb500, 0xb500).portr("DSW1");
+ map(0xb501, 0xb501).portr("DSW2");
+ map(0xb502, 0xb502).portr("IN0");
+ map(0xb503, 0xb503).portr("IN1");
+ map(0xb504, 0xb504).portr("IN2");
+ map(0xb505, 0xb505).portr("IN3");
+ map(0xb506, 0xb507).rw(this, FUNC(jack_state::jack_flipscreen_r), FUNC(jack_state::jack_flipscreen_w));
+ map(0xb600, 0xb61f).w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xb800, 0xbbff).ram().w(this, FUNC(jack_state::jack_videoram_w)).share("videoram");
+ map(0xbc00, 0xbfff).ram().w(this, FUNC(jack_state::jack_colorram_w)).share("colorram");
+ map(0xc000, 0xffff).rom();
+}
+
+void jack_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom().share("decrypted_opcodes");
+}
+
+void jack_state::striv_map(address_map &map)
+{
+ jack_map(map);
+ map(0xb000, 0xb0ff).nopw();
+ map(0xc000, 0xcfff).r(this, FUNC(jack_state::striv_question_r));
+}
+
+
+void jack_state::joinem_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x8fff).ram();
+ map(0xb000, 0xb07f).ram().share("spriteram");
+ map(0xb080, 0xb0ff).ram().w(this, FUNC(jack_state::joinem_scroll_w)).share("scrollram");
+ map(0xb400, 0xb400).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xb500, 0xb500).portr("DSW1");
+ map(0xb501, 0xb501).portr("DSW2");
+ map(0xb502, 0xb502).portr("IN0");
+ map(0xb503, 0xb503).portr("IN1");
+ map(0xb504, 0xb504).portr("IN2");
+ map(0xb506, 0xb507).rw(this, FUNC(jack_state::jack_flipscreen_r), FUNC(jack_state::jack_flipscreen_w));
+ map(0xb700, 0xb700).w(this, FUNC(jack_state::joinem_control_w));
+ map(0xb800, 0xbbff).ram().w(this, FUNC(jack_state::jack_videoram_w)).share("videoram");
+ map(0xbc00, 0xbfff).ram().w(this, FUNC(jack_state::jack_colorram_w)).share("colorram");
+}
+
+void jack_state::unclepoo_map(address_map &map)
+{
+ joinem_map(map);
+ map(0x9000, 0x97ff).ram();
+}
+
+
+void jack_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x43ff).ram();
+ map(0x6000, 0x6fff).nopw(); /* R/C filter ??? */
+}
+
+void jack_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x40, 0x40).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0x80, 0x80).w("aysnd", FUNC(ay8910_device::address_w));
+}