diff options
Diffstat (limited to 'src/mame/drivers/supduck.cpp')
-rw-r--r-- | src/mame/drivers/supduck.cpp | 63 |
1 files changed, 33 insertions, 30 deletions
diff --git a/src/mame/drivers/supduck.cpp b/src/mame/drivers/supduck.cpp index 03ccc19aa87..e416315a1d3 100644 --- a/src/mame/drivers/supduck.cpp +++ b/src/mame/drivers/supduck.cpp @@ -246,36 +246,39 @@ WRITE16_MEMBER(supduck_state::supduck_scroll_w) -ADDRESS_MAP_START(supduck_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_WRITENOP - AM_RANGE(0xfe0000, 0xfe1fff) AM_RAM AM_SHARE("spriteram") - - AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("P1_P2") AM_WRITE( supduck_4000_w ) - AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("SYSTEM") AM_WRITE( supduck_4002_w ) - AM_RANGE(0xfe4004, 0xfe4005) AM_READ_PORT("DSW") - - AM_RANGE(0xfe8000, 0xfe8007) AM_WRITE(supduck_scroll_w) - AM_RANGE(0xfe800e, 0xfe800f) AM_WRITENOP // watchdog or irqack - - AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(text_videoram_w) AM_SHARE("textvideoram") - AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(back_videoram_w) AM_SHARE("backvideoram") - AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(fore_videoram_w) AM_SHARE("forevideoram") - AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0xffc000, 0xffffff) AM_RAM /* working RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(supduck_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9000, 0x9000) AM_WRITE(okibank_w) - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) -ADDRESS_MAP_END - -ADDRESS_MAP_START(supduck_state::oki_map) - AM_RANGE(0x00000, 0x1ffff) AM_ROM - AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank") -ADDRESS_MAP_END +void supduck_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom().nopw(); + map(0xfe0000, 0xfe1fff).ram().share("spriteram"); + + map(0xfe4000, 0xfe4001).portr("P1_P2").w(this, FUNC(supduck_state::supduck_4000_w)); + map(0xfe4002, 0xfe4003).portr("SYSTEM").w(this, FUNC(supduck_state::supduck_4002_w)); + map(0xfe4004, 0xfe4005).portr("DSW"); + + map(0xfe8000, 0xfe8007).w(this, FUNC(supduck_state::supduck_scroll_w)); + map(0xfe800e, 0xfe800f).nopw(); // watchdog or irqack + + map(0xfec000, 0xfecfff).ram().w(this, FUNC(supduck_state::text_videoram_w)).share("textvideoram"); + map(0xff0000, 0xff3fff).ram().w(this, FUNC(supduck_state::back_videoram_w)).share("backvideoram"); + map(0xff4000, 0xff7fff).ram().w(this, FUNC(supduck_state::fore_videoram_w)).share("forevideoram"); + map(0xff8000, 0xff87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0xffc000, 0xffffff).ram(); /* working RAM */ +} + +void supduck_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9000, 0x9000).w(this, FUNC(supduck_state::okibank_w)); + map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); +} + +void supduck_state::oki_map(address_map &map) +{ + map(0x00000, 0x1ffff).rom(); + map(0x20000, 0x3ffff).bankr("okibank"); +} WRITE8_MEMBER(supduck_state::okibank_w) { |