Skip to content

FF4 (pre-release): frame generation that holds 60, native widescreen (includes FF2-FF3)

Pre-release
Pre-release

Choose a tag to compare

@cheemu21 cheemu21 released this 12 Nov 18:27

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 (base game + update v131072) with the steps in docs/games/kid-with-sword-remake.md, using the env file under "Build settings" below.

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

FF is a new line. The X series was built on an older nxnative; FF starts from the current nxnative main (303 changes newer) and brings the X series' iPhone features over one at a time. FF2 and FF3 were test builds; their changes are all in FF4. The X line's last work is on the x14 and x17 branches.

Frame generation: 60 that stays 60 (FF4)

  • Never falls back to 30. Earlier builds switched frame generation off whenever frames kept dropping, so the picture flipped between 60 and 30 (8 times in 90 seconds in one test). Now it keeps running.
  • A late frame still gets its in-between frame, so a slow moment reads as a slower step, not a stutter.
  • X9's picture quality. In-between frames are made at the full size shown, Wide view's too. They're made smaller only if frames keep dropping (1920x1080, then 1440x810, 1200x675 and 960x540), and go back up after 20 seconds without drops. Loading screens and scene changes don't count.
  • No blocks on camera turns. X13 to FF3 pasted squares of the real frame over parts of the in-between frame, and they showed as blocks when the camera turned. FF4 shows MetalFX's own frame, as X9 did, and keeps X10's motion tracking, which makes fast camera turns smooth. Only the still HUD comes from the real frame.

Widescreen (FF4)

  • Wide view is on by default. The game fills the iPhone screen at its own shape (about 19.5:9) with no black bars. The 3D cameras and the HUD follow the screen's shape, so characters and menus aren't stretched. The launcher's Wide view row turns it off; an iPad keeps 16:9.

Faster on the iPhone (FF2, FF3)

  • The game's upscaler is drawn by MetalFX. The game's own chain of upscaling shaders cost the phone 5 to 10 ms of GPU time a frame.
  • The game's compute work runs side by side where the game allows it: about 2 ms less a frame in Kokiri Forest on a Mac.
  • Fewer pipeline stalls in play. About 1,700 pipelines recorded in play are prepared in advance. The offline pipeline archive also holds the 3,409 pipelines that need a vertex layout: 36,774 in all, plus 4,125 compute pipelines. Pipelines build on two lanes, and one that couldn't be built isn't looked up again at every draw.
  • Installs with LiveContainer. The pipeline archive is packed so LiveContainer can sign the app.

From the X series

  • Touch controls: the Native layout, the Forest theme and the Ocarina arrangement.
  • A steady 30 fps on the iPhone (V17).
  • Microphone: the game hears the phone's microphone, so the Ocarina's voice controls work.
  • Render scale slider from 0.25 to 1.0 (Potato at 0.25, 0.6 by default).
  • Frame generation from X14: the steady HUD and motion found from the picture.
  • A fix for running out of GPU memory at a scene change.

From nxnative main

  • The game draws its full docked picture (graphics scale tier 0).
  • A cliff beside the Castle Town wall no longer goes dark for a frame when the game streams in a sharper texture.
  • Cheaper texture re-uploads: only the images the game wrote are sent again.
  • Fixes for blending, shader compiler crashes and shared memory pages.
  • Cloud saves ask which save to keep when both changed.

Not in FF yet

  • X14's memory upload windows and its render-target keep-list (on the x14 branch).

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_GUEST_FILE=1

Status

  • FF3 on an iPhone (frame generation on, render scale 0.6): 60 shown for the whole session, about 29 of 1,800 frames dropped or late, and frame generation costing 1.2 to 3.7 ms a frame. The phone reached thermal state 1 after about a minute.
  • FF4 hasn't been played on a phone yet. Full-size frames cost more GPU time than FF3's; if frames drop, log.txt shows frame generation stepping to a smaller size.
  • Keep at least 15 GB free on the phone: the game stops itself under 5 GB free.

Credits

Work by many people is in these builds; see the Acknowledgements and what each made.

Not affiliated with Nintendo.