diff options
Diffstat (limited to 'src/mame/drivers/qix.cpp')
-rw-r--r-- | src/mame/drivers/qix.cpp | 133 |
1 files changed, 56 insertions, 77 deletions
diff --git a/src/mame/drivers/qix.cpp b/src/mame/drivers/qix.cpp index 1546e5dd666..3f79f330486 100644 --- a/src/mame/drivers/qix.cpp +++ b/src/mame/drivers/qix.cpp @@ -276,15 +276,15 @@ void qix_state::kram3_main_map(address_map &map) -void qix_state::zoo_main_map(address_map &map) +void zookeep_state::main_map(address_map &map) { map(0x0000, 0x03ff).ram().share("share1"); map(0x0400, 0x07ff).ram(); map(0x0800, 0x0bff).nopr(); /* ACIA */ - map(0x0c00, 0x0c00).mirror(0x3fe).rw(FUNC(qix_state::qix_video_firq_r), FUNC(qix_state::qix_video_firq_w)); - map(0x0c01, 0x0c01).mirror(0x3fe).rw(FUNC(qix_state::qix_data_firq_ack_r), FUNC(qix_state::qix_data_firq_ack_w)); + map(0x0c00, 0x0c00).mirror(0x3fe).rw(FUNC(zookeep_state::qix_video_firq_r), FUNC(zookeep_state::qix_video_firq_w)); + map(0x0c01, 0x0c01).mirror(0x3fe).rw(FUNC(zookeep_state::qix_data_firq_ack_r), FUNC(zookeep_state::qix_data_firq_ack_w)); map(0x1000, 0x13ff).rw(m_sndpia0, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); - map(0x1400, 0x17ff).r(m_pia0, FUNC(pia6821_device::read)).w(FUNC(qix_state::qix_pia_w)); + map(0x1400, 0x17ff).r(m_pia0, FUNC(pia6821_device::read)).w(FUNC(zookeep_state::qix_pia_w)); map(0x1800, 0x1bff).rw(m_pia1, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x1c00, 0x1fff).rw(m_pia2, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0x8000, 0xffff).rom(); @@ -601,15 +601,15 @@ INPUT_PORTS_END ***************************************************************************/ -MACHINE_CONFIG_START(qix_state::qix_base) - +void qix_state::qix_base(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MC6809E, MAIN_CLOCK_OSC/4/4) /* 1.25 MHz */ - MCFG_DEVICE_PROGRAM_MAP(main_map) + MC6809E(config, m_maincpu, MAIN_CLOCK_OSC/4/4); /* 1.25 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &qix_state::main_map); /* high interleave needed to ensure correct text in service mode */ /* Zookeeper settings and high score table seem especially sensitive to this */ - MCFG_QUANTUM_PERFECT_CPU("maincpu") + config.m_perfect_cpu_quantum = subtag("maincpu"); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); @@ -627,22 +627,23 @@ MACHINE_CONFIG_START(qix_state::qix_base) /* video hardware */ qix_video(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(qix_state::qix) +void qix_state::qix(machine_config &config) +{ qix_base(config); qix_audio(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(qix_state::kram3) +void qix_state::kram3(machine_config &config) +{ qix(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(kram3_main_map) - MCFG_MC6809E_LIC_CB(WRITELINE(*this, qix_state, kram3_lic_maincpu_changed)) + m_maincpu->set_addrmap(AS_PROGRAM, &qix_state::kram3_main_map); + m_maincpu->lic().set(FUNC(qix_state::kram3_lic_maincpu_changed)); kram3_video(config); -MACHINE_CONFIG_END +} /*************************************************************************** @@ -651,37 +652,31 @@ MACHINE_CONFIG_END ***************************************************************************/ -MACHINE_CONFIG_START(qix_state::mcu) +void qixmcu_state::mcu(machine_config &config) +{ qix(config); /* basic machine hardware */ - MCFG_DEVICE_ADD("mcu", M68705P3, COIN_CLOCK_OSC) /* 1.00 MHz */ - MCFG_M68705_PORTB_R_CB(READ8(*this, qix_state, qix_68705_portB_r)) - MCFG_M68705_PORTC_R_CB(READ8(*this, qix_state, qix_68705_portC_r)) - MCFG_M68705_PORTA_W_CB(WRITE8(*this, qix_state, qix_68705_portA_w)) - MCFG_M68705_PORTB_W_CB(WRITE8(*this, qix_state, qix_68705_portB_w)) + M68705P3(config, m_mcu, COIN_CLOCK_OSC); /* 1.00 MHz */ + m_mcu->portb_r().set(FUNC(qixmcu_state::mcu_portb_r)); + m_mcu->portc_r().set(FUNC(qixmcu_state::mcu_portc_r)); + m_mcu->porta_w().set(FUNC(qixmcu_state::mcu_porta_w)); + m_mcu->portb_w().set(FUNC(qixmcu_state::mcu_portb_w)); - MCFG_MACHINE_START_OVERRIDE(qix_state,qixmcu) + m_pia0->readpb_handler().set(FUNC(qixmcu_state::coin_r)); + m_pia0->writepb_handler().set(FUNC(qixmcu_state::coin_w)); - m_pia0->readpb_handler().set(FUNC(qix_state::qixmcu_coin_r)); - m_pia0->writepb_handler().set(FUNC(qix_state::qixmcu_coin_w)); - - m_pia2->writepb_handler().set(FUNC(qix_state::qixmcu_coinctrl_w)); -MACHINE_CONFIG_END + m_pia2->writepb_handler().set(FUNC(qixmcu_state::coinctrl_w)); +} -MACHINE_CONFIG_START(qix_state::zookeep) +void zookeep_state::zookeep(machine_config &config) +{ mcu(config); - - /* basic machine hardware */ - - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(zoo_main_map) - - /* video hardware */ - zookeep_video(config); -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &zookeep_state::main_map); + video(config); +} @@ -692,13 +687,13 @@ MACHINE_CONFIG_END ***************************************************************************/ -MACHINE_CONFIG_START(qix_state::slither) +void qix_state::slither(machine_config &config) +{ qix_base(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(SLITHER_CLOCK_OSC/4/4) /* 1.34 MHz */ + m_maincpu->set_clock(SLITHER_CLOCK_OSC/4/4); /* 1.34 MHz */ m_pia1->readpa_handler().set(FUNC(qix_state::slither_trak_lr_r)); m_pia1->writepb_handler().set(FUNC(qix_state::slither_76489_0_w)); @@ -713,7 +708,7 @@ MACHINE_CONFIG_START(qix_state::slither) /* audio hardware */ slither_audio(config); -MACHINE_CONFIG_END +} @@ -1429,43 +1424,27 @@ WRITE_LINE_MEMBER(qix_state::kram3_lic_videocpu_changed) m_bank1->set_entry( state ? 1 : 0 ); } - -void qix_state::init_zookeep() -{ - /* configure the banking */ - membank("bank1")->configure_entry(0, memregion("videocpu")->base() + 0xa000); - membank("bank1")->configure_entry(1, memregion("videocpu")->base() + 0x10000); - membank("bank1")->set_entry(0); -} - - -void qix_state::init_slither() -{ -} - - - /************************************* * * Game drivers * *************************************/ -GAME( 1981, qix, 0, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (Rev 2)", MACHINE_SUPPORTS_SAVE ) // newest set? closest to 'qix2' -GAME( 1981, qixa, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 2, smaller roms)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, qixb, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 2, larger roms)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, qixo, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 3, earlier)", MACHINE_SUPPORTS_SAVE ) // oldest set / prototype? has incorrect spelling 'deutch' and doesn't allow language selection to be changed -GAME( 1981, qix2, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix II (Tournament)", MACHINE_SUPPORTS_SAVE ) -GAME( 1981, sdungeon, 0, mcu, sdungeon, qix_state, empty_init, ROT270, "Taito America Corporation", "Space Dungeon", MACHINE_SUPPORTS_SAVE ) // actually released July 1982 -GAME( 1981, sdungeona, sdungeon, mcu, sdungeon, qix_state, empty_init, ROT270, "Taito America Corporation", "Space Dungeon (larger roms)", MACHINE_SUPPORTS_SAVE ) // same as above but uses larger ROMs -GAMEL(1982, elecyoyo, 0, mcu, elecyoyo, qix_state, empty_init, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 1)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) -GAMEL(1982, elecyoyo2, elecyoyo, mcu, elecyoyo, qix_state, empty_init, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 2)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) -GAME( 1982, kram, 0, mcu, kram, qix_state, empty_init, ROT0, "Taito America Corporation", "Kram (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, kram2, kram, mcu, kram, qix_state, empty_init, ROT0, "Taito America Corporation", "Kram (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, kram3, kram, kram3, kram, qix_state, init_kram3, ROT0, "Taito America Corporation", "Kram (encrypted)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zookeep, 0, zookeep, zookeep, qix_state, init_zookeep, ROT0, "Taito America Corporation", "Zoo Keeper (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zookeep2, zookeep, zookeep, zookeep, qix_state, init_zookeep, ROT0, "Taito America Corporation", "Zoo Keeper (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, zookeep3, zookeep, zookeep, zookeep, qix_state, init_zookeep, ROT0, "Taito America Corporation", "Zoo Keeper (set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, slither, 0, slither, slither, qix_state, init_slither, ROT270, "Century II", "Slither (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, slithera, slither, slither, slither, qix_state, init_slither, ROT270, "Century II", "Slither (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1984, complexx, 0, qix, complexx, qix_state, empty_init, ROT270, "Taito America Corporation", "Complex X", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, qix, 0, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (Rev 2)", MACHINE_SUPPORTS_SAVE ) // newest set? closest to 'qix2' +GAME( 1981, qixa, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 2, smaller roms)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, qixb, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 2, larger roms)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, qixo, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix (set 3, earlier)", MACHINE_SUPPORTS_SAVE ) // oldest set / prototype? has incorrect spelling 'deutch' and doesn't allow language selection to be changed +GAME( 1981, qix2, qix, qix, qix, qix_state, empty_init, ROT270, "Taito America Corporation", "Qix II (Tournament)", MACHINE_SUPPORTS_SAVE ) +GAME( 1981, sdungeon, 0, mcu, sdungeon, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "Space Dungeon", MACHINE_SUPPORTS_SAVE ) // actually released July 1982 +GAME( 1981, sdungeona, sdungeon, mcu, sdungeon, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "Space Dungeon (larger roms)", MACHINE_SUPPORTS_SAVE ) // same as above but uses larger ROMs +GAMEL(1982, elecyoyo, 0, mcu, elecyoyo, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 1)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) +GAMEL(1982, elecyoyo2, elecyoyo, mcu, elecyoyo, qixmcu_state, empty_init, ROT270, "Taito America Corporation", "The Electric Yo-Yo (set 2)", MACHINE_SUPPORTS_SAVE, layout_elecyoyo ) +GAME( 1982, kram, 0, mcu, kram, qixmcu_state, empty_init, ROT0, "Taito America Corporation", "Kram (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, kram2, kram, mcu, kram, qixmcu_state, empty_init, ROT0, "Taito America Corporation", "Kram (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, kram3, kram, kram3, kram, qix_state, init_kram3, ROT0, "Taito America Corporation", "Kram (encrypted)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zookeep, 0, zookeep, zookeep, zookeep_state, empty_init, ROT0, "Taito America Corporation", "Zoo Keeper (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zookeep2, zookeep, zookeep, zookeep, zookeep_state, empty_init, ROT0, "Taito America Corporation", "Zoo Keeper (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, zookeep3, zookeep, zookeep, zookeep, zookeep_state, empty_init, ROT0, "Taito America Corporation", "Zoo Keeper (set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, slither, 0, slither, slither, qix_state, empty_init, ROT270, "Century II", "Slither (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, slithera, slither, slither, slither, qix_state, empty_init, ROT270, "Century II", "Slither (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1984, complexx, 0, qix, complexx, qix_state, empty_init, ROT270, "Taito America Corporation", "Complex X", MACHINE_SUPPORTS_SAVE ) |