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)
Desktop gaming PC workstation with dual monitors and tempered glass chassis
Windows 10/11 x64 desktop workstation for Vulkan 1.3, AMD FSR 3.1/4 and 3040x1710 internal rendering

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 RegionBase Game Title IDRequired Update PackageOptional 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 99v300jp (expected-xc2-jp-3.0.0.json)
Important regional note: A European dump is identical to the American title (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)

  1. Unpack the setup archive: On Windows, download XC2-Setup-0.1.12-windows.zip and unpack it to any folder. On Linux or Steam Deck, download XC2-Setup-0.1.12-linux.AppImage and mark it executable (chmod +x XC2-Setup-0.1.12-linux.AppImage).
  2. Start the setup window: Run XC2-Setup.exe on Windows (if SmartScreen appears, choose More info → Run anyway) or launch the AppImage on Linux. The GUI supports English and Russian automatically.
  3. Select your inputs: Pick your legally dumped base game archive, the matching 3.0.1 (US/EU) or 3.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.
  4. 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.
  5. Launch the native executable: Play xc2.exe (Windows) or xc2 (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:

StageScript / ToolWhat Happens on Disk
1. Checkinstaller/steps.pyVerifies 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. Extracttools/xc2_merge_romfs.pyApplies 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 contenttools/xc2_extract.pyExtracts 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. Liftrecomp/gen.pyLifts 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. Compiletools/build_game.pyCompiles 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. Preparexc2_xlate + promptsCopies 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 upinstaller/runner.pyDeletes 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.

XC2 Recomp uses SDL3 controller input with automatic Nintendo, Xbox and PlayStation button prompt generation (plus custom rumble curve and Xbox impulse trigger options):

ControllerBest For in XC2 RecompHardware AdvantageLink
8BitDo Ultimate 2 WirelessNintendo layout & Windows/Deck dockZero-drift TMR sticks, charging dock, native Switch/XInput mode toggleView on Amazon
GameSir Cyclone 21000 Hz Blade combo cancelingTMR sticks, micro-switch ABXY buttons and 1000 Hz wireless dongleView on Amazon
Sony DualSensePlayStation button promptsAutomatic PlayStation icon rendering in XC2 tutorials and Driver Arts HUDView on Amazon
Xbox Wireless ControllerXbox prompts & impulse triggersSupports rumble_triggers = 1 in xc2.ini with redrawn Xbox button glyphsView on Amazon

As an Amazon Associate, this site earns from qualifying purchases.

Mountain peaks rising above a dense sea of clouds at sunrise
Karst peaks emerging above a morning sea of clouds, echoing the Cloud Sea Titans of Alrest
Natural green emerald crystal prism embedded in dark mineral matrix
Hexagonal emerald crystal prism in matrix, echoing the Aegis Core Crystal geometry
Macro view of a handheld mainboard PCB and multi-core GPU silicon package
AVX2 CPU and Vulkan 1.3 VK_EXT_external_memory_host pipeline

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.