Wind Waker Recomp translates a GameCube game to native code, one module at a time
Personal source fork of BlueWake for The Wind Waker on iPhone and iPad
At a glance
- What is it?
- Wind Waker Recomp is a static recompilation of The Legend of Zelda: The Wind Waker that turns the PowerPC executable and all 415 of its modules into ahead-of-time native code, x86-64 for Windows and arm64 for Apple devices, running under a compatibility runtime derived from Dolphin. It needs no JIT, and the rare instruction the translator cannot handle falls back to an interpreter.
- Who is it for?
- Adopt Wind Waker Recomp if you own a compatible copy of the game and want it running natively on a modern device with widescreen, higher frame rates and save states. Skip it if you do not have the disc, since no game data is included and the app checks your disc image at first launch, and if you are looking for a general GameCube emulator, since this is a per-game recompilation.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 18 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Ahead-of-time translation, not emulation
The What is it section describes the mechanism precisely, and the precision matters.
Wind Waker Recomp translates the game's PowerPC code, the main executable and all 415 of its modules, into native code ahead of time: x86-64 for Windows, arm64 for Mac, iPhone and iPad. The app runs that code with a compatibility runtime for the GameCube's hardware, covering memory and timing, disc and memory card, controllers, DSP audio, and graphics through Direct3D 12 on Windows and Metal on Apple devices.
Nothing is compiled while you play, so it needs no JIT.
That single sentence separates this from an emulator in the way most people mean it. A JIT compiles at runtime, which costs CPU time during play and has to be tuned for the shape of the code being compiled. Here the compilation is a build step, done once, ahead of time, and the result is ordinary native code that the CPU runs at full speed.
The number 415 is worth pausing on, because it is the scale of the job. The GameCube executable is not a monolith; it is a main program plus a large set of relocatable modules, and each of those has to be translated for the recompilation to be complete. A project that translates the main executable alone would run the opening and crash on the first module load.
The catch is stated without hedging. The few rare instructions the translator does not handle fall back to an interpreter. So there is a hybrid: native code for almost everything, interpreted execution for a small tail of instructions.
And the framing in the documentation is careful about what this is. The runtime is derived from Dolphin and keeps an interpreter fallback, so this is a static recompilation with a hardware compatibility layer, not an emulation-free rewrite. The distinction is honest and it is the right one to make, because the runtime really is doing the work of emulating the GameCube's memory model, its disc and memory card handling, its controllers and its DSP.
Bring your own disc, and the app checks it
The most important line in the documentation is the one about the disc, and it appears in an IMPORTANT callout near the top.
Bring your own disc. Wind Waker Recomp needs your own legally obtained copy of The Wind Waker for GameCube, USA version, with the identifier GZLE01 and revision 0. No disc image, game files, textures, audio or saves are included anywhere: the app asks for your disc image and checks it.
That is a clean position to be in, and it is enforced rather than asserted. The check at first launch means the app verifies the disc you supply rather than trusting it, which is what makes the restriction practical rather than merely aspirational.
The specificity of the requirement is worth reading twice as well. The game code is version specific, so the recompiled native code is tied to one particular revision of one particular regional release. The USA version with revision 0 is the supported target, and the check exists because a different revision would contain different code that the translation was not built against.
The build story follows from the same constraint. On Windows the ready-made build is downloadable and at the first launch you choose your disc image and play. On Mac you build BlueWake from your own disc. On iPhone and iPad no prebuilt IPA is provided at all: you build it on a Mac from your disc and install it on your own device.
That last arrangement is the technical consequence of the platform. An iOS application has to be signed and provisioned through the normal developer path for an app of this kind, which is a per-device process rather than a distribution of a file.
The repository layout is consistent with the model. There is an apple/ directory for the Apple platform work, a cmake/ directory for the build, a config/ directory, a docs/ directory, a mods/ directory, a patches/ directory, a runtime/ directory for the compatibility layer, a scripts/ directory and a tests/ directory. There is also an AGENTS.md and a RIGHTS_AND_LICENSES.md.
The fork is merging into BlueWake
This repository is in the middle of a transition, and the documentation puts that first rather than burying it.
Wind Waker Recomp is moving to BlueWake. This fork and BlueWake, the project it started from, are becoming one project, maintained together by Elliott and Chris. Elliott's work is being brought into BlueWake with his authorship.
The practical instructions follow from that. Downloads have moved to BlueWake, with the Windows build on BlueWake's releases page, while on Mac, iPhone and iPad you build BlueWake from your own disc. The releases here are unpublished. Bugs and feature requests should go to BlueWake's issue tracker, not here, and you should mention whether you use a Wind Waker Recomp release or a BlueWake build. Open issues here have been moved to BlueWake, each with a link back.
One detail is a nice piece of engineering care. On Windows, saves carry over: both keep them in the same location, the %APPDATA%\BlueWake directory. So the merger is not a data migration for the people who already have saves.
The support channels are also shared rather than duplicated. The Discord is shared by both projects, and the details of the move are written up in a migration log document in the BlueWake repository.
Underneath all of that, the fork's provenance is recorded precisely. It is a source fork of BlueWake based on upstream commit 31b8a722fee3, and the app and build scripts retain the BlueWake name and bundle identifier. The upstream license and credits are preserved below and in the RIGHTS_AND_LICENSES.md file.
That last point is the one to note carefully in a recompilation project. A static recompilation of a game whose original code is Nintendo's involves redistributing translated versions of Nintendo's code, and how that is handled is a licensing question that the project takes head on. Keeping the upstream credits and the upstream licence intact, and adding a separate rights and licences document, is the shape of an answer that takes that seriously.
The features are options you can turn off
The feature section makes a design decision explicit before listing anything. What Wind Waker Recomp adds to the game is mostly an option in the settings, reachable with F1, so you can play with as much or as little of it as you like.
That framing matters for a game modification project. The failure mode in this space is a port that becomes its own thing, where the original game is unrecognisable and the only way to play is the mod's way. Starting from the position that the additions are options behind a settings entry, which you can turn down or off, reverses that.
The release notes are given by version, and they show the direction of travel. In 0.2.0 came save states and climbing any wall, on Windows and Mac. In 0.3.0 on Windows the game runs about 13 percent faster, slower CPUs no longer play in slow motion with frame interpolation on, and frame interpolation can match the display up to 240 FPS. In 0.4.0 on Windows the lava in Dragon Roost Cavern glows in its colours again, since it had been drawing white, and the game's own vibration reaches your controller, shaped by its strength, with Xbox and DualSense trigger feedback.
That last entry is the most interesting kind of fix. The lava is a rendering correctness problem, where a colour conversion had been dropped. The controller vibration is a fidelity problem, where the game's own rumble data is now passed through to the hardware and shaped by the strength the game asked for, with trigger feedback on the two controller families that support it.
The headline features listed near the top are the same set in summary form: Direct3D 12 and Metal rendering, Smooth Motion at 60, 120 or up to 240 FPS, widescreen, save states, wall climbing, controllers, mouse and keyboard, touch controls and mods. The touch controls are what make the iPhone and iPad builds viable rather than a curiosity, since a game that expects buttons needs them mapped to a touchscreen.
Smooth Motion and the frame rate decisions
The picture and frame rate section is the part with the most engineering in it, and it starts from an honest description of the constraint.
The game runs at its own 30 frames a second. The renderer draws in-between frames blended from the game's own, which gives 60 FPS by default, 120 FPS on a display of 100 Hz or more, or on Windows as many as the display shows, up to 240 FPS on a 240 Hz display.
The interpolation is camera-aware and object-aware: it follows the camera and what the game moves itself, rather than interpolating the whole frame uniformly. That distinction is the difference between an interpolation that looks like the game and one that smears everything in motion.
The behaviour under load is the detail worth noticing. On Windows it steps aside when the CPU cannot keep up rather than slow the game. So when the machine cannot sustain the target frame rate, the feature disables itself rather than dragging the game down with it. That is a deliberate choice about which of the two things to sacrifice.
Smooth Motion is on by default, and F10 turns it off and on in Windows.
The alternative approach is listed next and is marked experimental and not recommended. 60 Hz game logic runs the game itself 60 times a second instead of interpolating, on a fast CPU. The documentation is explicit about the state of it: movement, cutscenes and some timers are still being converted, so parts run too fast.
That is the honest framing of a half-finished feature, and the fact that it is shipped at all while marked not recommended is a reasonable compromise, since it is behind an option and the alternative is that nobody gets to try it.
The mouse and keyboard support is part of the same picture. A game designed around a GameCube controller needs a mapping for a desktop input, and the project lists controllers, mouse and keyboard, and touch controls as separate supported schemes.
How the project is built and what to check before you try it
There are two things in the documentation worth reading before you decide whether this is for you.
The first is the AI disclosure, and it is unusual to find one stated this plainly. Wind Waker Recomp is developed with substantial AI assistance for code, testing, documentation and debugging. The status log records what has actually been checked, and on what.
That last clause is what makes the disclosure useful rather than a disclaimer. The claim is not that the code is good, it is that there is a log of what was verified and against what. For a recompilation project where the correctness question is concrete, since the output is supposed to match the original game, a status log of what has been checked is the right artefact to publish.
The second is the version specificity already mentioned. The disc must be the USA version with identifier GZLE01, revision 0, because the recompiled code is tied to that revision. A different regional release or a different revision is not supported, and the app's first-launch check will refuse it.
The build instructions themselves live partly in BlueWake's documentation, since the project has merged, with the getting started section covering building from your own disc for Mac and the iPhone and iPad steps described as building on a Mac from your disc and installing it on your own device.
So the practical checklist before starting is short. You need a legally obtained USA revision 0 copy of the game. You need to be willing to build from source on Mac and on iOS, since there is no prebuilt IPA and the Mac build is not distributed either. You need to follow BlueWake rather than this repository for downloads and bug reports, since the fork is being merged in and the releases here are unpublished. And you need to decide how much of the added feature set you actually want, since the design puts all of it behind options.
The project is C, GPL-3.0 licensed, with the default branch main and the last push on 2026-10-05.
Editorial conclusion
Adopt Wind Waker Recomp if you own a compatible copy of the game and want it running natively on a modern device with widescreen, higher frame rates and save states. Skip it if you do not have the disc, since no game data is included and the app checks your disc image at first launch, and if you are looking for a general GameCube emulator, since this is a per-game recompilation. Verify first that your disc is the USA revision specified, since the game code is version specific, that you build from source on Mac and iOS rather than expecting a download, and which upstream you follow, because this fork is being merged into BlueWake and downloads have already moved there.
Frequently asked questions
What is Wind Waker Recomp and how does it work?
It is a static recompilation of The Legend of Zelda: The Wind Waker. It translates the game's PowerPC code, the main executable and all 415 of its modules, into native code ahead of time, x86-64 for Windows and arm64 for Mac, iPhone and iPad, and runs that code with a compatibility runtime for the GameCube's hardware covering memory and timing, disc and memory card, controllers, DSP audio, and graphics through Direct3D 12 and Metal. Nothing is compiled while you play, so it needs no JIT, and the few rare instructions the translator does not handle fall back to an interpreter.
Do I need my own copy of the game?
Yes. Wind Waker Recomp needs your own legally obtained copy of The Wind Waker for GameCube, USA version, identifier GZLE01, revision 0. No disc image, game files, textures, audio or saves are included anywhere, and the app asks for your disc image and checks it at first launch.
What is Smooth Motion and what does 0.4.0 add?
Smooth Motion is frame interpolation, on Windows and Mac. The game runs at its own 30 frames a second and the renderer draws in-between frames blended from the game's own, giving 60 FPS by default, 120 FPS on a display of 100 Hz or more, or on Windows as many as the display shows up to 240 FPS. It follows the camera and what the game moves itself, and on Windows steps aside when the CPU cannot keep up rather than slow the game. Version 0.4.0 on Windows restores the colours of the lava in Dragon Roost Cavern and passes the game's own vibration to the controller with Xbox and DualSense trigger feedback.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/elliotttate-wind-waker-recomp)Was this useful?