summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/lwings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/lwings.cpp')
-rw-r--r--src/mame/drivers/lwings.cpp268
1 files changed, 139 insertions, 129 deletions
diff --git a/src/mame/drivers/lwings.cpp b/src/mame/drivers/lwings.cpp
index 1460c349a19..582be57bd72 100644
--- a/src/mame/drivers/lwings.cpp
+++ b/src/mame/drivers/lwings.cpp
@@ -285,109 +285,114 @@ WRITE8_MEMBER(lwings_state::msm5205_w)
m_msm->vclk_w(0);
}
-ADDRESS_MAP_START(lwings_state::avengers_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xddff) AM_RAM
- AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdf80, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
- AM_RANGE(0xf800, 0xf801) AM_WRITE(lwings_bg1_scrollx_w)
- AM_RANGE(0xf802, 0xf803) AM_WRITE(lwings_bg1_scrolly_w)
- AM_RANGE(0xf804, 0xf804) AM_WRITE(trojan_bg2_scrollx_w)
- AM_RANGE(0xf805, 0xf805) AM_WRITE(trojan_bg2_image_w)
-
- AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE") AM_WRITENOP /* ? */
- AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1") AM_WRITE(avengers_protection_w)
- AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
- AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWB")
- AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWA") AM_WRITE(avengers_prot_bank_w)
- AM_RANGE(0xf80d, 0xf80d) AM_READWRITE(avengers_protection_r,avengers_adpcm_w)
- AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lwings_state::lwings_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xddff) AM_RAM
- AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-
- AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE")
- AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1")
- AM_RANGE(0xf808, 0xf809) AM_WRITE(lwings_bg1_scrollx_w)
- AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
- AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWA")
- AM_RANGE(0xf80a, 0xf80b) AM_WRITE(lwings_bg1_scrolly_w)
- AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWB") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf80d, 0xf80d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lwings_state::trojan_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xddff) AM_RAM
- AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xdf80, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-
- AM_RANGE(0xf800, 0xf801) AM_WRITE(lwings_bg1_scrollx_w)
- AM_RANGE(0xf802, 0xf803) AM_WRITE(lwings_bg1_scrolly_w)
- AM_RANGE(0xf804, 0xf804) AM_WRITE(trojan_bg2_scrollx_w)
- AM_RANGE(0xf805, 0xf805) AM_WRITE(trojan_bg2_image_w)
- AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE") AM_WRITENOP //watchdog
- AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1")
- AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
- AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWA")
- AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWB") AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf80d, 0xf80d) AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
- AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lwings_state::lwings_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xc800, 0xc800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("2203a", ym2203_device, write)
- AM_RANGE(0xe002, 0xe003) AM_DEVWRITE("2203b", ym2203_device, write)
- AM_RANGE(0xe006, 0xe006) AM_READ(avengers_soundlatch2_r) //AT: (avengers061gre)
- AM_RANGE(0xe006, 0xe006) AM_WRITEONLY AM_SHARE("soundlatch_2")
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(lwings_state::fball_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank2")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xddff) AM_RAM
- AM_RANGE(0xde00, 0xdfff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM_DEVWRITE("palette", palette_device, write8_ext) AM_SHARE("palette_ext")
- AM_RANGE(0xf400, 0xf7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-
- AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE")
- AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1")
- AM_RANGE(0xf808, 0xf809) AM_WRITE(lwings_bg1_scrollx_w)
- AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
- AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWA")
- AM_RANGE(0xf80a, 0xf80b) AM_WRITE(lwings_bg1_scrolly_w)
- AM_RANGE(0xf80c, 0xf80c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0xf80d, 0xf80d) AM_READ_PORT("P3") AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
- AM_RANGE(0xf80e, 0xf80e) AM_READ_PORT("P4")
-
- AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)
-ADDRESS_MAP_END
+void lwings_state::avengers_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xddff).ram();
+ map(0xde00, 0xdf7f).ram().share("spriteram");
+ map(0xdf80, 0xdfff).ram();
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram");
+ map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+ map(0xf800, 0xf801).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w));
+ map(0xf802, 0xf803).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w));
+ map(0xf804, 0xf804).w(this, FUNC(lwings_state::trojan_bg2_scrollx_w));
+ map(0xf805, 0xf805).w(this, FUNC(lwings_state::trojan_bg2_image_w));
+
+ map(0xf808, 0xf808).portr("SERVICE").nopw(); /* ? */
+ map(0xf809, 0xf809).portr("P1").w(this, FUNC(lwings_state::avengers_protection_w));
+ map(0xf80a, 0xf80a).portr("P2");
+ map(0xf80b, 0xf80b).portr("DSWB");
+ map(0xf80c, 0xf80c).portr("DSWA").w(this, FUNC(lwings_state::avengers_prot_bank_w));
+ map(0xf80d, 0xf80d).rw(this, FUNC(lwings_state::avengers_protection_r), FUNC(lwings_state::avengers_adpcm_w));
+ map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w));
+}
+
+void lwings_state::lwings_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xddff).ram();
+ map(0xde00, 0xdfff).ram().share("spriteram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram");
+ map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+
+ map(0xf808, 0xf808).portr("SERVICE");
+ map(0xf809, 0xf809).portr("P1");
+ map(0xf808, 0xf809).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w));
+ map(0xf80a, 0xf80a).portr("P2");
+ map(0xf80b, 0xf80b).portr("DSWA");
+ map(0xf80a, 0xf80b).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w));
+ map(0xf80c, 0xf80c).portr("DSWB").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf80d, 0xf80d).w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w));
+}
+
+void lwings_state::trojan_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xddff).ram();
+ map(0xde00, 0xdf7f).ram().share("spriteram");
+ map(0xdf80, 0xdfff).ram();
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram");
+ map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+
+ map(0xf800, 0xf801).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w));
+ map(0xf802, 0xf803).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w));
+ map(0xf804, 0xf804).w(this, FUNC(lwings_state::trojan_bg2_scrollx_w));
+ map(0xf805, 0xf805).w(this, FUNC(lwings_state::trojan_bg2_image_w));
+ map(0xf808, 0xf808).portr("SERVICE").nopw(); //watchdog
+ map(0xf809, 0xf809).portr("P1");
+ map(0xf80a, 0xf80a).portr("P2");
+ map(0xf80b, 0xf80b).portr("DSWA");
+ map(0xf80c, 0xf80c).portr("DSWB").w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf80d, 0xf80d).w("soundlatch2", FUNC(generic_latch_8_device::write));
+ map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w));
+}
+
+void lwings_state::lwings_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xc800, 0xc800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0xe000, 0xe001).w("2203a", FUNC(ym2203_device::write));
+ map(0xe002, 0xe003).w("2203b", FUNC(ym2203_device::write));
+ map(0xe006, 0xe006).r(this, FUNC(lwings_state::avengers_soundlatch2_r)); //AT: (avengers061gre)
+ map(0xe006, 0xe006).writeonly().share("soundlatch_2");
+}
+
+
+
+void lwings_state::fball_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank2");
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xddff).ram();
+ map(0xde00, 0xdfff).ram().share("spriteram");
+ map(0xe000, 0xe7ff).ram().w(this, FUNC(lwings_state::lwings_fgvideoram_w)).share("fgvideoram");
+ map(0xe800, 0xefff).ram().w(this, FUNC(lwings_state::lwings_bg1videoram_w)).share("bg1videoram");
+ map(0xf000, 0xf3ff).ram().w(m_palette, FUNC(palette_device::write8_ext)).share("palette_ext");
+ map(0xf400, 0xf7ff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+
+ map(0xf808, 0xf808).portr("SERVICE");
+ map(0xf809, 0xf809).portr("P1");
+ map(0xf808, 0xf809).w(this, FUNC(lwings_state::lwings_bg1_scrollx_w));
+ map(0xf80a, 0xf80a).portr("P2");
+ map(0xf80b, 0xf80b).portr("DSWA");
+ map(0xf80a, 0xf80b).w(this, FUNC(lwings_state::lwings_bg1_scrolly_w));
+ map(0xf80c, 0xf80c).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0xf80d, 0xf80d).portr("P3").w("watchdog", FUNC(watchdog_timer_device::reset_w));
+ map(0xf80e, 0xf80e).portr("P4");
+
+ map(0xf80e, 0xf80e).w(this, FUNC(lwings_state::lwings_bankswitch_w));
+}
@@ -398,40 +403,45 @@ WRITE8_MEMBER(lwings_state::fball_oki_bank_w)
membank("samplebank")->set_entry((data >> 1) & 0x7);
}
-ADDRESS_MAP_START(lwings_state::fball_oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("samplebank")
-ADDRESS_MAP_END
+void lwings_state::fball_oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("samplebank");
+}
-ADDRESS_MAP_START(lwings_state::fball_sound_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
+void lwings_state::fball_sound_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
+ map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
- AM_RANGE(0xA000, 0xA000) AM_WRITE(fball_oki_bank_w)
+ map(0xA000, 0xA000).w(this, FUNC(lwings_state::fball_oki_bank_w));
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
+ map(0xc000, 0xc7ff).ram();
- AM_RANGE(0xe000, 0xe000) AM_DEVREADWRITE("oki", okim6295_device, read, write)
-ADDRESS_MAP_END
+ map(0xe000, 0xe000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+}
/* Yes, _no_ ram */
-ADDRESS_MAP_START(lwings_state::trojan_adpcm_map)
- AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lwings_state::avengers_adpcm_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ(avengers_adpcm_r)
- AM_RANGE(0x01, 0x01) AM_WRITE(msm5205_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(lwings_state::trojan_adpcm_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREAD("soundlatch2", generic_latch_8_device, read)
- AM_RANGE(0x01, 0x01) AM_WRITE(msm5205_w)
-ADDRESS_MAP_END
+void lwings_state::trojan_adpcm_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().nopw();
+}
+
+void lwings_state::avengers_adpcm_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r(this, FUNC(lwings_state::avengers_adpcm_r));
+ map(0x01, 0x01).w(this, FUNC(lwings_state::msm5205_w));
+}
+
+void lwings_state::trojan_adpcm_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x01, 0x01).w(this, FUNC(lwings_state::msm5205_w));
+}
/*************************************
*