Skip to content

Back native GBA modal menus with actual engine states - #229

Closed
Roxas2712 wants to merge 21 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/native-gba-modal-stack
Closed

Roxas2712 wants to merge 21 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/native-gba-modal-stack

Conversation

@Roxas2712

@Roxas2712 Roxas2712 commented Oct 25, 2026 •

Copy link
Copy Markdown

Native GBA menu modules currently have no modal stack in this engine. This adds src.ui.game3.stack as a view over the real StateStack: menus keep their actual native owners, input, enter/exit callbacks and screen events while world and battle controllers remain outside the modal plane.

Named close/reopen, nested draw ordering, fullscreen predicates and preview suspension/restoration use those same states. Preview leases reject retired states, another map, another save or another session, including copied layer arrays. GBA widgets request their actual 240×160 surface. Main-screen mirroring still respects screen.render_visible without changing input ownership.

Depends on #146 (portable screen visibility); the branch starts at its pushed head. It contains no Gen2 persistent-world, battle-view or mod-port changes. No private mod source, game data or ROMs are included.

Validation:

  • 116 native lifecycle, UI factory, input, stale lease, reload and rendering checks on this standalone branch; 94 shared-consumer checks.
  • One unchanged 46-check consumer on native Gen1Recomp 535a5ec088c1ae1bf4d91dd3e35a56f64cf46d91 and this fork, separately for FireRed and Emerald; equal results. CI pins the reference.
  • Existing screen visibility and routing suites pass on the standalone branch. Both new suites fail against the preceding source without the feature.
  • The combined development branch passes all 266 engine suites, the SDK tier and the B30 gate. Four separate FireRed/Emerald macOS hardware-GPU runs on Metal and OpenGL (VSync 1) pass native menu input/nesting, preview suspension/restoration, a legacy GBA modal over the actual battle controller, native escape and same-map return. All 16 fresh owned-window proofs pass. Engine QA mod, introduction bypassed, no original OASC GPU compatibility claim. Windows/macOS QA packages have identical verified payloads; Windows hardware is untested.

Source-bound GPU and scope receipt. The public preview release remains unchanged.

Roxas2712 and others added 21 commits October 21, 2026 21:07
# Conflicts:
#	src/mods/Loader.lua
# Conflicts:
#	docs/modding.md
#	src/mods/Loader.lua
#	src/world/WorldAPI.lua
@Roxas2712 Roxas2712 closed this Nov 4, 2026
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