- splat: libc2 C stdlib in 2 blocks — main 16-obj run libc2_1 (BZERO/MEMCPY/STRCMP/ PRINTF/PRNT[jtbl ok]/.../SETJMP) split from 800c, + STRCAT.o libc2_2 split from 800c2; new game-code fragments 800c3 + regenerated 800c2 - region byte-verified 17/17; PRNT.o printf-format jtbl resolves via NOLOAD .rodata - BOUNDARY GOTCHA found + fixed: SETJMP.o .text is 0x80 B (8-align pad), not the 0x78 psyq_identify reports (30 ins) -> the libc2_1/800c3 boundary was 8 B too low, overlapping SETJMP's padded tail; the relink inserted +8 padding and shifted the whole downstream image (56k diff bytes, +8 file len). Fix: boundary = last obj's readelf .text size (0x5CE18), not ins-count. Lesson recorded in docs/psyq-worklist.md - when a library block sits at a subseg start, rm the old .c so splat regenerates it - dual byte-gate PASS: 143dbb89 with and without the libc2 objects - LINKED 528 -> 590; REAL still 43; byte-identical 32.25%
1.5 KiB
BFM matching progress (generated by tools/progress.py — authoritative)
REAL substantive matches : 43 <- the Gen1-exit >=25 bar counts THIS LINKED real PsyQ objects : 590 <- byte-identical via linked SDK objects NON_MATCHING (near-miss) : 7 splat-auto empty no-ops : 42 INCLUDE_ASM stubs : 1411 data blobs (excluded) : 2
matchable functions : 2093 REAL / matchable : 43 / 2093 = 2.05% byte-identical/ matchable: 675 / 2093 = 32.25% (REAL+LINKED+empties)
LINKED subsegs: libc2_1 libc2_2 libcd1 libcd2 libetc libgpu libgs1 libgs2 libgs3 libgs4 libgs5 libgs6 libmcrd1 libmcrd2 (590 fns) REAL matches: CdQueueBusy CdReadRequest DebugMenuHandler GameModeDispatch LoaderResetReadState LzssDecodeSector ResourceGetCdLoc func_80012AB0 func_800168B4 func_80018F20 func_80019018 func_80019198 func_80019378 func_80019388 func_80019398 func_800193A8 func_8001AA78 func_8001AA88 func_8001B22C func_8001B374 func_8001B384 func_8001B85C func_8001BE20 func_8001BFA0 func_8001BFE8 func_8001D0E8 func_80029254 func_80029264 func_80029504 func_80029514 func_8002953C func_8002954C func_8002957C func_8002958C func_80029FD4 func_8002A26C func_8002A27C func_8002A4B8 func_8002A4C8 func_8002A728 func_8002A738 func_8002A998 func_8002A9A8 NON_MATCHING: CdReadSectorReadyCB CdReadStateMachine LoaderInitFileTable ResourceLoadStateMachine StreamLoadStateMachine func_80015A74 func_80016714
build SHA1: 143dbb89f34491258bbc27810d0a12ec8b43a8dd (byte-identical)
empties audit: 42/42 genuine jr;nop (all clean)