emulator: Mandarine type: standalone core_classification: community_fork source: "https://github.com/ptyfyre/mandarine-neo" upstream: "https://github.com/ptyfyre/mandarine-neo" profiled_date: "2026-08-08" source_commit: "7f8ec960b6183be4350bca099d23ddd9fc7bcaa3" core_version: "1.3.0" display_name: "Nintendo - 3DS (Mandarine)" cores: - mandarine - mandarine-qt systems: - nintendo-3ds mode: standalone notes: | Citra fork, renamed Mandarine-Neo at release 1.3.0. External files live in sysdata/ and nand/ under the user directory: user/ next to the executable when that directory exists, otherwise Mandarine on Windows and macOS and mandarine-emu on Linux, with Citra and citra-emu kept as legacy locations. ref: src/common/common_paths.h:16-70, src/common/file_util.cpp:770-839 InitKeys reads boot9.bin then aes_keys.txt. Encrypted content needs one of the two; a ROM without crypto reads neither. ref: src/core/hw/aes/key.cpp:315-324, src/core/file_sys/ncch_container.cpp:200-210 Failure to derive a key or to find a seed marks the content undecryptable and loading stops with ErrorEncrypted. ref: src/core/file_sys/ncch_container.cpp:219-223, src/core/file_sys/ncch_container.cpp:236-280, src/core/file_sys/ncch_container.cpp:347-349 System archives resolve to the NAND title tree. Shared font, Mii data, country list and bad word list fall back to open-source replacements built into the binary when the title is absent. ref: src/core/file_sys/archive_ncch.cpp:126-179, externals/open_source_archives/Readme.md The embedded shared font only answers title low ID 0x00014002. CHN, KOR and TWN resolve to 0x00014102, 0x00014202 and 0x00014302, which fall through to shared_font.bin and then to ErrorSystemFiles, reported as recoverable. ref: src/core/hle/service/apt/apt.cpp:195-213, src/core/hle/service/apt/apt.cpp:276-291, src/mandarine_qt/main.cpp:3209-3215 ClCertA is read from NAND title 0x0004001B00010002 and its ctr-common-1-cert.bin and ctr-common-1-key.bin members are decrypted with the KeySlot 0x0D normal key. Both the title and the key slot are needed for authenticated HTTPS. ref: src/core/hle/service/http/http_c.cpp:1963-2036 System titles are downloaded and installed in-app from the Nintendo CDN, so the NAND title tree is not user-supplied. ref: src/mandarine_qt/configuration/configure_system.cpp:672-678, src/core/hle/service/am/am.cpp:536, src/core/nus_download.cpp:12-13 DumpKeys.gm9, a GodMode9 script producing aes_keys.txt and seeddb.bin, ships in the tree and documents sysdata/ as their destination. ref: dist/dumpkeys/README.md, dist/dumpkeys/DumpKeys.gm9 The plugin loader scans sdmc/luma/plugins/