Skip to content

Bc object5 - #2

Open
Eletonyy wants to merge 20 commits into
mainfrom
bc_object5
Open

Bc object5#2
Eletonyy wants to merge 20 commits into
mainfrom
bc_object5

Conversation

@Eletonyy

Copy link
Copy Markdown
Owner

No description provided.

Eletonyy and others added 20 commits September 5, 2026 21:49
Full-Life links eighteen of the library units, one fewer than effect_039: it
carries no lib/tint, driving the four D_800EF738 entries from its own opcode
handlers instead, and its entry sets up three task pools where Drain sets up
four. Ring sizes 0x31 and 0x8B.

100 of its 125 functions come from src/effect/lib and 23 more are bodies
already written for effect_001, effect_025, effect_028 and effect_052. The two
that are new are the entry point and the bank carve, which is effect_039's with
Full-Life's own constants.

func_801A9490 is the exception that has to be written out rather than ported:
it has the same shape as effect_025's func_801A548C but calls
effectDrawScriptRun where that one calls effectStepCounter, since Full-Life
links no lib/step. Masked bodies compare equal because call targets are
relocations, so the callee has to be read off the aligned symbol streams.

Nothing here belongs in the library. Six of the twenty-one bodies the library
does not own appear more than once inside a single overlay -- one no-op reaches
169 copies -- so they are copied script handlers, not linked members. The seven
that are single-copy everywhere still fail the test that decides it: a linked
object's members are always adjacent, whereas these keep different neighbours
in every program that carries them, and some appear without the members they
would share an object with.
The four tint entries are walked through a cursor, so the loop index is never
read; it was written as a countdown only because that is the shape gcc emits.
The ascending form is what the surrounding handlers use and assembles the same.

lib/common.c keeps its countdown: that one indexes text[i] and fills the hex
digits from the least significant nibble, so its direction carries meaning.
Both walk a cursor and never read the index, which is exactly the shape that
invites rewriting them ascending. Doing so assembles differently and effect_025
stops matching, so the countdown has to stay and should say why.
Only effect_025 links these units today, so citing it as the thing that breaks
would read as if the other overlays were free to rewrite the loop. What holds
is that the ascending form generates different code.
Nothing else in the effect sources marks up code in a doc comment that way.
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.

2 participants