Skip to content

Azahar (SDL2)

Azahar (SDL2) emulates Nintendo 3DS. It reads 7 files, none of them required: it starts games without them.

The app reads its files from this folder:

On Linux: $XDG_DATA_HOME/azahar-emu/, else ~/.local/share/azahar-emu/

A user folder in the working directory is used instead when it exists.

Source: src/common/file_util.cpp:783-800, src/common/file_util.cpp:844-855, src/common/common_paths.h:44-45

About this profile
Detail Value
Type standalone
Classification Community fork
Source https://github.com/johndoe6345789/azahar_libretro
Version Git
Revision johndoe6345789/azahar_libretro@c8d39853c1eb
Built by knulli, under its core name. The libretro buildbot does not publish this build.
Revision held KNULLI, the only platform that ships it, builds this revision (KNULLI package/emulators/azahar/azahar.mk:7 at tag 20260511). Later commits are not part of that build.
Profiled 2026-10-22
Profile YAML, JSON
Cores azahar
Systems Nintendo 3DS
Data folder (Linux) $XDG_DATA_HOME/azahar-emu/, else ~/.local/share/azahar-emu/
Install this emulator's files

With EmuDeck, RetroDECK or KNULLI: the installer finds EmuDeck, RetroDECK or KNULLI and its BIOS folder, then downloads only the files Azahar (SDL2) reads there and checks each one.

Open a terminal. Paste the line. Press Enter.

Terminal
curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --emulator azahar-sdl
Technical notes

Fork of Azahar by johndoe6345789 that keeps the SDL2 frontend (src/citra_sdl) beside a libretro port. ENABLE_SDL2_FRONTEND links it into the azahar executable, without Qt. ref: CMakeLists.txt:101, src/CMakeLists.txt:196-206, src/citra_meta/CMakeLists.txt:1-7, src/citra_meta/CMakeLists.txt:47

Data dir: the one the data folder names, with citra-emu and lime3ds-emu kept as legacy locations. sysdata/ and nand/ sit under it, and the SDL2 config can move nand/ with use_custom_storage and nand_directory. ref: src/common/common_paths.h:19-49, src/common/file_util.cpp:844-899, src/common/file_util.cpp:902-904, src/citra_sdl/config.cpp:217-222

keys.txt has an AES-encrypted key blob compiled in, used when the file is absent. ref: src/core/hw/aes/key.cpp:282-300, src/core/hw/default_keys.h:4-5

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:126-188

boot9.bin and sector0x96.bin are defined but read by no code path. ref: src/common/common_paths.h:84-85

mcu.dat and mac.txt in sysdata hold per-installation state the emulator writes itself. ref: src/core/hle/service/cfg/cfg.cpp:946, src/core/hle/service/cfg/cfg.cpp:961, src/core/hle/service/cfg/cfg.cpp:1027, src/core/hle/service/cfg/cfg.cpp:1050

7 files: 0 required, 7 optional. 2 have an HLE fallback.

File Hash
sysdata/keys.txt MD5 cb52d323b131
sysdata/shared_font.bin -
sysdata/seeddb.bin -
sysdata/otp.bin -
nand/private/movable.sed -
nand/rw/sys/SecureInfo_A -
nand/rw/sys/LocalFriendCodeSeed_B -

In this collection: 7 in repo and 0 missing.

7 files

keys.txt optional in repo HLE fallback

  • 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

shared_font.bin optional in repo HLE fallback

  • legacy path, tried when the shared font system archive fails to load

seeddb.bin optional in repo

  • game seed database for 9.6+ titles, an empty one is written if absent

otp.bin optional in repo

  • console-unique OTP, AES-CBC decrypted with the keys.txt OTP key, then checked against the OTP magic and its SHA-256

movable.sed optional in repo

  • Size: 288 B / 320 B
  • Validation: size, signature
  • On a failed signature check: warns and runs with the file
  • console-unique key seed, 288 bytes without the AES MAC block, 320 with it

SecureInfo_A optional in repo

  • Size: 273 B
  • Validation: size, signature
  • On a failed signature check: warns and runs with the file
  • console serial and region data

LocalFriendCodeSeed_B optional in repo

  • Size: 272 B
  • Validation: size, signature
  • On a failed signature check: warns and runs with the file
  • friend code generation seed
.