diff options
Diffstat (limited to 'src/mame/drivers/kurukuru.cpp')
-rw-r--r-- | src/mame/drivers/kurukuru.cpp | 134 |
1 files changed, 71 insertions, 63 deletions
diff --git a/src/mame/drivers/kurukuru.cpp b/src/mame/drivers/kurukuru.cpp index e5f4aeccdb2..2a54dac4f5f 100644 --- a/src/mame/drivers/kurukuru.cpp +++ b/src/mame/drivers/kurukuru.cpp @@ -516,44 +516,48 @@ WRITE8_MEMBER(kurukuru_state::kurukuru_bankswitch_w) } -ADDRESS_MAP_START(kurukuru_state::kurukuru_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::kurukuru_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x0f) AM_WRITE(kurukuru_out_latch_w) - AM_RANGE(0x10, 0x10) AM_MIRROR(0x0f) AM_READ_PORT("DSW1") - AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("v9938", v9938_device, read, write) - AM_RANGE(0x90, 0x90) AM_MIRROR(0x0f) AM_WRITE(kurukuru_bankswitch_w) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x0f) AM_READ_PORT("IN0") - AM_RANGE(0xb0, 0xb0) AM_MIRROR(0x0f) AM_READ_PORT("IN1") - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREADWRITE("ym2149", ay8910_device, data_r, address_w) - AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, data_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::ppj_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0xdfff) AM_ROMBANK("bank1") - AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::ppj_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x0f) AM_WRITE(kurukuru_bankswitch_w) - AM_RANGE(0x10, 0x13) AM_MIRROR(0x0c) AM_DEVREADWRITE("v9938", v9938_device, read, write) - AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_DEVWRITE("soundlatch", generic_latch_8_device, write) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_READ_PORT("DSW1") - AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_WRITE(kurukuru_out_latch_w) - AM_RANGE(0x60, 0x60) AM_MIRROR(0x0f) AM_READ_PORT("IN1") - AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) AM_READ_PORT("IN0") - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, address_w) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x0f) AM_DEVREAD("ym2149", ay8910_device, data_r) - AM_RANGE(0xd0, 0xd0) AM_MIRROR(0x0f) AM_DEVWRITE("ym2149", ay8910_device, data_w) -ADDRESS_MAP_END +void kurukuru_state::kurukuru_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0xdfff).bankr("bank1"); + map(0xe000, 0xffff).ram().share("nvram"); +} + +void kurukuru_state::kurukuru_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_out_latch_w)); + map(0x10, 0x10).mirror(0x0f).portr("DSW1"); + map(0x20, 0x20).mirror(0x0f).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x80, 0x83).mirror(0x0c).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0x90, 0x90).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_bankswitch_w)); + map(0xa0, 0xa0).mirror(0x0f).portr("IN0"); + map(0xb0, 0xb0).mirror(0x0f).portr("IN1"); + map(0xc0, 0xc0).mirror(0x0f).rw("ym2149", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_w)); + map(0xd0, 0xd0).mirror(0x0f).w("ym2149", FUNC(ay8910_device::data_w)); +} + +void kurukuru_state::ppj_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0xdfff).bankr("bank1"); + map(0xe000, 0xffff).ram().share("nvram"); +} + +void kurukuru_state::ppj_io(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_bankswitch_w)); + map(0x10, 0x13).mirror(0x0c).rw(m_v9938, FUNC(v9938_device::read), FUNC(v9938_device::write)); + map(0x30, 0x30).mirror(0x0f).w("soundlatch", FUNC(generic_latch_8_device::write)); + map(0x40, 0x40).mirror(0x0f).portr("DSW1"); + map(0x50, 0x50).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_out_latch_w)); + map(0x60, 0x60).mirror(0x0f).portr("IN1"); + map(0x70, 0x70).mirror(0x0f).portr("IN0"); + map(0xc0, 0xc0).mirror(0x0f).w("ym2149", FUNC(ay8910_device::address_w)); + map(0xc0, 0xc0).mirror(0x0f).r("ym2149", FUNC(ay8910_device::data_r)); + map(0xd0, 0xd0).mirror(0x0f).w("ym2149", FUNC(ay8910_device::data_w)); +} /* 00h W --> bankswitching reg... @@ -606,31 +610,35 @@ READ8_MEMBER(kurukuru_state::kurukuru_adpcm_timer_irqack_r) } -ADDRESS_MAP_START(kurukuru_state::kurukuru_audio_map) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::kurukuru_audio_io) - ADDRESS_MAP_GLOBAL_MASK(0x7f) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_data_w) - AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_reset_w) - AM_RANGE(0x60, 0x60) AM_MIRROR(0x0f) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x70, 0x70) AM_MIRROR(0x0f) AM_READ(kurukuru_adpcm_timer_irqack_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::ppj_audio_map) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(kurukuru_state::ppj_audio_io) - ADDRESS_MAP_GLOBAL_MASK(0x7f) - AM_RANGE(0x20, 0x20) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_data_w) - AM_RANGE(0x30, 0x30) AM_MIRROR(0x0f) AM_WRITE(kurukuru_adpcm_reset_w) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x0f) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x50, 0x50) AM_MIRROR(0x0f) AM_READ(kurukuru_adpcm_timer_irqack_r) -ADDRESS_MAP_END +void kurukuru_state::kurukuru_audio_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void kurukuru_state::kurukuru_audio_io(address_map &map) +{ + map.global_mask(0x7f); + map(0x40, 0x40).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_data_w)); + map(0x50, 0x50).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_reset_w)); + map(0x60, 0x60).mirror(0x0f).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x70, 0x70).mirror(0x0f).r(this, FUNC(kurukuru_state::kurukuru_adpcm_timer_irqack_r)); +} + +void kurukuru_state::ppj_audio_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void kurukuru_state::ppj_audio_io(address_map &map) +{ + map.global_mask(0x7f); + map(0x20, 0x20).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_data_w)); + map(0x30, 0x30).mirror(0x0f).w(this, FUNC(kurukuru_state::kurukuru_adpcm_reset_w)); + map(0x40, 0x40).mirror(0x0f).r("soundlatch", FUNC(generic_latch_8_device::read)); + map(0x50, 0x50).mirror(0x0f).r(this, FUNC(kurukuru_state::kurukuru_adpcm_timer_irqack_r)); +} /* 30h -W --> 0x0b 40h R- --> soundlatch... |