diff options
Diffstat (limited to 'src/mame/drivers/m52.cpp')
-rw-r--r-- | src/mame/drivers/m52.cpp | 85 |
1 files changed, 44 insertions, 41 deletions
diff --git a/src/mame/drivers/m52.cpp b/src/mame/drivers/m52.cpp index 77d7e994e68..9b3d685af48 100644 --- a/src/mame/drivers/m52.cpp +++ b/src/mame/drivers/m52.cpp @@ -60,47 +60,50 @@ * *************************************/ -ADDRESS_MAP_START(m52_state::main_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_READ(m52_protection_r) - AM_RANGE(0xc800, 0xcbff) AM_MIRROR(0x0400) AM_WRITEONLY AM_SHARE("spriteram") - AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07fc) AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0xd001, 0xd001) AM_MIRROR(0x07fc) AM_WRITE(m52_flipscreen_w) /* + coin counters */ - AM_RANGE(0xd000, 0xd000) AM_MIRROR(0x07f8) AM_READ_PORT("IN0") - AM_RANGE(0xd001, 0xd001) AM_MIRROR(0x07f8) AM_READ_PORT("IN1") - AM_RANGE(0xd002, 0xd002) AM_MIRROR(0x07f8) AM_READ_PORT("IN2") - AM_RANGE(0xd003, 0xd003) AM_MIRROR(0x07f8) AM_READ_PORT("DSW1") - AM_RANGE(0xd004, 0xd004) AM_MIRROR(0x07f8) AM_READ_PORT("DSW2") - AM_RANGE(0xe000, 0xe7ff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(m52_state::alpha1v_map) - AM_RANGE(0x0000, 0x6fff) AM_ROM - AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(m52_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(m52_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07ff) AM_READ(m52_protection_r) // result is ignored - AM_RANGE(0xc800, 0xc9ff) AM_WRITEONLY AM_SHARE("spriteram") // bigger or mirrored? - AM_RANGE(0xd000, 0xd000) AM_READ_PORT("IN0") AM_DEVWRITE("irem_audio", irem_audio_device, cmd_w) - AM_RANGE(0xd001, 0xd001) AM_READ_PORT("IN1") AM_WRITE(alpha1v_flipscreen_w) - AM_RANGE(0xd002, 0xd002) AM_READ_PORT("IN2") - AM_RANGE(0xd003, 0xd003) AM_READ_PORT("DSW1") - AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW2") - AM_RANGE(0xe000, 0xefff) AM_RAM // bigger or mirrored? -ADDRESS_MAP_END - - -ADDRESS_MAP_START(m52_state::main_portmap) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_MIRROR(0x1f) AM_WRITE(m52_scroll_w) - AM_RANGE(0x40, 0x40) AM_MIRROR(0x1f) AM_WRITE(m52_bg1xpos_w) - AM_RANGE(0x60, 0x60) AM_MIRROR(0x1f) AM_WRITE(m52_bg1ypos_w) - AM_RANGE(0x80, 0x80) AM_MIRROR(0x1f) AM_WRITE(m52_bg2xpos_w) - AM_RANGE(0xa0, 0xa0) AM_MIRROR(0x1f) AM_WRITE(m52_bg2ypos_w) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x1f) AM_WRITE(m52_bgcontrol_w) -ADDRESS_MAP_END +void m52_state::main_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x8000, 0x83ff).ram().w(this, FUNC(m52_state::m52_videoram_w)).share("videoram"); + map(0x8400, 0x87ff).ram().w(this, FUNC(m52_state::m52_colorram_w)).share("colorram"); + map(0x8800, 0x8800).mirror(0x07ff).r(this, FUNC(m52_state::m52_protection_r)); + map(0xc800, 0xcbff).mirror(0x0400).writeonly().share("spriteram"); + map(0xd000, 0xd000).mirror(0x07fc).w("irem_audio", FUNC(irem_audio_device::cmd_w)); + map(0xd001, 0xd001).mirror(0x07fc).w(this, FUNC(m52_state::m52_flipscreen_w)); /* + coin counters */ + map(0xd000, 0xd000).mirror(0x07f8).portr("IN0"); + map(0xd001, 0xd001).mirror(0x07f8).portr("IN1"); + map(0xd002, 0xd002).mirror(0x07f8).portr("IN2"); + map(0xd003, 0xd003).mirror(0x07f8).portr("DSW1"); + map(0xd004, 0xd004).mirror(0x07f8).portr("DSW2"); + map(0xe000, 0xe7ff).ram(); +} + + +void m52_state::alpha1v_map(address_map &map) +{ + map(0x0000, 0x6fff).rom(); + map(0x8000, 0x83ff).ram().w(this, FUNC(m52_state::m52_videoram_w)).share("videoram"); + map(0x8400, 0x87ff).ram().w(this, FUNC(m52_state::m52_colorram_w)).share("colorram"); + map(0x8800, 0x8800).mirror(0x07ff).r(this, FUNC(m52_state::m52_protection_r)); // result is ignored + map(0xc800, 0xc9ff).writeonly().share("spriteram"); // bigger or mirrored? + map(0xd000, 0xd000).portr("IN0").w("irem_audio", FUNC(irem_audio_device::cmd_w)); + map(0xd001, 0xd001).portr("IN1").w(this, FUNC(m52_state::alpha1v_flipscreen_w)); + map(0xd002, 0xd002).portr("IN2"); + map(0xd003, 0xd003).portr("DSW1"); + map(0xd004, 0xd004).portr("DSW2"); + map(0xe000, 0xefff).ram(); // bigger or mirrored? +} + + +void m52_state::main_portmap(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).mirror(0x1f).w(this, FUNC(m52_state::m52_scroll_w)); + map(0x40, 0x40).mirror(0x1f).w(this, FUNC(m52_state::m52_bg1xpos_w)); + map(0x60, 0x60).mirror(0x1f).w(this, FUNC(m52_state::m52_bg1ypos_w)); + map(0x80, 0x80).mirror(0x1f).w(this, FUNC(m52_state::m52_bg2xpos_w)); + map(0xa0, 0xa0).mirror(0x1f).w(this, FUNC(m52_state::m52_bg2ypos_w)); + map(0xc0, 0xc0).mirror(0x1f).w(this, FUNC(m52_state::m52_bgcontrol_w)); +} |