midqslvr.cpp: I/O board readme (nw) (#5846)

* documentation

* (Hopefully) requested changes.

* More updated info

I forgot MAME has the Voodoo device recalculate the screen size and timing so I removed all the "EGA" stuff.

I can confirm Midway Graphite uses a different motherboard verified on the first boot screen. The BIOS ID on that game redirects to a BMC GT694VP motherboard using a VIA Pro133A chipset. I edited the machine configs to use the "correct" CPU type and clock speeds but Midway Graphite may be its own separate driver due to the different chipset hardware.
This commit is contained in:
Hydreigon 2019-11-05 12:51:37 -06:00 committed by ajrhacker
parent 0fe97760c0
commit 074385edd6

View File

@ -2,25 +2,246 @@
// copyright-holders:Angelo Salese
/***************************************************************************
Midway Quicksilver skeleton driver
Midway Quicksilver II/Graphite skeleton driver
Hardware configurations:
TODO:
- offrthnd: illegal opcode tripped just after that PIIX4 is recognized
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.
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
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):
- 82371EB PCI-ISA bridge
- 82371EB Power Management Controller
- 82371AB/EB Universal Host Controller (USB UHCI)
- 82371AB/EB PCI Bus Master IDE Controller
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,27 @@ 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));
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);
}
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));
@ -438,64 +680,59 @@ void midqslvr_state::midqslvr(machine_config &config)
}
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 )
DISK_REGION( "ide:0:hdd:image" )
DISK_IMAGE( "offrthnd", 0, SHA1(d88f1c5b75361a1e310565a8a5a09c674a4a1a22) )
ROM_END
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( "hydro", 0, SHA1(d481d178782943c066b41764628a419cd55f676d) )
ROM_END
ROM_START( offrthnd )
ROM_REGION32_LE(0x80000, "bios", 0)
ROM_LOAD( "lh28f004sct.u8b1", 0x000000, 0x080000, CRC(ab04a343) SHA1(ba77933400fe470f45ab187bc0d315922caadb12) )
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( "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)