Skip to content

v0.2.8

Choose a tag to compare

@github-actions github-actions released this 08 Oct 11:34
· 376 commits to main since this release

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.