Skip to content

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
· 27 commits to main since this release

⚠️ 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.