Repository navigation
feat(src): match func_L26_003D4590 and repair six copies of one catalogue entry - #392
Merged
Merged
Conversation
func_L26_003D4590 moves to L26_003D4590-g8.c with -O2 -G8 -ffunction-sections -frac2-zero-ti-por, the draft's profile. It is the retained draft with its two random-range upper bounds, D_L26_001B0464 and D_L26_001B045C, declared volatile MACRO_ADDR: as in the level-2 state machine (L02_003C43F0-state-g8.c), each range reads its upper bound absolutely before the lower bound, and each is read once. Either declaration alone leaves the function unmatched. D_L26_001B1748 is the int frame word that L26_003D4930-g8.c and L26_004070F8.c declare, tested through its low byte. Its draft and nonmatching/README.md row are removed. Commands run: python3 tools/check.py func_L26_003D4590 --version us|us2 (1 of 1 places match; not in pal) python3 tools/build.py all --strict --version us|pal|us2 (28 programs OK each) python -m unittest discover -s tests (339 tests OK) python tests/check_repository.py (passed) python tools/progress.py --check (passed) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
func_L26_003547D8's catalogue extent began with the previous body's 16-byte tail (sw $t3,0x40($v1); nop; addiu $sp,$sp,0x20; nop), the defect docs/MATCHING-BLOCKERS.md records for this body in levels 5, 12 and 20. The word at 26:00286D80 points to 0x003547E8 and nothing points to the four leading words. A named FUNCTION_ENTRY_OFFSETS entry, (288, 16), moves the entry and keeps the name and the end; regenerating the USA catalogue and carrying it with tools/carry.py --entries changes exactly that row in each release (272 bytes from 0x003547E8, PAL's 0x00356CD8 and v2.00's 0x003559A8), and the catalogues are stable on replay. The body is level 26's copy of func_L00_00354DF8, whose level-0 entry was corrected the same way: its C, with the level's own tables (D_L26_0028B320, D_L26_00286DD0, D_L26_0021CCB0, D_L26_001AA7F0, D_L26_001C9160), moves to L26_003547D8-g8.c. The draft that described the defect and its README row are removed, and docs/MATCHING-BLOCKERS.md notes the repair for the other five rows. Commands run: python3 tools/levels.py catalogue; python3 tools/carry.py --version pal|us2 --entries python3 tools/levels.py check (all 28 dumps equal config/programs.tsv) python3 tools/check.py func_L26_003547D8 --version us|pal|us2 (1 of 1 places match) python3 tools/build.py all --strict --version us|pal|us2 (28 programs OK each) python -m unittest discover -s tests (339 tests OK) python tests/check_repository.py (passed) python tools/progress.py --check (passed) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its functional draft and nonmatching/functional.tsv row go now that the function has matching C in L26_003D4590-g8.c, as tests/check_repository.py requires. Commands run: python tests/check_repository.py (passed) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
func_L04_00378838 (levels 4 and 10), func_L05_00367340, func_L12_0035A838, func_L14_0035F510 and func_L20_0036AE68 had the same catalogue defect as func_L26_003547D8: each extent began with the previous body's 16-byte tail, and a data word points to the real start in every placement (04:0029FE90, 10:0029F960, 05:0029D4F0, 12:00288180, 14:0028D180, 20:00292390) while nothing points to the leading words. Named FUNCTION_ENTRY_OFFSETS entries, (288, 16) each, move the entries and keep names and ends; regenerating the USA catalogue and carrying it with tools/carry.py --entries changes exactly those five rows in each release, and the catalogues are stable on replay. Each body equals func_L00_00354DF8's up to linker-filled addresses, so each is that function's C with its level's own tables, in a -g8 file of its own beside its old unit; the shared one names level 4's tables. The drafts for the level-4 and level-14 rows and the level-14 README row are removed, and docs/MATCHING-BLOCKERS.md records the repair. Commands run: python3 tools/levels.py catalogue; python3 tools/carry.py --version pal|us2 --entries python3 tools/levels.py check (all 28 dumps equal config/programs.tsv) python3 tools/check.py <each function> --version us|pal|us2 (every place matches) python3 tools/build.py all --strict --version us|pal|us2 (28 programs OK each) python -m unittest discover -s tests (339 tests OK) python tests/check_repository.py (passed) python tools/progress.py --check (passed) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ByteMatch progress reportSCES_516.07
No function changes. SCUS_972.68_v2
No function changes. SCUS_972.68
No function changes. Commit 7c3ea91 · Ratchet & Clank: Going Commando on ByteMatch |
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
Matches 7 functions: the two level-26 functions, and the five other copies of one of them, which had the same catalogue defect.
func_L26_003D4590(928 bytes; USA v1.01 and v2.00, not in PAL)L26_003D4590-g8.cwith-O2 -G8 -ffunction-sections -frac2-zero-ti-por, the retained draft's profile. The draft was already the right size.D_L26_001B0464andD_L26_001B045C, are declaredvolatileMACRO_ADDR, asD_L02_001B00FCis in the level-2 state machine (L02_003C43F0-state-g8.c). Each range reads its upper bound absolutely, before the lower bound, and each is read once. Either declaration alone leaves it unmatched.D_L26_001B1748is theintframe word thatL26_003D4930-g8.candL26_004070F8.cdeclare, tested through its low byte (the draft read it as a byte).nonmatching/functional.tsvrow go too, astests/check_repository.pyrequires.func_L26_003547D8and its five copies (272-byte bodies, all three releases)func_L26_003547D826:00286D80func_L04_0037883804:0029FE90,10:0029F960func_L05_0036734005:0029D4F0func_L12_0035A83812:00288180func_L14_0035F51014:0028D180func_L20_0036AE6820:00292390sw $t3,0x40($v1); nop; addiu $sp,$sp,0x20; nop).docs/MATCHING-BLOCKERS.mdrecorded it for the level 5, 12 and 20 rows. The repair was left unapplied there only because the PAL and v2.00 catalogues had to be carried. In every placement a data word points to the real start, and nothing points to the four leading words.FUNCTION_ENTRY_OFFSETSentries,(288, 16)each, move the entries and keep the names and ends.tools/carry.py --entriesfor PAL and v2.00 changes exactly these six rows in each release.func_L00_00354DF8's (whose level-0 entry was corrected the same way) up to linker-filled addresses. So each is that function's C with its level's own tables, in a-g8file of its own beside its old unit, at the default flags. The shared row names level 4's tables.docs/MATCHING-BLOCKERS.mdrecords the repair.Worth a look:
volatiledeclarations infunc_L26_003D4590. An independent review disassembled the object: retail'slui $at/lwc1for each upper bound comes before the lower bound's$gpload in the call's delay slot, and each upper bound is read once, so the qualifier invents no access.Checked
On
7c3ea917(onfe9a7138), on the compiler rebuilt withtools/compiler/build.sh(no compiler changes since), on all three releases:python3 tools/build.py all --strictwith--version us,palandus2: 28 programs OK on each.python3 tools/check.py <func> --version us|pal|us2for all seven: every place matches in each release that has the function (func_L04_00378838: 2 of 2 on USA;func_L26_003D4590is not in PAL).python3 tools/levels.py check: all 28 dumps equalconfig/programs.tsv.python -m unittest discover -s tests: 339 tests OK.python tests/check_repository.py: passed.python tools/progress.py --check: passed; the reports of us, pal and us2 agree.progress/and the README table are not touched.