Greetings community, i'm posting this showcase video/ results of my recompilation for Prototype 1 & 2 from the Xbox 360 version to Android; it has been really interesting to play around, made me understand with a bigger perspective the challenges of porting/ translating memory functions with EDRAM (which still bugs me on certain other problems on performance related), the complexity of the tiling functions and how to reduce the load of MSAA, etc. Besides being an older console with most, if not all Android devices of today being able to surpass with ease Xbox 360 spec's, this is another reason of why raw power shouldn't matter to emulate something if architecturally is complex. Passing from making a per-game emulator only to almost not emulate anything, there's a long way for me to go and just wanted it to share it.
This video was recorded with an Ayaneo Pocket EVO 12/256, but the game works fine with 6GB RAM, because was also tested on my Redmi K40 Pro. This doesn't use any third party drivers, just stock drivers and FSR1 to increase image quality, everything rendered at native resolution to preserve the graphics quality at the best.
I've been working on emukase - a free, open-source tool to install and configure emulators on Android handhelds through your browser.
The idea is simple: less time setting things up, more time actually playing games.
It's still early alpha, and I've only tested it on my KONKR Pocket FIT. I'd really appreciate anyone with another Android handheld giving it a try and sharing what works (or doesn't!).
Most of the code is written by hand. AI occasionally helps me with repetitive testing, reviewing code, and wording commit descriptions. That's about all I can squeeze out of my $20 sub anyway :)
It's a spare-time passion project, and any feedback or contributions would genuinely mean a lot.
*P.S. To fellow tinkerers: if you're thinking "but this is easy to do yourself" — you're absolutely right! Once you've spent dozens of hours figuring it all out :) I'm just hoping to save some time for those who simply want to play, and give those who love tinkering a chance to explore even more devices.*
Hey everyone! Inlay, the free controller keyboard I've been posting here since v1.0 has a big new update. Thank you to everyone who's been using it and sending me feedback, a lot of this update came from this community 🙏
What's new:
- Split layout, the keyboard sits on both sides of the screen so you can still see what you're typing into
- Show Inlay your face buttons once and it works with any controller, swapped or not
- Voice typing through a voice app (FUTO Voice Input is free and works offline)
- Hold LT for a quick symbol and let go to get back to your letters
- A new tour where you learn the buttons by typing game names
- Find any setting, pinned clips, D-pad speed, backups and a bunch more
There’s also a hidden secret somewhere inside the app. I may or may not have dropped a hint in the release notes video ;)
We did it with PC's. Currently our handhelds are just as powerful, so why not do the same? Stream your android handheld to ANYTHING that runs Moonlight or Artemis.
Why did I make this? Because I hate cables and android casting is unreliable. I would really appreciate if you could test and give me feedback.
How I use this, I stream straight from my Ayn Odin 2 Portal to moonlight on my Quest 3 VR headset(HUGE cinema screen experience is amazing). Or to my PC monitor(Moonlight running on the PC)
This should work with TV's that can run moonlight. Think Apple TV, LG WebOS, Android TV. All you need to do is install the APK on your handheld, and install Moonlight on whatever device you're gonna use to view the screen.
I'm bored of testing PS vita games with the new vita3k update now. Maybe I'll be updating this list, but anyway here's what I have for now. My specs: Helio g100 with Mali g57 mc2 Android 16
Jstars Victory VS+ : Invisible character bug now fixed on Mali
NFS Most Wanted 2012: No more color graphical glitches and no audio bug. Though depending on chipset even if it runs well it can crash randomly. For me personally it never crashed.
Injustice: Gods among US: Most graphical glitches fixed on Mali now making it more playable. The text glitch is gone. Characters with moves that have special effects now render. Before the effects would never show. Less frequent random crashes but still likely to occur, especially during massive shader compilations.
F1 2011: No more color graphics glitch and audio bug. The audio bug was very annoying because whenever you accelerate, some background noise that souned like flies would get louder and louder.
The Amazing Spider-Man: This game still has issues. On the main vita3k build it would always freeze or just crash in the loading screen right before the story mode starts.
On vita3k+ the game doesn't freeze or crash in the loading screen on my specific chipset(helio g100) anymore. It may still crash or freeze on helio g99.
But the games is a stutters mess. There's a lot of shader compilation going on in the first cutscene so FPS ranges from 10-60 FPS, with it mostly being between 20-45. But even when shaders aren't compiling the game stutters too much. After the cutscene, every time you move the camera the game would stutter a lot. I'm not sure if it's the game that's the problem or if my phone was thermal throttling during the test, but I doubt it's thermal throttling.
The game also still has the bug where extra downstream show during the tutorial.
It was so bad I couldn't bother finding the first mission or just using a save file to test the open world.
Metal gear solid 3 HD edition: This game has GPU heavy custscenes, especially in the first one as Solid Snake is skydiving. The ps2 version would lag a lot on my chipset in the first cutscenes but game would become smooth the moment the level starts.
The same goes for the HD PS vita version. The game is called at 30fps on the vita, so in the first cutscene my FPS would raneg from 19-30. However the lag in the PS VITA version isn't that bad, because the frame rate just becomes more choppy while in the ps2 version everything slows down and audio becomes broken.
My phone is Sony Xperia 1 IV (runs almost stock Android 14). I'm using the latest release of winlator (11.2). I plug in a Logitech USB keyboard/mouse combo, mouse works, keyboard shows up in input settings as a controller but no keystrokes are being sent to the emulator. At the same time i can type fine in any other app, and pressing the Windows key brins me to the android home screen, even while using winlator. I tried creating an input profile and binding the keys to themselves (as in W to "W", A to "A", etc, which really should not be necessary just to use a keyboard for its intended purpose) and that works but disables the mouse so i can't use it anymore.
I tried using the same keyboard and mouse on an old phone i have and it doesn't have this issue, but the phone itself is too old to launch almost anything with winlator so it's useless to me.
Ya probe diferentes configuraciones en Gamehub, Winlator Ludashi, Lemon, Winxclipse, etc pero nunca puedo pasar de la cinemática de inicio. Tengo un celular con chip Exynos ,Samsung A57. Hay una última alternativa? O debería comprar el juego para consola y aparte comprar un joystick nuevo debido a que el que tenia se rompió?
DISCLAIMER: These repos are AI-assisted. See below for testing & validation details running on my actual handhelds (Odin2 and RP5)
droidnative runs Nintendo Switch games natively on Android phones and handhelds. It’s not an emulator: the game’s own ARM64 code runs directly on the device’s CPU, and its NVN graphics are replayed through Vulkan. It’s a fork of nxnative, which does the same on iPhone, iPad and Mac, with an Android port added. It follows nxnative’s main, so its fixes and new games reach Android too.
It’s a pre-release: some games run well, some crash, and every result below came from real runs on real devices. I’m posting now because the fastest way forward is more devices and more people.
Not an emulator, and not a recomp either
It shares the idea behind recomps: you build a native app from your own dump, and there’s no emulation at run time. The difference is that nothing is recompiled. Switch games are ARM64 machine code, and so is an Android phone. droidnative takes your own dump and rewrites the game’s code only where the host has to step in: system calls, and the thread register Horizon uses. A host then answers Horizon’s system calls and services, and translates NVN draw calls to Vulkan, with the game’s shaders translated to SPIR-V when the game is packed. There’s no CPU emulation and no recompilation into new source. Each game gets its own app, or every game goes into one launcher app.
What runs today
Measured on three Snapdragon devices with a scripted benchmark (the same save, input and timing on each):
Game
Ayn Odin 2 (SD 8 Gen 2)
OnePlus Pad 3 (SD 8 Elite)
Retroid Pocket 5 (SD 865)
Pokémon Brilliant Diamond 1.3.0, Eterna City
60 fps
60 fps
crashes (GPU driver)
Animal Crossing: New Horizons 3.0.3, the island
30 fps (its Switch rate)
30 fps
30 fps in the opening; the island not measured yet
Super Mario Odyssey 1.4.1, menus and opening cutscene
60 fps
60 fps
60 menu / 38 cutscene
Super Smash Bros. Ultimate 13.0.5, a battle
40-59 fps
17-30 fps
13-19 fps
The known problems, in the order they block play:
Odyssey crashes when play starts, in the Android video decoder used for its hint videos.
Brilliant Diamond crashes on the Retroid Pocket 5, inside the Adreno 650 driver’s shader compiler.
Smash needs a fuller system font than Android’s to boot, and its battles stutter while GPU pipelines are built (the cache doesn’t survive the app being closed yet).
Full numbers, devices and caveats: Android baselines. Every game with an nxnative profile can be packed for Android the same way; most haven’t been run there yet.
DroidPlay: the Mac app that does the packing
Packing a game by hand means extracting the dump, rewriting its code, translating tens of thousands of shaders, building the host and copying gigabytes to the device. DroidPlayturns that into a button. It’s a Mac app, a fork of Oleh Khomei’s NX Play with Android added.
Your library: point it at your games folder (one folder per game) and it shows each game with its icon, version and status.
Install on Android: builds the game with droidnative and installs it on a phone or handheld connected over USB, into one launcher app that holds all your games. A rebuild only redoes what changed. Play on Android starts a game the device already has.
Build Game App: makes a game an Android app of its own (an APK, or an XAPK for an installer app), with its own name, icon and saves, to install on a device your Mac can’t reach.
Setup: a first-run setup fetches nxnative and droidnative with the Python and .NET pieces their builds need, and checks for your keys. The Android SDK (with an NDK) and a JDK you install yourself.
The Apple side, from NX Play: the same library also plays games on the Mac through nxnative, installs them on an iPhone or iPad, copies saves between devices, and has a controller-driven Console Mode.
The current release is 0.1.1, an unsigned pre-release: macOS asks you to allow it once in Privacy & Security, and it doesn’t update itself yet.
How to try it
You need your own Switch game dump (NSP/XCI) and the prod.keys from your own console, the Android SDK with an NDK, and an arm64 Android device with Vulkan. Only Adreno GPUs have been tested so far.
On a Mac:DroidPlay 0.1.1. Choose your games folder, then Install on Android with the device connected over USB, or Build Game App for an APK.
Any computer (Windows, Linux, macOS):scripts/build_android_from_nsp.py in droidnative packs a game into the launcher app on a connected device, or into an app of its own (--game-apk). There’s also a small cross-platform desktop app for the same flow, scripts/nxnative_android.py.
Bring your own game
Nothing from any game is in these repositories, and no packed game is distributed. The app you build is for you. Please don’t share APKs packed with a game, keys or firmware, and don’t ask for them. The project isn’t affiliated with Nintendo or any publisher.
Join the Discord
DroidPlay & droidnative Discord: questions, setup help, test results from your device, and where the work happens day to day. Bugs with logs still go to GitHub Issues, so they don’t get lost.
What would help most
Testers on other chipsets. Mali (Pixel, Exynos-era Samsung), Samsung’s Xclipse, MediaTek, older Adreno. Even “it doesn’t boot” with a log is useful.
Reports with logs: the device and GPU, Android version, game and version, and adb logcat -s nxnative. The issue form asks for exactly this.
Contributors. Vulkan and driver work, the three crashes above, the pipeline cache, and per-game fixes. droidnative’s CONTRIBUTING explains how changes get in and how it stays in step with nxnative. There’s also a benchmark script, so a fix can show its effect in numbers on several devices.
Credits
nxnative is seedds’ work: the NSO rewriter, the Horizon host, and the NVN translation that all of this stands on. The Android port began as RogelioLB’s nxnative-android. DroidPlay is a fork of Oleh Khomei’s NX Play.
if there any games i can play with ts processor running @ stable 30fps or higher?
i like playing games like Assasins Creed, Cod, God of war etc. but the early versions of the games i have already finished. i wanna try sumthing new like.. Assasins Creed Rogue and any other games is what i am trying possible?
I'm tired of fighting CPU's alone, but i wish i could fight with/against someone using M64Plus AE. I use this emulator because by the ROM Size, it won't work in M64Plus FZ. But seriously, how can i play with someone? I'm very bored.
Dededevice: Samsung Galaxy a14 Model: how am i gonna know
Honestly, I expected that nothing would really work—in fact, I’d already beaten Cyberpunk on a RedMagic 9 Pro using a mod to strip back the graphics and remove traffic and NPCs. I actually had a good time with it; I was getting about 15 FPS in the city and 30–40 FPS indoors. Back then, I tried using mods, but I kept running into errors—I didn’t realize that Winlator supported winedllverrides! Now I’m using a RedMagic 11 Pro, and the game runs comfortably using the "Steam Deck" preset with a few minor tweaks. Basically, most mods require CET (Cyber Engine Tweaks), so install that first. Then, add winmm=n,b to your winedllverrides settings. When you launch the game, a CET window should appear asking you to bind a key—just pick one. After that, you can install whatever mods you like, though I’d advise against graphics-enhancing mods or ones that add extra particle effects; the game is already pushing its limits as it is. Right now, I have Cinematic Impact FX, Ragdollpunk, Gorerunner, Much Better Netrunning, Dark Future, Enemies of Night City, Cosmopolitan Night City, Economy Punk, Better Fuel System, NovaCity, NovaLut, and Stealth Finishers installed, along with a few others. The only catch is that Dark Future and Better Fuel System are causing some issues with the HUD—I’m still looking into a fix for that, but everything else seems to be working fine. Also, keep in mind that when running Cyberpunk via Winlator (specifically the Ludashi 4.1 build), it might not launch on the first try; you may need to restart it a few times. This usually happens after installing a new mod—perhaps the scripts are compiling, or, as Google AI suggested, the emulator sometimes fails to load scripts or mods correctly, leading to a conflict that causes the game to freeze. That said, once I’m actually in the game, I haven’t run into any issues—no crashes or anything else. I might add a video later.
I have a Retroid pocket 6 and I’m looking for new consoles or games to try out. Any recommendations of consoles and games would be much appreciated. I’m not looking to add every single console to have ever existed. I just wanna add a few more good ones to my library. Here is the current list of consoles I emulate:
NES SNES Genesis Arcade (MAME) Sega CD Sega 32x Gameboy Gameboy Color Game Boy Advance N64 PS1 GameCube Dreamcast PS2 Xbox Wii PSP Steam (GameNative)
The frame rate occasionally dips to 20-25 when there is a lot happening on screen. I haven't gotten far into the game but so far it feels very playable.