Skip to content

Citra MMJ - RetroBIOS

Type standalone
Classification Community forks
Source https://github.com/weihuoya/citra
Version 20251112
Profiled 2026-08-11
Cores citra-mmj
Systems nintendo-3ds
Technical notes

Citra fork for Android, shipped as four APKs of the same build per release: the org.citra.emu package, a com.antutu.ABenchMark package, and a StorageAccess variant of each. The user directory is citra-emu at the root of external storage, and Android/data/org.citra.emu/files/citra-emu for the StorageAccess builds. External files live in sysdata/ and nand/ below it. ref: src/android/app/src/main/java/org/citra/emu/utils/CitraDirectory.java:61-94, src/common/common_paths.h:23-29, src/common/file_util.cpp:398-430

InitKeys reads boot9.bin, then the native firm titles in the NAND tree, then sector0x96.bin for the New 3DS firm, then aes_keys.txt. Content left encrypted stops loading with ErrorEncrypted, shown as "ROM Encrypted". ref: src/core/hw/aes/key.cpp:497-508, src/core/file_sys/ncch_container.cpp:348-351, src/android/jni/main_android.cpp:88-90

GetSharedFont tries the shared font system archive, then shared_font.bin, then the regional BCFNT for the CFG region, and ends the session with ErrorSystemFiles when the three fail. The embedded open-source font answers title low ID 0x00014002 only, so CHN, KOR and TWN, which resolve to 0x00014102, 0x00014202 and 0x00014302, depend on a file. Region defaults to the code the ROM declares. ref: src/core/hle/service/apt/apt.cpp:143, src/core/hle/service/apt/apt.cpp:256-272, src/core/file_sys/archive_ncch.cpp:143-148, src/core/hle/service/cfg/cfg.cpp:176-181, src/core/loader/ncch.cpp:179, src/android/jni/config/main_settings.cpp:12

Loading the four regional fonts from sysdata is specific to this fork. ref: src/core/hle/service/apt/apt.cpp:184-228

The APK assets carry those fonts, three system archives, the DLP module and a seeded CFG savegame, and the first run copies them into the user directory without overwriting what is already there. System archives ship as split-off RomFS, picked up beside the .app path the title tree resolves to. ref: src/android/app/src/main/java/org/citra/emu/utils/CitraDirectory.java:192-207, src/android/app/src/main/java/org/citra/emu/utils/CitraDirectory.java:368-399, src/core/file_sys/ncch_container.cpp:726-741

LLE is opt-in per service module and reads the module from the NAND title tree, falling back to HLE when it is absent. There is no title downloader: system titles come from CIA files the user installs. ref: src/core/hle/service/service.cpp:60-107, src/core/hle/service/service.cpp:197-213, src/android/jni/main_android.cpp:278-289

ClCertA is read from NAND title 0x0004001b00010002 and decrypted with the keyslot 0x0D normal key. HTTPS client authentication stays off without both. ref: src/core/hle/service/http_c.cpp:810-884

The published tree does not build as it stands: CitraDirectory.java:349 calls a NativeLibrary.SetBackgroundGLSL that no file declares, and GetBuildDate and GetDeviceIinfo are declared native with no JNI counterpart. Nothing compiled here reads the post-processing shaders the settings screen lists. ref: src/android/app/src/main/java/org/citra/emu/NativeLibrary.java:341-342, src/android/app/src/main/java/org/citra/emu/settings/SettingsFragment.java:397-401

Amiibo dumps are read as .bin files from amiibo/, cheat codes from cheats/<title id>.txt, texture packs and mods from load/. ref: src/android/app/src/main/java/org/citra/emu/ui/AmiiboDialog.java:57-64, src/core/cheats/cheats.cpp:93-110, src/core/custom_tex_cache.cpp:67, src/core/file_sys/ncch_container.cpp:359-365

18 files | 0 required, 18 optional | 18 in repo, 0 missing | 8 with HLE fallback

boot9.bin optional in repo
ARM9 bootrom

aes_keys.txt optional in repo
AES key slots

sector0x96.bin optional in repo
New 3DS NAND secret sector

seeddb.bin optional in repo
game seed database

00000000.app.romfs optional in repo HLE fallback japan, north-america, europe, australia
shared font system archive, title 0x0004009b00014002

00000000.app.romfs optional in repo china
shared font system archive for CHN, title 0x0004009b00014102

00000000.app.romfs optional in repo south-korea
shared font system archive for KOR, title 0x0004009b00014202

00000000.app.romfs optional in repo taiwan
shared font system archive for TWN, title 0x0004009b00014302

shared_font.bin optional in repo HLE fallback
system shared font, legacy dump

cbf_std.bcfnt optional in repo HLE fallback japan, north-america, europe, australia bundled
shared font for JPN, USA, EUR and AUS

cbf_zh-Hans-CN.bcfnt optional in repo china bundled
shared font for CHN

cbf_ko-Hang-KR.bcfnt optional in repo south-korea bundled
shared font for KOR

cbf_zh-Hant-TW.bcfnt optional in repo taiwan bundled
shared font for TWN

00000000.app.romfs optional in repo HLE fallback bundled
Mii data system archive, title 0x0004009b00010202

00000000.app.romfs optional in repo HLE fallback bundled
country list system archive, title 0x0004009b00010402

00000000.app.romfs optional in repo HLE fallback bundled
bad word list system archive, title 0x000400db00010302

00000000.tmd optional in repo HLE fallback bundled
title metadata of the DLP module, title 0x0004013000002802

0000001f.app optional in repo HLE fallback bundled
DLP system module, title 0x0004013000002802

Generated on 2026-10-10T11:26:01Z