Repository navigation
fix(nonmatching): repair five large actor and loader reconstructions - #390
Merged
Merged
Conversation
Retain useful corrections to the five largest available USA v1.01 routines without promoting any of their 58,424 retail bytes to matching C. Recover the orbit controller's float conversions, canonical collision and animation callees, byte addresses and complete shared scratch storage. Keep Joba's projectile branches separate, model its common hero object, and preserve the strict angle clamp and selector/mount transition order. The level loader's explicit C loop reproduces its 24-word record-copy sequence at all 27 USA placements without a compiler patch. Normal aligned template assignments reproduce both robot copy loops at 54 USA v1.01/v2.00 placements. Correct the robot's collision-state reload and voice layout, and the shared hero NPC's voice-active byte, captured copy inputs and diagnostic argument. Preserve actual helper return contracts even when discarded, plus the render command packer's 64-bit argument widths. Update the existing nonmatching index and compiler/blocker notes with the measurements and remaining obstructions. All five complete functions remain nonmatching and are not functional-gated. Production sources, flags, catalogues, the functional manifest and progress reports are unchanged. Private disassembly, objects and trial evidence are not included. Validation: - tools/build.py all --strict --version us: 28 programs OK, zero C fallbacks. - tools/build.py all --strict --version us2: 28 programs OK, zero C fallbacks. - tools/build.py all --strict --version pal: 28 programs OK, zero C fallbacks. - python3 -m unittest discover -s tests: 339 tests passed. - tests/check_repository.py and tools/progress.py --check for all three releases passed. - All 7,567 qualified production inputs agree with the host checkout; LF/diff checks passed. - Candidate checks: 0/87 complete placements. No functional replay or gameplay test.
ByteMatch progress reportSCUS_972.68_v2
No function changes. SCES_516.07
No function changes. SCUS_972.68
No function changes. Commit abcc1a4 · Ratchet & Clank: Going Commando on ByteMatch |
Veradictus
added a commit
that referenced
this pull request
Nov 2, 2026
Rebase the functional row on the retained draft of #390. Selector 10's angle clamp now uses retail's strict compares (c.lt.s on both bounds), so an unordered angle is stored unchanged where the earlier C stored +pi/2. The other changes of the draft (hero globals as one object, separate projectile arms in cases 38/39, selector 0's branch order) do the same as before. Case 23 keeps this row's WORD(state, 0x56c) for the func_002B6228 path, which retail reads at 0x4231B8 and 0x4231E0; the draft still has 0x54c. Gate: fcheck SAME on 4 calls; fcheck cover runs 171 of 3,958 retail instructions, and neither selector 10 nor case 23 is among them, so both changes rest on reading retail.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Repair retained C for the five largest available unfinished USA v1.01 routines
(58,424 retail bytes). No complete function matches, no matching credit is added,
and none of these drafts is enabled in the functional manifest.
func_L22_0039D708: recover three float-to-int conversions, the canonicalcollision and animation callees, all five collision arguments, complete byte
addresses, and real vector/matrix scratch storage. The old draft silently used
zero for unsupported operations and split vector fields into unrelated locals.
func_L11_00420C88: preserve separate projectile paths, the shared hero-stateobject, strict angle comparisons, and selector/mount transition order.
func_L00_00300618: use an explicit C loop that preserves the four source-cursoradvances. Its complete 24-word record-copy sequence now equals retail at all
27 USA placements, without changing the compiler.
func_L00_003AE900: use normal aligned template assignments with the currentcompiler, preserve the state reload following the collision call, and describe
the actual voice-record layout. Both template-copy loops agree at all 54 USA
v1.01/v2.00 placements; the rest of the function still differs.
func_L08_003CDF98: correct the voice-active byte and record stride, capturecopy inputs, restore the diagnostic argument and use an absolute hero-pointer
load. Its inherited fast-math profile remains provisional.
Keep known helper return contracts even when ignored, and retain the command
packer's 64-bit argument widths. These were checked against the matched callee
definitions and recompiled; they do not produce a complete match.
func_L22_0039D708func_L11_00420C88func_L00_00300618func_L00_003AE900func_L08_003CDF98Size is diagnostic only. The updated source headers, nonmatching index and existing
compiler/blocker notes record the remaining differences and useful next experiments.
Production sources, flags, catalogues, the functional manifest and progress reports
are unchanged. No game data or generated evidence is included.
Checked
Validation:
Candidate checks still reject all 87 applicable placements. Only
func_L00_003AE900has the same identity in USA v2.00; all five identities are absent from PAL. This
does not claim that related gameplay code is absent from those releases.
tools/regalloc.py func_L00_003AE900 --jsonconfirms that diagnostic and normalobjects agree. No functional capture replay or native gameplay test was run; the
strict production builds above do not qualify code retained in
nonmatching/.