diff options
Diffstat (limited to 'src/mame/skeleton/tvcobrasd.cpp')
-rw-r--r-- | src/mame/skeleton/tvcobrasd.cpp | 109 |
1 files changed, 104 insertions, 5 deletions
diff --git a/src/mame/skeleton/tvcobrasd.cpp b/src/mame/skeleton/tvcobrasd.cpp index 2cb0ead4a66..1b769e7da8b 100644 --- a/src/mame/skeleton/tvcobrasd.cpp +++ b/src/mame/skeleton/tvcobrasd.cpp @@ -2,7 +2,7 @@ // copyright-holders: /* -Skeleton driver for Cobra Sport Dart, darts machine from the Spanish company TourVisión. +Skeleton driver for Cobra Sport Dart, darts machines from the Spanish company TourVisión. Manual, pics and some more info can be found at https://www.recreativas.org/cobra-6479-tour-vision-games COBRA/CPU-1 @@ -33,14 +33,49 @@ Manual, pics and some more info can be found at https://www.recreativas.org/cobr | |MAX691CPE| |_SN7407N_| :::::::::::: ::::::::::::::::::: | |____________________________________________________________________________________| +There's another PCB (same connectors, fully compatible) with almost the same layout +and components, but replacing the sound OKI M6376 with a Winbond WF19054 (AY-3-8910A clone): + + FLE/V25-2 + ________________________________________________________________________________ + | ······ ····· ······ ·········· | + | | + | __________ __________ __________ __________ | + ||MAX232CPE| |4116R-001| |ULN2803A_| |4116R-001| TDA2003 | + | __________ |__ + | ___________ |ULN2803A_| __| + | |DM74LS273N| __________ __| + | ___________ ___________ __________ |SN74LS273N __| + | |SN74LS244N| |PALCE16V8H| |SN74LS244N| __________ __________ __| + | ___________ ___________ _______________ |SN74LS244N |4116R-001| __| + ||SN74LS14N_| |PALCE16V8H| | EPROM | __________ __| + | ___________ |______________| |SN74LS244N __| + ||CD4011BCN_| ______________ _______________ __________ __________ __| + | ____ | NEC V25 | |CY62256L-70PC| |DM74LS273N| |4116R-001| __| + |PCF8583P | D70320L-8 | |_____________| __________ __________ __| + | Xtal | | |DM74LS273N| |ULN2803A_| __| + | S833 | | __________ __| + | |_____________| |ULN2803A_| __| + | Xtal _________ _________ _______________ ____ __| + | 16.000 MHz |_DIPSx8_| |_DIPSx8_| |WF19054 | |RESET __| + | BATT __________ __________ |______________| ____ __| + | 74HCT7007B1 74HCT7007B1 |TEST | + | __________ | + | |MAX691CPE| :::::::::::: ::::::::::::::::::: | + |_______________________________________________________________________________| + */ #include "emu.h" + #include "cpu/nec/v25.h" #include "machine/pcf8583.h" +#include "sound/ay8910.h" #include "sound/okim6376.h" + #include "speaker.h" + namespace { class cobrasd_state : public driver_device @@ -51,13 +86,37 @@ public: m_maincpu(*this, "maincpu") { } - void cobrasd(machine_config &config); + void cobrasd_oki(machine_config &config) ATTR_COLD; + void cobrasd_ay(machine_config &config) ATTR_COLD; private: - required_device<cpu_device> m_maincpu; + required_device<v25_device> m_maincpu; + + void cobrasd(machine_config &config) ATTR_COLD; + + void program_map(address_map &map) ATTR_COLD; + void io_map(address_map &map) ATTR_COLD; + void data_map(address_map &map) ATTR_COLD; }; +void cobrasd_state::program_map(address_map &map) +{ + map(0x00000, 0x03fff).ram(); + map(0xe0000, 0xfffff).rom().region("maincpu", 0); +} + +void cobrasd_state::io_map(address_map &map) +{ + // map(0x8000, 0x8000).w(); +} + +void cobrasd_state::data_map(address_map &map) +{ + map(0x000, 0x1ff).ram(); +} + + static INPUT_PORTS_START(cobrasd) PORT_START("DSW1") PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW1:1") @@ -86,8 +145,25 @@ void cobrasd_state::cobrasd(machine_config &config) // Basic machine hardware V25(config, m_maincpu, 16_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &cobrasd_state::program_map); + m_maincpu->set_addrmap(AS_IO, &cobrasd_state::io_map); + m_maincpu->set_addrmap(AS_DATA, &cobrasd_state::data_map); + m_maincpu->pt_in_cb().set([this] () { logerror("%s: pt in\n", machine().describe_context()); return uint8_t(0); }); + m_maincpu->p0_in_cb().set([this] () { logerror("%s: p0 in\n", machine().describe_context()); return uint8_t(0); }); + m_maincpu->p1_in_cb().set([this] () { logerror("%s: p1 in\n", machine().describe_context()); return uint8_t(0); }); + m_maincpu->p2_in_cb().set([this] () { logerror("%s: p2 in\n", machine().describe_context()); return uint8_t(0); }); + m_maincpu->p0_out_cb().set([this] (uint8_t data) { logerror("%s: p0 out %02X\n", machine().describe_context(), data); }); + m_maincpu->p1_out_cb().set([this] (uint8_t data) { logerror("%s: p1 out %02X\n", machine().describe_context(), data); }); + m_maincpu->p2_out_cb().set([this] (uint8_t data) { logerror("%s: p2 out %02X\n", machine().describe_context(), data); }); PCF8583(config, "rtc", 32.768_kHz_XTAL); // External xtal labeled "S833", unknown frequency +} + +void cobrasd_state::cobrasd_oki(machine_config &config) +{ + // Basic machine hardware + + cobrasd(config); // Sound hardware @@ -96,6 +172,19 @@ void cobrasd_state::cobrasd(machine_config &config) OKIM6376(config, "oki", 4_MHz_XTAL / 8).add_route(ALL_OUTPUTS, "mono", 0.5); // Divider not verified } +void cobrasd_state::cobrasd_ay(machine_config &config) +{ + // Basic machine hardware + + cobrasd(config); + + // Sound hardware + + SPEAKER(config, "mono").front_center(); + + AY8910(config, "psg", 16_MHz_XTAL / 12).add_route(ALL_OUTPUTS, "mono", 0.5); // Divider not verified +} + ROM_START(cobrasd) ROM_REGION(0x20000, "maincpu", 0) @@ -109,8 +198,18 @@ ROM_START(cobrasd) ROM_LOAD("palce16v8h-25.u11", 0x117, 0x117, NO_DUMP) // protected ROM_END +ROM_START(cobrasda) + ROM_REGION(0x20000, "maincpu", 0) + ROM_LOAD("model_sc8_version_2.1.u16", 0x00000, 0x20000, CRC(3ba60087) SHA1(9a2ebc0d99dcb1f5ccf8f586776d7344d0799cf4)) + + ROM_REGION(0x22e, "plds", 0) + ROM_LOAD("palce16v8h-25.u8", 0x000, 0x117, NO_DUMP) + ROM_LOAD("palce16v8h-25.u11", 0x117, 0x117, NO_DUMP) +ROM_END -} // Anonymous namespace +} // anonymous namespace -GAME(1998, cobrasd, 0, cobrasd, cobrasd, cobrasd_state, empty_init, ROT0, u8"TourVisión", "Cobra Sport Dart", MACHINE_IS_SKELETON_MECHANICAL) // Also knwon as Tour Sport Dart +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS +GAME(1998, cobrasd, 0, cobrasd_oki, cobrasd, cobrasd_state, empty_init, ROT0, u8"TourVisión", "Cobra Sport Dart / Tour Sport Dart (Oki MSM6376 sound)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK) +GAME(1997, cobrasda, cobrasd, cobrasd_ay, cobrasd, cobrasd_state, empty_init, ROT0, u8"TourVisión", "Cobra Sport Dart / Tour Sport Dart (AY-8910 sound)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK) |