summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/triforce.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/triforce.cpp')
-rw-r--r--src/mame/drivers/triforce.cpp1092
1 files changed, 1092 insertions, 0 deletions
diff --git a/src/mame/drivers/triforce.cpp b/src/mame/drivers/triforce.cpp
new file mode 100644
index 00000000000..ed68898359f
--- /dev/null
+++ b/src/mame/drivers/triforce.cpp
@@ -0,0 +1,1092 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+/* Triforce Skeleton
+ -- split from Naomi.c
+
+Triforce uses:
+- a stock Gamecube motherboard with custom Bios
+- a 'media board' which acts as a CD/DVD emulator
+- the Naomi 'DIMM' board, which connects to the GD-ROM drive
+
+Sega Triforce Hardware Overview
+Sega/Namco/Nintendo 2002-2006
+-----------------------------
+
+This is a GameCube-based system containing several PCBs mounted inside a metal box.
+There are two versions. One is for GDROM-based games and the other is customised for
+use with Namco ROM carts.
+
+
+Games on this system include....
+
+ Year Game Manufacturer / Developer Media Number Key Chip PIC16C621A
++-+------+-----------------------------------------------------------------+-------------------------------------+-------|----------------+--------------|---------------|
+| | 2002 | Starfox Armada (planned, but not released) | Namco / Nintendo | Cart? | | | |
+|*| 2002 | Virtua Striker 2002 (Japan) | Sega / Amusement Vision | GDROM | GDT-0001 | 317-0337-JPN | |
+|*| 2002 | Virtua Striker 2002 (Export) | Sega / Amusement Vision | GDROM | GDT-0002 | 317-0337-EXP | |
+| | 2003 | F-Zero AX | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004 | 317-0362-COM | 253-5508-0362 |
+| | 2003 | F-Zero AX (Rev A) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004A | 317-0362-COM | 253-5508-0362 |
+| | 2003 | F-Zero AX (Rev B) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004B | 317-0362-COM | 253-5508-0362 |
+|*| 2003 | F-Zero AX (Rev C) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004C | 317-0362-COM | 253-5508-0362 |
+|*| 2003 | F-Zero AX (Rev D) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004D | 317-0362-COM | 253-5508-0362 |
+|*| 2003 | F-Zero AX (Rev E) | Sega / Amusement Vision / Nintendo | GDROM | GDT-0004E | 317-0362-COM | 253-5508-0362 |
+| | 2003 | The Key Of Avalon: The Wizard Master (server) | Sega / Hitmaker | GDROM | GDT-0005 | | |
+| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0005A | | |
+| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev B) | Sega / Hitmaker | GDROM | GDT-0005B | | |
+|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev C) | Sega / Hitmaker | GDROM | GDT-0005C | | |
+| | 2003 | The Key Of Avalon: The Wizard Master (server) (Rev D) | Sega / Hitmaker | GDROM | GDT-0005D | | |
+|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev E) | Sega / Hitmaker | GDROM | GDT-0005E | | |
+|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev F) | Sega / Hitmaker | GDROM | GDT-0005F | | |
+|*| 2003 | The Key Of Avalon: The Wizard Master (server) (Rev G) | Sega / Hitmaker | GDROM | GDT-0005G | | |
+| | 2003 | The Key Of Avalon: The Wizard Master (client) | Sega / Hitmaker | GDROM | GDT-0006 | | |
+| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0006A | | |
+| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0006B | | |
+| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev C) | Sega / Hitmaker | GDROM | GDT-0006C | | |
+| | 2003 | The Key Of Avalon: The Wizard Master (client) (Rev D) | Sega / Hitmaker | GDROM | GDT-0006D | | |
+|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev E) | Sega / Hitmaker | GDROM | GDT-0006E | | |
+|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev F) | Sega / Hitmaker | GDROM | GDT-0006F | | |
+|*| 2003 | The Key Of Avalon: The Wizard Master (client) (Rev G) | Sega / Hitmaker | GDROM | GDT-0006G | | |
+| | 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars | Sega / Wow Entertainment | GDROM | GDT-0008 | 317-0371-JPN | |
+| | 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars (Rev A) | Sega / Wow Entertainment | GDROM | GDT-0008A | 317-0371-JPN | |
+|*| 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars (Rev B) | Sega / Wow Entertainment | GDROM | GDT-0008B | 317-0371-JPN | |
+|*| 2003 | Gekitou Pro Yakyuu Mizushima Shinji All Stars (Rev C) | Sega / Wow Entertainment | GDROM | GDT-0008C | 317-0371-JPN | |
+| | 2003 | The Key Of Avalon 1.10 | Sega / Hitmaker | GDROM | | | |
+| | 2004 | The Key Of Avalon 1.??: ??? (server) | Sega / Hitmaker | GDROM | GDT-0009 | | |
+|*| 2004 | The Key Of Avalon 1.20: Summon The New Monster (server) (Rev A) | Sega / Hitmaker | GDROM | GDT-0009A | | |
+| | 2004 | The Key Of Avalon 1.??: ??? (server) (Rev B) | Sega / Hitmaker | GDROM | GDT-0009B | | |
+|*| 2004 | The Key Of Avalon 1.30: Chaotic Sabbat (server) (Rev C) | Sega / Hitmaker | GDROM | GDT-0009C | | |
+| | 2004 | The Key Of Avalon 1.??: ??? (client) | Sega / Hitmaker | GDROM | GDT-0010 | | |
+|*| 2004 | The Key Of Avalon 1.20: Summon The New Monster (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0010A | | |
+| | 2004 | The Key Of Avalon 1.??: ??? (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0010B | | |
+|*| 2004 | The Key Of Avalon 1.30: Chaotic Sabbat (client) (Rev C) | Sega / Hitmaker | GDROM | GDT-0010C | | |
+|*| 2004 | Firmware Update | Sega | GDROM | GDT-0011 | 317-0371-JPN | |
+| | 2004 | Virtua Striker 2002 (Export) | Sega | GDROM | GDT-0012 | | |
+| | 2004 | Virtua Striker 4 (Japan) | Sega | GDROM | GDT-0013 | 317-0391-JPN | |
+| | 2004 | Virtua Striker 4 (Japan) (Rev A) | Sega | GDROM | GDT-0013A | 317-0391-JPN | |
+| | 2004 | Virtua Striker 4 (Japan) (Rev B) | Sega | GDROM | GDT-0013B | 317-0391-JPN | |
+| | 2004 | Virtua Striker 4 (Japan) (Rev C) | Sega | GDROM | GDT-0013C | 317-0391-JPN | |
+| | 2004 | Virtua Striker 4 (Japan) (Rev D) | Sega | GDROM | GDT-0013D | 317-0391-JPN | |
+|*| 2004 | Virtua Striker 4 (Japan) (Rev E) | Sega | GDROM | GDT-0013E | 317-0391-JPN | |
+| | 2004 | Virtua Striker 4 (Export) | Sega | GDROM | GDT-0014 | | |
+|*| 2004 | Virtua Striker 4 (Export) | Sega | GDROM | GDT-0015 | 317-0393-EXP | |
+| | 2004 | The Key Of Avalon 2: Eutaxy Commandment (server) | Sega / Hitmaker | GDROM | GDT-0016 | | |
+| | 2004 | The Key Of Avalon 2: Eutaxy Commandment (client) | Sega / Hitmaker | GDROM | GDT-0017 | | |
+| | 2004 | The Key Of Avalon 2: Eutaxy Commandment (client) (Rev A) | Sega / Hitmaker | GDROM | GDT-0017A | | |
+|*| 2004 | The Key Of Avalon 2: Eutaxy Commandment (client) (Rev B) | Sega / Hitmaker | GDROM | GDT-0017B | | |
+| | 2004 | F-Zero AX - Monster Ride Cycraft Edition | Sega / Amusement Vision / Nintendo | GDROM | | | |
+| | 2005 | Donkey Kong Jungle Fever | Namco / Nintendo | Cart | | | |
+|*| 2005 | Mario Kart Arcade GP (Japan, MKA1 Ver.A1) | Namco / Nintendo | Cart | 837-14343-4T1 | 317-5109-COM | 253-5509-5109 |
+| | 2005 | The Key Of Avalon 2.5: War of the Key (server) | Sega / Hitmaker | GDROM | GDT-0019B | | |
+| | 2005 | The Key Of Avalon 2.5: War of the Key (client) | Sega / Hitmaker | GDROM | | | |
+| | 2006 | Virtua Striker 4 Ver.2006 (Japan) | Sega | GDROM | GDT-0020 | | |
+| | 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev A) | Sega | GDROM | GDT-0020A | | |
+| | 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev B) | Sega | GDROM | GDT-0020B | | |
+| | 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev C) | Sega | GDROM | GDT-0020C | | |
+|*| 2006 | Virtua Striker 4 Ver.2006 (Japan) (Rev D) | Sega | GDROM | GDT-0020D | | |
+|*| 2006 | Virtua Striker 4 Ver.2006 (Export) | Sega | GDROM | GDT-0021 | 317-0433-EXP | 253-5508-0433E|
+| | 2006 | Triforce Firmware Update for Compact Flash Box | Sega | GDROM | GDT-0022 | 317-0567-COM | |
+|*| 2006 | Triforce Firmware Update for Compact Flash Box (Rev A) | Sega | GDROM | GDT-0022A | 317-0567-COM | |
+| | 2006 | Donkey Kong : Banana Kingdom | Namco / Nintendo | Cart? | | | |
+|*| 2007 | Mario Kart Arcade GP 2 (Japan, MK21 Ver.A) | Namco / Nintendo | Cart | 837-14343-R4S0 | 317-5128-??? | 253-5509-5128 |
+|*| 2007 | Mario Kart Arcade GP 2 (Japan, MK21 Ver.A, alt dump) | Namco / Nintendo | Cart | 837-14343-R4S0 | 317-5128-??? | 253-5509-5128 |
++-+------+-----------------------------------------------------------------+-------------------------------------+-------|----------------+--------------+---------------|
+* denotes these games are archived.
+
+
+PCB Layouts
+===========
+
+
+Network Board (top)
+-------------
+
+This board is not used on the older Triforce version
+
+837-14341
+171-8226C SEGA 2002
+|----------------------------|
+| LLLL 070XZ1H |
+| JP1 K4S643232 |
+| JP2 24LC04 |
+| 25MHz 32.768kHz|
+|CN7 L80227/B 12MHz |
+| LL |------| |
+| |AMD | |
+| CN1 |AU1500| |
+| CN2 |------| |
+| FLASH.IC2|
+|CN4 ADM3222 |
+| JP4 ADM3222 |
+|LL JP3 ADM3222 |
+|----------------------------|
+Notes:
+ AMD AU1500 - AMD AU1500-333MBD MIPS32-compatible CPU (BGA424)
+ K4S643232 - Samsung K4S643232H-UC60 512k x 32bit x 4 banks (64 MBit) Synchronous DRAM LVTTL,
+ 3.3V, 222MHz (TSOPII-86)
+ ADM3222 - Analog Devices ADM3222 High-Speed, +3.3V, 2-Channel RS232/V.28 Interface Device
+ with 460kBPS Data Rate and Shutdown and Enable Pins (SOIC20)
+ 24LC04 - Microchip 24LC04B 2x256x8 (4kbit) Serial EEPROM (SOIC8)
+ FLASH.IC2 - ST Microelectronics M29W160ET 2M x8 (16 MBit) Flash ROM (TSOP48)
+ - Namco ROM cart version stamped 'FPR24274'
+ - Sega GDROM version stamped 'FPR24036'
+ L80277/B - LSI Logic L80227/B 10BASE-T/100BASE-TX Ethernet Network IC (QFP48)
+ 070XZ1H - Sharp 070XZ1H Voltage Regulator
+ CN1/CN2 - Connectors joining to Media Board (2nd Board)
+ CN7 - RJ45 LAN Port A
+ CN4 - DB9 Serial Port
+ JP1 - 1-2
+ JP2 - 1-2
+ JP3 - 2-3
+ JP4 - 2-3
+ L - LEDs
+
+
+Media Boards
+------------
+
+Sega GDROM-specific older version without DIMM Board (Top Board)
+This version requires a separate standard Sega DIMM Board (same as used on NAOMI)
+This was probably used only for the very early titles like Virtua Striker 2002
+
+837-14291 SEGA 2002
+171-8209B
+ |--------------------------------------|
+ | LLLLLLLL |
+ | DIP42 |----------|
+ | EPC1PC8 JP4 JP2 LL |
+ | JP3 JP1 |
+|-----------| |
+| 54MHz CN2 |
+| |-----------| |
+| FLASH.IC4 |ALTERA | |
+| |ACEX | CN5S |
+| |EP1K50QC208| |
+| | | |
+| 070XZ1H |-----------| |
+| |
+| 32.9MHz |
+| |
+|CN6S |
+| CN3 CN1 |
+|-------------------------------------------------------------|
+Notes:
+ ACEX - Altera ACEX EP1K50QC208 FPGA (QFP208)
+ EPC1PC8 - Altera EPC1PC8 One Time Programmable FPGA Configuration Device (DIP8)
+ - Sticker '315-6343P'
+ FLASH.IC4 - ST Microelectronics M29W160ET 2M x8 (16 MBit) Flash ROM (TSOP48)
+ - Stamped 'FPR23910'
+ DIP42 - DIP42 location for M27C160 2M x8 (16 MBit) EPROM (not populated)
+ CN1/2/3 - Connectors for GDROM DIMM Board
+ 070XZ1H - Sharp 070XZ1H Voltage Regulator
+ CN5S - Connector joining to GameCube PCB (located under the PCB)
+ CN6S - Connector joining to JVS Filter Board (located under the PCB)
+ JPx - Jumpers. All positioned to 2-3
+ L - LEDs
+
+
+Newer Square Metal Box Version (2nd Board down)
+
+837-14355 SEGA 2002 (Sega GDROM version)
+837-14356 SEGA 2002 (Namco ROM cart version)
+171-8232A (Namco ROM cart version)
+171-8231C (Sega GDROM version)
+837-14356R91 (sticker for Namco ROM cart version)
+837-14355-92 (sticker for Sega GDROM version)
+ |----|----------|-----------------------------|
+ | |PIC16C621 | 50HONDA SD_CARD |
+ | | 4MHz | CN6 LED |---|
+ | |----------| |
+ | DSW 3771 50MHz |
+|-----------| |
+|LED |
+|LED |-----------| |
+| FLASH.IC2 | SEGA | |
+| DIP42 | 315-6347A | CN1S CN3 |
+|LED 71V016 | | |
+|LED | | |
+| |-----------| |
+| |
+| |
+| CN8 |
+| CN9 070XZ1H |
+|CN2S CN12|
+|-------------------------------------------------------------|
+Notes:
+ 315-6347A - Sega custom IC (BGA). Sega GDROM version uses 315-6347
+ 71V016 - IDT 71V016SA 64k x 16-bit (1 MBit) 3.3V CMOS Static RAM (TSOP44)
+ This chip is located under the PCB
+ FLASH.IC2 - ST Microelectronics M29W160ET 2M x8 (16 MBit) Flash ROM (TSOP48)
+ - Namco ROM cart version stamped 'FPR24331'
+ - Sega GDROM version stamped 'FPR24035'
+ DIP42 - DIP42 location for M27C160 2M x8 (16 MBit) EPROM (not populated)
+ CN8/CN9 - Connectors joining to network PCB
+ 070XZ1H - Sharp 070XZ1H Voltage Regulator
+ SD_CARD - Standard SD Card slot (present only on Namco ROM cart version PCB, unused on Mario Kart)
+ 50HONDA - 50-pin mini Honda connector for connection of standard Sega GDROM unit for GDROM-based games only.
+ - This connector is not present on the Namco ROM cart version of this PCB
+ CN1S - Connector joining to GameCube PCB (located under the PCB)
+ CN2S - Connector joining to JVS Filter Board (located under the PCB)
+ CN3 - Connector for ROM cartridge.
+ - Replaced by 2x 168-pin DIMM Memory Slots on GDROM-based version
+ CN6 - 40 pin IDC flat cable connector (unused)
+ CN12 - 3-pin battery connector, present only on Sega GDROM version PCB
+ DSW - 2-position DIP Switch, present only on Sega GDROM version PCB
+ PIC16C621 - DIP18 socket and 4MHz OSC on a 90-degrees-mounted small PCB for
+ Microchip PIC16C621A protection key chip
+
+ROM Board (attached to CN3 of Media Board, ONLY for use with Namco ROM cart version of the Media Board)
+---------
+
+837-14343 SEGA 2002
+171-8228D
+837-14343R4S0 (sticker)
+|---------------|
+| FLASH.IC6 |
+| *FLASH.8S |
+| FLASH.IC2 |
+| *FLASH.4S |
+| PFLASH.IC9 |
+| |-------| |
+| |*Actel | |
+| |ProASIC| |
+| |-------|*CN1S|
+|LCX138 |
+| 50MHz |
+| |
+| |
+| FLASH.IC1 |
+| *FLASH.IC3S |
+| FLASH.IC5 |
+| *FLASH.IC7S |
+|CN2 |
+|---------------|
+Notes:
+ * - These parts on other side of PCB
+ FLASH.ICx - (except IC9) Samsung K9F1208U0B 512Mbit (64Mx8) or Toshiba TC58DVG02A1FT00 1Gbit (128Mx8), both 3.0V NAND Flash ROM (TSOP48)
+ FLASH.IC9 - Macronix 29LV400CTTC-70G 4MBit (512k x8 / 256k x16) 3V FLASH ROM (TSOP48)
+ CN1S - Connector joining to Media Board (located under the PCB)
+ CN2 - 10-pin JTAG Connector for reprogramming the FPGA (all JTAG connectors and required support parts are not populated)
+ ProASIC - Actel ProASIC Plus APA075 TQG100 75000 Gate FPGA stamped '315-6419B' (TQFP100)
+
+
+Main Board (GameCube)
+----------
+
+This is a standard Nintendo GameCube mainboard.
+Any GameCube mainboard or any version from any of the Triforce units will work.
+Note! The hardware specifications are IDENTICAL to any common GameCube. See
+http://hitmen.c02.at/files/yagcd/yagcd/frames.html for further detailed documentation.
+
+DOL-CPU-10 (Sega Triforce)
+DOL-CPU-20 (Namco Triforce)
+838-14297 (Sticker)
+|----------------------------------------|
+|070XZ1H MS3M32B MS3M32B |
+|D4891281 |
+|P10 |
+| |-----------| P9 P5|
+| | FLIPPER A | |
+| |2001 NINTENDO |
+|P7 |ATI NEC | |
+| AVE_N-DOL |D8926F2011 |RTC_AM-DOL P3|
+| |-----------| 32.768kHz |
+| |
+| AMP-DOL |
+|P2 |-------| P6 P4|
+| CLK_B-DOL |IBM | |
+| D135 |GEKKO | |
+| P1 |-------| P8 |
+|----------------------------------------|
+Notes:
+ 070XZ1H - Sharp 070XZ1H Voltage Regulator
+ D4891281 - NEC D4891281G5 0125XU621 16MB ARAM Auxiliary/DSP DRAM, clocked at 81MHz (SSOP54)
+ FLIPPER A - Custom NEC/ATI Flipper Chip, clocked at 162MHz (large BGA)
+ Contains (something like)....
+ MX92L832 32 Poly Phony Sound Generator
+ MX96037 16bit DSP Controller
+ Custom ATI GFX controller
+ 2MB of fast 1T-SRAM memory
+ IBM GEKKO - Custom IBM PowerPC 750-derivative 'Gekko' CPU with FPU extensions clocked at 486MHz (large BGA)
+ Full markings..... IBM
+ 45L8926ESD
+ IBM9314PQ
+ (C)IBM 2000
+ PPCDBK-EFB486X3
+ J1900LPB GE
+ MS3M32B - MoSys MS3M32B-5 B 12MB 1-T SRAM, clocked at 162MHz (x2, BGA)
+ AVE_N-DOL - Rohm BU9949FS AV Encoder stamped 'AVE N-DOL' (SSOP32)
+ AMP-DOL - Amplifier chip stamped 'AMP-DOL' (SOIC14)
+ RTC_AM-DOL - Macronix 1R7459A1 Real Time Clock, also contains the GameCube BIOS in some kind of on-chip serial EEPROM (SOIC14)
+ CLK_B-DOL - Macronix B021954 CLK B-DOL Clock Generator (SOIC14)
+ D135 - Crystal at 13.5MHz. Most likely clocks generated are....
+ Gekko: 13.5 x36 = 486MHz
+ Flipper: 13.5 x12 = 162MHz
+ 1-T SRAM: 13.5 x12 = 162MHz
+ 16M ARAM: 13.5 x6 = 81MHz
+ P1 - Motherboard Power Connector (located under the PCB)
+ P2 - Digital Video Output Connector (not used)
+ P3 - Controller Pad Board Connector (tied to lower PCB to J8 with a small flat cable)
+ P4 - Memory Card Slot Connector A \ (not used)
+ P5 - Memory Card Slot Connector B /
+ P6 - Serial Port Connector 1 (located under the PCB, tied to a plug/cable that leads to J10 on lower PCB)
+ P7 - Analog Video Output Connector (tied to a plug/cable that leads to J9 on lower PCB)
+ P8 - Serial Port Connector 2 (located under the PCB, not used)
+ P9 - Media Port Connector (joins to CN1S on the Media Board)
+ P10 - Hi-Speed Parallel Port Connector (located under the PCB, not used)
+
+
+Base Board
+----------
+1st Version (older rectangular metal box without built-in DIMM board and newer square metal box version with built in GDROM controller)
+8909960107 (8909970107) NAMCO LIMITED 2002 GC-AM BASE PCB
+
+2nd Version (newer square metal box, found in a Mario Kart Triforce unit using ROM carts)
+8909961100 (8909971100) NAMCO LIMITED 2002-2003 GC-AM BASE(B) PCB
+
+The differences between the versions seems minor... some component shuffling
+and a switch to a pb-Free manufacturing process. The PCB sizes are the same.
+However the two boards are not compatible when using the other media board. That is, a Base Board for
+GDROM will not work with the top section using ROM carts even though the boards appear identical.
+That is because when a key chip is inserted into a new board, it will marry itself with that board
+(this is stated in the F-Zero AX manual). From then onwards, the Base Board can only be used for _that_ game.
+
+ |----------------------------------|
+ | CR2032 070XZ01 |
+ | 5.5V J12 |
+ | TPS54610|
+ | |
+ | J13|
+ | ADM3222 ADM3222|
+|-----------------| | PC410|
+|CY7C1399 | |J10 |
+|LED J8 |--------| |
+|LED |---------------------| |
+|LED |------| |----| | | J9 |
+|LED |ALTERA| |CY37128 | | |
+| |EPF10K| |----| | | |
+| |------| 33MHz | |CMPV-DOL|
+| BU9480F IS63LV1024 |---------------------| |
+| |------| ADM485 070XZ01 CXA2067AS|
+| | H8S/ | |------------|
+| 3414 |2676 | ST16C550 |
+|J5 |------| |
+|---| J1 J2 J3 J4 |
+ |--------------------------------------------|
+Notes:
+ 070XZ01 - Sharp 070XZ01 Voltage Regulator
+ EPF10K - Altera FLEX EPF10K30AQC208 FPGA (QFP208)
+ CY37128 - Cypress CY37128VP100 CPLD stamped 'GCABJV1A' (QFP100)
+ CY7C1399 - Cypress CY7C1399 32k x8 3.3V Static RAM (SOJ28)
+ IS63LV1024 - ISSI IS63LV1024-12KL 128k x8 (1M) High-speed CMOS Static RAM 3.3V (SOJ32)
+ H8S/2676 - Hitachi H8S/2676 Microcontroller (QFP144)
+ BU9480F - ROHM BU9480F 16-bit stereo D/A converter (SOIC8)
+ 3414 - JRC NJM3414A Dual High Current Operational Amplifier (SOIC8)
+ ST16C550 - Exar ST16C550 Universal Asynchronous Receiver & Transmitter with 16 byte Transmit & Receive FIFO (TQFP48)
+ ADM485 - Analog Devices ADM485 +5 V Low Power Half Duplex EIA RS-485 Transceiver (SOIC8)
+ CXA2067AS - Sony CXA2067AS Video Preamplifier (SDIP30)
+ CMPV-DOL - Macronix B055055G stamped 'CMPV-DOL' (SOP24)
+ ADM3222 - Analog Devices ADM3222 High-Speed, +3.3V, 2-Channel RS232/V.28 Interface Device
+ with 460kBPS Data Rate and Shutdown and Enable Pins (SOIC20)
+ PC410 - Sharp PC410 Photocoupler (SOIC4)
+ CR20332 - 3.0 Volt Coin Battery
+ 5.5V - 5.5 Volt 1uF Super Cap
+ TPS54610 - Texas Instruments TPS54610 3V-6V Input, 6A Output Synchronous Buck PWM Switcher with Integrated FETs (SSOP28)
+ J1 - USB Connector for attachment of a Sega JVS I/O PCB
+ J2 - RCA Audio Output
+ J3 - 15-pin DSUB Video Output 1
+ J4 - 15-pin DSUB Video Output 2
+ J5 - 6-pin connector (unused)
+ J8 - Flat Cable Connector with Small Flat Cable tied to P3 on Main Board
+ J9 - Flat Cable Connector and Plug tied to P7 Analog Video Output Connector on Main Board
+ J10 - Flat Cable Connector and Plug tied to P6 Serial Port Connector 1 on Main Board
+ J12 - Power Connector tied to P1 Motherboard Power Connector on Main Board
+
+
+Filter Board
+------------
+1st Version
+8909960503 (8909970503) GC-AM CNT-JV PCB
+
+2nd Version
+8909961400 (8909971400) GC-AM CNT-JV(B) PCB
+
+The two versions are identical, the later one is pb-Free
+|------------------------------------------------------|
+|SW2 SW1 DIPSW J2 J8 |
+| J9 |
+|J3 J6 J7 |
+| |
+|J4 J5 J1 |
+|------------------------------------------------------|
+Notes:
+ J1 - 60-pin Connector joins to J13 on Base Board
+ J2 - 30-pin Connector joins to CN2S on Media Board
+ J3 - 8-pin Connector labelled 'RS232'
+ J4 - 7-pin Connector labelled 'MIDI'
+ J5 - 10-pin Connector labelled 'SI'
+ J6 - 6-pin JVS Power Connector
+ J7 - 8-pin JVS Power Connector
+ J8 - 3-pin Fan Connector
+ J9 - 4-pin Namco Audio Connector (unused)
+
+------------------------------------------------------------------------------------------------------------------
+
+ Note: "Type 3" Triforce uploads GD-ROM firmware to a MIPS processor which is DES encrypted (same as the GD images).
+ The key is 0x00 0x22 0x44 0x66 0x88 0xaa 0xcc 0xee (http://debugmo.de/2010/12/the-last-piece/).
+
+*/
+
+#include "emu.h"
+#include "cpu/powerpc/ppc.h"
+#include "machine/naomigd.h"
+
+class triforce_state : public driver_device
+{
+public:
+ triforce_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu") { }
+
+ DECLARE_READ64_MEMBER(gc_pi_r);
+ DECLARE_WRITE64_MEMBER(gc_pi_w);
+ DECLARE_READ64_MEMBER(gc_exi_r);
+ DECLARE_WRITE64_MEMBER(gc_exi_w);
+ virtual void machine_start();
+ virtual void video_start();
+ UINT32 screen_update_triforce(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ required_device<ppc_device> m_maincpu;
+};
+
+READ64_MEMBER(triforce_state::gc_pi_r)
+{
+ return 0;
+}
+
+WRITE64_MEMBER(triforce_state::gc_pi_w)
+{
+}
+
+READ64_MEMBER(triforce_state::gc_exi_r)
+{
+ return 0;
+}
+
+WRITE64_MEMBER(triforce_state::gc_exi_w)
+{
+}
+
+static ADDRESS_MAP_START( gc_map, AS_PROGRAM, 64, triforce_state )
+ AM_RANGE(0x00000000, 0x017fffff) AM_RAM
+ AM_RANGE(0x0c003000, 0x0c003fff) AM_READWRITE(gc_pi_r, gc_pi_w)
+ AM_RANGE(0x0c006800, 0x0c0068ff) AM_READWRITE(gc_exi_r, gc_exi_w)
+ AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share2") /* Program ROM */
+ADDRESS_MAP_END
+
+
+void triforce_state::video_start()
+{
+}
+
+UINT32 triforce_state::screen_update_triforce(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+static INPUT_PORTS_START( triforce )
+INPUT_PORTS_END
+
+// bootrom descrambler reversed by segher
+// Copyright 2008 Segher Boessenkool <segher@kernel.crashing.org>
+static void descrambler(UINT8* data, UINT32 size)
+{
+ UINT8 acc = 0;
+ UINT8 nacc = 0;
+
+ UINT16 t = 0x2953;
+ UINT16 u = 0xd9c2;
+ UINT16 v = 0x3ff1;
+
+ UINT8 x = 1;
+
+ for (UINT32 it = 0; it < size;)
+ {
+ int t0 = t & 1;
+ int t1 = (t >> 1) & 1;
+ int u0 = u & 1;
+ int u1 = (u >> 1) & 1;
+ int v0 = v & 1;
+
+ x ^= t1 ^ v0;
+ x ^= (u0 | u1);
+ x ^= (t0 ^ u1 ^ v0) & (t0 ^ u0);
+
+ if (t0 == u0)
+ {
+ v >>= 1;
+ if (v0)
+ v ^= 0xb3d0;
+ }
+
+ if (t0 == 0)
+ {
+ u >>= 1;
+ if (u0)
+ u ^= 0xfb10;
+ }
+
+ t >>= 1;
+ if (t0)
+ t ^= 0xa740;
+
+ nacc++;
+ acc = 2*acc + x;
+ if (nacc == 8)
+ {
+ data[BYTE8_XOR_BE(it)] ^= acc;
+ it++;
+ nacc = 0;
+ }
+ }
+}
+
+void triforce_state::machine_start()
+{
+ /* set conservative DRC options */
+ m_maincpu->ppcdrc_set_options(PPCDRC_COMPATIBLE_OPTIONS);
+
+ UINT8 *rom = (UINT8*)memregion("maincpu")->base();
+ descrambler(&rom[0x100], 0x1afe00);
+}
+
+static MACHINE_CONFIG_START( triforce_base, triforce_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", PPC603, 64000000) /* Correct CPU is a PowerPC 750 (what Apple called "G3") with paired-single vector instructions added */
+ MCFG_CPU_PROGRAM_MAP(gc_map)
+
+ MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
+ MCFG_SCREEN_UPDATE_DRIVER(triforce_state, screen_update_triforce)
+
+ MCFG_PALETTE_ADD("palette", 65536)
+
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( triforcegd, triforce_base )
+ MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", ":pic", NULL, NOOP)
+MACHINE_CONFIG_END
+
+
+#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \
+ ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_BIOS(bios+1)) /* Note '+1' */
+
+#define TRIFORCE_BIOS \
+ ROM_REGION( 0x200000, "maincpu", 0) \
+ ROM_SYSTEM_BIOS( 0, "bios0", "Triforce Bios" ) \
+ ROM_LOAD16_WORD_SWAP_BIOS( 0, "triforce_bootrom.bin", 0x000000, 0x200000, CRC(d1883221) SHA1(c3cb7227e4dbc2af861e76d00cb59726105a2e4c) )
+ROM_START( triforce )
+ TRIFORCE_BIOS
+ROM_END
+
+ROM_START( vs2002j )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0001", 0, SHA1(6c513f45561ccb8a76a7dbef38de7dbae83d6925) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("317-0337-jpn.data", 0x00, 0x50, CRC(4a1fca38) SHA1(3bc6dca4f8faba44bf5c5a8012cffc69dbb6aea2) )
+ROM_END
+
+/*
+Title VIRTUA_STRIKER_2002
+Media ID 0DD8
+Media Config GD-ROM1/1
+Regions J
+Peripheral String 0000000
+Product Number GDT-0002
+Version V1.005
+Release Date 20020730
+
+PIC
+253-5508-337E
+317-0337-EXP
+*/
+ROM_START( vs2002ex )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0002", 0, SHA1(e7bd72799b26900db77a545e0823c2dd607c5bd1) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("317-0337-exp.data", 0x00, 0x50, CRC(aa6be604) SHA1(fabc43ecfb7ddf1d5a87f10884852027d6f4773b) )
+ROM_END
+
+/*
+Title F-ZERO AX
+Media ID 6BB7
+Media Config GD-ROM1/1
+Regions J
+Peripheral String 0000000
+Product Number GDT-0004E
+Version V5.002
+Release Date 20031203
+
+PIC16C621A-20/P (317-0362-COM)
+Sticker: 253-5508-0362
+*/
+ROM_START( fzeroax )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0004e", 0, SHA1(9910d321690d8e5c1927a558c23a0b3394061e4d) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASE)
+ ROM_LOAD( "317-0362-com.pic", 0x000000, 0x004000, CRC(23d83347) SHA1(ca5a629e7405710fd4fa0af7c668192bdf8ca725) )
+ROM_END
+
+/*
+Title F-ZERO AX
+Media ID 06BB
+Media Config GD-ROM1/1
+Regions J
+Peripheral String 0000000
+Product Number GDT-0004C
+Version V3.000
+Release Date 20030611
+
+PIC16C621A-20/P (317-0362-COM)
+Sticker: 253-5508-0362
+*/
+ROM_START( fzeroaxc )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0004c", 0, SHA1(f51691a26745afc36110e5d433eb216f108a43d4) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASE)
+ ROM_LOAD( "317-0362-com.pic", 0x000000, 0x004000, CRC(23d83347) SHA1(ca5a629e7405710fd4fa0af7c668192bdf8ca725) )
+ROM_END
+
+ROM_START( avalonsc )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0005c", 0, SHA1(37b848ed131e8357ba57474f7c2aa6ab51b01781) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) )
+ROM_END
+
+ROM_START( avalonse )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0005e", 0, SHA1(a888a045c323f374b53295404262a3bb80a533c0) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) )
+ROM_END
+
+ROM_START( avalonsf )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0005f", 0, SHA1(3752e406a5542a912f8b1ef48096ed30e7d28279) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) )
+ROM_END
+
+ROM_START( avalons )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0005g", 0, SHA1(f2dca7ecd6c07ff098ac91e353ffc3fd843054e3) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) )
+ROM_END
+
+ROM_START( avalonce )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0006e", 0, SHA1(59aeb7d767d390b3ee7f079d3d1a31df3e92773b) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) )
+ROM_END
+
+ROM_START( avaloncf )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0006f", 0, SHA1(35c98e41095273326ac0c6fe633c3f6e8b328f63) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) )
+ROM_END
+
+ROM_START( avalonc )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0006g", 0, SHA1(96e1db3f395152a62d0b344c350f38306ab1e0ae) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) )
+ROM_END
+
+ROM_START( gekpuryb )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0008b", 0, SHA1(ecbf8589fc973bf121b53c3c27122a7c6ff22d8d) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("317-0371-jpn.data", 0x00, 0x50, CRC(08434e5e) SHA1(2121999e851f6f62ab845e6de40849d850ac9d1c) )
+ROM_END
+
+ROM_START( gekpurya )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0008c", 0, SHA1(722e2e2702a2f55b93cdc8b2fac3f920fbc81977) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("317-0371-jpn.data", 0x00, 0x50, CRC(08434e5e) SHA1(2121999e851f6f62ab845e6de40849d850ac9d1c) )
+ROM_END
+
+ROM_START( avalns12 )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0009a", 0, SHA1(abeb242cb7f55d003eb7ca6d42dccdb5d8080bf1) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) )
+ROM_END
+
+ROM_START( avalns13 )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0009c", 0, SHA1(b960815d85e255521fc26bd4a9e4b7e5c4469487) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) )
+ROM_END
+
+ROM_START( avalnc12 )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0010a", 0, SHA1(a82f803a2097890c29e44ef30d97ad1fcf550435) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) )
+ROM_END
+
+/*
+Title TRF GDROM TBA EX SATL
+Media ID 92C5
+Media Config GD-ROM1/1
+Regions J
+Peripheral String 0000000
+Product Number GDT-0010C
+Version V4.000
+Release Date 20040608
+Manufacturer ID
+
+TOC DISC
+Track Start Sector End Sector Track Size
+track01.bin 150 599 1058400
+track02.raw 750 2101 3179904
+track03.bin 45150 549299 1185760800
+*/
+ROM_START( avalnc13 )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0010c", 0, SHA1(c7a3fdb467ccd03b5b9b9e8e290faabcbbc77546) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("avalon.data", 0x00, 0x50, CRC(6c51e5d6) SHA1(84afef983f1f855fe8722f55baa8ea5121da9369) )
+ROM_END
+
+ROM_START( tfupdate )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0011", 0, BAD_DUMP SHA1(71bfa8f53d211085c020d54f55eeeabf85212a0b) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("317-0371-jpn.data", 0x00, 0x50, CRC(08434e5e) SHA1(2121999e851f6f62ab845e6de40849d850ac9d1c) )
+ROM_END
+
+/*
+Title VIRTUA STRIKER 4
+Media ID 7BC9
+Media Config GD-ROM1/1
+Regions J
+Peripheral String 0000000
+Product Number GDT-0013E
+Version V6.000
+Release Date 20050217
+
+PIC
+255-5508-391J
+317-0391-JPN
+*/
+ROM_START( vs4j )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0013e", 0, SHA1(8f839d3ade4019131f18bb327e69087ed52e1cc4) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("317-0391-jpn.data", 0x00, 0x50, CRC(0f2dbb73) SHA1(7b9d66abe85303b3e26b442a3a63feca1a0edbdb) )
+ROM_END
+
+/*
+Title VIRTUA STRIKER 4
+Media ID 93B2
+Media Config GD-ROM1/1
+Regions J
+Peripheral String 0000000
+Product Number GDT-0015
+Version V1.001
+Release Date 20041202
+Manufacturer ID
+TOC DISC
+Track Start Sector End Sector Track Size
+track01.bin 150 449 705600
+track02.raw 600 1951 3179904
+track03.bin 45150 549299 1185760800
+
+PIC
+255-5508-393E
+317-0393-EXP
+*/
+ROM_START( vs4 )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0015", 0, SHA1(3fa43fdab579b657cb8aeebb315d98cf0d24f921) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("317-0393-exp.data", 0x00, 0x50, CRC(2dcfecd7) SHA1(d805168e1564051ae5c47876ade2c9843253c6b4) )
+ROM_END
+
+/*
+Title TRF GDROM TBT SATL
+Media ID 1348
+Media Config GD-ROM1/1
+Regions J
+Peripheral String 0000000
+Product Number GDT-0017B
+Version V3.001
+Release Date 20041102
+Manufacturer ID
+
+TOC DISC
+Track Start Sector End Sector Track Size
+track01.bin 150 599 1058400
+track02.raw 750 2101 3179904
+track03.bin 45150 549299 1185760800
+*/
+ROM_START( avalon20 )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0017b", 0, BAD_DUMP SHA1(e2dd32c322ffcaf38b82275d2721b71bb3dfc1f2) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("gdt-0017b.data", 0x00, 0x50, CRC(32cb46d4) SHA1(a58b9e03d57b317133d9b6c29e42852af8e77559) )
+ROM_END
+
+ROM_START( vs42006 )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0020d", 0, BAD_DUMP SHA1(db256d094b9754d452d7a2b8a370699d21141c1f) )
+
+ ROM_REGION( 0x50, "pic", ROMREGION_ERASE)
+ ROM_LOAD("gdt-0020.data", 0x00, 0x50, CRC(e3d13191) SHA1(4255c09aad06eb38c16bdec881897404a3a68b37) )
+ROM_END
+
+/*
+Title VIRTUA STRIKER 4 VER.2006
+Media ID 9ED0
+Media Config GD-ROM1/1
+Regions J
+Peripheral String 0000000
+Product Number GDT-0021
+Version V1.003
+Release Date 20060131
+Manufacturer ID
+Ring Code
+
+PIC
+253-5508-0433E
+317-0433-EXP
+*/
+ROM_START( vs42k6ex )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0021", 0, SHA1(fa1511d3a0f7755df77ec535f78beff0c5a7fcbe) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
+ ROM_LOAD("317-0433-exp.pic", 0x00, 0x4000, CRC(9e52aba5) SHA1(40eff0ed8c801644849bbadada871f2abb1d95a0) )
+ROM_END
+
+/*
+Title BOX GDROM CF-BOX FIRM
+Product Number GDT-0022A
+Hardware Tri-Force
+Sec Key 253-5508-0567
+Pic 317-0567-COM
+Ver 0001
+*/
+ROM_START( tcfboxa )
+ TRIFORCE_BIOS
+
+ DISK_REGION( "gdrom" )
+ DISK_IMAGE_READONLY( "gdt-0022a", 0, SHA1(14973058d87eff93782f59878ec856a7be994b6e) )
+
+ ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
+ ROM_LOAD("317-0567-com.pic", 0x00, 0x4000, CRC(cd1d2b2d) SHA1(78203ee0339f76eb76da08d7de43e7e44e4b7d32) )
+ROM_END
+
+// This dump is tested good on h/w: was flashed to a dead cart and it then ran fine
+ROM_START( mkartagp )
+ TRIFORCE_BIOS
+
+ ROM_REGION(0x19000000, "rom_board", 0)
+ ROM_LOAD( "ic9_29lv400t", 0x00000000, 0x0080000, CRC(f1ba67b2) SHA1(212fe4b28b6f9590bff200a6680bf7ee381780c7) )
+ ROM_LOAD( "ic1_k9f1208u0b", 0x01000000, 0x4200000, CRC(7edb6ff2) SHA1(c544c09fc0441f940623c7368919e46153d49c20) )
+ ROM_LOAD( "ic2_k9f1208u0b", 0x04200000, 0x4200000, CRC(beb58594) SHA1(826ddc3db46f7644b08488618453917430bb16a1) )
+ ROM_LOAD( "ic5_k9f1208u0b", 0x08400000, 0x4200000, CRC(fd7b9a28) SHA1(bc56c0a786e70de7365bd1b46fe82b3c43388f0c) )
+ ROM_LOAD( "ic6_k9f1208u0b", 0x0c600000, 0x4200000, CRC(26bcfe14) SHA1(893e6b38cccca62037fc01012410d535634f8bc1) )
+ ROM_LOAD( "ic35_k9f1208u0b", 0x10800000, 0x4200000, CRC(9a67892f) SHA1(f2beb56d07a42a01a8cfffbf683d8ec58c8407cc) )
+ ROM_LOAD( "ic45_k9f1208u0b", 0x14c00000, 0x4200000, CRC(274e7b81) SHA1(d97951c19d4ea430e09bc56777d99651a1f888d1) )
+ROM_END
+
+/*
+
+MK21 Ver.A
+Number on ROM PCB 837-14343R4S0
+Number on Actel ProAsic 315-6419B
+Number on Key Chip (PIC) 235-5509-5128
+
+*/
+
+ROM_START( mkartag2 )
+ TRIFORCE_BIOS
+
+ ROM_REGION(0x21200000, "rom_board", 0)
+ ROM_LOAD( "ic9_mx29lv400cttc.bin", 0x00000000, 0x0080000, CRC(2bb9f1fe) SHA1(935511d93a0ab06436b0674bef90c790c100e0b1) )
+ ROM_LOAD( "ic1_k9f1208u0b.bin", 0x01000000, 0x4200000, CRC(e52f17ef) SHA1(1e007d3136cacb89c396b8261e3978956cc21bdd) )
+ ROM_LOAD( "ic2_k9f1208u0b.bin", 0x04200000, 0x4200000, CRC(8a6a2649) SHA1(fd4318e7fb5020c499e06fdb1996b8d40161b674) )
+ ROM_LOAD( "ic3_k9f1208u0b.bin", 0x08400000, 0x4200000, CRC(8fd44a29) SHA1(9392bc4da6541960a83e9c7b3ab4f36bc5564fb7) )
+ ROM_LOAD( "ic4_k9f1208u0b.bin", 0x0c600000, 0x4200000, CRC(ae3fb198) SHA1(c9c0beb9f6875dbf7ce015454a59481524ef3ef6) )
+ ROM_LOAD( "ic5_k9f1208u0b.bin", 0x10800000, 0x4200000, CRC(e9208514) SHA1(ad0ed3e681cd78a61d7ad3af83db20e364bb47fd) )
+ ROM_LOAD( "ic6_k9f1208u0b.bin", 0x14c00000, 0x4200000, CRC(7363697c) SHA1(997c96d0b41774a24a2e0427a703bc295e784187) )
+ ROM_LOAD( "ic7_k9f1208u0b.bin", 0x18e00000, 0x4200000, CRC(407da1d2) SHA1(c185ebd2f3d8654d8fd394c56ac9bfff7e49f125) )
+ ROM_LOAD( "ic8_k9f1208u0b.bin", 0x1d000000, 0x4200000, CRC(9ab76062) SHA1(36a6317c646da5cf682d46ca438ce05e600bc354) )
+ROM_END
+
+ROM_START( mkartag2a )
+ TRIFORCE_BIOS
+
+ ROM_REGION(0x21200000, "rom_board", 0)
+ ROM_LOAD( "ic9_mx29lv400cttc.bin", 0x00000000, 0x0080000, CRC(ff854fd0) SHA1(0e42aff9a60aacd200b7a29d4d180abdab6a732e) ) // sldh
+ ROM_LOAD( "ic1_k9f1208u0b.bin", 0x01000000, 0x4200000, CRC(c5624816) SHA1(d6f2a2ff9e9e14d857a0ec810521c378ba1fabd5) ) // sldh
+ ROM_LOAD( "ic2_k9f1208u0b.bin", 0x04200000, 0x4200000, CRC(44e59a1f) SHA1(68a8c1178a33e23446980ec84486bc614f830dad) ) // sldh
+ ROM_LOAD( "ic3_k9f1208u0b.bin", 0x08400000, 0x4200000, CRC(6688e7f9) SHA1(7d1e60806c02fd765dd0981e790a698a29050aae) ) // sldh
+ ROM_LOAD( "ic4_k9f1208u0b.bin", 0x0c600000, 0x4200000, CRC(e043eac2) SHA1(0108d940a852ff03e919170957f2bca2c1a88a03) ) // sldh
+ ROM_LOAD( "ic5_k9f1208u0b.bin", 0x10800000, 0x4200000, CRC(20882926) SHA1(c802de32ca24bf4e9fbabf47fed23a91b3d614ac) ) // sldh
+ ROM_LOAD( "ic6_k9f1208u0b.bin", 0x14c00000, 0x4200000, CRC(14171ba4) SHA1(3ddace539cd8a4b53a1ef03238e8404db7dcd85e) ) // sldh
+ ROM_LOAD( "ic7_k9f1208u0b.bin", 0x18e00000, 0x4200000, CRC(bd0199df) SHA1(aafb171e9f5a4c8dc2ef55ba344a0eb310c63467) ) // sldh
+ ROM_LOAD( "ic8_k9f1208u0b.bin", 0x1d000000, 0x4200000, CRC(8ad6c7ae) SHA1(749b99a944f62aefb895a622c029656c69b3c736) ) // sldh
+ROM_END
+
+/* Main board */
+/*Triforce*/GAME( 2002, triforce, 0, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Triforce Bios", MACHINE_IS_SKELETON|MACHINE_IS_BIOS_ROOT )
+
+/* GDT-xxxx (Sega GD-ROM games) */
+/* 0001 */ GAME( 2002, vs2002j, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision", "Virtua Striker 2002 (GDT-0001)", MACHINE_IS_SKELETON )
+/* 0002 */ GAME( 2002, vs2002ex, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision", "Virtua Striker 2002 (GDT-0002)", MACHINE_IS_SKELETON )
+// 0003
+// 0004 GAME( 2003, fzeroaxo, fzeroax, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (GDT-0004)", MACHINE_IS_SKELETON )
+// 0004A GAME( 2003, fzeroaxa, fzeroax, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev A) (GDT-0004A)", MACHINE_IS_SKELETON )
+// 0004B GAME( 2003, fzeroaxb, fzeroax, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev B) (GDT-0004B)", MACHINE_IS_SKELETON )
+/* 0004C */ GAME( 2003, fzeroaxc, fzeroax, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev C) (GDT-0004C)", MACHINE_IS_SKELETON )
+// 0004D GAME( 2003, fzeroaxd, fzeroax, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev D) (GDT-0004D)", MACHINE_IS_SKELETON )
+/* 0004E */ GAME( 2003, fzeroax, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Amusement Vision / Nintendo", "F-Zero AX (Rev E) (GDT-0004E)", MACHINE_IS_SKELETON )
+// 0005 GAME( 2003, avalonso, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (GDT-0005)", MACHINE_IS_SKELETON )
+// 0005A GAME( 2003, avalonsa, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev A) (GDT-0005A)", MACHINE_IS_SKELETON )
+// 0005B GAME( 2003, avalonsb, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev B) (GDT-0005B)", MACHINE_IS_SKELETON )
+/* 0005C */ GAME( 2003, avalonsc, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev C) (GDT-0005C)", MACHINE_IS_SKELETON )
+// 0005D GAME( 2003, avalonsd, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev D) (GDT-0005D)", MACHINE_IS_SKELETON )
+/* 0005E */ GAME( 2003, avalonse, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev E) (GDT-0005E)", MACHINE_IS_SKELETON )
+/* 0005F */ GAME( 2003, avalonsf, avalons, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev F) (GDT-0005F)", MACHINE_IS_SKELETON )
+/* 0005G */ GAME( 2003, avalons, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (server) (Rev G) (GDT-0005G)", MACHINE_IS_SKELETON )
+// 0006 GAME( 2003, avalonco, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (GDT-0006)", MACHINE_IS_SKELETON )
+// 0006A GAME( 2003, avalonca, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev A) (GDT-0006A)", MACHINE_IS_SKELETON )
+// 0006B GAME( 2003, avaloncb, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev B) (GDT-0006B)", MACHINE_IS_SKELETON )
+// 0006C GAME( 2003, avaloncc, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev C) (GDT-0006C)", MACHINE_IS_SKELETON )
+// 0006D GAME( 2003, avaloncd, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev D) (GDT-0006D)", MACHINE_IS_SKELETON )
+/* 0006E */ GAME( 2003, avalonce, avalonc, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev E) (GDT-0006E)", MACHINE_IS_SKELETON )
+/* 0006F */ GAME( 2003, avaloncf, avalonc, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev F) (GDT-0006F)", MACHINE_IS_SKELETON )
+/* 0006G */ GAME( 2003, avalonc, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon - The Wizard Master (client) (Rev G) (GDT-0006G)", MACHINE_IS_SKELETON )
+// 0007
+// 0008 GAME( 2003, gekpuryo, gekpurya, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (GDT-0008)", MACHINE_IS_SKELETON )
+// 0008A GAME( 2003, gekpurya, gekpurya, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev A) (GDT-0008A)", MACHINE_IS_SKELETON )
+/* 0008B */ GAME( 2003, gekpuryb, gekpurya, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev B) (GDT-0008B)", MACHINE_IS_SKELETON )
+/* 0008C */ GAME( 2003, gekpurya, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Wow Entertainment", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev C) (GDT-0008C)", MACHINE_IS_SKELETON )
+// 0009 GAME( 2004, avalns11, avalns13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (server) (GDT-0009)", MACHINE_IS_SKELETON )
+/* 0009A */ GAME( 2004, avalns12, avalns13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.2 - Summon The New Monsters (server) (Rev A) (GDT-0009A)", MACHINE_IS_SKELETON )
+// 0009B GAME( 2004, avals13b, avalns13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (server) (Rev B) (GDT-0009B)", MACHINE_IS_SKELETON )
+/* 0009C */ GAME( 2004, avalns13, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.3 - Chaotic Sabbat (server) (Rev C) (GDT-0009C)", MACHINE_IS_SKELETON )
+// 0010 GAME( 2004, avalnc11, avalnc13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (client) (GDT-0010)", MACHINE_IS_SKELETON )
+/* 0010A */ GAME( 2004, avalnc12, avalnc13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.2 - Summon The New Monsters (client) (Rev A) (GDT-0010A)", MACHINE_IS_SKELETON )
+// 0010B GAME( 2004, avalc13b, avalnc13, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.? - ??? (client) (Rev B) (GDT-0010B)", MACHINE_IS_SKELETON )
+/* 0010C */ GAME( 2004, avalnc13, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 1.3 - Chaotic Sabbat (client) (Rev C) (GDT-0010C)", MACHINE_IS_SKELETON )
+/* 0011 */ GAME( 2004, tfupdate, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Triforce DIMM Updater (GDT-0011)", MACHINE_IS_SKELETON )
+// 0012
+// 0013 GAME( 2005, vs4jo, vs4j, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (GDT-0013)", MACHINE_IS_SKELETON )
+// 0013A GAME( 2005, vs4ja, vs4j, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev A) (GDT-0013A)", MACHINE_IS_SKELETON )
+// 0013B GAME( 2005, vs4jb, vs4j, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev B) (GDT-0013B)", MACHINE_IS_SKELETON )
+// 0013C GAME( 2005, vs4jc, vs4j, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev C) (GDT-0013C)", MACHINE_IS_SKELETON )
+// 0013D GAME( 2005, vs4jd, vs4j, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev D) (GDT-0013D)", MACHINE_IS_SKELETON )
+/* 0013E */ GAME( 2005, vs4j, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Japan) (Rev E) (GDT-0013E)", MACHINE_IS_SKELETON )
+// 0014
+/* 0015 */ GAME( 2004, vs4, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 (Export) (GDT-0015)", MACHINE_IS_SKELETON )
+// 0016 GAME( 2004, aval20s, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (server) (GDT-0016)", MACHINE_IS_SKELETON )
+// 0017 GAME( 2004, avalc20o, avalon20, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (GDT-0017)", MACHINE_IS_SKELETON )
+// 0017A GAME( 2004, avalc20a, avalon20, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (Rev A) (GDT-0017A)", MACHINE_IS_SKELETON )
+/* 0017B */ GAME( 2004, avalon20, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega / Hitmaker", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (Rev B) (GDT-0017B)", MACHINE_IS_SKELETON )
+// 0018
+// 0019
+// 0020 GAME( 2006, vs42k6o, vs42006, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (GDT-0020)", MACHINE_IS_SKELETON )
+// 0020A GAME( 2006, vs42k6a, vs42006, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev A) (GDT-0020A)", MACHINE_IS_SKELETON )
+// 0020B GAME( 2006, vs42k6b, vs42006, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev B) (GDT-0020B)", MACHINE_IS_SKELETON )
+// 0020C GAME( 2006, vs42k6c, vs42006, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev C) (GDT-0020C)", MACHINE_IS_SKELETON )
+/* 0020D */ GAME( 2006, vs42006, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Japan) (Rev D) (GDT-0020D)", MACHINE_IS_SKELETON )
+/* 0021 */ GAME( 2006, vs42k6ex, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Virtua Striker 4 Ver.2006 (Export) (GDT-0021)", MACHINE_IS_SKELETON )
+// 0022 GAME( 2006, tcfboxo, tcfboxa, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Triforce Firmware Update For Compact Flash Box (GDT-0022)", MACHINE_IS_SKELETON )
+/* 0022A */ GAME( 2006, tcfboxa, triforce, triforcegd, triforce, driver_device, 0, ROT0, "Sega", "Triforce Firmware Update For Compact Flash Box (Rev A) (GDT-0022A)", MACHINE_IS_SKELETON )
+
+// 837-xxxxx (Sega cart games)
+/* 14343-4T1 */ GAME( 2005, mkartagp, triforce, triforce_base, triforce, driver_device, 0, ROT0, "Namco / Nintendo", "Mario Kart Arcade GP (Japan, MKA1 Ver.A1)", MACHINE_IS_SKELETON )
+/* 14343-R4S0 */ GAME( 2007, mkartag2, triforce, triforce_base, triforce, driver_device, 0, ROT0, "Namco / Nintendo", "Mario Kart Arcade GP 2 (Japan, MK21 Ver.A)", MACHINE_IS_SKELETON )
+/* 14343-R4S0 */ GAME( 2007, mkartag2a,mkartag2, triforce_base, triforce, driver_device, 0, ROT0, "Namco / Nintendo", "Mario Kart Arcade GP 2 (Japan, MK21 Ver.A, alt dump)", MACHINE_IS_SKELETON )