Installation & portable mode
How to set up Ninja Gaiden II Recompiled on Windows and Linux, configure portable mode, manage save/config paths, or compile from source.
- Title ID: 544307D5 (World)
- Patch: Title Update 3
- Portable flag: portable.txt
- Config: ng2.toml

What you need before starting
gamboozino/ng2recomp ships zero game assets. On first launch, the setup dialog asks for your own Xbox 360 files in this exact order (see Title Update 3 & DLC Guide for media IDs and SHA-1 hashes):
- Ninja Gaiden II (World release, Title ID
544307D5) in any one of three formats:- A disc image:
*.iso(World disc Media ID69F555CB) - A Games on Demand package: the container file inside
544307D5/00007000(named likeC1200E9B558D04454FA6) with its companion.datadirectory beside it - An already-extracted game folder containing
default.xexand the.ng2archives
- A disc image:
- Title Update 3 (Required):
TU_1A461UL_000000G000000.00000000000O4(2,486,272 bytes, located on a console underContent/0000000000000000/544307D5/000B0000) or thedefault.xexp(2,416,640 bytes) extracted from it. - Downloadable Content (Optional): The console’s
544307D5/00000002folder containing Mission Mode and costume packs. You can select it during first start or drop additional DLC packages into your game folder’sdlc/directory later.
Windows 10 & 11 installation steps
- Download
NinjaGaiden2-windows-x64.zip(159.0 MB) from Download & SHA-256 and verify its SHA-256 checksum. - Extract the ZIP archive to any writable folder (do not extract inside
C:\Program Filesif you plan to use portable mode). Microsoft Visual C++ runtime DLLs are already bundled inside the folder. - Run
ng2.exe. On first start, choose whether to enable Portable Mode, then select your World copy of the game, your Title Update 3 file, and (optionally) your DLC folder. - If you selected a disc image (
.iso) or Games on Demand container, the installer extracts and copies the game data once into%LOCALAPPDATA%\NinjaGaiden2\game(oruserdata/in portable mode). - Wait for the initial startup pipeline build to finish. The first boot constructs the 333 pre-recorded Vulkan render pipelines and caches them in your GPU driver; every subsequent launch starts much faster.
Where files, saves & ng2.toml are stored (Standard vs Portable Mode)
| Item | Windows Default | Linux / Steam Deck Default | Portable Mode (portable.txt) |
|---|---|---|---|
Copied game data, saves & ng2.log | %LOCALAPPDATA%\NinjaGaiden2 | ~/.local/share/ng2-recomp | userdata/ next to ng2.exe or AppImage |
Settings (ng2.toml) & pipeline list (ng2-pipelines.bin) | %LOCALAPPDATA%\NinjaGaiden2 | ~/.config/ng2-recomp | userdata/ next to ng2.exe or AppImage |
| Replacement file mods | %LOCALAPPDATA%\NinjaGaiden2\mods | ~/.local/share/ng2-recomp/mods | userdata/mods/ |
Enabling or disabling Portable Mode: Creating an empty file named portable.txt next to ng2.exe or NinjaGaiden2-x86_64.AppImage stores all game files, saves, ng2.toml, ng2-pipelines.bin, mods/, and ng2.log inside a local userdata/ subfolder. Delete portable.txt to switch back to standard OS user paths.
Skipping the first-start prompt & environment overrides
- Pre-extracted folder next to the binary: If you place an extracted copy of the game right next to the AppImage or executable (
default.xexbeside it, or inside agame_files/orgame/folder there) with Title Update 3’sdefault.xexpnext todefault.xexand DLC insidedlc/, the port launches directly without prompting. - Custom game directory override: Pass
--game_data_root=<folder>on Windows, or setNG2_GAME_DIR=<folder>on Linux. - CPU instruction set override: Set
NG2_NO_AVX2=1to force the SSE4.2 executable if you are debugging CPU compatibility.
Building from source (Linux x86_64, Windows cross-compile & ARM64 Linux)
Building from source requires your own disc image along with clang 20+, CMake 3.25+, Ninja, Python 3, Vulkan headers/loader, and FFmpeg (libavformat, libavcodec, libswresample, libswscale):
# 1. Clone and patch ReXGlue SDK (pinned at v0.10.0)
git clone --recursive https://github.com/rexglue/rexglue-sdk thirdparty/rexglue-sdk
cd thirdparty/rexglue-sdk && git checkout v0.10.0 && git submodule update --init --recursive
git am ../../patches/rexglue-sdk/*.patch
cmake --preset linux-amd64 && cmake --build out/build/linux-amd64 --config Release --target install && cd ../..
# 2. Clone and patch XenosRecomp (990d03b) and plume (1192686)
git clone --recursive https://github.com/hedge-dev/XenosRecomp thirdparty/XenosRecomp
cd thirdparty/XenosRecomp && git checkout 990d03b && git submodule update --init --recursive
git am ../../patches/xenosrecomp/*.patch && cd ../..
git clone https://github.com/renderbag/plume thirdparty/plume
cd thirdparty/plume && git checkout 1192686 && git submodule update --init contrib/volk contrib/VulkanMemoryAllocator contrib/Vulkan-Headers
git am ../../patches/plume/*.patch && cd ../..
# 3. Extract World ISO and Title Update 3 default.xexp into game_files/
python3 tools/xdvdfs_extract.py "Ninja Gaiden II (World).iso" game_files
python3 tools/stfs_extract.py TU_1A461UL_000000G000000.00000000000O4 default.xexp game_files/default.xexp
# 4. Generate ~560 MB of C++, translate 663 shaders, and build
cmake --preset linux-amd64-release
cmake --build out/build/linux-amd64-release
out/build/linux-amd64-release/ng2 --game_data_root=game_filesRecommended PC controllers
Ninja Gaiden II Recompiled supports Xbox, PlayStation and Nintendo controllers with native Xelu button prompts (plus low-latency VK_KHR_present_wait input mode):
| Controller | Best For in Ninja Gaiden II Recomp | Hardware Advantage | Link |
|---|---|---|---|
| Xbox Wireless Controller | Original Xbox 360 layout & prompts | Native XInput mapping matching the 2008 Xbox 360 combat layout | View on Amazon |
| GameSir Cyclone 2 | 1000 Hz Master Ninja precision | TMR sticks, micro-switch face buttons and 1000 Hz wireless dongle | View on Amazon |
| Sony DualSense | PlayStation button prompts | Automatic PlayStation button prompt switching and crisp D-pad | View on Amazon |
| 8BitDo Ultimate 2 Wireless | Windows & SteamOS dock play | Zero-drift TMR sticks, charging dock and rear macro paddles | View on Amazon |
As an Amazon Associate, this site earns from qualifying purchases.



Common questions
Why does the first startup take longer than later boots?
On first start, the game builds the 333 pre-recorded Vulkan render pipelines in the background and writes them to your GPU driver’s pipeline cache. Once cached, subsequent launches start immediately.
Can I add Mission Mode or costume DLC after installing the base game?
Yes. Copy your Xbox 360 DLC files (from 544307D5/00000002) into the dlc/ subfolder inside your installed game directory; the port detects and installs new DLC packages on the next startup.
Does ng2recomp support 64-bit ARM Linux handhelds like the AYN Odin 3 Ultra?
Yes. Running packaging/aarch64/build.sh after a Linux x86_64 build cross-compiles the SDK, FFmpeg 9.0.2, and ng2 against an Ubuntu 24.04 arm64 sysroot (glibc 2.39+, tested on Armada on the AYN Odin 3 Ultra) into out/aarch64-dist.