XC2 Recomp Mods, Atmosphere Cheats & ExeFS Patches

How XC2 Recomp loads yuzu, Ryujinx, and Atmosphere mods from the mods/ folder, why archived files must sit under an add-on content Title ID, and how code patches and cheats are compiled into xc2.exe.

  • Mod directory: mods/<mod name>/
  • 3.0.1 Cheat file: 4F5C96E2D97F45AC.txt
  • 3.0.1 Build ID: 4F5C96E2D97F45AC288BC67613EBEF0A
  • Built-in cheats: God mode & Insta kill
Natural green emerald crystal prism embedded in dark mineral matrix
Hexagonal emerald crystal prism in matrix, echoing the Aegis Core Crystal geometry

How to install Switch & Atmosphere mods in XC2 Recomp

  1. In game, press F1, switch to the Mods tab, and click Open mods folder (this creates mods/ next to xc2.exe if it does not exist yet).
  2. Unpack each mod into its own subdirectory: mods/<any name>/. Keep the internal folder structure the mod author shipped. All four standard Switch emulator and SD card layouts are recognized automatically:
Layout Inside mods/<mod name>/Source EcosystemSupported Contents
romfs/, exefs/, cheats/yuzu & Ryujinx mod folders (load/<title id>/<mod>/)Base loose files, ExeFS patches, 3.0.1 cheats
atmosphere/contents/<title id>/romfs/Switch Atmosphere SD card packsDLC RomFS archive overrides (e.g., 0100E95004039001), ExeFS, cheats
contents/<title id>/romfs/ or <title id>/romfs/SD card mods unpacked one or two levels deepDLC and base RomFS replacements
atmosphere/exefs_patches/<name>/*.ipsAtmosphere IPS patch packs3.0.1 IPS / IPS32 binary patches

In the F1 → Mods tab, press A (or click / Left / Right) to toggle a mod on or off, and use Ctrl+Up / Ctrl+Down (or top/left face buttons) to change priority order. When two mods replace the same file, the higher one on the list wins. Changes to mod order or switches are saved to xc2.ini under [mods] (mods_order and mods_disabled) and take effect on next game start.

Why XC2 mods use Add-On Content Title ID 0100E95004039001

Unlike games that read loose files from the base romfs/ directory, Xenoblade Chronicles 2 packs nearly all of its tables, models, and scripts into a single archive pair: bf2.arh (index) and bf2.ard (data). Only streamed audio and movies (stream/bgm/*.nop, stream/voice/..., stream/movie/*.webm) sit outside the archive as loose files.

When the engine requests an archived file such as bdat/common.bdat, it checks each installed add-on content pack first (aoc1:/bdat/common.bdat, aoc2:/..., up to pack 99) before falling back to bf2.ard. It never checks the base game’s romfs/ for a loose override. Therefore, balance and gameplay mods (such as X2plus) place replacement files under Add-On Content Pack 1’s Title ID (which requires Pack 1 to be installed):

mods/
  My Balance Mod/
    atmosphere/contents/0100E95004039001/romfs/bdat/common.bdat
Title IDContent Target in XC2 Recomp
0100E95004038000Base game + Update 3.0.1 (works only for loose stream/ files or a full bf2.arh/bf2.ard replacement)
0100E95004039001Add-on content pack 1 (used by most XC2 mods, including X2plus; requires DLC pack 1 installed)
0100E95004039002 .. 9006Add-on content packs 2 through 6
0100E95004039063Add-on content pack 99 (streamed audio and movies)
0100E95004039062Reserved internally by XC2 Recomp (pack 98) for button prompts when no DLC is installed; do not target in mods

Built-in cheats (God mode & Insta kill) and Atmosphere cheat files

Added in v0.1.8, the F1 → Cheats tab includes two built-in combat toggles at the top of the list that work immediately without re-running setup:

  • God mode (cheat_god_mode = 1): Enemy attacks in battle deal 0 damage through the damage calculation formula.
  • Insta kill (cheat_insta_kill = 1): Party attacks deal 9999 damage per hit (most enemies fall in one hit; high-HP bosses take a few hits).

To use community Atmosphere cheats for Update 3.0.1, place the cheat text file named after the first 16 hex digits of 3.0.1’s build ID inside your mod’s cheats/ folder:

mods/<mod name>/cheats/4F5C96E2D97F45AC.txt

Memory-writing cheats (heap, game data, pointer chains, button conditions) run every frame as soon as you toggle them on. Because XC2 Recomp runs compiled C rather than ARM64 instructions, code-modifying cheats (opcode 0 into main) and ExeFS patches (.pchtxt and .ips targeting build ID 4F5C96E2D97F45AC288BC67613EBEF0A) are compiled into xc2.exe by XC2-Setup. When you add a new code cheat or ExeFS patch, the menu marks it as waiting: simply run XC2-Setup.exe again on the same install folder to build it in while keeping your saves and settings.

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
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
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

How can I trace which files the game is reading when building a mod?

Set trace = fs under [diagnostics] in xc2.ini (or launch with XC2_TRACE=fs). Open logs/xc2.log via F1 → Advanced → Open log folder to see every file request, such as read aoc1:/bdat/common.bdat or read from a mod <path>.

Why does the Mods tab say a mod has a code module (subsdk or main) that is not supported?

Static recompilation lifts the original game’s ExeFS ahead of time. Mods that ship custom compiled ARM64 exefs/subsdk* plugins (such as Skyline/Exlaunch C++ plugins) or a pre-patched exefs/main binary cannot be loaded dynamically; use .pchtxt or .ips instruction patches for 3.0.1 instead.