Skip to content

nx2android v0.2.0

Choose a tag to compare

@shirai91 shirai91 released this 31 Oct 11:19
· 149 commits to main since this release

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

  1. Download the zip for your computer below: nx2android-v0.2.0-windows-x64.zip (Windows) or nx2android-v0.2.0-macos-arm64.zip (Mac with Apple silicon, M1 or later). Unzip it (a short path such as C:\nx2android is 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.
  2. 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.
  3. 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.keys dumped 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.