Read First!

The below wiki article is based on user submitted content.
Please verify all hyperlinks and terminal commands below!

See a mistake? Want to contribute? Edit this article on Github

FAQ

About Citra

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 applications 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.

Where does the name come from?

The name is derived from CTR, which is part of the model number of the original 3DS.


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?

Citra does not natively run dumps of games that have not been decrypted properly. This requires a physical 3DS and the game you own. Refer to:

Can Citra run Pokémon games?

Most Pokémon games work properly but Pokémon X/Y is still currently unplayable. (We don’t know why yet)

The ones that do work might require System Archives dump.

If the console prints the following error log, then the System Archives dump is missing.

Debug.Emulated  core\hle\svc.cpp:SVC::Break:466: Break reason: PANIC
Debug.Emulated  core\hle\svc.cpp:SVC::Break:450: Emulated program broke execution!

Can Citra run [Insert retail game name here]?

Citra can, ostensibly, "play" many different games now and more will become playable as development progress further. Some games/apps, however, will not load at all – only showing a black screen. Others, might only show the title screen and then freeze or crash.

See our Game Compatibility List for more info. You can also helps us improve the Game Compatibility List by doing testing and reviewing the game.

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:

You can expect many games to run slowly, though and to exhibit some 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.

Does Citra support WiFi, network connectivity or online play?

Yes, Citra supports networked local WiFi, but does not support connecting to Nintendo’s servers.

Are you planning to make an Android version?

No, not at the moment.

Does Citra have controller support?

Yes; however, it is not configurable via the GUI at the moment. Please refer to this forum post for the temporary solution.

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 depend on the single-core performance of your processor. Refer to your CPU benchmark in this graph. If it’s below score of 1,800 the [GAME] might not be playable at decent speeds.

Also, it has been reported that using the integrated Intel GPU has shown major performance increased in emulation speed. Only some games will benefit from it. This also applies for other emulators as well. Feel free to test both integrated and dedicated GPU to see which one gives you the best performance.

[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.

For guidance on how to dump games for use with Citra, please refer to:


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?

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 0xc000007b.

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 with boot9strap installed and follow one of the following guides:

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  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  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  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  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  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.

You are using an older build. Download the latest nightly build as the issue has been resolved.

Old answer: In certain games, animated particle 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 kind of effects.

Example of games that suffer from this:

  • Pokemon OR/AS - Missing attack animations.
  • Fire Emblem: Awakening
  • Ace Combat: Assault Horizon Legacy

Networking Support

What is this?

Citra’s networking support emulates the 3DS’ local wifi. On a real 3DS, this allows you to play games with people next to you. With Citra’s implementation of this feature, you can play with other people on Citra anywhere. This is not an implementation of connecting to Nintendo’s servers over wifi, nor is it an implementation of download play.

Why don’t I have this feature?

Currently, networking support is only in the Canary version of Citra.

What’s the difference between public and unlisted rooms?

When you make a public room, Citra connects to the Citra Web Service, authenticates yourself using your token and username, and sends the room details. Then, the Citra Web Service will add your room to the public room listing, so when people go in the Public Game Lobby, they will see the room. Something important to note about a public room is that the Citra Web Service only hosts room listings, and not the room itself. The room will still be hosted on your computer.

When you make an unlisted room, Citra opens a room for any incoming connections, without connecting to the Citra Web Services. For other people to join the room, they will need to enter your IP manually, since they’re not going through the Public Game Browser listing.

How do I join a public room?

To join a public room, follow these steps: 1. Go to Multiplayer in the menu bar, and click Browse Public Game Lobby. 2. Set your nickname in the top left. 3. Double click on a room in the Public Room Browser dialog to join it. 4. Double click on a game in the Citra main window to start it.

How do I join a unlisted room?

To join a unlisted room, follow these steps: 1. Go to Multiplayer in the menu bar, and click Direct Connect to Room. 2. Enter the IP and port of the host you’re connecting to, your nickname, and password of the room if applicable. 3. Click connect to join the room.

How do I make a public room?

To make a public room, follow these steps: 1. If you and the people you are playing with are on different wifi networks, setup port forwarding in your router settings. 2. Go to Multiplayer in the menu bar, and click Create Room. 3. Enter the name of your room to be shown in the public listing and chat window, your preferred nickname, the game that will be played, an optional password if you need it, and the max number of players that can join the room. Unless you know you need it, you shouldn’t have to touch the port number. 4. Click Host Room to create the room.

How do I make an unlisted room?

To make an unlisted room, follow these steps: 1. If you and the people you are playing with are on different wifi networks, setup port forwarding in your router settings. 2. Go to Multiplayer in the menu bar, and click Create Room. 3. Enter the name of your room to be shown in the chat window, your preferred nickname, the game that will be played, an optional password if you need it, and the max number of players that can join the room. Unless you know you need it, you shouldn’t have to touch the port number. 4. At the bottom, set the room type combo box to Unlisted. 5. Click Host Room to create the room.


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.