mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
feat(phase-30 S4-redo): SCAN don't SAMPLE — 14 matches found on disk, 7 banked (+1,338 ins)
Answering "did we do S4?" honestly: NO, not properly. The earlier pass re-gated only the NEWEST stored draft per draft-exemplar head (8 banked of 35). S6 then proved that is sampling, not scanning -- its giant's match was the 9th of 31 drafts, and my first pass had reported "closeness 40". Redone with EVERY stored draft run through match_one, over the 39 draft-exemplar heads + Drew's named large-function list (38 targets, 33 with drafts on disk): 14 of 33 targets MATCH from a stored draft (some had 51-57 drafts each) -> 6 banked first pass, +1 after recover_giant = 7 banked -> including func_8018057C (897 ins), which was on the "needs an agent" list The 14 came overwhelmingly from ov_SC01_077 -- exactly the heads where only the newest draft had been tried. The winning drafts sit in .run/_a10_sample-cn-cast-rc/, .run/drafts-wave-cn-cast/, .run/drafts-wave-cn/, .run/ab-exp/opus-cn/, .run/backlog_drafts/ -- i.e. spread across many historical pipelines, which is precisely why "newest" is the wrong selector. 7 still open after recovery (5 near, 2 failed) -- integration classes, drafts kept in .run/s41/rec/. VERIFIED: make clean && make extract-all && make check-all -> 140 passed, 0 failed of 140. Fleet 12483035 -> 12484373 instr; distinct +1,338 / +7 uniq; fn-count +7. instr-weighted 94.9%. audit-digest OK. 0 NON_MATCHING (G4). STILL OPEN from S4: the 263x5 cluster (0x80182fd4 exemplar) sweeps 0/5 with `parse error before 'unsigned'` in the spliced draft -- NOT the missing-type class, undiagnosed, do not assume codegen. And the 2 resident stubs with gate-rejected match_one-MATCH drafts remain untouched. THE RULE (cookbook §146, now paid for twice): SCAN every stored draft, never sample. A head with 57 drafts has 57 chances, and the pipelines that produced them differ in ways that matter.
This commit is contained in:
+3
-10
@@ -1,16 +1,10 @@
|
||||
{"ts": "2026-06-23 02:02:42", "addr": "0x8017e224", "name": "func_8017E224", "reach": 1, "klass": "struct", "nins": 29, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (unaligned 8-byte memcpy of global onto stack + cond byte incr)", "best_draft": ".run/backlog_drafts/func_8017E224.c", "binary": null, "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-23 02:02:42", "addr": "0x8017f714", "name": "func_8017F714", "reach": 1, "klass": "plumbing", "nins": 27, "status": "near", "closeness": 1, "where_stuck": "none \u2014 MATCH (27/27 ins, match_one verified)", "best_draft": ".run/backlog_drafts/func_8017F714.c", "binary": null, "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-23 02:19:53", "addr": "0x80184a68", "name": "func_80184A68", "reach": 1, "klass": "regalloc-order", "nins": 33, "status": "failed", "closeness": null, "where_stuck": "none \u2014 MATCH", "best_draft": ".run/backlog_drafts/func_80184A68.c", "binary": null, "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-08-05 13:04:17", "addr": "0x8017f714", "name": "func_8017F714", "reach": 1, "klass": "plumbing", "nins": 27, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (27/27 ins, match_one verified)", "best_draft": ".run/backlog_drafts/func_8017F714.c", "binary": "ov_SC01_077", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-08-05 13:04:18", "addr": "0x80184a68", "name": "func_80184A68", "reach": 1, "klass": "regalloc-order", "nins": 33, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH", "best_draft": ".run/backlog_drafts/func_80184A68.c", "binary": "ov_SC01_077", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-23 03:07:27", "addr": "0x80183c50", "name": "func_80183C50", "reach": 1, "klass": "struct", "nins": 41, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (cross-jump exploit \u00a7cookbook L1543: dup func_8012C218 into case3/7 + case4 \u2192 merged jal;nop)", "best_draft": ".run/backlog_drafts/func_80183C50.c", "binary": null, "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-23 03:36:04", "addr": "0x801803b0", "name": "func_801803B0", "reach": 1, "klass": "other", "nins": 51, "status": "near", "closeness": 1, "where_stuck": "none \u2014 MATCH expected; simple if/else, no call-crossing locals beyond param in $s0", "best_draft": ".run/backlog_drafts/func_801803B0.c", "binary": null, "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-23 03:36:04", "addr": "0x80184c0c", "name": "func_80184C0C", "reach": 1, "klass": "struct", "nins": 48, "status": "near", "closeness": 1, "where_stuck": "none \u2014 MATCH (array-of-struct %lo-fold for &D_8018AEB8[idx], stride 0x34)", "best_draft": ".run/backlog_drafts/func_80184C0C.c", "binary": null, "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-23 11:09:10", "addr": "0x801842c8", "name": "func_801842C8", "reach": 1, "klass": "plumbing", "nins": 62, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH", "best_draft": ".run/backlog_drafts/func_801842C8.c", "binary": null, "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-25 20:30:02", "addr": "0x8017f114", "name": "func_8017F114", "reach": 1, "klass": "regalloc-order", "nins": 75, "status": "near", "closeness": 1, "where_stuck": "none \u2014 MATCH", "best_draft": ".run/backlog_drafts/func_8017F114.c", "binary": null, "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-25 20:30:02", "addr": "0x80180b64", "name": "func_80180B64", "reach": 1, "klass": "struct", "nins": 75, "status": "failed", "closeness": null, "where_stuck": "none \u2014 MATCH (75 ins, relocation-masked)", "best_draft": ".run/backlog_drafts/func_80180B64.c", "binary": null, "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-25 21:27:42", "addr": "0x80183de0", "name": "func_80183DE0", "reach": 1, "klass": "regalloc-order", "nins": 91, "status": "failed", "closeness": null, "where_stuck": "testing if(!=1) layout + counter-before-pointer init order", "best_draft": ".run/backlog_drafts/func_80183DE0.c", "binary": null, "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-25 21:27:42", "addr": "0x80184d50", "name": "func_80184D50", "reach": 1, "klass": "schedule", "nins": 98, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (98 ins, relocation-masked)", "best_draft": ".run/backlog_drafts/func_80184D50.c", "binary": null, "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-08-04 23:12:26", "addr": "0x80182c9c", "name": "func_80182C9C", "reach": 1, "klass": "STRUCT", "nins": 101, "status": "near", "closeness": 18, "where_stuck": "STRUCT: 18 mismatch", "best_draft": ".run/backlog_drafts/func_80182C9C.c", "binary": "ov_SC01_077", "source": "worker", "residual": [[27, "10400046 beqz\tv0,188 <func_80182C9C+0x188>", "10400044 beqz $v0, .L80182E1C"], [38, "1440003b bnez\tv0,188 <func_80182C9C+0x188>", "14400039 bnez $v0, .L80182E1C"], [55, "1040002a beqz\tv0,188 <func_80182C9C+0x188>", "10400028 beqz $v0, .L80182E1C"], [67, "1040001e beqz\tv0,188 <func_80182C9C+0x188>", "1040001c beqz $v0, .L80182E1C"], [74, "10400017 beqz\tv0,188 <func_80182C9C+0x188>", "10400015 beqz $v0, .L80182E1C"], [89, "00000000 nop", "8c4270cc lw $v0, %lo(D_801270CC)($v0)"], [90, "3c020000 lui\tv0,0x0", "02002021 addu $a0, $s0, $zero"], [91, "8c420000 lw\tv0,0(v0)", "2442ffff addiu $v0, $v0, -0x1"], [92, "00000000 nop", "3c018012 lui $at, %hi(D_801270CC)"], [93, "2442ffff addiu\tv0,v0,-1", "ac2270cc sw $v0, %lo(D_801270CC)($at)"], [94, "3c010000 lui\tat,0x0", "0c04b086 jal func_8012C218"], [95, "ac220000 sw\tv0,0(at)", "00000000 nop"], [97, "00000000 nop", "8fb00010 lw $s0, 0x10($sp)"], [98, "8fbf0014 lw\tra,20(sp)", "27bd0018 addiu $sp, $sp, 0x18"], [99, "8fb00010 lw\ts0,16(sp)", "03e00008 jr $ra"], [100, "27bd0018 addiu\tsp,sp,24", "00000000 nop"], [101, "03e00008 jr\tra", "--"], [102, "00000000 nop", "--"]], "passes_tried": null}
|
||||
{"ts": "2026-08-04 23:16:43", "addr": "0x80183fb8", "name": "func_80183FB8", "reach": 1, "klass": "WAVE", "nins": 101, "status": "near", "closeness": 82, "where_stuck": "WAVE: 82 mismatch", "best_draft": ".run/backlog_drafts/func_80183FB8.c", "binary": "ov_SC01_077", "source": "worker", "residual": [[8, "3c040000 lui\ta0,0x0", "00000000 nop"], [9, "8c840000 lw\ta0,0(a0)", "00431021 addu $v0, $v0, $v1"], [10, "00431021 addu\tv0,v0,v1", "ae0200dc sw $v0, 0xDC($s0)"], [11, "ae0200dc sw\tv0,220(s0)", "3c038019 lui $v1, %hi(D_8018AE80)"], [12, "0082102a slt\tv0,a0,v0", "8c63ae80 lw $v1, %lo(D_8018AE80)($v1)"], [13, "10400002 beqz\tv0,40 <func_80183FB8+0x40>", "00000000 nop"], [14, "00000000 nop", "0062102a slt $v0, $v1, $v0"], [15, "ae0400dc sw\ta0,220(s0)", "10400002 beqz $v0, .L80184000"], [16, "96020034 lhu\tv0,52(s0)", "00000000 nop"], [17, "00000000 nop", "ae0300dc sw $v1, 0xDC($s0)"], [18, "14400004 bnez\tv0,5c <func_80183FB8+0x5c>", "96020034 lhu $v0, 0x34($s0)"], [20, "8e0200dc lw\tv0,220(s0)", "14400004 bnez $v0, .L8018401C"], [22, "ae020018 sw\tv0,24(s0)", "8e0200dc lw $v0, 0xDC($s0)"], [23, "8e0200dc lw\tv0,220(s0)", "0806100b j .L8018402C"], [24, "00000000 nop", "ae020018 sw $v0, 0x18($s0)"], [25, "00021023 negu\tv0,v0", "8e0200dc lw $v0, 0xDC($s0)"], [26, "ae020018 sw\tv0,24(s0)", "00000000 nop"], [27, "8e020014 lw\tv0,20(s0)", "00021023 negu $v0, $v0"], [28, "3c030060 lui\tv1,0x60", "ae020018 sw $v0, 0x18($s0)"], [29, "0062102a slt\tv0,v1,v0", "8e020014 lw $v0, 0x14($s0)"], [30, "10400002 beqz\tv0,84 <func_80183FB8+0x84>", "3c030060 lui $v1, (0x600000 >> 16)"], [31, "00000000 nop", "0062102a slt $v0, $v1, $v0"], [32, "ae030014 sw\tv1,20(s0)", "10400002 beqz $v0, .L80184044"], [33, "8e0700cc lw\ta3,204(s0)", "00000000 nop"]], "passes_tried": null}
|
||||
{"ts": "2026-08-05 13:04:18", "addr": "0x80183fb8", "name": "func_80183FB8", "reach": 1, "klass": "loose-typing", "nins": 101, "status": "near", "closeness": 0, "where_stuck": "none \u2014 MATCH (relocation-masked match_one, 101/101 ins)", "best_draft": ".run/backlog_drafts/func_80183FB8.c", "binary": "ov_SC01_077", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-29 22:31:26", "addr": "0x80185e68", "name": "func_80185E68", "reach": 1, "klass": "STRUCT", "nins": 132, "status": "near", "closeness": 131, "where_stuck": "STRUCT: 131 mismatch", "best_draft": ".run/backlog_drafts/func_80185E68.c", "binary": null, "source": "lora-grind", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-30 04:40:01", "addr": null, "name": "func_801815D8", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 7, "where_stuck": "residual: 7 mismatch", "best_draft": ".run/backlog_drafts/func_801815D8.c", "binary": "ov_SC01_001", "source": "lora-grind", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-06-30 05:00:01", "addr": null, "name": "func_801807D8", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 1, "where_stuck": "residual: 1 mismatch", "best_draft": ".run/backlog_drafts/func_801807D8.c", "binary": "ov_SC01_005", "source": "lora-grind", "residual": null, "passes_tried": null}
|
||||
@@ -572,7 +566,6 @@
|
||||
{"ts": "2026-07-14 23:08:09", "addr": null, "name": "func_8017F4D0", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 19, "where_stuck": "residual: 19 mismatch", "best_draft": ".run/backlog_drafts/func_8017F4D0.c", "binary": "ov_SC01_009", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-14 23:08:09", "addr": null, "name": "func_8017F568", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 17, "where_stuck": "residual: 17 mismatch", "best_draft": ".run/backlog_drafts/func_8017F568.c", "binary": "ov_SC01_009", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-14 23:08:09", "addr": null, "name": "func_8017FE10", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 25, "where_stuck": "residual: 25 mismatch", "best_draft": ".run/backlog_drafts/func_8017FE10.c", "binary": "ov_SC01_009", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-14 23:08:09", "addr": null, "name": "func_8018057C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 897, "where_stuck": "residual: 897 mismatch", "best_draft": ".run/backlog_drafts/func_8018057C.c", "binary": "ov_SC01_009", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-14 23:08:09", "addr": null, "name": "func_80182030", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 55, "where_stuck": "residual: 55 mismatch", "best_draft": ".run/backlog_drafts/func_80182030.c", "binary": "ov_SC01_009", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-14 23:08:33", "addr": null, "name": "func_8017D01C", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 45, "where_stuck": "residual: 45 mismatch", "best_draft": ".run/backlog_drafts/func_8017D01C.c", "binary": "ov_SC02_039", "source": "worker", "residual": null, "passes_tried": null}
|
||||
{"ts": "2026-07-14 23:08:33", "addr": null, "name": "func_8017E2F4", "reach": null, "klass": null, "nins": null, "status": "near", "closeness": 77, "where_stuck": "residual: 77 mismatch", "best_draft": ".run/backlog_drafts/func_8017E2F4.c", "binary": "ov_SC02_039", "source": "worker", "residual": null, "passes_tried": null}
|
||||
|
||||
+3
-3
@@ -21,7 +21,7 @@ ov_SC01_077_ELF := $(ov_SC01_077_OUT).elf
|
||||
ov_SC01_077_MAPFILE := $(ov_SC01_077_OUT).map
|
||||
ov_SC01_077_LD_SCRIPT := $(ov_SC01_077_OUT).ld
|
||||
ov_SC01_077_SPLAT_YAML := config/splat.ov_SC01_077.yaml
|
||||
ov_SC01_077_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_077_a.o,ov_SC01_077_jr_8012ACE0.o,tail2.data.o,ov_SC01_077_jr_80135888.o,tail3.data.o,ov_SC01_077_jr_80135A4C.o,tail4.data.o,ov_SC01_077_jr_80135D20.o,tail5.data.o,ov_SC01_077_jr_801380E0.o,ov_SC01_077_o0.o,tail6.data.o,ov_SC01_077.o,tail7.data.o,ov_SC01_077_jr_8015444C.o,ov_SC01_077_jr_80154C24.o,ov_SC01_077_jr_801588CC.o,ov_SC01_077_jr_80159C84.o,tail8.data.o,ov_SC01_077_jr_8015A3C8.o,tail9.data.o,ov_SC01_077_jr_8015AE2C.o,tail10.data.o,ov_SC01_077_jr_8015C32C.o,tail11.data.o,ov_SC01_077_jr_8016AB6C.o,tail12.data.o,ov_SC01_077_jr_80171B4C.o,ov_SC01_077_jr_801734BC.o,tail13.data.o,ov_SC01_077_jr_801789AC.o,ov_SC01_077_jr_80178D40.o,tail14.data.o,ov_SC01_077_jr_8017A4AC.o,tail15.data.o,ov_SC01_077_jr_8017AE2C.o,tail16.data.o,ov_SC01_077_jr_8018103C.o,tail17.data.o,ov_SC01_077_jr_801820DC.o,ov_SC01_077_jr_80182268.o,tail18.data.o,ov_SC01_077_jr_80182E7C.o,tail19.data.o,ov_SC01_077_jr_80183AF0.o,ov_SC01_077_jr_80183BAC.o,tail20.data.o,ov_SC01_077_jr_80183CF4.o,tail21.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
|
||||
ov_SC01_077_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_077_a.o,ov_SC01_077_jr_8012ACE0.o,tail2.data.o,ov_SC01_077_jr_80135888.o,tail3.data.o,ov_SC01_077_jr_80135A4C.o,tail4.data.o,ov_SC01_077_jr_80135D20.o,tail5.data.o,ov_SC01_077_jr_801380E0.o,ov_SC01_077_o0.o,tail6.data.o,ov_SC01_077.o,tail7.data.o,ov_SC01_077_jr_8015444C.o,ov_SC01_077_jr_80154C24.o,ov_SC01_077_jr_801588CC.o,ov_SC01_077_jr_80159C84.o,tail8.data.o,ov_SC01_077_jr_8015A3C8.o,tail9.data.o,ov_SC01_077_jr_8015AE2C.o,tail10.data.o,ov_SC01_077_jr_8015C32C.o,tail11.data.o,ov_SC01_077_jr_8016AB6C.o,tail12.data.o,ov_SC01_077_jr_80171B4C.o,ov_SC01_077_jr_801734BC.o,tail13.data.o,ov_SC01_077_jr_801789AC.o,ov_SC01_077_jr_80178D40.o,tail14.data.o,ov_SC01_077_jr_8017A4AC.o,tail15.data.o,ov_SC01_077_jr_8017AE2C.o,tail16.data.o,ov_SC01_077_jr_80180B64.o,tail17.data.o,ov_SC01_077_jr_8018103C.o,tail18.data.o,ov_SC01_077_jr_801820DC.o,ov_SC01_077_jr_80182268.o,ov_SC01_077_jr_80182E7C.o,tail19.data.o,ov_SC01_077_jr_80183AF0.o,ov_SC01_077_jr_80183BAC.o,tail20.data.o,ov_SC01_077_jr_80183CF4.o,tail21.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
|
||||
build/src/ov_SC01_077/ov_SC01_077.o: JTBL_PADS := 0,0,4,0,4,0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x38,+0x58,+0x70,+0x90,+0xa8
|
||||
build/src/ov_SC01_077/ov_SC01_077_a.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
|
||||
build/src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0
|
||||
@@ -34,7 +34,7 @@ build/src/ov_SC01_077/ov_SC01_077_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (
|
||||
build/src/ov_SC01_077/ov_SC01_077_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC01_077/ov_SC01_077_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178
|
||||
build/src/ov_SC01_077/ov_SC01_077_jr_8018103C.o: JTBL_PADS := 0,4,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18,+0x38,+0x58
|
||||
build/src/ov_SC01_077/ov_SC01_077_jr_80182268.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20
|
||||
build/src/ov_SC01_077/ov_SC01_077_jr_80182268.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20,+0x40
|
||||
build/src/ov_SC01_077/ov_SC01_077_o0.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118
|
||||
ov_SC01_077_CHECK_SHA := config/check.ov_SC01_077.sha
|
||||
ov_SC01_077_SYMBOLS := config/symbols.ov_SC01_077.txt
|
||||
@@ -659,7 +659,7 @@ ov_SC01_009_ELF := $(ov_SC01_009_OUT).elf
|
||||
ov_SC01_009_MAPFILE := $(ov_SC01_009_OUT).map
|
||||
ov_SC01_009_LD_SCRIPT := $(ov_SC01_009_OUT).ld
|
||||
ov_SC01_009_SPLAT_YAML := config/splat.ov_SC01_009.yaml
|
||||
ov_SC01_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_009.o,ov_SC01_009_jr_8012ACE0.o,tail2.data.o,ov_SC01_009_jr_80135888.o,tail3.data.o,ov_SC01_009_jr_80135A4C.o,tail4.data.o,ov_SC01_009_jr_80135D20.o,tail5.data.o,ov_SC01_009_jr_801380E0.o,ov_SC01_009_o0c.o,tail6.data.o,ov_SC01_009_jr_8013F350.o,tail7.data.o,ov_SC01_009_jr_8013FFD8.o,tail8.data.o,ov_SC01_009_jr_80140608.o,tail9.data.o,ov_SC01_009_jr_8015444C.o,ov_SC01_009_jr_80154C24.o,ov_SC01_009_jr_801588CC.o,ov_SC01_009_jr_80159C84.o,tail10.data.o,ov_SC01_009_jr_8015A3C8.o,tail11.data.o,ov_SC01_009_jr_8015AE2C.o,tail12.data.o,ov_SC01_009_jr_8015C32C.o,tail13.data.o,ov_SC01_009_jr_8016AB6C.o,tail14.data.o,ov_SC01_009_jr_80171B4C.o,ov_SC01_009_jr_801734BC.o,tail15.data.o,ov_SC01_009_jr_801789AC.o,ov_SC01_009_jr_80178D40.o,tail16.data.o,ov_SC01_009_jr_8017A4AC.o,tail17.data.o,ov_SC01_009_jr_8017AE2C.o,ov_SC01_009_jr_8017BE9C.o,tail18.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
|
||||
ov_SC01_009_JTBL_INTERLEAVE := --order tail.data.o,ov_SC01_009.o,ov_SC01_009_jr_8012ACE0.o,tail2.data.o,ov_SC01_009_jr_80135888.o,tail3.data.o,ov_SC01_009_jr_80135A4C.o,tail4.data.o,ov_SC01_009_jr_80135D20.o,tail5.data.o,ov_SC01_009_jr_801380E0.o,ov_SC01_009_o0c.o,tail6.data.o,ov_SC01_009_jr_8013F350.o,tail7.data.o,ov_SC01_009_jr_8013FFD8.o,tail8.data.o,ov_SC01_009_jr_80140608.o,tail9.data.o,ov_SC01_009_jr_8015444C.o,ov_SC01_009_jr_80154C24.o,ov_SC01_009_jr_801588CC.o,ov_SC01_009_jr_80159C84.o,tail10.data.o,ov_SC01_009_jr_8015A3C8.o,tail11.data.o,ov_SC01_009_jr_8015AE2C.o,tail12.data.o,ov_SC01_009_jr_8015C32C.o,tail13.data.o,ov_SC01_009_jr_8016AB6C.o,tail14.data.o,ov_SC01_009_jr_80171B4C.o,ov_SC01_009_jr_801734BC.o,tail15.data.o,ov_SC01_009_jr_801789AC.o,ov_SC01_009_jr_80178D40.o,tail16.data.o,ov_SC01_009_jr_8017A4AC.o,tail17.data.o,ov_SC01_009_jr_8017AE2C.o,ov_SC01_009_jr_8017BE9C.o,tail18.data.o,ov_SC01_009_jr_8018057C.o,tail19.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve
|
||||
build/src/ov_SC01_009/ov_SC01_009.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14
|
||||
build/src/ov_SC01_009/ov_SC01_009_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0
|
||||
build/src/ov_SC01_009/ov_SC01_009_jr_80135D20.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18
|
||||
|
||||
@@ -121,6 +121,7 @@ segments:
|
||||
- [0x52354, c, ov_SC01_009_jr_8017A4AC]
|
||||
- [0x52cd4, c, ov_SC01_009_jr_8017AE2C]
|
||||
- [0x53d44, c, ov_SC01_009_jr_8017BE9C]
|
||||
- [0x58424, c, ov_SC01_009_jr_8018057C]
|
||||
- [0x5a7d4, data, tail]
|
||||
- [0xc8574, .rodata, ov_SC01_009] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc8650, .rodata, ov_SC01_009_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
@@ -164,6 +165,8 @@ segments:
|
||||
- [0xc9694, .rodata, ov_SC01_009_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc96a8, .rodata, ov_SC01_009_jr_8017BE9C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc96c8, data, tail18]
|
||||
- [0xc9c48, .rodata, ov_SC01_009_jr_8018057C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xc9ce4, data, tail19]
|
||||
- [0xCB304, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word)
|
||||
- [0xCB307] # EOF marker = the 0.4.dec byte length
|
||||
# @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes
|
||||
|
||||
@@ -84,6 +84,7 @@ segments:
|
||||
- [0x50be8, c, ov_SC01_077_jr_80178D40]
|
||||
- [0x52354, c, ov_SC01_077_jr_8017A4AC]
|
||||
- [0x52cd4, c, ov_SC01_077_jr_8017AE2C]
|
||||
- [0x58a0c, c, ov_SC01_077_jr_80180B64]
|
||||
- [0x58ee4, c, ov_SC01_077_jr_8018103C]
|
||||
- [0x59f84, c, ov_SC01_077_jr_801820DC]
|
||||
- [0x5a110, c, ov_SC01_077_jr_80182268]
|
||||
@@ -140,11 +141,12 @@ segments:
|
||||
- [0xb0f60, data, tail15]
|
||||
- [0xb0f64, .rodata, ov_SC01_077_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb0f78, data, tail16]
|
||||
- [0xb0fa0, .rodata, ov_SC01_077_jr_80180B64] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb0fc0, data, tail17]
|
||||
- [0xb1000, .rodata, ov_SC01_077_jr_8018103C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb1078, data, tail17]
|
||||
- [0xb1078, data, tail18]
|
||||
- [0xb1128, .rodata, ov_SC01_077_jr_801820DC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb1148, .rodata, ov_SC01_077_jr_80182268] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb1188, data, tail18]
|
||||
- [0xb11a8, .rodata, ov_SC01_077_jr_80182E7C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
- [0xb11c8, data, tail19]
|
||||
- [0xb12a8, .rodata, ov_SC01_077_jr_80183AF0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py)
|
||||
|
||||
+836
-843
File diff suppressed because it is too large
Load Diff
@@ -4,16 +4,16 @@
|
||||
# cross-binary collapsible-byte leverage: docs/duplicates.cross.md.
|
||||
|
||||
# THREE progress metrics (all matter — see the labels):
|
||||
FLEET fn-count byte-ident: 341768 / 353717 = 96.62% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 12483035 / 13160961 = 94.8% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 5042134 / 5654184 = 89.2% (78074/87459 unique fns; the DISTINCT-RE number)
|
||||
FLEET fn-count byte-ident: 341775 / 353717 = 96.62% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay)
|
||||
FLEET instr-weighted : 12484373 / 13160961 = 94.9% (shipped .text across main + resident + 138 overlays; the decomp.dev-DISPLAY number)
|
||||
FLEET distinct-code(uniq): 5043472 / 5654184 = 89.2% (78081/87459 unique fns; the DISTINCT-RE number)
|
||||
MAIN game-code weighted : 436 / 79510 = 0.5% (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: 12482599 / 13081451 = 95.4%)
|
||||
(fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 12483937 / 13081451 = 95.4%)
|
||||
|
||||
FLEET REAL substantive : 339913 (of which dedup-shared 241439 via 1919 groups / 241513 instances)
|
||||
FLEET REAL substantive : 339920 (of which dedup-shared 241439 via 1919 groups / 241513 instances)
|
||||
FLEET LINKED PsyQ objs : 959
|
||||
FLEET NON_MATCHING : 7 (0 in any default build — G4)
|
||||
FLEET INCLUDE_ASM stubs : 11942
|
||||
FLEET INCLUDE_ASM stubs : 11935
|
||||
FLEET matchable : 353717
|
||||
|
||||
| binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % |
|
||||
@@ -26,9 +26,9 @@ FLEET matchable : 353717
|
||||
| ov_SC01_005 | 2425 | 1770 | 0 | 2425 | 2503 | 96.9% |
|
||||
| ov_SC01_006 | 2425 | 1770 | 0 | 2425 | 2503 | 96.9% |
|
||||
| ov_SC01_008 | 2393 | 1747 | 0 | 2395 | 2426 | 98.7% |
|
||||
| ov_SC01_009 | 2419 | 1748 | 0 | 2420 | 2507 | 96.5% |
|
||||
| ov_SC01_009 | 2420 | 1748 | 0 | 2421 | 2507 | 96.6% |
|
||||
| ov_SC01_074 | 2395 | 1748 | 0 | 2397 | 2425 | 98.8% |
|
||||
| ov_SC01_077 | 2554 | 1713 | 0 | 2556 | 2586 | 98.8% |
|
||||
| ov_SC01_077 | 2560 | 1713 | 0 | 2562 | 2586 | 99.1% |
|
||||
| ov_SC01_080 | 2423 | 1751 | 0 | 2423 | 2512 | 96.5% |
|
||||
| ov_SC01_084 | 2448 | 1756 | 0 | 2453 | 2579 | 95.1% |
|
||||
| ov_SC02_000 | 2519 | 1795 | 0 | 2519 | 2683 | 93.9% |
|
||||
|
||||
@@ -4282,184 +4282,3 @@ extern void (*D_801EEDBC[])(void);
|
||||
void func_80180540(void *a0) {
|
||||
D_801EEDBC[*(u16 *)((s32)a0 + 0x2)]();
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_8018057C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181380);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_8018144C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181600);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181688);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_801816FC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181724);
|
||||
|
||||
void func_80181758(void *a0) {
|
||||
*(short *)(*(int *)((char *)a0 + 0x64) + 0x106) = 1;
|
||||
}
|
||||
|
||||
|
||||
void func_80181768(void *a0) {
|
||||
*(s16 *)((s32)a0 + 0x106) = 1;
|
||||
}
|
||||
|
||||
|
||||
void func_80181774(void *a0) {
|
||||
*(short *)((char *)a0 + 0x106) = 0x2;
|
||||
}
|
||||
|
||||
|
||||
void func_80181780(void *a0) {
|
||||
*(short *)((char *)a0 + 0x106) = 0x3;
|
||||
}
|
||||
|
||||
|
||||
void func_8018178C(void *a0) {
|
||||
*(s16 *)((s32)a0 + 0x106) = 0;
|
||||
}
|
||||
|
||||
|
||||
extern void func_80181724(s32 arg0, s32 arg1);
|
||||
void func_80181794(void *arg0) {
|
||||
func_80181724(M2C_FIELD(arg0, s16 *, 0x70), 0x2D);
|
||||
}
|
||||
|
||||
|
||||
extern void func_80181724(s32 arg0, s32 arg1);
|
||||
void func_801817B8(void *arg0) {
|
||||
func_80181724(M2C_FIELD(arg0, s16 *, 0x70), 0x3D);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
s32 func_801817DC(void) {
|
||||
|
||||
extern s32 D_801F3304;
|
||||
return !(D_801F3304 ^ 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
extern s32 func_8014BCEC(s32 a0, s32 a1);
|
||||
extern void func_8014BD24(s32 a0, s32 a1);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
|
||||
void func_801817F4(void) {
|
||||
|
||||
extern s32 D_80126B58;
|
||||
func_8014BCEC((s32)&D_80126B58, 0x5);
|
||||
func_8014BD24((s32)&D_80126B58, 0x270F);
|
||||
func_8002D4C8(0x45C, 0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181840);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181894);
|
||||
|
||||
extern void func_80029124(s32 arg0, s32 arg1);
|
||||
void func_801818C8(void) {
|
||||
func_80029124(0x81, 1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_801818EC);
|
||||
|
||||
|
||||
extern void func_8001AAA0(s32 arg0);
|
||||
extern s32 func_8001B710(void);
|
||||
|
||||
void func_80181918(void) {
|
||||
func_8001AAA0(0x3D);
|
||||
func_8001B710();
|
||||
}
|
||||
|
||||
|
||||
extern void func_800D0C48(s32 arg);
|
||||
void func_80181940(void) {
|
||||
func_800D0C48(0x1);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181960);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181988);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_801819B0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181A1C);
|
||||
|
||||
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2);
|
||||
void func_80181A80(void *a0) {
|
||||
((void (*)(s32, s32, s32))func_8012C658)(0x1AB, 0x2D, (s32)a0);
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181AA8);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181B04);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181BBC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181C14);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181C64);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181CF8);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181D38);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181D7C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181DC0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181E58);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181EB0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181F0C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181F78);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80181FD4);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80182030);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_8018210C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_801821E8);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_801822D8);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80182368);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_801823D0);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80182438);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_8018248C);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_801824FC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80182570);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80182634);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80182740);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_801827FC);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_80182850);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017BE9C", func_801828D0);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4506,7 +4506,69 @@ void func_8017F0B4(u8 *a0) {
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8017AE2C", func_8017F114);
|
||||
// @class: regalloc-order
|
||||
// @stuck: none — MATCH
|
||||
|
||||
extern unsigned short D_800B99DA;
|
||||
extern u16 D_80126B66;
|
||||
extern short D_8018A858;
|
||||
extern void func_8002D4C8(int, int);
|
||||
|
||||
void func_8017F114(void)
|
||||
{
|
||||
register int iVar1 __asm__("$3");
|
||||
register int iVar5 __asm__("$6");
|
||||
register int iVar7 __asm__("$8");
|
||||
register int iVar8 __asm__("$9");
|
||||
register short *psVar6 __asm__("$7");
|
||||
register short *psVar2 __asm__("$4");
|
||||
register int uVar4 __asm__("$5");
|
||||
int uVar3;
|
||||
register int num __asm__("$2");
|
||||
|
||||
uVar4 = 0;
|
||||
if ((D_800B99DA & 4) == 0) {
|
||||
iVar1 = (int)(*(short *)&D_80126B66);
|
||||
psVar6 = &D_8018A858;
|
||||
iVar8 = 0;
|
||||
psVar2 = psVar6 + 3;
|
||||
do {
|
||||
iVar7 = (int)psVar6[0];
|
||||
if (iVar1 < iVar7) goto cont;
|
||||
iVar5 = (int)psVar2[-2];
|
||||
if (iVar1 < iVar5) goto adjA;
|
||||
iVar7 = (int)psVar2[-1];
|
||||
if (iVar1 < iVar7) goto set7f;
|
||||
iVar5 = (int)psVar2[0];
|
||||
if (iVar1 < iVar5) goto adjC;
|
||||
cont:
|
||||
iVar8 = iVar8 + 1;
|
||||
psVar2 = psVar2 + 4;
|
||||
psVar6 = psVar6 + 4;
|
||||
} while (iVar8 < 2);
|
||||
post:
|
||||
if (uVar4 > 0) goto clamp;
|
||||
uVar3 = 4;
|
||||
uVar4 = 0x499;
|
||||
goto call;
|
||||
adjC: iVar1 = iVar5 - iVar1; goto divide;
|
||||
set7f: uVar4 = 0x7f; goto post;
|
||||
adjA: iVar1 = iVar1 - iVar7;
|
||||
divide:
|
||||
num = iVar1 * 0x7f;
|
||||
iVar1 = iVar5 - iVar7;
|
||||
uVar4 = num / iVar1;
|
||||
goto post;
|
||||
clamp:
|
||||
uVar3 = 0x499;
|
||||
if (0x7f < uVar4) uVar4 = 0x7f;
|
||||
uVar4 = (uVar4 | 0x1000) & 0xffff;
|
||||
call:
|
||||
func_8002D4C8(uVar3, uVar4);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// @class: regalloc-order
|
||||
// @stuck: none — MATCH (base &D_801270D0 pinned to $s0 holds across call; one lui/addiu reused for load+store)
|
||||
@@ -4801,7 +4863,7 @@ void func_80180294(void *a0) {
|
||||
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern void func_8017F114(void);
|
||||
extern void func_8017F114();
|
||||
extern void func_8017F290(void);
|
||||
|
||||
void func_801802CC(s32 *param_1)
|
||||
@@ -4840,7 +4902,46 @@ void func_8018031C(int param_1)
|
||||
return;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8017AE2C", func_801803B0);
|
||||
// @class: other
|
||||
// @stuck: none — MATCH expected; simple if/else, no call-crossing locals beyond param in $s0
|
||||
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void func_8001D0E8(int, int, int);
|
||||
extern void func_8012B2CC(int);
|
||||
extern void func_8012B200(u8 *a0);
|
||||
extern void func_8012A828(int, void *);
|
||||
|
||||
extern unsigned char D_801D0B94[];
|
||||
extern M2C_UNK D_80186E48;
|
||||
extern unsigned char D_8018A884[];
|
||||
|
||||
void func_801803B0(int param_1)
|
||||
{
|
||||
int iVar1;
|
||||
|
||||
iVar1 = ((int (*)(void))func_8012C1B8)();
|
||||
*(int *)(param_1 + 0x20) = iVar1;
|
||||
if (iVar1 == 0) {
|
||||
((void (*)(int))func_8012CAE4)(param_1);
|
||||
} else {
|
||||
((int (*)(int, void *))func_8001C214)(iVar1, D_801D0B94);
|
||||
func_8001D0E8(*(int *)(param_1 + 0x20), 0xDC, 0xB8);
|
||||
func_8012B2CC(param_1);
|
||||
*(int *)(param_1 + 0x58) = (int)D_8018A884 | 0x40000000;
|
||||
*(unsigned char *)(param_1 + 0x75) = 0;
|
||||
*(int *)(param_1 + 0x1c) = 0x80;
|
||||
*(unsigned short *)(param_1 + 0x5c) = *(unsigned short *)(param_1 + 0x5c) | 0xD010;
|
||||
((void (*)(int))func_8012B200)(param_1);
|
||||
func_8012A828(param_1, ((unsigned char *)&D_80186E48));
|
||||
*(short *)(param_1 + 2) = 1;
|
||||
*(short *)(param_1 + 0x84) = 0x10;
|
||||
*(short *)(param_1 + 0xDC) = *(short *)(param_1 + 6);
|
||||
*(short *)(param_1 + 0xDE) = *(short *)(param_1 + 0xE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// @class: regalloc-order
|
||||
// @stuck: none — MATCH
|
||||
@@ -5171,32 +5272,3 @@ void func_80180AD4(s32 a0) {
|
||||
}
|
||||
((void (*)(s32))func_8012AE00)(p);
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8017AE2C", func_80180B64);
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8017AE2C", func_80180C90);
|
||||
|
||||
extern s16 D_8018AACC;
|
||||
extern s16 D_8018AAD0;
|
||||
extern u16 D_80126B5E;
|
||||
extern s32 func_80013478(s32 a0, s32 a1);
|
||||
extern s32 ratan2(s32, s32);
|
||||
s32 func_80180F10(s32 param_1, s32 param_2) {
|
||||
s32 local_20[2] = {0x3c100, 0x51000};
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
if ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18 == 4) {
|
||||
iVar1 = ((s32 (*)(s32, void *))func_80013478)(param_1 + 4, &D_8018AACC);
|
||||
if (param_2 == 1) {
|
||||
iVar2 = ratan2((s32)*(s16 *)(param_1 + 0xe) - (s32)D_8018AAD0,
|
||||
(s32)D_8018AACC - (s32)*(s16 *)(param_1 + 6));
|
||||
if ((((u32)iVar2 - 0x400U) & 0xfff) - 0x381 < 0xff && 0x2df < (*(s16 *)&D_80126B5E) &&
|
||||
0x3c100 < iVar1) { return 1; }
|
||||
}
|
||||
if (local_20[param_2] < iVar1 && *(s32 *)(param_1 + 0xe8) < iVar1) {
|
||||
*(s32 *)(param_1 + 0xe8) = iVar1; return 1;
|
||||
}
|
||||
*(s32 *)(param_1 + 0xe8) = iVar1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2991,7 +2991,7 @@ extern s32 func_8018021C(s16 *a0);
|
||||
extern s32 (*D_8018AA24[])();
|
||||
extern s32 func_80180258(s16 *a0);
|
||||
extern void func_80180294(void *a0);
|
||||
extern void func_8017F114(void);
|
||||
extern void func_8017F114();
|
||||
extern void func_801802CC(s32 *param_1);
|
||||
extern s32 func_8012CE2C(s32 a0);
|
||||
extern void func_8012CBCC(s32 a0);
|
||||
|
||||
@@ -2991,7 +2991,7 @@ extern s32 func_8018021C(s16 *a0);
|
||||
extern s32 (*D_8018AA24[])();
|
||||
extern s32 func_80180258(s16 *a0);
|
||||
extern void func_80180294(void *a0);
|
||||
extern void func_8017F114(void);
|
||||
extern void func_8017F114();
|
||||
extern void func_801802CC(s32 *param_1);
|
||||
extern s32 func_8012CE2C(s32 a0);
|
||||
extern void func_8012CBCC(s32 a0);
|
||||
|
||||
@@ -2973,7 +2973,7 @@ extern s32 func_8018021C(s16 *a0);
|
||||
extern s32 (*D_8018AA24[])();
|
||||
extern s32 func_80180258(s16 *a0);
|
||||
extern void func_80180294(void *a0);
|
||||
extern void func_8017F114(void);
|
||||
extern void func_8017F114();
|
||||
extern void func_8017F290(void);
|
||||
extern void func_801802CC(s32 *param_1);
|
||||
extern s32 func_8012CE2C(s32 a0);
|
||||
@@ -3507,7 +3507,69 @@ lab_ab0:
|
||||
}
|
||||
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80182268", func_80182C9C);
|
||||
// @class: schedule
|
||||
// @stuck: none — MATCH (101 ins). Inner-switch break-to-shared-tail must be written as
|
||||
// duplicated `func_8012C218(p); return;` in BOTH case 3/7 and case 4 so gcc cross-jumps
|
||||
// them into the shared E14 tail (trampoline `j E14`+addu for 3/7, fall-through+early-addu
|
||||
// for 4). A single break/after-switch call folds the table directly to E14 and misses by 2.
|
||||
extern void func_8012B178();
|
||||
extern void func_8012AD80();
|
||||
extern int func_8012BEE8();
|
||||
extern void func_8012A828();
|
||||
extern void func_8012C098();
|
||||
extern void func_8012C218();
|
||||
extern unsigned char D_8018AB24[];
|
||||
extern unsigned char D_801AFFC0[];
|
||||
extern int D_801270CC;
|
||||
|
||||
void func_80182C9C(int p)
|
||||
{
|
||||
switch (*(unsigned short *)(p + 0x34)) {
|
||||
case 0:
|
||||
func_8012B178(p, 0xfff40000);
|
||||
func_8012AD80(p);
|
||||
if (func_8012BEE8(p) == 0) return;
|
||||
*(unsigned short *)(p + 0x34) = 1;
|
||||
func_8012A828(p, D_8018AB24);
|
||||
return;
|
||||
case 1:
|
||||
if (*(short *)(p + 0x98) != 0) return;
|
||||
*(unsigned short *)(p + 0x34) = 2;
|
||||
func_8012A828(p, D_801AFFC0);
|
||||
*(int *)(p + 0x1c) = 4;
|
||||
return;
|
||||
case 2:
|
||||
*(unsigned short *)(*(int *)(p + 0x20) + 0x12) =
|
||||
*(unsigned short *)(*(int *)(p + 0x20) + 0x12) - 0x200;
|
||||
if (func_8012BEE8(p) == 0) return;
|
||||
*(int *)(p + 0x1c) = 0x3c;
|
||||
*(unsigned short *)(p + 0x34) = 3;
|
||||
return;
|
||||
case 3:
|
||||
func_8012B178(p, 0xfff40000);
|
||||
func_8012AD80(p);
|
||||
if (func_8012BEE8(p) == 0) return;
|
||||
switch (((int)(*(unsigned short *)(p + 0x70) << 16)) >> 24) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 5:
|
||||
case 6:
|
||||
func_8012C098(p);
|
||||
return;
|
||||
case 3:
|
||||
case 7:
|
||||
func_8012C218(p);
|
||||
return;
|
||||
case 4:
|
||||
D_801270CC = D_801270CC - 1;
|
||||
func_8012C218(p);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// @class: loose-typing
|
||||
// @stuck: none — MATCH (unsigned short store @0x5c forces ori vs li/addiu for 0xaa10)
|
||||
|
||||
@@ -2964,7 +2964,7 @@ extern s32 func_8018021C(s16 *a0);
|
||||
extern s32 (*D_8018AA24[])();
|
||||
extern s32 func_80180258(s16 *a0);
|
||||
extern void func_80180294(void *a0);
|
||||
extern void func_8017F114(void);
|
||||
extern void func_8017F114();
|
||||
extern void func_8017F290(void);
|
||||
extern void func_801802CC(s32 *param_1);
|
||||
extern s32 func_8012CE2C(s32 a0);
|
||||
|
||||
@@ -2964,7 +2964,7 @@ extern s32 func_8018021C(s16 *a0);
|
||||
extern s32 (*D_8018AA24[])();
|
||||
extern s32 func_80180258(s16 *a0);
|
||||
extern void func_80180294(void *a0);
|
||||
extern void func_8017F114(void);
|
||||
extern void func_8017F114();
|
||||
extern void func_8017F290(void);
|
||||
extern void func_801802CC(s32 *param_1);
|
||||
extern s32 func_8012CE2C(s32 a0);
|
||||
|
||||
@@ -2964,7 +2964,7 @@ extern s32 func_8018021C(s16 *a0);
|
||||
extern s32 (*D_8018AA24[])();
|
||||
extern s32 func_80180258(s16 *a0);
|
||||
extern void func_80180294(void *a0);
|
||||
extern void func_8017F114(void);
|
||||
extern void func_8017F114();
|
||||
extern void func_8017F290(void);
|
||||
extern void func_801802CC(s32 *param_1);
|
||||
extern s32 func_8012CE2C(s32 a0);
|
||||
|
||||
@@ -2964,7 +2964,7 @@ extern s32 func_8018021C(s16 *a0);
|
||||
extern s32 (*D_8018AA24[])();
|
||||
extern s32 func_80180258(s16 *a0);
|
||||
extern void func_80180294(void *a0);
|
||||
extern void func_8017F114(void);
|
||||
extern void func_8017F114();
|
||||
extern void func_8017F290(void);
|
||||
extern void func_801802CC(s32 *param_1);
|
||||
extern s32 func_8012CE2C(s32 a0);
|
||||
@@ -3124,7 +3124,64 @@ void func_80183CF4(int param_1) {
|
||||
void func_80183DD8(void) {
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80183CF4", func_80183DE0);
|
||||
|
||||
|
||||
|
||||
|
||||
void func_80183DE0(int param)
|
||||
{
|
||||
extern u16 D_80126B66;
|
||||
extern unsigned char D_8018AE0C;
|
||||
extern unsigned char D_8018AE34;
|
||||
extern s32 func_8012C51C(void *a0, s32 a1);
|
||||
extern void func_80183F4C();
|
||||
register int i __asm__("$17");
|
||||
register unsigned char *puVar8 __asm__("$16");
|
||||
int iVar7;
|
||||
int src;
|
||||
short sVar1;
|
||||
|
||||
iVar7 = *(int *)(param + 0xcc);
|
||||
if (iVar7 != 0) {
|
||||
*(short *)(iVar7 + 0x18) = 0x1800;
|
||||
*(unsigned short *)(iVar7 + 0x2c) |= 0x10;
|
||||
src = *(int *)(param + 0x20);
|
||||
*(Blk8 *)(iVar7 + 8) = *(Blk8 *)(src + 8);
|
||||
*(unsigned short *)(iVar7 + 0xa) -= 0x10;
|
||||
*(unsigned short *)(iVar7 + 0x10) =
|
||||
*(unsigned short *)(iVar7 + 0x10) + *(short *)(param + 0x1a) * -0x10;
|
||||
}
|
||||
|
||||
sVar1 = *(short *)(param + 0xfe);
|
||||
if (sVar1 != 1) {
|
||||
if (sVar1 < 2 && sVar1 == 0 && (*(short *)&D_80126B66) >= 0x6e0) {
|
||||
*(short *)(param + 0xfe) = 1;
|
||||
i = 0;
|
||||
puVar8 = (unsigned char *)&D_8018AE0C;
|
||||
do {
|
||||
func_8012C51C(puVar8, 0);
|
||||
i = i + 1;
|
||||
puVar8 = puVar8 + 0x14;
|
||||
} while (i < 2);
|
||||
}
|
||||
} else {
|
||||
if ((*(short *)&D_80126B66) >= 0x900) {
|
||||
*(short *)(param + 0xfe) = 2;
|
||||
i = 2;
|
||||
puVar8 = (unsigned char *)&D_8018AE34;
|
||||
do {
|
||||
func_8012C51C(puVar8, 0);
|
||||
i = i + 1;
|
||||
puVar8 = puVar8 + 0x14;
|
||||
} while (i < 5);
|
||||
}
|
||||
}
|
||||
|
||||
if (*(short *)(param + 0xfc) != *(short *)(param + 0xe)) {
|
||||
func_80183F4C(param);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// @class: plumbing
|
||||
// @stuck: none — MATCH (straight-line stub; statement order + delay-slot 0x34 store match)
|
||||
@@ -3567,7 +3624,40 @@ void func_80184BB4(int param_1)
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80183CF4", func_80184C0C);
|
||||
// @class: struct
|
||||
// @stuck: none — MATCH (array-of-struct %lo-fold for &D_8018AEB8[idx], stride 0x34)
|
||||
|
||||
typedef struct { unsigned char b[0x34]; } S_8018AEB8;
|
||||
extern S_8018AEB8 D_8018AEB8[];
|
||||
extern unsigned char D_8018AF20[];
|
||||
extern u8 D_8019731C;
|
||||
|
||||
extern s32 func_8012C354(s32 a0, s32 a1);
|
||||
extern int func_8012C658(int, int, int);
|
||||
extern void func_8012CAE4(void *a0);
|
||||
extern void func_8012A828(int, void *);
|
||||
|
||||
void func_80184C0C(int param_1) {
|
||||
int iVar1;
|
||||
|
||||
iVar1 = ((int (*)(int, void *))func_8012C354)(param_1, &D_8018AEB8[*(unsigned short *)(param_1 + 0x70) & 1]);
|
||||
if (iVar1 != 0) {
|
||||
*(unsigned char *)(param_1 + 0xc0) = 1;
|
||||
*(int *)(param_1 + 0xb4) = -1;
|
||||
*(void **)(param_1 + 0xbc) = D_8018AF20;
|
||||
*(int *)(param_1 + 0xc4) = 1;
|
||||
iVar1 = func_8012C658(0x79, *(unsigned short *)(param_1 + 0x70) & 1, param_1);
|
||||
*(int *)(param_1 + 0x6c) = iVar1;
|
||||
if (iVar1 == 0) {
|
||||
((void (*)(int))func_8012CAE4)(param_1);
|
||||
} else {
|
||||
*(unsigned short *)(param_1 + 2) = 1;
|
||||
func_8012A828(param_1, ((unsigned char *)&D_8019731C));
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// @class: struct
|
||||
// @stuck: none — MATCH expected (folded %lo via extern array decay; a0 carries iVar2 into func_8001C214)
|
||||
|
||||
Reference in New Issue
Block a user