Skip to content

Add portable Pokémon level visibility for GB/GBA screens - #151

Closed
Roxas2712 wants to merge 26 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-level-visible
Closed

Roxas2712 wants to merge 26 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-level-visible

Conversation

@Roxas2712

@Roxas2712 Roxas2712 commented Oct 23, 2026 •

Copy link
Copy Markdown

Mods that suppress native level text currently need different screen patches in Gen2Recomped. This adds Gen1Recomp's pokemon.level_visible contract to the shared GB/GBA surfaces: returning literal false hides the complete level label and digits in battle, party and summary screens. Native status/egg eligibility, HP/EXP, input and progression stay intact; GB summary next-level numbers and their TO label/arrow are gated together.

The hook receives (mon, {where, game}), with where identifying battle.enemy, battle.player, party, or summary. It uses the existing Pokémon/context adapters for unified API 2 and API 3, checks subscriptions before allocating a context, and advertises only the implemented Gen1–3 call sites. DS renderers remain unavailable through supports. Includes an unchanged portable example, documentation and pinned cross-engine CI.

Validation

  • Three new ROM-free suites: 31,929/31,929 checks, including real GB classic/wide HUDs, GBA single/double healthboxes and art/window fallbacks, party level 100, summary variants, per-side visibility, status/egg rules, native context, delegation/failure recovery and cleanup.
  • Same example through both real SDKs: Red, Yellow, Gold, FireRed and Emerald, native API 1/2 and API 3, plus Gen2 unified API 2 against Gen1 native API 2. Gen1 has no callback_format extension; API 3 is the common unified contract. All four modes pass on the feature branch and combined integration tree (80 worker runs / 680 paired observations).
  • Pinned, clean Gen1 79ea62f45fb2ea8f65d081a109431e4eb1bbdb36: existing native Gen2 hook suite 645/645, native Gen3 hook suite 2,004/2,004, unchanged.
  • Feature branch: 103/113 engine suites, SDK 3/3, B30 profile passes. The same ten baseline suites fail with exactly the same 26 failure lines as the parent; no new failures.
  • Combined portability + existing baseline-fix PRs: 157/157 engine suites, SDK 3/3, B30 profile passes, all requested ROM-free tiers green (b8efa1a8a21a00216c4be75a4c36b0f06b01bfd1).
  • StyLua checks, actionlint and whitespace checks pass. These are draw-command/behavior tests, not GPU pixel goldens or cartridge playthroughs; ROM-dependent tiers are skipped.

Stack

Depends on #150 and its prerequisite portability PRs. Feature-only change: ca7aed5…6e61c01. The combined QA tree also preserves the independent render/output and baseline-fix branches; their shared callback catalog entries were retained when combining the series.

Hosted CI

GitHub reports all 12 workflows as action_required pending maintainer approval for this fork PR. The new level visibility contract run has no jobs yet. The passing results above are local checks against the published feature commit and combined QA tree; hosted CI has not executed.

# 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