Skip to content

Dolphin MMJR2 - RetroBIOS

Type standalone
Classification Community forks
Source https://github.com/nachoverdon/Dolphin-MMJR2
Upstream https://github.com/dolphin-emu/dolphin
Version 2.0-18025
Profiled 2026-08-11
Cores dolphin-mmjr2
Systems nintendo-gamecube, nintendo-wii
Valid BIOS CRC32

ipl_ntsc:

  • crc32: 6DAC1F2A, name: NTSC v1.0
  • crc32: D5E6FEEA, name: NTSC v1.1
  • crc32: 86573808, name: NTSC v1.2
  • crc32: 667D0B64, name: MPAL v1.1 (Brazil)

ipl_pal:

  • crc32: 4F319F43, name: PAL v1.0
  • crc32: AD1B7F16, name: PAL v1.2
Technical notes

Android-only Dolphin fork published as the org.dolphinemu.mmjr package. The repositories it was developed and released from are gone; this reading is taken from a surviving copy carrying the whole maintainer commit line, up to the last one, which sets the version string to 2.0-18025. The tree is a selective merge of Dolphin Official carrying that label rather than a checkout of it: at Dolphin 5.0-18025 the memory subsystem has already moved behind Core::System, and here it has not, so no single Dolphin revision matches and no upstream pin is declared. ref: Source/Android/app/build.gradle:32, Source/Android/app/build.gradle:135

Two roots. The user directory is mmjr-revamp at the root of external storage. The Sys directory is extracted from the APK assets into the app's internal files directory, and a change of git revision deletes it and extracts it again, so nothing placed there survives an update. The build drops Resources and Themes from the assets copy. Paths below are relative to the user directory; entries with no path are read only from the Sys directory and name their location in their note. ref: Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java:103, Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java:138-155, Source/Core/Common/CommonPaths.h:23, Source/Android/jni/CMakeLists.txt:37-42

The GameCube boot ROM is looked up as GC//IPL.bin, in the user directory first and the Sys directory second. The region directory is USA for NTSC-U, EUR for PAL and JAP for NTSC-J: JPN also exists but only the memory card folder path asks for it, every other caller takes the legacy default. Booting the IPL itself hashes the whole file with crc32 and warns on an unknown dump, then warns again when the dump and the boot region disagree on PAL. SkipIPL defaults to true, so games start without it. ref: Source/Core/Common/CommonPaths.h:34-35, Source/Core/Core/Config/MainSettings.cpp:567-592, Source/Core/Core/Config/MainSettings.cpp:594-600, Source/Core/Core/Config/MainSettings.cpp:675-723, Source/Core/Core/Boot/Boot.cpp:323-327, Source/Core/Core/Boot/Boot.cpp:408-442, Source/Core/Core/Boot/Boot.cpp:444-449, Source/Core/Core/Config/MainSettings.cpp:35

Fonts follow the IPL. When a dump is present the Shift JIS and Windows-1252 fonts are read out of it at offsets 0x1aff00 and 0x1fcf00, for 0x4a24d and 0x2575 bytes; otherwise the standalone font files are loaded whole, and the bundled ones have different padding from the console fonts. ref: Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:102-131, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:175-187, Source/Core/Core/HW/EXI/EXI_DeviceIPL.cpp:200-241

DSP HLE is the default and reads dsp_coef.bin alone, for polyphase resampling coefficients, skipping any file that is not 0x1000 bytes. DSP LLE, reached by setting DSPHLE to False, loads both ROMs from GC/ in the user directory then Sys/GC/, rejects either at the wrong size, and a rejection aborts the emulation thread. Both are byte-swapped into memory and the pair is then hashed with adler32 against seven known combinations. ref: Source/Core/Core/Config/MainSettings.cpp:40, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:87-105, Source/Core/Core/HW/DSPLLE/DSPLLE.cpp:107-120, Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp:42-69, Source/Core/Core/DSP/DSPCore.cpp:28-71, Source/Core/Core/Core.cpp:556-559

Wii emulation reads keys.bin from the NAND root every time the key store is built, and keeps the built-in keys when it is absent. SYSCONF is read through the emulated filesystem and rebuilt unless it is exactly 0x4000 bytes, and setting.txt is read for its serial number then written again from the emulated region settings. A missing SD card image is created at 128 MB. The three SSL files are hashed with sha256 against values held in the source and refused on a mismatch, once per session. ref: Source/Core/Core/IOS/IOSC.cpp:211, Source/Core/Core/IOS/IOSC.cpp:623-649, Source/Core/Core/SysConf.cpp:19, Source/Core/Core/SysConf.cpp:54-65, Source/Core/Core/Boot/Boot_BS2Emu.cpp:341-352, Source/Core/Core/IOS/SDIO/SDIOSlot0.cpp:90-107, Source/Core/Core/IOS/Network/SSL.cpp:135-181

The WiiConnect24 tree is copied out of Sys/Wii into the NAND at every Wii boot, one file at a time, and a file already present in the NAND is left alone. Copies placed under Wii/shared2/wc24 are therefore the ones that survive, and the shipped blanks only fill what is still missing. Dolphin itself reads nwc24msg.cfg and nwc24dl.bin back out of the NAND; the rest are there because titles expect them. ref: Source/Core/Core/WiiRoot.cpp:288-322, Source/Core/Core/WiiRoot.cpp:330-335, Source/Core/Core/IOS/Network/KD/NWC24Config.cpp:24-38, Source/Core/Core/IOS/Network/KD/NWC24DL.cpp:23-32

NAND import is compiled into the Android build and wired to both launchers. A BootMii image writes keys.bin and the three certificates into the NAND root, the certificates being carved out of the IOS13 content by searching for their DER headers. The keys have to be appended to the image: the callback that would ask for a separate OTP dump answers with an empty path here. ref: Source/Android/jni/WiiUtils.cpp:97-116, Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java:240, Source/Core/DiscIO/NANDImporter.cpp:26-40, Source/Core/DiscIO/NANDImporter.cpp:189-256, Source/Core/DiscIO/NANDImporter.cpp:258-267

Every boot looks for a symbol map named after the running game ID, in Maps/ in the user directory alone, and reloads it whenever the running title changes. The game ID comes from the disc or TMD metadata, not from a debugger setting. No map ships with the build. ref: Source/Core/Core/Boot/Boot.cpp:373-399, Source/Core/Core/ConfigManager.cpp:153-162, Source/Core/Core/ConfigManager.cpp:189-199

30 files | 0 required, 30 optional | 28 in repo, 2 missing | 14 with HLE fallback

IPL.bin optional in repo HLE fallback north-america
GameCube boot ROM, NTSC-U directory

IPL.bin optional in repo HLE fallback europe
GameCube boot ROM, PAL directory

IPL.bin optional in repo HLE fallback japan
GameCube boot ROM, NTSC-J directory

font_western.bin optional in repo HLE fallback
Windows-1252 font, loaded at 0x1fcf00

font_japanese.bin optional in repo HLE fallback
Shift JIS font, loaded at 0x1aff00

dsp_rom.bin optional in repo HLE fallback
DSP instruction ROM

dsp_coef.bin optional in repo HLE fallback
DSP coefficient ROM

codehandler.bin optional in repo
Gecko code handler

keys.bin optional in repo HLE fallback
BootMii key dump, console keys and identity

SYSCONF optional in repo HLE fallback
Wii system configuration

setting.txt optional in repo HLE fallback
Wii region and language settings

WiiSD.raw optional in repo HLE fallback
Wii SD card image

clientca.pem optional in repo HLE fallback
console SSL client certificate

clientcakey.pem optional in repo HLE fallback
console SSL client private key

rootca.pem optional in repo HLE fallback
console SSL root CA certificate

nand.bin optional in repo
BootMii NAND backup

mii.bin optional missing
Mii database imported into the emulated Wii Remote

nwc24msg.cfg optional in repo
WiiConnect24 account configuration

nwc24dl.bin optional in repo
WiiConnect24 download task list

nwc24fl.bin optional in repo
WiiConnect24 friend list

  • Path: Wii/shared2/wc24/nwc24fl.bin
  • System: nintendo-wii
  • Source: Source/Core/Core/WiiRoot.cpp:288-322, Source/Core/Core/WiiRoot.cpp:330-335
  • Placed in the NAND by the Sys/Wii copy and read from there by the running title. Titles such as Mario Kart Wii expect the WiiConnect24 files to exist even on a first launch, which is why the copy happens without the system menu ever running.

nwc24fls.bin optional in repo
WiiConnect24 friend list backup

nwc24msg.cbk optional in repo
WiiConnect24 account configuration backup

misc.bin optional in repo
WiiConnect24 miscellaneous state

wc24recv.ctl optional in repo
WiiConnect24 receive mailbox index

  • Path: Wii/shared2/wc24/mbox/wc24recv.ctl
  • System: nintendo-wii
  • Source: Source/Core/Core/WiiRoot.cpp:288-322
  • Placed in the NAND by the Sys/Wii copy, which recurses into mbox and never overwrites a file the NAND already holds.

wc24recv.mbx optional in repo
WiiConnect24 receive mailbox

wc24send.ctl optional in repo
WiiConnect24 send mailbox index

  • Path: Wii/shared2/wc24/mbox/wc24send.ctl
  • System: nintendo-wii
  • Source: Source/Core/Core/WiiRoot.cpp:288-322
  • Placed in the NAND by the Sys/Wii copy, which recurses into mbox and never overwrites a file the NAND already holds.

wc24send.mbx optional in repo
WiiConnect24 send mailbox

Readme.txt optional in repo
note on the truncated mailboxes, copied into the NAND

  • Path: Wii/shared2/wc24/mbox/Readme.txt
  • System: nintendo-wii
  • Size: 103 B
  • SHA256: e5a888912968...
  • Source: Source/Core/Core/WiiRoot.cpp:291-319, Data/Sys/Wii/shared2/wc24/mbox/Readme.txt
  • The Sys/Wii copy walks the directory and takes every entry, so this file lands in the NAND with the mailboxes. It records the console sizes of the two mbx files. The hash names the file carried in the source tree, the only form it has, and is not a check the code performs; without it the name alone matches any readme.

wiitdb.txt optional in repo
user title database

mios-ipl.map optional missing
MIOS symbol map

  • Path: Maps/mios-ipl.map
  • Source: Source/Core/Core/IOS/MIOS.cpp:67-72
  • Read from Maps/ in the user directory when MIOS starts, and a successful load re-applies the HLE function patches against the symbols it names.

Generated on 2026-08-23T16:12:06Z