An early prototype wrote ARGB2222 sprites into OoT3D's fixed 400x240 framebuffer. Upscaling that result could never preserve HD detail. The release instead uses OoT3D's GPU board renderer, allowing supported emulators to substitute a 2048x1024 RGBA texture before rendering at the configured internal resolution.
The implementation reuses the normally hidden stereoscopic motion-control board and points it at the
2:1 cam_interface00 slot. Azahar identifies the replacement as:
tex1_256x128_F23CD5DE9DCE99C4_4_mip0.png
The board's external position, UV, and index buffers are retained. native_hud.c updates the live
quads after OoT3D's normal gameplay update. Native V coordinates use the opposite origin from PNG
pixel coordinates.
The 75%, 100%, and 125% size presets rebuild geometry from a fixed base copy, then use the game's native position setter to refresh the GPU buffer. The Off state hides the board and collapses the separate live action prompt. Texture data stays at its original resolution.
- A action prompt: the original changing action art is repositioned and resized.
- B/X/Y: reads current button items.
- D-pad Left/Down: reads the active I/II assignments; an unassigned slot is transparent.
- X/Y/I/II ammo counts: reads the live quantity for sticks, nuts, bombs, arrows, seeds, Bombchus, and beans; non-consumable and unassigned items have no count.
- D-pad Up/Right: Navi/View and Ocarina.
- Hearts: reads health capacity and current health, including partial and empty-heart states, for all 20 possible heart containers.
- Magic: reads acquired state, capacity, and current amount.
- Rupees: reads the current wallet value and draws native digits without a black panel.
All HUD state access is read-only.
Only the low-index portion of the reused board proved reliable with the target game and emulator. The HUD therefore packs each adjacent pair of hearts into one quad. Ten pair quads display OoT3D's full 20-heart maximum, leaving the remaining reliable low-index quads available for rupees and magic. The replacement atlas contains every sequential two-heart fill state needed by the live health value.
- Keep custom texture art outside
code.ips. - Preserve full RGBA resolution; do not convert release art to framebuffer sprites.
- Keep private source art, game extracts, and full-resolution generated atlases out of the source snapshot.
- Keep D-pad routing and the free camera independent from texture loading.
The atlas-building tools operate only on user-supplied, legally obtained source textures. The source package does not contain those full-resolution inputs or the generated replacement atlas.
These addresses are for the legally extracted USA 1.0 executable with text base 0x00100000.
| Address | Role |
|---|---|
0x00481194 |
Loads the localized menu texture set |
0x00480E98 |
Builds a native HUD board and registers it |
0x00348F34 |
Constructs a GPU board from vertex/index buffers |
0x00348A64 |
Assigns a texture and initial board coordinates |
0x0034897C |
Registers a board with the renderer |
0x0036759C |
Uploads the board position buffer |
0x002E11D0 |
Retrieves a loaded menu texture by slot |
0x00469590 |
Constructs the motion-control top-screen quad |
0x004FC648 |
Motion-control quad visibility flag |