Skip to content

Releases: ZeldaWWHDRecomp/ZeldaWWHDRecomp

AppImage runtime 8f39b89 (build input, not a game release)

Choose a tag to compare

@lschaupp lschaupp released this 12 Oct 11:54

Pinned build input for our Linux AppImages: the AppImage type2-runtime from AppImage/type2-runtime@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

Development build (devel @ 06891fa, 2026-10-12)

Choose a tag to compare

@github-actions github-actions released this 12 Oct 14:37

Development build of devel @ 06891fa: not a release. It has the changes below that are not
released yet, and has had less testing than a release. Use it to try a fix, and include the commit
(06891fa) when you report a problem. The latest release is on the Releases page.

The Wind Waker HD, native PC port, development build

This release contains no game files, no game code and no keys. You need your own disc dump
(.wux/.wud with its disc key, plus the Wii U common key from your console), a Cemu .wua archive
(no keys needed), or an already extracted game folder. The installer builds the game from it on your machine.

Install: download the zip for your system, unzip it anywhere and start Wind Waker HD. The
first start prepares the game once from your dump (about two minutes); later starts launch it directly.
Everything stays in that folder.

  • macOS (Apple Silicon, macOS 14+): Wind Waker HD.app. The release is not signed by Apple:
    macOS 15+: System Settings > Privacy & Security > Open Anyway; macOS 14: right-click > Open.
    Keep the app inside the unzipped folder (move the whole folder, not just the app)
  • Windows: Wind Waker HD.exe (SmartScreen: "More info" > "Run anyway"); windows-x86_64 for x86-64,
    windows-arm64 for Windows on ARM (Snapdragon X)
  • Linux (glibc 2.35+, Vulkan): wind-waker-hd; linux-x86_64 for x86-64, linux-aarch64 for arm64
    (Raspberry Pi 5, Asahi Linux, ARM laptops). Or one file: chmod +x the .AppImage and start it
    from anywhere (Steam Deck included); its game, code, saves and settings go to ~/.local/share/wwhd
    and ~/.config/wwhd instead of beside it (Ubuntu 24.04+: libfuse2t64, or
    --appimage-extract-and-run)
  • Android (arm64, Android 13+, Vulkan 1.3): install the android-arm64.apk (android-x86_64 is for
    emulators and Chromebooks), choose your game in the app, and it builds the game on the phone (once,
    a few minutes). Signing certificate SHA-256:
    7F:F6:D3:5E:4E:45:11:5E:E4:93:65:EF:5B:40:C0:EB:83:EA:F7:6C:C1:1C:E9:67:F2:64:5C:50:4F:58:B2:13

See "Install (releases)" in the README for details.

What's new

  • 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.

  • Fixed: Call of the Sky could not be switched on from the catalogue. After confirming the
    experimental warning, the install stopped with "confirm the warning first", because the save backup
    was skipped. The backup now always runs once before the mod is switched on, and a failed backup shows
    its reason.

  • Fixed: a red "conflicting ID" box in Mods › More (Code-mod support). Release builds also no longer
    show this debug highlight.

  • Fixed: controllers stopped responding in the game after the settings overlay or the name screen
    (issue #153). If a trigger or stick did not fully return to rest, the game ignored all input after
    closing the overlay or entering a name until the controller was reconnected. Now only the button that
    closed it waits for its release; everything else reaches the game at once.

  • Linux AppImage: portable use now uses the AppImage's standard portable mode (issue #55). Start
    the AppImage once with --appimage-portable-home, or create a folder named like it plus .home next
    to it (e.g. WindWakerHD-…-linux-x86_64.AppImage.home); the game, its code, saves, settings and caches
    then stay in that folder. If you used the ….AppImage.data folder from v0.2.13, it is no longer
    used; to keep your saves and settings, move its contents before starting the new version:
    ….AppImage.data/share → ….AppImage.home/.local/share, ….AppImage.data/config →
    ….AppImage.home/.config and ….AppImage.data/cache → ….AppImage.home/.cache, then start the
    AppImage once with --setup.

  • Share your shader coverage: Settings › Graphics › Export shader template (desktop) or
    tools/shaderprep.py export saves a code-free my-template.bin (shader hashes and GPU settings only, no
    game code) from your own shader caches, so it can be contributed to the template that setup uses to
    prepare shaders. shaderprep.py template no longer fails with "invalid recipe bounds" on long-played or
    Vulkan caches and skips damaged records instead of stopping.

  • European GameCube saves can be converted to HD (tools/savegame/gc2hd.py): PAL saves (GZLP01)
    are accepted, names with accents (and Œ/œ) come through, and the save's language is kept. The
    converted cking.sav works with both the USA and the European HD game.

  • Android handhelds and controllers (issue #152, thanks @OTPR26):

    • Settings with a controller: holding Select/− now opens the settings after half a second as
      intended (it could take about 3 seconds on some devices), and a one-time hint says so.
    • Touch buttons hide with a controller: the view and 🎮 buttons hide while a controller is
      connected (built-in or external) and come back for a few seconds with a tap in their corner.
      Settings › Display › Touch buttons: Automatic / Always show / Hide.
    • AYN Thor / Odin built-in controls: A, B, X and Y now sit in their Nintendo positions, all four
      can be bound in Controls, and empty bindings in controls.json are repaired.
    • Larger settings on phones and handhelds: the settings fill most of the screen with bigger
      buttons, sized for the screen; Settings › Display › UI size (Automatic / Small / Medium / Large).
      The desktop look is unchanged.
    • Texts say "Android device" instead of "phone", and the log names how Android reports a controller.
  • Fixed: Windows setup failed in deep folders (issue #144), for example in Downloads after Windows'
    "Extract All" puts the folder inside a folder of the same name. The compiler now unpacks with long
    paths, and the game and setup use much shorter names for shader caches, temporary files, code-mod
    builds and save backups (existing caches are reused or rebuilt automatically). Only a folder deeper
    than 175 characters makes setup stop right away, before downloading anything, and ask you to move it
    to a shorter place such as C:\Games\WindWakerHD.

  • Development builds (macOS): setup can also build the decomp version (experimental, off by
    default). A checkbox in setup (or --decomp) builds, next to the normal game, a version in which the
    game functions of the public decompilation run as compiled source; it is built from your own game
    on your Mac, and the normal game is always built first and stays the default. Choose which one starts
    in setup, or start Wind Waker HD with --decomp. Setup downloads the decompilation's source (about
    8 MB, only when the option is on) from its GitHub repository and checks it before use; the release
    itself does not contain it. The decomp build now uses the readable decompilation; its model data is
    generated from your game at build time. Regular releases are unchanged.

  • Fixed: unreadable shoulder labels on the HUD (issue #143). With L1 R1 L2 R2 or LB RB LT RT as
    shoulder names, the labels on the HUD's shoulder buttons were white on the white plates; they are now dark
    like the game's own letters again (and dim the same way). Dialog labels are unchanged.

  • Mods tab redesign. Every mod has an on/off switch in one list, including mods you haven't
    downloaded yet: switching one on downloads it, sets it up and turns it on. When something is needed,
    one review asks it all at once (your GameCube game, choices, code-mod support, the experimental
    warning), then one progress view follows and keeps running while you play. Mod pages explain in one
    line why something can't change right now instead of showing greyed buttons; updating keeps a mod on
    or off as it was; Remove also deletes a mod's prepared files and says how much space that frees. The
    mod list loads by itself (cached, checked in the background; only the public list is fetched). Rarely
    used things (profiles, install from a file, GameCube game, code-mod support, save backups, mod list
    source, cheats) are under Mods › More.

  • Experimental: build the game from the decompilation (macOS, for developers). The CMake option
    WWHD_DECOMP=ON compiles the game code from the public, verified decompilation
    (ZeldaWWHDDecomp/wwhd, a submodule in decomp/) instead of
    recompiling it; the libraries stay recompiled from your game. It plays identically to the normal build
    but still uses more CPU, so releases stay recompiled. Off by default: normal builds are unchanged. See
    docs/decomp-build.md.

  • Fixed: aspect ratios other than 16:9 (PR #146, thanks @fluxehub). At 16:10 (and 4:3) the
    extra height now shows more of the view above and below instead of cropping a 16:9 picture, and
    the HUD sits at the real screen edges. At 21:9 and 32:9 the button cluster and the Wind Waker's
    "Back" prompt keep the same distance from the edge as at 16:9, and the Wind's Requiem screen
    fills the whole screen instead of showing dark side bars. Layouts drawn to both the TV and the
    GamePad no longer flicker between the two aspect ratios, and Vulkan no longer leaves the last
    pixel row black at 16:10 with 1.5x. 16:9 is unchanged.

  • Android: a menu on the game widget and an "Add the game icon" button (PR #150, thanks
    @rhemfur). Long-press the home-screen widget, then Settings (Samsung) to export or import the save
    or open the game setup. The setup screen has Add the game icon to the home screen under Play
    for players who declined or removed it, and the automatic offer now waits until the setup screen
    is in front, so Android no longer refuses it on some p...

Read more

v0.2.13

Choose a tag to compare

@github-actions github-actions released this 11 Oct 22:34

The Wind Waker HD, native PC port, v0.2.13

This release contains no game files, no game code and no keys. You need your own disc dump
(.wux/.wud with its disc key, plus the Wii U common key from your console), a Cemu .wua archive
(no keys needed), or an already extracted game folder. The installer builds the game from it on your machine.

Install: download the zip for your system, unzip it anywhere and start Wind Waker HD. The
first start prepares the game once from your dump (about two minutes); later starts launch it directly.
Everything stays in that folder.

  • macOS (Apple Silicon, macOS 14+): Wind Waker HD.app. The release is not signed by Apple:
    macOS 15+: System Settings > Privacy & Security > Open Anyway; macOS 14: right-click > Open.
    Keep the app inside the unzipped folder (move the whole folder, not just the app)
  • Windows: Wind Waker HD.exe (SmartScreen: "More info" > "Run anyway"); windows-x86_64 for x86-64,
    windows-arm64 for Windows on ARM (Snapdragon X)
  • Linux (glibc 2.35+, Vulkan): wind-waker-hd; linux-x86_64 for x86-64, linux-aarch64 for arm64
    (Raspberry Pi 5, Asahi Linux, ARM laptops). Or one file: chmod +x the .AppImage and start it
    from anywhere (Steam Deck included); its game, code, saves and settings go to ~/.local/share/wwhd
    and ~/.config/wwhd instead of beside it (Ubuntu 24.04+: libfuse2t64, or
    --appimage-extract-and-run)
  • Android (arm64, Android 13+, Vulkan 1.3): install the android-arm64.apk (android-x86_64 is for
    emulators and Chromebooks), choose your game in the app, and it builds the game on the phone (once,
    a few minutes). Signing certificate SHA-256:
    7F:F6:D3:5E:4E:45:11:5E:E4:93:65:EF:5B:40:C0:EB:83:EA:F7:6C:C1:1C:E9:67:F2:64:5C:50:4F:58:B2:13

See "Install (releases)" in the README for details.

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 V...

Read more

v0.2.12

Choose a tag to compare

@github-actions github-actions released this 10 Oct 19:07

The Wind Waker HD, native PC port, v0.2.12

This release contains no game files, no game code and no keys. You need your own disc dump
(.wux/.wud with its disc key, plus the Wii U common key from your console), a Cemu .wua archive
(no keys needed), or an already extracted game folder. The installer builds the game from it on your machine.

Install: download the zip for your system, unzip it anywhere and start Wind Waker HD. The
first start prepares the game once from your dump (about two minutes); later starts launch it directly.
Everything stays in that folder.

  • macOS (Apple Silicon, macOS 14+): Wind Waker HD.app. The release is not signed by Apple:
    macOS 15+: System Settings > Privacy & Security > Open Anyway; macOS 14: right-click > Open.
    Keep the app inside the unzipped folder (move the whole folder, not just the app)
  • Windows (x86-64): Wind Waker HD.exe (SmartScreen: "More info" > "Run anyway")
  • Linux (glibc 2.35+, Vulkan): wind-waker-hd; linux-x86_64 for x86-64, linux-aarch64 for arm64
    (Raspberry Pi 5, Asahi Linux, ARM laptops). Or one file: chmod +x the .AppImage and start it
    from anywhere (Steam Deck included); its game, code, saves and settings go to ~/.local/share/wwhd
    and ~/.config/wwhd instead of beside it (Ubuntu 24.04+: libfuse2t64, or
    --appimage-extract-and-run)
  • Android (arm64, Android 13+, Vulkan 1.3): install the android-arm64.apk (android-x86_64 is for
    emulators and Chromebooks), choose your game in the app, and it builds the game on the phone (once,
    a few minutes). Signing certificate SHA-256:
    7F:F6:D3:5E:4E:45:11:5E:E4:93:65:EF:5B:40:C0:EB:83:EA:F7:6C:C1:1C:E9:67:F2:64:5C:50:4F:58:B2:13

See "Install (releases)" in the README for details.

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.

  • Fixed: with Fast scene changes on, Grandma kept her back to Link when handing over the shield
    (issue #116, found and fixed by GreenNaugahyde). The mod no longer creates the new scene's
    characters ahead of time; fades and scene changes stay almost as fast.

  • Fixed: crash when entering the Puppet Ganon room (issue #90, Vulkan). The room uses a colour
    texture for a depth comparison, which the Vulkan renderer didn't support, so it stopped with an error.
    It now handles it. Such internal errors are also no longer lost: they are written to the log and
    the crash log with their message before the game stops, also on Windows. After updating, setup
    compiles the game code once more.

  • The mouse pointer now hides when you don't use the mouse (issue #109). After 2 seconds without
    mouse movement it disappears from the game window, in full screen and in a window, on Windows,
    Linux and macOS; moving the mouse shows it again. It stays visible while the settings overlay is open.

  • **Fixed: the aspect ratio wasn't remembere...

Read more

v0.2.11

Choose a tag to compare

@github-actions github-actions released this 09 Oct 14:43

The Wind Waker HD, native PC port, v0.2.11

This release contains no game files, no game code and no keys. You need your own disc dump
(.wux/.wud with its disc key, plus the Wii U common key from your console), a Cemu .wua archive
(no keys needed), or an already extracted game folder. The installer builds the game from it on your machine.

Install: download the zip for your system, unzip it anywhere and start Wind Waker HD. The
first start prepares the game once from your dump (about two minutes); later starts launch it directly.
Everything stays in that folder.

  • macOS (Apple Silicon, macOS 14+): Wind Waker HD.app. The release is not signed by Apple:
    macOS 15+: System Settings > Privacy & Security > Open Anyway; macOS 14: right-click > Open.
    Keep the app inside the unzipped folder (move the whole folder, not just the app)
  • Windows (x86-64): Wind Waker HD.exe (SmartScreen: "More info" > "Run anyway")
  • Linux (glibc 2.35+, Vulkan): wind-waker-hd; linux-x86_64 for x86-64, linux-aarch64 for arm64
    (Raspberry Pi 5, Asahi Linux, ARM laptops). Or one file: chmod +x the .AppImage and start it
    from anywhere (Steam Deck included); its game, code, saves and settings go to ~/.local/share/wwhd
    and ~/.config/wwhd instead of beside it (Ubuntu 24.04+: libfuse2t64, or
    --appimage-extract-and-run)

See "Install (releases)" in the README for details.

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.

Checksums (SHA-256)

6e1bb12e2fbdf0a686bc8c26babf256e5f255008ae726d144aabc259eee97f4f  WindWakerHD-v0.2.11-linux-aarch64.zip
02dd618ee9177e23cf158ac7b0394a226edf2af2b59c98f3bccdfc29940f2854  WindWakerHD-v0.2.11-linux-x86_64.zip
f909ad996d6e83b88b1358298d5bf25d3777844c0d13a8db8d40f8a46e049042  WindWakerHD-v0.2.11-macos-arm64.zip
6b2a938192197b69cd4d1e72ad09ca970c394ff3849e508f55d16038d05db92d  WindWakerHD-v0.2.11-windows-x86_64.zip
58f4c39187586a8d6dd1328ea194563f0f0a39d2cd561d4a18bcc1654291ec98  WindWakerHD-v0.2.11-linux-aarch64.AppImage
c12388c21ffd6bc46fda38a018ac6f2d8cce95d0610580c68c7292672015b0f7  WindWakerHD-v0.2.11-linux-x86_64.AppImage

VirusTotal

Scan results of this release's files at publishing time (results can change as engines update):

  • WindWakerHD-v0.2.11-linux-aarch64.zip: 0 of 65 engines flag it, report
  • WindWakerHD-v0.2.11-linux-x86_64.zip: 0 of 63 engines flag it, report
  • WindWakerHD-v0.2.11-macos-arm64.zip: 0 of 66 engines flag it, report
  • WindWakerHD-v0.2.11-windows-x86_64.zip: 8 of 66 engines flag it, report
  • WindWakerHD-v0.2.11-linux-aarch64.AppImage: 0 of 62 engines flag it, report
  • WindWakerHD-v0.2.11-linux-x86_64.AppImage: 0 of 64 engines flag it, report
  • Wind Waker HD.exe: 9 of 71 engines flag it, report

Detections on the Windows files are generic heuristics on an unsigned program (ALYac, Arcabit, BitDefender, CTX, Emsisoft, GData, MicroWorld-eScan, Microsoft, VIPRE), reported to the vendors as false positives; see issue #58.

v0.2.10

Choose a tag to compare

@github-actions github-actions released this 09 Oct 01:01

The Wind Waker HD, native PC port, v0.2.10

This release contains no game files, no game code and no keys. You need your own disc dump
(.wux/.wud with its disc key, plus the Wii U common key from your console), a Cemu .wua archive
(no keys needed), or an already extracted game folder. The installer builds the game from it on your machine.

Install: download the zip for your system, unzip it anywhere and start Wind Waker HD. The
first start prepares the game once from your dump (about two minutes); later starts launch it directly.
Everything stays in that folder.

  • macOS (Apple Silicon, macOS 14+): Wind Waker HD.app. The release is not signed by Apple:
    macOS 15+: System Settings > Privacy & Security > Open Anyway; macOS 14: right-click > Open.
    Keep the app inside the unzipped folder (move the whole folder, not just the app)
  • Windows (x86-64): Wind Waker HD.exe (SmartScreen: "More info" > "Run anyway")
  • Linux (glibc 2.35+, Vulkan): wind-waker-hd; linux-x86_64 for x86-64, linux-aarch64 for arm64
    (Raspberry Pi 5, Asahi Linux, ARM laptops)

See "Install (releases)" in the README for details.

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).

Checksums (SHA-256)

e9cc89f3a2a2a2439c5f7751def594fd4d2a081e5e71755a073ab5ce9f4088e9  WindWakerHD-v0.2.10-linux-aarch64.zip
64e912cb7ac46bdd6329386f725eea217a5b09f13551bbbeb346d954eac58791  WindWakerHD-v0.2.10-linux-x86_64.zip
8ee8d70aa9c409f1b90ea3bd419ca0844f673ce072933955960cecffce220571  WindWakerHD-v0.2.10-macos-arm64.zip
6e456d8179ef946c08e5991b9e508a94da254c577a348eca6f0539bc3b256c34  WindWakerHD-v0.2.10-windows-x86_64.zip

VirusTotal

Scan results of this release's files at publishing time (results can change as engines update):

  • WindWakerHD-v0.2.10-linux-aarch64.zip: 0 of 65 engines flag it, report
  • WindWakerHD-v0.2.10-linux-x86_64.zip: 0 of 64 engines flag it, report
  • WindWakerHD-v0.2.10-macos-arm64.zip: 0 of 59 engines flag it, report
  • WindWakerHD-v0.2.10-windows-x86_64.zip: 11 of 58 engines flag it, report
  • Wind Waker HD.exe: 13 of 70 engines flag it, report

Detections on the Windows files are generic heuristics on an unsigned program (ALYac, AVG, Arcabit, Avast, Avira, BitDefender, CTX, Cynet, Emsisoft, F-Secure, GData, MicroWorld-eScan, Microsoft, VIPRE), reported to the vendors as false positives; see issue #58.

v0.2.9

Choose a tag to compare

@github-actions github-actions released this 08 Oct 22:10

⚠ Known issue in v0.2.9: the cheats (Settings → Mods → Cheats) write to the wrong place in the save data and can damage your save. Fixed in v0.2.10, please update (it also fixes the Master Sword cheat hiding Medli on Dragon Roost, #85). The other mods and all other features are not affected.

The Wind Waker HD, native PC port, v0.2.9

This release contains no game files, no game code and no keys. You need your own disc dump
(.wux/.wud with its disc key, plus the Wii U common key from your console), a Cemu .wua archive
(no keys needed), or an already extracted game folder. The installer builds the game from it on your machine.

Install: download the zip for your system, unzip it anywhere and start Wind Waker HD. The
first start prepares the game once from your dump (about two minutes); later starts launch it directly.
Everything stays in that folder.

  • macOS (Apple Silicon, macOS 14+): Wind Waker HD.app. The release is not signed by Apple:
    macOS 15+: System Settings > Privacy & Security > Open Anyway; macOS 14: right-click > Open.
    Keep the app inside the unzipped folder (move the whole folder, not just the app)
  • Windows (x86-64): Wind Waker HD.exe (SmartScreen: "More info" > "Run anyway")
  • Linux (glibc 2.35+, Vulkan): wind-waker-hd; linux-x86_64 for x86-64, linux-aarch64 for arm64
    (Raspberry Pi 5, Asahi Linux, ARM laptops)

See "Install (releases)" in the README for details.

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.

Checksums (SHA-256)

2f1e7c8b6b1286e97d2f31cebb7cb5384848f0b2d56ea55756795985ddb12f00  WindWakerHD-v0.2.9-linux-aarch64.zip
7990acd2f8388525007b1237e0b1cbbb1d0904de99ee4d60cc94b1243245ddb6  WindWakerHD-v0.2.9-linux-x86_64.zip
0dce7748fe24159567a9ac39ac5262c8c41b6e8f8fb038fed2e80673e0389461  WindWakerHD-v0.2.9-macos-arm64.zip
476c104511e50257285d8b4a8f929cd51270a97dbf4151386ea58b8c72e2b440  WindWakerHD-v0.2.9-windows-x86_64.zip

VirusTotal

Scan results of this release's files at publishing time (results can change as engines update):

  • WindWakerHD-v0.2.9-linux-aarch64.zip: 0 of 61 engines flag it, report
  • WindWakerHD-v0.2.9-linux-x86_64.zip: 0 of 64 engines flag it, report
  • WindWakerHD-v0.2.9-macos-arm64.zip: 0 of 65 engines flag it, report
  • WindWakerHD-v0.2.9-windows-x86_64.zip: 9 of 65 engines flag it, report
  • Wind Waker HD.exe: 12 of 70 engines flag it, report

Detections on the Windows files are generic heuristics on an unsigned program (ALYac, AVG, Arcabit, Avast, Avira, BitDefender, CTX, Emsisoft, GData, MicroWorld-eScan, Microsoft, VIPRE), reported to the vendors as false positives; see issue #58.

v0.2.8

Choose a tag to compare

@github-actions github-actions released this 08 Oct 11:34

The Wind Waker HD, native PC port, v0.2.8

This release contains no game files, no game code and no keys. You need your own disc dump
(.wux/.wud with its disc key, plus the Wii U common key from your console), a Cemu .wua archive
(no keys needed), or an already extracted game folder. The installer builds the game from it on your machine.

Install: download the zip for your system, unzip it anywhere and start Wind Waker HD. The
first start prepares the game once from your dump (about two minutes); later starts launch it directly.
Everything stays in that folder.

  • macOS (Apple Silicon, macOS 14+): Wind Waker HD.app. The release is not signed by Apple:
    macOS 15+: System Settings > Privacy & Security > Open Anyway; macOS 14: right-click > Open.
    Keep the app inside the unzipped folder (move the whole folder, not just the app)
  • Windows (x86-64): Wind Waker HD.exe (SmartScreen: "More info" > "Run anyway")
  • Linux (glibc 2.35+, Vulkan): wind-waker-hd; linux-x86_64 for x86-64, linux-aarch64 for arm64
    (Raspberry Pi 5, Asahi Linux, ARM laptops)

See "Install (releases)" in the README for details.

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).
  • More languages (experimental): with your own dump of the European or Japanese game, the port can
    use its text, fonts and menus: German, Italian, British English, European French and Spanish, or
    Japanese. See docs/language-packs.md.
  • 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).

Checksums (SHA-256)

a5ab53458e18a3c8c9dfb1ad3d96dc0ee6790e2020014b276ee4f5187cabfcd8  WindWakerHD-v0.2.8-linux-aarch64.zip
0385371860ed8b7a43a2d2d0a000cb210683c95b73a700c25935a7759cd3a86d  WindWakerHD-v0.2.8-linux-x86_64.zip
de132e5d3ba466b3fa707e370ab1b8c0b5db0c5dd0cf8b493a5e2f4b22cb9b96  WindWakerHD-v0.2.8-macos-arm64.zip
579750a4621f04329dd06760c5443ab5fe1b109e6db3f4ada72f6dc41cc78640  WindWakerHD-v0.2.8-windows-x86_64.zip

VirusTotal

Scan results of this release's files at publishing time (results can change as engines update):

  • WindWakerHD-v0.2.8-linux-aarch64.zip: 0 of 65 engines flag it, report
  • WindWakerHD-v0.2.8-linux-x86_64.zip: 0 of 62 engines flag it, report
  • WindWakerHD-v0.2.8-macos-arm64.zip: 0 of 56 engines flag it, report
  • WindWakerHD-v0.2.8-windows-x86_64.zip: 8 of 66 engines flag it, report
  • Wind Waker HD.exe: 8 of 71 engines flag it, report

Detections on the Windows files are generic heuristics on an unsigned program (ALYac, Arcabit, BitDefender, CTX, Emsisoft, GData, MicroWorld-eScan, VIPRE), reported to the vendors as false positives; see issue #58.

v0.2.7

Choose a tag to compare

@github-actions github-actions released this 08 Oct 00:33

The Wind Waker HD, native PC port, v0.2.7

This release contains no game files, no game code and no keys. You need your own disc dump
(.wux/.wud with its disc key, plus the Wii U common key from your console), a Cemu .wua archive
(no keys needed), or an already extracted game folder. The installer builds the game from it on your machine.

Install: download the zip for your system, unzip it anywhere and start Wind Waker HD. The
first start prepares the game once from your dump (about two minutes); later starts launch it directly.
Everything stays in that folder.

  • macOS (Apple Silicon, macOS 14+): Wind Waker HD.app. The release is not signed by Apple:
    macOS 15+: System Settings > Privacy & Security > Open Anyway; macOS 14: right-click > Open.
    Keep the app inside the unzipped folder (move the whole folder, not just the app)
  • Windows (x86-64): Wind Waker HD.exe (SmartScreen: "More info" > "Run anyway")
  • Linux (glibc 2.35+, Vulkan): wind-waker-hd; linux-x86_64 for x86-64, linux-aarch64 for arm64
    (Raspberry Pi 5, Asahi Linux, ARM laptops)

See "Install (releases)" in the README for details.

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.

Checksums (SHA-256)

a0840b305daa55fd27d539eb4b557e6a3da14129e65c69d75a5208cdd5435558  WindWakerHD-v0.2.7-linux-aarch64.zip
a94fd9bbab979d079f3450454699f6b5289c80ef61eca19504766044d5db9230  WindWakerHD-v0.2.7-linux-x86_64.zip
50be28e8ac878f2e3d7fb6c132a84f9affbbb8b6febfe67b06015a518fc8f355  WindWakerHD-v0.2.7-macos-arm64.zip
0aa05ed2d51ebb413a7490010358ef2d41bac768f8123b0293ada52e882479f0  WindWakerHD-v0.2.7-windows-x86_64.zip

VirusTotal

Scan results of this release's files at publishing time (results can change as engines update):

  • WindWakerHD-v0.2.7-linux-aarch64.zip: 0 of 66 engines flag it, report
  • WindWakerHD-v0.2.7-linux-x86_64.zip: 0 of 61 engines flag it, report
  • WindWakerHD-v0.2.7-macos-arm64.zip: 0 of 66 engines flag it, report
  • WindWakerHD-v0.2.7-windows-x86_64.zip: 8 of 67 engines flag it, report
  • Wind Waker HD.exe: 8 of 71 engines flag it, report

Detections on the Windows files are generic heuristics on an unsigned program (ALYac, Arcabit, BitDefender, CTX, Emsisoft, GData, MicroWorld-eScan, VIPRE), reported to the vendors as false positives; see issue #58.

v0.2.6

Choose a tag to compare

@github-actions github-actions released this 07 Oct 16:04

The Wind Waker HD, native PC port, v0.2.6

This release contains no game files, no game code and no keys. You need your own disc dump
(.wux/.wud with its disc key, plus the Wii U common key from your console), a Cemu .wua archive
(no keys needed), or an already extracted game folder. The installer builds the game from it on your machine.

Install: download the zip for your system, unzip it anywhere and start Wind Waker HD. The
first start prepares the game once from your dump (about two minutes); later starts launch it directly.
Everything stays in that folder.

  • macOS (Apple Silicon, macOS 14+): Wind Waker HD.app. The release is not signed by Apple:
    macOS 15+: System Settings > Privacy & Security > Open Anyway; macOS 14: right-click > Open.
    Keep the app inside the unzipped folder (move the whole folder, not just the app)
  • Windows (x86-64): Wind Waker HD.exe (SmartScreen: "More info" > "Run anyway")
  • Linux (glibc 2.35+, Vulkan): wind-waker-hd; linux-x86_64 for x86-64, linux-aarch64 for arm64
    (Raspberry Pi 5, Asahi Linux, ARM laptops)

See "Install (releases)" in the README for details.

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.

Checksums (SHA-256)

55242cdac9546154d60becf9356dcd705c3e8223651ddc550daff4df240f01e1  WindWakerHD-v0.2.6-linux-aarch64.zip
bf842387537d737cd9c84bf13e59f3892f1d0c6f306683075d89a0b2c9f4242c  WindWakerHD-v0.2.6-linux-x86_64.zip
95e79566bbab23e2bf316a4b2da33454fdae000f54efe02df20b10385ec11c93  WindWakerHD-v0.2.6-macos-arm64.zip
3c6563e09f140365aba9179ef5fb8b0e9806a30abdeda7c1e163ccb013f54182  WindWakerHD-v0.2.6-windows-x86_64.zip