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

How to install Switch & Atmosphere mods in XC2 Recomp
- In game, press F1, switch to the Mods tab, and click Open mods folder (this creates
mods/next toxc2.exeif it does not exist yet). - 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 Ecosystem | Supported 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 packs | DLC RomFS archive overrides (e.g., 0100E95004039001), ExeFS, cheats |
contents/<title id>/romfs/ or <title id>/romfs/ | SD card mods unpacked one or two levels deep | DLC and base RomFS replacements |
atmosphere/exefs_patches/<name>/*.ips | Atmosphere IPS patch packs | 3.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 ID | Content Target in XC2 Recomp |
|---|---|
0100E95004038000 | Base game + Update 3.0.1 (works only for loose stream/ files or a full bf2.arh/bf2.ard replacement) |
0100E95004039001 | Add-on content pack 1 (used by most XC2 mods, including X2plus; requires DLC pack 1 installed) |
0100E95004039002 .. 9006 | Add-on content packs 2 through 6 |
0100E95004039063 | Add-on content pack 99 (streamed audio and movies) |
0100E95004039062 | Reserved 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 deal0damage through the damage calculation formula. - Insta kill (
cheat_insta_kill = 1): Party attacks deal9999damage 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.
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
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.