// license:BSD-3-Clause // copyright-holders:AJR /*************************************************************************** Taito Bingo Wave This is a skeleton driver for what appears to be a satellite betting game similar to Sega's Caribbean Boule. "MAIN PCB" - Toshiba TMP68303F-16 (IC26) - Mitsubishi M66220SP (IC19) - Unpopulated space for 68000 (IC36) - TEL TE7750 (IC38, IC47) - Taito TC0140SYT (IC68) - Zilog Z80-A (IC74) - Yamaha YM2610 (IC77) - ??MHz XTAL (OSC1) "TERMINAL PCB" - Toshiba TMP68303F-16 (IC35) - Taito TC0650FDA (IC26) - Unpopulated space for 68000-16 (IC41) - TEL TE7750 (IC42) - Taito TCO470LIN (IC33) - Taito TC0600OBT (IC11) - Yamaha YM2149F (IC53) - 36MHz XTAL (OSC1) - 32MHz XTAL (OSC2) - DIP switches (1x8) - JAMMA edge connector "CONTROL PCB" - Taito PC060HA (IC2) - Zilog Z80 (IC13) - 16MHz XTAL (OSC1) - DIP switches (1x8) ***************************************************************************/ #include "emu.h" #include "speaker.h" #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" #include "machine/te7750.h" #include "machine/tmp68301.h" #include "sound/2610intf.h" #include "audio/taitosnd.h" class bingowav_state : public driver_device { public: bingowav_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") { } void bingowav(machine_config &config); void bingowav_audio_map(address_map &map); void bingowav_control_map(address_map &map); void bingowav_drive_map(address_map &map); void bingowav_main_map(address_map &map); protected: virtual void machine_start() override; private: required_device m_maincpu; }; void bingowav_state::machine_start() { } void bingowav_state::bingowav_main_map(address_map &map) { map(0x000000, 0x03ffff).rom(); map(0x100000, 0x10ffff).ram(); map(0x120000, 0x12001f).rw("mainioh", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0xff00); map(0x120000, 0x12001f).rw("mainiol", FUNC(te7750_device::read), FUNC(te7750_device::write)).umask16(0x00ff); map(0x140000, 0x140001).nopr(); map(0x150001, 0x150001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w)); map(0x150003, 0x150003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); } void bingowav_state::bingowav_audio_map(address_map &map) { map(0x0000, 0xbfff).rom(); map(0xc000, 0xdfff).ram(); map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write)); map(0xe200, 0xe200).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(0xf200, 0xf200).nopw(); } void bingowav_state::bingowav_drive_map(address_map &map) { map(0x000000, 0x01ffff).rom(); } void bingowav_state::bingowav_control_map(address_map &map) { map(0x0000, 0x3fff).rom(); map(0xc000, 0xdfff).ram(); map(0xf000, 0xf000).nopw(); } static INPUT_PORTS_START( bingowav ) INPUT_PORTS_END void bingowav_state::bingowav(machine_config &config) { TMP68301(config, m_maincpu, 12000000); // actually TMP63803F-16 m_maincpu->set_addrmap(AS_PROGRAM, &bingowav_state::bingowav_main_map); te7750_device &mainioh(TE7750(config, "mainioh")); mainioh.ios_cb().set_constant(5); te7750_device &mainiol(TE7750(config, "mainiol")); mainiol.ios_cb().set_constant(4); Z80(config, "audiocpu", 4000000).set_addrmap(AS_PROGRAM, &bingowav_state::bingowav_audio_map); SPEAKER(config, "mono").front_center(); ym2610_device &ymsnd(YM2610(config, "ymsnd", 8000000)); ymsnd.irq_handler().set_inputline("audiocpu", 0); ymsnd.add_route(0, "mono", 0.25); ymsnd.add_route(1, "mono", 1.0); ymsnd.add_route(2, "mono", 1.0); tc0140syt_device &tc0140syt(TC0140SYT(config, "tc0140syt", 0)); tc0140syt.set_master_tag(m_maincpu); tc0140syt.set_slave_tag("audiocpu"); m68000_device &termcpu(M68000(config, "termcpu", 12000000)); // actually TMP63803F-16 termcpu.set_addrmap(AS_PROGRAM, &bingowav_state::bingowav_drive_map); termcpu.set_disable(); Z80(config, "ctrlcpu", XTAL(16'000'000) / 4).set_addrmap(AS_PROGRAM, &bingowav_state::bingowav_control_map); } ROM_START( bingowav ) // Program and graphics ROMs from the "Terminal PCB" are currently missing ROM_REGION( 0x40000, "maincpu", 0 ) ROM_LOAD16_BYTE( "prg-h.ic35", 0x00000, 0x20000, CRC(0ae8c738) SHA1(c040c4f46089a07ef3c4d5067068ea3cd1546e4e) ) ROM_LOAD16_BYTE( "prg-l.ic42", 0x00001, 0x20000, CRC(a7742e54) SHA1(2ab75c51ced0bb37b50f5077b611cde1770e2411) ) ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "ic66", 0x00000, 0x10000, CRC(9fa09b9a) SHA1(e333b11129141649a18906120805842c2dcccd05) ) ROM_REGION( 0x80000, "ymsnd", 0 ) ROM_LOAD( "ic69", 0x00000, 0x80000, CRC(5d86d5bd) SHA1(81ebb63f984690e63e45c8b1fe4251fac8d5cf04) ) ROM_REGION( 0x40000, "termcpu", 0 ) ROM_LOAD16_BYTE( "prg-h.ic25", 0x00000, 0x20000, NO_DUMP ) ROM_LOAD16_BYTE( "prg-l.ic20", 0x00001, 0x20000, NO_DUMP ) ROM_REGION( 0x20000, "ctrlcpu", 0 ) ROM_LOAD( "ic1", 0x00000, 0x20000, CRC(d257bbaf) SHA1(9d1414594dc1c1fca256ab5b6039e733bff1414a) ) ROM_END GAME( 1994, bingowav, 0, bingowav, bingowav, bingowav_state, empty_init, ROT0, "Taito", "Bingo Wave", MACHINE_IS_SKELETON )