Repository navigation
nx2android v0.2.0
Adds eight games: Castlevania: Belmont's Curse, Metroid Dread, Paper Mario: The Origami King, Paper Mario: The Thousand-Year Door (work in progress), Pokémon Legends: Arceus, Super Mario Odyssey, UNDER NIGHT IN-BIRTH Exe:Late[cl-r] and UNDER NIGHT IN-BIRTH II Sys:Celes. A macOS app for Apple silicon, a save manager to move saves between the device and the PC, and games run on Vulkan 1.1 drivers without timeline semaphores or BC textures (issue #15).
Get started
- Download the zip for your computer below:
nx2android-v0.2.0-windows-x64.zip(Windows) ornx2android-v0.2.0-macos-arm64.zip(Mac with Apple silicon, M1 or later). Unzip it (a short path such asC:\nx2androidis best on Windows) and start nx2android. Windows may warn about an unknown app: More info → Run anyway. On a Mac, INSTALL.md says how to open an app that Apple has not signed. - Setup tab: click Download missing tools. It fetches the Android NDK, the .NET SDK and platform-tools (about 1 GB) from Google and Microsoft. Then set your prod.keys.
- Port tab: choose the folder with the game's NSP, XCI, NSZ or XCZ files (base game, update, DLC) and click Port.
The full guide is INSTALL.md, which is also in the zip. Already on v0.1.3? Unzip this one in its place; your settings, keys and tools stay. Port your games again to get this release's fixes.
Games
| Game | Version | Plays on the Lenovo Legion Y700 | Tested on |
|---|---|---|---|
| 13 Sentinels: Aegis Rim | 1.10 | playable, 60 fps | v0.1.3 |
| Advance Wars 1+2: Re-Boot Camp | 1.0.0 | playable, 60 fps (30 in battle on Switch) | v0.1.3 |
| Blasphemous 2 | 1.0.8 | playable, 60 fps | v0.1.3 |
| Captain Toad: Treasure Tracker | 1.4.2 | playable, 60 fps | v0.1.3 |
| Castlevania: Belmont's Curse (new) | 1.1.0 | playable, 60 fps | v0.2.0 |
| Celeste | 1.4.1.1 | playable, 60 fps | v0.1.3 |
| Donkey Kong Country Returns HD | 1.1.0 | playable, 60 fps | v0.1.3 |
| Graveyard Keeper 2 | 1.0.4 + DLC | playable, 60 fps (30 on Switch) | v0.1.2 |
| Hades II | 1.0 | playable, 60 fps | v0.1.2 |
| Hollow Knight: Silksong | 1.0.30000 | playable, 60 fps | v0.1.3 |
| Mario vs. Donkey Kong | 1.0.1 | playable, 60 fps | v0.1.3 |
| Metroid Dread (new) | 2.1.0 | playable, 60 fps | v0.2.0 |
| NEO: The World Ends with You | 1.03 + 2 DLC | playable | v0.1.2 |
| Paper Mario: The Origami King (new) | 1.0.1 | playable, 60 fps (30 on Switch) | v0.2.0 |
| Paper Mario: The Thousand-Year Door (new) | 1.0.1 | work in progress: playable at 60 fps (30 on Switch), but the lighting flickers (walls go black for single frames after a fall) | v0.2.0 |
| Pokémon Legends: Arceus (new) | 1.1.1 | playable, 60 fps (30 on Switch) | v0.2.0 |
| Super Mario Bros. Wonder | 1.2.1 | playable, 60 fps with dips to 40 | v0.1.3 |
| Super Mario Odyssey (new) | 1.4.1 | playable, 60 fps; shake the device to throw Cappy | v0.2.0 |
| Tales of Eternia Remastered | 2.0.0 | playable, 60 fps | v0.1.2 |
| UNDER NIGHT IN-BIRTH Exe:Late[cl-r] (new) | 1.0.3 | playable, 60 fps | v0.2.0 |
| UNDER NIGHT IN-BIRTH II Sys:Celes (new) | 1.42 | playable, 60 fps | v0.2.0 |
| Unicorn Overlord | 1.05 | boots, 60 fps; saving and a full battle not tested yet | v0.1.3 |
| Unpacking | 2.01 | playable by touch, 60 fps | v0.1.2 |
| Viractal: Will You Trust Your Party? | 1.4.5 | playable | v0.1.0 |
| Xenoblade Chronicles 3 | 2.2.0 + 4 DLC | work in progress: some effects and models do not draw yet | v0.1.0 |
Tested on is the newest nx2android version each game was checked with. A release checks only the games it adds or fixes; a game that breaks in a newer version is fixed in a later patch release. Please open an issue if one does.
Before you start
- Your own files only. You need the game's files and
prod.keysdumped from your own Switch. The tool never ships or downloads either, and ported APKs must not be shared: they contain the game. - GPU: Adreno (Snapdragon) or Xclipse (Exynos 2200 and later). Mali and PowerVR cannot run these games.
- A few antivirus engines may flag
nx2android.exe. It is a false positive from the PyInstaller launcher; the release's launcher is compiled from source to avoid it (INSTALL.md explains).
New in this release
- Eight new games (table above), each with its own on-screen gamepad theme.
- macOS app for Apple silicon (thanks @KnlnKS, #36). Both zips are now built on GitHub's runners for each release.
- Save manager (#16): export and import a game's save from the game's pause menu, from the app's new Saves tab, or with
porter saves. A console's save folder imports as it is. - Vulkan 1.1 drivers without timeline semaphores or BC textures (Adreno 619 and similar) can run games (#15).
- Port tab options: package name, versionCode offset (install a rebuild over an earlier one and keep its saves, #27), replace an app signed with another key, 60 fps, and a Touch game option that starts with the on-screen gamepad hidden.
- Extra address space for games that run out of it ("AllocateAddressRegion refused" in the log), set automatically for a game version the profile was not tested with (#26).
- Pokémon Legends: Arceus's Oodle-packed files are decoded with the game's own decoder on the device.
- Shake the device to shake the controller (Super Mario Odyssey's Cappy throw).
- Rendering: vertex shader outputs start as (0, 0, 0, 1) as on the Switch; depth-only programs draw; masked colour clears touch only their channels; scaled depth and stencil copies work on Adreno.
- Frame pacing: frame work is measured without the present wait, and the GPU time goes into the CPU performance hint (thanks @sid350, #20, #40).
- Installs skip the files that are already on the device (thanks @intermission88, #13), and the shader split works with Windows paths (thanks @Davion2017, #12).
- An XCI without a title ID tag is read from its meta NCA header (#28), and ticketless NSZ dumps port.
- A controller hides the on-screen gamepad only once it sends input.
- Cancel stops a port's child processes on macOS and Linux too.