How to Install XC2 Recomp on Windows & Linux
How XC2-Setup verifies your console dump, merges Update 3.0.1 in place, lifts the ARM64 binary to C, and links a standalone portable xc2.exe / xc2 install folder in roughly 8 minutes.
- US/EU Title ID:
0100E95004038000(3.0.1) - JP Title ID:
0100F3400332C000(3.0.0) - Disk space: ~25 GiB peak · ~20 GiB final
- DLC support: All 7 packs (optional)

What you need before starting XC2-Setup
XC2-Setup includes zero Nintendo game data or code derived from the game. Before launching the installer, prepare the following files dumped from your own Nintendo Switch console, along with a machine meeting the system requirements (Windows 10+ or Linux 6.7+ with glibc 2.34, AVX2 CPU, Vulkan 1.3 GPU with VK_EXT_external_memory_host, and ~25 GiB free disk space during setup):
| Release Region | Base Game Title ID | Required Update Package | Optional Add-on Content (7 Packs) | Internal Build Profile |
|---|---|---|---|---|
| Americas & Europe (Single shared release) | 0100E95004038000 (1.0.0 base) | 0100E95004038800 (Update 3.0.1) | 0100E95004039001..9006 + 0100E95004039063 (Pack 99) | v301 (expected-xc2-3.0.1.json) |
| Japan (Installs into its own folder) | 0100F3400332C000 (1.0.0 base) | 0100F3400332C800 (Update 3.0.0) | 0100F3400332D001..D006 + JP Pack 99 | v300jp (expected-xc2-jp-3.0.0.json) |
0100E95004038000) and validates against the same SHA-256 hashes. The Japanese release (0100F3400332C000) uses Update 3.0.0, which contains the same code and data as Western 3.0.1 and receives the full recomp/patches-v301.txt framerate and resolution patch table starting in v0.1.10. Standalone Torna ~ The Golden Country is a separate title and is not supported.Step-by-step installation (GUI & CLI)
- Unpack the setup archive: On Windows, download
XC2-Setup-0.1.12-windows.zipand unpack it to any folder. On Linux or Steam Deck, downloadXC2-Setup-0.1.12-linux.AppImageand mark it executable (chmod +x XC2-Setup-0.1.12-linux.AppImage). - Start the setup window: Run
XC2-Setup.exeon Windows (if SmartScreen appears, choose More info → Run anyway) or launch the AppImage on Linux. The GUI supports English and Russian automatically. - Select your inputs: Pick your legally dumped base game archive, the matching
3.0.1(US/EU) or3.0.0(JP) update package, any optional add-on content packages (1 through 6 and pack 99), your console decryption key file, the game language, and your target install folder. - Press Start and wait once: On a 24-core PC, a full first install with Base + Update 3.0.1 + all 7 add-on packs completes in about 8 minutes. If cancelled or interrupted, re-running on the same folder resumes from the last completed step recorded in
xc2-install.json. - Launch the native executable: Play
xc2.exe(Windows) orxc2(Linux) directly from the install folder. You can delete the unpacked setup archive and source game packages once installation finishes.
For automated or headless setups, you can also run the installer CLI directly:
# Windows headless CLI
python\python.exe -m installer --base <base_file> --update <update_file> --keys <keys_file> --dlc <dlc_1> ... --lang en-US --dest "C:\Games\XC2"
# Linux AppImage headless CLI
./XC2-Setup-0.1.12-linux.AppImage -m installer --base <base_file> --update <update_file> --keys <keys_file> --lang en-US --dest ~/Games/xc2
Inside the 7-stage XC2-Setup build pipeline
When you click Start, installer/steps.py executes seven deterministic stages and logs JSON progress events:
| Stage | Script / Tool | What Happens on Disk |
|---|---|---|
| 1. Check | installer/steps.py | Verifies that all archives open with your console keys, confirms region matching (check.region_mismatch), checks expected hashes, verifies AVX2 (-march=x86-64-v3) and Vulkan 1.3 support, and computes exact peak disk space. |
| 2. Extract | tools/xc2_merge_romfs.py | Applies Update 3.0.1’s BKTR patch while reading base and update archives in place. Decrypts across multiple threads and writes the ~13–14 GiB merged romfs/ once while hashing every byte written. |
| 3. Add-on content | tools/xc2_extract.py | Extracts each selected add-on content RomFS into aoc/<index>/ (~4.6 GiB for all seven; packs 5 and 6 hold only a key file), running up to 3 worker processes in parallel (DLC_JOBS = 3). |
| 4. Lift | recomp/gen.py | Lifts the ARM64 ExeFS modules into C sources inside a temporary folder, applying recomp/patches-v301.txt (framerate and resolution hooks) plus any enabled ExeFS patches and code cheats. |
| 5. Compile | tools/build_game.py | Compiles generated C alongside modules.c, romfs.c, patches.c, and ov_zstd.c, then links with libxc2rt.a into xc2.exe / xc2. Caches compiled object files in build-cache/objects/ (~2 GiB). |
| 6. Prepare | xc2_xlate + prompts | Copies xc2_xlate, SDL3, and AMD FidelityFX SDK 2.4 DLLs beside the executable, and generates redrawn Xbox, PlayStation, and Keyboard button prompt textures into prompts/. |
| 7. Clean up | installer/runner.py | Deletes temporary generated C sources and writes xc2-install.json with input hashes and finished step keys. |
Portable install folder layout & fast updates
The finished install folder is completely self-contained and portable (fixed in v0.1.12 so both profile/ and flight/ resolve inside the install directory):
<install folder>/
xc2.exe, SDL3.dll, libopus-0.dll, xc2_xlate.exe
amd_fidelityfx_loader_vk.dll, amd_fidelityfx_upscaler_vk.dll, amd_fidelityfx_framegeneration_vk.dll
xc2.ini # User settings (language, fps_limit, output_res, fsr3, binds, mods)
exefs/, romfs/ # Extracted & merged 3.0.1 data (RomFS ~13 GiB)
aoc/<index>/ # Extracted add-on content RomFS (~4.6 GiB for all 7 packs)
prompts/ # Redrawn Xbox, PlayStation & Keyboard button prompt assets
profile/ # Portable save files
mods/ # Optional RomFS, ExeFS & cheat mods
logs/ # xc2.log (last run) and xc2.1.log .. xc2.4.log
shader-cache/, mesa-cache/ # Translated shader and pipeline caches
build-cache/objects/ # ~2 GiB object cache for fast incremental updates
xc2-install.json # Build ledger (region, version, input hashes, completed steps)
Updating to a newer XC2 Recomp release: Unpack the new setup release, open XC2-Setup.exe (it remembers your last paths in %LOCALAPPDATA%\XC2 Recomp\launcher.json on Windows or ~/.config/xc2-recomp/launcher.json on Linux), keep the same install folder selected, and press Start. Because romfs/, aoc/, and build-cache/objects/ are already present, the update skips extraction and only recompiles changed C chunks before relinking xc2.exe. Your saves in profile/ and settings in xc2.ini are preserved.
Recommended PC controllers
XC2 Recomp uses SDL3 controller input with automatic Nintendo, Xbox and PlayStation button prompt generation (plus custom rumble curve and Xbox impulse trigger options):
| Controller | Best For in XC2 Recomp | Hardware Advantage | Link |
|---|---|---|---|
| 8BitDo Ultimate 2 Wireless | Nintendo layout & Windows/Deck dock | Zero-drift TMR sticks, charging dock, native Switch/XInput mode toggle | View on Amazon |
| GameSir Cyclone 2 | 1000 Hz Blade combo canceling | TMR sticks, micro-switch ABXY buttons and 1000 Hz wireless dongle | View on Amazon |
| Sony DualSense | PlayStation button prompts | Automatic PlayStation icon rendering in XC2 tutorials and Driver Arts HUD | View on Amazon |
| Xbox Wireless Controller | Xbox prompts & impulse triggers | Supports rumble_triggers = 1 in xc2.ini with redrawn Xbox button glyphs | View on Amazon |
As an Amazon Associate, this site earns from qualifying purchases.



Common questions
Can I add the Expansion Pass DLC packs later without reinstalling from scratch?
Yes. Run XC2-Setup again on your existing install folder and add the DLC files. The installer checks xc2-install.json, keeps your existing romfs/, exefs/, profile/, and xc2.ini, and runs only the add-on content extraction step.
Can I keep both the Western (3.0.1) and Japanese (3.0.0) releases installed?
Yes. Each release installs into its own folder and bakes its Title ID (0100E95004038000 or 0100F3400332C000) into xc2.exe (`rt_title_id` in `modules.c`), so both can sit side by side on the same drive.
What happens if I delete build-cache/objects/ to save 2 GiB of disk space?
The game will run normally without build-cache/objects/. Deleting it only means the next time you update XC2 Recomp or rebuild for a new ExeFS code patch, the compiler will perform a full compile instead of an incremental relink.