Files
libretro/emulators/dolphin.yml
T
Abdessamad Derraz b3b3880c19 chore: say which repository each source_ref cites
Profiles that read two repositories, a libretro port and its upstream,
now prefix each citation with source or upstream, decided by which tree
carries the cited value at its pin. The emulator pages use the word to
tell libretro glue, emulator code as the port carries it, and the
upstream emulator apart.
2026-10-20 09:23:41 +02:00

399 lines
17 KiB
YAML

emulator: Dolphin
type: standalone + libretro
core_classification: community_fork
source: "https://github.com/libretro/dolphin"
upstream: "https://github.com/dolphin-emu/dolphin"
logo: "https://raw.githubusercontent.com/dolphin-emu/dolphin/master/Data/dolphin-emu.svg"
profiled_date: "2026-03-23"
source_commit: "4d23cf151640eb810cb1b8e9d9fc922cf59c0b87"
core_version: "Git"
display_name: "Nintendo - GameCube / Wii (Dolphin)"
cores:
- dolphin
- "dolphin-gui"
systems: [nintendo-gamecube, nintendo-wii, sega-triforce]
# path: is where the libretro core reads a file, standalone_path: where the
# standalone app reads it under its User directory.
# Libretro: User is <save>/User, Sys is <system>/dolphin-emu/Sys
# (Source/Core/DolphinLibretro/Boot.cpp:248-254). The GC ROMs and
# segaboot.gcm fall back to Sys (Source/Core/Core/Config/MainSettings.cpp:761-768,
# Source/Core/Core/HW/DVD/AMMediaboard.cpp:500-513). The Wii and GBA files
# are read under User only.
pack_structure:
libretro: "dolphin-emu"
standalone: ""
data_directories:
- ref: dolphin-sys
installed_on: [batocera, lakka, retrobat, retrodeck]
mode: libretro
destination: "Sys"
source_ref: "source Source/Core/Common/CommonPaths.h:128-141"
files:
# -- GameCube IPL (Boot ROM) --
# Region-specific, placed in GC/<region>/IPL.bin
# Checked in User/GC/<region>/ then Sys/GC/<region>/
# Regions: USA, EUR, JAP (legacy), JPN, DEV
- name: "IPL.bin"
path: "dolphin-emu/Sys/GC/USA/IPL.bin"
standalone_path: "GC/USA/IPL.bin"
system: nintendo-gamecube
region: [north-america]
size: 2097152
required: false
hle_fallback: true
note: "GameCube NTSC-U boot ROM. HLE available but real IPL needed for GC menu boot and accurate fonts"
source_ref: "upstream Source/Core/Common/CommonPaths.h:139, source Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:108"
- name: "IPL.bin"
path: "dolphin-emu/Sys/GC/EUR/IPL.bin"
standalone_path: "GC/EUR/IPL.bin"
system: nintendo-gamecube
region: [europe, oceania]
size: 2097152
required: false
hle_fallback: true
note: "GameCube PAL boot ROM"
source_ref: "source Source/Core/Core/Config/MainSettings.cpp:776-782"
- name: "IPL.bin"
path: "dolphin-emu/Sys/GC/JAP/IPL.bin"
standalone_path: "GC/JAP/IPL.bin"
system: nintendo-gamecube
region: [japan, south-korea]
size: 2097152
required: false
hle_fallback: true
note: "GameCube NTSC-J boot ROM. JAP is the legacy directory name"
source_ref: "source Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:185"
# -- DSP ROMs --
# Used by DSP LLE for accurate audio.
# Dolphin ships free replacement ROMs, but real dumps improve accuracy.
# Searched in: User/GC/ then Sys/GC/
- name: "dsp_rom.bin"
path: "dolphin-emu/Sys/GC/dsp_rom.bin"
standalone_path: "GC/dsp_rom.bin"
size: 8192
required: false
hle_fallback: true
validation: [size, adler32]
known_hash_adler32: ["0x66f334fe", "0xe789b5a5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_coef.bin"
adler32_pairs: [["0x66f334fe", "0xf3b93527"], ["0xe789b5a5", "0xa4a575f5"]]
note: "DSP instruction ROM for LLE audio. Free replacement (v0.4) included"
source_ref: "upstream Source/Core/Common/CommonPaths.h:136, source Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:84-117, source Source/Core/Core/DSP/DSPCore.cpp:28-102"
- name: "dsp_coef.bin"
path: "dolphin-emu/Sys/GC/dsp_coef.bin"
standalone_path: "GC/dsp_coef.bin"
size: 4096
required: false
hle_fallback: true
validation: [size, adler32]
known_hash_adler32: ["0xf3b93527", "0xa4a575f5"]
adler32_byteswap: true
adler32_pairs_with: "dsp_rom.bin"
adler32_pairs: [["0xf3b93527", "0x66f334fe"], ["0xa4a575f5", "0xe789b5a5"]]
note: "DSP coefficient ROM for LLE audio and HLE polyphase resampling. Free replacement included"
source_ref: "upstream Source/Core/Common/CommonPaths.h:137, source Source/Core/Core/DSP/DSPCore.cpp:32-33, source Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:55-62, source Source/Core/Core/DSP/DSPCore.cpp:28-102"
# -- GameCube Fonts --
# Bundled free alternatives exist but have padding differences causing misplaced text.
# If IPL dump is present, fonts are extracted from it instead (preferred).
# Searched in: Sys/GC/
- name: "font_western.bin"
path: "dolphin-emu/Sys/GC/font_western.bin"
standalone_path: "GC/font_western.bin"
size: 9589
required: false
hle_fallback: true
note: "Windows-1252 font for GC/Wii text rendering. Free alternative bundled, real one from IPL dump preferred"
source_ref: "upstream Source/Core/Common/CommonPaths.h:133, source Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:130, 202-239"
- name: "font_japanese.bin"
path: "dolphin-emu/Sys/GC/font_japanese.bin"
standalone_path: "GC/font_japanese.bin"
size: 303693
required: false
hle_fallback: true
note: "Shift-JIS font for Japanese text. Free alternative bundled, real one from IPL dump preferred"
source_ref: "upstream Source/Core/Common/CommonPaths.h:134, source Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:129, 234"
# -- Triforce firmware --
# Loaded from User/Triforce/ only, no Sys fallback.
- name: "segaboot.gcm"
path: "dolphin-emu/Sys/Triforce/segaboot.gcm"
standalone_path: "Triforce/segaboot.gcm"
system: sega-triforce
required: true
note: "SegaBoot, the Triforce system disc image. Read on every Triforce boot, min(size, 2 MiB) copied into the firmware buffer, nothing validated"
source_ref: "source Source/Core/Core/HW/DVD/AMMediaboard.cpp:163, source Source/Core/Core/HW/DVD/AMMediaboard.cpp:521, source Source/Core/Core/HW/DVD/AMMediaboard.cpp:551-571, source Source/Core/Core/HW/DVD/DVDInterface.cpp:292-294, source Source/Core/Core/System.h:147"
# -- GBA BIOS (for GC-GBA link) --
# Used by integrated mGBA core for GameCube-GBA connectivity.
# Loaded from User/GBA/gba_bios.bin (no Sys fallback).
- name: "gba_bios.bin"
path: "GBA/gba_bios.bin"
load_from:
libretro: save_dir
required: false
hle_fallback: true
note: "GBA BIOS for GC-GBA link feature (uses integrated mGBA). Path configurable in settings"
source_ref: "upstream Source/Core/Common/CommonPaths.h:145, source Source/Core/Core/HW/GBACore.cpp:346-363"
# -- Wii System Files --
# Generated/managed by Dolphin's Wii NAND emulation.
# Not typically user-supplied, but needed for full Wii functionality.
- name: "SYSCONF"
path: "Wii/shared2/sys/SYSCONF"
load_from:
libretro: save_dir
required: false
hle_fallback: true
note: "Wii system configuration. Auto-generated by Dolphin, can be imported from NAND backup"
source_ref: "upstream Source/Core/Common/CommonPaths.h:118, source Source/Core/Common/FileUtil.cpp:905"
- name: "setting.txt"
path: "Wii/title/00000001/00000002/data/setting.txt"
load_from:
libretro: save_dir
size: 256
required: false
hle_fallback: true
note: "Wii region/language settings. Auto-generated by Dolphin during Wii boot emulation"
source_ref: "upstream Source/Core/Common/CommonPaths.h:153, source Source/Core/Core/Boot/Boot_BS2Emu.cpp:384-460"
# -- Wii NAND Backup (BootMii) --
- name: "nand.bin"
path: null
required: false
hle_fallback: true
note: "BootMii NAND backup. Can be imported to populate Wii NAND with channels, saves, system menu"
source_ref: "source Source/Core/DiscIO/NANDImporter.cpp:27-45, 47-92"
- name: "keys.bin"
path: null
size: 1024
required: false
hle_fallback: true
note: "OTP/SEEPROM dump (Wii encryption keys). Needed if not appended to nand.bin for NAND import"
source_ref: "source Source/Core/DiscIO/NANDImporter.cpp:20, source Source/Core/DiscIO/NANDImporter.cpp:77-91, source Source/Core/DiscIO/NANDImporter.h:35-38"
# -- Wii SD Card Image --
- name: "WiiSD.raw"
path: "Load/WiiSD.raw"
load_from:
libretro: save_dir
required: false
hle_fallback: true
note: "Virtual SD card image for Wii homebrew. Auto-created by Dolphin, supports SD/SDHC up to 4GB"
source_ref: "upstream Source/Core/Common/CommonPaths.h:150"
# -- Gecko Code Handler --
- name: "codehandler.bin"
path: null
mode: standalone
required: false
bundled: true
size: 2880
sha1: "e6c0050b3c67ee26198488fbbe4a5d019c15b628"
md5: "1f118b8735fcf40c20b38c3184eebfd9"
hle_fallback: true
note: "Gecko/Ocarina cheat code handler. Shipped in Sys/ of the standalone release (dolphin-2512-x64.7z)"
source_ref: "upstream Source/Core/Common/CommonPaths.h:155, source Source/Core/Core/GeckoCode.cpp:120"
- name: "codehandler.bin"
path: null
mode: libretro
required: false
installed_on: [batocera, lakka, retrobat, retrodeck]
hle_fallback: true
note: "Gecko/Ocarina cheat code handler, read from the Sys data directory the core zip does not contain. The Batocera and Lakka packages copy Data/Sys beside the core, and RetroBat installs it as bios/dolphin-emu/Sys"
source_ref: "upstream Source/Core/Common/CommonPaths.h:155, source Source/Core/Core/GeckoCode.cpp:120"
# -- Wii System Menu (WAD) --
- name: "Wii System Menu"
path: null
required: false
hle_fallback: true
mode: standalone
note: "Wii System Menu WAD. Installed to NAND via Tools > Install WAD, needed for Wii Menu boot"
source_ref: "source Source/Core/DolphinQt/MainWindow.cpp:1629-1631, source Source/Core/DolphinQt/MenuBar.cpp:1218-1232"
# -- NAND Certificates (auto-extracted) --
- name: "clientca.pem"
path: "Wii/clientca.pem"
load_from:
libretro: save_dir
required: false
hle_fallback: true
note: "SSL client certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "source Source/Core/DiscIO/NANDImporter.cpp:220-304"
- name: "clientcakey.pem"
path: "Wii/clientcakey.pem"
load_from:
libretro: save_dir
required: false
hle_fallback: true
note: "SSL client private key. Auto-extracted from IOS13 content during NAND import"
source_ref: "source Source/Core/DiscIO/NANDImporter.cpp:256"
- name: "rootca.pem"
path: "Wii/rootca.pem"
load_from:
libretro: save_dir
required: false
hle_fallback: true
note: "SSL root CA certificate. Auto-extracted from IOS13 content during NAND import"
source_ref: "source Source/Core/DiscIO/NANDImporter.cpp:257"
# -- Realtek Bluetooth firmware (Wiimote passthrough) --
# Required for real Wiimote connectivity via USB Bluetooth adapters with Realtek chipsets.
# Dolphin can auto-download these from gitlab.com/kernel-firmware/linux-firmware.
# Placed in Load/Firmware/rtl_bt/ (standalone) or User/Load/Firmware/rtl_bt/ (libretro save dir).
# Each device needs _fw.bin (required) and _config.bin (optional, some devices).
# ref: Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:382-425,427-481
- name: "rtl8723a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723a_fw.bin"
required: false
mode: standalone
note: "Realtek 8723A BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:414"
- name: "rtl8723b_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723b_fw.bin"
required: false
mode: standalone
note: "Realtek 8723B BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:389"
- name: "rtl8723d_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8723d_fw.bin"
required: false
mode: standalone
note: "Realtek 8723D BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:418"
- name: "rtl8761a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8761a_fw.bin"
required: false
mode: standalone
note: "Realtek 8761A BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:393"
- name: "rtl8761bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8761bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8761BU BT firmware for Wiimote passthrough (most common USB dongle)"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:395"
- name: "rtl8821a_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8821a_fw.bin"
required: false
mode: standalone
note: "Realtek 8821A BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:397"
- name: "rtl8821c_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8821c_fw.bin"
required: false
mode: standalone
note: "Realtek 8821C BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:426"
- name: "rtl8822b_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8822b_fw.bin"
required: false
mode: standalone
note: "Realtek 8822B BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:430"
- name: "rtl8822cu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8822cu_fw.bin"
required: false
mode: standalone
note: "Realtek 8822CU BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:401"
- name: "rtl8851bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8851bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8851BU BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:405"
- name: "rtl8852au_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852au_fw.bin"
required: false
mode: standalone
note: "Realtek 8852AU BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:407"
- name: "rtl8852bu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852bu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852BU BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:409"
- name: "rtl8852cu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852cu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852CU BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:411"
- name: "rtl8852btu_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8852btu_fw.bin"
required: false
mode: standalone
note: "Realtek 8852BT/8852BE-VT BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:413"
- name: "rtl8922au_fw.bin"
path: "Load/Firmware/rtl_bt/rtl8922au_fw.bin"
required: false
mode: standalone
note: "Realtek 8922AU BT firmware for Wiimote passthrough"
source_ref: "source Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:415"
notes:
hle_available: true
hle_note: >
Dolphin provides HLE for GameCube IPL (boot ROM), DSP, and Wii system functions.
No BIOS files are strictly required for most games. DSP ROMs (dsp_rom.bin + dsp_coef.bin)
are the most impactful optional files - Dolphin ships free replacements but real dumps
from hardware provide better audio accuracy in some titles.
ipl_regions: ["USA", "EUR", "JAP", "JPN", "DEV"]
ipl_region_note: >
IPL.bin is region-specific, placed in GC/<REGION>/IPL.bin.
JAP is the legacy directory name, JPN is the modern default.
DEV is for development/debug units.
dsp_rom_note: >
DSP ROMs are verified at load time via Adler32 hash.
Official Nintendo hashes: irom=0x66f334fe, drom=0xf3b93527.
Multiple free replacement versions exist (v0.1 through v0.4).
font_note: >
Fonts can come from three sources: real IPL dump (preferred), standalone font files
in Sys/GC/, or bundled free alternatives. The free fonts have different padding that
causes text positioning issues in some games.
nand_note: >
Wii NAND content (channels, saves, system menu) is managed by Dolphin internally.
Users can import a BootMii NAND backup (nand.bin + optional keys.bin) to populate it.
Most Wii games do not require a real NAND dump.
bt_passthrough_note: >
Bluetooth passthrough allows connecting real Wiimotes via USB Bluetooth adapters.
Realtek chipsets (very common) require firmware files in Load/Firmware/rtl_bt/.
Dolphin can auto-download these from kernel-firmware/linux-firmware on GitLab.
15 device families supported. Each needs _fw.bin (required) + _config.bin (optional).
ref: Source/Core/Core/IOS/USB/Bluetooth/RealtekFirmwareLoader.cpp:75-179 (device IDs), 382-420 (firmware names)