{
  "commit": "d38cd580364b2c788e633b9e51c15e1668f726c0",
  "count": 1,
  "generated_at": "2026-11-03T13:36:34Z",
  "items": [
    {
      "id": "azahar",
      "profile": {
        "core_classification": "official_port",
        "core_version": "2126.2",
        "cores": [
          "azahar",
          "azahar-sa"
        ],
        "data_root": {
          "android": {
            "note": "No default: the user grants a folder through the system picker, stored as CITRA_DIRECTORY, and every user path is resolved inside it.",
            "path": "the folder picked in the setup wizard",
            "source_ref": "src/android/app/src/main/java/org/citra/citra_emu/utils/PermissionsHandler.kt:19,49-56, src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryInitialization.kt:90-98, src/common/file_util.cpp:961-962"
          },
          "linux": {
            "note": "A user folder in the working directory is used instead when it exists.",
            "path": "$XDG_DATA_HOME/azahar-emu, else ~/.local/share/azahar-emu",
            "source_ref": "src/common/file_util.cpp:904-921, 965-975, src/common/common_paths.h:44-45"
          },
          "macos": {
            "note": "$XDG_DATA_HOME/azahar-emu is kept when it, or the XDG config or cache folder, already exists, and a user folder in the working directory takes precedence over both.",
            "path": "~/Library/Application Support/Azahar",
            "source_ref": "src/common/file_util.cpp:965-975, 999-1012, src/common/common_paths.h:34-40"
          },
          "windows": {
            "note": "A user folder beside the executable is used instead when it exists.",
            "path": "%APPDATA%/Azahar",
            "source_ref": "src/common/file_util.cpp:945-958, src/common/common_paths.h:24-25"
          }
        },
        "display_name": "Nintendo - 3DS (Azahar)",
        "emulator": "Azahar",
        "files": [
          {
            "hle_fallback": true,
            "load_from": {
              "libretro": "save_dir"
            },
            "md5": "4812e96097b7fc1bdd7b40366208b7a7",
            "name": "keys.txt",
            "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",
            "path": "Azahar/sysdata/keys.txt",
            "required": false,
            "sha1": "5288772be438b86978a801e6dcb14228ad3a20af",
            "source_ref": "src/core/hw/aes/key.cpp:151-288, src/core/hw/aes/key.cpp:292-314, src/common/common_paths.h:83, src/core/hw/default_keys.h:11",
            "standalone_path": "sysdata/keys.txt",
            "system": "nintendo-3ds"
          },
          {
            "hle_fallback": true,
            "load_from": {
              "libretro": "save_dir"
            },
            "name": "shared_font.bin",
            "note": "legacy path, tried when the shared font system archive fails to load",
            "path": "Azahar/sysdata/shared_font.bin",
            "required": false,
            "source_ref": "src/core/hle/service/apt/apt.cpp:278-293, src/core/hle/service/apt/apt.cpp:300-305, src/common/common_paths.h:82",
            "standalone_path": "sysdata/shared_font.bin",
            "system": "nintendo-3ds"
          },
          {
            "load_from": {
              "libretro": "save_dir"
            },
            "name": "seeddb.bin",
            "note": "game seed database for 9.6+ titles, an empty one is written if absent",
            "path": "Azahar/sysdata/seeddb.bin",
            "required": false,
            "source_ref": "src/core/file_sys/seed_db.cpp:12-58",
            "standalone_path": "sysdata/seeddb.bin",
            "system": "nintendo-3ds"
          },
          {
            "load_from": {
              "libretro": "save_dir"
            },
            "name": "otp.bin",
            "note": "console-unique OTP, AES-CBC decrypted with the keys.txt OTP key, then checked against the OTP magic and its SHA-256",
            "path": "Azahar/sysdata/otp.bin",
            "required": false,
            "size": 256,
            "source_ref": "src/core/file_sys/otp.cpp:14-55, src/core/hw/unique_data.cpp:143-192, src/core/hw/unique_data.cpp:243-245",
            "standalone_path": "sysdata/otp.bin",
            "system": "nintendo-3ds",
            "validation": [
              "size",
              "crypto"
            ]
          },
          {
            "load_from": {
              "libretro": "save_dir"
            },
            "name": "movable.sed",
            "note": "console-unique key seed, 288 bytes without the AES MAC block, 320 with it",
            "on_mismatch": {
              "signature": "warn"
            },
            "path": "Azahar/nand/private/movable.sed",
            "required": false,
            "size": [
              288,
              320
            ],
            "source_ref": "src/core/hw/unique_data.cpp:194-233, src/core/hw/unique_data.cpp:247-249, src/core/hw/unique_data.h:103-133",
            "standalone_path": "nand/private/movable.sed",
            "system": "nintendo-3ds",
            "validation": [
              "size",
              "signature"
            ]
          },
          {
            "load_from": {
              "libretro": "save_dir"
            },
            "name": "SecureInfo_A",
            "note": "console serial and region. A failed signature is retried against every region",
            "on_mismatch": {
              "signature": "warn"
            },
            "path": "Azahar/nand/rw/sys/SecureInfo_A",
            "required": false,
            "size": 273,
            "source_ref": "src/core/hw/unique_data.cpp:48-103, src/core/hw/unique_data.cpp:235-237, src/core/hw/unique_data.h:57",
            "standalone_path": "nand/rw/sys/SecureInfo_A",
            "system": "nintendo-3ds",
            "validation": [
              "size",
              "signature"
            ]
          },
          {
            "load_from": {
              "libretro": "save_dir"
            },
            "name": "LocalFriendCodeSeed_B",
            "note": "friend code generation seed",
            "on_mismatch": {
              "signature": "warn"
            },
            "path": "Azahar/nand/rw/sys/LocalFriendCodeSeed_B",
            "required": false,
            "size": 272,
            "source_ref": "src/core/hw/unique_data.cpp:105-141, src/core/hw/unique_data.cpp:239-241, src/core/hw/unique_data.h:76",
            "standalone_path": "nand/rw/sys/LocalFriendCodeSeed_B",
            "system": "nintendo-3ds",
            "validation": [
              "size",
              "signature"
            ]
          }
        ],
        "library_name": "Azahar",
        "notes": "Successor to Citra (via Lime3DS). The libretro core lives in the same\nrepository (src/citra_libretro) and is built with ENABLE_LIBRETRO, which\nforces the SDL2, Qt and web service frontends off.\nref: CMakeLists.txt:40, CMakeLists.txt:109-111, CMakeLists.txt:165-187\n\nThe libretro core moves the user directory to <save_dir>/Azahar/, or to\n<system_dir>/Azahar/ when the frontend gives no save directory. The core\noption \"Azahar Default\" keeps the standalone data directory instead.\nref: src/citra_libretro/core_settings.cpp:592-603, src/citra_libretro/core_settings.cpp:1048-1080,\nsrc/citra_libretro/environment.cpp:191-208\n\nThe core reports library_name \"Azahar\".\nref: src/citra_libretro/environment.cpp:269\n\nThe standalone user directory is the one data_root names per system, with\ncitra-emu and lime3ds-emu (Citra and Lime3DS on Windows and macOS) kept as\nlegacy locations. sysdata/, nand/ and sdmc/ sit under it.\nref: src/common/common_paths.h:19-49, src/common/file_util.cpp:943-972,\nsrc/common/file_util.cpp:1023-1025\n\nkeys.txt has an AES-encrypted key blob compiled in, used when the file is\nabsent. ENABLE_BUILTIN_KEYBLOB defaults to ON and is not among the options a\nlibretro build forces off.\nref: src/core/hw/aes/key.cpp:292-314, CMakeLists.txt:154, src/core/CMakeLists.txt:501-503\n\nSystem archives (shared font, Mii data, country list, bad word list) are read\nfrom installed NAND titles. Open-source replacements embedded in the binary\nanswer when the title is absent.\nref: src/core/file_sys/archive_ncch.cpp:150-214, src/core/hle/service/apt/apt.cpp:211-276\n\nboot9.bin and sector0x96.bin are defined but read by no code path.\nref: src/common/common_paths.h:84-85\n\nThe .info declares no firmware.\n",
        "profiled_date": "2026-10-22",
        "source": "https://github.com/azahar-emu/azahar",
        "source_commit": "219d743a1e698101fe1ab8bef43e6563126c3c27",
        "systems": [
          "nintendo-3ds"
        ],
        "type": "standalone + libretro",
        "upstream": "https://github.com/azahar-emu/azahar",
        "version_basis": {
          "distance": 0,
          "kind": "tag",
          "tag": "2126.2"
        }
      }
    }
  ],
  "kind": "emulators",
  "schema_version": 1
}
