summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/cclimber.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/cclimber.cpp')
-rw-r--r--src/mame/drivers/cclimber.cpp362
1 files changed, 189 insertions, 173 deletions
diff --git a/src/mame/drivers/cclimber.cpp b/src/mame/drivers/cclimber.cpp
index d4fa10c5a57..bb95ef3bc7d 100644
--- a/src/mame/drivers/cclimber.cpp
+++ b/src/mame/drivers/cclimber.cpp
@@ -321,186 +321,202 @@ READ8_MEMBER(cclimber_state::bagmanf_a000_r)
/* Note that River Patrol reads/writes to a000-a4f0. This is a bug in the code.
The instruction at 0x0593 should say LD DE,$8000 */
-ADDRESS_MAP_START(cclimber_state::cclimber_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only */
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram")
- AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
+void cclimber_state::cclimber_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6bff).ram(); /* Crazy Kong only */
+ map(0x8000, 0x83ff).ram();
+ map(0x8800, 0x88ff).ram().share("bigspriteram");
+ map(0x8900, 0x8bff).ram(); /* not used, but initialized */
+ map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram");
/* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
/* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */
- AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("column_scroll")
- AM_RANGE(0x9880, 0x989f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w)
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::cannonb_map)
- AM_RANGE(0x5045, 0x505f) AM_WRITENOP /* do not errorlog this */
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6bff) AM_RAM
- AM_RANGE(0x8000, 0x83ff) AM_RAM
- AM_RANGE(0x8800, 0x88ff) AM_READNOP AM_WRITEONLY AM_SHARE("bigspriteram") /* must not return what's written (game will reset after coin insert if it returns 0xff)*/
+ map(0x9800, 0x9bff).ram(); /* not used, but initialized */
+ map(0x9800, 0x981f).ram().share("column_scroll");
+ map(0x9880, 0x989f).ram().share("spriteram");
+ map(0x98dc, 0x98df).ram().share("bigspritectrl");
+ map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram");
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa800, 0xa800).portr("P2").w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w));
+ map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w));
+ map(0xb800, 0xb800).portr("SYSTEM");
+}
+
+void cclimber_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom().share("decrypted_opcodes");
+}
+
+void cclimber_state::cannonb_map(address_map &map)
+{
+ map(0x5045, 0x505f).nopw(); /* do not errorlog this */
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6bff).ram();
+ map(0x8000, 0x83ff).ram();
+ map(0x8800, 0x88ff).nopr().writeonly().share("bigspriteram"); /* must not return what's written (game will reset after coin insert if it returns 0xff)*/
// AM_RANGE(0x8900, 0x8bff) AM_WRITEONLY /* not used, but initialized */
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
+ map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram");
/* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
/* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */
- AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("column_scroll")
- AM_RANGE(0x9880, 0x989f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w)
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::swimmer_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x8800, 0x88ff) AM_MIRROR(0x0100) AM_RAM AM_SHARE("bigspriteram")
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x9800, 0x981f) AM_WRITEONLY AM_SHARE("column_scroll")
- AM_RANGE(0x9880, 0x989f) AM_WRITEONLY AM_SHARE("spriteram")
- AM_RANGE(0x98fc, 0x98ff) AM_WRITEONLY AM_SHARE("bigspritectrl")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P2")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P1") AM_WRITE(swimmer_sh_soundlatch_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW1")
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW2") AM_WRITEONLY AM_SHARE("bgcolor")
- AM_RANGE(0xb880, 0xb880) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::guzzler_map)
- AM_IMPORT_FROM(swimmer_map)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM /* ??? used by Guzzler */
- AM_RANGE(0xe000, 0xffff) AM_ROM /* Guzzler only */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::yamato_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6fff) AM_RAM
- AM_RANGE(0x7000, 0x7fff) AM_ROM
- AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram")
- AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM AM_SHARE("videoram")
+ map(0x9800, 0x9bff).ram(); /* not used, but initialized */
+ map(0x9800, 0x981f).ram().share("column_scroll");
+ map(0x9880, 0x989f).ram().share("spriteram");
+ map(0x98dc, 0x98df).ram().share("bigspritectrl");
+ map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram");
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa800, 0xa800).portr("P2").w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w));
+ map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w));
+ map(0xb800, 0xb800).portr("SYSTEM");
+}
+
+void cclimber_state::swimmer_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x8800, 0x88ff).mirror(0x0100).ram().share("bigspriteram");
+ map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram");
+ map(0x9800, 0x981f).writeonly().share("column_scroll");
+ map(0x9880, 0x989f).writeonly().share("spriteram");
+ map(0x98fc, 0x98ff).writeonly().share("bigspritectrl");
+ map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram");
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa000, 0xa000).portr("P2");
+ map(0xa800, 0xa800).portr("P1").w(this, FUNC(cclimber_state::swimmer_sh_soundlatch_w));
+ map(0xb000, 0xb000).portr("DSW1");
+ map(0xb800, 0xb800).portr("DSW2").writeonly().share("bgcolor");
+ map(0xb880, 0xb880).portr("SYSTEM");
+}
+
+void cclimber_state::guzzler_map(address_map &map)
+{
+ swimmer_map(map);
+ map(0xc000, 0xc7ff).ram(); /* ??? used by Guzzler */
+ map(0xe000, 0xffff).rom(); /* Guzzler only */
+}
+
+void cclimber_state::yamato_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6fff).ram();
+ map(0x7000, 0x7fff).rom();
+ map(0x8800, 0x88ff).ram().share("bigspriteram");
+ map(0x8900, 0x8bff).ram(); /* not used, but initialized */
+ map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram");
/* 9800-9bff and 9c00-9fff share the same RAM, interleaved */
/* (9800-981f for scroll, 9c20-9c3f for color RAM, and so on) */
- AM_RANGE(0x9800, 0x9bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("column_scroll")
- AM_RANGE(0x9880, 0x989f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM_WRITE(cclimber_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2")
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("COIN")
- AM_RANGE(0xba00, 0xba00) AM_READ_PORT("START") /* maybe a mirror of b800 */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::yamato_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::toprollr_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1")
- AM_RANGE(0x6000, 0x6bff) AM_RAM AM_SHARE("ram")
- AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram")
- AM_RANGE(0x8c00, 0x8fff) AM_RAM AM_SHARE("bg_videoram")
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x9400, 0x97ff) AM_RAM AM_SHARE("bg_coloram")
- AM_RANGE(0x9800, 0x987f) AM_RAM /* unused ? */
- AM_RANGE(0x9880, 0x995f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x99dc, 0x99df) AM_RAM AM_SHARE("bigspritectrl")
- AM_RANGE(0x9c00, 0x9fff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
- AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w)
- AM_RANGE(0xb800, 0xb800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xc000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::bagmanf_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x6bff) AM_RAM /* Crazy Kong only */
- AM_RANGE(0x8000, 0x8000) AM_READ_PORT("P1")
- AM_RANGE(0x8800, 0x88ff) AM_RAM AM_SHARE("bigspriteram") // wrong
- AM_RANGE(0x8800, 0x8800) AM_READ_PORT("P2")
- AM_RANGE(0x8900, 0x8bff) AM_RAM /* not used, but initialized */
- AM_RANGE(0x9000, 0x93ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0xffe0, 0xffff) AM_RAM AM_SHARE("column_scroll") // wrong, is this area even connected?
- AM_RANGE(0x9800, 0x9bff) AM_RAM AM_SHARE("colorram")
- AM_RANGE(0x9800, 0x981f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x9800, 0x9800) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x98dc, 0x98df) AM_RAM AM_SHARE("bigspritectrl") // wrong
- AM_RANGE(0x9c00, 0x9fff) AM_RAM /* not used, but initialized */
- AM_RANGE(0xa000, 0xa000) AM_READ(bagmanf_a000_r)
- AM_RANGE(0xa000, 0xa007) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
- AM_RANGE(0xa800, 0xa800) AM_READNOP AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_rate_w)
- AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_DEVWRITE("cclimber_audio", cclimber_audio_device, sample_volume_w)
- AM_RANGE(0xb800, 0xb800) AM_READNOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::toprollr_decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1d")
- AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("maincpu", 0xc000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::cclimber_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x08, 0x09) AM_DEVWRITE("cclimber_audio:aysnd", ay8910_device, address_data_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVREAD("cclimber_audio:aysnd", ay8910_device, data_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::yamato_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(yamato_p0_w) /* ??? */
- AM_RANGE(0x01, 0x01) AM_WRITE(yamato_p1_w) /* ??? */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(cclimber_state::swimmer_audio_map)
- AM_RANGE(0x0000, 0x0fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
- AM_RANGE(0x3000, 0x3000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x4000, 0x4001) AM_RAM /* ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::yamato_audio_map)
- AM_RANGE(0x0000, 0x07ff) AM_ROM
- AM_RANGE(0x5000, 0x53ff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(cclimber_state::swimmer_audio_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, data_address_w)
- AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay2", ay8910_device, data_address_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(cclimber_state::yamato_audio_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x04, 0x04) AM_READ(yamato_p0_r) /* ??? */
- AM_RANGE(0x08, 0x08) AM_READ(yamato_p1_r) /* ??? */
-ADDRESS_MAP_END
+ map(0x9800, 0x9bff).ram(); /* not used, but initialized */
+ map(0x9800, 0x981f).ram().share("column_scroll");
+ map(0x9880, 0x989f).ram().share("spriteram");
+ map(0x98dc, 0x98df).ram().share("bigspritectrl");
+ map(0x9c00, 0x9fff).ram().w(this, FUNC(cclimber_state::cclimber_colorram_w)).share("colorram");
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa800, 0xa800).portr("P2");
+ map(0xb000, 0xb000).portr("DSW");
+ map(0xb800, 0xb800).portr("COIN");
+ map(0xba00, 0xba00).portr("START"); /* maybe a mirror of b800 */
+}
+
+void cclimber_state::yamato_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom().share("decrypted_opcodes");
+}
+
+void cclimber_state::toprollr_map(address_map &map)
+{
+ map(0x0000, 0x5fff).bankr("bank1");
+ map(0x6000, 0x6bff).ram().share("ram");
+ map(0x8800, 0x88ff).ram().share("bigspriteram");
+ map(0x8c00, 0x8fff).ram().share("bg_videoram");
+ map(0x9000, 0x93ff).ram().share("videoram");
+ map(0x9400, 0x97ff).ram().share("bg_coloram");
+ map(0x9800, 0x987f).ram(); /* unused ? */
+ map(0x9880, 0x995f).ram().share("spriteram");
+ map(0x99dc, 0x99df).ram().share("bigspritectrl");
+ map(0x9c00, 0x9fff).ram().share("colorram");
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa000, 0xa000).portr("P1");
+ map(0xa800, 0xa800).portr("P2").w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w));
+ map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w));
+ map(0xb800, 0xb800).portr("SYSTEM");
+ map(0xc000, 0xffff).rom();
+}
+
+void cclimber_state::bagmanf_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x6bff).ram(); /* Crazy Kong only */
+ map(0x8000, 0x8000).portr("P1");
+ map(0x8800, 0x88ff).ram().share("bigspriteram"); // wrong
+ map(0x8800, 0x8800).portr("P2");
+ map(0x8900, 0x8bff).ram(); /* not used, but initialized */
+ map(0x9000, 0x93ff).ram().share("videoram");
+ map(0xffe0, 0xffff).ram().share("column_scroll"); // wrong, is this area even connected?
+ map(0x9800, 0x9bff).ram().share("colorram");
+ map(0x9800, 0x981f).ram().share("spriteram");
+ map(0x9800, 0x9800).portr("SYSTEM");
+ map(0x98dc, 0x98df).ram().share("bigspritectrl"); // wrong
+ map(0x9c00, 0x9fff).ram(); /* not used, but initialized */
+ map(0xa000, 0xa000).r(this, FUNC(cclimber_state::bagmanf_a000_r));
+ map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
+ map(0xa800, 0xa800).nopr().w("cclimber_audio", FUNC(cclimber_audio_device::sample_rate_w));
+ map(0xb000, 0xb000).portr("DSW").w("cclimber_audio", FUNC(cclimber_audio_device::sample_volume_w));
+ map(0xb800, 0xb800).nopr();
+}
+
+void cclimber_state::toprollr_decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x5fff).bankr("bank1d");
+ map(0xc000, 0xffff).rom().region("maincpu", 0xc000);
+}
+
+void cclimber_state::cclimber_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x08, 0x09).w("cclimber_audio:aysnd", FUNC(ay8910_device::address_data_w));
+ map(0x0c, 0x0c).r("cclimber_audio:aysnd", FUNC(ay8910_device::data_r));
+}
+
+void cclimber_state::yamato_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(cclimber_state::yamato_p0_w)); /* ??? */
+ map(0x01, 0x01).w(this, FUNC(cclimber_state::yamato_p1_w)); /* ??? */
+}
+
+
+void cclimber_state::swimmer_audio_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rom();
+ map(0x2000, 0x23ff).ram();
+ map(0x3000, 0x3000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+ map(0x4000, 0x4001).ram(); /* ??? */
+}
+
+void cclimber_state::yamato_audio_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+ map(0x5000, 0x53ff).ram();
+}
+
+
+void cclimber_state::swimmer_audio_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::data_address_w));
+ map(0x80, 0x81).w("ay2", FUNC(ay8910_device::data_address_w));
+}
+
+void cclimber_state::yamato_audio_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x02, 0x03).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x04, 0x04).r(this, FUNC(cclimber_state::yamato_p0_r)); /* ??? */
+ map(0x08, 0x08).r(this, FUNC(cclimber_state::yamato_p1_r)); /* ??? */
+}
static INPUT_PORTS_START( cclimber )