Weeping of the Empire
Weeping of the Empire is a native PC port of The Legend of Zelda: Tears of the Kingdom that recompiles the game's ARM64 code to x86-64 and runs graphics on Vulkan.
- Type: PC port
- Game: The Legend of Zelda: Tears of the Kingdom
- Runs on Windows
- By daniel-madrid-07
- Latest release v0.1.8.2, 2026-11-03
- Source: https://github.com/daniel-madrid-07/weeping-of-the-empire
README
Weeping of the Empire: Tears of the Kingdom, native on PC
Turns your own copy of The Legend of Zelda: Tears of the Kingdom (TotK, Switch, version 1.0.0) into a native Windows game. The game's ARM64 code is recompiled ahead of time into x86-64, a host runtime answers the Switch's system services, and the graphics run on Vulkan. It is not an emulator: nothing is interpreted while you play.
No game files are included, and none are ever shared. For use with a game you own: you build it on your PC from a dump of your own console's game and your own keys. This project gives no help getting them. Not affiliated with or endorsed by Nintendo. Read LEGAL.md.
Most of the code was written by AI coding agents directed by one developer, who sets priorities, plays test builds and decides what ships. It builds on MIT projects, credited below: how it was made.

Captured from the developer's own copy on a Ryzen 7 9800X3D + RTX 5080 (developer build): a 2560x1415 window, unlocked frame rate, the port's fps overlay at the top right.
- Frame rate: 30 to 240 (40 and 45 for a PC that cannot hold 60, and the usual monitor rates 60, 75, 90, 120, 144, 165, 180, 200, 240) or unlocked, up to your monitor's refresh rate (240 fps at most), at the game's real speed.
- Measured on one PC only (Ryzen 7 9800X3D + RTX 5080, developer build, 2560x1440 window, 2133x1200 render, one run per place): 116.2-119.7 fps average at the 120 cap, 159.1-178.4 unlocked. Builds made by Setup get a list of the developer build's shaders instead of its full shader cache (the difference is not measured), so expect the same or lower. Full table, and what is not measured.
- Display: any resolution, ultrawide, borderless or exclusive fullscreen; VRR and HDR options (not measured); NVIDIA DLSS super resolution on RTX cards and DLSS frame generation on RTX 40 / 50 series (both optional), FSR 1, SMAA.
- Controls: keyboard and mouse with PC prompts in the game; Xbox, PlayStation and Switch controllers; settings window in game (F10).
- Limits today: game version 1.0.0 only, and a save from a later version may not load. Windows only. Dedicated AMD and Intel cards are not measured. First visits can stutter while shaders are built.
To hear about new releases, use Watch > Custom > Releases. Later game versions are being worked on; there is no date.
Community: ask questions in Discussions > Q&A, share your play in Show and tell, and send how it runs on your hardware, with the log, as a performance report.
Install in 3 steps
- Download the Setup exe from the latest release and run it (no administrator rights needed). Setup is not code-signed, so Windows SmartScreen may warn the first time. Its SHA-256 is in the release notes.
- Drop in your files: your dump of the game, version 1.0.0 (
.nspor.xci), and yourprod.keys. Pick a folder on an NTFS drive with about 15 GB free (Setup says if it needs more) and press Install. - Wait once, then play. Setup downloads the tools it needs, an optimisation profile (made by running the game on the developer's PC: function names and how often their branches ran) and a list of the shaders the game used there (hashes and render states; see LEGAL.md for both), decrypts and recompiles the game on your PC, and puts a shortcut on your desktop. Setup's own estimate is 30 to 60 minutes. One full install of an earlier version took about 33 minutes on a 16-thread CPU with 62 GB of RAM while other work was running, and its folder peaked at about 39 GB. Since v0.1.8 the game reads its data straight from your dump instead of a 17 GB copy, so keep the dump where it is: if you move it, the game asks you to pick it again. With the dump on a USB, removable or network drive, or with Copy the game files ticked in Setup, the data is copied instead (17 GB more) and the dump can then go. An install from an earlier version keeps its copy; untick Copy the game files to free those 17 GB (the dump then has to stay). The install then holds a key made from your keys (see LEGAL.md): do not share the install folder. Internet is needed during the install. If it stops, press Install again and it continues where it stopped.
Optional: your console's firmware, for its own Korean and Chinese fonts. Without it, Korean and Chinese text uses a Windows font for that language, or English on a Windows that has none. Building from a git clone instead: see Build from a clone.
Performance (measured)
Measured on the developer's PC: AMD Ryzen 7 9800X3D (8 cores, 16 threads), NVIDIA RTX 5080, Windows, a 2560x1440 window. Each row is one run at one place, averaged over the run; "1 % low" is the 1st percentile of frame rates. A developer build from October 2026, the developer's everyday settings; DLSS and frame generation were off in these runs.
| Place | Render resolution | 120 fps cap: average / 1 % low | Unlocked: average / 1 % low |
|---|---|---|---|
| Castle area, rain | 2133x1200 | 118.9 / 108 | 178.4 / 110 |
| Kakariko | 2133x1200 | 119.5 / 106 | 159.1 / 102 |
| The Depths | 2133x1200 | 119.7 / 107 | 198.6 / 123 (at 2096x1179) |
| Field camp fight | 2133x1200 | 116.2 / 84 | 159.5 / 101 |
| Castle area, rain | 3840x2160 | 119.2 / 107 | 151.0 / 94 |
| Field camp fight | 3840x2160 | 114.1 / 83 (a second run: 100.1 / 67) | 97.4 / 64 |
- Video memory: peak 5.07 GB at 2560x1440 and 6.17 GB at 3840x2160 (castle rain, unlocked). This was measured with another program holding 7.9 GB of the 16 GB card to stand in for an 8 GB card; the frame rate there was 114.6 fps, 1 % low 37 (2560x1440) and 96.8 fps, 1 % low 26 (3840x2160); the lows come from a partly warm shader cache and, at 3840x2160, GPU-bound stretches.
- Loading (one run each): 1.63 s from launch to the first frame (1920x1080); 1.91 s from Continue to the first world frame in a newer build (30 fps cap; an older build with file tracing on took 3.42 s).
- Stutter: the first visit to a place or a fight can hitch while its shaders are built (from an empty cache: 17 hitches, median 96 ms, worst 997 ms). Built shaders stay in the cache on disk for later visits.
Setup builds: one run so far, of v0.1.5 on the same PC: median 238.9 fps over a 300 s world run, unlocked with a 240 fps ceiling, a 1920x1080 window, 1600x900 render; no 1 % low was recorded. Fights and towns mostly stay lower. Setup builds use the same optimisation profile, and a list of the developer build's shaders instead of its full shader cache.
Not measured yet: dedicated AMD and Intel graphics cards (AMD so far: one integrated GPU, see the FAQ); any CPU other than the one above; a real 8 GB card; laptops. Your numbers are welcome: use the performance report.
Features
| Frame rate | 30 to 240 (30, 40, 45, 60, 75, 90, 120, 144, 165, 180, 200, 240) or unlocked (up to your monitor's refresh rate, 240 fps at most), with the game running at its real speed |
| Display | Any window size and render resolution, ultrawide, borderless or exclusive fullscreen, VRR, HDR |
| Upscaling | NVIDIA DLSS super resolution on RTX cards and DLSS frame generation on RTX 40 / 50 series (both optional), FSR 1, SMAA |
| Controls | Keyboard and mouse made for a PC, with keyboard and mouse glyphs in the game's prompts; Xbox, PlayStation and Switch controllers |
| Settings | In-game settings window (F10): graphics, controls, audio and the game's options |
| Mods | RomFS mods made for emulators or the Switch, in a mods folder next to the game (see the FAQ); order and on / off in F10 > Mods; ExeFS code patches (.ips / .pchtxt) and Atmosphere cheats (F10 > Cheats) |
| Saves | Import from an emulator or a console backup; automatic backups. A save from a later game version may not load |
| Updates | Run a newer release's Setup on the same folder: it rebuilds only what changed and keeps saves and settings |
Speed-ups are meant to leave the image exactly as it was; features that change the image (DLSS, FSR, frame generation) are options.
Status and known limits
- Only version 1.0.0 of the game is supported.
- Made for Windows 10 / 11. Linux and Steam Deck through Proton: experimental, not tested on Linux / Steam Deck yet (Linux and Steam Deck).
- First visits can stutter while shaders are built (above).
- One graphics device loss was seen during a fight on the developer's PC. It has not been reproduced in several
long test runs and its cause is unknown. If the game closes with a device-loss error, please send the newest
logs\totk-*.login a bug report. - Some visual differences from the Switch remain, among them lighting in parts of the Depths. Known problems are in Issues.
- PC settings live in the F10 window and, by section, in the game's own Options screen (System > Options). To hide
them there, add
env.TOTK_OPTIONS_MENU=0to the game folder'splayer.txt. - Setup is not code-signed, so Windows SmartScreen may warn the first time.
Linux and Steam Deck (Proton, experimental)
Experimental, not tested on Linux / Steam Deck yet; reports welcome (a
GitHub issue with
setup.log from the install folder and the newest logs\totk-*.log from the game folder).
Setup and the game are Windows programs; on Linux they run through Steam's Proton. Both notice Proton (or any Wine) by themselves and take their Linux paths.
- Add Setup to Steam. Download the Setup exe. In Steam (on a Steam Deck: in Desktop Mode) choose Games > Add a Non-Steam Game to My Library > Browse, set the file type to all files and pick the Setup exe. In that entry's Properties > Compatibility, tick Force the use of a specific Steam Play compatibility tool and pick Proton 9.0 or newer, or Proton Experimental.
- Install. Start the entry. Your Linux folders are on drive
Z:(your home isZ:\home\<user>, on a Steam DeckZ:\home\deck): pick or drop your dump andprod.keysfrom there. The suggested folder isWeepingOfTheEmpirein your Linux home; any folder on a Linux drive with about 15 GB free works, but not one on driveC:(that is the entry's Proton prefix, which Steam deletes with the entry). Press Install. Proton runs the compilers through Wine, so the build takes longer than on Windows; on a Steam Deck keep it plugged in. - Play. When Setup says Done, press Play. To start the game straight from Steam from then on, put
--playin the same entry's Properties > Launch Options: Setup then starts the newest build and closes. Clear it to open Setup again (an update, or Uninstall).
Keep Setup and the game on that one entry: they then share one Proton prefix, where the game's saves and settings
live (steamapps/compatdata/<number>/pfx/drive_c/users/steamuser/AppData/Roaming/nxrecomp/TotK-engine in your Steam
folder) and where the game's automatic update finds Setup's choices. Back that folder up before you remove the entry.
Under Wine the game does not place its threads on chosen cores (Wine does not apply Windows' CPU Sets) and does not
track which game memory was written (that clashes with the Linux graphics drivers), so it spends a little more
processor time per frame than on Windows. Setup puts no shortcut on the desktop there.
Requirements
- Your own files: the game, version 1.0.0 (
.nspor.xci, title0100F2C0115B6000) and yourprod.keys; optionally your console's firmware, for its Korean and Chinese fonts. - CPU with AVX2 (Intel Haswell / AMD Zen or newer) for the build we have tested. Processors with SSE4.2 but without AVX2 (Intel Sandy / Ivy Bridge, AMD FX, many Pentium / Celeron) get a compatible build that the Builder picks by itself; a player confirmed it on a Pentium G4600 (no AVX); expect low fps on such processors. Reports welcome. Setup refuses processors without SSE4.2. GPU with a current Vulkan 1.3 driver.
- 8 GB of RAM (16 GB recommended: the build runs fewer compiles at once on less).
- About 15 GB free on an NTFS drive (the game's data stays in your dump: keep the dump where it is), about 30 GB when Setup copies the data out of the dump (a dump on a USB drive, or the window's "Copy the game files"); and an internet connection during the install.
FAQ
Is this an emulator? No. The game's code is translated once, on your PC, into a Windows program. Nothing is interpreted while you play.
Can I download a ready-made build? No. Builds contain the game's recompiled code and data, so they are never shared, here or anywhere else. Do not share yours.
Where do I get the game and the keys? From your own console, with your own tools. This project does not help with that: issues or messages asking for game files, keys, firmware or builds are closed without reply.
Does it work on AMD or Intel graphics? Fixes for AMD's driver are in. On AMD we have run it only on the small integrated Radeon (RDNA2) of the Ryzen 7 9800X3D: it reaches the world and plays without a device loss, at 13.3 fps (1600x900 scene) or 31.2 fps (800x450), far below any gaming card. Dedicated AMD and Intel cards are not measured yet. Please report how it runs.
Why only version 1.0.0? The patches and the recompiled code are tied to that version's code. Later versions are being worked on; there is no date.
Is my keys file safe? Setup passes it to the build as a path. It is never printed, copied or uploaded, and the whole build runs on your PC.
Where are my saves? %APPDATA%\nxrecomp\TotK-engine. Setup keeps them across updates.
How do I install mods? Put each mod in a folder of its own inside the mods folder next to the game (the game
folder; %APPDATA%\nxrecomp\TotK-engine\mods works too), laid out as emulators take them: <mod>\romfs\...,
the SD card's atmosphere\contents\0100F2C0115B6000\romfs\..., or TKMM's merged output. A whole emulator mods
folder can be copied in as it is (yuzu's load\0100F2C0115B6000, Ryujinx's mods\contents\0100f2c0115b6000):
each mod in it is listed on its own. Or let the game install a mod as you downloaded it (.zip, .7z, .rar or a
folder): F10 > Mods > Install a mod..., or drop it on TotK Launcher.exe or the desktop shortcut. In the game, F10 > Mods
shows them in load order (the top one wins a file two mods change), switches each one on or off, and says why a mod
cannot be used; changes apply at the next start. The resource size table is adjusted by itself, so mods with bigger
files do not need their own. Mods must be for version 1.0.0; the port's own files (PC button prompts, fixes) stay
over a mod's. No mods ship with the port. The full guide (layouts, F10 > Mods, why a mod is not used):
MODS.md.
Do code patches (.ips, .pchtxt) and cheats work? Yes, for version 1.0.0: a mod's exefs folder (or the SD card's
atmosphere\exefs_patches\<name>) and its cheats\082CE09B06E33A12.txt (Atmosphere format; a folder holding only
that file is a cheats mod too). The game is recompiled
ahead of time, so a patch that changes code needs the game built again with it: when the mods' code patches change,
the game closes, rebuilds itself with Setup's tools (about 3 minutes; only the changed parts compile again) and starts
again. A patch that changes only data applies at once. A patch that changes code the port already changes (the frame
rate, resolution and other F10 settings) is left out and F10 > Mods says so; use the setting instead. Cheats are
switched one by one in F10 > Cheats (off at first); a cheat that changes values works at once, one that changes the
game's code applies after the rebuild, and one that changes code only while a button is held is not supported yet.
Build from a clone
py tools/builder/gui/make_setup.py --builder makes Builder.exe in the repository root; it builds the clone with
the tools installed on your PC (git, LLVM, Visual Studio Build Tools with C++, the Vulkan SDK, Python 3.11+; it lists
what is missing) into build-work/release/, next to the repository. Or run
py tools/builder/builder.py <game> <keys> [<firmware>]: --help lists the steps and options, --dry-run checks
everything without building, and --install DIR uses Setup's layout and fetches the tools itself. The clone must be a git clone (the build exports its sources with git); after a
git pull a build redoes only what changed.
How it works
| Step | Code |
|---|---|
| Extract the game's code and data from your dump and verify every hash | pipeline/ |
| Decompress the code modules, find the functions | engine/tools/nso.py, engine/tools/funcs.py |
| Apply the patches (frame rate, real-time speed, resolution, PC controls) | games/totk/patches/ |
| Translate the AArch64 code to C++, compile it with clang, link it with the runtime | engine/tools/recomp/, tools/engine/build.py |
| Runtime: Switch system services, NVN on Vulkan, Maxwell shaders to SPIR-V, input, audio, PC menus | engine/runtime/ |
| Data overlays made from your own files: other aspect ratios, PC glyphs, fixes above 30 fps | games/totk/overlays/, games/totk/glyphs/, engine/tools/ |
| The playable folder and its launcher | engine/launcher/win/ |
Contributing
Bug and performance reports, and pull requests, are welcome: see CONTRIBUTING.md.
Credits
Built on the work of others, all under the MIT licence: the engine started from totk-recomp, whose NVN layer comes from LAS Recomp; the extraction tools, the game patches and the layouts started from MacNativeGames; the frame pacing follows Savage Wind Recomp; a few small ideas from totk-pc-recomp are reimplemented. THIRD_PARTY_NOTICES.md lists every third-party component and its licence. The logo and banner are original to this project.
Legal
For use with a game you own, dumped from your own console. This repository contains no game code, data, assets, ke