Repository navigation
Conversation
|
Will this also keep gameplay at real speed above 60 FPS? |
|
Tested on an M1 Max MacBook Pro (macOS 26.7.2, Xcode 27.2), Mac app build. Applied this PR as a cherry-pick on top of db206a4, full shader map. Before: Kokiri Forest ran at about 30–35 fps and the game was in slow motion. Only tested around Link's house and Kokiri Forest so far. Thanks for this, |
|
Tested on an iPad Pro (M5) as part of our Ocarina of Time (0400486024DEC000 v131072) branch, merged with #1245, #1707 and #1714 on our branch (main of 2026-11-08 plus our changes); the unicorn test passes (3 tests) and One thing from the device: the iPad runs best with Could the hook take the host's measured frame interval when the target is 0? The host already knows the presented interval (the display link / present pacing), so the stub could convert from |
|
Closing this older hook as superseded by official main's Ocarina frame-ratio implementation, verified at Main now matches the frame-ratio function by fingerprint and uses the host's vsync step directly ( Thanks for the Mac and iPad reports. The The old failed tool checks belong to this branch's previous base. This closure is based on the implementation already present upstream, not on treating those checks as passed. No player app or saves were changed during this audit. |
Kokiri Forest can run below 60 updates per second while its time manager still advances by 16.667 ms per update. On an M3 Max, a probe of the native clock measured 3.000 seconds of gameplay time in 4.093 seconds of wall time.
This adds a build- and instruction-checked hook at the v131072 main's framework FPS load,
main+0x6e6c98. It feeds the existing host's whole-vsync simulation step into the game's original time-manager conversion. Target zero follows the game's original FPS load. The opt-in settings used for validation wereDM_FPS_TARGET=60andDM_FPS_HOLD=offafter repacking. The profile default stays at zero.This overlaps #1584 and #1543. #1584 changes the framework's interval controller and presentation behavior at four guest sites and defaults to target 60. #1543 adds a host measured-delta path and hooks the guest's calculated delta. This PR offers a single guest FPS-load hook with the existing host controller. It shares the build's frame-step registration with #1497 if those changes are combined.
Validation
bd979cedreproduced the gameplay-tested guest image and fixups byte for byte. The actual emitted instructions passed seven ARM64 cases with each of the game's two time-manager numerators.regress.py impactfound one game-profile change and zero NVN or HLE entry points. The baseline and candidate use identical host source, shader chain and shader inputs. The profile has no committed smoke route. The runtime evidence above comes from the manual run and instrumented game clock. A fresh all-shader regression build was omitted.