Ultrawide menus (Centred): the loading screen's fade covers only the middle 16:9 — fix tested: kMenus 0xa → 0x2 #2220
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
2 participants
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot#2220
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hookshot version
2.1.0
What kind of problem
Graphics (missing, black or wrong-coloured things, lighting, flicker)
What happened
With Ultrawide on and Ultrawide menus set to either Centred mode, the loading screen's fade (the one with the
Triforce icon, after Load and between areas) covers only the middle 16:9: the world keeps showing at the sides
while it loads. With Full width it covers the whole picture.
Cause: KEEP_VTABLES' bit 3 (main+0x4be7b30) is that loading fade, not a menu. vk_framegen.cpp's kMenus (0xa)
clears it together with the pause menu's bit 1, so the HUD site squeezes it into the middle.
Fix (tested): in gpu/vk/vk_framegen.cpp, wide_sides():
(and the comment above it: bit 3 is the loading screen's fade, kept whole like the event fades. nx2/oot_wide.py's
comment on the keep bits says "the menus' bits 1 and 3" and would need the same correction.)
How it was found: a temporary log in the HUD site named each canvas vtable it squeezed, and an env switch kept
chosen vtables whole without a rebuild. Keeping 0x4be7b30 whole made the fade cover the picture; 0x4be4fb0 and the
other screens seen at load did not. Happy to share that instrumentation if useful.
Tested on v2.1.0 with the fix built in:
Known trade-off: the Triforce icon is in the same layout, so it is stretched with it, the same as Full width already
does. Keeping it at its shape would need a patch to the fade pane alone, or black sides drawn in step with the fade
while the layout stays centred.
Where in the game
Loading a save (the first screen after Load), and transitions between areas.
How often
Every time
Graphics card and driver version
RTX 5080, driver 621.14
CPU, RAM and operating system
AMD Ryzen 7 7700X, 32 GB DDR5-4800, Windows 11 Pro 26H2 (build 26300.9818)
Changes from the defaults
Ultrawide on (3440x1440, 21:9), Ultrawide menus: Centred (both modes tested). Mod: Xbox UI (romfs, button icons only).
Other software hooked into the game
No, nothing hooked in
hookshot_log.txt
hookshot_log.txt
Screenshots or video
Before you send it
Thanks @EjianYT — your bit-3 diagnosis reproduces here without the Xbox UI mod. I matched the 4432×1856 game picture in your log, rather than treating the 3440×1440 display as the render size, on Arch Linux with an RTX 4090/NVIDIA 615.78.08.
Changing the mask to
0x2makes the loading fade cover the whole picture, and pause/Map stay centred. There is a stronger icon trade-off in the actual side-effect pass, though: Centred, blurred sides makes it a dim blur; Centred, black bars hides it entirely; Full width leaves it sharp but stretched. The 16:9 fade, icon, pause and Map remain unchanged. The pictures are in the draft pull request #2851; the two that matter most:I've kept the change as a draft proposal, not a complete visual fix. The current hook transforms the whole loading canvas; preserving the icon's position and shape needs a separate fade-pane change. Would you prefer the full-width fade with this trade-off, or the current behaviour until that can be done? Does your real-window build also blur the icon, or does it differ from these windowless scale-pass captures?