mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-29 15:18:24 -04:00
docs(phase-31): S77 FINAL checkpoint — 21 banked, self_decl_tu closed, the permuter yield curve, eight instrument defects
This commit is contained in:
@@ -58,3 +58,4 @@
|
||||
{"ts": "2026-09-03 00:08:28", "addr": "0x80181294", "name": "func_80181294", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 27, "where_stuck": "residual: 27 mismatch", "best_draft": ".run/backlog_drafts/func_80181294.c", "binary": "ov_SC05_018", "source": "s75-redraft", "residual": [[1, "00052c00 sll\ta1,a1,0x10", "24021000 addiu $v0, $zero, 0x1000"], [2, "00052c03 sra\ta1,a1,0x10", "00451023 subu $v0, $v0, $a1"], [3, "24021000 li\tv0,4096", "00c20018 mult $a2, $v0"], [4, "00451023 subu\tv0,v0,a1", "3084ffff andi $a0, $a0, 0xFFFF"], [5, "00c20018 mult\ta2,v0", "00002812 mflo $a1"], [6, "3084ffff andi\ta0,a0,0xffff", "00041942 srl $v1, $a0, 5"], [7, "00002812 mflo\ta1", "3063001f andi $v1, $v1, 0x1F"], [8, "00041942 srl\tv1,a0,0x5", "00620018 mult $v1, $v0"], [9, "3063001f andi\tv1,v1,0x1f", "00001812 mflo $v1"], [10, "00620018 mult\tv1,v0", "00042282 srl $a0, $a0, 10"], [11, "00001812 mflo\tv1", "3084001f andi $a0, $a0, 0x1F"], [12, "00042282 srl\ta0,a0,0xa", "00820018 mult $a0, $v0"], [13, "3084001f andi\ta0,a0,0x1f", "00051303 sra $v0, $a1, 12"], [14, "00820018 mult\ta0,v0", "3046001f andi $a2, $v0, 0x1F"], [15, "00051303 sra\tv0,a1,0xc", "000319c3 sra $v1, $v1, 7"], [16, "3046001f andi\ta2,v0,0x1f", "306203e0 andi $v0, $v1, 0x3E0"], [17, "000311c3 sra\tv0,v1,0x7", "24038000 addiu $v1, $zero, -0x8000"], [18, "304203e0 andi\tv0,v0,0x3e0", "00431025 or $v0, $v0, $v1"], [19, "24038000 li\tv1,-32768", "00c21025 or $v0, $a2, $v0"], [20, "00431025 or\tv0,v0,v1", "00004012 mflo $t0"], [21, "00c21025 or\tv0,a2,v0", "00082083 sra $a0, $t0, 2"], [22, "00004012 mflo\tt0", "30837c00 andi $v1, $a0, 0x7C00"], [23, "00082083 sra\ta0,t0,0x2", "00431025 or $v0, $v0, $v1"], [24, "30847c00 andi\ta0,a0,0x7c00", "03e00008 jr $ra"]], "passes_tried": null}
|
||||
{"ts": "2026-09-03 00:10:12", "addr": "0x8017db98", "name": "func_8017DB98", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 120, "where_stuck": "residual: 120 mismatch", "best_draft": ".run/backlog_drafts/func_8017DB98.c", "binary": "ov_SC06_025", "source": "s75-redraft", "residual": [[0, "27bdffd0 addiu\tsp,sp,-48", "27bdffc8 addiu $sp, $sp, -0x38"], [1, "afb10024 sw\ts1,36(sp)", "afb20028 sw $s2, 0x28($sp)"], [2, "00808821 move\ts1,a0", "00809021 addu $s2, $a0, $zero"], [3, "afb20028 sw\ts2,40(sp)", "afb40030 sw $s4, 0x30($sp)"], [4, "00a09021 move\ts2,a1", "00a0a021 addu $s4, $a1, $zero"], [5, "afbf002c sw\tra,44(sp)", "afb3002c sw $s3, 0x2C($sp)"], [6, "afb00020 sw\ts0,32(sp)", "afbf0034 sw $ra, 0x34($sp)"], [7, "96250000 lhu\ta1,0(s1)", "afb10024 sw $s1, 0x24($sp)"], [8, "240200ff li\tv0,255", "afb00020 sw $s0, 0x20($sp)"], [9, "30a3ffff andi\tv1,a1,0xffff", "96450000 lhu $a1, 0x0($s2)"], [10, "10620061 beq\tv1,v0,1b0 <func_8017DB98+0x1b0>", "240200ff addiu $v0, $zero, 0xFF"], [11, "24900008 addiu\ts0,a0,8", "30a3ffff andi $v1, $a1, 0xFFFF"], [12, "30a3ffff andi\tv1,a1,0xffff", "10620063 beq $v1, $v0, .L8017DD58"], [13, "24020009 li\tv0,9", "00009821 addu $s3, $zero, $zero"], [14, "14620057 bne\tv1,v0,198 <func_8017DB98+0x198>", "24900008 addiu $s0, $a0, 0x8"], [15, "00000000 nop", "30a3ffff andi $v1, $a1, 0xFFFF"], [16, "9602fffc lhu\tv0,-4(s0)", "24020009 addiu $v0, $zero, 0x9"], [17, "00000000 nop", "14620058 bne $v1, $v0, .L8017DD40"], [18, "a7a20010 sh\tv0,16(sp)", "00000000 nop"], [19, "9602fffe lhu\tv0,-2(s0)", "9602fffc lhu $v0, -0x4($s0)"], [21, "a7a20012 sh\tv0,18(sp)", "a7a20010 sh $v0, 0x10($sp)"], [22, "96020000 lhu\tv0,0(s0)", "9602fffe lhu $v0, -0x2($s0)"], [24, "a7a20014 sh\tv0,20(sp)", "a7a20012 sh $v0, 0x12($sp)"], [25, "96020002 lhu\tv0,2(s0)", "96020000 lhu $v0, 0x0($s0)"]], "passes_tried": null}
|
||||
{"ts": "2026-09-03 19:09:54", "addr": "0x800cb17c", "name": "func_800CB17C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 0, "where_stuck": "match_one MATCH but the whole-binary gate rejected \u2014 CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual.", "best_draft": ".run/backlog_drafts/func_800CB17C.c", "binary": "md_MAIN_020", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-09-03 19:42:37", "addr": "0x80181e04", "name": "func_80181E04", "reach": null, "klass": null, "nins": null, "status": "failed", "closeness": null, "where_stuck": "won't compile standalone (loose-typing / missing decl)", "best_draft": ".run/backlog_drafts/func_80181E04.c", "binary": "ov_SC01_001", "source": "worker", "residual": null, "passes_tried": null}
|
||||
|
||||
+8
-15
@@ -2,24 +2,17 @@
|
||||
|
||||
> Generated by `tools/backlog.py render` from `.run/backlog.jsonl`. These are functions the Phase-21 automation got **close** on but did NOT byte-match. The whole-binary byte-gate is the sole arbiter (G3/P9): **byte-matches bank and are NOT listed here** — only genuine near-misses/blockers are. Ranked by hand-session priority: **reach** (×N propagation leverage) → **closeness** (match_one mismatch count, lower = closer) → **size**. Each row's `best_draft` is the closest C the machine reached — resume from there.
|
||||
|
||||
**Open near-misses:** 17 · by status {'near': 9, 'failed': 8} · by class {None: 17}
|
||||
**Open near-misses:** 10 · by status {'near': 6, 'failed': 4} · by class {None: 10}
|
||||
|
||||
| # | addr | reach | class | nins | status | closeness | where it stuck | best draft |
|
||||
|--:|------|------:|-------|-----:|--------|----------:|----------------|------------|
|
||||
| 1 | func_80181804 | None | | None | near | 0 | match_one MATCH but the whole-binary gate rejected — CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual. | `.run/backlog_drafts/func_80181804.c` |
|
||||
| 2 | func_80181CB8 | None | | None | near | 0 | match_one MATCH but the whole-binary gate rejected — CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual. | `.run/backlog_drafts/func_80181CB8.c` |
|
||||
| 3 | func_800CB17C | None | | None | near | 0 | match_one MATCH but the whole-binary gate rejected — CAUSE NOT DETERMINED. FIRST re-derive the destination TU from the asm subdir: asm/<ov>/nonmatchings/<TU_stem>/<fn>.s => src/<ov>/<TU_stem>.c (the third path component IS the TU). Only then look for a decl conflict or a codegen residual. | `.run/backlog_drafts/func_800CB17C.c` |
|
||||
| 4 | func_80182CBC | None | | 28 | near | 7 | resolver DIFF (real-TU rtu_match, 20260825-233820): mine=28 target=28 | `.run/backlog_drafts/func_80182CBC.c` |
|
||||
| 5 | func_80181294 | None | | None | near | 19 | residual: 19 mismatch | `.run/backlog_drafts/func_80181294.c` |
|
||||
| 6 | func_80181344 | None | | None | near | 48 | residual: 48 mismatch | `.run/backlog_drafts/func_80181344.c` |
|
||||
| 7 | func_80180B3C | None | | 297 | near | 125 | resolver DIFF (real-TU rtu_match, 20260825-233820): mine=296 target=297 | `.run/wave_eo/shard478/func_80180B3C.c` |
|
||||
| 8 | func_800CB00C | None | | 123 | near | 168 | resolver DIFF (real-TU rtu_match, 20260826-053145): mine=174 target=123 | `.run/wave_g0c/shard30/func_800CB00C.c` |
|
||||
| 9 | func_80180B3C | None | | 21 | near | 287 | resolver DIFF (real-TU rtu_match, 20260826-022235): mine=287 target=21 | `.run/wave_eq/shard63/func_80180B3C.c` |
|
||||
| 10 | func_800D06E8 | None | | None | failed | | resolver CC1 (real-TU rtu_match, 20260825-233820): .run/resolver/work/resident__func_800D06E8/c0/rtu/func_800D06E8/t.c:1770: conflicting types for `Struct80078E78' | `.run/wave_ch/shard62/func_800D06E8.c` |
|
||||
| 11 | func_8017FBCC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017FBCC.c` |
|
||||
| 12 | func_801832F8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801832F8.c` |
|
||||
| 13 | func_8017F018 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017F018.c` |
|
||||
| 14 | func_8018095C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8018095C.c` |
|
||||
| 15 | func_80181720 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181720.c` |
|
||||
| 16 | func_80062144 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | |
|
||||
| 17 | func_80180B3C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180B3C.c` |
|
||||
| 4 | func_80180B3C | None | | 297 | near | 125 | resolver DIFF (real-TU rtu_match, 20260825-233820): mine=296 target=297 | `.run/wave_eo/shard478/func_80180B3C.c` |
|
||||
| 5 | func_800CB00C | None | | 123 | near | 168 | resolver DIFF (real-TU rtu_match, 20260826-053145): mine=174 target=123 | `.run/wave_g0c/shard30/func_800CB00C.c` |
|
||||
| 6 | func_80180B3C | None | | 21 | near | 287 | resolver DIFF (real-TU rtu_match, 20260826-022235): mine=287 target=21 | `.run/wave_eq/shard63/func_80180B3C.c` |
|
||||
| 7 | func_800D06E8 | None | | None | failed | | resolver CC1 (real-TU rtu_match, 20260825-233820): .run/resolver/work/resident__func_800D06E8/c0/rtu/func_800D06E8/t.c:1770: conflicting types for `Struct80078E78' | `.run/wave_ch/shard62/func_800D06E8.c` |
|
||||
| 8 | func_80062144 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | |
|
||||
| 9 | func_80180B3C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80180B3C.c` |
|
||||
| 10 | func_80181E04 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181E04.c` |
|
||||
|
||||
@@ -4,21 +4,21 @@
|
||||
# cross-binary collapsible-byte leverage: docs/duplicates.cross.md.
|
||||
|
||||
# THREE progress metrics (all matter — see the labels):
|
||||
FLEET fn-count byte-ident: 363086 / 363151 = 99.98% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 13486077 / 13523865 = 99.7% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 5814323 / 5851972 = 99.4% (90908/90929 unique fns; the DISTINCT-RE number)
|
||||
MAIN game-code weighted : 45548 / 79510 = 57.3% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; caveat is R34: no independent second oracle for a PS-X EXE, NOT drift)
|
||||
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 13440529 / 13444355 = 100.0%)
|
||||
FLEET fn-count byte-ident: 363090 / 363151 = 99.98% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 13486764 / 13523865 = 99.7% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 5815010 / 5851972 = 99.4% (90909/90929 unique fns; the DISTINCT-RE number)
|
||||
MAIN game-code weighted : 46028 / 79510 = 57.9% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; caveat is R34: no independent second oracle for a PS-X EXE, NOT drift)
|
||||
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 13440736 / 13444355 = 100.0%)
|
||||
|
||||
FLEET REAL substantive : 360767 (of which dedup-shared 255632 via 2220 groups / 255708 instances)
|
||||
FLEET REAL substantive : 360771 (of which dedup-shared 255632 via 2220 groups / 255708 instances)
|
||||
FLEET LINKED PsyQ objs : 959
|
||||
FLEET NON_MATCHING : 0 (0 in any default build — G4)
|
||||
FLEET INCLUDE_ASM stubs : 65
|
||||
FLEET INCLUDE_ASM stubs : 61
|
||||
FLEET matchable : 363151
|
||||
|
||||
| binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % |
|
||||
|---|---:|---:|---:|---:|---:|---:|
|
||||
| main | 899 | 2 | 959 | 2043 | 2085 | 98.0% |
|
||||
| main | 902 | 2 | 959 | 2046 | 2085 | 98.1% |
|
||||
| resident | 141 | 0 | 0 | 143 | 145 | 98.6% |
|
||||
| md_MAIN_001 | 11 | 0 | 0 | 11 | 11 | 100.0% |
|
||||
| md_MAIN_003 | 53 | 0 | 0 | 59 | 64 | 92.2% |
|
||||
@@ -101,7 +101,7 @@ FLEET matchable : 363151
|
||||
| ov_SC01_074 | 2424 | 1808 | 0 | 2426 | 2426 | 100.0% |
|
||||
| ov_SC01_077 | 2584 | 1769 | 0 | 2586 | 2586 | 100.0% |
|
||||
| ov_SC01_080 | 2512 | 1813 | 0 | 2512 | 2512 | 100.0% |
|
||||
| ov_SC01_084 | 2573 | 1824 | 0 | 2578 | 2579 | 100.0% |
|
||||
| ov_SC01_084 | 2574 | 1824 | 0 | 2579 | 2579 | 100.0% |
|
||||
| ov_SC02_000 | 2683 | 1902 | 0 | 2683 | 2683 | 100.0% |
|
||||
| ov_SC02_003 | 2683 | 1902 | 0 | 2683 | 2683 | 100.0% |
|
||||
| ov_SC02_004 | 2401 | 1813 | 0 | 2401 | 2401 | 100.0% |
|
||||
|
||||
+5
-5
File diff suppressed because one or more lines are too long
@@ -7276,3 +7276,95 @@ disagreed with the new code about how a function was spelled, and once a tool fi
|
||||
automatically, twelve of twelve went in at once in about two minutes. The rest of the session was
|
||||
spent catching six cases where one of our own measuring tools was quietly lying to us — including one
|
||||
that had ranked six pieces of copied assembly as the most promising work available.
|
||||
|
||||
## 🛑 SESSION CHECKPOINT — S77 FINAL (2026-09-03). SUPERSEDES the S77 block above. Phase 31 T10 CONTINUES.
|
||||
|
||||
**Verified at close, clean rebuild:** `make check-all` **213/213 passed, 0 failed** (run three times
|
||||
this session — a green baseline BEFORE any overlay bank, once after the plumbing banks, once at
|
||||
close). `src/`, `config/`, `tools/`, `docs/` CLEAN. Drew pushes (R6).
|
||||
|
||||
main REAL **902** (was 895) · LINKED 959 · VERBATIM 142 · **stubs 39** (was 46) · NON_MATCHING 0 ·
|
||||
`143dbb89f34491258bbc27810d0a12ec8b43a8dd` byte-identical.
|
||||
**MAIN game-code weighted 57.1% → 57.9%** · fleet distinct-code 99.3% → **99.4%** ·
|
||||
**fleet stubs 82 → 61**.
|
||||
|
||||
```
|
||||
BANKED THIS SESSION : 21, every one confirmed from the SOURCE, not from a gate report
|
||||
§378 self-decl chain (16 drafts routed, 16 banked):
|
||||
main : func_80013154 (was a §265 verbatim body) · func_8005EAC8 · func_8005E3AC · func_8005E79C
|
||||
overlays: ov_SC01_005 · ov_SC01_006 · ov_SC02_041 · ov_SC03_105 · ov_SC03_111 · ov_SC03_124
|
||||
ov_SC04_002 · ov_SC04_005 · ov_SC04_007 · ov_SC04_011 · ov_SC05_003 · ov_SC05_018
|
||||
ov_SC01_084:func_80182A00 (207 ins — found only after §480)
|
||||
in-tree gate : ov_SC06_032:func_8017D810
|
||||
permuter ILS : main func_80021174 · func_80040DE8 · func_80024054
|
||||
```
|
||||
|
||||
# T14 — WORKED, NOT FINISHED. Read §479 before spending anything here.
|
||||
|
||||
**Banked 3.** The permuter is a ONE-SHOT at ≤4 mismatched (3/3, each inside one 150 s cycle) and
|
||||
**plateaus above ~10 no matter how long it runs** — one candidate went 37 → 1 and then bought nothing
|
||||
across 8 cycles × 240 s. Give ≤4 one cycle; give anything else 4 cycles ONCE; never run a plateau
|
||||
longer.
|
||||
|
||||
**Still open, with measured state (do not re-derive):**
|
||||
* `func_8002AC98` — **1 mismatched**, `addu $s2,$v0,$v1` vs `$v1,$v0`. Permuter plateaued at 1.
|
||||
Two hand levers REFUTED by bytes: source operand order (`b+r`→`r+b`, all 3 sites) changes nothing
|
||||
because gcc canonicalises commutative operands by PSEUDO REGNO; a fresh later pseudo
|
||||
(`{s32 rr=r; val=b+rr;}`) is folded by cse. It is `REGALLOC-PERM` — the lever must move the
|
||||
ALLOCATION, not the expression. Waypoint: `.run/permuter/func_8002AC98/output-1-1/source.c`.
|
||||
* Plateaued seeds for a Fable/agent tier: `func_80039B20` (10), `func_80020DA4` (14),
|
||||
`func_8001BC6C` (25). `func_80038698` never beat base.
|
||||
* Untouched larger residuals: `func_8002FDE8` 39 · `func_8001EA14` 89 · `func_8001EFE0` 89 ·
|
||||
`func_80023BF0` 129 · `func_80039308` 154 · `func_8002C410` 261 · `func_800391D4` 60.
|
||||
* **`main:func_80011380` is §474's PROVED floor — never draw it.**
|
||||
* Overlay near-misses `ov_SC06_022:func_8017DF28` (2 of 119) and `ov_SC03_105:func_801834A4` (6 of
|
||||
106) LOOK like the best targets in the fleet and are NOT: each draft header carries ~10
|
||||
byte-measured refuted levers, one with an arithmetic proof of unreachability. **Read a draft's own
|
||||
header before aiming anything at it** — that, not the mismatch count, predicted every outcome here.
|
||||
|
||||
# EIGHT INSTRUMENT DEFECTS (all fixed and committed)
|
||||
|
||||
| # | tool | it asserted | what was true |
|
||||
|---|---|---|---|
|
||||
| 1 | `cast_self_callers` (3 consumers) | `return func_X(a0);` is a declaration | a CALL — it would have DELETED a wrapper's `return`. 524 lines / 482 files; 56 journals audited, nothing damaged |
|
||||
| 2 | `cast_self_callers --sync-decls` | the draft's parameter spelling is legal in the TU | `Obj_80015760` is draft-local, `Ctx` is typedef'd 75 lines BELOW — two parse errors that broke the committed baseline |
|
||||
| 3 | `sync_tu_decls.tu_decl` | "no `extern` line to copy" | the symbol was a function the TU DEFINES; that header is the authoritative spelling |
|
||||
| 4 | `sync_tu_decls` round loop | "no declaration conflict named" | the GATE HAD REFUSED TO RUN (dirty tree) — a harness refusal reported as a verdict on the body (R40) |
|
||||
| 5 | `blocker_probe` | 13 drafts MATCH, nothing blocking | **6 were §265 VERBATIM**, not decompiles. 4th consumer with this blindness; the one that SCOPES work (§478) |
|
||||
| 6 | `blocker_probe` Oracle A | 3 drafts blocked by `local_type` | a PHANTOM — the real gate strips those typedefs first. True classes: DIFF, DIFF, and a §378 step-2 that BANKED 207 ins (§480) |
|
||||
| 7 | my aggregation script | binary names | a bad `basename` slice mangled every one; caught only by checking a row the S76 checkpoint already recorded |
|
||||
| 8 | my first hand lever | "hoisting the shift is semantics-preserving, so it should reorder" | true and USELESS — 23 mismatched at 67/68 ins; it lets gcc fold an instruction away |
|
||||
|
||||
# OPEN, UNEXPLAINED — DO NOT GUESS
|
||||
|
||||
`parallel_gate` reported `banked 0` for `ov_SC06_032` in a 106 s worker run; the identical draft
|
||||
banked in-tree and then survived two full clean-fleets. The other 12 binaries in that run agreed
|
||||
exactly between worktree and in-tree, and a later in-tree `gate_stage` on `ov_SC01_001` also agreed.
|
||||
**One data point — reproduce before theorising.**
|
||||
|
||||
# STILL OPEN FROM THE 34-DRAFT OVERLAY POOL
|
||||
|
||||
13 banked · **6 VERBATIM = undecompiled work needing a REDRAFT** (`md_MAIN_003:func_800D0100`,
|
||||
`func_800D0174`, `func_800D1D14`, `md_MAIN_020:func_800CB17C`, `ov_SC05_005:func_80181828`,
|
||||
`ov_SC06_010:func_801809E4`) · body DIFFs (`ov_SC02_027:func_80180B3C`, `md_MAIN_003:func_800CF3E8`,
|
||||
`ov_SC01_001:func_80181E04` — all three reclassified from "plumbing" to DIFF by an actual gate) ·
|
||||
`ov_SC02_017:func_80186C64` CARVE-REFUSED (jtbl plumbing, NOT codegen) ·
|
||||
`ov_SC04_018:func_80181CB8` conflicting types for built-in `memcpy` · `ov_SC04_018:func_80181804`
|
||||
and `ov_SC05_010:func_8017FFA8` CC1-FAIL cascading from a DIFFERENT TU ·
|
||||
`resident:func_800D128C` parse error before `cdFileLocTable` · `resident:func_800D06E8` DIFF ·
|
||||
`md_MAIN_003:func_800D06BC` **697 ins against a 33-ins target — aimed at the wrong function.**
|
||||
|
||||
# IDIOMS BANKED IN-SESSION — §477, §478, §479, §480
|
||||
|
||||
Each verified present in the committed file one at a time (the S76 lesson that §462/§463 vanished
|
||||
silently after their commit).
|
||||
|
||||
# PLAIN ENGLISH
|
||||
|
||||
Twenty-one more of the game's functions are now real C instead of raw assembly, and all 213 binaries
|
||||
still rebuild byte-for-byte identical to the original disc. Most of it came from one realisation: a
|
||||
whole group of "hard" functions were never hard — our own C files simply disagreed with the new code
|
||||
about how a name was spelled, and once a tool fixed that, sixteen out of sixteen went straight in.
|
||||
The rest of the session was spent catching eight cases where one of our own measuring tools was
|
||||
quietly telling us something false — including one that had ranked six pieces of copied assembly as
|
||||
the most promising work available, and one that invented a problem the real build already solves.
|
||||
|
||||
Reference in New Issue
Block a user