diff options
Diffstat (limited to 'src/mame/drivers/nmg5.cpp')
-rw-r--r-- | src/mame/drivers/nmg5.cpp | 115 |
1 files changed, 60 insertions, 55 deletions
diff --git a/src/mame/drivers/nmg5.cpp b/src/mame/drivers/nmg5.cpp index f8879011d23..ac5d0eed4bf 100644 --- a/src/mame/drivers/nmg5.cpp +++ b/src/mame/drivers/nmg5.cpp @@ -367,44 +367,46 @@ WRITE8_MEMBER(nmg5_state::oki_banking_w) ********************************************************************/ -ADDRESS_MAP_START(nmg5_state::nmg5_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x120000, 0x12ffff) AM_RAM - AM_RANGE(0x140000, 0x1407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x180000, 0x180001) AM_WRITE(nmg5_soundlatch_w) - AM_RANGE(0x180002, 0x180003) AM_WRITENOP - AM_RANGE(0x180004, 0x180005) AM_READWRITE(prot_r, prot_w) - AM_RANGE(0x180006, 0x180007) AM_WRITE(gfx_bank_w) - AM_RANGE(0x180008, 0x180009) AM_READ_PORT("DSW") - AM_RANGE(0x18000a, 0x18000b) AM_READ_PORT("SYSTEM") - AM_RANGE(0x18000c, 0x18000d) AM_READ_PORT("INPUTS") - AM_RANGE(0x18000e, 0x18000f) AM_WRITE(priority_reg_w) - AM_RANGE(0x300002, 0x300009) AM_WRITEONLY AM_SHARE("scroll_ram") - AM_RANGE(0x30000a, 0x30000f) AM_WRITENOP - AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x322000, 0x323fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("bitmap") -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmg5_state::pclubys_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM - AM_RANGE(0x440000, 0x4407ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x460000, 0x4607ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x480000, 0x480001) AM_WRITE(nmg5_soundlatch_w) - AM_RANGE(0x480002, 0x480003) AM_WRITENOP - AM_RANGE(0x480004, 0x480005) AM_READWRITE(prot_r, prot_w) - AM_RANGE(0x480006, 0x480007) AM_WRITE(gfx_bank_w) - AM_RANGE(0x480008, 0x480009) AM_READ_PORT("DSW") - AM_RANGE(0x48000a, 0x48000b) AM_READ_PORT("SYSTEM") - AM_RANGE(0x48000c, 0x48000d) AM_READ_PORT("INPUTS") - AM_RANGE(0x48000e, 0x48000f) AM_WRITE(priority_reg_w) - AM_RANGE(0x500002, 0x500009) AM_WRITEONLY AM_SHARE("scroll_ram") - AM_RANGE(0x520000, 0x521fff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram") - AM_RANGE(0x522000, 0x523fff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("fg_videoram") - AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("bitmap") -ADDRESS_MAP_END +void nmg5_state::nmg5_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x120000, 0x12ffff).ram(); + map(0x140000, 0x1407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x160000, 0x1607ff).ram().share("spriteram"); + map(0x180000, 0x180001).w(this, FUNC(nmg5_state::nmg5_soundlatch_w)); + map(0x180002, 0x180003).nopw(); + map(0x180004, 0x180005).rw(this, FUNC(nmg5_state::prot_r), FUNC(nmg5_state::prot_w)); + map(0x180006, 0x180007).w(this, FUNC(nmg5_state::gfx_bank_w)); + map(0x180008, 0x180009).portr("DSW"); + map(0x18000a, 0x18000b).portr("SYSTEM"); + map(0x18000c, 0x18000d).portr("INPUTS"); + map(0x18000e, 0x18000f).w(this, FUNC(nmg5_state::priority_reg_w)); + map(0x300002, 0x300009).writeonly().share("scroll_ram"); + map(0x30000a, 0x30000f).nopw(); + map(0x320000, 0x321fff).ram().w(this, FUNC(nmg5_state::bg_videoram_w)).share("bg_videoram"); + map(0x322000, 0x323fff).ram().w(this, FUNC(nmg5_state::fg_videoram_w)).share("fg_videoram"); + map(0x800000, 0x80ffff).ram().share("bitmap"); +} + +void nmg5_state::pclubys_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x200000, 0x20ffff).ram(); + map(0x440000, 0x4407ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x460000, 0x4607ff).ram().share("spriteram"); + map(0x480000, 0x480001).w(this, FUNC(nmg5_state::nmg5_soundlatch_w)); + map(0x480002, 0x480003).nopw(); + map(0x480004, 0x480005).rw(this, FUNC(nmg5_state::prot_r), FUNC(nmg5_state::prot_w)); + map(0x480006, 0x480007).w(this, FUNC(nmg5_state::gfx_bank_w)); + map(0x480008, 0x480009).portr("DSW"); + map(0x48000a, 0x48000b).portr("SYSTEM"); + map(0x48000c, 0x48000d).portr("INPUTS"); + map(0x48000e, 0x48000f).w(this, FUNC(nmg5_state::priority_reg_w)); + map(0x500002, 0x500009).writeonly().share("scroll_ram"); + map(0x520000, 0x521fff).ram().w(this, FUNC(nmg5_state::bg_videoram_w)).share("bg_videoram"); + map(0x522000, 0x523fff).ram().w(this, FUNC(nmg5_state::fg_videoram_w)).share("fg_videoram"); + map(0x800000, 0x80ffff).ram().share("bitmap"); +} /******************************************************************* @@ -412,23 +414,26 @@ ADDRESS_MAP_END ********************************************************************/ -ADDRESS_MAP_START(nmg5_state::nmg5_sound_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmg5_state::pclubys_sound_map) - AM_RANGE(0x0000, 0xf7ff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nmg5_state::sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(oki_banking_w) - AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) - AM_RANGE(0x18, 0x18) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1c, 0x1c) AM_DEVREADWRITE("oki", okim6295_device, read, write) -ADDRESS_MAP_END +void nmg5_state::nmg5_sound_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xe7ff).ram(); +} + +void nmg5_state::pclubys_sound_map(address_map &map) +{ + map(0x0000, 0xf7ff).rom(); + map(0xf800, 0xffff).ram(); +} + +void nmg5_state::sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).w(this, FUNC(nmg5_state::oki_banking_w)); + map(0x10, 0x11).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); + map(0x18, 0x18).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x1c, 0x1c).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} static INPUT_PORTS_START( nmg5 ) PORT_START("DSW") |