Skip to content

V22 (pre-release): GPU savings from the oot2 branch

Pre-release
Pre-release

Choose a tag to compare

@cheemu21 cheemu21 released this 09 Nov 17:39

Pre-release: source code only. No IPA and nothing from the game are attached or in the repository. Build your own from your own dump of the game (the v1 dump: base game + update v131072) with the steps in docs/games/kid-with-sword-remake.md, with an env file holding the lines under "Build settings" below.

The Legend of Zelda: Ocarina of Time (Switch 2) as a native iPhone and Mac app, on top of nxnative.

In this build (V22)

  • Mesh shader byte stores as one store instead of a retry loop (from the oot2 branch): Ocarina's foliage mesh shaders spent 8.3-8.6 ms of GPU a frame in that loop on an M3 Pro.
  • Raw reads keep their last pool range (oot2): most of the game's memory reads skip the pool table; about 7 ms of a frame in Hyrule Castle Town's skinned characters.
  • Occlusion checks read once their result is in (oot2): hidden objects are skipped; GPU 13.3 to 12.2 ms on an M4 Pro.
  • Includes V18-V21. The first start takes longer while the new shaders are prepared.

Build settings

DM_UPSCALER=metalfx
DM_FPS_HOLD=off
DM_THERMAL_CAP=0
DM_QOS_MAP=1
DM_QOS_EDGES=45,59
DM_NVN_GPUPROF=every:600
DM_METAL_HUD=0

Status

  • Not yet tested by the owner on an iPhone; a member's first minute on an iPhone 15 Pro with Potato mode on held 30 fps.
  • Known: the game closes at the first ocarina note (Impa, Zelda's Lullaby), which blocks the main quest. Fixed in nxnative main; the fix is not in this build yet.
  • Keep at least 15 GB free on the phone: the game stops itself under 5 GB free.
  • At 60 fps the phone heats up within one to two minutes and iOS lowers the clocks; 30 fps holds for long sessions.

Not affiliated with Nintendo.