emulator: Azahar type: standalone + libretro core_classification: community_fork source: "https://github.com/johndoe6345789/azahar_libretro" upstream: "https://github.com/azahar-emu/azahar" profiled_date: "2026-03-23" source_commit: "9dd12da328c753806cbd4f2b0e048fced97ae97d" core_version: "Git" display_name: "Nintendo - 3DS (Azahar)" cores: [azahar] systems: - nintendo-3ds notes: | Successor to Citra (via Lime3DS). Libretro port by johndoe6345789. Data dir: azahar-emu (legacy: citra-emu, lime3ds-emu). ref: src/common/common_paths.h:41-43 Key file named keys.txt (not aes_keys.txt like old Citra). Embedded encrypted key fallback if keys.txt absent. ref: src/core/hw/aes/key.cpp:282-297 Uses RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY. ref: src/citra_libretro/environment.cpp:179 .info has firmware_count=0 but core loads files from system_dir. boot9.bin and sector0x96.bin are defined in common_paths.h:84-85 but never loaded by any code path. Dead defines from Citra heritage. System archives (shared font, Mii data, country list, bad word list) have open-source replacements embedded in the binary. ref: src/core/file_sys/archive_ncch.cpp:146-176 files: - name: keys.txt path: sysdata/keys.txt system: nintendo-3ds required: false hle_fallback: true sha1: "5fab786695311433602028cd89898689c5df0898" md5: "cb52d323b13129a2f0bc3e3e911e567f" note: "embedded encrypted fallback if missing: default_keys_enc, AES-CBC with a zero key and IV; the hashes are those of the decrypted text without its PKCS#7 block" source_ref: "src/core/hw/aes/key.cpp:283-300, src/common/common_paths.h:83, src/core/hw/default_keys.h:4-5" - name: shared_font.bin path: sysdata/shared_font.bin system: nintendo-3ds required: false hle_fallback: true note: "legacy load path; embedded open-source font used if missing" source_ref: "src/core/hle/service/apt/apt.cpp:263-278" - name: seeddb.bin path: sysdata/seeddb.bin system: nintendo-3ds required: false note: "game seed database for 9.6+ titles" source_ref: "src/core/file_sys/seed_db.cpp:15" - name: otp.bin path: sysdata/otp.bin system: nintendo-3ds required: false size: 256 validation: [size, crypto] note: "OTP data for console key derivation" source_ref: "src/core/hw/unique_data.cpp:126-167, src/core/hw/unique_data.cpp:213" - 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:170-200, src/core/hw/unique_data.cpp:217, 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 data" source_ref: "src/core/hw/unique_data.cpp:43-92, src/core/hw/unique_data.cpp:205" - 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:94-123, src/core/hw/unique_data.cpp:209, src/core/hw/unique_data.h:76"