What is the Citra resolution hack?
So, you tried playing 3DS games on your Android phone with the Citra emulator. But you had low FPS, lags, and choppy sound. We will show you how to fix lags with the help of the Citra resolution hack, using simple steps.
What is the Citra emulator?
Citra is an open source emulator that allows you to play Nintendo 3DS games on your computer, tablet or smartphone. It is available on Windows and Android.
There are two versions of Citra emulator on Android, one is the official app made by the Citra team. The other one is a fork of the official app, it’s called Citra MMJ, and made by Weihuoya.
What are the differences between the official Citra and Citra MMJR apps?
Citra MMJ supports cheat codes. It also has many settings that are not present in the official Citra emulator app. The official Citra app supports save states, while the Citra MMJ build does not have this feature.
Can I have both Citra MMJ and official Citra installed on my phone?
Yes, you can have both apps installed at the same time. They use different settings files (config.ini and config-mmj.ini)
How do I speed up Citra emulator?
I stumbled upon a fix for improving the FPS in 3DS games, recently on reddit. It explains how to fix lags in Citra 3DS emulator on Android, and get more frames per second in games.
Citra Resolution Hack
1. Close the Citra MMJ app.
2. Open a text editor app. If you don’t have one, use the open source app called Markor.
3. Navigate to the citra-emu folder.
4. Tap on the config directory.
5. Select the file that has the name config-mmj.ini.
If you are using the official Citra app, you need to edit the config.ini file.
6. Scroll down to the bottom of the text file, till you see the resolution factor. The default value of this setting is between 1 to 4.
7. Set the resolution factor = 200
8. Save the file.
9. Open Citra MMJ, don’t modify any settings.
10. Load the game. You will probably see a black screen and some audio playing. Don’t worry, this is normal.
11. Access the app’s menu by swiping from the right side of the screen. Select Settings and scroll down to the resolution, it will be set at 4.
12. Lower the resolution to 1, 2 or 3 depending on your device’s hardware capabilities.
Your game should now run better than normal, and you will get 4-5 FPS more than before.
Do I have to do this every time I play a game?
Yes, it can get annoying, but there is no permanent solution for this. If you exit the game, Citra MMJ will reset the resolution factor. You will need to set it to 200 again, before playing the game.
Does this trick fix all games which lag?
It works with some games, not all. Pokemon X and Y for example run badly on the default settings on my phone. Without the resolution hack, the sound is choppy and the frame rate is poor. The Citra resolution edit fixes the problem, and I can play it at 2x resolution with 30FPS, 60 VPS, 100 Speed with the music playing correctly.
The game’s performance will improve as you continue playing it, and the shader cache builds up.
Performance of 3DS games without the Citra resolution hack
Redmi Note 10 Pro (Qualcomm Snapdragon 732G, Adreno 618, 6GB RAM
- Bravely Default, Pokémon Omega Ruby, Alpha Sapphire, The Legend of Zelda: Ocarina of Time ran at 4x resolution with maximum performance. 30 FPS 100% speed.
- Pokemon X and Y at 1x ran at 20 FPS 70% speed. Choppy music, major lagging issues.
- Pokémon Ultra Sun, Ultra Moon – 1x – 25 FPS 80% speed. Choppy sound, minor lags
ASUS Zenfone Max Pro M1 – Qualcomm Snapdragon 636, Adreno 509, 3GB RAM
- Bravely Default – 2x resolution – 27 FPS, 97% speed – slightly choppy sound
- The Legend of Zelda: Ocarina of Time – 2x, 29 FPS, 99% speed – occasional frame drops, perfect music
- Pokemon Omega Ruby – 1x, 20 FPS, 70% speed – major lags, audio issues
- Pokemon X – 1x, 10 FPS, 30% speed – major lags, stuttering audio
- Pokemon Ultra Sun – 1x, 20 FPS, 70% speed – major lags, audio issues
Performance of 3DS games with the Citra resolution hack.
Redmi Note 10 Pro
- Pokémon Ultra Sun, Ultra Moon – 3x resolution – 30 FPS 100% speed, perfect sound
- Pokemon X, Y – 2x resolution – 30 FPS 100% speed – no lags, perfect audio
Bravely Default freezes with the resolution edit. But you can play it on 4x speed on the Note 10 Pro without the hack.
ASUS Zenfone Max Pro M1
- The Legend of Zelda: Ocarina of Time – 2x, 30 FPS, 100% speed – no lags or audio issues
- Pokemon Omega Ruby – 1x, 27 FPS, 92% speed – minor lags and sound problems
- Pokemon X – 1x, 25 FPS, 85% speed – minor lags and slightly stuttering audio
- Pokemon Ultra Sun – 1x, 26 FPS, 90% speed – minor lags and audio issues
How do I set Citra to 60 FPS?
You will need to use a cheat code for the game, and apply it using the emulator.
How do I enable cheats in the Citra Android app?
You will need to use Citra MMJ, open the emulator and long press on a game’s name to enter the cheats editor. You can paste cheat codes, or toggle the ones listed there.
My games are running too fast in Citra, how do I fix this?
It is probably because you enabled a 60fps cheat code. You will either have to disable it, or limit the emulation speed to 50% to play at the normal speed.
The Official Citra Android app is draining my battery, what’s wrong?
This is normal. The official version of Citra tends to use more resources than Citra MMJ. As a result, the phone heats up and the battery drains faster.
What are the best graphics settings for Citra on Android?
The Dual Core and hardware shader options should be enabled as they improve the performance of games. Accurate Multiplication is off by default, don’t enable it unless you are experiencing graphical glitches in games. E.g. Pokemon graphics appears white or black, Zelda Ocarina of Time may not display icons in the inventory (like the shield, sword). The Shader type should be set at Normal Shader with Cache.
Post-Processing effect is turned off by default, enabling this reduces the performance. Custom Textures requires you to download textures from third-party sites, using additional textures impacts the performance. CPU-Usage Limit is best left disabled, otherwise Citra will use less resources and run slower. Speed Limt changes the emulation speed, 100% is the normal speed, while 50% plays it at half the speed. Factor-3D should be set at 0.
The New 3DS Model and CPU JIT settings greatly improves Citra’s performance, and should be enabled. Some games won’t run unless you use the New 3DS model option. Audio stretching is disabled by default, don’t enable it, as it causes the sound to stutter.
Which Citra settings have the most impact on performance?
The resolution settings are the most important option in the Citra emulator. Toggle the Show FPS from the app’s settings. This will place a counter in the top left corner of the screen.
Try changing the resolution from 1x to 2x, 3x and 4x. Your game may start lagging on higher resolutions. Ideally, you should aim for maximum FPS, VPS and Speed. For example, if the speed is 99-100% on resolution 2x, but has bad performance on resolution 3x, then you should stick to the 2x resolution.
Enable the FMV Hack in the in-game menu, to reduce lags during the game’s intro. Skip Slow Draw and Skip CPU Access can reduce lags, but cause graphical issues, I recommend leaving them disabled.
How do I increase the Resolution in Citra?
Swipe from the right of the screen in Citra MMJ, select settings and set the internal resolution. Citra official app users will need to swipe from the top of the screen to access the settings, click on graphics and then set the resolution.
Which resolution is the best for 3DS games in Citra?
3DS games vary greatly in terms of graphics, which in turn means their performance will differ. This depends on your device’s hardware too. If you have a flagship phone with a Snapdragon 855 processor or above, you can likely run games in 4x resolution.
On the other hand, if you’re gaming on a Snapdragon 700 or 600 series device, you may have to reduce the resolution to 2x for most games. But like I said earlier, this varies from game to game, for example Bravely Default can run at 4x resolution flawlessly on a Snapdragon 732G without the hack, while Pokemon X and Y have choppy sound and lags even at resolution 1x.
Most games look blurry on 1x resolution, the graphics looks much better on 2x, while 3x and 4x make them crisp and beatiful.
What is FPS, VPS and Speed?
FPS refers to frame rate per second. It is worth mentioning that most 3DS games run at 30 FPS, so if you see 29-30 FPS that is normal. VPS stands for Vertical Interrupts Per Second, it basically refers to the refresh rate. If Citra shows 60 VPS, it means the game is running at 60Hz refresh rate. Speed represents the emulation performance, as in emulation speed.
Which Android phone is best for emulation?
Emulation is heavily dependent on the CPU and GPU, this is the reason why Qualcomm Snapdragon processors with Adreno GPUs, particularly the SD800 series, offers significantly better frame rates than MediaTek and Exynos processors with their Mali GPUs.
If you can afford a phone with a Snapdragon 855+ or 860 or 870 or 888 or 888+ processor, you will get the best emulation experience possible. We have played 3DS games on Snapdragon 730 and Snapdragon 732G too, and they worked fine.
Do all 3DS games work on Citra Android?
No. While many games are fully playable, some games don’t run at all. Please refer to the Citra compatibility list to check if the game you want to play works with the emulator. Please be aware that this compatibility list is focused on the Desktop version of the emulator.
Most turn-based games aka JRPGs work well on Citra. 3D heavy games like the Mario series has mixed results, but should be playable on 1x or 2x resolutions.
Should I use CIA or 3DS files?
Citra can play the games directly from decrypted 3DS files, but has to install CIA games to play and that takes up more storage space
Can I update a 3DS game using a CIA file?
Yes, you can update your .3DS ROM with a CIA file. Just open the CIA update and Citra will install the patch. We did this with the Pokemon X rom.
Which app should I use, Citra official or Citra MMJ?
We recommend using Citra MMJ for best performance. It is designed to run on lower end devices, but we find it to be better even on high end phones. Many users claim to have played games on Snapdragon 665 devices, and phones with MediaTek and Exynos processors, using the Citra MMJ emulator.
If your Android phone cannot play 3DS games smoothly, try the Citra resolution hack, before buying a new phone. It won’t make your device magically start playing games at 30fps and 3x resolution, but it will give you a few more frames to make the game playable.
If you want to play Nintendo DS games on your phone, check out the MelonDS emulator, it is free and open source.