summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/gaiden.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/gaiden.cpp')
-rw-r--r--src/mame/drivers/gaiden.cpp227
1 files changed, 118 insertions, 109 deletions
diff --git a/src/mame/drivers/gaiden.cpp b/src/mame/drivers/gaiden.cpp
index 1618019d063..558fc1db0a9 100644
--- a/src/mame/drivers/gaiden.cpp
+++ b/src/mame/drivers/gaiden.cpp
@@ -385,87 +385,94 @@ READ16_MEMBER(gaiden_state::raiga_protection_r)
return m_prot;
}
-ADDRESS_MAP_START(gaiden_state::gaiden_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x060000, 0x063fff) AM_RAM
- AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("videoram3")
- AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2") AM_WRITE(gaiden_sproffsety_w)
- AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW")
- AM_RANGE(0x07a104, 0x07a105) AM_WRITE(gaiden_txscrolly_w)
- AM_RANGE(0x07a108, 0x07a109) AM_WRITE(gaiden_txoffsety_w)
- AM_RANGE(0x07a10c, 0x07a10d) AM_WRITE(gaiden_txscrollx_w)
- AM_RANGE(0x07a204, 0x07a205) AM_WRITE(gaiden_fgscrolly_w)
- AM_RANGE(0x07a208, 0x07a209) AM_WRITE(gaiden_fgoffsety_w)
- AM_RANGE(0x07a20c, 0x07a20d) AM_WRITE(gaiden_fgscrollx_w)
- AM_RANGE(0x07a304, 0x07a305) AM_WRITE(gaiden_bgscrolly_w)
- AM_RANGE(0x07a308, 0x07a309) AM_WRITE(gaiden_bgoffsety_w)
- AM_RANGE(0x07a30c, 0x07a30d) AM_WRITE(gaiden_bgscrollx_w)
- AM_RANGE(0x07a800, 0x07a801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
+void gaiden_state::gaiden_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x060000, 0x063fff).ram();
+ map(0x070000, 0x070fff).ram().w(this, FUNC(gaiden_state::tx_videoram_w)).share("videoram1");
+ map(0x072000, 0x073fff).ram().w(this, FUNC(gaiden_state::fg_videoram_w)).share("videoram2");
+ map(0x074000, 0x075fff).ram().w(this, FUNC(gaiden_state::bg_videoram_w)).share("videoram3");
+ map(0x076000, 0x077fff).ram().share("spriteram");
+ map(0x078000, 0x079fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x07a000, 0x07a001).portr("SYSTEM");
+ map(0x07a002, 0x07a003).portr("P1_P2").w(this, FUNC(gaiden_state::gaiden_sproffsety_w));
+ map(0x07a004, 0x07a005).portr("DSW");
+ map(0x07a104, 0x07a105).w(this, FUNC(gaiden_state::gaiden_txscrolly_w));
+ map(0x07a108, 0x07a109).w(this, FUNC(gaiden_state::gaiden_txoffsety_w));
+ map(0x07a10c, 0x07a10d).w(this, FUNC(gaiden_state::gaiden_txscrollx_w));
+ map(0x07a204, 0x07a205).w(this, FUNC(gaiden_state::gaiden_fgscrolly_w));
+ map(0x07a208, 0x07a209).w(this, FUNC(gaiden_state::gaiden_fgoffsety_w));
+ map(0x07a20c, 0x07a20d).w(this, FUNC(gaiden_state::gaiden_fgscrollx_w));
+ map(0x07a304, 0x07a305).w(this, FUNC(gaiden_state::gaiden_bgscrolly_w));
+ map(0x07a308, 0x07a309).w(this, FUNC(gaiden_state::gaiden_bgoffsety_w));
+ map(0x07a30c, 0x07a30d).w(this, FUNC(gaiden_state::gaiden_bgscrollx_w));
+ map(0x07a800, 0x07a801).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
// Ninja Gaiden writes only to the lower byte; Tecmo Knight and Strato Fighter write to the upper byte instead.
// It's not clear which 8 data lines are actually connected, but byte smearing is almost certainly involved.
- AM_RANGE(0x07a802, 0x07a803) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff).cswidth(16)
- AM_RANGE(0x07a806, 0x07a807) AM_WRITE(irq_ack_w)
- AM_RANGE(0x07a808, 0x07a809) AM_WRITE(gaiden_flip_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::wildfang_map)
- AM_IMPORT_FROM(gaiden_map)
- AM_RANGE(0x07a006, 0x07a007) AM_READ(wildfang_protection_r)
- AM_RANGE(0x07a804, 0x07a805) AM_WRITE(wildfang_protection_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::raiga_map)
- AM_IMPORT_FROM(gaiden_map)
- AM_RANGE(0x07a006, 0x07a007) AM_READ(raiga_protection_r)
- AM_RANGE(0x07a804, 0x07a805) AM_WRITE(raiga_protection_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::drgnbowl_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x060000, 0x063fff) AM_RAM
- AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("videoram3")
- AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW")
- AM_RANGE(0x07a00e, 0x07a00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x07e000, 0x07e001) AM_WRITE8(drgnbowl_irq_ack_w, 0xff00)
- AM_RANGE(0x07f000, 0x07f001) AM_WRITE(gaiden_bgscrolly_w)
- AM_RANGE(0x07f002, 0x07f003) AM_WRITE(gaiden_bgscrollx_w)
- AM_RANGE(0x07f004, 0x07f005) AM_WRITE(gaiden_fgscrolly_w)
- AM_RANGE(0x07f006, 0x07f007) AM_WRITE(gaiden_fgscrollx_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::sound_map)
- AM_RANGE(0x0000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xefff) AM_ROM /* raiga only */
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ym1", ym2203_device, write)
- AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ym2", ym2203_device, write)
- AM_RANGE(0xfc00, 0xfc00) AM_NOP /* ?? */
- AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::drgnbowl_sound_map)
- AM_RANGE(0x0000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(gaiden_state::drgnbowl_sound_port_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+ map(0x07a802, 0x07a803).w("soundlatch", FUNC(generic_latch_8_device::write)).umask16(0x00ff).cswidth(16);
+ map(0x07a806, 0x07a807).w(this, FUNC(gaiden_state::irq_ack_w));
+ map(0x07a808, 0x07a809).w(this, FUNC(gaiden_state::gaiden_flip_w));
+}
+
+void gaiden_state::wildfang_map(address_map &map)
+{
+ gaiden_map(map);
+ map(0x07a006, 0x07a007).r(this, FUNC(gaiden_state::wildfang_protection_r));
+ map(0x07a804, 0x07a805).w(this, FUNC(gaiden_state::wildfang_protection_w));
+}
+
+void gaiden_state::raiga_map(address_map &map)
+{
+ gaiden_map(map);
+ map(0x07a006, 0x07a007).r(this, FUNC(gaiden_state::raiga_protection_r));
+ map(0x07a804, 0x07a805).w(this, FUNC(gaiden_state::raiga_protection_w));
+}
+
+void gaiden_state::drgnbowl_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x060000, 0x063fff).ram();
+ map(0x070000, 0x070fff).ram().w(this, FUNC(gaiden_state::tx_videoram_w)).share("videoram1");
+ map(0x072000, 0x073fff).ram().w(this, FUNC(gaiden_state::fg_videoram_w)).share("videoram2");
+ map(0x074000, 0x075fff).ram().w(this, FUNC(gaiden_state::bg_videoram_w)).share("videoram3");
+ map(0x076000, 0x077fff).ram().share("spriteram");
+ map(0x078000, 0x079fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x07a000, 0x07a001).portr("SYSTEM");
+ map(0x07a002, 0x07a003).portr("P1_P2");
+ map(0x07a004, 0x07a005).portr("DSW");
+ map(0x07a00e, 0x07a00e).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x07e000, 0x07e000).w(this, FUNC(gaiden_state::drgnbowl_irq_ack_w));
+ map(0x07f000, 0x07f001).w(this, FUNC(gaiden_state::gaiden_bgscrolly_w));
+ map(0x07f002, 0x07f003).w(this, FUNC(gaiden_state::gaiden_bgscrollx_w));
+ map(0x07f004, 0x07f005).w(this, FUNC(gaiden_state::gaiden_fgscrolly_w));
+ map(0x07f006, 0x07f007).w(this, FUNC(gaiden_state::gaiden_fgscrollx_w));
+}
+
+void gaiden_state::sound_map(address_map &map)
+{
+ map(0x0000, 0xdfff).rom();
+ map(0xe000, 0xefff).rom(); /* raiga only */
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf810, 0xf811).w("ym1", FUNC(ym2203_device::write));
+ map(0xf820, 0xf821).w("ym2", FUNC(ym2203_device::write));
+ map(0xfc00, 0xfc00).noprw(); /* ?? */
+ map(0xfc20, 0xfc20).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
+
+void gaiden_state::drgnbowl_sound_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void gaiden_state::drgnbowl_sound_port_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x80, 0x80).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc0, 0xc0).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( common )
PORT_START("SYSTEM")
@@ -914,17 +921,18 @@ Others
2x 8x2 switches DIP
*/
-ADDRESS_MAP_START(gaiden_state::mastninj_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("adpcm_bank")
- AM_RANGE(0xc400, 0xc401) AM_DEVREADWRITE("ym1", ym2203_device, read, write)
- AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2", ym2203_device, read, write)
- AM_RANGE(0xcc00, 0xcc00) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("adpcm_select2", ls157_device, ba_w)
- AM_RANGE(0xd400, 0xd400) AM_WRITE(adpcm_bankswitch_w)
- AM_RANGE(0xd800, 0xd800) AM_DEVWRITE("adpcm_select1", ls157_device, ba_w)
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
-ADDRESS_MAP_END
+void gaiden_state::mastninj_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("adpcm_bank");
+ map(0xc400, 0xc401).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xc800, 0xc801).rw("ym2", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xcc00, 0xcc00).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xd000, 0xd000).w("adpcm_select2", FUNC(ls157_device::ba_w));
+ map(0xd400, 0xd400).w(this, FUNC(gaiden_state::adpcm_bankswitch_w));
+ map(0xd800, 0xd800).w("adpcm_select1", FUNC(ls157_device::ba_w));
+ map(0xf000, 0xf7ff).ram();
+}
WRITE_LINE_MEMBER(gaiden_state::vck_flipflop_w)
{
@@ -955,30 +963,31 @@ MACHINE_START_MEMBER(gaiden_state,mastninj)
save_item(NAME(m_adpcm_toggle));
}
-ADDRESS_MAP_START(gaiden_state::mastninj_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x060000, 0x063fff) AM_RAM
- AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(tx_videoram_w) AM_SHARE("videoram1")
- AM_RANGE(0x072000, 0x073fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram2")
- AM_RANGE(0x074000, 0x075fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("videoram3")
- AM_RANGE(0x076000, 0x077fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x078000, 0x079fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+void gaiden_state::mastninj_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x060000, 0x063fff).ram();
+ map(0x070000, 0x070fff).ram().w(this, FUNC(gaiden_state::tx_videoram_w)).share("videoram1");
+ map(0x072000, 0x073fff).ram().w(this, FUNC(gaiden_state::fg_videoram_w)).share("videoram2");
+ map(0x074000, 0x075fff).ram().w(this, FUNC(gaiden_state::bg_videoram_w)).share("videoram3");
+ map(0x076000, 0x077fff).ram().share("spriteram");
+ map(0x078000, 0x079fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
// AM_RANGE(0x078800, 0x079fff) AM_RAM
- AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2")
- AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW")
+ map(0x07a000, 0x07a001).portr("SYSTEM");
+ map(0x07a002, 0x07a003).portr("P1_P2");
+ map(0x07a004, 0x07a005).portr("DSW");
// AM_RANGE(0x07a104, 0x07a105) AM_WRITE(gaiden_txscrolly_w)
// AM_RANGE(0x07a10c, 0x07a10d) AM_WRITE(gaiden_txscrollx_w)
- AM_RANGE(0x07f000, 0x07f001) AM_WRITE(gaiden_bgscrolly_w)
- AM_RANGE(0x07f002, 0x07f003) AM_WRITE(gaiden_bgscrollx_w)
- AM_RANGE(0x07f004, 0x07f005) AM_WRITE(gaiden_fgscrolly_w)
- AM_RANGE(0x07f006, 0x07f007) AM_WRITE(gaiden_fgscrollx_w)
- AM_RANGE(0x07a800, 0x07a801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w)
+ map(0x07f000, 0x07f001).w(this, FUNC(gaiden_state::gaiden_bgscrolly_w));
+ map(0x07f002, 0x07f003).w(this, FUNC(gaiden_state::gaiden_bgscrollx_w));
+ map(0x07f004, 0x07f005).w(this, FUNC(gaiden_state::gaiden_fgscrolly_w));
+ map(0x07f006, 0x07f007).w(this, FUNC(gaiden_state::gaiden_fgscrollx_w));
+ map(0x07a800, 0x07a801).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
// AM_RANGE(0x07a806, 0x07a807) AM_WRITENOP
// AM_RANGE(0x07a808, 0x07a809) AM_WRITE(gaiden_flip_w)
- AM_RANGE(0x07a00e, 0x07a00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x07e000, 0x07e001) AM_WRITE8(drgnbowl_irq_ack_w, 0xff00)
-ADDRESS_MAP_END
+ map(0x07a00e, 0x07a00e).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x07e000, 0x07e000).w(this, FUNC(gaiden_state::drgnbowl_irq_ack_w));
+}
MACHINE_CONFIG_START(gaiden_state::mastninj)