Skip to content

Separate opening effects from source-rendered ball cells - #377

Closed
Roxas2712 wants to merge 54 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/upstream-native-ball-opening-effects
Closed

Roxas2712 wants to merge 54 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/upstream-native-ball-opening-effects

Conversation

@Roxas2712

@Roxas2712 Roxas2712 commented Oct 28, 2026 •

Copy link
Copy Markdown

A source battle renderer paints its fitted ball, then calls the opening-effect seam. That seam currently paints the full native ball again, producing two balls with different sizes and trajectories; this is visible in the real FireRed capture after send-out import was fixed.

Split the existing native painter into a whole-layer path and an opening-effects component. Ordinary native drawing retains its ball, particles and stars. A source opening pass borrows the same effects without adding another cell. A wrapper base call inside the genuine native whole-layer boundary still borrows that complete painter once. Neither path advances a clock or changes native queue/catch logic. No private renderer/controller body is copied.

Validation: 235 real-painter assertions across five editions and player/opponent/capture modes; the identical fixture reproduces 45 failures on exact predecessor e8d494e1. Current fork composition passes 181 CPU groups after integrating freshly fetched main 0af0b3cf, with four new-main appearance/new-game/ending groups passing separately. Older-public composition passes 69 groups including all 235 new assertions. Refreshed fork FireRed run 368069098b now passes both real starts, 69 actual ball frames and five captured flight frames: 412 source opening calls contain zero duplicate native cells; the complete native ball clock is identical to pre-split b3d97aa123. Captures show one ball with grip-to-flight scale progression. Earlier 49a837bef7 had the same corrected images but was rejected by an overly broad all-target asset counter; that failed receipt is retained. The scoped observer preserves legitimate native painting. LeafGreen 0237101bb2 also passes both starts, 69 actual ball frames, five captures and 469 source opening passes with zero duplicate cells and no loader errors. An earlier relative-path QA startup failure is retained and its input-path handling corrected. The focused hosted fork ball workflow also passes on dd5a507d; this does not claim rendered acceptance of the older-public composition. No complete trainer-pose or FPS acceptance is claimed. Hosted CI is separate.

Owned QA profiles/copies only, 20 GiB free-space floor; private files and player saves/profiles untouched.

Builds on the offered public component stack (#376 import, #374 progress). This branch also reuses the existing ball painter boundary offered in #329; its preimage is unchanged, and no newer native simulation body is overlaid. Review the component split as cc2496d0..515e5b46. The qualified composition retains separately offered cartridge/art/stage prerequisites, which raw older main still needs for full 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