Download yuzu for free, or support us and receive some fantastic benefits with Early Access.
Written by CaptV0rt3x and GoldenX86 on May 30 2023
Hey there, yuz-ers! We are happy to announce that yuzu is available, today, for Android! There’s so much to discuss and show you, let’s get started!
If you’re too excited, you can jump in immediately by downloading yuzu from the Google Play Store!
The GitHub releases aren’t live yet, but we will edit this article with a link to download them once they are. This initial release won’t have parity with the feature-rich Desktop builds of yuzu, but we are looking forward to introducing all the features you love as we fine-tune them for Android.
Features such as multiplayer over LAN/LDN, Input Profiles, TAS, etc. are not yet available. For now, we want to focus on compatibility and performance as performing cutting-edge emulation on typical Android hardware has several challenges.
If you’re still reading, make sure to stick around for a little development history, expectations, and compatibility reports!
Breath of the Wild (Samsung Galaxy S20 FE, Mesa Turnip GPU driver Vs. Samsung Galaxy S23, Qualcomm proprietary GPU driver)
In the past year, we have made significant strides in improving both the accuracy and performance of yuzu. And with many more such improvements in progress, we understood that the longer we waited, the more challenging it would become for us to support an Android build.
With this public release, all future yuzu development activities will account for, and address, both feature and platform compatibility for Android. This is expected to help facilitate and streamline our development process to better achieve our goal of platform independence.
We hope to welcome Android developers interested in lending their expertise to a cutting-edge project and produce new yuzu features, optimizations, and other improvements!
Before we talk more about where we are and what users can expect, we would like to make a few things clear:
We’re committed to improving the feature parity, compatibility, and performance of our Android builds; most improvements for desktop platforms, like Windows and Linux, will also help improve our Android users’ experience.
yuzu Android is in rapid development and early builds should be considered akin to a beta.
Expect to see a variety of results regarding compatibility and performance on different devices, discussed in more detail later.
With that out of the way, let’s dive into the state of things for yuzu Android.
Like our sister project, Citra, yuzu has always been developed with multi-platform support in mind. We’ve supported major desktop operating systems, such as Windows and Linux, since the earliest builds of yuzu. yuzu’s core code has, by design, been kept modular and frontend agnostic to ensure any future efforts to expand supported platforms does not run into unwanted dependency issues.
Although we originally couldn’t support macOS due to Apple deprecating OpenGL support on it, there has been a recent rekindling of efforts to support macOS using MoltenVK — and it so happens that the new Macs are powered by 64-bit ARM-based Apple Silicon (M1/M2, at the time of writing) SoCs (System-on-Chip). But then we faced another hurdle — Dynarmic’s lack of host recompilation support for ARM64.
In case you weren’t aware, yuzu uses Dynarmic for its CPU emulation. Dynarmic works by recompiling (translating) the Nintendo Switch’s (guest) ARM CPU instructions to the user’s (host) CPU. And because Dynarmic didn’t yet support recompiling guest code for ARM64, yuzu’s CPU emulation couldn’t work on any of these host CPUs.
Thanks to the efforts of byte[] and merryhime, this hurdle didn’t stand in our way for too long. With ARM64 host support ready to go, byte[] set his sights on getting yuzu to work on macOS. But that’s a story for another day.
By the way, did you know that there are other platforms that use ARM64 SoCs extensively?
Knowing that Dynarmic support for ARM64 host recompilation was underway and that Vulkan support on Android would probably be better than macOS, we were optimistic about getting yuzu working on Android.
flTobi and bunnei quickly started putting things together, with the first goal to simply get yuzu building for Android.
These early builds lacked a working renderer to display graphics, but progress was promising.
After some fixes, they got a few 32-bit games such as Mario Kart 8 Deluxe
and Captain Toad: Treasure Tracker
booting with just the audio.
Once the Dynarmic ARM64 support was completed, byte[] joined them and the trio got working on getting the Vulkan renderer backend working on Android. While OpenGL ES didn’t pan out, bunnei was able to get yuzu to render basic homebrew on Android with Vulkan:
Snake, try to remember the basics of rendering
With our lead moderator Flamboyant Ham working on a new input overlay design and app themes, german77 started working with them on integrating the input backend to the touch-screen overlay. As a sudden surprise for us, developer t895, who’s been improving Dolphin’s Android app, accepted our request and joined the team to work on overhauling our app UI.
Peruse our settings and customize as you see fit!
Together, with Flamboyant Ham creating the designs and t895 working his dev magic, an onboarding process and search menu were added, helping users select their keys, games folder, and search for titles with ease!
Simple and straightforward - our favorite!
Special thanks to the Citra GPU dev, GPUCode, for taking their time away from Citra Android and Vulkan development to improve this release with their special sauce Async Presentation .
Android is a platform that boasts a huge userbase, but brings with it its fair share of problems. As there is a lot of hardware variation for Android devices, compatibility and performance will vary. So, to temper expectations, we would like to clarify our minimum requirements for the near future.
At the moment, yuzu requires devices powered by Qualcomm Snapdragon SoCs which have Adreno GPUs. Devices powered by SoCs like Exynos, Mediatek, etc. are expected to not work at all due to their “worse-than-Adreno” GPU drivers, at least for the near future.
Also, yuzu on Android has high RAM requirements, therefore fairly high-end devices provide the best experience (e.g. SD 865 and 8GB of RAM or better).
yuzu on Android ships with the ability to run custom GPU drivers, such as newer official Adreno drivers, or Turnip using libadrenotools to improve the performance on older generation Snapdragon SoCs. Apart from this, there are still many more Android-specific optimizations to be done. We have plenty of opportunity to improve performance, but this explains the current high minimum system requirements.
This initial release has been intentionally kept fairly minimal so that we can focus on improving performance and stability. As stated earlier, feature parity with our PC builds is something we’re committed to, but expect it to happen slowly and not immediately.
Regarding software requirements, yuzu requires Android 11 or newer and a myriad of mandatory Vulkan extensions that the Play Store will automatically check for. That being said, the Android GPU driver ecosystem is very inconsistent; not all devices will be the same. Being able to download and install yuzu doesn’t mean the performance or compatibility will be great. As expected, Qualcomm is (currently) king here.
All Qualcomm device users will have the option to test different Mesa Turnip driver versions, thanks to libadrenotools.
We will link them in our Discord server. You can download any compatible drivers, and select them by going to Settings > Install GPU Driver > Install
in yuzu.
The latest is not always better, and specific games may prefer specific drivers.
Currently, the best compatibility is achieved using Adreno 600 series GPUs running the Mesa Turnip drivers. If you want games to start and render correctly, this is the way to go.
The best performance comes from Adreno 700 series hardware (Snapdragon 8 Gen 1 and newer), which won’t have Turnip support for a while. While performance is typically higher, you will experience rendering issues or some games refusing to start.
With that said, take a look at some performance numbers from several games:
We think that devices with Exynos 2200 and newer SoCs running AMD RDNA2 GPUs could also work well, but we haven’t been able to test them out due to how hard they are to find.
Available information suggests they run some older form of the AMD proprietary driver, so support may be somewhat good knowing AMD’s track record.
Regardless of the device, disabling Docked mode
and/or using lower resolution multipliers can help with performance in most games.
However, your mileage will vary here.
Some games may prefer docked mode, and some drivers don’t play well with resolution multipliers under 1x.
You’ll have to test and see what works for you!
We're still figuring out what the best settings are for each game, so please experiment!
Cooling is an important factor of performance as well. We tested several devices with the Snapdragon 8 Gen 2 SoC, and while a gaming-oriented Redmagic 8 Pro had no problems keeping its clock speeds high (even locked to maximum) and temperatures low, a regular Samsung Galaxy S23, on the other hand, is a boiling machine, climbing to 90°C in seconds. This temperature won’t damage the device, as TjMax is at 100°C, but higher temperatures do lead to lower clock speeds.
Overheating leading to thermal throttling can result in a 30-50% performance loss over time, so this is one of the few times when gamer-gimmick marketing isn’t lying.
Regarding other specs, RAM is crucial.
The recommended value is 8GB or more, big emphasis on more, and the absolute minimum is 6GB, but this will lead to many resource intensive games crashing.
The Legend of Zelda: Tears of the Kingdom
requires 12GB at the moment.
Storage is not a critical aspect, but keep in mind that Switch games are typically large — there are visual novels over 20GB, and that’s not counting updates and DLC.
Controller input support is in its early stages. The ability to configure multiple controllers and their button mappings is currently being worked on, but not yet ready. Xbox, PlayStation, and Switch Pro controllers are automatically mapped when they are paired over Bluetooth. Generic DirectInput controllers are supported, but until more development time is spent dedicated to them, you may see some mapping issues and potentially missing mappings for buttons. Joy-Cons are not supported for now, Android doesn’t allow access to them so they will have missing functionality.
An on-screen input overlay will always be available, and it can be hidden while playing.
Swipe from the left side of the screen and toggle Input Overlay > Show Overlay
if you want to disable it.
The Button and Stick placements can be adjusted here as well.
Adjust to your liking
If you need help setting up yuzu, our Quickstart Guide will provide all the steps required to get up and running.
All the same requirements apply, including having a PC and the mandatory hacked Nintendo Switch.
The yuzu on Android onboarding process will have you select the location of your prod.keys
file.
The only major difference is that the yuzu folder is located in Android/data/org.yuzu.yuzu_emu/files
, which you will need access to in order to install Switch firmware files and any preferred mods.
A quick-and-easy management interface for DLC, updates, mods, and saves will be added at a later date, so for those who dare, the process must be done manually for now (or copied from your PC installation of yuzu).
In recent Android versions, Google started blocking access to app folders in file managers, so it is recommended to instead use Android’s integrated file manager to access the yuzu folder. Here is a link to an app that allows users to have direct access to it.
Alternatively, you can always connect the phone/tablet to your PC via USB cable. No restrictions apply there.
And there you have it! We’re excited for the opportunity that Android provides us, to hear all of your feedback, and we hope you enjoy playing!
We don’t have anything else to talk about for now, but please enjoy the below selection of screenshots taken from yuzu on Android!
The Legend of Zelda: Tears of the Kingdom (Samsung Galaxy S20 FE, Qualcomm proprietary GPU driver)
Super Smash Bros. Ultimate (Samsung Galaxy S23, Qualcomm proprietary GPU driver)
Mario Kart 8 Deluxe (Samsung Galaxy S23, Qualcomm proprietary GPU driver)
Super Mario Odyssey (Samsung Galaxy S20 FE, Mesa Turnip GPU driver)
Animal Crossing: New Horizons (Samsung Galaxy S20 FE, Mesa Turnip GPU driver)
Donkey Kong Country: Tropical Freeze (Samsung Galaxy S20 FE, Mesa Turnip GPU driver)
Fire Emblem Engage (Samsung Galaxy S23, Qualcomm proprietary GPU driver)
Metroid Dread (Samsung Galaxy S23, Qualcomm proprietary GPU driver)
Pokemon Legends: Arceus (Samsung Galaxy S20 FE, Turnip GPU driver)
Super Mario 3D World + Bowser's Fury (Samsung Galaxy S23, Qualcomm proprietary GPU driver)
Atelier Ryza: Ever Darkness & the Secret Hideout (Samsung Galaxy S23, Qualcomm proprietary GPU driver)
Diablo III: Eternal Collection (Samsung Galaxy S23, Qualcomm proprietary GPU driver)
Advertisement
Advertisement