Skip to content

v1.0 Enhanced — Native widescreen, fixed shadows, 40 fps, pinch-to-zoom, phone touch controls & faster renderer

Choose a tag to compare

@SSunnKing SSunnKing released this 07 Oct 07:24
· 10 commits to enhanced since this release

v1.0 Enhanced — Native widescreen, fixed shadows, 40 fps, pinch-to-zoom, phone touch controls & faster renderer

The first release of the Enhanced fork of the Android port: The Legend of Zelda: The Wind Waker HD
(Wii U, USA/EUR) recompiled to native ARM with its graphics on Vulkan, now with native widescreen,
fixed shadows, a 40 fps mode, pinch-to-zoom and touch controls made for a phone.

The APK contains no game files, no game code and no keys. You need your own Wii U disc image
(.wud/.wux) with its keys; the app extracts it and compiles the game code on your device on the
first start (about 5 minutes, once).

Highlights

  • Native widescreen. The game renders at your screen's shape (20:9, 21:9...) instead of
    stretching 16:9: more to see at the sides with the same vertical view, culling that follows,
    and a HUD that keeps its proportions with hearts, rupees and buttons at the screen edges.
    Options → Widescreen, switchable while playing.
  • Shadows fixed. No more flicker between the near (detailed) and far (basic) shading when the
    camera moves, and no more grid / moiré on sand and other ground.
  • 40 fps on 120 Hz screens. A frame every 3 refreshes, evenly paced, with the camera and every
    model interpolated at the exact point of each frame: much smoother than 30 on phones that can't
    hold 60, and lighter on the battery. Game logic stays at 30 steps a second.
  • Pinch to zoom the camera. Spread two fingers on the camera side to bring it closer, pinch to
    move it away (half to twice the game's distance). Zoomed out, it uses the game's own collision
    check and stays in front of walls.
  • Faster renderer. Vulkan commands are recorded on their own thread and work is submitted in
    chunks again: on a Snapdragon 8 Gen 2 the render thread went from 17–18 ms to 10–14 ms per frame
    and 94–99% of frames are shown on time at 40 fps.

Touch controls

  • Floating left stick: it appears where your thumb lands and stays there until you lift it.
  • Swipe camera with adjustable speed; double tap to centre it behind Link; pinch to zoom.
  • Context buttons that follow your save: B shows your sword, ZR your shield, X / Y / R the items you
    assigned (with the game's own item art, built on your device); combat buttons (jump attack, spin
    attack, vertical slash, dodge) once you have a sword; D-pad items once you own them.
  • One-touch combat moves, a layout editor (move, resize, remove and restore every control), gyro
    aiming, rumble as phone vibration.

Graphics and performance

  • Renderer fixes ported from the official project's Vulkan backend: invariant vertex positions for
    multipass depth tests, depth-compare samplers bound to depth surfaces, GX2CopySurface of depth
    and array slices, uniform blocks compared instead of trusted to write tracking.
  • Large vertex buffers are reused within a submission only while the game hasn't written them.
  • Precise vsync wait for the game thread: frames start on their vsync instead of whenever the
    system timer wakes up.
  • Ambient occlusion modes (Wii U, centre fix, centre + noise fix, Off).
  • A fast path for repeated draws, reuse of identical vertex/uniform copies, ADPF performance hints,
    CPU core choice (automatic, performance cores, prime core), the guest vsync locked to the
    display, a pre-rotated swapchain, the game code compiled at -O3.
  • 60 fps by frame interpolation (holds full speed anywhere between 30 and 60), an adaptive mode, and
    the original project's True 60 (experimental).

More

  • Game language selector (English, Spanish, French).
  • Cheats: items, sword and shield, hearts, songs, Triforce, dungeon items, infinite health / magic /
    ammo.
  • Crash logs: if the app crashes, captures/crash-YYYYMMDD-HHMMSS.log in the app's folder names the
    faulting module (GPU driver, Vulkan layer or the game) with the guest and host call chains. Please
    attach it to bug reports.
  • Pacing diagnostics in the log (which frames missed their vsync, and whether the game, the renderer
    or the GPU was late).

Installing

  1. Put your disc image (.wux or .wud), its disc key (.key, same name as the image) and the
    Wii U common key (common.key) in one folder on your device.
  2. Install the APK and start it. Choose Extract from your disc image… and select that folder.

Requirements: Android 11 or newer, 64-bit ARM, Vulkan 1.1, about 2 GB of free storage and memory.
40 fps needs a screen with a 120 Hz mode (the option only shows there).

Coming from another build of the Android port? This APK is signed with a different key, so
Android won't install it over a build from somewhere else. Back up your saves first (Import /
export saves…
in the menu), uninstall the old app, install this one and import them back.

Recommended on a recent phone: Frame rate 60 fps (or 40 fps / adaptive), rendering resolution
1×, Widescreen Screen shape, CPU cores Automatic.

Known limits

  • At 40 fps, particles, sea, grass and weather are drawn at the game's own steps (camera and models
    are interpolated).
  • The camera zoom goes back to the game's distance when the app restarts.
  • Very busy views (big islands seen from afar) can still drop frames; a hot phone lowers its clocks.

Checksum

WindWakerHD-Android-Enhanced-v1.0.apk
SHA-256 bce78f29c699599ea7de876eef2266787b42ae55cc012000141ea3bf94169a1f

Credits

ZeldaWWHDRecomp (the recompilation, Wii U
libraries, 60 fps modes, cheats, rumble, aspect-ratio support and renderer fixes ported here),
GreenNaugahyde/ZeldaWWHDRecompAndroid
(the Android port), Cemu (GPU address library and shader
decompiler) and the zeldaret/tww decompilation.

Unofficial fan project, not affiliated with Nintendo. MPL-2.0.