Skip to content

Add portable battle move-grid navigation and native controller contracts - #153

Closed
Roxas2712 wants to merge 28 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-battle-grid-navigation
Closed

Roxas2712 wants to merge 28 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-battle-grid-navigation

Conversation

@Roxas2712

@Roxas2712 Roxas2712 commented Oct 23, 2026 •

Copy link
Copy Markdown

Custom battle UIs currently need to replace native move-menu input code to choose grid navigation. This adds the public battle.move_grid_navigation predicate at the real move-selection controller, preserving the original opaque battle/screen handle across API 1/2 and API 3.

Only literal true selects the grid. The normal mode remains the default; Gen1 wide GB retains its fixed-grid bypass, and Gold-family wide mode accepts an explicit list override. The shared decision also controls Mimic selection. GBA doubles now clamp at row/column edges, correcting Gen2's previous generic wrapping to match Gen1's native doubles controller; DS retains its native grid behavior.

Stack

Depends on #152 and the earlier portability series. Feature-only comparison: 97eac55…3800b63. Earlier changes appear in the main-based diff until their prerequisites merge.

Validation

  • Native navigation suite: 6,426/6,426 checks, all 15 Gen2-host games and four SDK modes, including defaults, wide layouts, Mimic, unsubscribe and wrapper recovery.
  • The unchanged example runs through both real SDKs and native move controllers for Red, Yellow, Gold, FireRed and Emerald; API 1 native, API 2 native/unified and API 3 unified. Clean Gen1 reference: 79ea62f45fb2ea8f65d081a109431e4eb1bbdb36.
  • Repeated on the feature commit and combined fork runtime: 80 workers / 3,840 paired navigation observations.
  • Feature quick run: 105/115 engine suites, with exactly the same ten baseline failing suites and failure lines as Add portable auxiliary battle menu actions and shared native contracts #152; SDK 3/3 and B30 pass.
  • Combined fork runtime c24e3a2f9987e1f420ed81a79c7f1e7caf61df72: 160/160 engine suites, SDK 3/3, B30 pass.
  • Unmodified Gen1 native hook suites: 645/645 and 2,004/2,004.
  • Native LÖVE 11.5 boot smoke tests reach intro/title/New Game for Red, Gold, FireRed and Emerald in an isolated identity. These are startup checks, not full playthroughs or GPU pixel goldens.
  • Workflow passes actionlint; shared consumer, native fixtures, checker and contract documentation are included.

Hosted CI: all 14 PR workflows currently report action_required and await maintainer approval. The new battle-grid run has zero executed jobs. The passing results above are local validation.

# 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