Repository navigation
Fix stale fixed-resolution scene scale (experimental opt-in) - #329
Closed
i900gaming wants to merge 1 commit into
Closed
i900gaming wants to merge 1 commit into
i900gaming wants to merge 1 commit into
Conversation
i900gaming
force-pushed
the
fix/fixed-resolution-scene-scale
branch
from
November 7, 2026 21:05
2577c2f to
06c6ab3
Compare
This was referenced Nov 8, 2026
NotRexed
added a commit
that referenced
this pull request
Nov 9, 2026
…rts) The game sized its scene at 0.8 of the picture in graphics mode 1 even at Resolution 100%, and the fixed path kept the last dynamic scale cached (0.75): v2.0.5 players' logs show the main targets at 1536x864 for a 2560x1440 picture. nx2/oot_native_resolution.py takes oscarrc91's PR #578 (mode 1's base scale 1.0, the game's own refresh) and i900gaming's PR #329 (the cached scale marked dirty when it differs) as host switches, on at Resolution 100% (HOS_SCENE_NATIVE=0/1, HOS_FIX_RES=0/1 over it). Tested: both table edits run, the targets are 2560x1440. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
|
Thank you! #849 (merged) now makes a fixed Resolution reach the 3D, the same stale fixed-scale problem this fixed, so I'm closing this as superseded. Closing to keep the queue clear; if something is still wrong at 67%/50% on current main, a new PR on top of it is welcome. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixed Resolution 100% can leave the scene rendering at its previous dynamic scale. This draft adds an off-by-default correction, enabled with
HOS_FIX_RES=1, that invalidates the cached scene scale when the fixed request changes. In the tested scene, the main color/depth targets increased from 1536x864 to 2048x1152 at 100%.This is a draft with unresolved image corruption at 67%/50%. It is not ready to enable by default.
Cause and change
The controller's fixed path can return a resource-refresh status without marking the scene's cached scale dirty. Instrumentation observed a requested scale of
1.5while the cached scene value remained0.75and the dirty flags were0.nx2/oot_patches.pynow injects a check at the scene update entry. In fixed mode, with the opt-in enabled, it compares the requested scale in the scene's reference units with the cached value and sets the existing scale-dirty bit (8) when they differ. The game's existing update code performs the recalculation. Other dirty bits are preserved; unchanged values do not continuously invalidate the scene. Auto and the existing initialization warm-up from #102 are retained.The patch includes documentation, a game-free compiled regression test, and a source-regression workflow step. It contains no renderer/filter changes, game assets, generated game code, binaries, saves, or dumps.
Reproducing the opt-in
HOS_FIX_RES=1tohookshot_env.txtbeside the executable and restart.0and restart to restore the previous behavior.Known problems and limits
HOS_RES_SCALE=1.5, frame generation and a separate experimental 16x anisotropy override active. The responsible component is unknown. Anisotropy was subsequently disabled; short follow-up tests with the correction, including 2x frame generation, recorded no further timeout. This is not a long-term stability claim, and the timeout is not considered resolved.Validation and coverage
40c3f851b07a4367a13d7d7bcfb1d5b91cc95dfe. Itsnx2/oot_patches.pymatches the starting version used for the local fix.python -I -B tests/test_resolution_scale.py --cxx <clang++>passes on Windows. It compiles the injected logic with memory stubs and checks changed/unchanged scale, preservation of other dirty bits, Auto, opt-in absent/0/1, invalid requested values, reference-size normalization, patch idempotence and layout guards.python -I -B tests/test_make_game_cache.py: all six checks pass.32.0.21045.16010. This identifies the tested configuration; the scene-state correction is not claimed to be AMD-specific. Other GPUs/platforms have not been runtime-tested.Before this can leave draft