Skip to content

Borrow native opponent send-out timing for visual tween providers - #379

Closed
Roxas2712 wants to merge 64 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/upstream-native-opponent-sendout-tween
Closed

Roxas2712 wants to merge 64 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/upstream-native-opponent-sendout-tween

Conversation

@Roxas2712

Copy link
Copy Markdown

Native opponent send-outs never invoke the existing visual tween seam, so a presentation provider cannot start its opponent throw/return actor. Offer it from the actual native ball constructor and consume mapped progress through the same native ball update, sound dispatch and queue wait.

The 35-unit presentation coordinates are explicitly distinct from imported cartridge ticks (16 opening-delay, 12 emergence and 7 trainer-exit units). A visual extension holds the genuine native wait and any remaining shiny tail. Default and delegating wrappers preserve the complete native frame/queue/wait/position/HP/PP/sound trace. Detached observations cannot shorten the lease. Saved callbacks, suspended children, replaced hooks/owners/cohorts and callback errors cannot borrow later native authority. No private actor/controller body is copied.

Validation: 187 frozen CPU groups on main 0af0b3cf, plus final 2,120 focused ownership/timing assertions and the existing-API admission probe's 350 checks. The identical admission fixture reproduces 20 failures on exact predecessor 613f788f without a new module/controller overlay. Older-public composition passes 72 groups including the same 2,120+350, retaining its qualified native tick byte-for-byte. A corrected fixture supplies shared personality/OT identity; the earlier older-body shiny-flag failure and intentional completed-snapshot GC false positive are preserved.

Real Metal Ruby 44952637b4 with unchanged private consumer bddb5181 uses imported TIANA/portrait 2. Both native starts and player flight pass; the actual opponent pose produces 26 visible flight rows and six opponent captures, reaches the native command menu and cleans up without loader errors. No duplicate cell occurs in 378 source opening passes. Its images expose another missing battler hidden/scale observation before ball opening, which is separate follow-up work. Switches, other portraits, complete scene and sustained FPS acceptance remain separate; hosted CI is separate.

Owned QA copies/profiles only, 20 GiB free floor. Private files and player saves/profiles are untouched.

Builds on the offered public stack (#378 phase, #377 painter, #376 import, #374 progress). The raw branch reuses the unchanged animation adapter prerequisite from #329 and factors its own older inline native ball tick with unchanged body bytes apart from indentation. Review the bridge addition 1fee34a4..40adea98, followed by the shared-genotype fixture correction. The qualification composition retains its already-factored native tick without overlaying a newer controller. Earlier cartridge/stage/clock bindings remain required for complete raw-branch integration.

Contributions by Roxas2712 — https://github.com/Roxas2712. Original additions are offered under LICENSE-ROXAS2712.md, including specific integration/distribution permission for Cedric / UNDERdecoded with visible credit. Existing upstream/third-party licences and rights remain intact.

Roxas2712 and others added 30 commits October 21, 2026 21:07
# 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