Phase 7 closes the milestone: 34 distinct byte-identical bodies across 39
registered regions, up from 11 bodies / 12 regions at Phase 6 close, with every
region end derived from control flow instead of by hand.
New cookbook findings, each byte-proven:
- 13: a store-only function leaves its constant in v0 as scratch. Writing
`return 1` costs an instruction in the delay slot (0x8003636C: 12 vs 16 bytes).
- 14: the gp-relative offsets proved so far, with the global each one names.
- 15: shapes plain C cannot reach without SDK headers (GTE/COP2 code, BIOS
syscall wrappers, stack-pointer accessors).
Conventions updated: a region end comes from config/function_extents.tsv and is
enforced by make check; the duplicate check is the tracked census rather than a
manual search; the worklist is the ranked queue; and address-named symbols
resolve implicitly while anything else fails loudly.
Clean-state gates all exit 0: make clean, make all, cmp, both files SHA-1
e173426c..., and make check (168 tests, regions=39 disagreements=0,
c_regions=39, 0 differing bytes). 121 tracked files, none under a prohibited
root. Milestone confirmation requested before any PhaseEnd.
Closes Phase 5: writes phase-ends/PhaseEnd_Phase5.md, adds the Phase 5 entry to
the digest, and archives CURRENT_PHASE.md as phase-ends/logs/Phase5.md.
Phase 5 outcome: the original compiler is identified with byte evidence as
egcs-2.91.66 (egcs-1.1.2) target mips-sony-psx -- PsyQ 4.5 CC1PSX -- with the
open gcc-2.91.66-psx build verified instruction-identical to the real SDK binary;
the entry is determined to be CRT startup rather than C; and func_80017AD4 is
matched instruction-identical with a green clean full-binary gate. Gates: 53
tests, make clean/all/cmp/SHA-1 green, 62 tracked files with none under a
prohibited root.
Also adds phase-ends/Phase6_PLAN.md as a DRAFT requiring developer approval, and
updates the README status. No Phase 6 task is started.
P5-T6. Adds docs/MATCHING_COOKBOOK.md (nine byte-proven compiler/assembler
findings, each with basis and limit), docs/MATCHING_CONVENTIONS.md (what counts
as a match, registry format, source naming, duplicate sharing, symbols, the
verification procedure, the firewall) and docs/PHASE5_VERIFICATION.md (outcome,
clean gates, bounded negatives, milestone request).
Tooling: make test and make check targets; region objects are now
symbol-localized so the documented duplicate-sharing mechanism (N registry rows
-> 1 source) links, covered by a synthetic test (53 tests).
Clean gates: 53/53 tests; make clean/all/cmp/SHA-1 green; make gate with one C
region -> c_regions=1, 0 differing bytes, SHA-1 e173426c...; 57 tracked files, 0
under any prohibited root. Phase 5 is not closed until the milestone is
confirmed.
P5-T5. Part A: the entry [0x800FB368,0x800FB410) is not compiler output. The
return address is round-tripped through an absolute global around the first
call, the range ends in break, the stack pointer is built from linker globals,
and the clear loop falls through with no jr ra. Two bounded compile experiments
failed and were stopped; the entry stays fallback and no C is claimed.
Part B: first byte-identical C match -- func_80017AD4 at 0x80017AD4..0x80017AE8
(20 bytes), src/func_80017AD4.c, registered in config/regions.tsv. make gate
reports c_regions=1, 0 differing bytes, SHA-1 e173426c157384ebf1b6caf8c6fea18a85a14af9.
Body is unique with one caller at 0x80014C14; a shared-tail near-miss was
checked and rejected as a duplicate. The Phase 3 baseline is unaffected.
Records six codegen findings, notably that GNU as expands the la macro with ori
while the original assembler (ASPSX 2.81) uses addiu, so la-using functions will
need maspsx. No ROM-derived material is tracked.
Adds a top-level README describing the target, the honest current state
(all-assembly baseline green, 0 functions matched to C), the build-from-your-own
-disc steps, the repository layout, the governance model, the no-ROM policy, and
third-party provenance.
The toolchain section records the Phase 5 identification: the original compiler
is egcs-2.91.66 (egcs-1.1.2) target mips-sony-psx -- PsyQ 4.5's CC1PSX -- with
the open decompals/old-gcc gcc-2.91.66-psx build as a byte-identical substitute,
-O2 -G0 -mno-split-addresses, ASPSX 2.81, and GNU mipsel binutils.
No game data or ROM-derived content is included.