emulator: AzaharPlus type: standalone core_classification: community_fork source: "https://github.com/AzaharPlus/AzaharPlus" upstream: "https://github.com/AzaharPlus/AzaharPlus" profiled_date: "2026-08-08" source_commit: "dab27d996555ca220b7dbd106a2e5f03b6af34ac" core_version: "2126.0-A" display_name: "Nintendo - 3DS (AzaharPlus)" cores: - azaharplus systems: - nintendo-3ds mode: standalone notes: | Fork of Azahar. Data dir: azaharplus-emu (AzaharPlus on Windows and macOS), with citra-emu and lime3ds-emu probed as legacy locations. ref: src/common/common_paths.h:25-47 InitKeys reads three key sources in order: boot9.bin, keys.txt, aes_keys.txt. ref: src/core/hw/aes/key.cpp:615-631 keys.txt has an AES-encrypted key blob compiled into the binary, used when the file is absent. ENABLE_BUILTIN_KEYBLOB defaults to ON. ref: src/core/hw/aes/key.cpp:483-611, CMakeLists.txt:153 1861 title seeds are compiled in and loaded before seeddb.bin is read. ref: src/core/file_sys/seed_db.cpp:50-52, src/core/file_sys/seed_db.cpp:218 System archives (shared font, Mii data, country list, bad word list) have open-source replacements embedded in the binary, and ClCertA falls back to an embedded certificate and key pair. ref: src/core/file_sys/archive_ncch.cpp:174-203, src/core/hle/service/http/http_c.cpp:2107-2133 otp.bin, movable.sed, SecureInfo_A and LocalFriendCodeSeed_B are replaced by embedded dummy data when enable_required_online_lle_modules is set. That setting defaults to false, and every loader returns a not-found status without it. ref: src/common/settings.h:492-493 System titles are downloaded and installed in-app from the Nintendo CDN, so the NAND title tree is not user-supplied. ref: src/core/nus_download.cpp:13, src/core/hle/service/am/am.cpp:1219-1242 sector0x96.bin is defined but read by no code path. ref: src/common/common_paths.h:86 mcu.dat, mac.txt, digests.txt, cecIds.txt and http_hle_replace_rules.txt live in sysdata but hold per-installation state the emulator writes itself. files: - name: keys.txt path: sysdata/keys.txt system: nintendo-3ds required: false hle_fallback: true sha1: "5288772be438b86978a801e6dcb14228ad3a20af" md5: "4812e96097b7fc1bdd7b40366208b7a7" note: "AES key slots, common keys and NFC secrets; embedded encrypted blob used if missing: default_keys_enc, AES-CBC with a zero key and IV, the hashes are those of the decrypted text" source_ref: "src/core/hw/aes/key.cpp:225-364, src/core/hw/aes/key.cpp:473-613, src/core/hw/default_keys.h:11" - name: aes_keys.txt path: sysdata/aes_keys.txt system: nintendo-3ds required: false note: "legacy keyfile format, parsed without section markers" source_ref: "src/core/hw/aes/key.cpp:366-469, src/common/common_paths.h:84" - name: boot9.bin path: sysdata/boot9.bin system: nintendo-3ds required: false size: 65536 validation: [size] note: "bootrom key section read at offset 55760, filling 80 key slots" source_ref: "src/core/hw/aes/key.cpp:154-223, src/common/common_paths.h:85" - name: shared_font.bin path: sysdata/shared_font.bin system: nintendo-3ds required: false hle_fallback: true note: "legacy path, tried after the shared font system archive" source_ref: "src/core/hle/service/apt/apt.cpp:278-294, src/core/hle/service/apt/apt.cpp:305" - name: seeddb.bin path: sysdata/seeddb.bin system: nintendo-3ds required: false hle_fallback: true note: "game seed database for 9.6+ titles; written out from the embedded seeds if absent" source_ref: "src/core/file_sys/seed_db.cpp:50-101" - name: otp.bin path: sysdata/otp.bin system: nintendo-3ds required: false size: 256 validation: [size, crypto] note: "console-unique OTP, AES-CBC decrypted then checked against the OTP magic" source_ref: "src/core/file_sys/otp.cpp:35-80, src/core/hw/unique_data.cpp:223-274" - name: movable.sed path: nand/private/movable.sed system: nintendo-3ds required: false size: [288, 320] validation: [size, signature] note: "console-unique key seed; 288 bytes without the AES MAC block, 320 with it" source_ref: "src/core/hw/unique_data.cpp:276-318, src/core/hw/unique_data.h:103-133" - name: SecureInfo_A path: nand/rw/sys/SecureInfo_A system: nintendo-3ds required: false size: 273 validation: [size, signature] note: "console serial and region; a failed signature is retried against every region" source_ref: "src/core/hw/unique_data.cpp:122-180, src/core/hw/unique_data.h:57" - name: LocalFriendCodeSeed_B path: nand/rw/sys/LocalFriendCodeSeed_B system: nintendo-3ds required: false size: 272 validation: [size, signature] note: "friend code generation seed" source_ref: "src/core/hw/unique_data.cpp:182-221, src/core/hw/unique_data.h:76"