mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-20 02:13:28 -05:00
Each platform's own packages were read at the revision our data pins, for every emulator and core it ships: Batocera, Recalbox, RetroPie, ROCKNIX, Lakka, RetroDECK, RetroBat and EmuDeck. Files a package installs where the emulator reads them are recorded with installed_on, and files a release bundles but a package leaves out with not_bundled_on, so each platform's pack brings what its users lack and nothing they already have. The standalone profiles never checked before were held against their releases the same way. Batocera's imame4all is the mame2000 core. The primary neogeo.zip was a 7.7 KB placeholder no platform pins and no pack served: removed, the real dumps stay in .variants.
403 lines
18 KiB
YAML
403 lines
18 KiB
YAML
emulator: Triforce
|
|
type: standalone
|
|
core_classification: enhanced_fork
|
|
source: "https://github.com/REG-Linux/dolphin-triforce"
|
|
upstream: "https://github.com/dolphin-emu/dolphin"
|
|
profiled_date: "2026-08-08"
|
|
source_commit: "5c456e8ff0da0235be2cf1d55ba7bb2115b0cae2"
|
|
core_version: "2407"
|
|
display_name: "Namco / Sega / Nintendo - Triforce (Dolphin Triforce)"
|
|
cores:
|
|
- triforce
|
|
- dolphin-triforce
|
|
systems:
|
|
- sega-triforce
|
|
- nintendo-wii-arcade
|
|
- nintendo-gamecube
|
|
- nintendo-wii
|
|
mode: standalone
|
|
|
|
notes: |
|
|
crediar's Dolphin fork, which adds the Triforce arcade boards (AM-Baseboard on
|
|
the serial interface, AM-Mediaboard on the disc interface) and the Wii Arcade
|
|
boards on top of GameCube and Wii emulation. The tree self-reports Dolphin 2407
|
|
(CMake/ScmRevGen.cmake:34-35) and builds DolphinQt. crediar publishes the source
|
|
on crediar.dev. The commit profiled here is the REG-Linux mirror of it, whose
|
|
Data/Sys tree matches the Hancock33 and ReaverTeknoGods mirrors byte for byte.
|
|
ES-DE looks for dolphin-emu-triforce on Linux and Triforce.exe or
|
|
Triforce/DolphinWX.exe on Windows, RetroBat installs it as dolphin-triforce.
|
|
|
|
segaboot.gcm is the Triforce firmware. DVDInterface::Init calls
|
|
AMMediaboard::Init only when EXI serial port 1 holds the AM Mediaboard, so the
|
|
read happens on every Triforce launch and never otherwise
|
|
(Source/Core/Core/HW/DVD/DVDInterface.cpp:289-294). Init resolves the file under
|
|
Sys/Triforce, with no User fallback, and copies min(file size, 2 MiB) into the
|
|
firmware buffer without checking anything
|
|
(Source/Core/Core/HW/DVD/AMMediaboard.cpp:215-233). A missing file raises a
|
|
modal alert and returns before the buffer is filled, leaving it at 0xFF. The
|
|
guest reads that buffer whenever the firmware is mapped
|
|
(Source/Core/Core/HW/DVD/AMMediaboard.cpp:1083-1090), which is how the Service
|
|
and Test menus are reached. The tree ships the copy documented below, SegaBoot
|
|
v3.11 with a RELSAB header, and the mediaboard answers GetSegaBootVersion for
|
|
both 3.09 and 3.11 layouts
|
|
(Source/Core/Core/HW/DVD/AMMediaboard.cpp:1268-1269, 1397-1398).
|
|
|
|
Triforce mode also swaps the GameCube boot ROM name: GetBootROMPath returns
|
|
IPL_TRI.bin instead of IPL.bin, User first then Sys
|
|
(Source/Core/Core/Config/MainSettings.cpp:614-625). Load_BS2 reads at most 2 MiB,
|
|
CRC32s what it read against a table of Redump dumps and accepts 0xD1883221 as
|
|
the Triforce revision (Source/Core/Core/Boot/Boot.cpp:391-436). On that match it
|
|
patches OSReport and maps SegaBoot as firmware so the guest IPL can chain into
|
|
it (Source/Core/Core/Boot/Boot.cpp:482-489). SkipIPL defaults to true
|
|
(Source/Core/Core/Config/MainSettings.cpp:37) and EmulatedBS2 otherwise copies
|
|
the disc straight into DIMM memory and clears the firmware mapping
|
|
(Source/Core/Core/Boot/Boot_BS2Emu.cpp:332-347), so games run without any IPL.
|
|
|
|
Boot ROM directories follow the legacy naming: GetDirectoryForRegion defaults to
|
|
RegionDirectoryStyle::Legacy (Source/Core/Core/Config/MainSettings.h:369-370) and
|
|
every boot ROM caller takes the default, so NTSC-J resolves to JAP. FindIPLDump
|
|
probes USA, EUR and JAP and stops there
|
|
(Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:180-189).
|
|
|
|
Wii Arcade runs as IOSC console type RVA, reached three ways: the RVA expansion
|
|
device in slot A (Source/Core/Core/IOS/IOSC.cpp:213-218), an RVA.txt file in the
|
|
System Menu title data (Source/Core/Core/Boot/Boot_BS2Emu.cpp:387-397), or a
|
|
ticket issued by Root-CA10000000-XS10000000
|
|
(Source/Core/Core/IOS/ES/Formats.cpp:490-493). That console type switches to the
|
|
development common key and root key held in the binary
|
|
(Source/Core/Core/IOS/IOSC.cpp:603-615).
|
|
|
|
Save data the emulator creates on first run is keyed on the disc, so none of it
|
|
can be supplied: tridimm_<game-id>.bin and backup_<game-id>.bin
|
|
(Source/Core/Core/HW/DVD/AMMediaboard.cpp:201-202), the baseboard backup
|
|
tribackup_<game-id>.bin
|
|
(Source/Core/Core/HW/EXI/EXI_DeviceAMBaseboard.cpp:77-100), the card reader image
|
|
tricard_<game-id>.bin
|
|
(Source/Core/Core/HW/SI/SI_DeviceAMBaseboard.cpp:1147-1310), and the three Wii
|
|
Arcade SRAM images under User/Arcade, sized 0x1400, 0x1A40 and 0x8000 by game
|
|
type (Source/Core/Core/HW/EXI/EXI_DeviceRVA.cpp:1249-1285).
|
|
|
|
Recognised Triforce titles are F-Zero AX, F-Zero AX Monster Ride, Mario Kart
|
|
Arcade GP 1 and 2, Virtua Striker 3 and 4, Gekitou Pro Yakyuu and Key of Avalon
|
|
(Source/Core/Core/HW/DVD/AMMediaboard.h:25-36).
|
|
|
|
# Two roots. Paths starting with Sys/ are relative to the installation data
|
|
# directory returned by File::GetSysDirectory (Source/Core/Common/FileUtil.cpp:800),
|
|
# which is where the code looks and nowhere else. Every other path is relative to
|
|
# the user directory (GC/, GBA/, Wii/, Triforce/, Arcade/, Load/), which the code
|
|
# tries first, falling back to the same relative path under Sys/ for the GameCube
|
|
# boot ROMs and DSP ROMs.
|
|
|
|
files:
|
|
# -- Triforce firmware --
|
|
- name: "segaboot.gcm"
|
|
path: "Sys/Triforce/segaboot.gcm"
|
|
description: "SegaBoot, the Triforce system disc image held on the AM-Mediaboard"
|
|
system: sega-triforce
|
|
size: 2097152
|
|
sha1: "87918619c632ac9de270d4fdf396a57eb57fc620"
|
|
required: true
|
|
bundled: true
|
|
not_bundled_on: [retrobat]
|
|
source_ref: "Source/Core/Core/HW/DVD/AMMediaboard.cpp:215-233, Source/Core/Core/HW/DVD/DVDInterface.cpp:289-294"
|
|
note: >
|
|
Read on every Triforce launch, Sys/Triforce only with no User fallback.
|
|
Nothing is validated, min(file size, 2 MiB) is copied into the firmware
|
|
buffer. The hash is the copy the fork's own Data/Sys tree carries, SegaBoot
|
|
v3.11. A build installs it with the rest of Data/Sys (CMakeLists.txt:1039).
|
|
The older build RetroBat ships as dolphin-triforce has no Sys/Triforce.
|
|
|
|
# -- Triforce GameCube boot ROM --
|
|
# Region-specific directory, User/GC/<region>/ then Sys/GC/<region>/.
|
|
# One dump (Redump "Triforce (ARCADE BOOTROM)", DEV revision 1.0) serves every
|
|
# directory, the region only decides where the code looks.
|
|
- name: "IPL_TRI.bin"
|
|
path: "GC/USA/IPL_TRI.bin"
|
|
description: "Triforce boot ROM, NTSC-U directory"
|
|
system: sega-triforce
|
|
region: [north-america]
|
|
size: 2097152
|
|
crc32: "d1883221"
|
|
validation: [crc32]
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Common/CommonPaths.h:149, Source/Core/Core/Config/MainSettings.cpp:614-625, Source/Core/Core/Boot/Boot.cpp:400,415-436"
|
|
note: >
|
|
CRC32 is computed over the first 2 MiB and compared against the Redump
|
|
table, 0xD1883221 being the Triforce revision. An unknown value warns and
|
|
loading continues. A match also maps SegaBoot as firmware
|
|
(Source/Core/Core/Boot/Boot.cpp:482-489).
|
|
|
|
- name: "IPL_TRI.bin"
|
|
path: "GC/EUR/IPL_TRI.bin"
|
|
description: "Triforce boot ROM, PAL directory"
|
|
system: sega-triforce
|
|
region: [europe, oceania]
|
|
size: 2097152
|
|
crc32: "d1883221"
|
|
validation: [crc32]
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Core/Config/MainSettings.cpp:620-623"
|
|
|
|
- name: "IPL_TRI.bin"
|
|
path: "GC/JAP/IPL_TRI.bin"
|
|
description: "Triforce boot ROM, NTSC-J directory"
|
|
system: sega-triforce
|
|
region: [japan, south-korea]
|
|
size: 2097152
|
|
crc32: "d1883221"
|
|
validation: [crc32]
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Core/Config/MainSettings.cpp:587-612,620-623"
|
|
note: "JAP is the directory the legacy naming style returns for NTSC-J."
|
|
|
|
# -- AM-Mediaboard system state --
|
|
- name: "trinetcfg.bin"
|
|
path: "Triforce/trinetcfg.bin"
|
|
description: "Mediaboard network configuration"
|
|
system: sega-triforce
|
|
required: false
|
|
unsourceable: "created empty by the emulator on first Triforce launch, written by the guest, no hardware dump equivalent"
|
|
source_ref: "Source/Core/Core/HW/DVD/AMMediaboard.cpp:169-177,198"
|
|
|
|
- name: "trinetctrl.bin"
|
|
path: "Triforce/trinetctrl.bin"
|
|
description: "Mediaboard network control block"
|
|
system: sega-triforce
|
|
required: false
|
|
unsourceable: "created empty by the emulator on first Triforce launch, written by the guest, no hardware dump equivalent"
|
|
source_ref: "Source/Core/Core/HW/DVD/AMMediaboard.cpp:169-177,199"
|
|
|
|
- name: "triextra.bin"
|
|
path: "Triforce/triextra.bin"
|
|
description: "Mediaboard extra settings block"
|
|
system: sega-triforce
|
|
required: false
|
|
unsourceable: "created empty by the emulator on first Triforce launch, written by the guest, no hardware dump equivalent"
|
|
source_ref: "Source/Core/Core/HW/DVD/AMMediaboard.cpp:169-177,200"
|
|
|
|
# -- Wii Arcade --
|
|
- name: "RVA.txt"
|
|
path: "Wii/title/00000001/00000002/data/RVA.txt"
|
|
description: "Marker that switches the emulated console to Wii Arcade mode"
|
|
system: nintendo-wii-arcade
|
|
required: false
|
|
unsourceable: "user-created marker inside the emulated NAND, only its presence is tested, no file is distributed"
|
|
source_ref: "Source/Core/Common/CommonPaths.h:165, Source/Core/Core/Boot/Boot_BS2Emu.cpp:387-397"
|
|
note: >
|
|
Opened for read inside the System Menu title data. Success sets console type
|
|
RVA and forces the RGB region settings. The RVA expansion device in slot A
|
|
reaches the same console type without it
|
|
(Source/Core/Core/IOS/IOSC.cpp:213-218).
|
|
|
|
# -- GameCube boot ROM --
|
|
# User/GC/<region>/ then Sys/GC/<region>/. Also the preferred source for the
|
|
# GameCube fonts when present.
|
|
- name: "IPL.bin"
|
|
path: "GC/USA/IPL.bin"
|
|
description: "GameCube NTSC-U boot ROM"
|
|
system: nintendo-gamecube
|
|
region: [north-america]
|
|
size: 2097152
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Common/CommonPaths.h:148, Source/Core/Core/Config/MainSettings.cpp:627-630, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:109-118,182-183"
|
|
note: "Needed to boot the GameCube menu and to take the fonts from a real dump."
|
|
|
|
- name: "IPL.bin"
|
|
path: "GC/EUR/IPL.bin"
|
|
description: "GameCube PAL boot ROM"
|
|
system: nintendo-gamecube
|
|
region: [europe, oceania]
|
|
size: 2097152
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:184-185"
|
|
|
|
- name: "IPL.bin"
|
|
path: "GC/JAP/IPL.bin"
|
|
description: "GameCube NTSC-J boot ROM"
|
|
system: nintendo-gamecube
|
|
region: [japan, south-korea]
|
|
size: 2097152
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:186-187"
|
|
|
|
# -- DSP ROMs --
|
|
# User/GC/ then Sys/GC/. Used by DSP LLE, and dsp_coef.bin also by the HLE
|
|
# polyphase resampler.
|
|
- name: "dsp_rom.bin"
|
|
path: "GC/dsp_rom.bin"
|
|
description: "DSP instruction ROM"
|
|
size: 8192
|
|
validation: [size, adler32]
|
|
known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
|
|
adler32_byteswap: true
|
|
adler32_pairs_with: "dsp_coef.bin"
|
|
adler32_pairs: [["0x66f334fe", "0xf3b93527"], ["0xe789b5a5", "0xa4a575f5"]]
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Common/CommonPaths.h:145, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-105,109-118, Source/Core/Core/DSP/DSPCore.h:44, Source/Core/Core/DSP/DSPCore.cpp:36-38, Source/Core/Core/DSP/DSPCore.cpp:28-102"
|
|
note: >
|
|
LoadDSPRom rejects any file whose length differs from DSP_IROM_BYTE_SIZE and
|
|
swaps every 16 bit word before storing it, so the Adler32 in the source is
|
|
taken over the swapped data (Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:100-102).
|
|
The pair is matched against seven known sets, the first being the Nintendo
|
|
ROMs, and a miss asks the user whether to stop
|
|
(Source/Core/Core/DSP/DSPCore.cpp:60-84).
|
|
|
|
- name: "dsp_coef.bin"
|
|
path: "GC/dsp_coef.bin"
|
|
description: "DSP coefficient ROM"
|
|
size: 4096
|
|
validation: [size, adler32]
|
|
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
|
|
adler32_byteswap: true
|
|
adler32_pairs_with: "dsp_rom.bin"
|
|
adler32_pairs: [["0xf3b93527", "0x66f334fe"], ["0xa4a575f5", "0xe789b5a5"]]
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Common/CommonPaths.h:146, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-105,110-119, Source/Core/Core/DSP/DSPCore.h:58, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:61-62, Source/Core/Core/DSP/DSPCore.cpp:28-102"
|
|
note: >
|
|
Also read by the HLE AX ucode for polyphase resampling. Adler32 is taken over
|
|
the byte-swapped data (Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:100-102).
|
|
|
|
# -- GameCube fonts --
|
|
# Sys/GC/ only. Skipped when an IPL dump is available, the fonts are then read
|
|
# out of the dump at 0x1aff00 and 0x1fcf00 instead.
|
|
- name: "font_western.bin"
|
|
path: "Sys/GC/font_western.bin"
|
|
description: "Windows-1252 font used by GameCube and Wii text rendering"
|
|
size: 9589
|
|
required: false
|
|
installed_on: [retrobat]
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Common/CommonPaths.h:142, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:131,203-247"
|
|
note: >
|
|
Size is the official font length the code reads from an IPL dump, 0x2575
|
|
(Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:234-236). A standalone file is
|
|
read without any check. The fork's tree carries no font, RetroBat's
|
|
dolphin-triforce package installs the free replacement here.
|
|
|
|
- name: "font_japanese.bin"
|
|
path: "Sys/GC/font_japanese.bin"
|
|
description: "Shift-JIS font used by GameCube and Wii text rendering"
|
|
size: 303693
|
|
required: false
|
|
installed_on: [retrobat]
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Common/CommonPaths.h:143, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:130,203-247"
|
|
note: "Size is the official font length read from an IPL dump, 0x4a24d. The fork's tree carries no font, RetroBat's dolphin-triforce package installs the free replacement here."
|
|
|
|
# -- GBA BIOS --
|
|
- name: "gba_bios.bin"
|
|
path: "GBA/gba_bios.bin"
|
|
description: "GBA BIOS for the GameCube to Game Boy Advance link"
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Common/CommonPaths.h:155, Source/Core/Common/FileUtil.cpp:917-919, Source/Core/Core/HW/GBACore.cpp:202-206,336-353"
|
|
note: >
|
|
Loaded into the integrated mGBA core, which fails to start without it. The
|
|
path is overridable by the Main.GBA BIOS setting
|
|
(Source/Core/Core/Config/MainSettings.cpp:361).
|
|
|
|
# -- Wii system files --
|
|
- name: "SYSCONF"
|
|
path: "Wii/shared2/sys/SYSCONF"
|
|
description: "Wii system configuration"
|
|
size: 16384
|
|
validation: [size]
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Common/CommonPaths.h:87,127, Source/Core/Core/SysConf.cpp:19,54-65"
|
|
note: >
|
|
SysConf::Load rejects any size other than SYSCONF_SIZE and falls back to
|
|
built-in defaults. Generated by the emulator, can come from a NAND backup
|
|
instead.
|
|
|
|
- name: "setting.txt"
|
|
path: "Wii/title/00000001/00000002/data/setting.txt"
|
|
description: "Wii region, area and serial settings"
|
|
size: 256
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Common/CommonPaths.h:163, Source/Core/Core/Boot/Boot_BS2Emu.cpp:412-424, Source/Core/Common/SettingsHandler.h:21,26"
|
|
note: >
|
|
Read into a fixed 256 byte buffer, then rewritten during Wii boot emulation
|
|
from the region settings table.
|
|
|
|
- name: "nand.bin"
|
|
path: null
|
|
description: "BootMii NAND backup, imported through the NAND importer"
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:26-40,42-57"
|
|
note: >
|
|
Accepted at 0x21000000 bytes, or 0x21000400 when the OTP and SEEPROM dump is
|
|
appended. Any other size is rejected.
|
|
|
|
- name: "keys.bin"
|
|
path: "Wii/keys.bin"
|
|
description: "OTP and SEEPROM dump holding the console keys"
|
|
size: 1024
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:19,76-88,288-298, Source/Core/Core/IOS/IOSC.cpp:639-665"
|
|
note: >
|
|
Asked for at import time when not appended to the NAND image, and written to
|
|
the Wii root. Read at every boot, absence falls back to the built-in default
|
|
key set.
|
|
|
|
- name: "clientca.pem"
|
|
path: "Wii/clientca.pem"
|
|
description: "SSL client certificate extracted from IOS13"
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:201-286"
|
|
note: "Located inside the IOS13 content during NAND import by its leading bytes."
|
|
|
|
- name: "clientcakey.pem"
|
|
path: "Wii/clientcakey.pem"
|
|
description: "SSL client private key extracted from IOS13"
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:237"
|
|
|
|
- name: "rootca.pem"
|
|
path: "Wii/rootca.pem"
|
|
description: "SSL root certificate extracted from IOS13"
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/DiscIO/NANDImporter.cpp:238"
|
|
|
|
- name: "WiiSD.raw"
|
|
path: "Load/WiiSD.raw"
|
|
description: "Virtual SD card image for the Wii SD slot"
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Common/CommonPaths.h:160, Source/Core/Common/FileUtil.cpp:909"
|
|
note: "Created by the emulator, path overridable by the General WiiSDCardPath setting."
|
|
|
|
- name: "Wii System Menu"
|
|
path: null
|
|
description: "Wii System Menu WAD, installed into the emulated NAND"
|
|
required: false
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/DolphinQt/MenuBar.cpp:290,1098-1112"
|
|
note: "Needed to boot the Wii Menu. Installed through Tools, Install WAD."
|
|
|
|
- name: "codehandler.bin"
|
|
path: "Sys/codehandler.bin"
|
|
description: "Gecko code handler used to apply cheat codes"
|
|
required: false
|
|
installed_on: [retrobat]
|
|
hle_fallback: true
|
|
source_ref: "Source/Core/Common/CommonPaths.h:167, Source/Core/Core/GeckoCode.cpp:121-134"
|
|
note: >
|
|
Read from the Sys root. Cheats are refused when it is missing and when it
|
|
exceeds the installer window. Absent from the fork's tree, installed by
|
|
RetroBat's dolphin-triforce package.
|