Skip to content

Add portable battle.status_hud_visible for GB/GBA and shared contracts - #148

Closed
Roxas2712 wants to merge 23 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-status-hud
Closed

Roxas2712 wants to merge 23 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-status-hud

Conversation

@Roxas2712

@Roxas2712 Roxas2712 commented Oct 23, 2026 •

Copy link
Copy Markdown

Mods using battle.status_hud_visible can currently hide DS healthboxes in Gen2Recomped, but the same callback leaves the native GB/GBA status panels visible. Add the missing classic/wide GB/GBC and GBA single/double producers, using the existing false-only predicate and original opaque battle owner.

A shared helper preserves existing DS custom-method veto/error fallback, accepts partial standalone battle objects and avoids dispatching the hook twice through the new native method. Hidden DS boxes still count as handled. Status visibility remains independent of battlers, battlefield/effects, party rows/summaries, bottom menus, input and logic. Capability queries now report the producer on all supported hosts.

Shared contract and scope

  • One unchanged example mod runs through both native Loaders and renderers on Red, Gold, FireRed and Emerald, with API 1, native/unified API 2 and unified API 3.
  • The native Gen1 GBA compositor uses a healthbox leaf spy; the pinned reference's unmodified GBA suite separately exercises actual healthbox art/text, doubles and Oak relighting. Gen2 tests exercise native GBA panel art, doubles, palette composition, both layout options across all 15 hosts, DS delegation and legacy overrides.
  • Gen1 Gold owns its intro ball rows inside its status HUD; Gen2 retains its existing separate party-row ownership. The contract compares status-panel behavior, not identical generation-specific intro pixels.
  • CI pins a clean Gen1 reference at 79ea62f45fb2ea8f65d081a109431e4eb1bbdb36. Documentation includes the full reproduction commands and callback-format boundaries.

Validation

  • 1,545/1,545 focused checks: shared predicate/lifecycle 33, native renderer routing 984, full native composition/input 528.
  • Capability suite: 346/346.
  • Unmodified native Gen1 GBA suite: 1,598/1,598.
  • Cross-engine matrix passes on both the feature branch and the combined integration checkout: 64 native worker runs / 128 paired observations.
  • Feature quick suite: 94/104 engine suites, SDK 3/3, B30 pass. The same 10 known baseline suites fail on parent Add portable battle.bottom_ui_visible dispatch and cross-engine contracts #147 (91/101); there are no new failure lines, and the formerly missing public test for this hook is now covered.
  • Combined with the existing portability and baseline-fix PRs: 148/148 engine suites, SDK 3/3, B30 pass.
  • StyLua, actionlint and git diff --check pass. All runs are ROM-free; imported-ROM playthroughs and pixel goldens are outside this validation.

Stack

Depends on #147 and its prerequisites. This PR targets main to follow the existing series; the feature-only review is parent #147 to this branch. Please merge in stack order.

Hosted CI

GitHub currently requires maintainer approval for all nine fork workflows (action_required), including the new status HUD contract run. Its job list is empty (0 jobs); no hosted tests have run yet. The passing results above are local, reproducible ROM-free runs.

# Conflicts:
#	src/mods/Loader.lua
# Conflicts:
#	docs/modding.md
#	src/mods/Loader.lua
#	src/world/WorldAPI.lua
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant