Friday, May 29, 2020

Nintendo 3DS emulation: Official Citra for Android performance testing on the Snapdragon 865, 855, and 845

Citra, the most popular Nintendo 3DS emulator, was officially released for Android onto the Google Play Store last week, and its performance has been at the forefront of the conversation. I’m sure anybody who saw its release wondered whether they could play their favorite Nintendo 3DS games on their Android smartphone or tablet, so I’ve spent the past few days playing games on various different devices powered by multiple different SoCs to see what kind of performance you can expect to get from your device.

I tested the following popular Nintendo 3DS games:

  • Animal Crossing: New Leaf
  • Mario Kart 8
  • Pokemon X/Y
  • The Legend of Zelda: A Link Between Worlds
  • Fire Emblem: Fates
  • Super Mario 3D Land

…on the following Android smartphones:

…and the results were rather mixed. I tested each of these 3DS games with the unofficial Citra MMJ version as well as the official Citra 3DS emulator that was just released on the Google Play Store. Some of the results were surprising. Note that all of these tests were done with audio stretching disabled as I found that it had a pretty significant performance hit for little benefit when enabled. Keep in mind that different GPU driver versions may also affect performance, and so one device with a particular chipset may not perform the same as another device with the same chipset.

Citra for Android Nintendo 3DS emulator

Nintendo 3DS emulation using the official Citra for Android port. Left to right: OnePlus 8 Pro, OnePlus 6, Realme 6 Pro.

Note: You can legally acquire 3DS ROMs for your smartphone by dumping and decrypting your own Nintendo 3DS games. For this, you will need a hacked Nintendo 3DS and a legally purchased copy of the 3DS game that you want to play.


Current performance issues with Nintendo 3DS emulation via Citra for Android (and potential fixes)

Before going into detail of the performance of the aforementioned Nintendo 3DS games on various Android smartphones, it’s worth mentioning that currently, the Citra 3DS emulator port for Android does not support a shader cache. A shader cache is simply a cache of files that keeps track of compiled shaders that are shown in-game, and having one greatly reduces CPU and GPU load. When new shaders are encountered in Citra, they are then compiled and aren’t saved to the storage. This means that they can’t be cached, and instead must be recompiled once encountered every time. This is why currently, Citra on Android can be quite stuttery when playing some 3DS games. Citra on PC supports a shader cache, and it’s quite common for users to want to download a precompiled shader cache to avoid slowly and painstakingly generating their own. Also, I found that disabling audio stretching helped performance a little bit.


Nintendo 3DS Emulation Performance – Qualcomm Snapdragon 865, 855, 845, 720G, and Kirin 980

Qualcomm Snapdragon 865

Animal Crossing: New Leaf – OnePlus 8 Pro

Official Citra

  • Mostly 60 FPS
  • Drops frames frequently, particularly when shaking trees to drop fruit
  • Audio hangs for a second or so often, and when audio hangs, the game hangs for a second too

MMJ/Unofficial Citra

  • 30 FPS to 45 FPS with occasional spikes to 60 FPS
  • No audio hangs
  • More consistent experience overall, though slower
  • Attempting to sell items will freeze the game, which does not happen on the official Citra build

Mario Kart 7 – OnePlus 8 Pro

  • Runs perfectly at 60 FPS
  • Occasional audio cues cause slight stuttering
  • No difference in performance between Official and MMJ build

Pokemon X/Y – OnePlus 8 Pro

  • Not a very intensive game, runs perfectly at 30 FPS (this game runs at 30 FPS in the overworld)
  • Battles run perfectly
  • Audio sounds great, music is in AAC format and can now be decoded
  • No difference in performance between Official and MMJ build

Note: The flickering as seen in the above video only occurred when I was screen recording.

The Legend of Zelda: A Link Between Worlds – OPPO Find X2 Pro/OnePlus 8 Pro

  • Runs perfectly, no slowdowns
  • Audio is great
  • Occasional stutters in combat
  • Cutscenes work
  • No difference in performance between Official and MMJ build

Fire Emblem Fates – OPPO Find X2 Pro

  • Some slowdowns when entering combat
  • Some audio stuttering in battles
  • Audio works great
  • Cutscenes work
  • The game mostly runs at full speed, which it didn’t on the MMJ build

Qualcomm Snapdragon 855

Animal Crossing: New Leaf – OPPO Reno 10x Zoom

Official Citra

  • Runs nearly flawlessly
  • Very few stutters
  • Virtually no audio lag

MMJ/Unofficial Citra

  • Anywhere from 30 to 60 FPS, though mostly towards the higher-end
  • Very few stutters
  • Virtually no audio lag
  • Attempting to sell items will freeze the game, which does not happen on the official Citra build

Mario Kart 7 – OPPO Reno 10x Zoom/OnePlus 7 Pro

  • Runs nearly flawlessly
  • Pretty much no audio lag
  • Pretty much no stutters
  • No performance difference between Official and MMJ build

Pokemon X/Y – OPPO Reno 10x Zoom

  • Not a very intensive game, runs perfectly at 30 FPS (this game runs at 30 FPS in the overworld)
  • Battles run perfectly
  • Audio sounds great, music is in AAC format and can now be decoded
  • No difference in performance between Official and MMJ build

The Legend of Zelda: A Link Between Worlds – OPPO Reno 10x Zoom

  • Runs nearly flawlessly
  • Pretty much no audio lag
  • Occasional stutters in combat
  • No performance difference between Official and MMJ build

Qualcomm Snapdragon 845

Animal Crossing: New Leaf – OnePlus 6

Official Citra

  • Mostly 50-60 FPS
  • Drops frames very frequently, particularly when shaking trees to drop fruit, but also in many other situations too
  • Audio hangs for a second or so often, and when audio hangs, the game hangs for a second too

MMJ/Unofficial Citra

  • Around 30-60 FPS, sticking somewhere around 45 FPS for most of the time
  • Drops frames less frequently
  • Audio stutters occasionally

Mario Kart 7 – OnePlus 6

  • Stuttering when navigating menus
  • 50-60 FPS in races, though fluctuates wildly and sometimes dips as low as 30 FPS
  • Occasional audio stutters

Pokemon X/Y – OnePlus 6

  • Not a very intensive game, runs perfectly at 30 FPS (this game runs at 30 FPS in the overworld)
  • Battles run perfectly
  • Audio sounds great, music is in AAC format and can now be decoded
  • No difference in performance between Official and MMJ build

The Legend of Zelda: A Link Between Worlds – OnePlus 6

  • Consistent in the 40-60 FPS range
  • Lots of stutters in combat
  • Marginally better performance in the MMJ build over the Official build

Qualcomm Snapdragon 720G

Animal Crossing: New Leaf – Realme 6 Pro

Official Citra

  • Mostly 50-60 FPS
  • Drops frames occasionally, particularly when shaking trees to drop fruit, but also in many other situations too
  • Audio hangs for a second or so often, and when audio hangs, the game hangs for a second too
  • MMJ and Official build more or less perform the same here

Pokemon X/Y – Realme 6 Pro

  • Runs mostly perfectly at 30 FPS, though occasionally dips in performance
  • Battles run perfectly
  • Audio sounds great, music is in AAC format and can now be decoded, minimal stuttering
  • No difference in performance between Official and MMJ build

The Legend of Zelda: A Link Between Worlds – OnePlus 6

  • Consistent in the 40-60 FPS range
  • Lots of stutters in combat
  • Marginally better performance in the MMJ build over the Official build

Kirin 980

The Honor 20 Pro with its HiSilicon Kirin 980 was unable to run any of the Nintendo 3DS games that I tested at any playable framerate. The official and unofficial Citra 3DS emulators don’t really support devices with non-Snapdragon chipsets due to driver issues, and as such, this means that Samsung smartphones with Exynos processors will also likely face issues playing any of the 3DS games listed here.


Conclusion – Nintendo 3DS Emulation is very viable (for most flagships)

Oddly enough, I found the best performance to be not with the Qualcomm Snapdragon 865 but rather with the Qualcomm Snapdragon 855. It’s possible that Citra was developed primarily on Qualcomm Snapdragon 855 devices as the Qualcomm Snapdragon 865 is a relatively recent release, but this is only speculation on my part. The Snapdragon 855 found in both the OnePlus 7T Pro and the OPPO Reno 10x Zoom handled pretty much all Nintendo 3DS games I threw at it perfectly, which greatly impressed me, and the games themselves were very much playable. The Qualcomm Snapdragon 720G also fared incredibly well, with more or less identical results to the Snapdragon 845.

Citra (Nintendo 3DS emulator) website

Citra Emulator (Free+, Google Play) →

The post Nintendo 3DS emulation: Official Citra for Android performance testing on the Snapdragon 865, 855, and 845 appeared first on xda-developers.

HostGator Web Hosting

0 comments:

Post a Comment