diff options
Diffstat (limited to 'src/mame/drivers/midqslvr.cpp')
-rw-r--r-- | src/mame/drivers/midqslvr.cpp | 327 |
1 files changed, 282 insertions, 45 deletions
diff --git a/src/mame/drivers/midqslvr.cpp b/src/mame/drivers/midqslvr.cpp index 8e6dc436c3d..27b96f220fc 100644 --- a/src/mame/drivers/midqslvr.cpp +++ b/src/mame/drivers/midqslvr.cpp @@ -2,25 +2,246 @@ // copyright-holders:Angelo Salese /*************************************************************************** - Midway Quicksilver skeleton driver - - TODO: - - offrthnd: illegal opcode tripped just after that PIIX4 is recognized - - Main CPU : Intel Celeron 333/366MHz - Motherboard : Intel SE440BX-2 - RAM : 64MB PC100-222-620 non-ecc - Sound: Integrated YMF740G - Networking: SMC EZ Card 10 / SMC1208T (probably 10ec:8029 1113:1208) - Graphics Chips : Quantum Obsidian 3DFX - Storage : Hard Drive - - Chipsets (440BX AGPset): - - 82371EB PCI-ISA bridge - - 82371EB Power Management Controller - - 82371AB/EB Universal Host Controller (USB UHCI) - - 82371AB/EB PCI Bus Master IDE Controller - +Midway Quicksilver II/Graphite skeleton driver + +Hardware configurations: + +Hydro Thunder: Quicksilver II system and Diego I/O board +Offroad Thunder: Quicksilver II system and Magicbus I/O board +Arctic Thunder: Graphite system and Substitute I/O board + +All of the games communicate with their I/O boards serially. + +Quicksilver II hardware: +- Main CPU: Intel Celeron (Pentium II) 333/366MHz +- Motherboard: Intel SE440BX-2 +- RAM: 64MB PC100-222-620 non-ecc +- Sound: Integrated YMF740G +- Networking: SMC EZ Card 10 / SMC1208T (probably 10ec:8029 1113:1208) +- Video Card: Quantum Obsidian 3DFX Voodoo 2 (CPLD protected) +- Storage: Hard Drive +- OS: TNT Embedded Kernel + +Chipsets (440BX AGPset): +- 82443BX Northbridge +- 82371EB PIIX4 PCI-ISA Southbridge + +Note: This was once claimed to run on Windows 95 or 98 but has been proven (mostly) false. The TNT Kernel was a "DOS Extender" +that allows core Windows NT functions to work on MS DOS. It's also possible it runs on a custom made OS as both games do not display +anything DOS related. + +Graphite hardware: +- Main CPU: Intel Pentium III 733MHz +- Motherboard: BCM GT694VP +- RAM: 128MB PC100/133 +- Sound: Integrated AC97 Controller on VT82C686A Southbridge + -or ES1373/CT5880 Audio Chip +- Networking: SMC EZ Card 10 / SMC1208T (probably 10ec:8029 1113:1208) +- Video Card: 3DFX Voodoo 3 +- Storage: Hard Drive (copy protected) +- OS: Windows 2000 Professional + +Chipsets (VIA Pro133A): +- VT82C694X Northbridge +- VT82C686A Southbridge + +Note: Not only a beefed up Quicksilver II but acts like a normal PC. You get the normal bios startup, a Windows 2000 startup sequence and +then the game launcher starts. Another difference is the storage device has a copy protection scheme that "locks" the storage device to the +motherboard's serial number. If a drive doesn't match the motherboard's serial number, the game launcher will give an error. + +I/O boards: + +MIDWAY GAMES INC +5770-15983-04 +DIEGO + +|--------------------------------------------------------------| +| JP13 JP14 JP15 J1 JP2 | +| | +| JP1 JP5 JP6 | +| JP4 | +| JP3 | +| U1 | +| JP11 U2 U3 | +| | +| U12 JP12 | +|JP9 | +| U5 U6 U10 JP8| +| U8 S1 | +| Y2 | +| U7 Q2 U4 | +| | +| JP15 J2 J3 | +| P1 JP10 JP7 | +|--------------------------------------------------------------| + +Notes: + J1: Video connector from/to video card + J2/J3: USB ports (not used) + JP1: Alternate video connector from/to video card + JP2: Video output signal to monitor + JP3: 3 pin jumper: Blue video level, *Open: high, 1-2: low, 2-3: high + JP4: 3 pin jumper: Green video level, *Open: high, 1-2: low, 2-3: high + JP5: 3 pin jumper: Red video level, *Open: high, 1-2: low, 2-3: high + JP6: 3 pin jumper: Video sync polarity, *Open: pos, 1-2: neg, 2-3: pos + JP7: 13 pin connector for switches and analog controls/potentiometers + JP8: 14 pin connector for coin, service, volume and test inputs + JP9: 20 pin ribbon cable connector to wheel driver board + JP10: 9 pin connector for coin meter + JP11: 2 pin connector for watchdog reset + JP12: connector for development use, not used + JP13-15: connectors, not used + JP16: Power connector + P1: DB9 RS-232 port to computer + Q2: ULN2064B Darlington Transistor + S1: Dip Switches (8). + S1-3: *Off: Game Mode, On: Test Mode + S1-4: *Off: 25" Cabinet, On: 39" Cabinet + S1-8: Off: Watchdog Disabled, *On: Watchdog Enabled + U1: Texas Instruments LS85A Logic Gate + U2-3: EL244CS Amplifier + U4: 109B Instrumentation Amplifier + U5: PC16550DV UART Interface IC + U6: Motorola MC74HC273A Octal D Flip-Flop (LS273 based) + U7: DS14185WM RS-232 Interface IC + U8: CY7C63513-PVC 8-bit RISC Microcontroller + U10: Atmel 24C01A Serial EEPROM + U12: MAX707CSA Supervisory Circuit + Y2: Crystal/XTAL 6.000 MHz + + +MIDWAY GAMES INC +5770-16226-01 +MAGICBUS + +|--------------------------------------------------------------------------------------------| +| J2 JP21 JP22 JP12 JP9 J1 | +| JP24 JP6 | +| P1 JP5 JP3 JP2 JP1 | +| JP23 U19 | +| U22 JP4 | +|JP10 Q4 U2 U3 U1 | +| U17 | +| Y1 U18 | +| U5 | +| U20 | +|JP11 U21 | +| | +| U6 S2 S1 | +| JP20 | +| | +|JP16 U12 U16 U15 | +| | +| U11 | +| JP17 JP19 JP18 JP13 JP14 JP15 | +|--------------------------------------------------------------------------------------------| + +Notes: + J1: Video connector from/to video card + J2: USB port (not used) + JP1: 3 pin jumper: Blue video level, *Open: high, 1-2: low, 2-3: high + JP2: 3 pin jumper: Green video level, *Open: high, 1-2: low, 2-3: high + JP3: 3 pin jumper: Red video level, *Open: high, 1-2: low, 2-3: high + JP4: 3 pin jumper: Video sync polarity, Open: pos, *1-2: neg, 2-3: pos + JP5: Alternate video connector from/to video card + JP6: Video output signal to monitor + JP9: Power connector + JP10: 20 pin ribbon cable connector to wheel driver board + JP11: 20 pin ribbon cable connector, not used + JP12-14: connectors, not used + JP15: 14 pin connector for analog controls/potentiometers + JP16: 15 pin connector for gameplay inputs + JP17: connector, not used + JP18: 14 pin connector for coin, service, volume and test inputs + JP19: connector, not used + JP20: connector for development use, not used + JP21: 2 pin connector for watchdog reset + JP22: 9 pin connector for coin meter + JP23: Alternate RS232 port + JP24: connector, not used + P1: DB9 RS-232 port to computer + Q4: ULN2064B Darlington Transistor + S1: Dip Switches (8) + S1-7: *Off: UART, On: USB + S1-8: Off: Watchdog Disabled, *On: Watchdog Enabled + S2: Dip Switches (8), all set to "off" + U1: LS85A Logic Gate + U2-3: EL244CS Amplifier + U5: MAX707CSA Supervisory Circuit + U6: Motorola MC74HC273A Octal D Flip-Flop (LS273 based) + U11: ADC0834 Serial I/O Converter + U12-15: HC541 Octal Buffer + U17: Atmel 24C01A Serial EEPROM + U18: CY7C63513-PVC 8-bit RISC Microcontroller + U19: DS14185WM RS-232 Interface IC + U20: PC16550DV UART Interface IC + U21: Oscilator 3.6864 MHz + U22: HC04 Hex Inverter + Y1: Crystal/XTAL 6.000 MHz + +(Incomplete) +MIDWAY GAMES INC. +SUBSTITUTE MAGICBUS +5770-16367-02 + +|--------------------------------------------------------------------------------------------| +| J2 P1 JP21 JP22 JP12 JP9 J1 | +| JP23 JP24 JP6 | +| U21 U24 U22 JP5 JP3 JP2 JP1 | +| | +| U23 JP4 | +|JP10 | +| U11 U7 U8 | +| | +| | +| U6 | +|JP11 Y2 U20 | +| | +| U25 U4 | +| S2 S1 | +|JP16 U15 U16 U17 U19 U18 U5 U13 U12 U14 | +| | +| | +| | +| JP17 JP19 JP18 JP13 JP14 JP15 | +|--------------------------------------------------------------------------------------------| + +Notes: + J1/JP5: Video connector from/to video card, not used + J2: USB port, not used + JP1-4: Video signal jumpers, not used + JP6: Video output signal to monitor, not used + JP9: Power connector + JP10: 20 pin ribbon cable connector to wheel driver board + JP11: 20 pin ribbon cable connector, not used + JP12-14: connectors, not used + JP15: 14 pin connector for analog controls/potentiometers + JP16: 15 pin connector, attack button + JP17: connector, not used + JP18: 14 pin connector for coin, service, volume and test inputs + JP19: 8 pin connector, start button + JP20: connector for development use, not used + JP21: 2 pin connector for watchdog reset + JP22: 9 pin connector for coin meter + JP23: Alternate RS232 port + JP24: connector, not used + P1: DB9 RS-232 port to computer + S1: Dip Switches (8) + S1: Dip Switches (8) + S1-7: *Off: UART, On: USB + S1-8: Off: Watchdog Disabled, *On: Watchdog Enabled + S2: Dip Switches (8) + U4-5: MC74HC273A Octal D Flip-Flop (LS273 based) + U6: Not known yet + U7/U11: Atmel 24C01A Serial EEPROM + U8: MAX707CSA Supervisory Circuit + U12-19: HC541 Octal Buffer + U20: Philips P87C51/2 8-bit Microcontroller + U21: DS14185WM RS-232 Interface IC + U22-24: ULN2064B Darlington Transistor + U25: Not known yet + Y2: FS14.74 Crystal/Oscilator + ***************************************************************************/ @@ -41,6 +262,7 @@ public: } void midqslvr(machine_config &config); + void graphite(machine_config &config); private: std::unique_ptr<uint32_t[]> m_bios_ram; @@ -419,7 +641,7 @@ void midqslvr_state::machine_reset() void midqslvr_state::midqslvr(machine_config &config) { - PENTIUM(config, m_maincpu, 333000000); // actually Celeron 333 + PENTIUM2(config, m_maincpu, 333000000); //Verified this Celeron to be Pentium II based. m_maincpu->set_addrmap(AS_PROGRAM, &midqslvr_state::midqslvr_map); m_maincpu->set_addrmap(AS_IO, &midqslvr_state::midqslvr_io); m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb)); @@ -437,65 +659,80 @@ void midqslvr_state::midqslvr(machine_config &config) pcvideo_vga(config); } +void midqslvr_state::graphite(machine_config &config) //Todo: The entire Pro133A chipset :). +{ + PENTIUM3(config, m_maincpu, 733000000); //Verified + m_maincpu->set_addrmap(AS_PROGRAM, &midqslvr_state::midqslvr_map); + m_maincpu->set_addrmap(AS_IO, &midqslvr_state::midqslvr_io); + m_maincpu->set_irq_acknowledge_callback("pic8259_1", FUNC(pic8259_device::inta_cb)); -ROM_START( offrthnd ) + pcat_common(config); + + pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); + pcibus.set_device( 0, FUNC(midqslvr_state::intel82439tx_pci_r), FUNC(midqslvr_state::intel82439tx_pci_w)); + pcibus.set_device(31, FUNC(midqslvr_state::intel82371ab_pci_r), FUNC(midqslvr_state::intel82371ab_pci_w)); + + ide_controller_device &ide(IDE_CONTROLLER(config, "ide").options(ata_devices, "hdd", nullptr, true)); + ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w)); + + /* video hardware */ + pcvideo_vga(config); +} + + +ROM_START( hydrthnd ) ROM_REGION32_LE(0x80000, "bios", 0) ROM_LOAD( "lh28f004sct.u8b1", 0x000000, 0x080000, CRC(ab04a343) SHA1(ba77933400fe470f45ab187bc0d315922caadb12) ) - ROM_REGION( 0x8000, "video_bios", ROMREGION_ERASEFF ) // TODO: no VGA card is hooked up, to be removed -// ROM_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, BAD_DUMP CRC(1eebde64) SHA1(67896a854d43a575037613b3506aea6dae5d6a19) ) -// ROM_CONTINUE( 0x0001, 0x4000 ) + ROM_REGION( 0x2000, "iocpu", 0 ) /* Diego board CY7C63513-PVC MCU code */ + ROM_LOAD( "diego.u8", 0x0000, 0x2000, NO_DUMP ) // 8KB internal EPROM DISK_REGION( "ide:0:hdd:image" ) - DISK_IMAGE( "offrthnd", 0, SHA1(d88f1c5b75361a1e310565a8a5a09c674a4a1a22) ) + DISK_IMAGE( "hydro", 0, SHA1(d481d178782943c066b41764628a419cd55f676d) ) ROM_END -ROM_START( hydrthnd ) +ROM_START( offrthnd ) ROM_REGION32_LE(0x80000, "bios", 0) ROM_LOAD( "lh28f004sct.u8b1", 0x000000, 0x080000, CRC(ab04a343) SHA1(ba77933400fe470f45ab187bc0d315922caadb12) ) - ROM_REGION( 0x8000, "video_bios", ROMREGION_ERASEFF ) // TODO: no VGA card is hooked up, to be removed -// ROM_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, BAD_DUMP CRC(1eebde64) SHA1(67896a854d43a575037613b3506aea6dae5d6a19) ) -// ROM_CONTINUE( 0x0001, 0x4000 ) + ROM_REGION( 0x2000, "iocpu", 0 ) /* Magicbus board CY7C63513-PVC MCU code */ + ROM_LOAD( "magicbus.u18", 0x0000, 0x2000, NO_DUMP ) // 8KB internal EPROM DISK_REGION( "ide:0:hdd:image" ) - DISK_IMAGE( "hydro", 0, SHA1(d481d178782943c066b41764628a419cd55f676d) ) + DISK_IMAGE( "offrthnd", 0, SHA1(d88f1c5b75361a1e310565a8a5a09c674a4a1a22) ) ROM_END ROM_START( arctthnd ) ROM_REGION32_LE(0x80000, "bios", ROMREGION_ERASEFF) ROM_LOAD( "m29f002bt.u6", 0x040000, 0x040000, CRC(012c9290) SHA1(cdee6f19d5e5ea5bb1dd6a5ec397ac70b3452790) ) - ROM_REGION( 0x8000, "video_bios", ROMREGION_ERASEFF ) // TODO: no VGA card is hooked up, to be removed -// ROM_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, BAD_DUMP CRC(1eebde64) SHA1(67896a854d43a575037613b3506aea6dae5d6a19) ) -// ROM_CONTINUE( 0x0001, 0x4000 ) + ROM_REGION( 0x2000, "iocpu", 0 ) /* Substitute board P87C51/2 MCU code */ + ROM_LOAD( "substitute.u20", 0x0000, 0x2000, NO_DUMP ) // 8KB internal EPROM DISK_REGION( "ide:0:hdd:image" ) DISK_IMAGE( "arctthnd", 0, SHA1(f4373e57c3f453ac09c735b5d8d99ff811416a23) ) ROM_END -// this also required a dongle to work ROM_START( ultarctc ) ROM_REGION32_LE(0x80000, "bios", ROMREGION_ERASEFF) ROM_LOAD( "m29f002bt.u6", 0x040000, 0x040000, CRC(012c9290) SHA1(cdee6f19d5e5ea5bb1dd6a5ec397ac70b3452790) ) - ROM_REGION( 0x8000, "video_bios", ROMREGION_ERASEFF ) // TODO: no VGA card is hooked up, to be removed -// ROM_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, BAD_DUMP CRC(1eebde64) SHA1(67896a854d43a575037613b3506aea6dae5d6a19) ) -// ROM_CONTINUE( 0x0001, 0x4000 ) + ROM_REGION( 0x2000, "iocpu", 0 ) /* Substitute board P87C51/2 MCU code */ + ROM_LOAD( "substitute.u20", 0x0000, 0x2000, NO_DUMP ) // 8KB internal EPROM DISK_REGION( "ide:0:hdd:image" ) DISK_IMAGE( "uarctict", 0, SHA1(8557a1d7ae8dc41c879350cb1c228f4c27a0dd09) ) ROM_END -// this is an update CD, We don't know if it updates the HDD image we have, if the image we have is already an updated version, if it -// requires a specific version we don't have, or even if it updates a regular Arctic Thunder to Ultimate. +/* This is an update CD. This CD along with a dongle was released as a kit to update a normal Arctic Thunder to Ultimate. +Ultimate Arctic Thunder requires a dongle to work. If the dongle isn't detected both during and after installation, +the game will revert back to normal Arctic Thunder. */ ROM_START( ultarctcup ) ROM_REGION32_LE(0x80000, "bios", ROMREGION_ERASEFF) ROM_LOAD( "m29f002bt.u6", 0x040000, 0x040000, CRC(012c9290) SHA1(cdee6f19d5e5ea5bb1dd6a5ec397ac70b3452790) ) - ROM_REGION( 0x8000, "video_bios", ROMREGION_ERASEFF ) // TODO: no VGA card is hooked up, to be removed -// ROM_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, BAD_DUMP CRC(1eebde64) SHA1(67896a854d43a575037613b3506aea6dae5d6a19) ) -// ROM_CONTINUE( 0x0001, 0x4000 ) + ROM_REGION( 0x2000, "iocpu", 0 ) /* Substitute board P87C51/2 MCU code */ + ROM_LOAD( "substitute.u20", 0x0000, 0x2000, NO_DUMP ) // 8KB internal EPROM DISK_REGION( "ide:0:hdd:image" ) DISK_IMAGE( "uarctict", 0, SHA1(8557a1d7ae8dc41c879350cb1c228f4c27a0dd09) ) @@ -513,7 +750,7 @@ GAME(1999, hydrthnd, 0, midqslvr, at_keyboard, midqslvr_state, empty_i GAME(2000, offrthnd, 0, midqslvr, at_keyboard, midqslvr_state, empty_init, ROT0, "Midway Games", "Offroad Thunder", MACHINE_IS_SKELETON) -GAME(2001, arctthnd, 0, midqslvr, at_keyboard, midqslvr_state, empty_init, ROT0, "Midway Games", "Arctic Thunder (v1.002)", MACHINE_IS_SKELETON) +GAME(2001, arctthnd, 0, graphite, at_keyboard, midqslvr_state, empty_init, ROT0, "Midway Games", "Arctic Thunder (v1.002)", MACHINE_IS_SKELETON) -GAME(2001, ultarctc, 0, midqslvr, at_keyboard, midqslvr_state, empty_init, ROT0, "Midway Games", "Ultimate Arctic Thunder", MACHINE_IS_SKELETON) -GAME(2004, ultarctcup, ultarctc, midqslvr, at_keyboard, midqslvr_state, empty_init, ROT0, "Midway Games", "Ultimate Arctic Thunder Update CD ver 1.950 (5/3/04)", MACHINE_IS_SKELETON) +GAME(2001, ultarctc, 0, graphite, at_keyboard, midqslvr_state, empty_init, ROT0, "Midway Games", "Ultimate Arctic Thunder", MACHINE_IS_SKELETON) +GAME(2004, ultarctcup, ultarctc, graphite, at_keyboard, midqslvr_state, empty_init, ROT0, "Midway Games", "Ultimate Arctic Thunder Update CD ver 1.950 (5/3/04)", MACHINE_IS_SKELETON) |