summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/liberate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/liberate.cpp')
-rw-r--r--src/mame/drivers/liberate.cpp191
1 files changed, 100 insertions, 91 deletions
diff --git a/src/mame/drivers/liberate.cpp b/src/mame/drivers/liberate.cpp
index 2c144667a94..28221cd9bde 100644
--- a/src/mame/drivers/liberate.cpp
+++ b/src/mame/drivers/liberate.cpp
@@ -240,77 +240,84 @@ WRITE8_MEMBER(liberate_state::prosport_charram_w)
*
*************************************/
-ADDRESS_MAP_START(liberate_state::prosport_map)
- AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x2000) AM_RAM
- AM_RANGE(0x0200, 0x021f) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(prosport_bg_vram_w) AM_SHARE("bg_vram")
- AM_RANGE(0x0800, 0x1fff) AM_READWRITE(prosport_charram_r,prosport_charram_w) //0x1e00-0x1fff isn't charram!
- AM_RANGE(0x2400, 0x2fff) AM_RAM
- AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(liberate_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(liberate_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x4000, 0xffff) AM_ROM
- AM_RANGE(0x8000, 0x800f) AM_WRITE(prosport_io_w)
- AM_RANGE(0x8000, 0x800f) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::liberate_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x3fff) AM_ROM /* Mirror of main rom */
- AM_RANGE(0x4000, 0x7fff) AM_READ(deco16_bank_r)
- AM_RANGE(0x4000, 0x43ff) AM_WRITE(liberate_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4400, 0x47ff) AM_WRITE(liberate_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4fff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x6200, 0x67ff) AM_WRITEONLY AM_SHARE("scratchram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0x8000, 0x800f) AM_WRITE(deco16_io_w)
- AM_RANGE(0x8000, 0x800f) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::decrypted_opcodes_map)
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::prosoccr_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x3fff) AM_ROM /* Mirror of main rom */
- AM_RANGE(0x4000, 0x7fff) AM_READ(prosoccr_bank_r)
- AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x800) AM_WRITE(liberate_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4400, 0x47ff) AM_WRITE(liberate_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4c00, 0x4fff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x6200, 0x67ff) AM_WRITEONLY AM_SHARE("scratchram")
- AM_RANGE(0x8000, 0x97ff) AM_READWRITE(prosoccr_charram_r, prosoccr_charram_w)
- AM_RANGE(0x9800, 0x9800) AM_WRITE(prosoccr_char_bank_w)
- AM_RANGE(0xa000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::deco16_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(deco16_bank_w)
- AM_RANGE(0x01, 0x01) AM_READ_PORT("TILT")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::prosoccr_io_map)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(prosoccr_io_bank_w)
+void liberate_state::prosport_map(address_map &map)
+{
+ map(0x0000, 0x03ff).mirror(0x2000).ram();
+ map(0x0200, 0x021f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0x0400, 0x07ff).ram().w(this, FUNC(liberate_state::prosport_bg_vram_w)).share("bg_vram");
+ map(0x0800, 0x1fff).rw(this, FUNC(liberate_state::prosport_charram_r), FUNC(liberate_state::prosport_charram_w)); //0x1e00-0x1fff isn't charram!
+ map(0x2400, 0x2fff).ram();
+ map(0x3000, 0x33ff).ram().w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram");
+ map(0x3400, 0x37ff).ram().w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram");
+ map(0x3800, 0x3fff).ram().share("spriteram");
+ map(0x4000, 0xffff).rom();
+ map(0x8000, 0x800f).w(this, FUNC(liberate_state::prosport_io_w));
+ map(0x8000, 0x800f).bankr("bank1");
+}
+
+void liberate_state::liberate_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x3fff).rom(); /* Mirror of main rom */
+ map(0x4000, 0x7fff).r(this, FUNC(liberate_state::deco16_bank_r));
+ map(0x4000, 0x43ff).w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram");
+ map(0x4400, 0x47ff).w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram");
+ map(0x4800, 0x4fff).writeonly().share("spriteram");
+ map(0x6200, 0x67ff).writeonly().share("scratchram");
+ map(0x8000, 0xffff).rom();
+ map(0x8000, 0x800f).w(this, FUNC(liberate_state::deco16_io_w));
+ map(0x8000, 0x800f).bankr("bank1");
+}
+
+void liberate_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x8000, 0xffff).rom().share("decrypted_opcodes");
+}
+
+void liberate_state::prosoccr_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x1000, 0x3fff).rom(); /* Mirror of main rom */
+ map(0x4000, 0x7fff).r(this, FUNC(liberate_state::prosoccr_bank_r));
+ map(0x4000, 0x43ff).mirror(0x800).w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram");
+ map(0x4400, 0x47ff).w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram");
+ map(0x4c00, 0x4fff).writeonly().share("spriteram");
+ map(0x6200, 0x67ff).writeonly().share("scratchram");
+ map(0x8000, 0x97ff).rw(this, FUNC(liberate_state::prosoccr_charram_r), FUNC(liberate_state::prosoccr_charram_w));
+ map(0x9800, 0x9800).w(this, FUNC(liberate_state::prosoccr_char_bank_w));
+ map(0xa000, 0xffff).rom();
+}
+
+void liberate_state::deco16_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(liberate_state::deco16_bank_w));
+ map(0x01, 0x01).portr("TILT");
+}
+
+void liberate_state::prosoccr_io_map(address_map &map)
+{
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(liberate_state::prosoccr_io_bank_w));
//AM_RANGE(0x01, 0x01) AM_READ_PORT("TILT")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::liberatb_map)
- AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x00fe, 0x00fe) AM_READ_PORT("IN0")
- AM_RANGE(0x1000, 0x3fff) AM_ROM /* Mirror of main rom */
- AM_RANGE(0x4000, 0x7fff) AM_READ(deco16_bank_r)
- AM_RANGE(0x4000, 0x43ff) AM_WRITE(liberate_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0x4400, 0x47ff) AM_WRITE(liberate_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0x4800, 0x4fff) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x6200, 0x67ff) AM_WRITEONLY AM_SHARE("scratchram")
- AM_RANGE(0x8000, 0xffff) AM_ROM
- AM_RANGE(0xf000, 0xf00f) AM_WRITE(deco16_io_w)
- AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN1")
- AM_RANGE(0xf001, 0xf001) AM_READ_PORT("IN2")
- AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN3")
- AM_RANGE(0xf003, 0xf003) AM_READ_PORT("DSW1")
- AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW2")
-ADDRESS_MAP_END
+}
+
+void liberate_state::liberatb_map(address_map &map)
+{
+ map(0x0000, 0x0fff).ram();
+ map(0x00fe, 0x00fe).portr("IN0");
+ map(0x1000, 0x3fff).rom(); /* Mirror of main rom */
+ map(0x4000, 0x7fff).r(this, FUNC(liberate_state::deco16_bank_r));
+ map(0x4000, 0x43ff).w(this, FUNC(liberate_state::liberate_colorram_w)).share("colorram");
+ map(0x4400, 0x47ff).w(this, FUNC(liberate_state::liberate_videoram_w)).share("videoram");
+ map(0x4800, 0x4fff).writeonly().share("spriteram");
+ map(0x6200, 0x67ff).writeonly().share("scratchram");
+ map(0x8000, 0xffff).rom();
+ map(0xf000, 0xf00f).w(this, FUNC(liberate_state::deco16_io_w));
+ map(0xf000, 0xf000).portr("IN1");
+ map(0xf001, 0xf001).portr("IN2");
+ map(0xf002, 0xf002).portr("IN3");
+ map(0xf003, 0xf003).portr("DSW1");
+ map(0xf004, 0xf004).portr("DSW2");
+}
/*************************************
*
@@ -318,27 +325,29 @@ ADDRESS_MAP_END
*
*************************************/
-ADDRESS_MAP_START(liberate_state::prosoccr_sound_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8912_device, data_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8912_device, address_w)
- AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8912_device, data_w)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8912_device, address_w)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc000, 0xc000) AM_WRITENOP //irq ack
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(liberate_state::liberate_sound_map)
- AM_RANGE(0x0000, 0x01ff) AM_RAM
- AM_RANGE(0x1000, 0x1000) AM_WRITENOP
- AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("ay1", ay8912_device, data_w)
- AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8912_device, address_w)
- AM_RANGE(0x7000, 0x7000) AM_DEVWRITE("ay2", ay8912_device, data_w)
- AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8912_device, address_w)
- AM_RANGE(0xb000, 0xb000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void liberate_state::prosoccr_sound_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x2000, 0x2000).w("ay1", FUNC(ay8912_device::data_w));
+ map(0x4000, 0x4000).w("ay1", FUNC(ay8912_device::address_w));
+ map(0x6000, 0x6000).w("ay2", FUNC(ay8912_device::data_w));
+ map(0x8000, 0x8000).w("ay2", FUNC(ay8912_device::address_w));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc000, 0xc000).nopw(); //irq ack
+ map(0xe000, 0xffff).rom();
+}
+
+void liberate_state::liberate_sound_map(address_map &map)
+{
+ map(0x0000, 0x01ff).ram();
+ map(0x1000, 0x1000).nopw();
+ map(0x3000, 0x3000).w("ay1", FUNC(ay8912_device::data_w));
+ map(0x4000, 0x4000).w("ay1", FUNC(ay8912_device::address_w));
+ map(0x7000, 0x7000).w("ay2", FUNC(ay8912_device::data_w));
+ map(0x8000, 0x8000).w("ay2", FUNC(ay8912_device::address_w));
+ map(0xb000, 0xb000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xc000, 0xffff).rom();
+}
/*************************************
*