emulator: Citra type: standalone + libretro core_classification: community_fork source: "https://github.com/libretro/citra" upstream: "https://github.com/citra-emu/citra" profiled_date: "2026-03-23" source_commit: "a0483e9abe8134ae6b290cdca7d49cb77689f05b" core_version: "Git" display_name: "Nintendo - 3DS (Citra)" library_name: "Citra" cores: [citra] systems: [nintendo-3ds] data_root: android: path: "" source_ref: "src/android/app/src/main/java/org/citra/citra_emu/utils/PermissionsHandler.kt:42-46, src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryInitialization.kt:93-101, src/common/file_util.cpp:819-822" windows: path: "%APPDATA%/Citra" source_ref: "src/common/file_util.cpp:719-725, 809-815, src/common/common_paths.h:16-17, 21-22" note: "user beside the executable when that folder exists" macos: path: "~/Library/Application Support/Citra" source_ref: "src/common/file_util.cpp:824-846, src/common/common_paths.h:16-17, 23-31" note: "$XDG_DATA_HOME/citra-emu or ~/.local/share/citra-emu when an XDG folder from an earlier setup exists. user in the working directory when that folder exists" linux: path: "$XDG_DATA_HOME/citra-emu, else ~/.local/share/citra-emu" source_ref: "src/common/file_util.cpp:753-776, 824-846, src/common/common_paths.h:16-17, 32-33" note: "user in the working directory when that folder exists" notes: | Citra 3DS emulator. Upstream taken down March 2024 (Nintendo lawsuit). Mirror: https://github.com/citra-mirror/citra Data dir: {save_dir}/Citra/ under the default "LibRetro Default" option citra_use_libretro_save_path, {system_dir}/Citra/ only when the frontend gives no save directory. sysdata/ sits under it. ref: src/citra_libretro/citra_libretro.cpp:157, src/citra_libretro/citra_libretro.cpp:445-466, src/citra_libretro/environment.cpp:139, src/common/file_util.cpp:855 The core reports library_name "Citra". ref: src/citra_libretro/environment.cpp:180 HLE for most services. Embedded open-source replacements for shared font, Mii data, country list, and bad word list compiled into the binary. ref: src/core/file_sys/archive_ncch.cpp:9-27, 133-167 firmware_count absent in .info (= 0). All files optional. files: - name: aes_keys.txt path: "Citra/sysdata/aes_keys.txt" load_from: {libretro: save_dir} system: nintendo-3ds description: "AES encryption keys" required: false source_ref: "src/core/hw/aes/key.cpp:207-208 LoadPresetKeys()" note: "needed for encrypted games" - name: boot9.bin path: "Citra/sysdata/boot9.bin" load_from: {libretro: save_dir} system: nintendo-3ds description: "ARM9 bootrom" required: false size: 65536 validation: [size] source_ref: "src/core/hw/aes/key.cpp:162-172 LoadBootromKeys(), src/core/hw/rsa/rsa.cpp:55-65 InitSlots()" note: "provides AES and RSA keys" - name: shared_font.bin path: "Citra/sysdata/shared_font.bin" load_from: {libretro: save_dir} system: nintendo-3ds description: "system shared font (legacy format)" required: false hle_fallback: true source_ref: "src/core/hle/service/apt/apt.cpp:259-267 LoadLegacySharedFont()" note: "fallback to embedded open-source replacement font" - name: seeddb.bin path: "Citra/sysdata/seeddb.bin" load_from: {libretro: save_dir} system: nintendo-3ds description: "game seed database" required: false source_ref: "src/core/file_sys/seed_db.cpp:13-27 SeedDB::Load()" note: "needed for seed-encrypted games (9.6+ titles), creates empty if missing"