Citra Configuration
This is the official user guide for Citra Emulator, created to help you understand every feature and use the emulator with ease.
Here, you’ll find clear explanations, step-by-step tutorials, and detailed guides that cover everything from installation to advanced settings.
Whether you’re a beginner or an experienced user, this configuration guide will help you get the best possible experience from Citra.
Usage
You can start using Citra in two ways: either download a precompiled version directly from our site, or build the emulator yourself from the official source code.
Choose the setup guide that matches your device:
- Build Instructions for Windows
- Build Instructions for macOS
- Build Instructions for Linux
- Build Instructions for Android
Each guide will walk you through the full installation process step by step.
Dumping Your 3DS Games
To play games on Citra, you must dump your own Nintendo 3DS titles from your personal console. This ensures full compatibility and keeps your setup legal and safe. You can dump games in two ways:
If you have existing save files or extra data on your Nintendo 3DS that you want to continue using in Citra, you’ll need to dump those files from your console as well.
If your 3DS has any game updates or DLC content that you want to use in Citra, you’ll need to dump those files from your console as well.
- Dumping Updates and DLCs
- Dumping System Files
Some 3DS games need extra system files to run correctly in Citra. To make these games work, you’ll have to dump a few important system archives from your 3DS console.
- Dumping System Archives and the Shared Fonts from a 3DS Console
- Dumping Config Savegame from a 3DS Console
These files help Citra load games properly, fix missing text issues, and improve overall compatibility.
- Understanding Citra’s File Structure
To work smoothly with Citra, it’s helpful to understand where your files, saves, and configurations are stored. Start by reading the User Directory guide, which explains how Citra organizes your game files, saves, mods, shaders, and settings on your device.
- Keyboard Controls (Default Bindings)
Citra comes with simple, ready-to-use keyboard controls so you can start playing immediately. You can check the full list of default keyboard bindings to see how each button is mapped, and customize them anytime in the settings.
Development Information
If you want to contribute to Citra or continue working with its codebase, this section gives you all the essential resources and technical references developers rely on. These tools, manuals, and libraries help you understand how the Nintendo 3DS works and how Citra emulates it.
3DS Hardware & Software Resources
To understand the internal structure of the Nintendo 3DS, the following resources are extremely valuable:
- 3DBrew: The most complete public resource for learning about 3DS hardware, software, system services, and homebrew development.
- ARM Architecture Manuals: These documents explain the behavior of the CPU cores used inside the 3DS. ARM11 MPCore Reference Manual – ARM946E-S™ Reference Manual
Homebrew Tools & Resources
If you want to test Citra without dumping commercial games, you can use various homebrew apps and demos.
Useful Links:
- 3DBrew Homebrew Applications: A full list of apps and demos.
- Smea’s Ninjhax Starter Kit: Includes pre-compiled binaries for quick testing.
Homebrew Development Tools:
- devkitARM: A compiler toolchain made for creating 3DS homebrew.
- ctrulib (CTR User Library): Helps you write ARM11 user-mode code.
- picasso & nihstro : Shader assemblers for the PICA200 GPU used in the 3DS. (nihstro also includes a disassembler).
- Aemstro: Older shader tool; picasso/nihstro are preferred today.
- Result Code Decoder (Python): Script that helps decode error codes.
- 3DS Game Database: Includes title IDs, versions, and game metadata.
- Homebrew Libraries & Tools page on 3DBrew: A curated list of more tools for 3DS development.
CPU Emulation in Citra
Citra uses two CPU cores to emulate the 3DS processor:
ARM Interpreter (dyncom):
- Based on the “SkyEye” project
- Updated to fully support ARMv6 (the instruction set used in the 3DS)
- Executes instructions directly but is slower than JIT
JIT Recompiler (dynarmic):
- Created by @MerryMage specifically for Citra
- Recompiles ARMv6K instructions into x86_64 instructions in real time
- Provides major performance boosts:
- 15–20 FPS increase in most games
- Up to 200% speed improvements in some titles
- Automatically falls back to the interpreter when needed
- Fully merged into Citra in September 2016
ARM9 Emulation
There are currently no plans to emulate the ARM9 chip inside the 3DS. ARM9 is mainly used for:
- Security functions
- Running Nintendo DS titles
Since Citra focuses only on Nintendo 3DS software, ARM9 emulation is not required.
Archive of 3DS Documentation
Because the Nintendo 3DS community never had a single official place to store technical research, information about the system is scattered across many different sites, notes, and developer posts.
This archive collects the most helpful and widely used 3DS documentation in one place, making it easier for developers, modders, and researchers to access what they need.
Reverse-Engineering & Technical Wikis
- A dedicated 3DS reverse-engineering wiki containing in-depth hardware and software breakdowns.
Notes and research from Fincs, covering advanced graphics functions of the 3DS GPU:
- Procedural texture generation
- Shadow mapping
- “Gaseous rendering” effects
Additional Resources
- Mike’s transcript of the gaseous rendering patent
- wwylele’s diagram explaining the gaseous rendering process
Kernel & System Notes
Academic Papers & Presentations (DMP GPU)
Useful research from DMP, the creators of the PICA200 GPU:
- Procedural texture techniques
- Ohbuchi & Unno: A Real-Time Configurable Shader Based on Lookup Tables
- Kazakov & Ohbuchi: Primitive Processing and Advanced Shading Architecture for Embedded Space (Public presentations exist, but full details are in paid academic papers.)
CRO, GPU LUT, and Other Low-Level Documentation
Technical notes from wwylele, including:
- CRO format documentation
- GPU_LUTINPUT_CP & tangent mapping notes
- A collection of diagrams covering memory layout, NCCH, GAS, and the PICA pipeline
Save Format, Encryption & Network Documentation
- 3DS save format documentation (now integrated into 3DBrew)
- SciresM’s Reddit explanations on encryption and CDN systems:
- wwylele’s documentation on CEC (Work in Progress)
- wwylele’s note on region manifest archive format
- Wwylele’s Misc 3DS architecture diagrams
