diff options
Diffstat (limited to 'src/mame/drivers/taitosj.cpp')
-rw-r--r-- | src/mame/drivers/taitosj.cpp | 188 |
1 files changed, 96 insertions, 92 deletions
diff --git a/src/mame/drivers/taitosj.cpp b/src/mame/drivers/taitosj.cpp index 275285baa36..194cf5fe6dd 100644 --- a/src/mame/drivers/taitosj.cpp +++ b/src/mame/drivers/taitosj.cpp @@ -202,51 +202,53 @@ CUSTOM_INPUT_MEMBER(taitosj_state::input_port_4_f0_r) } -ADDRESS_MAP_START(taitosj_state::taitosj_main_nomcu_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07fe) AM_READWRITE(taitosj_fake_data_r, taitosj_fake_data_w) - AM_RANGE(0x8801, 0x8801) AM_MIRROR(0x07fe) AM_READ(taitosj_fake_status_r) - AM_RANGE(0x9000, 0xbfff) AM_WRITE(taitosj_characterram_w) AM_SHARE("characterram") - AM_RANGE(0xc000, 0xc3ff) AM_RAM - AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("videoram_1") - AM_RANGE(0xc800, 0xcbff) AM_RAM AM_SHARE("videoram_2") - AM_RANGE(0xcc00, 0xcfff) AM_RAM AM_SHARE("videoram_3") - AM_RANGE(0xd000, 0xd05f) AM_RAM AM_SHARE("colscrolly") - AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd200, 0xd27f) AM_MIRROR(0x0080) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0xd300, 0xd300) AM_MIRROR(0x00ff) AM_WRITEONLY AM_SHARE("video_priority") - AM_RANGE(0xd400, 0xd403) AM_MIRROR(0x00f0) AM_READONLY AM_SHARE("collision_reg") - AM_RANGE(0xd404, 0xd404) AM_MIRROR(0x00f3) AM_READ(taitosj_gfxrom_r) - AM_RANGE(0xd408, 0xd408) AM_MIRROR(0x00f0) AM_READ_PORT("IN0") - AM_RANGE(0xd409, 0xd409) AM_MIRROR(0x00f0) AM_READ_PORT("IN1") - AM_RANGE(0xd40a, 0xd40a) AM_MIRROR(0x00f0) AM_READ_PORT("DSW1") /* DSW1 */ - AM_RANGE(0xd40b, 0xd40b) AM_MIRROR(0x00f0) AM_READ_PORT("IN2") - AM_RANGE(0xd40c, 0xd40c) AM_MIRROR(0x00f0) AM_READ_PORT("IN3") /* Service */ - AM_RANGE(0xd40d, 0xd40d) AM_MIRROR(0x00f0) AM_READ_PORT("IN4") - AM_RANGE(0xd40e, 0xd40f) AM_MIRROR(0x00f0) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xd40f, 0xd40f) AM_MIRROR(0x00f0) AM_DEVREAD("ay1", ay8910_device, data_r) /* DSW2 and DSW3 */ - AM_RANGE(0xd500, 0xd505) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0xd506, 0xd507) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("colorbank") - AM_RANGE(0xd508, 0xd508) AM_MIRROR(0x00f0) AM_WRITE(taitosj_collision_reg_clear_w) - AM_RANGE(0xd509, 0xd50a) AM_MIRROR(0x00f0) AM_WRITEONLY AM_SHARE("gfxpointer") - AM_RANGE(0xd50b, 0xd50b) AM_MIRROR(0x00f0) AM_WRITE(soundlatch_w) - AM_RANGE(0xd50c, 0xd50c) AM_MIRROR(0x00f0) AM_WRITE(sound_semaphore2_w) - AM_RANGE(0xd50d, 0xd50d) AM_MIRROR(0x00f0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xd50e, 0xd50e) AM_MIRROR(0x00f0) AM_WRITE(taitosj_bankswitch_w) - AM_RANGE(0xd50f, 0xd50f) AM_MIRROR(0x00f0) AM_WRITENOP - AM_RANGE(0xd600, 0xd600) AM_MIRROR(0x00ff) AM_WRITEONLY AM_SHARE("video_mode") - AM_RANGE(0xd700, 0xdfff) AM_NOP - AM_RANGE(0xe000, 0xffff) AM_ROM -ADDRESS_MAP_END +void taitosj_state::taitosj_main_nomcu_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).bankr("bank1"); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8800).mirror(0x07fe).rw(this, FUNC(taitosj_state::taitosj_fake_data_r), FUNC(taitosj_state::taitosj_fake_data_w)); + map(0x8801, 0x8801).mirror(0x07fe).r(this, FUNC(taitosj_state::taitosj_fake_status_r)); + map(0x9000, 0xbfff).w(this, FUNC(taitosj_state::taitosj_characterram_w)).share("characterram"); + map(0xc000, 0xc3ff).ram(); + map(0xc400, 0xc7ff).ram().share("videoram_1"); + map(0xc800, 0xcbff).ram().share("videoram_2"); + map(0xcc00, 0xcfff).ram().share("videoram_3"); + map(0xd000, 0xd05f).ram().share("colscrolly"); + map(0xd100, 0xd1ff).ram().share("spriteram"); + map(0xd200, 0xd27f).mirror(0x0080).ram().share("paletteram"); + map(0xd300, 0xd300).mirror(0x00ff).writeonly().share("video_priority"); + map(0xd400, 0xd403).mirror(0x00f0).readonly().share("collision_reg"); + map(0xd404, 0xd404).mirror(0x00f3).r(this, FUNC(taitosj_state::taitosj_gfxrom_r)); + map(0xd408, 0xd408).mirror(0x00f0).portr("IN0"); + map(0xd409, 0xd409).mirror(0x00f0).portr("IN1"); + map(0xd40a, 0xd40a).mirror(0x00f0).portr("DSW1"); /* DSW1 */ + map(0xd40b, 0xd40b).mirror(0x00f0).portr("IN2"); + map(0xd40c, 0xd40c).mirror(0x00f0).portr("IN3"); /* Service */ + map(0xd40d, 0xd40d).mirror(0x00f0).portr("IN4"); + map(0xd40e, 0xd40f).mirror(0x00f0).w(m_ay1, FUNC(ay8910_device::address_data_w)); + map(0xd40f, 0xd40f).mirror(0x00f0).r(m_ay1, FUNC(ay8910_device::data_r)); /* DSW2 and DSW3 */ + map(0xd500, 0xd505).mirror(0x00f0).writeonly().share("scroll"); + map(0xd506, 0xd507).mirror(0x00f0).writeonly().share("colorbank"); + map(0xd508, 0xd508).mirror(0x00f0).w(this, FUNC(taitosj_state::taitosj_collision_reg_clear_w)); + map(0xd509, 0xd50a).mirror(0x00f0).writeonly().share("gfxpointer"); + map(0xd50b, 0xd50b).mirror(0x00f0).w(this, FUNC(taitosj_state::soundlatch_w)); + map(0xd50c, 0xd50c).mirror(0x00f0).w(this, FUNC(taitosj_state::sound_semaphore2_w)); + map(0xd50d, 0xd50d).mirror(0x00f0).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xd50e, 0xd50e).mirror(0x00f0).w(this, FUNC(taitosj_state::taitosj_bankswitch_w)); + map(0xd50f, 0xd50f).mirror(0x00f0).nopw(); + map(0xd600, 0xd600).mirror(0x00ff).writeonly().share("video_mode"); + map(0xd700, 0xdfff).noprw(); + map(0xe000, 0xffff).rom(); +} /* only difference is taitosj_fake_ replaced with taitosj_mcu_ */ -ADDRESS_MAP_START(taitosj_state::taitosj_main_mcu_map) - AM_IMPORT_FROM( taitosj_main_nomcu_map ) - AM_RANGE(0x8800, 0x8801) AM_MIRROR(0x07fe) AM_DEVREADWRITE("bmcu", taito_sj_security_mcu_device, data_r, data_w) -ADDRESS_MAP_END +void taitosj_state::taitosj_main_mcu_map(address_map &map) +{ + taitosj_main_nomcu_map(map); + map(0x8800, 0x8801).mirror(0x07fe).rw(m_mcu, FUNC(taito_sj_security_mcu_device::data_r), FUNC(taito_sj_security_mcu_device::data_w)); +} @@ -272,43 +274,44 @@ CUSTOM_INPUT_MEMBER(taitosj_state::kikstart_gear_r) } // TODO: merge with above -ADDRESS_MAP_START(taitosj_state::kikstart_main_map) - AM_RANGE(0x0000, 0x5fff) AM_ROM - AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1") - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("bmcu", taito_sj_security_mcu_device, data_r, data_w) - AM_RANGE(0x8802, 0x8802) AM_NOP - AM_RANGE(0x8a00, 0x8a5f) AM_WRITEONLY AM_SHARE("colscrolly") - AM_RANGE(0x9000, 0xbfff) AM_WRITE(taitosj_characterram_w) AM_SHARE("characterram") - AM_RANGE(0xc000, 0xc3ff) AM_RAM - AM_RANGE(0xc400, 0xc7ff) AM_RAM AM_SHARE("videoram_1") - AM_RANGE(0xc800, 0xcbff) AM_RAM AM_SHARE("videoram_2") - AM_RANGE(0xcc00, 0xcfff) AM_RAM AM_SHARE("videoram_3") - AM_RANGE(0xd000, 0xd001) AM_WRITEONLY AM_SHARE("colorbank") - AM_RANGE(0xd002, 0xd007) AM_WRITEONLY AM_SHARE("scroll") - AM_RANGE(0xd100, 0xd1ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0xd200, 0xd27f) AM_RAM AM_SHARE("paletteram") - AM_RANGE(0xd300, 0xd300) AM_WRITEONLY AM_SHARE("video_priority") - AM_RANGE(0xd400, 0xd403) AM_READONLY AM_SHARE("collision_reg") - AM_RANGE(0xd404, 0xd404) AM_READ(taitosj_gfxrom_r) - AM_RANGE(0xd408, 0xd408) AM_MIRROR(0x00f0) AM_READ_PORT("IN0") - AM_RANGE(0xd409, 0xd409) AM_MIRROR(0x00f0) AM_READ_PORT("IN1") - AM_RANGE(0xd40a, 0xd40a) AM_MIRROR(0x00f0) AM_READ_PORT("DSW1") /* DSW1 */ - AM_RANGE(0xd40b, 0xd40b) AM_MIRROR(0x00f0) AM_READ_PORT("IN2") - AM_RANGE(0xd40c, 0xd40c) AM_MIRROR(0x00f0) AM_READ_PORT("IN3") /* Service */ - AM_RANGE(0xd40d, 0xd40d) AM_MIRROR(0x00f0) AM_READ_PORT("IN4") - AM_RANGE(0xd40e, 0xd40f) AM_DEVWRITE("ay1", ay8910_device, address_data_w) - AM_RANGE(0xd40f, 0xd40f) AM_DEVREAD("ay1", ay8910_device, data_r) /* DSW2 and DSW3 */ - AM_RANGE(0xd508, 0xd508) AM_WRITE(taitosj_collision_reg_clear_w) - AM_RANGE(0xd509, 0xd50a) AM_WRITEONLY AM_SHARE("gfxpointer") - AM_RANGE(0xd50b, 0xd50b) AM_WRITE(soundlatch_w) - AM_RANGE(0xd50c, 0xd50c) AM_WRITE(sound_semaphore2_w) - AM_RANGE(0xd50d, 0xd50d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) - AM_RANGE(0xd50e, 0xd50e) AM_WRITE(taitosj_bankswitch_w) - AM_RANGE(0xd600, 0xd600) AM_WRITEONLY AM_SHARE("video_mode") - AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("kikstart_scroll")// scroll ram + ??? - AM_RANGE(0xe000, 0xefff) AM_ROM -ADDRESS_MAP_END +void taitosj_state::kikstart_main_map(address_map &map) +{ + map(0x0000, 0x5fff).rom(); + map(0x6000, 0x7fff).bankr("bank1"); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw(m_mcu, FUNC(taito_sj_security_mcu_device::data_r), FUNC(taito_sj_security_mcu_device::data_w)); + map(0x8802, 0x8802).noprw(); + map(0x8a00, 0x8a5f).writeonly().share("colscrolly"); + map(0x9000, 0xbfff).w(this, FUNC(taitosj_state::taitosj_characterram_w)).share("characterram"); + map(0xc000, 0xc3ff).ram(); + map(0xc400, 0xc7ff).ram().share("videoram_1"); + map(0xc800, 0xcbff).ram().share("videoram_2"); + map(0xcc00, 0xcfff).ram().share("videoram_3"); + map(0xd000, 0xd001).writeonly().share("colorbank"); + map(0xd002, 0xd007).writeonly().share("scroll"); + map(0xd100, 0xd1ff).ram().share("spriteram"); + map(0xd200, 0xd27f).ram().share("paletteram"); + map(0xd300, 0xd300).writeonly().share("video_priority"); + map(0xd400, 0xd403).readonly().share("collision_reg"); + map(0xd404, 0xd404).r(this, FUNC(taitosj_state::taitosj_gfxrom_r)); + map(0xd408, 0xd408).mirror(0x00f0).portr("IN0"); + map(0xd409, 0xd409).mirror(0x00f0).portr("IN1"); + map(0xd40a, 0xd40a).mirror(0x00f0).portr("DSW1"); /* DSW1 */ + map(0xd40b, 0xd40b).mirror(0x00f0).portr("IN2"); + map(0xd40c, 0xd40c).mirror(0x00f0).portr("IN3"); /* Service */ + map(0xd40d, 0xd40d).mirror(0x00f0).portr("IN4"); + map(0xd40e, 0xd40f).w(m_ay1, FUNC(ay8910_device::address_data_w)); + map(0xd40f, 0xd40f).r(m_ay1, FUNC(ay8910_device::data_r)); /* DSW2 and DSW3 */ + map(0xd508, 0xd508).w(this, FUNC(taitosj_state::taitosj_collision_reg_clear_w)); + map(0xd509, 0xd50a).writeonly().share("gfxpointer"); + map(0xd50b, 0xd50b).w(this, FUNC(taitosj_state::soundlatch_w)); + map(0xd50c, 0xd50c).w(this, FUNC(taitosj_state::sound_semaphore2_w)); + map(0xd50d, 0xd50d).w("watchdog", FUNC(watchdog_timer_device::reset_w)); + map(0xd50e, 0xd50e).w(this, FUNC(taitosj_state::taitosj_bankswitch_w)); + map(0xd600, 0xd600).writeonly().share("video_mode"); + map(0xd800, 0xdfff).ram().share("kikstart_scroll");// scroll ram + ??? + map(0xe000, 0xefff).rom(); +} TIMER_CALLBACK_MEMBER(taitosj_state::soundlatch_w_cb) { @@ -368,19 +371,20 @@ WRITE8_MEMBER(taitosj_state::sound_semaphore2_clear_w) } -ADDRESS_MAP_START(taitosj_state::taitosj_audio_map) - AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0x43ff) AM_RAM - AM_RANGE(0x4800, 0x4801) AM_MIRROR(0x07f8) AM_DEVWRITE("ay2", ay8910_device, address_data_w) - AM_RANGE(0x4801, 0x4801) AM_MIRROR(0x07f8) AM_DEVREAD("ay2", ay8910_device, data_r) - AM_RANGE(0x4802, 0x4803) AM_MIRROR(0x07f8) AM_DEVWRITE("ay3", ay8910_device, address_data_w) - AM_RANGE(0x4803, 0x4803) AM_MIRROR(0x07f8) AM_DEVREAD("ay3", ay8910_device, data_r) - AM_RANGE(0x4804, 0x4805) AM_MIRROR(0x07fa) AM_DEVWRITE("ay4", ay8910_device, address_data_w) - AM_RANGE(0x4805, 0x4805) AM_MIRROR(0x07fa) AM_DEVREAD("ay4", ay8910_device, data_r) - AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x07fc) AM_READWRITE(soundlatch_r, soundlatch_clear7_w) - AM_RANGE(0x5001, 0x5001) AM_MIRROR(0x07fc) AM_READWRITE(soundlatch_flags_r, sound_semaphore2_clear_w) - AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM */ -ADDRESS_MAP_END +void taitosj_state::taitosj_audio_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x43ff).ram(); + map(0x4800, 0x4801).mirror(0x07f8).w(m_ay2, FUNC(ay8910_device::address_data_w)); + map(0x4801, 0x4801).mirror(0x07f8).r(m_ay2, FUNC(ay8910_device::data_r)); + map(0x4802, 0x4803).mirror(0x07f8).w(m_ay3, FUNC(ay8910_device::address_data_w)); + map(0x4803, 0x4803).mirror(0x07f8).r(m_ay3, FUNC(ay8910_device::data_r)); + map(0x4804, 0x4805).mirror(0x07fa).w(m_ay4, FUNC(ay8910_device::address_data_w)); + map(0x4805, 0x4805).mirror(0x07fa).r(m_ay4, FUNC(ay8910_device::data_r)); + map(0x5000, 0x5000).mirror(0x07fc).rw(this, FUNC(taitosj_state::soundlatch_r), FUNC(taitosj_state::soundlatch_clear7_w)); + map(0x5001, 0x5001).mirror(0x07fc).rw(this, FUNC(taitosj_state::soundlatch_flags_r), FUNC(taitosj_state::sound_semaphore2_clear_w)); + map(0xe000, 0xefff).rom(); /* space for diagnostic ROM */ +} #define DSW2_PORT \ |