Redesign the Debug tab, Inventory and Teleport pages, and add a 5K output #1670
No reviewers
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
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!1670
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/debug-menu-redesign"
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?
Requested by Tommy
The Debug tab was one long list where the tools were hard to scan, the inventory editor was a plain list of 85 lines, and clicking a destination in the teleport list travelled at once. This redesigns the Debug tab and its two pages so the tools are grouped, readable at every menu size, and safe to click. It also adds a 5120x2880 (5K) Output resolution, which 5K screens did not have.
What changed
Debug tab
Sequence_IsChildhoodalongside the inventory counts (OOT_CHEAT_AGE_ID).Inventory page
Teleport page
Output resolution: 5120x2880 (5K) (its own commit)
host/nn_applet.c), the readme,docs/development.mdandtests/test_output_resolution.py, following #1290.tests/test_rt_pool_minimum.pyhas 5K cases). At 900 MB and 800 MB the game booted, loaded a save and played with the 3D at the full 5120x2880 (Render resolution 100%).HOS_RT_POOL_MBstill overrides it.output_resas the size instead of an index (so players can set custom resolutions in the config) comes in a follow-up PR; until then whichever of the two lands second renumbers.Unchanged: the mouse wheel still only scrolls (#1557), on both pages too. Apart from the 5K row, Graphics, Gameplay and Controls are untouched. Outside the menu, the redesign only adds the age report in
host/hos_main.cand its id ingpu/vk/oot_cheat_items.h.Testing
HOS_OUTPUT_RES=5into a save at Render resolution 100% with the 900 MB pool, walked around, no crash. Not yet run at 5K: the Castle Town guard-house conversation.python -I -B tests/run_all.py: the same results asmainon this machine (it has no g++ on PATH, so some C++ checks skip or fail the same way on both). The menu, output-resolution and render-target pool checks were also compiled and run here with clang and pass:test_rt_pool_minimum,test_output_resolution,test_menu_keys,test_rumble_menu,test_menu_hit,test_menu_utf8,test_menu_restart.tests/test_rumble_menu.py's wheel check now names the new pages' mouse functions.tests/test_menu_keys.py's source checks pass.Screenshots
Debug tab, Menu size Small (2560x1500):
Debug tab, Menu size Medium (2560x1500), one column:
Inventory with a save loaded (3840x2160, Small):
Inventory on the title screen (2560x1500, Small) and at Large:
Output resolution set to 5120x2880 (2560x1440 window):
Teleport (3840x2160, Small):
🤖 Generated with Claude Code
@ -184,7 +184,7 @@ number is not the obvious one:| `gpu_device` | 0 Auto, n the n-th card with Vulkan 1.3 as the row lists them || `frame_generation` | 0 Off, 2 to 8 the multiplier || `resolution` | 0 Auto, 1 100%, 2 75%, 3 67%, 4 50% |Maybe now is the time to rewrite
output_res, even if it breaks existing, so that we aren't using ints anymoreThanks, the Debug tab grouping and the card pages look like a real improvement, and the Debug tab's Up/Down order (
debug_rows/debug_step) and the teleport row stepping read correctly to me. A few things before this can go in:tests/test_rt_pool_minimum.py(the only failure in both Python source checks jobs, and it's new, not one of main's known ones). The cap applies to every scaled pool, not just 5K: a 32:9 screen at the 4K output (hos_wide_out7680x2160) drops from 1373 MB to 900 MB, and a larger game pool at 4K from 1728 MB to 900 MB. The first one is the issue 1031 case the comment above the function describes, so "only 5K reaches it" in the description isn't right. Could the cap be limited to the 5120x2880 output (and the test get a 5K case) so the existing growth stays as it was?inventory_mousemovesinventory_pageand setschanged, but then in the same tick the non-amount branch hitsif (changed && !step) inventory_reveal();, which snaps the page back to the chosen item's page. Inline below.output_resas the size instead of an index.vk_menu.cppchanges are mostly elsewhere (startup screen), so it should be manageable.Smaller points:
oot_inventory_refreshcounts item 0 a second time forloaded; the loop just did that call.When the wheel turned the page in
inventory_mouse,changedis true andstepis 0, so this putsinventory_pagestraight back on the chosen item's page. The wheel has no visible effect unless an amount is being edited. Maybe only reveal when the choice actually moved (compareitem_choicebefore and after).@ -134,7 +135,9 @@ uint32_t hos_output_size(int height) {hos_wide_out, the output's height at the screen's shape: 7680 x 2160 for a 32:9 screen at the 4K output, twice the pixels the poolThis cap applies to the
hos_wide_outgrowth and to larger game pools too, not just 5K:test_rt_pool_minimum.pynow fails on{3840x2160, wide 7680x2160} -> 1373and{3840x2160, game 768} -> 1728, both clamped to 900. Limiting it to the 5120x2880 output would keep those as they were.Thanks for the updates, this looks good to me now.
Fixed:
test_rt_pool_minimum.pyhas the two 5K cases.inventory_reveal()only runs whenitem_choiceactually moved.Still open, none of it blocking:
gpu/vk/vk_menu.cpp,gpu/vk/vk_menu.h,readme.md,docs/development.md; it's 48 commits behind), so it needs a merge of main before it can go in. The Python checks haven't run on this push yet either.Thanks for the rebase. It merges cleanly now, and it's still good to go from my side.
I compared the new branch against what I approved at a724deb. The PR's own changes are the same line for line; only the surrounding context moved, onto the newer main (Anti-Lag 2 and #1500's mouse menus are kept, and Inventory and Teleport still go through
inventory_mouse/teleport_mouse). Nothing of main's is dropped. Main's later Ultrawide menus row (#1352) only touches the Graphics rows andOptions, and doesn't overlap with this.CI is red, but it isn't this PR. The failing tests are
test_recomplauncher_json.py,test_lift_cleanup_error.py,nx2/test_draw_parameters.py(Linux) andnx2/test_nup_out_of_space.py(Windows), and main atae08298fails the same four. The launcher-json and lift-cleanup ones are already fixed on main (ae44d7d, #1836). The tests this PR touches (test_output_resolution,test_rt_pool_minimum,test_rumble_menu,test_menu_hit) pass on both OSes.Still open, as before:
ce175ac), it should be easy to rebase onto #1814 once that lands, or to renumber. Whichever of #1670 or #1641 goes in second needs to sort out the id first.