diff options
Diffstat (limited to 'src/mame/drivers/taito_l.cpp')
-rw-r--r-- | src/mame/drivers/taito_l.cpp | 424 |
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"); +} |