mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-24 04:39:06 -05:00
macOS uses ~/Library/Application Support/Azahar unless XDG folders already exist; Android has no default folder, the setup wizard asks for one.
152 lines
6.7 KiB
YAML
152 lines
6.7 KiB
YAML
emulator: Azahar
|
|
type: standalone + libretro
|
|
core_classification: official_port
|
|
source: "https://github.com/azahar-emu/azahar"
|
|
upstream: "https://github.com/azahar-emu/azahar"
|
|
profiled_date: "2026-10-22"
|
|
source_commit: "219d743a1e698101fe1ab8bef43e6563126c3c27"
|
|
core_version: "2126.2"
|
|
display_name: "Nintendo - 3DS (Azahar)"
|
|
library_name: "Azahar"
|
|
cores:
|
|
- azahar
|
|
- azahar-sa
|
|
systems:
|
|
- nintendo-3ds
|
|
|
|
data_root:
|
|
windows:
|
|
path: "%APPDATA%/Azahar"
|
|
source_ref: "src/common/file_util.cpp:945-958, src/common/common_paths.h:24-25"
|
|
note: "A user folder beside the executable is used instead when it exists."
|
|
linux:
|
|
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"
|
|
note: "A user folder in the working directory is used instead when it exists."
|
|
macos:
|
|
path: "~/Library/Application Support/Azahar"
|
|
source_ref: "src/common/file_util.cpp:965-975, 999-1012, src/common/common_paths.h:34-40"
|
|
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."
|
|
android:
|
|
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"
|
|
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: is where the libretro core reads a file below the save directory the
|
|
# frontend hands it (load_from), standalone_path: where the standalone app
|
|
# reads it under its user directory.
|
|
notes: |
|
|
Successor to Citra (via Lime3DS). The libretro core lives in the same
|
|
repository (src/citra_libretro) and is built with ENABLE_LIBRETRO, which
|
|
forces the SDL2, Qt and web service frontends off.
|
|
ref: CMakeLists.txt:40, CMakeLists.txt:109-111, CMakeLists.txt:165-187
|
|
|
|
The libretro core moves the user directory to <save_dir>/Azahar/, or to
|
|
<system_dir>/Azahar/ when the frontend gives no save directory. The core
|
|
option "Azahar Default" keeps the standalone data directory instead.
|
|
ref: src/citra_libretro/core_settings.cpp:592-603, src/citra_libretro/core_settings.cpp:1048-1080,
|
|
src/citra_libretro/environment.cpp:191-208
|
|
|
|
The core reports library_name "Azahar".
|
|
ref: src/citra_libretro/environment.cpp:269
|
|
|
|
The standalone user directory is the one data_root names per system, with
|
|
citra-emu and lime3ds-emu (Citra and Lime3DS on Windows and macOS) kept as
|
|
legacy locations. sysdata/, nand/ and sdmc/ sit under it.
|
|
ref: src/common/common_paths.h:19-49, src/common/file_util.cpp:943-972,
|
|
src/common/file_util.cpp:1023-1025
|
|
|
|
keys.txt has an AES-encrypted key blob compiled in, used when the file is
|
|
absent. ENABLE_BUILTIN_KEYBLOB defaults to ON and is not among the options a
|
|
libretro build forces off.
|
|
ref: src/core/hw/aes/key.cpp:292-314, CMakeLists.txt:154, src/core/CMakeLists.txt:501-503
|
|
|
|
System archives (shared font, Mii data, country list, bad word list) are read
|
|
from installed NAND titles. Open-source replacements embedded in the binary
|
|
answer when the title is absent.
|
|
ref: src/core/file_sys/archive_ncch.cpp:150-214, src/core/hle/service/apt/apt.cpp:211-276
|
|
|
|
boot9.bin and sector0x96.bin are defined but read by no code path.
|
|
ref: src/common/common_paths.h:84-85
|
|
|
|
The .info declares no firmware.
|
|
|
|
files:
|
|
- name: keys.txt
|
|
path: Azahar/sysdata/keys.txt
|
|
standalone_path: sysdata/keys.txt
|
|
load_from: {libretro: save_dir}
|
|
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:151-288, src/core/hw/aes/key.cpp:292-314, src/common/common_paths.h:83, src/core/hw/default_keys.h:11"
|
|
|
|
- name: shared_font.bin
|
|
path: Azahar/sysdata/shared_font.bin
|
|
standalone_path: sysdata/shared_font.bin
|
|
load_from: {libretro: save_dir}
|
|
system: nintendo-3ds
|
|
required: false
|
|
hle_fallback: true
|
|
note: "legacy path, tried when the shared font system archive fails to load"
|
|
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"
|
|
|
|
- name: seeddb.bin
|
|
path: Azahar/sysdata/seeddb.bin
|
|
standalone_path: sysdata/seeddb.bin
|
|
load_from: {libretro: save_dir}
|
|
system: nintendo-3ds
|
|
required: false
|
|
note: "game seed database for 9.6+ titles, an empty one is written if absent"
|
|
source_ref: "src/core/file_sys/seed_db.cpp:12-58"
|
|
|
|
- name: otp.bin
|
|
path: Azahar/sysdata/otp.bin
|
|
standalone_path: sysdata/otp.bin
|
|
load_from: {libretro: save_dir}
|
|
system: nintendo-3ds
|
|
required: false
|
|
size: 256
|
|
validation: [size, crypto]
|
|
note: "console-unique OTP, AES-CBC decrypted with the keys.txt OTP key, then checked against the OTP magic and its SHA-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"
|
|
|
|
- name: movable.sed
|
|
path: Azahar/nand/private/movable.sed
|
|
standalone_path: nand/private/movable.sed
|
|
load_from: {libretro: save_dir}
|
|
system: nintendo-3ds
|
|
required: false
|
|
size: [288, 320]
|
|
validation: [size, signature]
|
|
on_mismatch: {signature: warn}
|
|
note: "console-unique key seed, 288 bytes without the AES MAC block, 320 with it"
|
|
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"
|
|
|
|
- name: SecureInfo_A
|
|
path: Azahar/nand/rw/sys/SecureInfo_A
|
|
standalone_path: nand/rw/sys/SecureInfo_A
|
|
load_from: {libretro: save_dir}
|
|
system: nintendo-3ds
|
|
required: false
|
|
size: 273
|
|
validation: [size, signature]
|
|
on_mismatch: {signature: warn}
|
|
note: "console serial and region. A failed signature is retried against every region"
|
|
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"
|
|
|
|
- name: LocalFriendCodeSeed_B
|
|
path: Azahar/nand/rw/sys/LocalFriendCodeSeed_B
|
|
standalone_path: nand/rw/sys/LocalFriendCodeSeed_B
|
|
load_from: {libretro: save_dir}
|
|
system: nintendo-3ds
|
|
required: false
|
|
size: 272
|
|
validation: [size, signature]
|
|
on_mismatch: {signature: warn}
|
|
note: "friend code generation seed"
|
|
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"
|