Files
libretro/emulators/dolphin.yml
T
Abdessamad Derraz f028caa834 feat: add dolphin data root
UICommon::SetUserDirectory on desktop, DirectoryInitialization.kt on Android.
2026-10-24 01:15:08 +02:00

436 lines
19 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: "eb68258ab5559a5c6dc8011bf9a746a0d1bab48e"
upstream_commit: "e1d35f666cc35f6ead55d32ea2679df44d04da72"
core_version: "Git"
display_name: "Nintendo - GameCube / Wii (Dolphin)"
library_name: "dolphin-emu"
cores:
- dolphin
- "dolphin-gui"
systems: [nintendo-gamecube, nintendo-wii, sega-triforce]
data_root:
android:
path: "Android/data/org.dolphinemu.dolphinemu/files"
source_ref: "upstream Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.kt:88-119, 320-324, upstream Source/Android/app/build.gradle.kts:39, upstream Source/Android/jni/MainAndroid.cpp:360-364"
note: "/sdcard/dolphin-emu when that folder exists, storage access is legacy and the files folder is empty"
windows:
path: "%APPDATA%/Dolphin Emulator"
source_ref: "upstream Source/Core/UICommon/UICommon.cpp:330-333, 359-400, 481, upstream Source/Core/Common/CommonPaths.h:14-15"
note: "Documents/Dolphin Emulator when that folder already exists. portable.txt or the LocalUserConfig registry value makes User beside Dolphin.exe the root, the UserConfigPath registry value overrides"
macos:
path: "~/Library/Application Support/Dolphin"
source_ref: "upstream Source/Core/UICommon/UICommon.cpp:408-414, 435-448, 481, upstream Source/Core/Common/CommonPaths.h:16-17"
note: "portable.txt beside the executable makes its User folder the root, DOLPHIN_EMU_USERPATH overrides"
linux:
path: "$XDG_DATA_HOME/dolphin-emu, else ~/.local/share/dolphin-emu"
source_ref: "upstream Source/Core/UICommon/UICommon.cpp:408-414, 435-443, 449-477, upstream Source/Core/Common/CommonPaths.h:20-21"
note: "~/.dolphin-emu when that folder exists outside Flatpak. portable.txt beside the executable makes its user folder the root, DOLPHIN_EMU_USERPATH overrides"
# 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:250-256). 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, latin-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. Discs with the Brazilian country code B and SYSCONF countries of the Americas map to NTSC-U, so Latin America reads this directory too (Source/Core/DiscIO/Enums.cpp:198-199, 249-251)."
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 --
# Libretro reads Sys/Triforce/ first, then User/Triforce/. The standalone
# reads User/Triforce/ only.
- 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, 481, 500-514, 534-535, source Source/Core/Core/HW/DVD/DVDInterface.cpp:292-294, source Source/Core/Core/System.h:149"
# -- 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: "User/GBA/gba_bios.bin"
standalone_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: "User/Wii/shared2/sys/SYSCONF"
standalone_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: "User/Wii/title/00000001/00000002/data/setting.txt"
standalone_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: "User/Load/WiiSD.raw"
standalone_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: "User/Wii/clientca.pem"
standalone_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: "User/Wii/clientcakey.pem"
standalone_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: "User/Wii/rootca.pem"
standalone_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:410-448,544-572
- 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:416"
- 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:418"
- 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:420"
- 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:422"
- 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:424"
- 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:426"
- 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:428"
- 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:432"
- 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:430"
- 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:434"
- 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:436"
- 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:438"
- 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:440"
- 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:442"
- 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:444"
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.
sys_note: >
Without Sys/ the libretro core logs that codehandler.bin is missing and
goes on. With no IPL dump the GameCube fonts are read from Sys/GC/, so
none is loaded, and a game reading them raises "Games may not show fonts correctly, or
crash". The per-game settings in Sys/GameSettings/ and the WiiConnect24
files some Wii games expect are skipped too.
ref: Source/Core/DolphinLibretro/Boot.cpp:318-345,
Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:128-130, 160-167, 328-340,
Source/Core/Core/ConfigManager.cpp:570, 586,
Source/Core/Core/WiiRoot.cpp:325-330
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:76-207 (device IDs), 410-448 (firmware names)