Azahar can replace a game’s original textures at runtime with higher-resolution versions supplied by a texture pack. This allows community artists to dramatically improve the visual quality of 3DS games without modifying the game files themselves. The replacement happens transparently: the game runs normally and Azahar swaps in the custom texture whenever the matching original is requested by the renderer.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/azahar-emu/azahar/llms.txt
Use this file to discover all available pages before exploring further.
Supported file formats
The texture engine (video_core/custom_textures/custom_tex_manager.h) supports three file formats for replacement textures:
| Format | Extension | Notes |
|---|---|---|
| PNG | .png | Uncompressed, widely supported, best for pack authoring |
| DDS | .dds | Supports block-compressed formats (BC1, BC3, BC5, BC7) |
| KTX | .ktx | Khronos texture container, supports ASTC compression |
Texture file naming
Each replacement texture file must be named using the hash of the original texture it replaces. The standard naming pattern is:<width>and<height>are the texture dimensions in pixels.<hash>is a 64-bit hexadecimal identifier derived from the original texture data.<format>is the numeric GPU texture format index.
pack.json configuration file inside the pack folder to map custom filenames to texture hashes, which allows more human-readable filenames.
Where to place texture packs
Texture files must be placed in Azahar’s load directory, under a subfolder named after the game’s Title ID:0004000000030800 for The Legend of Zelda: Ocarina of Time 3D). You can find a game’s Title ID in Azahar’s game list by right-clicking the title and selecting Properties.
A typical pack layout looks like this:
Enabling custom textures
Enable the option
Check Use Custom Textures. This tells the renderer to look in the load directory for replacement textures when each texture is requested.
Optionally enable preloading
Check Preload Custom Textures to load all replacement textures into memory before the game starts. This eliminates in-game pop-in at the cost of longer startup times and higher RAM usage.
Preloading large texture packs can consume several gigabytes of RAM. Azahar will abort preloading automatically if available memory runs low, falling back to on-demand loading.
Dumping original textures
To create your own texture pack or to identify the correct hash for a texture you want to replace, use the built-in texture dumper:Play the game
Run the game and navigate to the areas or menus that contain the textures you want to replace. Every texture the renderer encounters is saved to disk.
Locate the dumped files
Dumped textures are written to:Each file is named with the standard
tex1_<width>x<height>_<hash>_<format>.png pattern, giving you the exact filenames needed for replacements.