Skip to content

Ocarina of Time starts handheld, with its dynamic resolution and MetalFX for its upscaling pass (profile keys dynamic_resolution, upscaler) - #2314

Open
Fasen24-AI wants to merge 1 commit into
seedds:mainfrom
Fasen24-AI:up-oot-start-settings
Open

Fasen24-AI wants to merge 1 commit into
seedds:mainfrom
Fasen24-AI:up-oot-start-settings

Conversation

@Fasen24-AI

Copy link
Copy Markdown

What and why

A player who changes nothing starts Ocarina of Time docked, at full resolution, with the game's own upscaling network. On a Mac that is the heaviest choice in GPU time and in render-target memory, on a 16 GB Mac too. I have played it and measured it for weeks on another start: handheld, the game's dynamic resolution on, MetalFX's spatial scaler for the upscaling pass. This makes that the game's own default, from its profile.

  • op_mode handheld, an existing key: the 720p profile, with less vegetation.
  • dynamic_resolution on, a new key (DM_GAME_START_DYNAMIC_RESOLUTION): loader.c takes it when DM_DYNAMIC_RESOLUTION is unset.
  • upscaler metalfx, a new key (DM_GAME_START_UPSCALE): MetalFX draws the game's upscaling pass, and the game's own network still does where the GPU has no Metal 4 MetalFX scaler.

The two new keys default to off and game, so every other game starts as before. The launcher rows for DM_DYNAMIC_RESOLUTION and DM_UPSCALER take their default from the profile, and the host reads the same macros when the variable is unset, so the window and a start without the launcher agree. A player's saved choices and env files still win. Neither key is an input of the shader library: an app built before keeps its shaders, and only the host and launcher.json change.

On my branch the same start also draws the full output size (DM_OUTPUT=native), which main does not have; that part is left out here.

Checked

Front ends

Front-ends: interface: launcher.json's defaults for DM_DYNAMIC_RESOLUTION and DM_UPSCALER come from the game profile; a front end that shows the list's defaults needs no change.

Docs

  • The keys are in dm/games/README.md's profile table, and the profile says why
  • A chain tool changed (none)
  • No game files, keys or data extracted from a game in the change or the attachments

🤖 Generated with Claude Code

https://claude.ai/code/session_014eD437mxrMnW2UwLZhpwc7

…MetalFX for its upscaling pass: profile keys dynamic_resolution and upscaler

The launcher's defaults were the host's for every game: docked, full resolution, the game's own upscaling network. For Ocarina of Time that is the heaviest choice in GPU time and in render-target memory, and it is what a player who changes nothing gets, on a 16 GB Mac too. Its profile now starts it on the settings I have measured and played it with:

- op_mode handheld (an existing key): the 720p profile, with less vegetation;
- dynamic_resolution on (new; DM_GAME_START_DYNAMIC_RESOLUTION): loader.c takes it when DM_DYNAMIC_RESOLUTION is unset;
- upscaler metalfx (new; DM_GAME_START_UPSCALE): MetalFX's spatial scaler draws the game's upscaling pass, and the game's own network still does where the GPU has no Metal 4 MetalFX scaler.

The two new keys default to off and game, so every other game starts as before. settings.tsv's rows for DM_DYNAMIC_RESOLUTION and DM_UPSCALER take their default from the profile, and the host reads the same macros when the variable is unset, so the window and a start without the launcher agree. A player's saved choices and env files still win, in the order docs/frontends.md gives. Neither key is an input of the shader library: an app built before keeps its shaders, and only the host and launcher.json change.

These are the settings of the runs in the reference entry "Render targets a game moved stayed in GPU memory" (M5, 24 GB), on a branch that also draws the full output size (not in main). There is no run of this change alone against the old defaults, and none since 084f5aa made the graphics scale tier 0 in handheld mode too.

Front-ends: launcher.json's defaults for DM_DYNAMIC_RESOLUTION and DM_UPSCALER come from the game profile; a front end that shows the list's defaults needs no change.

Checked: test_settings (which now also checks this game's upscaler default), test_launcher_settings and test_game_profile pass; the Mac host builds. Not run: the game on main, whose shaders do not convert there since 0662f9d (issue seedds#2272); an iPhone, where the same defaults apply.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014eD437mxrMnW2UwLZhpwc7
@github-actions github-actions Bot added host The Horizon host: SVCs, services, threads, memory (dm/host) nvn NVN on Metal and its tests (dm/gfx/nvn, dm/gfx/tests) tools Tools and scripts (dm/tools, scripts) docs Documentation game: 0400486024DEC000 A game labels Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation game: 0400486024DEC000 A game host The Horizon host: SVCs, services, threads, memory (dm/host) nvn NVN on Metal and its tests (dm/gfx/nvn, dm/gfx/tests) tools Tools and scripts (dm/tools, scripts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant