Skip to content

Releases: Nycolazs/WindWakerHD-Android-Plus

v1.8: autosave, Spanish menus, any translation

Choose a tag to compare

@Nycolazs Nycolazs released this 14 Oct 17:44

What's new in v1.8

  • Autosave (Options → Saves → Autosave): an Auto save-state slot, above slot 1, written every 1, 2, 5 or 10 minutes while you play a save file. Off by default. Thanks to @jaimepa17 (#7).
  • The app in Spanish: every menu, dialog and setup screen, following the phone's language or chosen in Game → App language. Thanks to @jaimepa17 (#6).
  • HUD buttons and cheats after a heart piece: the X/Y/R touch buttons and the cheats stopped working once Link's maximum health wasn't a whole number of hearts. Fixed by @jaimepa17 (#8).
  • Any fan translation of the game: Mods → Portuguese (Brazil) translation → Install another translation (any language)… takes a translation's folder (Korean, for example). The built-in Portuguese translation no longer replaces it, and the button icon mod leaves the HUD text alone when the translation's font lacks the characters it needs.
  • Recompiled game code built with wrapping integer arithmetic (as in the original project's #172): a signed overflow in the game behaves as it does on the Wii U instead of being undefined.

After updating, the game code is prepared again once (about 10 minutes). Updates from v1.7 install over the app and keep your saves and settings. If you are coming from v1.6 or older, see the README: back up your saves and uninstall first (v1.6's signing key was lost).

Tested on a Galaxy S20 FE (Adreno 650): Outset, Windfall, Dragon Roost Cavern, Forbidden Woods, Forest Haven, Hyrule and the Forsaken Fortress without crashes, autosave written in 0.5 s.

Plus v1.7 — button icons, the original project's updates, Turnip without restarts, always landscape

Choose a tag to compare

@Nycolazs Nycolazs released this 13 Oct 17:45

⚠️ Updating from v1.6: read this first

v1.6's signing key was lost, so v1.7 is signed with a new, permanent key. Android won't install it over v1.6, and uninstalling deletes the app's data. Do this once:

  1. In v1.6, open ≡ → Saves → Export saves and pick a folder (for example Download). v1.6 also keeps an automatic copy in Download/WindWakerHD Saves.
  2. Uninstall v1.6 and install v1.7.
  3. Set up the game again. When it starts with no save, the app offers to restore one: pick the folder. You can also use ≡ → Saves → Import saves at any time.

From v1.7 on, updates install over the app and keep your saves and settings.


What's new

🔄 Up to date with both projects

  • Enhanced fork 1.3–1.4 and Android port v0.9.1–v0.9.3, merged with everything Plus already had.
  • Frame rates:
    • 120 fps on 120 Hz screens.
    • 60 fps is now paced: frames that don't fit are left out and the game keeps its speed. It replaces the adaptive mode.
    • 60 fps (generated) stays the default.
  • Fewer GPU hangs with Qualcomm's older drivers (v502 on Adreno 640/650, such as the Galaxy S20 FE's own): pipelines are created one at a time there.
  • Less memory:
    • Save states are compressed while they are made: about +0.3 GB while saving, against more than 1.2 GB before.
    • Shaders free their source once compiled: the native heap went from about 2 GB to 0.65 GB after a long session.
  • Moon jump cheat: hold L to fly and steer with the stick. It has rise and flight speeds, an optional no-fall-damage switch and random lift-off poses.
  • Loading screen while the shader cache loads at start.
  • Console-accurate blur as an option (Graphics).
  • Command recording thread setting (Graphics).
  • Fuller crash logs, and a restart of the app is no longer taken for a crash.
  • After a GPU hang, the next start offers another GPU driver or the system's.

🎮 Button icons: Wii U, Xbox or PlayStation

  • Mods → Button icons: choose the symbols of the controller you play with.
  • The touch controls change at once.
  • The game itself changes from the next start:
    • the HUD's button guide (top right);
    • the button icons in its text ("Press A").
  • The game's own font draws the letters.
  • Controller assignment: the symbols follow the buttons you assigned. Positions follow the controller: the Wii U's A (right) is Xbox's B and PlayStation's ○; B (bottom) is A / ✕; X (top) is Y / △; Y (left) is X / □; the shoulders become LB/RB/LT/RT or L1/R1/L2/R2.

🔄 From the original project (ZeldaWWHDRecomp)

  • Frame pacing: a frame that misses its vsync is shown as soon as it is ready instead of a whole vsync later. The 60 fps step follows the display's own refresh.
  • Faster recompiled game code: cheaper float compares (the hottest code of the game), mfcr, and paired-single loads and stores. On a Galaxy S20 FE the game thread takes 7% less time per frame. The device prepares the game code again once after the update (about 10 minutes).
  • Fixes at 60 fps:
    • Minigame timers (letter sorting, auctions, boat race, timed challenges) no longer run twice as fast.
    • Link no longer flickers in conversations.
    • Sails, flags and capes move smoothly.

✨ 60 fps (generated) steadier

  • Link and the title screen's boat no longer shake back and forth between frames.
  • Cause: the generated frame moved everything the camera follows as if it were background.
  • Now what lies around the point the camera looks at keeps its place on the screen.
  • The in-between frame is also cheaper to make: about 1.4 ms less GPU time per frame at 1080p.
  • At 1080p on an Adreno 650 with Turnip the GPU is at its limit: the game alone takes ~20 ms of GPU time per frame, ~27 ms with post-processing, and ~33 ms with the generated frame, so frames come unevenly. On that phone use 720p with Turnip, or the Qualcomm driver at 1080p (~29.5 ms, 60 fps).

🛠️ Turnip drivers fixed on Adreno 6xx

  • No more phone restarts: above 1x resolution, Turnip (Mesa 26.0 to 26.3) restarted the whole Galaxy S20 FE at the first frame. The cause was a fatal bus error in the chip (TZBSP_ERR_FATAL_NOC_ERROR).
    • The app now turns off UBWC compression for Turnip on Adreno 6xx by itself.
    • 1.5x and 2x then run, and 1x is just as fast (18.2 against 19.5 ms of GPU time per frame).
  • A driver that failed can be chosen again: after a crash, choosing the same driver sent the next start straight back to the system driver without trying it. A driver that crashes is now named when the game starts.
  • On Adreno 6xx Turnip keeps its own rendering mode choice; forcing GMEM was slower there.

📱 Always landscape

Some ROMs ignore the game's orientation, and Samsung's game tools turn auto-rotate on when a game starts. With the phone upright, the game then showed in a portrait strip.

  • The app asks once for "Modify system settings".
  • It then keeps the screen in landscape while you play, following the side you hold the phone.
  • When you leave the game, it gives your rotation settings back.

Recommended GPU driver for the Galaxy S20 FE (Snapdragon 865 / Adreno 650)

Tested with 60 fps (generated) in nine places: Outset, Windfall, Dragon Roost Cavern, Gohma's room, Forest Haven, Forbidden Woods, Tower of the Gods, Hyrule and Forsaken Fortress.

Driver Result
Turnip v26.3.0-20261013-r2 (Banners-Turnip, the plain Turnip-v26.3.0-20261013-r2.zip) 60 fps in all nine places
Qualcomm v502 (the phone's own) 60 fps in all nine places; the lowest GPU time, so the best for the 60 fps mode that draws every frame
Turnip 26.0 R8 (K11MCH1), Stable Turnip v2 / Mainline v32 (whitebelyash) about 40 fps in Gohma's room and Forest Haven

With Turnip on this GPU, keep the resolution at Original (720p): higher resolutions now run without restarts but are slow (about 20 fps at 1.5x in a heavy place).

The only remaining stutters are short ones when a new area loads, and the first visit to a place while its shaders are compiled.

Plus v1.6 — 60 fps (generated), less GPU work, safer saves

Choose a tag to compare

@Nycolazs Nycolazs released this 10 Oct 16:49

⚠️ Updating from v1.5 or older: read this first

v1.6 is signed with a new, permanent key. Android won't install it over v1.5, and uninstalling an app deletes its data. Do this once:

  1. In the old app, open ≡ → Saves → Export saves, tap Choose folder… and pick a folder (for example Download).
  2. Uninstall the old app and install v1.6.
  3. Set up the game again. When it starts with no save, the app offers to restore one: pick the folder you exported to. You can also use ≡ → Saves → Import saves at any time.

From v1.6 on, every update installs over the previous version and keeps your saves and settings.


What's new

⚡ 60 fps (generated), the new default

  • How it works: the game runs at its own 30 fps, and every other frame is made on the GPU from the last real one.

    • It uses the scene's depth and the camera's movement.
    • A motion search on the image follows things that move by themselves, like Link, enemies and effects.
    • The HUD is kept exactly as the game drew it.
  • Results on a Galaxy S20 FE (Snapdragon 865), walking and turning the camera:

    Area 60 fps (generated)
    Outset Island 60.0–60.3 fps
    Gohma's room (Dragon Roost Cavern) 60.4 fps
    Forest Haven 60.3 fps
    Hyrule 60.4 fps
    Windfall 59.7 fps
    Tower of the Gods 59.5 fps
    Dragon Roost Cavern 58.7 fps
    Forbidden Woods 55.3 fps

    In Forbidden Woods the drop comes from short hitches while areas load. The 60 fps mode, which draws every frame, gets 53–55 fps in the same places.

  • The game's speed is unchanged: it never speeds up or slows down.

  • You can switch modes in Graphics → Frame rate.

🎯 Steadier 60 fps mode

  • One frame of buffering in the game's vsync wait. A single slow frame no longer drops the game into a run of 30 fps frames.
  • Outset Island, standing: 51 → 60 fps.

🖥️ Less GPU work (−8 to −14% per frame; Gohma's room 24.4 → 22.4 ms)

  • Bloom is computed at half size.
  • Post-processing buffers stay at native size when you raise the rendering resolution.
  • The GamePad picture is no longer drawn while it is hidden.
  • Render passes that touch only some of their attachments are merged: 10 → 7 passes on the main image.
  • New Graphics → Distant shadows option: turn it off to skip the far shadow cascade on weak GPUs.

🧵 Fewer CPU stutters

  • Game files are decompressed natively (Yaz0), with a cache.
  • The game's busy-wait loops now yield the CPU to the threads they wait for.

💾 Saves you don't lose

  • Automatic save backup: your game save is copied to Download/WindWakerHD Saves whenever it changes.
    • The copy survives uninstalling the app.
    • Turn it off in Saves → Automatic save backup.
  • Restore on a fresh install: if the game starts with no save, the app offers to restore it. The import takes the newest save in the folder you pick.
  • Export and import to any folder still work, including saves from Cemu.

🗺️ Item menu arrows fixed

  • In widescreen, the first page of the item menu no longer shows a left arrow.
  • The last page no longer shows a right arrow.

🔧 GPU drivers (Adreno), tested walking with 60 fps (generated)

Driver Result
Qualcomm v676.53 60.1 fps
Qualcomm v615 60.0 fps
System v502 59.8 fps
Turnip (Mesa), all versions tested 30–37 fps (not recommended for this game)

Requirements: Android 11+, arm64, Vulkan 1.1, and your own copy of the game (.wua, or .wud/.wux with keys). The APK contains no game code or files: the game is prepared on your phone on the first start.

Plus v1.5 — Portuguese translation, HUD editor, controller gyro

Choose a tag to compare

@Nycolazs Nycolazs released this 09 Oct 14:02

Wind Waker HD Recompiled for Android — Plus v1.5

The first release of Plus. It brings everything from Enhanced and the upstream Android port up to v0.7, and adds the following.

Highlights

  • 🇧🇷 Built-in Brazilian Portuguese translation (Triforce-Heroes v2025.08.05, 100%), built from your own game files on the first start. Toggle it in Mods → Portuguese (Brazil) translation.
  • 🇧🇷 The whole app in Portuguese, following your phone's language or chosen in Game → App language.
  • 🖥️ HUD layout editor (Graphics → HUD layout): drag, resize or hide each part of the HUD, or hide it all.
  • ⏭️ Skip button in cutscenes: the touch controls give way to a single Skip button.
  • 🎮 Better controller support: the right stick and triggers are detected per controller, the touch controls hide as soon as a controller connects, and gyro aiming uses the controller's sensors (DualSense, DualShock 4, Switch Pro), or the phone's sensors when the controller has none.
  • 🕹️ Camera stick on the touch screen.
  • 📦 .wua archives as a game source (no keys needed).
  • 📱 Full screen beside the camera cutout, and menus that fit any screen (with a Menu size setting).

Fixes

  • GPU hang at the title screen on Adreno 650 (Snapdragon 865) with Qualcomm's driver.
  • The widescreen item menu and its pages now render correctly.
  • Save states no longer close the app on 6 GB phones.
  • GPU safe mode: after a GPU driver crash, the next start uses safer settings by itself.

From upstream (v0.6 / v0.7 and the original project)

Picto Box pictures fixed, crash logs that can be shared from the app, fast-forward of cutscenes and dialogue while ZR is held, a bloom strength setting, and interpolation, shader and blur fixes.

Install

  1. Download WindWakerHD-Android-Plus-v1.5.apk below and install it (Android 11+, 64-bit ARM, Vulkan 1.1).
  2. Put your own .wua, or your .wud/.wux with its keys, in a folder, then choose Extract… in the app.
  3. The first start prepares the game code for your phone (about 5–15 minutes, once).

See the README for the full guide.

If an older build signed with another key is installed, export your saves first (Saves → Export saves), uninstall it, install this one, then import them.

The APK contains no game code, no game files and no keys. You need your own copy of The Wind Waker HD for Wii U.

SHA-256: f4eb023d76ebf8c4942cc58eab15ef027f197e23b7a16df039992b0f7ab5af47