Skip to content

Split four merged extents and match ten C functions (240 bytes) - #416

Merged
llesieur99 merged 2 commits into
masterfrom
match/ten-exact-20261104
Nov 4, 2026
Merged

llesieur99 merged 2 commits into
masterfrom
match/ten-exact-20261104

Conversation

@llesieur99

Copy link
Copy Markdown
Collaborator

What

Recover the separately entered functions inside four previously merged level catalogue extents and implement ten C functions: one 168-byte entity-group traversal and nine genuine no-op callbacks, 240 distinct USA v1.01 code bytes. Their carrying placements total 28 per release, 84 across USA v1.01, USA v2.00 and PAL.

Family C functions Distinct bytes Placements per release
func_L19_0041C328, func_L19_0041C3D0 2 176 2
func_L14_004321C0, func_L14_004321C8 2 16 2
func_L13_0043E8C0, func_L13_0043E8C8, func_L13_0043E8D0 3 24 3
func_L06_0047C1D0, func_L06_0047C1D8, func_L06_0047C1E0 3 24 21

The Grelbin tail is the handler of fifteen distinct moby class records; the second Aranos Prison entry has its own handler record. Each camera activate/update/exit entry occupies a separate slot in a complete camera record. Equal bytes do not collapse the two camera families that coexist in Boldan. Only the named families are repaired, including all seven copies of the L06 family in every release.

Require the complete normalized body, original family/kind/count, EE text containment, nonoverlapping extents and actual typed dispatch witnesses before splitting. Reject partial or conflicting metadata; verify every existing child on replay. Preserve the original ends and total code bytes. Existing identity preservation now includes both the old merged and new split fingerprints, keeping unrelated equal-byte entries unchanged. Historical bootstrap reuses these known placements rather than merging them again.

The three level catalogues are regenerated, with exactly four old rows changed and six independently witnessed identities added in each release. Every unrelated row and boot catalogue remains identical. The bounded read-only progress check recognizes the exact old unmatched merged rows while reports await the maintainer's refresh. Wrong addresses/extents, partial/matched old credit, partially reported children, unknown missing or retired rows, duplicates and strict-mode staleness remain errors.

All matching work was done by one agent from f9e8de4b, under the contributor's existing #152 reservation. No subagents were used. Previous PR #414 matches are outside this batch. Useful old reconstructions remain recoverable in Git/private state after the resolved copies are retired.

Checked

  • Maintained catalogue generators replayed twice for all three releases: exactly four old level rows split into ten entries, six new names, unchanged unrelated rows and boot catalogues, byte-identical replay.
  • python3 tools/check.py <name> --version <release>: all ten C functions accepted at all 84 carrying placements; two independent existing controls also pass.
  • python3 tools/build.py all --strict --jobs 6 --version us, us2 and pal: 28 programs OK per release, 84 total, zero C fallback. Every intended C definition and control verified in its placed.json. All production inputs stayed unchanged during qualification.
  • python3 -m unittest discover -s tests: 382 tests passed, including the named-split, collision, replay, historical-bootstrap, rejection/no-write and report-staleness controls.
  • python3 tests/check_repository.py: repository checks passed using real Git metadata in the existing image, after retiring the resolved NMC duplicates.
  • python3 tools/progress.py --check --version us, us2 and pal: all pass without rewriting any report; pending source credit and existing report consistency remain separate.
  • Changed text is LF and git diff --cached --check passes. Current qualified compiler tools were reused unchanged. Worktree/source ownership and reservations were checked before selecting the functions.

No game/SDK assets, disassembly, proprietary tools, generated reports or compiler recipe changes are included. Native PC gameplay is not tested by this matching change.

Promote the retained 168-byte Grelbin group traversal and recover nine
separately entered no-op callbacks, for ten ordinary-C functions and 240
distinct USA v1.01 code bytes. Their 84 carrying placements span all three
releases. The callbacks are real independent entries: fifteen moby class
records reach the Grelbin handler, one reaches Aranos Prison's second
entry, and complete camera records use the three distinct method slots.

Split only the four reviewed level extents, validating complete normalized
bodies, original placement families, EE text containment, nonoverlap and
typed dispatch witnesses before writing output. Preserve both camera
families that coexist in Boldan despite equal bytes. Keep stable identities
for both old whole and new split fingerprints, so unrelated methods do not
regroup when the rows shrink. Support unchanged replay and historical
bootstrap from known placements; reject partial or conflicting metadata.

Regenerate the three level tables: four old rows change and six actual
entry identities are added per release. Unrelated rows, all boot tables,
original ends and total code bytes remain unchanged. Retire the resolved
near-miss and functional copies while preserving their previous history.

Extend the bounded read-only report check to the exact old unmatched level
rows and their complete current child graph. Wrong extents/addresses,
partial or matched old credit, partially reported children, duplicate
compensation, unknown missing/retired entries and strict staleness fail.
No report is rewritten or credited by the exception.

Validation in the existing qualified image:
- Two generator replays: unchanged output and unrelated rows in US/US2/PAL.
- All ten candidates at all 84 carrying placements pass local comparison.
- tools/build.py all --strict: 28 OK per release, 84 total, zero C fallback.
- Every intended C definition and two controls verified in placed.json.
- 382 unit tests, real-Git repository and all three progress checks pass.
- Production inputs frozen during qualification; staged text is LF.

Work performed alone. No compiler recipe change, progress regeneration,
original-assembly classification or native gameplay test in this batch.
Explain why the four merged extents contain ten independent functions,
including nine genuine no-op methods and the retained Grelbin traversal.
Document the typed dispatch witnesses, preserved camera-family identities,
complete-extent guards, stable replay and historical bootstrap behavior.

Reconcile the existing blocker entry and link the qualified source commit.
Keep Hrugis's unentered return tail and the separate L00 stub family open,
without generalizing a named repair to arbitrary return-looking bytes.
Describe the bounded report-staleness check without adding a second
experiment register or regenerating any report.

Validated source names/links and LF bytes. The source passed all 84 strict
programs, 382 unit tests, repository and all three progress checks; every
intended C placement was checked. This documentation changes no build input.
@llesieur99
llesieur99 merged commit 21cf011 into master Nov 4, 2026
2 checks passed
bigbeno37 added a commit that referenced this pull request Nov 5, 2026
tools/build.py all --strict on master 236cfdf (after #416, #417, #418,
#420, 4b786ab, 4d6e47b and 236cfdf): 28 programs OK in each of us,
pal and us2. tools/progress.py for each release; --check --strict passes
for all three.

US 8,173 of 8,584 (91.80%), PAL 7,242 of 8,677 (56.58%),
US2 7,932 of 8,639 (86.02%).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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