diff options
Diffstat (limited to 'src/mame/drivers/nightgal.cpp')
-rw-r--r-- | src/mame/drivers/nightgal.cpp | 176 |
1 files changed, 94 insertions, 82 deletions
diff --git a/src/mame/drivers/nightgal.cpp b/src/mame/drivers/nightgal.cpp index 0cb1b05d085..1594859a31d 100644 --- a/src/mame/drivers/nightgal.cpp +++ b/src/mame/drivers/nightgal.cpp @@ -364,13 +364,14 @@ WRITE8_MEMBER(nightgal_state::output_w) * Common ********************************/ -ADDRESS_MAP_START(nightgal_state::common_nsc_map) - AM_RANGE(0x0000, 0x007f) AM_RAM - AM_RANGE(0x0080, 0x0080) AM_READ_PORT("BLIT_PORT") - AM_RANGE(0x0081, 0x0083) AM_READ(royalqn_nsc_blit_r) - AM_RANGE(0x00a0, 0x00af) AM_DEVWRITE("blitter", jangou_blitter_device, vregs_w) - AM_RANGE(0x00b0, 0x00b0) AM_DEVWRITE("blitter", jangou_blitter_device, bltflip_w) -ADDRESS_MAP_END +void nightgal_state::common_nsc_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0x0080, 0x0080).portr("BLIT_PORT"); + map(0x0081, 0x0083).r(this, FUNC(nightgal_state::royalqn_nsc_blit_r)); + map(0x00a0, 0x00af).w(m_blitter, FUNC(jangou_blitter_device::vregs_w)); + map(0x00b0, 0x00b0).w(m_blitter, FUNC(jangou_blitter_device::bltflip_w)); +} /******************************** * Sexy Gal @@ -398,100 +399,111 @@ WRITE8_MEMBER(nightgal_state::sexygal_audionmi_w) } -ADDRESS_MAP_START(nightgal_state::sweetgal_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x807f) AM_RAM AM_SHARE("sound_ram") - AM_RANGE(0xe000, 0xefff) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram") - AM_RANGE(0xf000, 0xffff) AM_RAM -ADDRESS_MAP_END +void nightgal_state::sweetgal_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x807f).ram().share("sound_ram"); + map(0xe000, 0xefff).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram"); + map(0xf000, 0xffff).ram(); +} -ADDRESS_MAP_START(nightgal_state::sexygal_map) - AM_IMPORT_FROM(sweetgal_map) - AM_RANGE(0xa000, 0xa000) AM_WRITE(sexygal_audioff_w) -ADDRESS_MAP_END +void nightgal_state::sexygal_map(address_map &map) +{ + sweetgal_map(map); + map(0xa000, 0xa000).w(this, FUNC(nightgal_state::sexygal_audioff_w)); +} -ADDRESS_MAP_START(nightgal_state::common_sexygal_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x10,0x10) AM_READ_PORT("DSWA") AM_WRITE(output_w) - AM_RANGE(0x11,0x11) AM_READ_PORT("SYSTEM") AM_WRITE(mux_w) - AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE(royalqn_blitter_0_w) - AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWC") AM_WRITE(royalqn_blitter_1_w) - AM_RANGE(0x14,0x14) AM_MIRROR(0xe8) AM_READNOP AM_WRITE(royalqn_blitter_2_w) -ADDRESS_MAP_END +void nightgal_state::common_sexygal_io(address_map &map) +{ + map.global_mask(0xff); + map(0x10, 0x10).portr("DSWA").w(this, FUNC(nightgal_state::output_w)); + map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(nightgal_state::mux_w)); + map(0x12, 0x12).mirror(0xe8).portr("DSWB").w(this, FUNC(nightgal_state::royalqn_blitter_0_w)); + map(0x13, 0x13).mirror(0xe8).portr("DSWC").w(this, FUNC(nightgal_state::royalqn_blitter_1_w)); + map(0x14, 0x14).mirror(0xe8).nopr().w(this, FUNC(nightgal_state::royalqn_blitter_2_w)); +} -ADDRESS_MAP_START(nightgal_state::sexygal_io) - AM_IMPORT_FROM( common_sexygal_io ) +void nightgal_state::sexygal_io(address_map &map) +{ + common_sexygal_io(map); - AM_RANGE(0x00,0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write) -ADDRESS_MAP_END + map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); +} -ADDRESS_MAP_START(nightgal_state::sgaltrop_io) - AM_IMPORT_FROM( common_sexygal_io ) +void nightgal_state::sgaltrop_io(address_map &map) +{ + common_sexygal_io(map); - AM_RANGE(0x01,0x01) AM_DEVREAD("ymsnd", ym2203_device, data_r) - AM_RANGE(0x02,0x03) AM_DEVWRITE("ymsnd", ym2203_device, data_address_w) -ADDRESS_MAP_END + map(0x01, 0x01).r("ymsnd", FUNC(ym2203_device::data_r)); + map(0x02, 0x03).w("ymsnd", FUNC(ym2203_device::data_address_w)); +} -ADDRESS_MAP_START(nightgal_state::sexygal_nsc_map) - AM_IMPORT_FROM( common_nsc_map ) - AM_RANGE(0x0080, 0x0086) AM_DEVICE("blitter",jangou_blitter_device, blit_v2_regs) - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram") - AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM AM_REGION("subrom", 0) -ADDRESS_MAP_END +void nightgal_state::sexygal_nsc_map(address_map &map) +{ + common_nsc_map(map); + map(0x0080, 0x0086).m(m_blitter, FUNC(jangou_blitter_device::blit_v2_regs)); + map(0x1000, 0x13ff).mirror(0x2c00).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram"); + map(0xc000, 0xdfff).mirror(0x2000).rom().region("subrom", 0); +} -ADDRESS_MAP_START(nightgal_state::sgaltrop_nsc_map) - AM_IMPORT_FROM( common_nsc_map ) +void nightgal_state::sgaltrop_nsc_map(address_map &map) +{ + common_nsc_map(map); - AM_RANGE(0x0080, 0x0086) AM_DEVICE("blitter",jangou_blitter_device, blit_v2_regs) - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram") - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("subrom", 0) -ADDRESS_MAP_END + map(0x0080, 0x0086).m(m_blitter, FUNC(jangou_blitter_device::blit_v2_regs)); + map(0x1000, 0x13ff).mirror(0x2c00).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram"); + map(0xc000, 0xffff).rom().region("subrom", 0); +} -ADDRESS_MAP_START(nightgal_state::sexygal_audio_map) - AM_RANGE(0x0000, 0x007f) AM_RAM +void nightgal_state::sexygal_audio_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); - AM_RANGE(0x2000, 0x207f) AM_RAM AM_SHARE("sound_ram") - AM_RANGE(0x3000, 0x3000) AM_WRITE(sexygal_audionmi_w) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audiorom", 0) -ADDRESS_MAP_END + map(0x2000, 0x207f).ram().share("sound_ram"); + map(0x3000, 0x3000).w(this, FUNC(nightgal_state::sexygal_audionmi_w)); + map(0xc000, 0xffff).rom().region("audiorom", 0); +} /******************************** * Royal Queen ********************************/ -ADDRESS_MAP_START(nightgal_state::royalqn_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_NOP - AM_RANGE(0xc000, 0xdfff) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) AM_SHARE("comms_ram") - AM_RANGE(0xe000, 0xffff) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(nightgal_state::royalqn_io) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x01,0x01) AM_MIRROR(0xec) AM_DEVREAD("aysnd", ay8910_device, data_r) - AM_RANGE(0x02,0x03) AM_MIRROR(0xec) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) - AM_RANGE(0x10,0x10) AM_MIRROR(0xe8) AM_READ_PORT("DSWA") AM_WRITE(output_w) - AM_RANGE(0x11,0x11) AM_MIRROR(0xe8) AM_READ_PORT("SYSTEM") AM_WRITE(mux_w) - AM_RANGE(0x12,0x12) AM_MIRROR(0xe8) AM_READ_PORT("DSWB") AM_WRITE(royalqn_blitter_0_w) - AM_RANGE(0x13,0x13) AM_MIRROR(0xe8) AM_READ_PORT("DSWC") AM_WRITE(royalqn_blitter_1_w) - AM_RANGE(0x14,0x14) AM_MIRROR(0xe8) AM_READNOP AM_WRITE(royalqn_blitter_2_w) - AM_RANGE(0x15,0x15) AM_MIRROR(0xe8) AM_NOP - AM_RANGE(0x16,0x16) AM_MIRROR(0xe8) AM_NOP - AM_RANGE(0x17,0x17) AM_MIRROR(0xe8) AM_NOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(nightgal_state::royalqn_nsc_map) - AM_IMPORT_FROM( common_nsc_map ) - - AM_RANGE(0x0080, 0x0086) AM_DEVICE("blitter",jangou_blitter_device, blit_v1_regs) - AM_RANGE(0x1000, 0x13ff) AM_MIRROR(0x2c00) AM_READWRITE(royalqn_comm_r, royalqn_comm_w) - AM_RANGE(0x4000, 0x4000) AM_NOP - AM_RANGE(0x8000, 0x8000) AM_NOP //open bus or protection check - AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x2000) AM_ROM AM_REGION("subrom", 0) -ADDRESS_MAP_END +void nightgal_state::royalqn_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).noprw(); + map(0xc000, 0xdfff).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)).share("comms_ram"); + map(0xe000, 0xffff).ram(); +} + +void nightgal_state::royalqn_io(address_map &map) +{ + map.global_mask(0xff); + map(0x01, 0x01).mirror(0xec).r("aysnd", FUNC(ay8910_device::data_r)); + map(0x02, 0x03).mirror(0xec).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x10, 0x10).mirror(0xe8).portr("DSWA").w(this, FUNC(nightgal_state::output_w)); + map(0x11, 0x11).mirror(0xe8).portr("SYSTEM").w(this, FUNC(nightgal_state::mux_w)); + map(0x12, 0x12).mirror(0xe8).portr("DSWB").w(this, FUNC(nightgal_state::royalqn_blitter_0_w)); + map(0x13, 0x13).mirror(0xe8).portr("DSWC").w(this, FUNC(nightgal_state::royalqn_blitter_1_w)); + map(0x14, 0x14).mirror(0xe8).nopr().w(this, FUNC(nightgal_state::royalqn_blitter_2_w)); + map(0x15, 0x15).mirror(0xe8).noprw(); + map(0x16, 0x16).mirror(0xe8).noprw(); + map(0x17, 0x17).mirror(0xe8).noprw(); +} + +void nightgal_state::royalqn_nsc_map(address_map &map) +{ + common_nsc_map(map); + + map(0x0080, 0x0086).m(m_blitter, FUNC(jangou_blitter_device::blit_v1_regs)); + map(0x1000, 0x13ff).mirror(0x2c00).rw(this, FUNC(nightgal_state::royalqn_comm_r), FUNC(nightgal_state::royalqn_comm_w)); + map(0x4000, 0x4000).noprw(); + map(0x8000, 0x8000).noprw(); //open bus or protection check + map(0xc000, 0xdfff).mirror(0x2000).rom().region("subrom", 0); +} /******************************************** * |