summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/taitosj.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/taitosj.cpp')
-rw-r--r--src/mame/drivers/taitosj.cpp188
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 \