The below content is user submitted content.
Please verify all hyperlinks and terminal commands below!
What is Citra?
Citra is a work-in-progress Nintendo 3DS emulator started in early 2014. Citra can currently emulate, with varying degrees of success, a wide variety of different homebrew programs and commercial software.
What is Citra's License?
Citra is an open-source project, licensed under the GPLv2 (or any later version). Refer to the license document for more information.
Who made Citra?
Citra has an active team of open-source developers. Over 50 people have worked hard on the project since its founding in 2014! The list of contributors can be found on GitHub.
Note: Citra is not affiliated with Nintendo in any way.
Running games in Citra
When launching a game, I get a "Could not Determine System Mode" or "Failed to Decrypt" error. I want to run backups of retail titles that I own, how can I do that?
Can Citra run Pokémon games?
Most of Pokémon games work properly but some are unplayable (we don't know why yet).
The ones that do work require a Home Folder dump and crashes are common.
If the console prints the following error log, then the Home Folder dump is missing.
Debug.Emulated <Critical> core\hle\svc.cpp:SVC::Break:466: Break reason: PANIC Debug.Emulated <Critical> core\hle\svc.cpp:SVC::Break:450: Emulated program broke execution!
Does Citra support network connectivity or online play?
No, Network has not yet been implemented in Citra therefore any online function does not work.
This is one of the most requested features but at the moment there is no plan to implement it.
Are you planning to make an Android version?
No, not at the moment.
Does Citra have controller support?
No, not at the moment.
Can Citra run \<Insert retail game name here>?
Citra can, ostensibly, "play" many different games, including The Legend of Zelda: Ocarina of Time and Animal Crossing.
Many games, however, will not load at all – only showing a black screen. Many other games will only show the title screen and then freeze or crash.
Note that many games also require certain files to be dumped from a 3DS console. See below for information about files that can be dumped from a 3DS console and used by Citra:
- Dumping System Archives and the Shared Fonts from a 3DS Console
- Dumping Config Savegame from a 3DS Console
You can expect many games to run slowly, though and to exhibit many gameplay and graphical glitches.
If you're interested in 3DS emulation as an experiment, you may gain something out of trying Citra, but if you're simply looking to play games then stick to your 3DS handheld.
Can I expect Citra to play [GAME] at full-speed?
Citra can run most games at full speed now thanks to the recent JIT compiler being merged into the official build. Certain parts of videos/cutscenes will still be slower due to JIT compilation not being feature complete yet. However, not all games are created equally and therefore some games will run at full speed while others might suffer from slow emulation.
Note: The speed of [GAME] will still depend on the performance of your processor.
[GAME] runs way too fast, how can I slow down the emulation?
Recent versions have a framerate limiter built-in. It can be toggled in the configuration, reachable through the Menu (citra-qt): "Emulation" > "Configure..." > "Graphics" > "Limit Framerate". You may also want to enable V-Sync in the same page if desired.
I saw a YouTube video about [GAME], why doesn't it work on the nightly build?
Alternative custom branches may have not been merged into master. We only support nightly builds based on the master branch. Unofficial builds are not supported. There may be other branches that are planned to be merged, but must go through vetting first to ensure they are good contributions to the project long term.
Where can I download games to use with Citra?
Short answer: You don't. Buy games and dump them with a Nintendo 3DS.
Long answer: Downloading commercial games is illegal and thus strongly frowned upon by the Citra developers. To prevent legal issues, this includes gray areas like downloading games which you purchased earlier. You don't necessarily need to own a 3DS yourself, as you can buy game cartridges and dump them with a friend's console. On the other hand, copying a friend's game dump is considered illegal. Please note that any mention or discussion of piracy on our forums or Discord channels will result in being banned from our community.
System requirements and common issues
Which platforms does Citra support?
We're pleased to say that Citra works on all three major desktop OSes!
Citra is actively tested and supported on various 64-bit version of Windows (7 and up), Linux and macOS. Other platforms may work, but aren't tested by developers. In far future, mobile platforms may be targeted as well. We have no plans to support 32-bit operating system officially.
What kind of specification do I need to run Citra?
At this point, Citra is simply not fast enough to run most commercial games at full speed, even if your computer can run the most demanding of PC games just fine.
The only hard requirements for the official version of Citra is a graphics chip that supports at least OpenGL 3.3 and a 64-bit OS running on a standard PC, but you definitely want a processor with the highest possible performance per core.
When I try to start any game, Citra immediately crashes!
It is very likely that this issue is caused by your GPU or drivers not supporting OpenGL 3.3. Try updating to the latest drivers if possible, and verify that either your driver's control panel or a tool like GPU Caps Viewer reports that you can use at least OpenGL 3.3. If updating drivers doesn't help, you'll need to upgrade your GPU or wait until we remove this limitation from the software renderer. (The hardware renderer will never support lower OpenGL versions.)
Also read the previous question / answer for a software implementation of OpenGL
Citra complains about missing DLLs.
First, if you've downloaded any DLL files from the Internet and placed them in the Citra or a system folder, remove them first, they will not solve your problem and may cause system instability. Then download and install the x64 variant (vc_redist.x64.exe) of Visual C++ Redistributable for Visual Studio 2015 from Microsoft. If that doesn't help, ensure you have also extracted the DLL files that come included with the Citra builds and that they are in the same directory as the executable.
A message box pops up saying the application was was unable to start correctly
See above about missing DLLs.
I've dumped my game but when I load it, Citra crashes/prints a bunch of gibberish to the console!
Games need to be decrypted on a 3DS before being usable in Citra. This is a technical limitation and it is unlikely that it can be removed in the foreseeable future. To decrypt your games, you will need to have a 3DS system running firmware 9.2 or lower and follow the Dumping Game Cartridges and Dumping Installed Titles guide.
What should I do if I get an error saying something like
GetConfigInfoBlock: Config block 0xXXXXX with flags X and size X was not found?
Sometimes a game will freeze and you'll get an error which looks like this in the log, usually followed by a "Fatal Error":
Service.CFG <Error> core\hle\service\cfg\cfg.cpp:Service::CFG::GetConfigInfoBlock:236: Config block 0xA0001 with flags 2 and size 2 was not found
In this case, try deleting the file at
user/nand/data/00000000000000000000000000000000/sysdata/00010017/00000000/config and running the latest version of Citra. If this does not work, then note the config block number (
0xA0001 in the example) and file a bug report.
How can I fix the
API ERROR 1282 OPENGL error? I can't figure out what is causing this to happen!
This is the result of third-party application that uses overlays which might conflict with Citra. The console will print this error log:
Render.OpenGL <Error> video_core\renderer_opengl\renderer_opengl.cpp:DebugHandler:469: API ERROR 1282: GL_INVALID_OPERATION error generated. Function glMatrixMode is deprecated and not available in preview contexts. Render.OpenGL <Error> video_core\renderer_opengl\renderer_opengl.cpp:DebugHandler:469: API ERROR 1282: GL_INVALID_OPERATION error generated. Function glPushMatrix is deprecated and not available in preview contexts. Render.OpenGL <Error> video_core\renderer_opengl\renderer_opengl.cpp:DebugHandler:469: API ERROR 1282: GL_INVALID_OPERATION error generated. Function glLoadIdentity is deprecated and not available in preview contexts. Render.OpenGL <Error> video_core\renderer_opengl\renderer_opengl.cpp:DebugHandler:469: API ERROR 1282: GL_INVALID_OPERATION error generated. Function glOrtho is deprecated and not available in preview contexts.
So far only MSI Afterburner is being reported to have conflicts with Citra, therefore it is advisable to close it before launching Citra.
Where is the folder for the emulated SD card?
The folder for the emulated SD card is named
sdmc and can be found in Citra's User Directory.
Particle effects or text display as a jumble of triangles.
In certain games, animated particles effects (such as smoke, fire, trails, etc.) or text may not render properly, showing up instead as a jumbled mess of triangles, sometimes covering large parts of the screen. This is caused by a missing feature in our GPU support (Geometry Shaders) which is used by games to render these kinds of effects. It is planned to be implemented eventually, but for now there's no fix or workaround for these issues.
Note that certain versions of the Bleeding Edge builds (86 and below) had a prototype implementation of this feature, so it's possible that a game that worked in previous versions might display these corrupted graphics in the latest version. Unfortunately this prototype is incompatible with the current codebase and can't be reapplied to newer builds.
Games that suffer from this:
- Pokemon OR/AS - Missing attack animations.
- Fire Emblem: Awakening
- Ace Combat: Assault Horizon Legacy
Development and contributions
How can I develop or contribute to the project?
If you're interested in contributing, fork the project here in GitHub, and then create a Pull Request when you're ready to submit your contribution. Unless your change is trivial, however, it is strongly recommended that you join our development channel (#citra-dev @ Freenode) to coordinate with the developers beforehand. Make sure to review our coding guidelines and ensure your changes follow them. If you're looking for ideas on things to work on, try looking around our issue tracker. Some issues are tagged with the E-easy label, which means they're smaller tasks that should be easier to get into.
I'd like to be a beta tester, how can I help?
If you try some games and run into issues like graphical glitches, freezes and especially regressions from previous versions, you can try reporting them in our issue tracker, accompanied by logs from the emulator if possible. Do not report an issue if a game simply fails to boot entirely.
Non-official builds are faster, have more features and run more games. Why don't you work with the people who create those?
Most non-official builds are just a collection of different features currently being worked on by Citra contributors from the community. These features are not part of the official version (yet) because they are either broken-by-design and would possibly hinder development soon or because they are still work in progress. Also, each change will go through a review process. Features found in non-official versions are often in the review phase already and will be included in official versions about a month or two later.
If you are the author of a non-official build make sure you still follow the license of Citra.
I think what you guys are doing is awesome! I am not a developer, but still want to support the project. What can I do?
That's awesome! Such support is what motivates us to keep working! Stick around and keep motivating our work!
If you're interested in donating, we would gladly accept used hardware, games for testing, or money for development/infrastructure costs. Please see our donations page for more information, or join our IRC channel (#citra @ Freenode) and contact a developer.