summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/taito_l.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/taito_l.cpp')
-rw-r--r--src/mame/drivers/taito_l.cpp424
1 files changed, 224 insertions, 200 deletions
diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp
index e12b2e3cecc..11d1022c85a 100644
--- a/src/mame/drivers/taito_l.cpp
+++ b/src/mame/drivers/taito_l.cpp
@@ -377,68 +377,75 @@ WRITE8_MEMBER(champwr_state::msm5205_volume_w)
}
-ADDRESS_MAP_START(taitol_state::common_banks_map)
- AM_RANGE(0x0000, 0x5fff) AM_ROM
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("mainbank")
- AM_RANGE(0xc000, 0xcfff) AM_DEVICE("rambank1", address_map_bank_device, amap8)
- AM_RANGE(0xd000, 0xdfff) AM_DEVICE("rambank2", address_map_bank_device, amap8)
- AM_RANGE(0xe000, 0xefff) AM_DEVICE("rambank3", address_map_bank_device, amap8)
- AM_RANGE(0xf000, 0xfdff) AM_DEVICE("rambank4", address_map_bank_device, amap8)
- AM_RANGE(0xfe00, 0xfe03) AM_READWRITE(taitol_bankc_r, taitol_bankc_w)
- AM_RANGE(0xfe04, 0xfe04) AM_READWRITE(taitol_control_r, taitol_control_w)
- AM_RANGE(0xff00, 0xff02) AM_READWRITE(irq_adr_r, irq_adr_w)
- AM_RANGE(0xff03, 0xff03) AM_READWRITE(irq_enable_r, irq_enable_w)
- AM_RANGE(0xff04, 0xff07) AM_READWRITE(rambankswitch_r, rambankswitch_w)
- AM_RANGE(0xff08, 0xff08) AM_READWRITE(rombankswitch_r, rombankswitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitol_state::tc0090lvc_map)
- AM_RANGE(0x10000, 0x1ffff) AM_RAM_WRITE(vram_w) AM_SHARE("vram")
- AM_RANGE(0x80000, 0x801ff) AM_MIRROR(0x00e00) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(fhawk_state::fhawk_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xa000, 0xbfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fhawk_state::fhawk_2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("slavebank")
- AM_RANGE(0xc000, 0xc000) AM_WRITE(rombank2switch_w)
- AM_RANGE(0xc800, 0xc800) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, master_port_w)
- AM_RANGE(0xc801, 0xc801) AM_DEVREADWRITE("ciu", pc060ha_device, master_comm_r, master_comm_w)
- AM_RANGE(0xd000, 0xd007) AM_DEVREADWRITE("tc0220ioc", tc0220ioc_device, read, write)
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(fhawk_state::fhawk_3_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank")
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitol_2cpu_state::raimais_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x87ff) AM_DEVREADWRITE("dpram", mb8421_device, right_r, right_w)
- AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("tc0040ioc", tc0040ioc_device, read, write)
- AM_RANGE(0x8c00, 0x8c00) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, master_port_w)
- AM_RANGE(0x8c01, 0x8c01) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, master_comm_r, master_comm_w)
- AM_RANGE(0xa000, 0xbfff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitol_2cpu_state::raimais_2_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w)
-ADDRESS_MAP_END
+void taitol_state::common_banks_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7fff).bankr("mainbank");
+ map(0xc000, 0xcfff).m("rambank1", FUNC(address_map_bank_device::amap8));
+ map(0xd000, 0xdfff).m("rambank2", FUNC(address_map_bank_device::amap8));
+ map(0xe000, 0xefff).m("rambank3", FUNC(address_map_bank_device::amap8));
+ map(0xf000, 0xfdff).m("rambank4", FUNC(address_map_bank_device::amap8));
+ map(0xfe00, 0xfe03).rw(this, FUNC(taitol_state::taitol_bankc_r), FUNC(taitol_state::taitol_bankc_w));
+ map(0xfe04, 0xfe04).rw(this, FUNC(taitol_state::taitol_control_r), FUNC(taitol_state::taitol_control_w));
+ map(0xff00, 0xff02).rw(this, FUNC(taitol_state::irq_adr_r), FUNC(taitol_state::irq_adr_w));
+ map(0xff03, 0xff03).rw(this, FUNC(taitol_state::irq_enable_r), FUNC(taitol_state::irq_enable_w));
+ map(0xff04, 0xff07).rw(this, FUNC(taitol_state::rambankswitch_r), FUNC(taitol_state::rambankswitch_w));
+ map(0xff08, 0xff08).rw(this, FUNC(taitol_state::rombankswitch_r), FUNC(taitol_state::rombankswitch_w));
+}
+
+
+void taitol_state::tc0090lvc_map(address_map &map)
+{
+ map(0x10000, 0x1ffff).ram().w(this, FUNC(taitol_state::vram_w)).share("vram");
+ map(0x80000, 0x801ff).mirror(0x00e00).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
+}
+
+
+void fhawk_state::fhawk_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram().share("share1");
+ map(0xa000, 0xbfff).ram();
+}
+
+void fhawk_state::fhawk_2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("slavebank");
+ map(0xc000, 0xc000).w(this, FUNC(fhawk_state::rombank2switch_w));
+ map(0xc800, 0xc800).nopr().w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0xc801, 0xc801).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xd000, 0xd007).rw("tc0220ioc", FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write));
+ map(0xe000, 0xffff).ram().share("share1");
+}
+
+void fhawk_state::fhawk_3_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("audiobank");
+ map(0x8000, 0x9fff).ram();
+ map(0xe000, 0xe000).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xe001, 0xe001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xf000, 0xf001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
+
+
+void taitol_2cpu_state::raimais_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x87ff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w));
+ map(0x8800, 0x8801).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write));
+ map(0x8c00, 0x8c00).nopr().w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
+ map(0x8c01, 0x8c01).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
+ map(0xa000, 0xbfff).ram();
+}
+
+void taitol_2cpu_state::raimais_2_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe7ff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+}
WRITE8_MEMBER(taitol_2cpu_state::sound_bankswitch_w)
@@ -446,147 +453,164 @@ WRITE8_MEMBER(taitol_2cpu_state::sound_bankswitch_w)
m_audio_bnk->set_entry(data & 0x03);
}
-ADDRESS_MAP_START(taitol_2cpu_state::raimais_3_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0xe200, 0xe200) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
- AM_RANGE(0xe201, 0xe201) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
- AM_RANGE(0xe600, 0xe600) AM_WRITENOP /* ? */
- AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
- AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(champwr_state::champwr_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(champwr_state::champwr_2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("slavebank")
- AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xe000, 0xe007) AM_DEVREADWRITE("tc0220ioc", tc0220ioc_device, read, write)
- AM_RANGE(0xe008, 0xe00f) AM_READNOP
- AM_RANGE(0xe800, 0xe800) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, master_port_w)
- AM_RANGE(0xe801, 0xe801) AM_DEVREADWRITE("ciu", pc060ha_device, master_comm_r, master_comm_w)
- AM_RANGE(0xf000, 0xf000) AM_READWRITE(rombank2switch_r, rombank2switch_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(champwr_state::champwr_3_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("audiobank")
- AM_RANGE(0x8000, 0x8fff) AM_RAM
- AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE("ciu", pc060ha_device, slave_port_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("ciu", pc060ha_device, slave_comm_r, slave_comm_w)
- AM_RANGE(0xb000, 0xb000) AM_WRITE(msm5205_hi_w)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(msm5205_lo_w)
- AM_RANGE(0xd000, 0xd000) AM_WRITE(msm5205_start_w)
- AM_RANGE(0xe000, 0xe000) AM_WRITE(msm5205_stop_w)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(taitol_2cpu_state::kurikint_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa7ff) AM_DEVREADWRITE("dpram", mb8421_device, right_r, right_w)
- AM_RANGE(0xa800, 0xa801) AM_DEVREADWRITE("tc0040ioc", tc0040ioc_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitol_2cpu_state::kurikint_2_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w)
- AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
-
-
-
-ADDRESS_MAP_START(taitol_1cpu_state::puzznic_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write)
- AM_RANGE(0xa800, 0xa800) AM_READNOP // Watchdog
- AM_RANGE(0xb800, 0xb800) AM_DEVREADWRITE("mcu", arkanoid_68705p3_device, data_r, data_w)
- AM_RANGE(0xb801, 0xb801) AM_READWRITE(mcu_control_r, mcu_control_w)
- AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP // Control register, function unknown
-ADDRESS_MAP_END
+void taitol_2cpu_state::raimais_3_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("audiobank");
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
+ map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
+ map(0xe400, 0xe403).nopw(); /* pan */
+ map(0xe600, 0xe600).nopw(); /* ? */
+ map(0xee00, 0xee00).nopw(); /* ? */
+ map(0xf000, 0xf000).nopw(); /* ? */
+ map(0xf200, 0xf200).w(this, FUNC(taitol_2cpu_state::sound_bankswitch_w));
+}
+
+
+void champwr_state::champwr_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xbfff).ram().share("share1");
+}
+
+void champwr_state::champwr_2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("slavebank");
+ map(0xc000, 0xdfff).ram().share("share1");
+ map(0xe000, 0xe007).rw("tc0220ioc", FUNC(tc0220ioc_device::read), FUNC(tc0220ioc_device::write));
+ map(0xe008, 0xe00f).nopr();
+ map(0xe800, 0xe800).nopr().w("ciu", FUNC(pc060ha_device::master_port_w));
+ map(0xe801, 0xe801).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
+ map(0xf000, 0xf000).rw(this, FUNC(champwr_state::rombank2switch_r), FUNC(champwr_state::rombank2switch_w));
+}
+
+void champwr_state::champwr_3_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x7fff).bankr("audiobank");
+ map(0x8000, 0x8fff).ram();
+ map(0x9000, 0x9001).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa000, 0xa000).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w));
+ map(0xa001, 0xa001).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
+ map(0xb000, 0xb000).w(this, FUNC(champwr_state::msm5205_hi_w));
+ map(0xc000, 0xc000).w(this, FUNC(champwr_state::msm5205_lo_w));
+ map(0xd000, 0xd000).w(this, FUNC(champwr_state::msm5205_start_w));
+ map(0xe000, 0xe000).w(this, FUNC(champwr_state::msm5205_stop_w));
+}
+
+
+
+void taitol_2cpu_state::kurikint_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa7ff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w));
+ map(0xa800, 0xa801).rw("tc0040ioc", FUNC(tc0040ioc_device::read), FUNC(tc0040ioc_device::write));
+}
+
+void taitol_2cpu_state::kurikint_2_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe7ff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ map(0xe800, 0xe801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
+
+
+
+void taitol_1cpu_state::puzznic_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).r(this, FUNC(taitol_1cpu_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write));
+ map(0xa800, 0xa800).nopr(); // Watchdog
+ map(0xb800, 0xb800).rw("mcu", FUNC(arkanoid_68705p3_device::data_r), FUNC(arkanoid_68705p3_device::data_w));
+ map(0xb801, 0xb801).rw(this, FUNC(taitol_1cpu_state::mcu_control_r), FUNC(taitol_1cpu_state::mcu_control_w));
+ map(0xbc00, 0xbc00).nopw(); // Control register, function unknown
+}
/* bootleg, doesn't have the MCU */
-ADDRESS_MAP_START(taitol_1cpu_state::puzznici_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write)
- AM_RANGE(0xa800, 0xa800) AM_READNOP // Watchdog
- AM_RANGE(0xb801, 0xb801) AM_READ(mcu_control_r)
+void taitol_1cpu_state::puzznici_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).r(this, FUNC(taitol_1cpu_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write));
+ map(0xa800, 0xa800).nopr(); // Watchdog
+ map(0xb801, 0xb801).r(this, FUNC(taitol_1cpu_state::mcu_control_r));
// AM_RANGE(0xb801, 0xb801) AM_WRITE(mcu_control_w)
- AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP // Control register, function unknown
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitol_1cpu_state::plotting_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write)
- AM_RANGE(0xa800, 0xa800) AM_WRITENOP // Watchdog or interrupt ack
- AM_RANGE(0xb800, 0xb800) AM_WRITENOP // Control register, function unknown
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitol_1cpu_state::palamed_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xa800, 0xa803) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_WRITENOP // Control register, function unknown (copy of 8822)
- AM_RANGE(0xb001, 0xb001) AM_READNOP // Watchdog or interrupt ack
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(taitol_1cpu_state::cachat_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xa800, 0xa803) AM_DEVREADWRITE("ppi", i8255_device, read, write)
- AM_RANGE(0xb000, 0xb000) AM_WRITENOP // Control register, function unknown
- AM_RANGE(0xb001, 0xb001) AM_READNOP // Watchdog or interrupt ack (value ignored)
- AM_RANGE(0xfff8, 0xfff8) AM_READWRITE(rombankswitch_r, rombankswitch_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(horshoes_state::horshoes_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_READ(extport_select_and_ym2203_r) AM_DEVWRITE("ymsnd", ym2203_device, write)
- ;map(0xa800, 0xa800).select(0x000c).lr8("upd4701_r", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_upd4701->read_xy(space, offset >> 2, mem_mask); });
- AM_RANGE(0xa802, 0xa802) AM_DEVREAD("upd4701", upd4701_device, reset_x)
- AM_RANGE(0xa803, 0xa803) AM_DEVREAD("upd4701", upd4701_device, reset_y)
- AM_RANGE(0xb801, 0xb801) AM_READNOP // Watchdog or interrupt ack
- AM_RANGE(0xb802, 0xb802) AM_WRITE(bankg_w)
- AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitol_2cpu_state::evilston_map)
- AM_IMPORT_FROM(common_banks_map)
- AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xa000, 0xa7ff) AM_DEVREADWRITE("dpram", mb8421_device, right_r, right_w)
- AM_RANGE(0xa800, 0xa807) AM_DEVREADWRITE("tc0510nio", tc0510nio_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(taitol_2cpu_state::evilston_2_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xdfff) AM_RAM
- AM_RANGE(0xe000, 0xe7ff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w)
- AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
- AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("audiobank")
-ADDRESS_MAP_END
+ map(0xbc00, 0xbc00).nopw(); // Control register, function unknown
+}
+
+
+void taitol_1cpu_state::plotting_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).r(this, FUNC(taitol_1cpu_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write));
+ map(0xa800, 0xa800).nopw(); // Watchdog or interrupt ack
+ map(0xb800, 0xb800).nopw(); // Control register, function unknown
+}
+
+
+void taitol_1cpu_state::palamed_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).rw(m_ymsnd, FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa800, 0xa803).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xb000, 0xb000).nopw(); // Control register, function unknown (copy of 8822)
+ map(0xb001, 0xb001).nopr(); // Watchdog or interrupt ack
+}
+
+
+void taitol_1cpu_state::cachat_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).rw(m_ymsnd, FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xa800, 0xa803).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
+ map(0xb000, 0xb000).nopw(); // Control register, function unknown
+ map(0xb001, 0xb001).nopr(); // Watchdog or interrupt ack (value ignored)
+ map(0xfff8, 0xfff8).rw(this, FUNC(taitol_1cpu_state::rombankswitch_r), FUNC(taitol_1cpu_state::rombankswitch_w));
+}
+
+
+void horshoes_state::horshoes_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa003).r(this, FUNC(horshoes_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write));
+ map(0xa800, 0xa800).select(0x000c).lr8("upd4701_r",
+ [this](address_space &space, offs_t offset, u8 mem_mask) {
+ return m_upd4701->read_xy(space, offset >> 2, mem_mask);
+ });
+ map(0xa802, 0xa802).r(m_upd4701, FUNC(upd4701_device::reset_x));
+ map(0xa803, 0xa803).r(m_upd4701, FUNC(upd4701_device::reset_y));
+ map(0xb801, 0xb801).nopr(); // Watchdog or interrupt ack
+ map(0xb802, 0xb802).w(this, FUNC(horshoes_state::bankg_w));
+ map(0xbc00, 0xbc00).nopw();
+}
+
+void taitol_2cpu_state::evilston_map(address_map &map)
+{
+ common_banks_map(map);
+ map(0x8000, 0x9fff).ram();
+ map(0xa000, 0xa7ff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w));
+ map(0xa800, 0xa807).rw("tc0510nio", FUNC(tc0510nio_device::read), FUNC(tc0510nio_device::write));
+}
+
+void taitol_2cpu_state::evilston_2_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xdfff).ram();
+ map(0xe000, 0xe7ff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
+ map(0xe800, 0xe801).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+ map(0xf000, 0xf7ff).bankr("audiobank");
+}