EmblemWeave

EmblemWeave is a native Windows recompilation of Fire Emblem: Fortune's Weave that supports mods, cheats, and save editing.

README

EmblemWeave

A feature-rich recompilation launcher for Fire Emblem: Fortune's Weave.
Recompiled ahead of time, with integrated mod management and in-game enhancements.

Built by XiØN.

Release Total downloads Status: playable Platform: Windows x64 Language: Rust License: GPL-3.0 Development: AI-assisted


EmblemWeave is a feature-rich recompilation launcher for Fire Emblem: Fortune's Weave. It builds the game ahead of time from your own dump and plays it natively on Windows with no emulator, and it gathers everything around that into one application: integrated mod management, save profiles and a save editor, cheats, an in-game menu, and a recompilation pipeline you can watch run.

You supply the game from your own legally obtained copy. EmblemWeave contains no game code, no assets and no keys, and it only ever reads your files.

The engine underneath is fefw-recomp by Goldoire and its contributors. Its author stepped away and the repository was removed; Obersteinn preserved the final 0.2.0 release with its build tools, so the reference build and its tested-dump manifest are still available. EmblemWeave carries that engine forward as the launcher around it, and docs/UPSTREAM.md records exactly what was kept.

Current status: 0.1.17, playable through the baseline engine. Build the game once from your dump, press Play, and on an AMD Radeon RX 7900 XT it runs at about 60 fps with sound, including the opening movie and cutscenes. 0.1.17 moves the engine to the 0.2.0 tree Obersteinn preserved, builds it from an empty folder on this PC, and was checked by playing: title screen, the save loaded through Continue, the hub walked through, the in-game menu and the F1 settings overlay. The build needs Visual Studio 2022 Build Tools with the C++ workload and no .NET SDK: the shader translator ships in the zip with its own runtime. What changed in each release is in the changelog.

EmblemWeave's own Rust runtime is being completed to take over running the game. It executes the game's code natively, serves NVN on the host GPU through Vulkan, opens a window and presents the swap chain, and carries out the command buffer's buffer and texture clears and copies. It does not yet draw the game's own geometry; see Development status and docs/ENGINE.md.

AI-assisted development. EmblemWeave is designed and directed by XiØN and developed with the help of AI coding tools. Every change is tested against the real game and the project's own test suite before it is published.

The EmblemWeave launcher

Contents

What EmblemWeave does

EmblemWeave is a launcher first and a recompiler underneath it. It finds and validates your dump, builds the game natively, keeps your saves and mods in order, and starts the game with its own in-game menu over it. It plays Fire Emblem: Fortune's Weave on Windows with no emulator. Today the game is built and run by the bundled baseline engine in engine/ (GPL-3.0, with its own licence and notices in that folder): it translates the game's code to C++ and compiles it into fefw.exe, which draws with Vulkan, plays audio through XAudio2 and decodes the game's movies. The EmblemWeave launcher does the rest: it finds and checks your dump, drives that build, keeps your saves (including imports from Switch emulators), manages your mods, and starts the game.

EmblemWeave also has its own recompiler and runtime in Rust, which is being completed to replace the baseline engine:

StageWhat happens
ReadYour extracted ExeFS, RomFS and title metadata are located and validated.
DecodeThe game's executable is decompressed into its code and data segments.
RecompileEvery AArch64 instruction is decoded, functions and control flow are recovered, and the code is emitted as portable C and compiled natively.
RunThe runtime maps the game, starts it the way the console's SDK does, serves its system calls with native implementations, and presents what the game asks the GPU to produce.

The launcher wraps all of this in one application: it shows exactly what is ready, what is running and where the runtime stops, and it never presents a feature as working before it is.

Features

Play nativelyBuild the game once from your own dump, then play it at 60 fps with sound and its cutscenes, windowed or full screen.
In-game enhancementsF10 or Back + RB while playing: pause, screenshot, restart, stop and return, cheats and display settings.
SavesSave profiles to switch between, imports from yuzu, suyu, sudachi, citron, eden and torzu, and a save editor (gold, renown, level, experience, stats, weapon masteries, items and spells).
ModsInstall RomFS mods from GameBanana (browse the game's list or paste a link), a .zip, .7z or .rar archive, or a folder, and switch each on or off.
CheatsQuick per-unit cheats (infinite HP, quick level-up, max stats), Atmosphere cheat codes, and Cheat Engine tables with live, editable, freezable values.
LauncherA rail of grouped pages, a status column that says where the game, the recompiler and the runtime stand, a live Game Log you can pop out, liquid-glass controls and sliders that take the colour and glow of the scheme, six schemes (XiØN, Arcade, FE, Ember, Verdant, Frost), diagnostics, and a recompilation pipeline you can watch run.

Changelog

Each release is written up in docs/changelog/, newest first, with the version number and what changed. The README keeps the current state; the changelog keeps the history.

Development status

Measured on the retail game (version 1.1.0, update 131072) on 15 November 2026.

Playable through the baseline engine. On an AMD Radeon RX 7900 XT the game runs at about 60 fps, with sound and its movies, from the launcher's Build the game and Play. The first build takes a while (the game code is compiled and about 12,000 shaders are translated); later builds only redo what changed. The baseline is built with libvpx for the title's VP9/VP8 codecs and dav1d for its AV1 decoder, so the opening movie and cutscenes decode on the host instead of being skipped. 0.1.17 ran that build from an empty folder on the test PC and played it: title screen, the existing save loaded through Continue into chapter 4 of Theodora's Path, the hub area walked with W, the in-game menu on Tab and the engine's settings overlay on F1, at 47 to 68 fps with no errors in the log.

EmblemWeave's own Rust runtime, which is being completed to replace the baseline engine (docs/ENGINE.md):

AreaResult
Instruction decoding99.97% of 6,714,569 instruction words, including the Advanced SIMD (vector) unit, system registers and supervisor calls
Control-flow recovery304,909 basic blocks in 3,620 complete functions (4,000-function pass); 151 switch tables resolved
Emitted C verified400 recovered functions and 2,400 vector-instruction runs identical to the reference interpreter
Independent CPU checkExecution compared instruction by instruction against Unicorn (QEMU's AArch64 model)
Program modulesmain plus the title's own sdk, loaded side by side; the C++ standard library and other library code run as the title's own code
GraphicsNVN device on the host GPU through Vulkan: queues, memory pools, buffers, textures (block-linear sizes, BC and ASTC formats), samplers, render state, shaders and the DLSS upscaler are served
PresentationA window and a Vulkan swap chain present the game's swap texture, untiled from guest memory and scaled to the window; ew-present exercises the path on its own
Command buffersBuffer copies and clears, uniform updates, reports, fences, events, and the texture clears and texture-to-texture copies that write render targets and swap textures, all carried out on the game's tiled storage
Not yetThe game's own draws are recorded and counted but not rendered, so the runtime does not produce the game's picture yet
InputPlayer 1 is a Pro Controller fed by the first XInput gamepad
AudioThe audio renderer opens and runs on its 5 ms clock; voices are not yet mixed to the speakers
ContentContent index, shader archives (.bfsha), texture archives (.bntx) and graphics presets load from RomFS
Own runtimeRuns the frame loop past the autosave notice and the opening movie into the first map load (27.9 billion instructions)
Native executionThe whole main module (807,604 functions, 10.6 million instructions) compiled ahead of time into one library; identical to the reference interpreter over the boot's first billion instructions, and about twice as fast

The full compatibility matrix, the list of verified host services and the known limitations live in docs/STATUS.md. What the launcher needs and what each failure message means is in docs/TROUBLESHOOTING.md.

Screenshots

OverviewSaves
Overview: Play and Rebuild, save profiles and shortcuts, with the status column beside itSaves: profiles, the slots in your save and the editor, imports from emulators
ModsCheats
Mods: installed mods with on/off switches, archives, folders and GameBananaCheats: Atmosphere codes and Cheat Engine tables
Game SetupAppearance
Game Setup: your dump detected and validatedAppearance: the XiØN, Arcade, FE, Ember, Verdant and Frost schemes
RecompilationDiagnostics
Recompilation: the nine-stage pipelineDiagnostics: what the runtime did and where it stopped

The screenshots are the launcher's own rendering, saved with EmblemWeave.exe --page <page> --screenshot <file.png>.

Key capabilities

  • Static recompiler for AArch64: integer, floating point, Advanced SIMD, atomics and exclusives, with an independent reference interpreter for every instruction.
  • Three layers of verification: the emitted C against the interpreter, the vector unit against seeded edge cases (NaNs, infinities, signed zeros), and the interpreter against an independent CPU model.
  • Guest thread scheduler with real blocking waits: mutexes, condition variables, events, timers, joins and sleeps, plus deadlock detection that names every waiting thread.
  • Native platform services: the SDK's startup sequence, heap and frame-heap allocators, a read-only RomFS filesystem with a separate save directory, the musl C library (formatted I/O, parsing, a bit-exact math library), libc++ runtime pieces, and system settings such as language and profile.
  • Native execution: the recompiled code compiled ahead of time into one library, entered at any block, checked call by call against the interpreter (EW_NATIVE_CHECK=1).
  • Its own presenter: a Win32 window, a Vulkan surface and swap chain, and the game's swap texture untiled per frame and presented, independent of the baseline engine.
  • A complete launcher with game-data detection, save profiles and editing, mod management and cheats, an in-game enhancements menu, a staged recompilation pipeline, diagnostics with search and export, and six colour schemes, all built from one set of liquid-glass controls that take their colour and glow from the scheme.

System requirements

ComponentRequirement
Operating systemWindows 10 or 11, 64-bit
GraphicsA GPU with a Vulkan 1.3 driver
ProcessorAny x86-64 processor; recompilation benefits from more cores
Memory8 GB minimum, 16 GB recommended
StorageAbout 30 GB for the extracted game data, plus space for build output
GameYour own legally obtained copy of Fire Emblem: Fortune's Weave

Building the game needs the tools below. The launcher checks every one with the same detection the build uses before it starts, and the Requirements page names each missing one with the command that installs it.

DependencyNeeded forVersionMissing it
Visual Studio C++ toolsBuild the game2022 (17) or newerwinget install --id Microsoft.VisualStudio.2022.BuildTools --exact --override "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended" --accept-package-agreements --accept-source-agreements
Windows 10/11 SDKBuild the game10.0Add Windows 11 SDK under Individual components in the Visual Studio Installer, or install the standalone SDK, then press Check again.
LLVM (clang-cl and lld-link)Build the game23winget install --id LLVM.LLVM --exact --accept-package-agreements --accept-source-agreements
CMakeBuild the game3.25winget install --id Kitware.CMake --exact --accept-package-agreements --accept-source-agreements
NinjaBuild the gameanywinget install --id Ninja-build.Ninja --exact --accept-package-agreements --accept-source-agreements
NASMBuild the game2.14winget install --id NASM.NASM --exact --accept-package-agreements --accept-source-agreements
GitBuild the gameanywinget install --id Git.Git --exact --accept-package-agreements --accept-source-agreements
PowerShell 7Build the game7winget install --id Microsoft.PowerShell --exact --accept-package-agreements --accept-source-agreements
uvBuild the gameanywinget install --id astral-sh.uv --exact --accept-package-agreements --accept-source-agreements
.NET 10 SDKBuild the game (only without the bundled translator)10winget install --id Microsoft.DotNet.SDK.10 --exact --accept-package-agreements --accept-source-agreements
.NET runtimeShaders (optional)10Only runs a translator that was built here without being published as one executable. The bundled one carries its own runtime.
Shader translatorShadersanyTurns the game's shaders into SPIR-V. The release zip carries it, published with its own .NET runtime.
PythonDecode3.9winget install --id Python.Python.3.12 --exact --accept-package-agreements --accept-source-agreements
zbic (Python package)Decodeanypy -m pip install zbic
C compilerRecompilationanypy -m pip install ziglang

The .NET 10 SDK is not needed: the release zip carries the shader translator published with its own runtime, so the shader step runs on a PC with no .NET at all. The same sources also publish for Linux (EmblemWeave-vX.Y.Z-shader-translator-linux-x64.tar.gz), and the build looks for the translator under tools/shaders/prebuilt/<platform>/, so a Linux build picks the ELF binary on its own. For a Steam Deck, build on Windows and run the result under Proton: docs/STEAMDECK.md has the steps, the prefix paths and the fefw.ini edits.

To build the launcher from source you also need the tools listed in Building from source.

Security and what the launcher runs

EmblemWeave is one Rust executable plus the engine folder it drives. It installs no service, driver or browser extension, ships no PHP, Python or AI runtime of its own, has no accounts, and uploads nothing. Saves, settings, mods, logs and the decoded copy of your game all stay on your PC under %APPDATA%\EmblemWeave.

Everything the launcher starts, and why:

ProgramWhenWhy
vswhere.exestart-up, buildfinds Visual Studio's C++ tools
dotnet --list-sdksstart-up, buildreads the installed SDK version
spirv_harness.exeBuild the gamethe shader translator bundled in the zip; it carries its own .NET runtime and opens no network connection
dotnet buildBuild the game, only when the zip has no translatorbuilds the translator from the staged sources
git clone, git checkoutBuild the gamefetches the pinned Ryubing revision the shader translator is ported from
pwshBuild the gameruns the engine's build scripts (-NoProfile -ExecutionPolicy Bypass)
cmd /C recomp\scripts\build_game.cmdBuild the gamedrives the engine's own build
cmake, ninja, clang-clBuild the gameconfigures and compiles the engine, one compiler per CPU core
uvBuild the gamemakes the engine's Python environment and installs its pinned requirements
pythonDecoderuns the zbic bridge compiled into the launcher; it reads your dump and writes the decoded copy
clang or zigRecompilationcompiles the lifted C, and its verification program
fefw.exePlaythe game itself
curl.exeupdate check, mod browsingsee the network table below
tar.exeunpacking a mod archive or an updatethe archive you chose
wingetInstall the missing build toolsonly when you press that button
notepad, explorerOpen log, Open folderopens the file or folder you asked for

Every console program is created with CREATE_NO_WINDOW, so the launcher never opens a console window, and every command it runs is written to the task's log in %APPDATA%\EmblemWeave\logs. The scripts it runs start their own tools in turn (Visual Studio's vcvars64.bat, robocopy, cmake, ninja, clang-cl, python); those appear in the same log, line by line, for every build. If you see terminal windows, shell scripts or "press any key to continue" prompts while EmblemWeave is open, they are not from EmblemWeave.

Before a build