Wind Waker Recomp Wiki / Changelog

Wind Waker HD Recomp changelog

22 GitHub releases with dates in UTC, files and what each one changed, from v0.1.0 to v0.5.1 and the current development build.

  • 20 stable releases
  • Latest v0.5.1
  • Dev e5f4286
Advertisement

Release notes for every Wind Waker HD Recomp release, newest first, generated from the GitHub Releases data on November 8, 2026. Long notes are shortened (each entry links to the full text), and the install preamble that every release repeats is left out. The project also keeps a full CHANGELOG.md in its repository.

All releases

devel-build Development build (devel @ e5f4286, 2026-11-08) pre-releaseNovember 8, 2026, 00:10 UTC

What's new

  • Fixed: randomized games crashed at start or ran the original item functions (#467, thanks @KaitoCrisHub for the report, #383). TWWHD Randomizer 1.2.0 points some of the game's tables at its own code through the game file's relocation entries, which the console applies when it loads the game. The port now applies them too, when it translates and when it loads the game: every 1.2.0 seed now runs the randomizer's own item functions (before, the original ones ran in places, and some seeds crashed right after name entry). The randomizer compatibility check reads the relocated code as well. Unmodified games are byte for byte unchanged. Seeds already made are rebuilt the next time setup prepares them.
  • Android touch: no "Tap to start" text on the title screen (#466, thanks @FabricioArroy0 for the request, #465). Tapping still starts the game; only the text over the title is gone.
  • Fixed: the GameCube A in the floating action hint was drawn about four times too large (#460, thanks @itsarahtonin for the report and fix, #458). With GameCube button prompts, "A Speak" and similar hints took their size from the hint's frame instead of the button picture. The HUD's own buttons are unchanged.
  • Fixed: opening the item menu's settings page with the stick turned "Invert camera up/down" off (#463, thanks @itsarahtonin for the report and fix, #461). You reach the page by pushing Left, so the stick was still held when it opened and changed the first row. Stick directions held when the page opens (or when a row's own page closes) now act only after they are released, like held buttons.
  • Fixed: controller rumble on macOS stopped working again (#464, thanks @davidsgullick, #346). A change made while #347 was reviewed switched to a looping haptic player that controllers reject, so the motors never ran. Rumble now uses one long haptic event whose strength changes live, as in #347's first version, and keeps the recovery when macOS resets the haptics engine.
  • Fixed: loading a full save state in a new session could crash the Vulkan renderer (#456, thanks @itsarahtonin for the report and fix, #451). A state saved while restyled button prompts were shown kept text that pointed at their button pictures, which full states don't carry; in a later session that hadn't shown restyled prompts, the game drew that text against an empty picture and the renderer stopped with "missing sampled texture". Such text is now rebuilt from the game's own font after the load.
  • The log now notes a pause menu without its selection cursor (#454, for #336). If the item menu's cursor is gone (the menu can then only be used with the mouse), captures/wwhd.log gets a [menu-cursor] line saying which of the game's conditions for the cursor is missing. Nothing changes in play. If this happens to you, please send the log with the issue.
  • Fixed: tapping the game-over question did nothing on Android (#455, for #427). After a game over, Cancel/Save and To Title Screen/Continue now take a tap on the Flexible touch style, which shows only A (Choose) there. The game runs this question as a menu, so the touch controls had treated it as one.
  • Make randomized games in the game (#457, #452). Settings › Randomizer is now always there and makes and imports randomized games itself, so setup isn't needed for them: choose Beginner, Standard or Everything, a seed name or a permalink and Make this game, or Import seed... for the official randomizer's output. Setup makes and builds it in the background while you keep playing (with progress, Cancel and setup's message if it fails); then Restart now or later. On Android the phone's setup service builds it (it pauses when the phone gets hot) and the next start of the app plays it. The full option pages stay in the setup window.
  • Fixed: the bottom of the picture cut off on Android devices that keep their navigation bar over the game (#349, thanks @plxjammerplx for the report). On the Retroid Pocket Nova, 4:3 / Match window filled the whole screen and the system's navigation bar covered the rupee counter. The picture, the view button and Match window's shape now leave out the bars the system draws over the game. Desktop and devices that hide the bars are unchanged.
  • Fixed: the pirate ship's sail flickered with frame interpolation (#446, thanks @darklinkpower for the report). Above 30 fps the sail and flag off Outset were drawn torn on some frames (dark blotches), a regression in v0.5.1. Cloth that the game draws into two alternating buffers (sails, flags, mantles, the tapestry, Molgera's sand floor) now keeps switching buffers on every drawn frame. 30 fps is unchanged.
  • Fixed: the controller stopped working after clicking the GamePad window (#406, thanks @KaitoCrisHub for the report). Controllers now keep driving the game while the TV window or the GamePad window is in front (on Windows the focus could stay empty when it moved between the game's own windows). The existing option is now called Controller input in the background (Settings › Controls, off by default): turn it on to keep using the controller while another app is in front. Keyboard and mouse still need a game window in front.
  • Vulkan: less render-thread CPU per draw (#400, thanks @DaniXK-96). Faster shader lookups, buffers that keep their size between frames and fewer copies for chunked draws: about 3% less render-thread time on a laptop (i3 + 920MX), the same picture.
  • Graphics › Grass draw distance (#401, thanks @DaniXK-96). A new Vulkan setting that skips far tall grass patches: All (the original, default), Far 4000, Medium 3000 or Near 2000 units from the camera. In thick grass like Forest Haven it saves a lot of render-thread time on slower PCs (46 → 60 fps on an i3 laptop at Near); palms, small plants and nearby grass always stay.

Files: WindWakerHD-v0.5.1-devel.e5f42865-windows-x86_64.zip (41.3 MB), WindWakerHD-v0.5.1-devel.e5f42865-windows-arm64.zip (39.7 MB), WindWakerHD-v0.5.1-devel.e5f42865-macos-arm64.zip (27.1 MB), WindWakerHD-v0.5.1-devel.e5f42865-linux-x86_64.AppImage (125.3 MB), WindWakerHD-v0.5.1-devel.e5f42865-linux-x86_64.zip (146.2 MB), WindWakerHD-v0.5.1-devel.e5f42865-linux-aarch64.AppImage (126.7 MB), WindWakerHD-v0.5.1-devel.e5f42865-linux-aarch64.zip (149.2 MB), WindWakerHD-v0.5.1-devel.e5f42865-android-arm64.apk (155.6 MB), WindWakerHD-v0.5.1-devel.e5f42865-android-x86_64.apk (158.7 MB), SHA256SUMS.txt (1 KB). Full notes on GitHub

v0.5.1 v0.5.1November 6, 2026, 14:33 UTC

What's new

Thanks

Thanks to everyone who sent code for this release:

  • @itsarahtonin: change Link's name mid-game (#343), sharp settings text at 4K (#345), % refused in new-game names (#351), the GameCube adapter on Windows (#357), and two test fixes (#403, #404)
  • @GenissonEmilio: Android touch on the title screen, file select and name entry (#340), safer save import (#339), touch controls on the Poco M8 Pro (#338)
  • @davidsgullick: controller rumble (#347) and Steam Controllers (#348) on macOS
  • @mkopec: HDR metadata (#337) and the Mali (panvk) sky fix (#317)
  • @rhemfur: keep your save in a cloud folder (#238)
  • @RaphaelFakhri: Linux launchers for folders with special characters (#377)
  • @DaniXK-96: a Vulkan colour-target fix (#399)
  • @francosang: the HD minimap's SDK proposal (ZeldaWWHDMods #33), used for #434

Many features in this release come from two Android forks of the port, with their authors' code or ideas:

  • @GreenNaugahyde's Android fork (GreenNaugahyde/ZeldaWWHDRecompAndroid): the in-app randomizer, GameCube player models, Achievements, Game progress, Walk-through doors, 16-character names, Instant text, Deku Leaf wave to rise, touch button pictures, menu sounds, controller dialogs, frame generation and several Android memory and driver fixes
  • @Nycolazs' Android fork (Nycolazs/WindWakerHD-Android-Plus): frame generation, the Turnip, Huawei, storm-picture, Shop Ship, texture-memory and low-memory fixes

And thanks for reports, ideas and testing: @aaronlink127, @AnythingVocaloid, @alexander-beepx, @andreasbertram5-alt, @Eggtooth, @findel77, @Froggjarl, @jamesmendel, @KaitoCrisHub, @MattPlays02, @plxjammerplx, @Sherisherisherisheri, @SpicyAwesomeSauce and @thejorro.

New

  • Randomizer built in (#430, #431, #390, #366, #408, #396, #433, #435, for #117, the in-app approach from the GreenNaugahyde Android fork, thanks @GreenNaugahyde; randomizer: TWWHD Randomizer 1.2.0, MIT). Setup's Randomized games page makes a seed from a preset, a seed name or a permalink, checks it against the port and builds it. A game made with the official TWWHD Randomizer is added with Import seed… on the same page (or setup --import-seed PATH). Every option of 1.2.0 is accepted, including Quiet Swift Sail and entrance shuffle (thanks @KaitoCrisHub for the report, #383); seeds from 1.1.1 and older are refused. In the game, Settings › Randomizer shows the seed, its permalink and (after a question) the spoiler log with a sea-chart map. Works for USA and European games and on Android. Every randomized game has its own saves, backups and save states; your normal save is never touched. Choose your game and setup --game-dir no longer accept a randomized game folder: install the game as it is, then import the seed. Randomized games installed the old way keep updating and keep their saves.
  • GameCube player models (#432, from the GreenNaugahyde Android fork, thanks @GreenNaugahyde). Mods › Install from a file takes a GameCube model pack you have (a folder or zip with Link.arc). The port converts it on your device onto HD Link's skeleton, materials and animations, with textures upscaled to HD's sizes. On the model's page in the Mods tab you choose it per save file; the choice applies live, no restart. No model packs ship with the port.
  • New built-in mod: Achievements (#410, goals, texts and points from the GreenNaugahyde Android fork, thanks @GreenNaugahyde). Off by default (Mods › Built-in). 99 goals read from your save data, earned for good, for all save files together and for each one; the record is kept in achievements.json in the port's config folder, never in the save. When you earn one, Link turns round and holds it up with the game's item fanfare (its volume is an option). Cheats pause achievements while they're used, unless you turn on Earn with cheats; loading a save state never takes one back. Pages on the item menu's settings page (Game tab) and in the Esc settings.
  • New built-in mod: Game progress (#409, idea, count and places from the GreenNaugahyde Android fork, thanks @GreenNaugahyde; chart numbers from TWWHD Randomizer). Off by default (Mods › Built-in). Shows how much of the game your save file has found: a percent, a checklist in ten parts (dungeons, hearts, items, equipment, upgrades, songs, pearls and Triforce, charts, the sea chart, the Nintendo Gallery) and a sea-chart map of where each thing is found. An option shows the percent on screen. Two places (Crescent Moon Island's sunken treasure, Triforce Chart 2) are still to be checked in the game.
  • 60 fps (generated), experimental (#425, from the GreenNaugahyde and Nycolazs Android forks, thanks @GreenNaugahyde and @Nycolazs). On Vulkan, Graphics › Frame rate › 60 fps (generated, experimental) keeps the game at 30 fps and generates every other frame on the GPU from the last real one (camera and object movement, with the HUD kept exact). Off by default; not yet checked on a phone. Not available on Metal (on a Mac, use the Vulkan renderer).
  • Keep your save in a cloud folder (#238, for #190, thanks @rhemfur). Settings → Saves → Save folder (Windows, macOS, Linux) puts your save in a folder you choose, for example in OneDrive, Dropbox, iCloud Drive or Google Drive, so it stays the same on all your computers. The save only replaces the real one once it is fully on disk, a lock warns when the folder is in use on another computer, and cloud conflict copies are offered at the next start. Nothing is replaced or removed without a backup first and without your answer. See the README section "Optional: keep your save in a cloud folder".
  • Change Link's name mid-game, up to 16 characters (#343, for #328, thanks @itsarahtonin; #428, idea from the GreenNaugahyde Android fork, thanks @GreenNaugahyde). The settings page in the pause menu (Game tab) and the Settings window's Saves tab can rename Link on the save file being played; the new name shows right away and is kept with your next save. Names can now have up to 16 characters: the game's texts use the whole name, the file select shows the first 8. The whole name travels with the save (backups, exports, randomizer saves). % and characters the game's font can't show are refused.
  • Quick doors: new "Walk through" mode (#426, from the GreenNaugahyde Android fork, thanks @GreenNaugahyde). Quick doors is now Off, Faster or Walk through. With Walk through, dungeon shutters and house doors open as Link walks up, he walks through without the door scene and the door shuts behind him. Locked doors, boss doors and doors with bars keep their scene, sped up as with Faster. Walk-through doors open with A makes them wait for A. The game code is rebuilt once after the update.
  • Instant text and No pauses in texts (#411, ideas and code from the GreenNaugahyde Android fork, thanks @GreenNaugahyde). Two new switches under Settings › Game, both off by default: message boxes show their whole text at once (each box still waits for A), and the short waits written into some texts are left out.
  • Deku Leaf: wave to rise (#412, ideas and code from the GreenNaugahyde Android fork, thanks @GreenNaugahyde). A new built-in option next to Jump anywhere, off by default: while gliding, each wave of the Deku Leaf lifts Link a little, and holding the button keeps waving. The height of one wave is 50–200 %; the glide still uses magic.
  • GameCube controllers and button prompts (#301, thanks @MattPlays02 for the idea; #374, for #355; #392, for #356, thanks @itsarahtonin for the report). Choose GameCube in Controls, or let Automatic pick it for a GameCube pad: A acts, B is the sword, X, Y and Z use the item slots, L targets and R shields (from a quarter of their travel or at the click), the C-stick turns the camera and a tap of Start opens the menus. A recognized GameCube controller gets this layout right away. GameCube button prompts show the GameCube's own buttons in the HUD, item menu and dialogue: the big green A, the red B, the kidney-shaped X and Y, the purple Z and the shoulder plates. Each controller can keep its own layout, and Restore previous controller bindings brings back the old buttons. Details in docs/gamecube-controller.md.
  • Keyboard and mouse button prompts (#364, for #265, thanks @Eggtooth for the idea). Choose Keyboard / mouse under Controls › Button prompts and the game's prompts show the key or mouse button you bound (for example Tab, M1, LShift, Wh+), drawn in the game's own font. The camera mods (mouse camera, direct camera, first person) moved from Mods › Built-in to Controls, with their settings unchanged.
  • Aim the boat cannon with the mouse (#360, for #332, thanks @AnythingVocaloid for the idea). With Mouse camera on and the pointer captured, moving the mouse aims the cannon on the King of Red Lions.
  • Targeting letterbox: On / Off with enemies / Always off (#395, for #114, thanks @andreasbertram5-alt for the request). The bars that appear while holding target can be kept, hidden only when an enemy is targeted, or hidden always (also for free targeting). Cutscene, event and minigame bars stay.
  • A 4:3 aspect-ratio preset (#359). Settings › Graphics (and the macOS Graphics menu) offer 4:3 next to the widescreen presets. WWHD_ASPECT=4:3 selects it too.
  • Story-item cheats (#362, for #289). Mods › More › Cheats › Story items can grant Nayru's, Din's or Farore's Pearl, or the fully powered Master Sword. The first use each session asks for confirmation, because it can change the story's order, and a backup of your save is made first.
  • HDR: metadata, darker shadows and a choice of format (#337, thanks @mkopec, and @findel77 for testing; #333, thanks @findel77). With HDR on, the game tells the display its brightness range, so HDR TVs and monitors tone-map it correctly (Auto Peak, on by default, reads the display's peak). The picture is turned into HDR with a gamma 2.2 curve, so shadows no longer look washed out; SDR curve in HDR offers Gamma 2.2 (default), Gamma 2.4 or sRGB (the previous look). HDR format picks Auto, scRGB or HDR10 (PQ). See docs/hdr.md.
  • Settings plays the game's menu sounds. Moving, choosing, switching tabs and opening or closing Settings play the game's own menu sounds. Settings → Audio → Menu sounds (on by default). Idea from GreenNaugahyde's Android fork, thanks @GreenNaugahyde.
  • GamePad screen: bars filled with the menu background (#397). Where the GamePad picture doesn't fill the screen (the Thor's second screen, phones in GamePad-only mode, the GamePad window), the bars around it show the menu's own background instead of black. On by default; Settings → Display → Fill GamePad bars with background.

Improved

  • 60 fps frame interpolation plays exactly like 30 fps (#436). Before, some characters behaved differently at 60 or 120 fps and random events drifted from what the game does at 30 fps (on Outset the grass cutter stopped cutting, and from then on enemy behaviour and drops differed). The picture still gets its in-between frames; the game logic behind them is now the same as at 30 fps.
  • True 60 is retired (#407). The experimental "True 60" frame rate (Link and the camera at 60 game steps a second) was broken in many places and is gone; key 7 does nothing now. If you had True 60 selected, the game starts with 60 fps frame interpolation instead. Nothing to do on your side.
  • Touch controls: Link in the button pictures, a boat item ring and more taps (#427, ideas and code from the GreenNaugahyde Android fork, thanks @GreenNaugahyde). Action buttons show a small picture of Link in that action's pose (jump, sword, crouch, roll, lift, talk, defend, grab, throw, the rope, Cruise and more) with the game's word under him, drawn from your own game files (Settings → Display → Touch controls → Link in the button pictures, on by default). On the boat, the item ring only shows items you can use there. Letters, stone tablets and signs move on with a tap, and after a game over you can tap Continue or Quit. The Classic style always shows every button. Not yet checked on a phone; reports welcome.
  • Settings dialogs with a controller (#413, ideas and code from the GreenNaugahyde Android fork, thanks @GreenNaugahyde). Dialogs open with their default button selected (Cancel where the action can't be undone), the selection shows again when the controller takes over from the mouse, the right stick scrolls long dialog text, and a button still held while the menu opens presses nothing.

Files: WindWakerHD-v0.5.1-windows-x86_64.zip (41.2 MB), WindWakerHD-v0.5.1-windows-arm64.zip (39.6 MB), WindWakerHD-v0.5.1-macos-arm64.zip (26.7 MB), WindWakerHD-v0.5.1-linux-x86_64.AppImage (125.0 MB), WindWakerHD-v0.5.1-linux-x86_64.zip (145.8 MB), WindWakerHD-v0.5.1-linux-aarch64.AppImage (126.3 MB), WindWakerHD-v0.5.1-linux-aarch64.zip (148.8 MB), WindWakerHD-v0.5.1-android-arm64.apk (155.5 MB), WindWakerHD-v0.5.1-android-x86_64.apk (158.6 MB), SHA256SUMS.txt (935 bytes), vt-report.json (7 KB). Full notes on GitHub

v0.5.0 v0.5.0: far fewer stutters, smoother play and settings in the pause menuOctober 29, 2026, 14:51 UTC

No release notes.

Files: WindWakerHD-v0.5.0-windows-x86_64.zip (36.7 MB), WindWakerHD-v0.5.0-windows-arm64.zip (35.3 MB), WindWakerHD-v0.5.0-macos-arm64.zip (23.3 MB), WindWakerHD-v0.5.0-linux-x86_64.AppImage (104.9 MB), WindWakerHD-v0.5.0-linux-x86_64.zip (121.8 MB), WindWakerHD-v0.5.0-linux-aarch64.AppImage (106.2 MB), WindWakerHD-v0.5.0-linux-aarch64.zip (124.7 MB), WindWakerHD-v0.5.0-android-arm64.apk (154.3 MB), WindWakerHD-v0.5.0-android-x86_64.apk (157.4 MB), SHA256SUMS.txt (935 bytes), vt-report.json (7 KB). Full notes on GitHub

v0.4.0 v0.4.0: the world editor and a big Android updateOctober 21, 2026, 16:35 UTC

This update brings the world editor, a preview for mod makers, a much better Android version for phones and handhelds, more speed on every platform, and many fixes. The full list of changes is below.

Thanks

Contributions in this update:

  • @pancreations: Vulkan stereo (3D) improvements (#257) and Android setup tests (#260)
  • @almost-drowned-rat: on Android, Full screen hides the system bars (#225), the app's files folder in the system file manager (#226), and Back opens and closes Settings (#227)
  • @mhbxyz: one-press combat items and animation speed presets (#196), camera-directed Leaf gusts and initial item facing (#203)
  • @rhemfur: a game-icon shortcut on Meta Quest (#249)
  • The GreenNaugahyde Android fork, where many of this update's Android and graphics ideas come from (dynamic resolution, less GPU work on Vulkan, fewer shader variants on Metal, shadows without depth clamp, and more)

And thanks to everyone who reported issues and tested the development builds.

World editor (preview, for mod makers)

Start the game with --editor to build mods inside the running game:

  • Place and change things live: the game's own villagers, enemies (from ChuChus and Bokoblins to Darknuts, Wizzrobe summoners and Kargaroc riders), chests, pots, switches, doors and your own models. Drag them, turn them, set routes for villagers, and see the change at once.
  • Quests without code: a visual quest editor, quest talks for the game's villagers, letters, treasure charts and items, and story changes while the game runs.
  • Scenes: a scene editor that plays cutscenes with the game's own cutscene system.
  • Islands and levels: island grounds and parts, island buildings, eighteen more islands to place, a water tool for ponds, rivers and waterfalls, and new levels and dungeons of your own (with a dungeon map).
  • New mod… starts a mod in a few clicks. Export the game's islands for Blender as a reference.
  • Works with Claude and other AI assistants through MCP (off by default).

Android

  • A big update for phones and handhelds: two-screen handhelds (AYN Thor and similar), a heat guard for handhelds with a fan, even frame pacing at 60 fps, code mods, "Share log", and fixes for PowerVR phones (e.g. Pixel 10).
  • Dynamic resolution (off by default): lowers the resolution in small steps when the graphics chip can't keep up, without stutter.
  • Less GPU work, and shadows on GPUs without depth clamp (older Mali and PowerVR phones).

Faster on every platform

Files: WindWakerHD-v0.4.0-windows-x86_64.zip (41.8 MB), WindWakerHD-v0.4.0-windows-arm64.zip (40.4 MB), WindWakerHD-v0.4.0-macos-arm64.zip (28.4 MB), WindWakerHD-v0.4.0-linux-x86_64.AppImage (102.4 MB), WindWakerHD-v0.4.0-linux-x86_64.zip (117.8 MB), WindWakerHD-v0.4.0-linux-aarch64.AppImage (103.6 MB), WindWakerHD-v0.4.0-linux-aarch64.zip (120.5 MB), WindWakerHD-v0.4.0-android-arm64.apk (158.6 MB), WindWakerHD-v0.4.0-android-x86_64.apk (161.7 MB), SHA256SUMS.txt (935 bytes), vt-report.json (7 KB). Full notes on GitHub

v0.3.0 v0.3.0: story quests and Mod SDK v2October 15, 2026, 08:38 UTC

v0.3.0: story quests and Mod SDK v2

New adventures on the Great Sea, made by the community. v0.3.0 brings a story system for quest mods, in the game's own style:

  • The Story Notebook: a quest journal in the Delivery Bag. It lists your quests and shows each step, where to go and the reward. Every quest page has a mini sea chart, and you can mark a quest's goal on your sea chart.
  • Letters at the Rito postboxes: quest mods send Link letters. Some bring a quest, some bring an item or a treasure chart.
  • New treasure charts that work like the game's own: open the chart, sail to the light ring, use the crane, and get the chest.
  • First quests in the mod catalogue: *Call of the Sky* (experimental) and *The Old map*. You install them in the game: Settings → Mods → Community. Setup installs the Story Notebook for you (it needs the internet once).

For mod makers: Mod SDK v2. Write quests with letters, characters, steps and rewards; add your own items, with icons in the bag, extra Delivery Bag pages and X/Y/R use; add treasure charts. Quests, letters, items and charts are declared in the mod's manifest; code is only needed for custom behaviour. Start with the Mod SDK guide and its worked examples.

Story quests are code mods, so they run on macOS, Windows and Linux for now. Android doesn't run code mods yet.

Also in this release:

  • Graphics: a fallback for older drivers on Windows and Linux (Intel, older AMD), and one for PowerVR GPUs on Android.
  • Android: a "Share log" button and system game modes.
  • An optional extended enemy lock-on and a moon-jump cheat.
  • Fixes for save states, the controller choice, ropes with frame interpolation and Wayland desktop scaling.
  • Xbox and PlayStation button prompts with the Nintendo button layout.

The full list is below.

All changes

  • Controls: Xbox and PlayStation button prompts also with "By position" (issue #209, thanks @jamescastells): with the Nintendo button layout on an Xbox or PlayStation controller, the game's button icons now show the button that is physically in that place (for example the roll as a red B and the sword as a green A on an Xbox pad). Custom face-button mappings show the buttons they are bound to. The settings' help texts now explain the two options more clearly. "By label" and "Original" look as before.
  • Vulkan: a fallback for GPUs without 3-part vertex formats (issue #207, Pixel 10 Pro with a PowerVR GPU): some GPUs can't read three-component vertex data directly, which showed as "exploded" shapes and a black screen. The game now checks this at start and reads such data in two parts on those GPUs. Every other GPU keeps exactly the same shaders and caches as before.
  • Fixed: loading a save state switched the controller back to the one the state was made with (for example a GamePad state loaded while playing with a Pro Controller). Save states now keep your current controller, and the game follows it right away, without any menus: after loading a full state, or after switching the controller in the Input menu during play, Link moves with the controller you use and the button prompts match.
  • Fixed: after loading a save state, story mod pages fell back to their plain look (for example the Story Notebook's page). Their layouts are now built again right after the load.
  • Fixed: a story mod's treasure chart showed its X outside the map. The chart view shows a small window of the sea square; a mod chart now uses the window that contains its treasure spot, so the X sits on the map at the spot, on the TV and the GamePad.
  • Linux: sharp picture with desktop scaling on Wayland (issue #201, thanks @findel77): the game window now uses the screen's real pixel size, so with display scaling (for example 4K at 250%) the picture and the settings overlay are no longer rendered small and stretched. On older versions, SDL_VIDEO_WAYLAND_SCALE_TO_DISPLAY=1 works around it.

Files: WindWakerHD-v0.3.0-windows-x86_64.zip (32.3 MB), WindWakerHD-v0.3.0-windows-arm64.zip (31.1 MB), WindWakerHD-v0.3.0-macos-arm64.zip (19.3 MB), WindWakerHD-v0.3.0-linux-x86_64.AppImage (54.2 MB), WindWakerHD-v0.3.0-linux-x86_64.zip (61.7 MB), WindWakerHD-v0.3.0-linux-aarch64.AppImage (54.4 MB), WindWakerHD-v0.3.0-linux-aarch64.zip (62.4 MB), WindWakerHD-v0.3.0-android-arm64.apk (148.6 MB), WindWakerHD-v0.3.0-android-x86_64.apk (151.6 MB), SHA256SUMS.txt (935 bytes), vt-report.json (7 KB). Full notes on GitHub

v0.2.14 v0.2.14October 14, 2026, 14:16 UTC

What's new

  • The controller selection after the title screen is skipped (issue #189, thanks @floysh): the game no longer asks whether you play with the Wii U GamePad or a Pro Controller, because the port already knows it from Controls. It picks the matching option through the game's own selection, so everything that depends on it stays the same. To choose by hand again, turn off Controls > Skip controller selection.
  • GamePad screen "Automatic": follows the game's menus (from a play test): in the automatic GamePad screen mode, the GamePad picture now appears in the corner of the TV whenever the game opens something on the GamePad (items, maps, the collection, the Delivery Bag, save and options, song and warp lists) and goes away shortly after it closes. Before, it guessed from how much the GamePad picture changed and often missed the pause menu. Cmd+G still keeps it up, and Off-TV Play shows the GamePad picture full size as before. The other GamePad screen modes are unchanged.
  • PlayStation and Xbox button looks in the action hint near Link (issue #188, thanks @floysh): the floating hint that appears next to Link (for example "Speak" in front of a character) still showed the A button with PlayStation or Xbox button labels. It now uses the same shapes and colours as the button cluster in the corner. With the original look nothing changes.
  • Experimental stereo 3D, HDR output and a gameplay FOV setting (PR #168, thanks @pancreations): the Graphics tab gains Stereoscopic 3D (Vulkan only: Half SBS, Full SBS and top-and-bottom, with depth, convergence and eye swap; each eye renders its own view; 30 fps recommended for now), HDR output (Windows with Vulkan, when Windows HDR is on; falls back to SDR with a note if the display can't do it) and Gameplay FOV (75% to 250%; cutscenes, dialogue and menus keep their original view). All three are off / 100% by default, and the game looks and runs exactly as before until you turn them on. Settings are kept between launches, on macOS too.
  • Ports can bring their own renderer (PR #187, issue #185, thanks @Pulpparty): a platform port (for example a Switch build with deko3d) can now register its own renderer at start-up (gfx/renderer_ext.h) without editing the renderer or GX2 code. Nothing changes for Metal and Vulkan: the renderer choice, menus, shader caches and performance stay as they were.
  • Mouse buttons and the wheel can be bound in Controls (issue #165, thanks @PNOAGAMER): left, right, middle, side buttons 4/5 and wheel up/down are now bindable like keys, so the game can be played fully with mouse and keyboard together with the mouse camera (Mods > Built-in). Bound mouse buttons drive the game while the mouse camera has captured the pointer in the TV window; the settings menu, GamePad-window touch and text prompts keep the mouse as before, and "first person on the mouse wheel" keeps priority over wheel bindings. Nothing is bound by default.
  • Android setup: keys.txt and safer key handling: the same keys.txt support as on desktop (choose Cemu's keys.txt once, setup finds both keys). Key files are now only read when needed and no longer copied into the app; if a key file was moved or its access was lost, setup asks you to choose it again instead of failing. Setups started with an older version keep working.
  • Less memory per shader translation (PR #184, thanks @Pulpparty): the shader translator reserves 1 MB of text per shader instead of 12 MB and grows only if needed (the largest game shader is far smaller), which helps devices with little memory. One of its text functions also no longer cuts long text short.
  • Building from a folder with spaces in its path (PR #183, thanks @Pulpparty): the shader translator and two tests no longer fail to compile when the checkout path contains a space (for example a Windows user name like C:/Users/Jane Doe).
  • macOS: Nintendo controllers have the right buttons (issue #181, thanks @Nickinfinity): with a Switch Pro Controller, Joy-Cons or an SNES-style pad, By position (Nintendo) had A/B and X/Y swapped, because macOS reports these pads by their printed letters. They now drive the right buttons and show Nintendo icons; a single sideways Joy-Con is handled too. If you swapped A/B and X/Y by hand as a workaround, choose Input > Face buttons > By position (Nintendo) or Automatic once after updating; your saved bindings are otherwise kept.
  • Steam Deck Gaming Mode: the settings menu stays open (issue #112, thanks @chaberl-art): with the TV and GamePad screens in two windows, the menu could close again right after opening. F1 now toggles once per press (a release is needed before it toggles again), keys and the save-state hotkeys (Shift+F1..F5 save, F2..F5 load) work from either game window, and switching focus between them clears held keys without closing the menu. The log now says why the menu opened or closed ([overlay] closed (F1 key, window TV, ...)). In Gaming Mode the menu, the save-state messages and touch now follow the window that has focus, so they also show when the GamePad window is the one on screen (before, the menu could open there invisibly and hold Link in place).
  • Settings overlay: extension points for other platforms (PR #175, thanks @Pulpparty): ports such as the community Switch port can add their own settings tabs, hide built-in ones, plug in a system keyboard, controller shortcuts and on-screen layers, without changing the overlay's code. Nothing changes on our platforms.
  • The aiming reticle no longer doubles at 60+ fps (issue #163, thanks @Julancho): with the boomerang, grappling hook and hookshot, the red aiming dot (and the boomerang's target markers) stayed at the game's 30 Hz position while the camera moved smoothly between frames, so it jumped back and forth during camera turns. It now moves with the camera; 30 fps is unchanged. WWHD_RETICLE_FIX=0 turns the fix off.
  • No crash when memory for a shader's source runs out (PR #171, thanks @Pulpparty): the shader translator's text buffer now handles failed allocations (the shader just fails to compile and is retried) instead of writing through a null pointer. Mostly matters on devices with little memory.
  • Android: setup works again on the development build. Since the decomp version arrived in setup, the app's setup stopped right away ("No module named 'decomp_setup'"); the missing file is now packed with it. Also clearer game-icon hints: "already on the home screen" for the plain icon too, and wording that fits every launcher (PR #170, thanks @rhemfur).
  • Android setup polish (from the tester report on PR #98, thanks @rhemfur): the "Rebuild shader cache" hint names the right button on each platform (on Android: *Start / resume / retry setup*); tooltips no longer stay on touch screens; setup's own step reads "Reading shaders from your game files" so it doesn't look skippable, and its notification brings setup back to the front; after an app update, setup shows "Updating the game for the new version".
  • Fixed: the boat barely turned with "Sailing speed" on (issue #169). The game turns the boat more slowly the faster it sails, so the boosted speed hit its minimum turn rate. The rudder now responds like at normal speed for both sails, while the boat keeps its boosted speed; automatic wind and the jump height are unchanged.
  • Game code built with -fwrapv (PR #172, thanks @Pulpparty): PowerPC integer arithmetic wraps around, and the compiler now guarantees the same for the recompiled game code, the decomp version and the verify tools, instead of relying on the code never overflowing. No visible change.
  • Fixed: "Invert camera up/down" also inverted the Wind Waker baton (issue #167). The setting now applies only to the camera, including first-person views and item aiming (bow, hookshot, telescope, Picto Box) and the mouse camera (which now follows it too); the baton and other right-stick controls keep their normal direction.
  • Fixed: stutter at 240 fps and a slow start with "Keep game speed" (issue #164). Since v0.2.13 the game's 30 logic steps drifted against the display (59.94 Hz), so every few seconds the in-between frames bunched up and the picture hitched; the steps now follow the display's refresh. A hitch right after starting could also keep all in-between frames off (30 fps) until the frame rate was changed; that measurement is now retried. Slower PCs keep v0.2.13's smoother pacing (#125).
  • Mods tab: Built-in and Community. The Mods list is split into *Built-in* (the options that come with the game, such as the camera and speed options) and *Community* (mods from the mod catalogue, installed or ready to download, plus imported packages and graphics packs); *More* is unchanged. Mods now use the game ID wwhd for both regions; older manifests with wwhd-usa keep working.

Files: WindWakerHD-v0.2.14-windows-x86_64.zip (31.5 MB), WindWakerHD-v0.2.14-windows-arm64.zip (30.3 MB), WindWakerHD-v0.2.14-macos-arm64.zip (18.6 MB), WindWakerHD-v0.2.14-linux-x86_64.AppImage (50.0 MB), WindWakerHD-v0.2.14-linux-x86_64.zip (56.9 MB), WindWakerHD-v0.2.14-linux-aarch64.AppImage (50.1 MB), WindWakerHD-v0.2.14-linux-aarch64.zip (57.5 MB), WindWakerHD-v0.2.14-android-arm64.apk (147.4 MB), WindWakerHD-v0.2.14-android-x86_64.apk (150.4 MB), SHA256SUMS.txt (944 bytes), vt-report.json (7 KB). Full notes on GitHub

appimage-runtime-8f39b89 AppImage runtime 8f39b89 (build input, not a game release)October 12, 2026, 11:54 UTC

Pinned build input for our Linux AppImages: the AppImage type2-runtime from https://github.com/AppImage/type2-runtime/commit/8f39b89 (continuous build of 2026-09-28), the exact runtime v0.2.13 shipped. MIT licensed (see type2-runtime-LICENSE.txt); it statically links libfuse (LGPL-2.1), squashfuse (BSD-2), zstd, zlib and mimalloc; source: https://github.com/AppImage/type2-runtime/tree/8f39b89. Not a game release — downloads for players are on the other releases.

SHA-256:

  • runtime-x86_64: 156f4bdbde9c52d01814600013e0a273f0118dc2de98975f3c8c63427ec79074
  • runtime-aarch64: b4ff0030242d0c3bb12ce40541828303cf167493f4793456f0436edd6255c39d

Files: runtime-aarch64 (936 KB), runtime-x86_64 (945 KB), type2-runtime-LICENSE.txt (2 KB). Full notes on GitHub

v0.2.13 v0.2.13October 11, 2026, 22:34 UTC

What's new

  • Linux AppImage: a portable mode (issue #55, idea by @missionfloyd). Create a folder named like the AppImage plus .data next to it (e.g. WindWakerHD-…-linux-x86_64.AppImage.data), and the AppImage keeps the game, its code, saves, settings and caches there instead of in ~/.local/share, ~/.config and ~/.cache. Without that folder nothing changes.
  • Profiling on Windows on ARM64: a sampling profiler for the frame threads (PR #147, thanks @rhemfur). Off unless WWHD_SAMPLE_THREADS=<file prefix> is set; tools/bench/thread_profile.py turns the samples into a report by module and function, including time inside the Vulkan driver, without administrator rights. See docs/performance.md.
  • Android: a friendlier setup screen, and the app icon starts the game (PRs #128 and #129, thanks @rhemfur). Setup now guides you step by step in English, Portuguese or Spanish ("Choose your game", "Preparing the game for your phone… 20 of 80 · about 3 min left", "Your game is ready"). Once a game is set up, the app icon starts it directly ("Game setup" stays available by long-pressing the icon), and the phone offers a home-screen game icon with the game's own picture, made from your game files.
  • Fixed: crash with Quick doors when leaving a room with spores (issue #145), for example at the first door in the Forbidden Woods. Quick doors ran the spores' fade-out faster than the game draws, so their effect was removed while still queued for drawing. Doors now wait for the weather effect to finish fading (rain, stars, spores, fog and waves) and stay fast otherwise.
  • Windows, Intel UHD graphics: a workaround for a crash in Intel's Vulkan driver a few seconds after start (issue #144). On Intel GPUs every render-target view now states its purpose explicitly; WWHD_VK_ATTACHMENT_VIEW_USAGE=0 turns it off, and WWHD_VK_TRACE_PASSES=1 logs each render pass once for crash reports.
  • Fixed: shadows switching between sharp and blurry at high internal resolutions (issue #135). Above 1x, the sun-shadow pass rebuilt surface normals from rays one console pixel apart but depths one screen pixel apart, so depending on the camera angle shadows smeared and Link could get a dark outline. The pass now uses matching spacing, so shadows at 2x, 3x or 4K look like at 1x, only sharper.
  • Fixed: Android GPU crashes ("device lost") on some Adreno phones (issue #104). The precise GPU barriers that v0.2.12 turned on for Android caused occasional crashes with Mesa Turnip on an Adreno 650 and gave no measurable speed-up, so they are off by default again on every platform (WWHD_VK_NARROW_BARRIERS=1 still turns them on). Thanks to @rhemfur for the measurements.
  • Fixed: setup stopped with "the recompiler wrote no code" (issue #136) when the install folder's path contains square brackets, for example ...\LoZ - The Wind Waker [WiiU]\data. Setup and the recompiler treated the brackets as a search pattern and then found none of their own files.
  • Android setup: "Continue anyway" when it waits for the phone to cool down (issue #142). The pause now shows the battery temperature and Android's thermal status, waits only at 45 °C battery temperature (42 °C if Android also reports the phone as warm) or when Android reports it as hot, and a Continue anyway button (also on the low-battery pause) lets you go on for this run. Only Android's critical heat level still stops setup.
  • Mods: experimental mods and save backups. Mods marked *Experimental* (untested, may break the game or a save made while they are active; Call of the Sky is one) are hidden unless you turn on Show experimental mods in the Mods tab. Turning one on asks first and backs up your saves before it is enabled. Mods → Save backups lists the backups (the newest 10 automatic ones are kept; *Back up now* backups are never removed), can restore one at the next start, before the game loads any save (your current saves are backed up first, so a restore can be undone), or delete one.
  • Setup: "Preparing shaders" is much faster and shows real progress. The release now includes the native decoder for the game's compressed archives (before, setup unpacked them in slow Python) and scans them on several cores: about 10 seconds instead of about 4 minutes on an Apple Silicon Mac, with an identical result. The bar now fills as it works ("400 of 818 game archives", then the shaders and pipelines compiled), and Vulkan compiles pipelines on several threads. On Android the app now ships the same native decoder, so preparation on the phone is much faster as well.

shaders and pipelines compiled), and Vulkan compiles pipelines on several threads.

On a Mac, setup now prepares both Metal and Vulkan, so either renderer starts without first-time shader stutter.

  • Controls: in-game button prompts follow your controller (PR #110, thanks @mhbxyz). With Face buttons set to *by label* (or *Automatic* on an Xbox-style pad), dialog icons and HUD buttons use green A, red B, blue X and yellow Y, the HUD button cluster uses the Xbox positions, and shoulder prompts read R1/R2 and L1/L2 in the game's own lettering. *By position* keeps the original look.
  • Controls: a "Stick range" setting per stick (issue #40). For a worn stick that can't reach full deflection: raise its range (100–150 %, default 100 %) in Settings → Controls or the macOS Controls window until the input reaches full tilt, for example the Wind Waker baton's directions. It's applied after the dead zone and keeps the stick's direction.
  • Mods: a "Restart required" popup. Changes that only take effect after a restart (turning packages, graphics packs or code mods on or off, their settings, profiles, a finished one-click setup, a code-mod rebuild) now show a popup with Restart now and Later, and the Mods tab keeps a "Restart to apply" line until you restart.
  • Fixed: one-click mod setup stopped with "Package changed; refresh it and confirm its code again" after a preparation step, e.g. for the GameCube sea minimap. The mod's Python tool left cache files in the package, which made the package look changed. Setup tools now run without writing them. If you already hit this, refresh the mod in the catalogue (or delete its tools/__pycache__ folder) and press Try again.
  • Vulkan: choose your graphics card in Settings → Graphics (issue #135), e.g. on laptops with an Intel and an NVIDIA GPU. The choice is remembered and applies after a restart; if the chosen card is no longer available, the game picks a usable one and says so. WWHD_VK_DEVICE (an index or part of the name) overrides it for one start.
  • Fixed: the 60, 120 and 240 fps settings dropped to about 30–50 fps on PCs that can't quite draw 60 frames a second (issue #125). A frame that misses its display refresh is now shown as soon as it's ready instead of waiting a whole extra refresh, so you get close to what Uncapped shows (e.g. 56 instead of 30 fps). Frames that are on time are paced exactly as before.
  • Fixed: the Picto Box picture stayed blurry (issue #134). The left stick zooms the Picto Box, and the game blurs the picture while zooming, so even a slightly drifting stick kept it blurry. Controller sticks now have a 15 % dead zone by default (Settings → Controls; a saved 0 from older versions becomes 15 %, an explicitly chosen 0 stays). On Metal, the photo's subject outline could also miss pixels the first time; that's fixed too.
  • Less stutter on first play: setup now prepares the shaders. After building the game, setup runs Preparing shaders: from your own game files and a small, code-free list of the game's GPU states that comes with the release, it compiles the shaders and pipelines before you play (about 15–20 s on a recent Mac). In our tests the cold first-play hitches over 50 ms went from 5–10 to 0. You can skip it in setup, and Settings → Graphics → Rebuild shader cache prepares a fresh one. Areas that aren't covered can still stutter once. On Vulkan, shaders and pipelines are also compiled in the background while you play, and the pipelines you used are rebuilt at the title screen on the next start. Your existing caches are kept when you update.

Files: WindWakerHD-v0.2.13-windows-x86_64.zip (25.1 MB), WindWakerHD-v0.2.13-windows-arm64.zip (23.9 MB), WindWakerHD-v0.2.13-macos-arm64.zip (12.3 MB), WindWakerHD-v0.2.13-linux-x86_64.AppImage (40.7 MB), WindWakerHD-v0.2.13-linux-x86_64.zip (47.0 MB), WindWakerHD-v0.2.13-linux-aarch64.AppImage (40.8 MB), WindWakerHD-v0.2.13-linux-aarch64.zip (47.5 MB), WindWakerHD-v0.2.13-android-arm64.apk (141.0 MB), WindWakerHD-v0.2.13-android-x86_64.apk (144.0 MB), SHA256SUMS.txt (944 bytes), vt-report.json (7 KB). Full notes on GitHub

v0.2.12 v0.2.12October 10, 2026, 19:07 UTC

What's new

  • Android: the app is now part of every release and development build. Download WindWakerHD-<version>-android-arm64.apk (x86_64 for emulators and Chromebooks), install it, choose your game, and setup builds the game on the phone. The APK contains no game code. It is signed with the project's key (certificate SHA-256 7F:F6:D3:5E:…:B2:13, full value in the release notes), so later versions install as updates.
  • Mods: one-click setup. Tick a mod (or press Set up), confirm once, and its setup runs by itself: for example the GameCube sea minimap prepares its island maps and builds itself, then turns on. If the game code first needs code-mod support, the game rebuilds and restarts and the setup continues afterwards. If a step fails: Show details and Try again. Changed packages ask for confirmation again.
  • Menu and on-screen keyboard: confirm and cancel like in the game (PR #118, thanks @rhemfur). With the default face-button preset (by position) the right button confirms and the bottom one goes back, as in the game; the on-screen keyboard types with the game's A and deletes with B. "By label" and "Automatic" are followed too.
  • Android player guide in English, Portuguese and Spanish (PR #122, thanks @rhemfur): docs/android.md.
  • Diagnostics for menu input problems (issue #111): WWHD_OVERLAY_TRACE=1 logs what the settings menu receives from the controller and every scroll change; WWHD_OVERLAY_MOUSE_HANDOFF=0 turns the mouse takeover off for such a test. Steps in docs/overlay-controls.md.
  • Mods tab: installed catalogue mods show where their setup stands. Each step reads "Done" or "To do" (for example the GameCube game step is done once you set it), with a Go to setup button that jumps to the mod's setup; "Up to date" replaces the greyed-out Update button.
  • Fixed: the game didn't start with a content mod (for example a translation) in the development builds (issue #109). The mod manager switched the replacement files on twice at startup and stopped with "Content overrides already activated". Content mods and code mods now start together as they should.
  • Bug reports: the log now lists every connected controller (name, vendor and product ID, type), on connect and disconnect. The game combines all controllers Windows/Linux report, so this shows when a second device (e.g. Steam Input's virtual controller) is also sending input.
  • Android: set up the game directly on the phone, no PC needed (PR #98, tested by @rhemfur). Choose your game (an extracted folder, a WUA or a WUD/WUX), and the phone translates and compiles the game code itself (several minutes; up to 4 compiler workers depending on the phone), with a progress display. Setup pauses when the phone gets too warm or the battery is low, and resumes where it stopped. Also new: the GamePad picture on a second screen (foldables, external displays).
  • Mods: one setting for the GameCube version of the game. Settings → Mods → GameCube game for mods: choose your GameCube Wind Waker disc image or folder once (it shows the recognised region), and every mod that needs it uses it. A mod whose copy is missing can't be enabled and offers a button to that setting. Changing the copy marks the affected mods for setup again (prepared files are kept).
  • Android: on-screen controls (PR #88, thanks @rhemfur). Phones without a controller can now play: the 🎮 button under the view button (top left) shows or hides two sticks, the D-pad, A B X Y, L R, ZL ZR and + − (remembered). They act like a controller, so the button mapping and a physical controller keep working; with a controller connected they hide until you touch the screen.
  • Controls: an Automatic face-button preset (PR #102, thanks @mhbxyz). It reads the labels printed on the pad that was plugged in first and follows them, so an Xbox or PlayStation pad plays by label and a Nintendo pad by position, without touching the setting.
  • Mods tab: a "Reset to default" button for the catalogue address. It puts back the official mod catalogue if the address was changed. Download errors now also show the server's status code (for example "HTTP 404"), so a wrong address is easier to tell apart from a connection problem.
  • Setup can now build with code-mod support right away. A new "Build with code-mod support" option (off by default) saves the second rebuild when you want code mods. Updates and repairs keep your choice, and Settings → Mods shows it immediately. Details: docs/setup-code-mods.md.
  • Fixed: the settings menu scrolled back up after the left stick had been used (issue #111). A left stick that rests slightly off-centre kept scrolling the menu, even while you scrolled with the mouse. Now the mouse takes over as soon as you move, click, scroll or drag the scroll bar; the controller takes over again with its next new input. Controls: docs/overlay-controls.md.
  • Fixed: in development builds every catalogue mod showed "Unavailable for this port version". Development builds now carry the last release's version plus the commit (for example v0.2.11-devel.1a2b3c4d), so the catalogue can check compatibility.
  • macOS: the game has its icon again. Setup now gives the installed app the game's own icon, made from your game files (the release can't ship it), and the game shows it in the Dock while it runs. Existing installations get it with the next update or repair.
  • macOS: Vulkan is now included in the release. Pick it in Graphics > Renderer; nothing to install. The Vulkan loader and MoltenVK come with the game and are always the ones it uses (never a Homebrew copy). Metal stays the default, and if Vulkan can't start, the game falls back to Metal and says why. This also makes Cemu graphics packs with GLSL shaders usable on the Mac.
  • 5.1 surround sound (issue #115). Settings → Audio → Speakers: Surround 5.1 (restart after changing it) sends the game's six separate surround channels, as the Wii U does with its Surround TV setting. Test speakers plays a tone on each speaker in turn and names it, so the wiring is easy to check. Stereo stays the default; if the output can't do 5.1, the game stays in stereo and says so. Details: docs/surround-audio.md.
  • Fixed: text fields in the settings overlay didn't accept typing or pasting (for example the catalogue address and the mod search; only deleting worked). Typed text, Ctrl+V / Cmd+V and copy now work on all platforms; on Android the on-screen keyboard opens for these fields.
  • Cemu graphics packs that conflict can no longer both be switched on (issue #68). The Mods tab shows "Conflicts with …" before you enable a pack; enabling it asks whether to switch (the other pack is turned off). Each pack shows what is active now and what changes after a restart, with a Restart now button. Profiles that had two conflicting packs on are repaired once, with a note.

Files: WindWakerHD-v0.2.12-windows-x86_64.zip (22.5 MB), WindWakerHD-v0.2.12-macos-arm64.zip (9.9 MB), WindWakerHD-v0.2.12-linux-x86_64.AppImage (35.1 MB), WindWakerHD-v0.2.12-linux-x86_64.zip (40.8 MB), WindWakerHD-v0.2.12-linux-aarch64.AppImage (35.2 MB), WindWakerHD-v0.2.12-linux-aarch64.zip (41.2 MB), WindWakerHD-v0.2.12-android-arm64.apk (138.4 MB), WindWakerHD-v0.2.12-android-x86_64.apk (141.4 MB), SHA256SUMS.txt (840 bytes), vt-report.json (6 KB). Full notes on GitHub

v0.2.11 v0.2.11October 9, 2026, 14:43 UTC

What's new

  • Linux: one-file AppImage (issue #55, PR #101, thanks @mhbxyz), next to the zip. Download it, make it executable, run it. It keeps the game, its compiled code, saves and settings in your user folders ($XDG_DATA_HOME/wwhd, usually ~/.local/share/wwhd); --data-dir picks another folder. On distributions without libfuse2 (e.g. Ubuntu 24.04+) start it with --appimage-extract-and-run. The zip stays as it is.
  • Face buttons by label (Xbox layout) (issue #78, PR #97, thanks @mhbxyz): settings overlay → Controls → *Face buttons* (also the macOS Controls window and Input menu). *By position (Nintendo)* stays the default; *by label (Xbox)* makes the button named A act as A, so on an Xbox pad A accepts and B goes back.
  • Ultrawide and tall screens: menus fixed (issue #76, building on PR #16 by @arcadematicas): at 21:9, 32:9, 16:10 and 4:3 the pause menu, inventory grid, cursor, map and the tabs stay centred at 16:9 and line up again; backgrounds and the sepia filter still fill the picture.
  • Fixed: black letter card in the Rito mail-sorting game (issues #28, #69, PR #39, thanks @Sean13128): the GPU's "0 × anything = 0" multiply is emulated now (as in Cemu). The shader caches rebuild once after updating, so expect a brief stutter on the first start.
  • Fixed: Cemu graphics packs
  • packs that replace pixel shaders (e.g. Contrasty, NoSSAO, RemoveHUD) partly didn't apply on Vulkan since v0.2.10 (PR #87, thanks @rhemfur);
  • packs for the European version were refused with "Cemu pack does not target WWHD USA" (issue #103). A pack is now accepted when its titleIds name the version you installed; SDCafiine-style folders named after the title ID follow the same rule.
  • Smoother in busy views on Windows and Android: the Vulkan buffer cache is now on by default everywhere. It keeps unchanged vertex, index and uniform data on the GPU instead of copying them every frame: on an RX 6700 XT 13–19% less render-thread time and half the uploads (issue #91, thanks @darklinkpower), on a Galaxy S25 Ultra about 34 → 47 fps in heavy Outset views (issue #56, thanks @rhemfur). If you see broken or flickering geometry, start with WWHD_VK_BUFFER_CACHE=0 and please report it.
  • Less CPU work:
  • native versions of the game's two hottest audio loops (PR #81, thanks @depende3000): the audio thread uses about two thirds less CPU, with bit-identical sound (also on the European version);
  • the scheduler sleeps while nothing is waiting, and GPU context switches copy only the registers that changed;
  • the recompiler no longer emits signed overflow for mulli/mullw/neg (PR #82, thanks @depende3000), a latent bug a newer compiler could have turned into wrong behaviour.
  • Android:
  • when the system driver is too old for the renderer, Adreno phones offer Install GPU driver… right in the error message (PR #92, thanks @rhemfur);
  • on one-screen views the GamePad screen appears automatically while the game is paused (map, menus, save prompt) and the TV picture comes back when you resume (PR #59, thanks @rhemfur);
  • precise Vulkan synchronization (barriers) is on by default, where tile-based GPUs are expected to gain the most (issue #104). On desktop it's opt-in for testing: WWHD_VK_NARROW_BARRIERS=1.
  • Save states remember the controller mode (Pro Controller or GamePad) and restore it on load.
  • "Keep game speed" explained: with it off, the whole game runs in slow motion whenever the frame target isn't reached (e.g. 120/240 fps at 2x). The setting says so now, is marked as recommended, and the performance overlay warns when it happens (issue #91).
  • A log file for every run: captures/wwhd.log in the game's data folder (the previous run's is kept as wwhd-previous.log), with your user paths removed as in crash logs. Please attach it to bug reports. WWHD_LOG_FILE=<path> writes it elsewhere, WWHD_LOG_FILE=0 turns it off.
  • Code mods (Mod SDK v2, off by default): mods written in C for the console's CPU, translated and built on your machine when you install them, for the USA and the European game. Turn them on in Settings → Mods → *Enable code mods* (this rebuilds the game code once; with it off nothing changes). For modders: docs/mod-sdk-v2.md.
  • Smaller fixes: WWHD_SHADOW_FIX is gone, use WWHD_SHADOW_SCALE=1 for console-sized shadow maps (issue #67: since v0.2.9 both sizes look practically the same); the buffer cache's verify mode no longer reads GPU memory (it ran at ~1 fps on some Windows drivers); a crash at exit with SDL 3.4 on Linux is fixed.

Files: WindWakerHD-v0.2.11-windows-x86_64.zip (21.2 MB), WindWakerHD-v0.2.11-macos-arm64.zip (5.4 MB), WindWakerHD-v0.2.11-linux-x86_64.AppImage (32.8 MB), WindWakerHD-v0.2.11-linux-x86_64.zip (38.0 MB), WindWakerHD-v0.2.11-linux-aarch64.AppImage (32.8 MB), WindWakerHD-v0.2.11-linux-aarch64.zip (38.4 MB), SHA256SUMS.txt (631 bytes), vt-report.json (5 KB). Full notes on GitHub

v0.2.10 v0.2.10October 9, 2026, 01:01 UTC

What's new

  • Fixed: the cheats in v0.2.9 wrote to the wrong place in the save data (Give all items, Master Sword + Mirror Shield, 20 hearts / double magic / 5000 rupees) and could damage the save. They write to the right place again.
  • Fixed: Medli missing on Dragon Roost after using the Master Sword cheat (issue #85). The cheat gave the full-power Master Sword as *owned*, which the game treats as story progress, so Medli (and later Makar) stayed away and the story couldn't continue. The cheat now only equips the Master Sword and Mirror Shield until the next reload. Saves already affected can be repaired with tools/savegame/wwsave.py repair-medli (it keeps a backup; see the save tools README).
  • Vulkan: pixel shaders are now linked to their vertex shader when they are translated, so drivers that refused some pipelines get correct shaders from the start (PR #54 by @rhemfur, the proper fix for #30).

Files: WindWakerHD-v0.2.10-windows-x86_64.zip (20.2 MB), WindWakerHD-v0.2.10-macos-arm64.zip (4.4 MB), WindWakerHD-v0.2.10-linux-x86_64.zip (36.1 MB), WindWakerHD-v0.2.10-linux-aarch64.zip (36.5 MB), SHA256SUMS.txt (414 bytes), vt-report.json (4 KB). Full notes on GitHub

v0.2.9 v0.2.9October 8, 2026, 22:10 UTC

What's new

  • Play the European version directly (title 00050000-10143600): setup now also accepts the European game on its own, without the USA version, and builds the port from it through an address map derived from the two executables (every function and call matched; contributed by @ElFDA, PR #77, with ideas from GreenNaugahyde's Android fork). German, Italian, British English, French and Spanish are its own languages then. Hooks, mods and save states work as on the USA version.
  • Bloom, distance haze and the sun's glare are back: the game builds its glow from smaller copies of the picture, which the port never made; now it does, on Metal and Vulkan, so the picture looks like on the Wii U again. The sun's corona and lens flare react to whether the sun is hidden (adapted from GreenNaugahyde's Android fork). New Settings → Graphics → Effects → Bloom strength (0–200%, default 100%). On Macs, colours now go through the display's colour profile, as with Vulkan.
  • Android: phones whose GPU can't read the game's compressed textures (many Mali and PowerVR GPUs) now decode them on the GPU instead of showing black or broken textures; on Snapdragon phones you can install and select custom Vulkan drivers such as Turnip (Settings → Graphics; a driver that crashes or hangs in its first seconds falls back to the system driver on the next start). Both follow the approach of GreenNaugahyde's Android fork, rebuilt on our renderer. Not yet tested on real Mali/PowerVR/Snapdragon devices: reports welcome.
  • Run and swim faster (optional, Mods tab, off by default): hold L3 (or toggle) to boost Link's running and swimming speed, 1.25x to 4x; works with true 60. The idea comes from GreenNaugahyde's Android fork.
  • Average frame rate in the performance overlay (and GPU load and temperatures on Android where readable); crash logs now include the settings in use, with your user paths removed, and Android offers to share the log after a crash.
  • Vulkan: the compressed-texture feature is now enabled as the Vulkan specification requires.
  • Screenshot key: F10 saves the TV picture as a PNG in a screenshots folder next to the save states (~/Library/Application Support/wwhd/screenshots, %APPDATA%\WWHD\screenshots, ~/.config/wwhd/screenshots; data/user/screenshots in a release folder), named WindWakerHD_YYYY-MM-DD_HH-MM-SS.png. It is the frame shown when you press the key (also at 60/120/240 fps), at the internal resolution and aspect ratio (2x at 21:9: 3414x1440), with the game's own effects and FXAA when on, but without the settings overlay or notices; "Screenshot saved" shows briefly. The key can be changed (or a controller button added) in Controls ("Photo"); the Saves tab has Open screenshots folder and an option to also save the GamePad screen (..._GamePad.png) while it is shown. Saving happens in the background: the game does not stutter. Both renderers, all platforms.
  • Frame interpolation fixes (60/120/240 fps and true 60): the waving flags on Dragon Roost no longer turn into huge stretched polygons on the in-between frames (issues #36, #70); the boat's sail and yard and items Link carries (a bomb) no longer jump for single frames (issue #68); the stars in the night sky no longer wobble when the camera turns (issue #68). 30 fps is unchanged.
  • Fixed: the pause menu would not close at 120/240 fps (issues #64, #74; probably also #73, no control after an item-get message). The HD screens (the TV pause screen and others) advanced on every drawn frame instead of once per game step, so the TV pause screen reopened itself right after closing. They now update once per step, which also gives their fades their 30 fps speed back at 60/120/240 fps.

Files: WindWakerHD-v0.2.9-windows-x86_64.zip (20.2 MB), WindWakerHD-v0.2.9-macos-arm64.zip (4.4 MB), WindWakerHD-v0.2.9-linux-x86_64.zip (36.1 MB), WindWakerHD-v0.2.9-linux-aarch64.zip (36.5 MB), SHA256SUMS.txt (410 bytes), vt-report.json (4 KB). Full notes on GitHub

v0.2.8 v0.2.8October 8, 2026, 11:34 UTC

What's new

  • Fixed: the game could freeze at startup with 0 fps on some Macs (issue #62, MacBook Air M1). Newer Apple compilers turned the game's spin-wait loops into endless loops that never saw the other core release the lock. Every loop in the game code now re-reads memory on each pass; no measurable speed cost.
  • Fixed: Android crashed when changing the aspect ratio or internal resolution on some phones (issue #72, Adreno 830). Phones whose driver cannot blit depth buffers now copy them with a small draw instead; nothing aborts any more if a device can do neither. Thanks to @Blivii for the analysis and the patch.
  • Fixed: grid pattern in contact shadows at higher internal resolutions (issue #66). The game's shadow and ambient-occlusion blur now covers the same area as on the console at every resolution; 1x is unchanged and there is no measurable speed cost. Shadow maps still scale with the internal resolution for sharp shadows; WWHD_SHADOW_FIX=1 keeps them at the console's 1024x1024 instead, for soft edges that never shimmer (issue #67).
  • Fan translations as content mods, including Arabic and Hebrew drawn right to left (issue #60), see docs/mod-manager.md and docs/rtl-text.md.
  • macOS: closing the TV window quits the game (issue #65), as on Windows and Linux. During a game it asks first: Quit, Cancel or Save State and Quit. WWHD_QUIT_PROMPT=0 turns the question off.
  • Faster on Linux and Steam Deck (Vulkan): the guest buffer cache is now on by default on desktop Linux, as on macOS. It keeps unchanged vertex, index and uniform data on the GPU instead of copying it every frame, which removed a 20 fps lock in busy views on an RK3588 board (issue #50). If you see broken or flickering geometry, start with WWHD_VK_BUFFER_CACHE=0 and please report it. Windows and Android stay opt-in (WWHD_VK_BUFFER_CACHE=1).
  • Save states are now small and can go into bug reports. The Save state button (and Shift+F1–F5, the Save States menu) now writes a *portable* state, slotN.wwstate: a few KB with your progress (the same save data the game writes into cking.sav) and where Link stands (stage, room, position, facing, time of day). It contains no game code and no game data, so you can attach it to an issue; Copy save for bug report in the Saves tab copies the paths of the state and of your cking.sav. Loading one puts that progress into the running game and takes Link there; it is not an exact snapshot (enemies, a running cutscene and other actors start fresh). The old full states (the whole running game, ~300 MB, contain game data: never share them) are still there for debugging: Saves › *Full save states*, or WWHD_FULL_SAVE_STATES=1. Loading a slot loads either kind; an older full state in a slot is kept and the Saves tab says so. A portable state can only be saved while you control Link (not during a cutscene or dialogue); one saved on the boat puts Link back on the boat. See docs/portable-save-states.md.
  • Fixed: "Quick doors" could crash the game going through a door (issue #61, "PROGRAM HALT J3DPacket.cpp:157"; reported in Tingle's jail on Windfall). The extra game steps that make doors quicker also deleted actors (a pot, a rat, Tingle) faster than the game allows: an actor that removed itself while a door opened was freed before its last drawn frame was done with. Deleting now keeps its normal pace; doors are as quick as before.
  • Gyro aiming fixes (issues #45 and #71): a new Turn left/right by setting (settings overlay → Controls → Gyro…) with the usual gyro conventions: Player space (default: turn the controller left or right about the real vertical, however you hold it), Yaw (its own vertical axis) or Roll (tilt it like a steering wheel). Before, rolling the controller turned the view and turning it depended on how you held it. The default sensitivity is lower (0.5x, about one to one with your controller; the range now goes down to 0.05x), and settings that still have the old default start at the new one. Gyro aiming now also works in Pro Controller mode. For reports that the gyro stops after a while: the port no longer stops when a controller's sensor timestamps stall, switches to the controller you move when several are connected, turns a controller's sensors on again when they fall silent, and logs [gyro] lines that say why motion stopped (including a drifting right stick, which makes the game ignore the gyro). "Recenter" is now Recalibrate (learns the gyro's offset anew).

Files: WindWakerHD-v0.2.8-windows-x86_64.zip (20.0 MB), WindWakerHD-v0.2.8-macos-arm64.zip (4.4 MB), WindWakerHD-v0.2.8-linux-x86_64.zip (35.2 MB), WindWakerHD-v0.2.8-linux-aarch64.zip (35.5 MB), SHA256SUMS.txt (410 bytes), vt-report.json (4 KB). Full notes on GitHub

v0.2.7 v0.2.7October 8, 2026, 00:33 UTC

What's new

  • Fixed: taking a picture with the Picto Box crashed the game (Vulkan) (issue #53). Right after the shot the game renders small 3D colour-grading textures slice by slice, which the Vulkan renderer did not support; on Metal the preview was black. Both renderers now render into 3D textures, and the saved pictures show up in colour in the Picto Box album (they were black on both renderers before).
  • Fixed: black shadows on macOS (Metal) (issue #47). When macOS had to compile the game's shaders from scratch (first start, or after a macOS update cleared its shader cache), the ambient-occlusion pass could be skipped at the title screen while its shader was still compiling; the light buffer was then created with the wrong layout and stayed wrong for the whole session, turning shadowed areas black until a restart. Render targets no longer depend on that timing, and draws whose result the game reuses are never skipped. A cold start now spends about 0.7 s more on the title screen once.
  • Windows setup without PowerShell (issue #58): the setup no longer runs a PowerShell script or removes the "downloaded from the internet" mark, and Wind Waker HD.exe downloads nothing: the official, signed embeddable Python now ships in the release (the Windows zip grows to about 19 MB). The programs carry version information and a manifest. Some antivirus engines (BitDefender and engines using it) may still flag the unsigned exe; that is a false positive and has been reported.
  • 120 and 240 fps (settings overlay → Graphics → Frame rate, or the macOS Graphics menu): frame interpolation now also draws 3 or 7 blended frames between the game's 30 logic steps a second, for 120 Hz and 240 Hz displays. Camera, models, particles, sea and every other blended effect move at even steps between two game steps; input, sound and menus behave as at 30 fps. The game detects the display's refresh rate (ProMotion Macs: 120 Hz; Windows, Linux and Android: the monitor's or phone's current rate, and Android phones are asked for their fast mode) and the overlay shows it ("Your display: 120 Hz"). A rate the display cannot show is capped to it: 240 fps on a 120 Hz display draws 120, and 120 fps on a 60 Hz display draws 60. Keep game speed is on by default at 120/240 fps: when the computer cannot draw every frame, the game still runs at full speed with fewer in-between frames. Measured on an M3 Max with its 120 Hz display (Outset Island): 120 fps draws 115 frames a second on screen with Vulkan and 108 with Metal, at 29.1–29.7 game steps a second; without presenting, 119.3 frames and 29.9 steps. 240 fps is limited by the renderer on that machine (about 146 frames a second when not capped to the display), so on a 120 Hz screen it draws the same as 120 fps.
  • "Uncapped" debug switch (settings overlay → Graphics; not saved): no frame limit and no vsync, to see how many frames a second your computer can draw (window title and performance overlay). The game counts frames, so it runs faster than normal while it is on: not for playing. Metal and Vulkan; WWHD_UNCAPPED=1 turns it on at start.
  • Keep game speed recovers faster after a hitch (all frame rates): one slow frame (a shader compile, a scene load) no longer turns the in-between frames off for several seconds.
  • Android: full-size occlusion depth is off by default (it halved the worst GPU waits on an Adreno 830, issue #56); the settings overlay can still turn it on.
  • Smaller fixes: cheaper reuse checks of upload memory on Macs and integrated GPUs (follow-up to the v0.2.5 fix for issue #44), time limits for the Android CI build, and "mouse as gyro" no longer loses part of a movement when a frame stalls.

Files: WindWakerHD-v0.2.7-windows-x86_64.zip (19.8 MB), WindWakerHD-v0.2.7-macos-arm64.zip (4.2 MB), WindWakerHD-v0.2.7-linux-x86_64.zip (34.4 MB), WindWakerHD-v0.2.7-linux-aarch64.zip (34.7 MB), SHA256SUMS.txt (410 bytes), vt-report.json (4 KB). Full notes on GitHub

v0.2.6 v0.2.6October 7, 2026, 16:04 UTC

What's new

  • Far fewer shader translations and pipelines, fewer stutters in new areas, less memory (Vulkan): the renderer now keys a translated shader only on the state that actually changes its translation (for example, only the textures a shader samples and the vertex inputs and outputs it uses), so the same shader is no longer translated again and again for different render states. Starting from an empty shader cache, Outset Island needed 569 translations and 204 pipelines instead of about 6,100–6,700 and 3,200–3,500, and Windfall 829 and 236 instead of about 4,300–5,000 and 2,300–2,700. That takes about 100–115 MB less memory, cuts the frames that take over 50 ms by about a third, and lowers render-thread CPU time by 4–12%. It supersedes PR #46 by rhemfur, whose idea (keys that translate to the same shader share it and its pipelines) is part of it.
  • Performance reports say which build and system they come from (issue #44): Copy performance report now starts with the version and commit, the operating system and version, the graphics card with its driver and Vulkan version (or the Metal device), and the rendering switches that are not at their defaults (buffer cache, CPU paths turned off, lazy DrawDone / async present turned off, the gyro source). The log's first lines name the version and system too, so crash logs carry them.

Files: WindWakerHD-v0.2.6-windows-x86_64.zip (8.9 MB), WindWakerHD-v0.2.6-macos-arm64.zip (4.2 MB), WindWakerHD-v0.2.6-linux-x86_64.zip (34.3 MB), WindWakerHD-v0.2.6-linux-aarch64.zip (34.6 MB), SHA256SUMS.txt (410 bytes). Full notes on GitHub

v0.2.5 v0.2.5October 7, 2026, 14:41 UTC

What's new

  • Fixed: much lower frame rate on Windows and Linux PCs with a dedicated graphics card (Vulkan) (issue #44). Three renderer shortcuts that v0.2.4 turned on for all platforms compared new vertex and uniform data against the previous copy in the GPU's upload memory; reading that memory back is very slow on AMD and NVIDIA cards (one report went from 30 fps in v0.2.1 to 12 fps). The renderer now keeps those comparison copies in normal memory and never reads GPU upload memory, which also speeds up an older index-data path when the buffer cache is off.
  • Gyro aiming (issue #45; settings overlay → Controls → Gyro…): aim the bow, hookshot, boomerang, telescope, Picto Box and grappling hook in first person by moving your controller, as with the Wii U GamePad. Sources: the gyro of a DualSense, DualShock 4, Switch Pro, Joy-Con or Steam Deck controller, a Cemuhook (DSU) server (DS4Windows, BetterJoy, phone apps; 127.0.0.1:26760 by default), or the mouse (for Steam Input's "gyro to mouse"). Sensitivity, invert and a recenter button are adjustable. Off by default; the game's own Options → Gyro switch still applies. See docs/gyro.md.

Files: WindWakerHD-v0.2.5-windows-x86_64.zip (8.9 MB), WindWakerHD-v0.2.5-macos-arm64.zip (4.2 MB), WindWakerHD-v0.2.5-linux-x86_64.zip (34.1 MB), WindWakerHD-v0.2.5-linux-aarch64.zip (34.4 MB), SHA256SUMS.txt (410 bytes). Full notes on GitHub

v0.2.4 v0.2.4October 7, 2026, 13:15 UTC

What's new

  • Smoother 60 fps on slower PCs (Vulkan): the render thread no longer waits for the GPU after every frame on Windows, Linux and macOS (the way Android already worked), so CPU and GPU work in parallel. Where the render thread is the limit, this is the difference between slow motion and full speed: in our load tests the game went from 35–40 fps with only a third to half of the 60 fps in-between frames drawn to a steady ~59 fps with almost all of them, at full game speed. Without a frame limit it renders 13–53% more frames per second, depending on the scene. (Issues #7, #44)
  • Less CPU work per frame (Vulkan): 15 renderer shortcuts that were Android-only are now on everywhere (8–14% less render-thread time), and on macOS vertex, index and uniform data the game does not change stay on the GPU instead of being copied again for every draw (another 6–17% less render-thread time and 43–64% less data uploaded per frame). Windows, Linux and Android players can try that cache with WWHD_VK_BUFFER_CACHE=1; docs/vulkan.md ("Guest buffer cache") says what to report.
  • Performance report (settings overlay → Graphics → Copy performance report): copies a breakdown of the render thread's time per frame to the clipboard, for bug reports about speed.
  • macOS: setup works when the app is opened straight from the downloaded folder (issue #48). Every setup error now says what failed, what to do, and where the log is.
  • Sound in GamePad-only mode (Off-TV Play, the Minus button): the game's sound now plays through your speakers instead of going silent (issue #49).

Files: WindWakerHD-v0.2.4-windows-x86_64.zip (8.9 MB), WindWakerHD-v0.2.4-macos-arm64.zip (4.1 MB), WindWakerHD-v0.2.4-linux-x86_64.zip (33.8 MB), WindWakerHD-v0.2.4-linux-aarch64.zip (34.1 MB), SHA256SUMS.txt (410 bytes). Full notes on GitHub

v0.2.3 v0.2.3October 6, 2026, 22:13 UTC

What's new

  • Mod manager (settings overlay → Mods): the built-in mods (direct and mouse camera, first-person shortcut, wall climbing, quick doors, fast scenes) in one searchable list, plus installable mod packages from a folder or a .wwhdmod ZIP, with profiles, dependencies and per-mod options. Everything starts off; nothing from a package loads until you enable it.
  • Content mods replace game files without touching your game folder.
  • Cemu graphics packs (rules.txt) can be imported, with their presets and resolution rules; shader packs need the Vulkan renderer. Code patches from Cemu packs are not supported.
  • Native mods (packages with their own compiled code) ask for a one-time confirmation before they are enabled, because they run with the game's full permissions; only enable mods from sources you trust. See docs/mod-manager.md for the package format and the mod SDK.

Files: WindWakerHD-v0.2.3-windows-x86_64.zip (8.8 MB), WindWakerHD-v0.2.3-macos-arm64.zip (4.1 MB), WindWakerHD-v0.2.3-linux-x86_64.zip (33.3 MB), WindWakerHD-v0.2.3-linux-aarch64.zip (33.6 MB), SHA256SUMS.txt (410 bytes). Full notes on GitHub

v0.2.2 v0.2.2October 6, 2026, 19:19 UTC

What's new

  • Controller rumble fixed (issue #35): rumble now follows the game's patterns exactly and always stops: on quit, after a crash, when the game hangs, while the settings menu is open and when the window is in the background. Before, a controller could keep vibrating until it was switched off. New Rumble on/off option in the settings overlay (Controls tab).
  • Older graphics drivers (issue #37): Windows/Linux builds no longer refuse to start with "Entry Point Not Found" on drivers without Vulkan 1.3; they use the VK_KHR_dynamic_rendering extension where the driver offers it, and otherwise show a clear message naming the GPU, its driver version and what is missing.
  • Language tab: only the languages your game contains can be chosen (the USA version has English, French and Spanish), and a changed language says that it applies after a restart.
  • Textures update exactly: textures the game changes in memory are now always re-uploaded (on Metal and Vulkan); before, a change could show up a few frames late.
  • Full screen is remembered on Windows and Linux too (issue #43), as it always was on macOS: leave the game in full screen and it starts in full screen next time.
  • Better crash logs: a crash outside the game code names the library it happened in (for example the graphics driver), and the log lists the Vulkan layers that overlays add, so crash reports can be answered much faster.

Files: WindWakerHD-v0.2.2-windows-x86_64.zip (8.4 MB), WindWakerHD-v0.2.2-macos-arm64.zip (3.8 MB), WindWakerHD-v0.2.2-linux-x86_64.zip (31.0 MB), WindWakerHD-v0.2.2-linux-aarch64.zip (31.3 MB), SHA256SUMS.txt (410 bytes). Full notes on GitHub

v0.2.1 v0.2.1October 6, 2026, 12:50 UTC

What's new

  • Linux on arm64 (aarch64): a separate linux-aarch64 download (Raspberry Pi 5, Asahi Linux, ARM laptops).
  • On-screen text entry (issue #29): the name screen now shows a text window over the game, with an on-screen keyboard for controllers and the mouse; typing on the keyboard goes straight into it.
  • Boot crash fixed: the rare crash right after start ("Prepare Thread", agl shader setup) is gone. GX2CopySurface now completes before it returns, as the game expects; before, a late render thread could write into memory the game had already reused (about every 15th start under load, every start on some phones).
  • GamePad / Pro Controller choice is saved between launches (issue #26).
  • Cheats now also work on saves with heart pieces (PR #25 by Sean13128).
  • Android (rhemfur, PRs #30, #31): pipelines the Adreno driver refuses no longer close the game, the game threads use at least two fast cores, and arm64 builds treat char as signed, as on the console.

Files: WindWakerHD-v0.2.1-windows-x86_64.zip (8.3 MB), WindWakerHD-v0.2.1-macos-arm64.zip (3.7 MB), WindWakerHD-v0.2.1-linux-x86_64.zip (30.7 MB), WindWakerHD-v0.2.1-linux-aarch64.zip (31.1 MB), SHA256SUMS.txt (410 bytes). Full notes on GitHub

v0.2.0 v0.2.0October 6, 2026, 07:09 UTC

What's new

  • Settings overlay (Dear ImGui): an in-game menu for everything in one place — save states and Crash Recovery, graphics (renderer, frame rate, resolution, aspect ratio, AO, filtering, FXAA, performance overlay), display, gameplay mods and cheats (Graphics also has the Vulkan presentation mode), controls and language. Open it with F1 (Fn+F1 on most Mac keyboards), Cmd+, / *Settings…* on macOS, or hold Select / press Home on a controller; it works with mouse, keyboard and controller on every platform and renderer. The Controls tab shows the controller drawing with live feedback of pressed buttons. Shift+F1 still saves state slot 1; slot 1 now loads from the overlay.
  • Performance pass (PR #15 by Sean13128): much less render-thread CPU on Metal (no more stutter while the shader cache warms up), a lighter vsync wait on Vulkan, and a fix for the both-renderer build crashing with Homebrew boost installed.
  • Cheats (Gameplay menu / overlay, PR #15): all items, best sword and shield, 20 hearts, double magic, 5000 rupees, infinite health/magic/ammo, and story cheats (songs, Triforce shards, dungeon items, keys) — use a spare save file for those.
  • Graphics options are remembered between launches (macOS since PR #15; Linux/Windows in settings.ini).
  • Controller rumble (PR #13 by arcadematicas).
  • Linux/Windows: GamePad touch with the mouse in the GamePad window, F11 / Alt+Enter full screen, closing the TV window quits (closing the GamePad window hides it), the name-entry text prompt works again (PR #14 by rhemfur), 1 ms timer resolution on Windows for smoother frame pacing (PR #12 by rhemfur), and a --unwindlib=libgcc build note for clang setups with libunwind.
  • Console language: WWHD_LANGUAGE=<code> (or the overlay's Language tab) picks the game's language from those on the disc.
  • Native Windows LLVM builds (PR #17 by resadent): build with clang and Visual Studio's Windows SDK, without MSYS2 (missing dependencies are built from pinned sources); smoother Vulkan frame pacing on Windows via SDL's high-resolution sleeps.
  • Vulkan presentation mode (overlay → Graphics): *Vsync* (FIFO, default), *Low latency* (MAILBOX, where the driver offers it) or *Off* (IMMEDIATE); switches live and is remembered. WWHD_VK_PRESENT_MODE overrides it.
  • Faster Vulkan on Windows/Linux (PR #18 by resadent): bounded draw batching and a higher game/render thread priority are now on by default, as on macOS.
  • GameCube save converter (tools/savegame): bring your GameCube save file into HD — see Optional: bring your GameCube save to HD.

Files: WindWakerHD-v0.2.0-windows-x86_64.zip (8.1 MB), WindWakerHD-v0.2.0-macos-arm64.zip (3.6 MB), WindWakerHD-v0.2.0-linux-x86_64.zip (29.8 MB), SHA256SUMS.txt (307 bytes). Full notes on GitHub

v0.1.0 v0.1.0October 5, 2026, 22:12 UTC

What's new

  • Settings overlay (Dear ImGui): an in-game menu for everything in one place — save states and Crash Recovery, graphics (renderer, frame rate, resolution, aspect ratio, AO, filtering, FXAA, performance overlay), display, gameplay mods and cheats (Graphics also has the Vulkan presentation mode), controls and language. Open it with F1 (Fn+F1 on most Mac keyboards), Cmd+, / *Settings…* on macOS, or hold Select / press Home on a controller; it works with mouse, keyboard and controller on every platform and renderer. The Controls tab shows the controller drawing with live feedback of pressed buttons. Shift+F1 still saves state slot 1; slot 1 now loads from the overlay.
  • Performance pass (PR #15 by Sean13128): much less render-thread CPU on Metal (no more stutter while the shader cache warms up), a lighter vsync wait on Vulkan, and a fix for the both-renderer build crashing with Homebrew boost installed.
  • Cheats (Gameplay menu / overlay, PR #15): all items, best sword and shield, 20 hearts, double magic, 5000 rupees, infinite health/magic/ammo, and story cheats (songs, Triforce shards, dungeon items, keys) — use a spare save file for those.
  • Graphics options are remembered between launches (macOS since PR #15; Linux/Windows in settings.ini).
  • Controller rumble (PR #13 by arcadematicas).
  • Linux/Windows: GamePad touch with the mouse in the GamePad window, F11 / Alt+Enter full screen, closing the TV window quits (closing the GamePad window hides it), the name-entry text prompt works again (PR #14 by rhemfur), 1 ms timer resolution on Windows for smoother frame pacing (PR #12 by rhemfur), and a --unwindlib=libgcc build note for clang setups with libunwind.
  • Console language: WWHD_LANGUAGE=<code> (or the overlay's Language tab) picks the game's language from those on the disc.
  • Native Windows LLVM builds (PR #17 by resadent): build with clang and Visual Studio's Windows SDK, without MSYS2 (missing dependencies are built from pinned sources); smoother Vulkan frame pacing on Windows via SDL's high-resolution sleeps.
  • Vulkan presentation mode (overlay → Graphics): *Vsync* (FIFO, default), *Low latency* (MAILBOX, where the driver offers it) or *Off* (IMMEDIATE); switches live and is remembered. WWHD_VK_PRESENT_MODE overrides it.
  • Faster Vulkan on Windows/Linux (PR #18 by resadent): bounded draw batching and a higher game/render thread priority are now on by default, as on macOS.
  • GameCube save converter (tools/savegame): bring your GameCube save file into HD — see Optional: bring your GameCube save to HD.

Files: WindWakerHD-v0.1.0-windows-x86_64.zip (8.1 MB), WindWakerHD-v0.1.0-macos-arm64.zip (3.6 MB), WindWakerHD-v0.1.0-linux-x86_64.zip (29.5 MB), SHA256SUMS.txt (307 bytes). Full notes on GitHub

GameCube Wind Waker Recomp

elliotttate/Wind-Waker-Recomp lists 0 releases on GitHub: its README says the releases were unpublished when the project began moving into BlueWake. Its own feature notes mention 0.4.0 (Dragon Roost lava colours and shaped rumble on Windows), 0.3.0 (about 13% faster, interpolation up to 240 fps) and 0.2.0 (save states and wall climbing). New versions appear on BlueWake’s Releases page.

Advertisement

Frequently asked questions

How often does Wind Waker HD Recomp update?

20 stable releases between October 5, 2026 and November 6, 2026: several a day in early October, then roughly weekly (v0.5.1, v0.5.0, v0.4.0, v0.3.0). The development build is rebuilt from the devel branch in between.

What is new in the latest release?

v0.5.1 added a built-in randomizer, GameCube player models, Achievements and Game progress, walk-through doors, instant text, 16-character names, a cloud save folder, GameCube controller prompts and experimental generated 60 fps on Vulkan, and brought Android back to full speed.

Do I need to reinstall for every update?

Releases are portable folders: unzip the new one next to the old, choose your game (the old data/game works in place) and copy your saves and settings. The Linux AppImage and Android app keep their data outside the package, so updating replaces only the app. Shaders may be compiled once more after some updates.