summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/midqslvr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/midqslvr.cpp')
-rw-r--r--src/mame/drivers/midqslvr.cpp327
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)