Repository navigation
X9 (pre-release): frame generation, 30 fps shown at 60 (includes X2-X8)
Pre-release
Pre-release
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.
X2 to X8 were test builds made along the way; their changes are all in this source, listed by the build that brought them.
In this build (X9) and X6 to X8: frame generation
- Frame generation (launcher, offered when Frame rate is 30 fps; off by default). The game draws 30 frames a second and the screen shows 60. MetalFX makes the frame halfway between each two of the game's frames from the picture alone, so it needs nothing game-specific. Motion looks like 60 for about the work of 30; it adds a little input delay compared with real 60 fps.
- X7: in-between frames are made at the size the picture is shown at. The game passes a crop with every frame, which X6 missed. Frame generation also pauses while frames drop, so the picture doesn't flicker.
- X8: only the cropped picture is copied: the game draws 2352×1080 into a 3136×1440 texture. That's 44% less work for frame generation, which had caused frame drops in X7.
- X9: it pauses only for real drops. One frame waiting is normal with Frame buffering on, and X8 paused for it on 37% of frames.
log.txtnow shows what frame generation costs on the GPU, how often it paused, and any display update that took 50 ms or more.
X5
DM_PSO_CAPTURE(off unless set): one run writes the setup of every pipeline the phone builds, toward a future offline archive that also holds the ones built during play.
X4
- The first start prepares the pipelines an iPhone 18 Pro Max recorded in Kokiri Forest, Hyrule Field, Castle Town and Hyrule Castle, so those areas don't stall on them in play.
X3
- The pipeline archive is made offline for the iPhone 18 Pro's GPU, so draws start from ready pipelines instead of freezing 0.3–2.9 s at new areas. It's packed so LiveContainer can sign it.
- Two shader fixes from nxnative:
- foliage no longer flashes white for single frames in Hyrule Field;
- faster multiplies in translated shaders.
X2
- The game's big memory pools stay in files instead of plain memory, so the footprint no longer grows to 7.4 GB over a long session.
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
DM_POOL_ANON_MAX_MB=512
DM_NVN_GMEM_NOBIG=1
Status
- X8 on the iPhone (log 80: 30 fps with frame generation, render scale 0.60, Wide view, Real-time presenting and Deadline boost on): 0–1 of 300 frames dropped, also after the phone warmed. X9's fix for the extra pauses has not been played on a phone yet.
- Keep Real-time presenting and Deadline boost on. With them off, a warm phone moves the game to the slow cores and frames drop (logs 73 and 75).
- The game pauses while Notification Center or Control Center is down, as a Switch game does at the HOME menu.
- In heavy areas, the game and frame generation together can use most of a frame's 33 ms of GPU time. Turn off Wide view or lower the render scale for headroom.
- Keep at least 15 GB free on the phone: the game stops itself under 5 GB free.
Not affiliated with Nintendo.