diff options
Diffstat (limited to 'src/mame/drivers/cclimber.cpp')
-rw-r--r-- | src/mame/drivers/cclimber.cpp | 362 |
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 ) |