mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 22:45:39 -04:00
chore(phase-33.5): task 8 — tracked .run/ pruned to flip-ready: 218 paths untracked (172 tracked-but-ignored inertia files, 39 uncited t3s3 session logs + 5 duplicate close logs, the two fable_cd4 disassembly listings) — all still on disk; .gitignore re-includes narrowed under dated comments; tools/public_rewrite/untracked_after_rewrite.txt (audit-only sibling of the purge set, which stays byte-unchanged so gate_scan stays PASS); audit_public check 4 CONTENT (longest contiguous run of disassembly-shaped lines, cap 64; controls: 398/179 fail, the 40-line fixtures pass; 0 offenders among 6,443 paths after); runbook §11 residue paragraph; four tool comments annotated; SETUP row; log + checkpoint; P6 rules check
This commit is contained in:
+16
-1
@@ -73,6 +73,9 @@
|
||||
!/.run/giants/fable_cd4/*.sh
|
||||
!/.run/giants/fable_cd4/*.gdb
|
||||
!/.run/giants/fable_cd4/*.txt
|
||||
# P33.5 task 8: the two full disassembly listings of func_80133CD4 are ROM-derived (class 3 of the firewall) and were
|
||||
# untracked; they stay in the published history by owner decision (tools/public_rewrite/untracked_after_rewrite.txt).
|
||||
/.run/giants/fable_cd4/*_full.txt
|
||||
|
||||
# Phase-26 gdb-on-cc1 oracle harness + proof + draft ladder for func_80178004 (the
|
||||
# distilled output of a 477k-token Fable5 pass; the method §52 lever 6 depends on).
|
||||
@@ -269,7 +272,11 @@ unsloth_compiled_cache/
|
||||
/.run/P32/t3s3/*
|
||||
!/.run/P32/t3s3/*.sh
|
||||
!/.run/P32/t3s3/*.py
|
||||
!/.run/P32/t3s3/*.log
|
||||
# P33.5 task 8: of the session's 41 root logs only the three the PhaseEnd cites stay tracked (the R22 runs); the
|
||||
# bank_*/report/tools-health logs of a finished session are regenerable evidence and were untracked (still on disk)
|
||||
!/.run/P32/t3s3/r22_check.log
|
||||
!/.run/P32/t3s3/r22_full.log
|
||||
!/.run/P32/t3s3/r22b_full.log
|
||||
!/.run/P32/t3s3/*.txt
|
||||
!/.run/P32/t3s3/prompts/
|
||||
!/.run/P32/t3s3/gate/
|
||||
@@ -294,6 +301,9 @@ unsloth_compiled_cache/
|
||||
!/.run/P32/t4b/func_*/*.md
|
||||
!/.run/P32/t4b/func_*/*.c
|
||||
!/.run/P32/t4b/*.log
|
||||
# P33.5 task 8: the uncited duplicate close-report logs of this step were untracked (the cited copies live under t4d/t4e)
|
||||
/.run/P32/t4b/report_close.log
|
||||
/.run/P32/t4b/report_main_close.log
|
||||
!/.run/P32/t5x/
|
||||
/.run/P32/t5x/*
|
||||
!/.run/P32/t5x/BRIEF.md
|
||||
@@ -324,6 +334,9 @@ unsloth_compiled_cache/
|
||||
!/.run/P32/t4d/*.c
|
||||
!/.run/P32/t4d/*.md
|
||||
!/.run/P32/t4d/*.log
|
||||
# P33.5 task 8: uncited duplicates untracked (report_close.log and tools_health.log here ARE cited and stay)
|
||||
/.run/P32/t4d/audit_disc.log
|
||||
/.run/P32/t4d/report_main_close.log
|
||||
!/.run/P32/t4d/bank/
|
||||
/.run/P32/t4d/bank/*
|
||||
!/.run/P32/t4d/bank/*.c
|
||||
@@ -348,6 +361,8 @@ unsloth_compiled_cache/
|
||||
!/.run/P32/t4e/*.c
|
||||
!/.run/P32/t4e/*.md
|
||||
!/.run/P32/t4e/*.log
|
||||
# P33.5 task 8: the uncited duplicate untracked (r22_*.log, report_close.log and tools_health.log here are cited and stay)
|
||||
/.run/P32/t4e/report_main_close.log
|
||||
!/.run/P32/t4e/*.json
|
||||
!/.run/P32/t4e/*.sh
|
||||
!/.run/P32/t4e/*.py
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
CC build/src/md_MAIN_003/md_MAIN_003.o
|
||||
src/md_MAIN_003/md_MAIN_003.c: In function `func_800CFC1C':
|
||||
src/md_MAIN_003/md_MAIN_003.c:582: warning: return makes integer from pointer without a cast
|
||||
src/md_MAIN_003/md_MAIN_003.c:666: warning: return makes integer from pointer without a cast
|
||||
LD build/md_MAIN_003/md_MAIN_003.elf
|
||||
OBJCOPY build/md_MAIN_003/md_MAIN_003
|
||||
[ OK ] build/md_MAIN_003/md_MAIN_003
|
||||
sha1 dd1b32ecf1103c6f7cf1943d25546a3046e17b14 == config/check.md_MAIN_003.sha (BYTE-IDENTICAL)
|
||||
@@ -1,5 +0,0 @@
|
||||
CC build/src/md_MAIN_007/md_MAIN_007.o
|
||||
LD build/md_MAIN_007/md_MAIN_007.elf
|
||||
OBJCOPY build/md_MAIN_007/md_MAIN_007
|
||||
[ OK ] build/md_MAIN_007/md_MAIN_007
|
||||
sha1 2ff702b605ab5cfc18474c464c4c07e5f8ffd48c == config/check.md_MAIN_007.sha (BYTE-IDENTICAL)
|
||||
@@ -1,5 +0,0 @@
|
||||
CC build/src/md_MAIN_007/md_MAIN_007.o
|
||||
LD build/md_MAIN_007/md_MAIN_007.elf
|
||||
OBJCOPY build/md_MAIN_007/md_MAIN_007
|
||||
[ OK ] build/md_MAIN_007/md_MAIN_007
|
||||
sha1 2ff702b605ab5cfc18474c464c4c07e5f8ffd48c == config/check.md_MAIN_007.sha (BYTE-IDENTICAL)
|
||||
@@ -1,5 +0,0 @@
|
||||
CC build/src/md_MAIN_007/md_MAIN_007.o
|
||||
LD build/md_MAIN_007/md_MAIN_007.elf
|
||||
OBJCOPY build/md_MAIN_007/md_MAIN_007
|
||||
[ OK ] build/md_MAIN_007/md_MAIN_007
|
||||
sha1 2ff702b605ab5cfc18474c464c4c07e5f8ffd48c == config/check.md_MAIN_007.sha (BYTE-IDENTICAL)
|
||||
@@ -1,5 +0,0 @@
|
||||
CC build/src/md_MAIN_009/md_MAIN_009.o
|
||||
LD build/md_MAIN_009/md_MAIN_009.elf
|
||||
OBJCOPY build/md_MAIN_009/md_MAIN_009
|
||||
[ OK ] build/md_MAIN_009/md_MAIN_009
|
||||
sha1 d270f695b793b5c03db159b7aabcc066daa87eda == config/check.md_MAIN_009.sha (BYTE-IDENTICAL)
|
||||
@@ -1,5 +0,0 @@
|
||||
CC build/src/md_MAIN_009/md_MAIN_009.o
|
||||
LD build/md_MAIN_009/md_MAIN_009.elf
|
||||
OBJCOPY build/md_MAIN_009/md_MAIN_009
|
||||
[ OK ] build/md_MAIN_009/md_MAIN_009
|
||||
sha1 d270f695b793b5c03db159b7aabcc066daa87eda == config/check.md_MAIN_009.sha (BYTE-IDENTICAL)
|
||||
@@ -1,2 +0,0 @@
|
||||
[ OK ] build/md_MAIN_009/md_MAIN_009
|
||||
sha1 d270f695b793b5c03db159b7aabcc066daa87eda == config/check.md_MAIN_009.sha (BYTE-IDENTICAL)
|
||||
@@ -1,5 +0,0 @@
|
||||
CC build/src/md_MAIN_009/md_MAIN_009.o
|
||||
LD build/md_MAIN_009/md_MAIN_009.elf
|
||||
OBJCOPY build/md_MAIN_009/md_MAIN_009
|
||||
[ OK ] build/md_MAIN_009/md_MAIN_009
|
||||
sha1 d270f695b793b5c03db159b7aabcc066daa87eda == config/check.md_MAIN_009.sha (BYTE-IDENTICAL)
|
||||
@@ -1,5 +0,0 @@
|
||||
CC build/src/md_MAIN_009/md_MAIN_009.o
|
||||
LD build/md_MAIN_009/md_MAIN_009.elf
|
||||
OBJCOPY build/md_MAIN_009/md_MAIN_009
|
||||
[ OK ] build/md_MAIN_009/md_MAIN_009
|
||||
sha1 d270f695b793b5c03db159b7aabcc066daa87eda == config/check.md_MAIN_009.sha (BYTE-IDENTICAL)
|
||||
@@ -1,6 +0,0 @@
|
||||
CC build/src/md_SC03_054/md_SC03_054.o
|
||||
jtbl_rodata_pads --derive md_SC03_054: 0,0t1,0t1,0t1,0t1,0t1,0
|
||||
LD build/md_SC03_054/md_SC03_054.elf
|
||||
OBJCOPY build/md_SC03_054/md_SC03_054
|
||||
[ OK ] build/md_SC03_054/md_SC03_054
|
||||
sha1 06bd73dfbdb10748adcbac7093ead5d76131206a == config/check.md_SC03_054.sha (BYTE-IDENTICAL)
|
||||
@@ -1,9 +0,0 @@
|
||||
CC build/src/md_SC03_056/md_SC03_056.o
|
||||
src/md_SC03_056/md_SC03_056.c: In function `func_801CBBDC':
|
||||
src/md_SC03_056/md_SC03_056.c:39: warning: passing arg 2 of `func_80178CBC' makes integer from pointer without a cast
|
||||
src/md_SC03_056/md_SC03_056.c: In function `func_801CBC08':
|
||||
src/md_SC03_056/md_SC03_056.c:48: warning: passing arg 1 of `func_80178970' from incompatible pointer type
|
||||
LD build/md_SC03_056/md_SC03_056.elf
|
||||
OBJCOPY build/md_SC03_056/md_SC03_056
|
||||
[ OK ] build/md_SC03_056/md_SC03_056
|
||||
sha1 bc768a6b7baa911e0a0cb9175b33550851d6c1eb == config/check.md_SC03_056.sha (BYTE-IDENTICAL)
|
||||
@@ -1,49 +0,0 @@
|
||||
CC build/src/ov_SC03_105/ov_SC03_105_jr_80181C84.o
|
||||
In file included from src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:2:
|
||||
src/ov_SC03_105/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined
|
||||
161199 | #define DEFINE_func_8013FFD8() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:32633: note: this is the location of the previous definition
|
||||
32633 | #define DEFINE_func_8013FFD8() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined
|
||||
169456 | #define DEFINE_func_8013F350() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:40890: note: this is the location of the previous definition
|
||||
40890 | #define DEFINE_func_8013F350() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined
|
||||
185848 | #define DEFINE_func_80181538() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:57282: note: this is the location of the previous definition
|
||||
57282 | #define DEFINE_func_80181538() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined
|
||||
190943 | #define DEFINE_func_801808C4() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:62377: note: this is the location of the previous definition
|
||||
62377 | #define DEFINE_func_801808C4() \
|
||||
|
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:1558: warning: conflicting types for built-in function `memcpy'
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3827: warning: type mismatch with previous external decl
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3804: warning: previous external decl of `func_8018383C'
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3827: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3820: warning: previous implicit declaration of `func_8018383C'
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3827: warning: `func_8018383C' was previously implicitly declared to return `int'
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c: In function `func_8018388C':
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3871: warning: passing arg 3 of `func_8013361C' from incompatible pointer type
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3871: warning: passing arg 4 of `func_8013361C' from incompatible pointer type
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3878: warning: passing arg 5 of `func_8012F568' makes integer from pointer without a cast
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3878: warning: passing arg 6 of `func_8012F568' makes integer from pointer without a cast
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c: In function `func_80184500':
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:4472: warning: passing arg 1 of `func_800599B8' from incompatible pointer type
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c: At top level:
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:4607: warning: type mismatch with previous external decl
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3339: warning: previous external decl of `D_801BA5A8'
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c: In function `func_80185480':
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:5196: warning: passing arg 2 makes pointer from integer without a cast
|
||||
LD build/ov_SC03_105/ov_SC03_105.elf
|
||||
OBJCOPY build/ov_SC03_105/ov_SC03_105
|
||||
TRIM build/ov_SC03_105/ov_SC03_105 (-1 B linker end-align pad)
|
||||
[ OK ] build/ov_SC03_105/ov_SC03_105
|
||||
sha1 d305ff6da199b52d0d44023766643a8b661ed524 == config/check.ov_SC03_105.sha (BYTE-IDENTICAL)
|
||||
@@ -1,49 +0,0 @@
|
||||
CC build/src/ov_SC03_105/ov_SC03_105_jr_80181C84.o
|
||||
In file included from src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:2:
|
||||
src/ov_SC03_105/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined
|
||||
161199 | #define DEFINE_func_8013FFD8() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:32633: note: this is the location of the previous definition
|
||||
32633 | #define DEFINE_func_8013FFD8() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined
|
||||
169456 | #define DEFINE_func_8013F350() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:40890: note: this is the location of the previous definition
|
||||
40890 | #define DEFINE_func_8013F350() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined
|
||||
185848 | #define DEFINE_func_80181538() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:57282: note: this is the location of the previous definition
|
||||
57282 | #define DEFINE_func_80181538() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined
|
||||
190943 | #define DEFINE_func_801808C4() \
|
||||
|
|
||||
src/ov_SC03_105/../shared/engine_core.h:62377: note: this is the location of the previous definition
|
||||
62377 | #define DEFINE_func_801808C4() \
|
||||
|
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:1558: warning: conflicting types for built-in function `memcpy'
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3827: warning: type mismatch with previous external decl
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3804: warning: previous external decl of `func_8018383C'
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3827: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3820: warning: previous implicit declaration of `func_8018383C'
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3827: warning: `func_8018383C' was previously implicitly declared to return `int'
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c: In function `func_8018388C':
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3871: warning: passing arg 3 of `func_8013361C' from incompatible pointer type
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3871: warning: passing arg 4 of `func_8013361C' from incompatible pointer type
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3878: warning: passing arg 5 of `func_8012F568' makes integer from pointer without a cast
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3878: warning: passing arg 6 of `func_8012F568' makes integer from pointer without a cast
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c: In function `func_80184500':
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:4472: warning: passing arg 1 of `func_800599B8' from incompatible pointer type
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c: At top level:
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:4607: warning: type mismatch with previous external decl
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:3339: warning: previous external decl of `D_801BA5A8'
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c: In function `func_80185480':
|
||||
src/ov_SC03_105/ov_SC03_105_jr_80181C84.c:5196: warning: passing arg 2 makes pointer from integer without a cast
|
||||
LD build/ov_SC03_105/ov_SC03_105.elf
|
||||
OBJCOPY build/ov_SC03_105/ov_SC03_105
|
||||
TRIM build/ov_SC03_105/ov_SC03_105 (-1 B linker end-align pad)
|
||||
[ OK ] build/ov_SC03_105/ov_SC03_105
|
||||
sha1 d305ff6da199b52d0d44023766643a8b661ed524 == config/check.ov_SC03_105.sha (BYTE-IDENTICAL)
|
||||
@@ -1,97 +0,0 @@
|
||||
CC build/src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.o
|
||||
In file included from src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:2:
|
||||
src/ov_SC06_022/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined
|
||||
161199 | #define DEFINE_func_8013FFD8() \
|
||||
|
|
||||
src/ov_SC06_022/../shared/engine_core.h:32633: note: this is the location of the previous definition
|
||||
32633 | #define DEFINE_func_8013FFD8() \
|
||||
|
|
||||
src/ov_SC06_022/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined
|
||||
169456 | #define DEFINE_func_8013F350() \
|
||||
|
|
||||
src/ov_SC06_022/../shared/engine_core.h:40890: note: this is the location of the previous definition
|
||||
40890 | #define DEFINE_func_8013F350() \
|
||||
|
|
||||
src/ov_SC06_022/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined
|
||||
185848 | #define DEFINE_func_80181538() \
|
||||
|
|
||||
src/ov_SC06_022/../shared/engine_core.h:57282: note: this is the location of the previous definition
|
||||
57282 | #define DEFINE_func_80181538() \
|
||||
|
|
||||
src/ov_SC06_022/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined
|
||||
190943 | #define DEFINE_func_801808C4() \
|
||||
|
|
||||
src/ov_SC06_022/../shared/engine_core.h:62377: note: this is the location of the previous definition
|
||||
62377 | #define DEFINE_func_801808C4() \
|
||||
|
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:1525: warning: conflicting types for built-in function `memcpy'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4131:61: warning: "/*" within comment [-Wcomment]
|
||||
4131 | * family, all identical wherever declared — src/ov_SC06_022/*.c and the
|
||||
|
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: In function `func_8017D454':
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3489: warning: passing arg 1 of `func_8012A018' makes integer from pointer without a cast
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: In function `func_8017D518':
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3526: warning: passing arg 1 of `func_8012A018' makes integer from pointer without a cast
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: In function `func_8017D5D8':
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3545: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3437: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: In function `func_8017D6E0':
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3590: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3437: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: In function `func_8017D7CC':
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3631: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3437: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: In function `func_8017D8D4':
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3674: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3437: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: At top level:
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3722: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3578: warning: previous external decl of `func_8017D9C0'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3722: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3704: warning: previous implicit declaration of `func_8017D9C0'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3722: warning: `func_8017D9C0' was previously implicitly declared to return `int'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3755: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3579: warning: previous external decl of `func_8017DB58'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3755: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3665: warning: previous implicit declaration of `func_8017DB58'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3755: warning: `func_8017DB58' was previously implicitly declared to return `int'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: In function `func_8017DB58':
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3760: warning: assignment from incompatible pointer type
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: In function `func_8017DC0C':
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3803: warning: passing arg 3 of `func_80128D60' from incompatible pointer type
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: At top level:
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4038: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3985: warning: previous external decl of `func_8017E2B0'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4038: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4015: warning: previous implicit declaration of `func_8017E2B0'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4038: warning: `func_8017E2B0' was previously implicitly declared to return `int'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4142: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3844: warning: previous external decl of `func_8012B0B4'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4142: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3855: warning: previous implicit declaration of `func_8012B0B4'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4142: warning: `func_8012B0B4' was previously implicitly declared to return `int'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: In function `func_8017EA6C':
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4353: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3818: warning: previous external decl of `func_8017EFE0'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4353: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3818: warning: previous implicit declaration of `func_8017EFE0'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4355: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3823: warning: previous external decl of `func_8012E9C0'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4355: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3823: warning: previous implicit declaration of `func_8012E9C0'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c: At top level:
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4546: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3818: warning: previous external decl of `func_8017EFE0'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4546: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:3818: warning: previous implicit declaration of `func_8017EFE0'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:4546: warning: `func_8017EFE0' was previously implicitly declared to return `int'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:5483: warning: type mismatch with previous external decl
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:5466: warning: previous external decl of `func_80180700'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:5483: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:5466: warning: previous implicit declaration of `func_80180700'
|
||||
src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c:5483: warning: `func_80180700' was previously implicitly declared to return `int'
|
||||
LD build/ov_SC06_022/ov_SC06_022.elf
|
||||
OBJCOPY build/ov_SC06_022/ov_SC06_022
|
||||
TRIM build/ov_SC06_022/ov_SC06_022 (-1 B linker end-align pad)
|
||||
[ OK ] build/ov_SC06_022/ov_SC06_022
|
||||
sha1 2a7d7d4e2fe2f87a83a065686731c7942b3c70ef == config/check.ov_SC06_022.sha (BYTE-IDENTICAL)
|
||||
@@ -1,113 +0,0 @@
|
||||
CC build/src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.o
|
||||
In file included from src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:2:
|
||||
src/ov_SC07_002/../shared/engine_core.h:161199: warning: "DEFINE_func_8013FFD8" redefined
|
||||
161199 | #define DEFINE_func_8013FFD8() \
|
||||
|
|
||||
src/ov_SC07_002/../shared/engine_core.h:32633: note: this is the location of the previous definition
|
||||
32633 | #define DEFINE_func_8013FFD8() \
|
||||
|
|
||||
src/ov_SC07_002/../shared/engine_core.h:169456: warning: "DEFINE_func_8013F350" redefined
|
||||
169456 | #define DEFINE_func_8013F350() \
|
||||
|
|
||||
src/ov_SC07_002/../shared/engine_core.h:40890: note: this is the location of the previous definition
|
||||
40890 | #define DEFINE_func_8013F350() \
|
||||
|
|
||||
src/ov_SC07_002/../shared/engine_core.h:185848: warning: "DEFINE_func_80181538" redefined
|
||||
185848 | #define DEFINE_func_80181538() \
|
||||
|
|
||||
src/ov_SC07_002/../shared/engine_core.h:57282: note: this is the location of the previous definition
|
||||
57282 | #define DEFINE_func_80181538() \
|
||||
|
|
||||
src/ov_SC07_002/../shared/engine_core.h:190943: warning: "DEFINE_func_801808C4" redefined
|
||||
190943 | #define DEFINE_func_801808C4() \
|
||||
|
|
||||
src/ov_SC07_002/../shared/engine_core.h:62377: note: this is the location of the previous definition
|
||||
62377 | #define DEFINE_func_801808C4() \
|
||||
|
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:1531: warning: conflicting types for built-in function `memcpy'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_8017DC80':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:3518: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:2823: warning: previous external decl of `func_80052E38'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_8017FA94':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4552: warning: passing arg 2 of `func_8014C59C' makes pointer from integer without a cast
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_8017FEC4':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4683: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4591: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_8017FF84':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4706: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4591: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80180090':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4745: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4591: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80180248':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4786: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4591: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_8018094C':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5003: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4591: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80180A2C':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5032: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4591: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5036: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4595: warning: previous external decl of `func_80181394'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80180B0C':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5061: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4591: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80180BEC':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5114: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4591: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80180CCC':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5147: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4591: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: At top level:
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5176: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:4591: warning: previous external decl of `D_80126940'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5536: warning: parameter names (without types) in function declaration
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5931: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5846: warning: previous external decl of `func_8018247C'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5931: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5846: warning: previous implicit declaration of `func_8018247C'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:5931: warning: `func_8018247C' was previously implicitly declared to return `int'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80182C68':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:6298: warning: passing arg 1 makes pointer from integer without a cast
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:6307: warning: passing arg 1 of `func_80182264' makes pointer from integer without a cast
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:6319: warning: passing arg 1 of `func_8012AD50' makes pointer from integer without a cast
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80182D50':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:6341: warning: passing arg 1 of `func_80182538' makes integer from pointer without a cast
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80182E48':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:6379: warning: passing arg 2 of `func_8001C214' makes integer from pointer without a cast
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:6387: warning: passing arg 1 of `func_8012AD50' makes pointer from integer without a cast
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80184410':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:7234: warning: passing arg 1 of `func_8012C218' makes pointer from integer without a cast
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_801849AC':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:7691: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:2824: warning: previous external decl of `D_800A5E60'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_8018503C':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:8058: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:7970: warning: previous external decl of `D_8019FD76'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80185150':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:8152: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:7690: warning: previous external decl of `D_800AE620'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:8154: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:7692: warning: previous external decl of `D_800A651C'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: At top level:
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:8599: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:8451: warning: previous external decl of `func_80185A2C'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:8599: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:8546: warning: previous implicit declaration of `func_80185A2C'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:8599: warning: `func_80185A2C' was previously implicitly declared to return `int'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_80185E90':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:8808: warning: passing arg 1 makes pointer from integer without a cast
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: At top level:
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:9015: warning: type mismatch with previous external decl
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:8911: warning: previous external decl of `func_801863B0'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:9015: warning: type mismatch with previous implicit declaration
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:8911: warning: previous implicit declaration of `func_801863B0'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:9015: warning: `func_801863B0' was previously implicitly declared to return `int'
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c: In function `func_8018672C':
|
||||
src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c:9163: warning: passing arg 3 makes integer from pointer without a cast
|
||||
LD build/ov_SC07_002/ov_SC07_002.elf
|
||||
OBJCOPY build/ov_SC07_002/ov_SC07_002
|
||||
TRIM build/ov_SC07_002/ov_SC07_002 (-1 B linker end-align pad)
|
||||
[ OK ] build/ov_SC07_002/ov_SC07_002
|
||||
sha1 fad71342019704d1dd6ec25f2f3934c97e322624 == config/check.ov_SC07_002.sha (BYTE-IDENTICAL)
|
||||
@@ -1,5 +0,0 @@
|
||||
CC build/src/md_MAIN_007/md_MAIN_007.o
|
||||
LD build/md_MAIN_007/md_MAIN_007.elf
|
||||
OBJCOPY build/md_MAIN_007/md_MAIN_007
|
||||
[ OK ] build/md_MAIN_007/md_MAIN_007
|
||||
sha1 2ff702b605ab5cfc18474c464c4c07e5f8ffd48c == config/check.md_MAIN_007.sha (BYTE-IDENTICAL)
|
||||
@@ -1,6 +0,0 @@
|
||||
CC build/src/md_MAIN_007/md_MAIN_007.o
|
||||
src/md_MAIN_007/md_MAIN_007.c: In function `func_800CEF94':
|
||||
src/md_MAIN_007/md_MAIN_007.c:76: conflicting types for `D_800B99E8'
|
||||
src/md_MAIN_007/md_MAIN_007.c:45: previous declaration of `D_800B99E8'
|
||||
make: *** [Makefile:791: build/src/md_MAIN_007/md_MAIN_007.o] Error 33
|
||||
make: *** Deleting file 'build/src/md_MAIN_007/md_MAIN_007.o'
|
||||
@@ -1,6 +0,0 @@
|
||||
CC build/src/md_MAIN_007/md_MAIN_007.o
|
||||
LD build/md_MAIN_007/md_MAIN_007.elf
|
||||
mipsel-linux-gnu-ld: build/src/md_MAIN_007/md_MAIN_007.o: in function `func_800CF068':
|
||||
src/md_MAIN_007/md_MAIN_007.c:(.text+0x240): undefined reference to `D_800CEDFC'
|
||||
mipsel-linux-gnu-ld: src/md_MAIN_007/md_MAIN_007.c:(.text+0x244): undefined reference to `D_800CEDFC'
|
||||
make: *** [Makefile:852: build/md_MAIN_007/md_MAIN_007] Error 1
|
||||
@@ -1,5 +0,0 @@
|
||||
CC build/src/md_MAIN_007/md_MAIN_007.o
|
||||
LD build/md_MAIN_007/md_MAIN_007.elf
|
||||
OBJCOPY build/md_MAIN_007/md_MAIN_007
|
||||
[ OK ] build/md_MAIN_007/md_MAIN_007
|
||||
sha1 2ff702b605ab5cfc18474c464c4c07e5f8ffd48c == config/check.md_MAIN_007.sha (BYTE-IDENTICAL)
|
||||
@@ -1,5 +0,0 @@
|
||||
CC build/src/md_MAIN_007/md_MAIN_007.o
|
||||
LD build/md_MAIN_007/md_MAIN_007.elf
|
||||
OBJCOPY build/md_MAIN_007/md_MAIN_007
|
||||
[ OK ] build/md_MAIN_007/md_MAIN_007
|
||||
sha1 2ff702b605ab5cfc18474c464c4c07e5f8ffd48c == config/check.md_MAIN_007.sha (BYTE-IDENTICAL)
|
||||
@@ -1,6 +0,0 @@
|
||||
CC build/src/md_SC03_054/md_SC03_054.o
|
||||
jtbl_rodata_pads --derive md_SC03_054: 0,0t1,0t1,0t1,0t1,0t1,0
|
||||
LD build/md_SC03_054/md_SC03_054.elf
|
||||
OBJCOPY build/md_SC03_054/md_SC03_054
|
||||
[ OK ] build/md_SC03_054/md_SC03_054
|
||||
sha1 06bd73dfbdb10748adcbac7093ead5d76131206a == config/check.md_SC03_054.sha (BYTE-IDENTICAL)
|
||||
@@ -1 +0,0 @@
|
||||
cookbook index -> docs/cookbook-index.md (1168 sections, 14 symptom buckets)
|
||||
@@ -1,11 +0,0 @@
|
||||
ILS func_8001BC6C: 8 cycles x 150s @ -j3, klass=REGALLOC
|
||||
cycle 1: no waypoint (no improvement over base yet)
|
||||
cycle 2: no waypoint (no improvement over base yet)
|
||||
cycle 3: no waypoint (no improvement over base yet)
|
||||
cycle 4: no waypoint (no improvement over base yet)
|
||||
cycle 5: no waypoint (no improvement over base yet)
|
||||
cycle 6: best score = 6 [output-6-1]
|
||||
cycle 7: best score = 5 [output-5-1]
|
||||
cycle 8: best score = 1 [output-1-1]
|
||||
ILS done: best=1 (no score-0; seed for Fable5 or a longer run)
|
||||
EXIT=0
|
||||
@@ -1,11 +0,0 @@
|
||||
ILS func_800CD674: 8 cycles x 150s @ -j3, klass=REGALLOC
|
||||
cycle 1: no waypoint (no improvement over base yet)
|
||||
cycle 2: no waypoint (no improvement over base yet)
|
||||
cycle 3: no waypoint (no improvement over base yet)
|
||||
cycle 4: best score = 2 [output-2-1]
|
||||
cycle 5: best score = 2 (unchanged) [output-2-1]
|
||||
cycle 6: best score = 2 (unchanged) [output-2-1]
|
||||
cycle 7: best score = 2 (unchanged) [output-2-1]
|
||||
cycle 8: best score = 2 (unchanged) [output-2-1]
|
||||
ILS done: best=2 (no score-0; seed for Fable5 or a longer run)
|
||||
EXIT=0
|
||||
@@ -1,219 +0,0 @@
|
||||
[ OK ] resident
|
||||
[ OK ] ov_SC05_000
|
||||
[ OK ] ov_SC01_000
|
||||
[ OK ] ov_SC03_006
|
||||
[ OK ] ov_SC06_000
|
||||
[ OK ] ov_SC04_000
|
||||
[ OK ] ov_SC01_001
|
||||
[ OK ] ov_SC01_006
|
||||
[ OK ] ov_SC01_005
|
||||
[ OK ] ov_SC03_002
|
||||
[ OK ] ov_SC01_077
|
||||
[ OK ] ov_SC04_019
|
||||
[ OK ] ov_SC04_018
|
||||
[ OK ] ov_SC02_003
|
||||
[ OK ] ov_SC03_001
|
||||
[ OK ] ov_SC02_000
|
||||
[ OK ] main
|
||||
[ OK ] ov_SC01_074
|
||||
[ OK ] ov_SC02_004
|
||||
[ OK ] ov_SC01_080
|
||||
[ OK ] ov_SC07_000
|
||||
[ OK ] ov_SC01_008
|
||||
[ OK ] ov_SC01_004
|
||||
[ OK ] ov_SC01_009
|
||||
[ OK ] ov_SC01_084
|
||||
[ OK ] ov_SC02_015
|
||||
[ OK ] ov_SC02_005
|
||||
[ OK ] ov_SC02_021
|
||||
[ OK ] ov_SC02_016
|
||||
[ OK ] ov_SC02_011
|
||||
[ OK ] ov_SC02_017
|
||||
[ OK ] ov_SC02_026
|
||||
[ OK ] ov_SC02_027
|
||||
[ OK ] ov_SC02_031
|
||||
[ OK ] ov_SC03_003
|
||||
[ OK ] ov_SC02_041
|
||||
[ OK ] ov_SC02_035
|
||||
[ OK ] ov_SC02_039
|
||||
[ OK ] ov_SC02_028
|
||||
[ OK ] ov_SC03_010
|
||||
[ OK ] ov_SC03_007
|
||||
[ OK ] ov_SC03_011
|
||||
[ OK ] ov_SC03_012
|
||||
[ OK ] ov_SC03_023
|
||||
[ OK ] ov_SC03_013
|
||||
[ OK ] ov_SC03_014
|
||||
[ OK ] ov_SC03_024
|
||||
[ OK ] ov_SC03_015
|
||||
[ OK ] ov_SC03_028
|
||||
[ OK ] ov_SC03_030
|
||||
[ OK ] ov_SC03_029
|
||||
[ OK ] ov_SC03_031
|
||||
[ OK ] ov_SC03_089
|
||||
[ OK ] ov_SC03_090
|
||||
[ OK ] ov_SC03_092
|
||||
[ OK ] ov_SC03_093
|
||||
[ OK ] ov_SC03_091
|
||||
[ OK ] ov_SC03_094
|
||||
[ OK ] ov_SC03_095
|
||||
[ OK ] ov_SC03_096
|
||||
[ OK ] ov_SC03_097
|
||||
[ OK ] ov_SC03_098
|
||||
[ OK ] ov_SC03_099
|
||||
[ OK ] ov_SC03_100
|
||||
[ OK ] ov_SC03_101
|
||||
[ OK ] ov_SC03_102
|
||||
[ OK ] ov_SC03_103
|
||||
[ OK ] ov_SC03_109
|
||||
[ OK ] ov_SC03_104
|
||||
[ OK ] ov_SC03_108
|
||||
[ OK ] ov_SC03_110
|
||||
[ OK ] ov_SC03_113
|
||||
[ OK ] ov_SC03_111
|
||||
[ OK ] ov_SC03_114
|
||||
[ OK ] ov_SC03_105
|
||||
[ OK ] ov_SC03_112
|
||||
[ OK ] ov_SC03_115
|
||||
[ OK ] ov_SC03_116
|
||||
[ OK ] ov_SC03_117
|
||||
[ OK ] ov_SC03_118
|
||||
[ OK ] ov_SC03_119
|
||||
[ OK ] ov_SC03_126
|
||||
[ OK ] ov_SC03_121
|
||||
[ OK ] ov_SC03_125
|
||||
[ OK ] ov_SC04_002
|
||||
[ OK ] ov_SC04_003
|
||||
[ OK ] ov_SC03_124
|
||||
[ OK ] ov_SC04_004
|
||||
[ OK ] ov_SC04_005
|
||||
[ OK ] ov_SC04_008
|
||||
[ OK ] ov_SC04_006
|
||||
[ OK ] ov_SC04_007
|
||||
[ OK ] ov_SC04_009
|
||||
[ OK ] ov_SC04_010
|
||||
[ OK ] ov_SC04_012
|
||||
[ OK ] ov_SC04_011
|
||||
[ OK ] ov_SC04_015
|
||||
[ OK ] ov_SC04_016
|
||||
[ OK ] ov_SC04_020
|
||||
[ OK ] ov_SC04_021
|
||||
[ OK ] ov_SC05_002
|
||||
[ OK ] ov_SC05_001
|
||||
[ OK ] ov_SC05_003
|
||||
[ OK ] ov_SC05_004
|
||||
[ OK ] ov_SC05_005
|
||||
[ OK ] ov_SC05_006
|
||||
[ OK ] ov_SC05_008
|
||||
[ OK ] ov_SC05_007
|
||||
[ OK ] ov_SC05_009
|
||||
[ OK ] ov_SC05_010
|
||||
[ OK ] ov_SC05_011
|
||||
[ OK ] ov_SC05_017
|
||||
[ OK ] ov_SC05_018
|
||||
[ OK ] ov_SC05_019
|
||||
[ OK ] ov_SC06_010
|
||||
[ OK ] ov_SC06_008
|
||||
[ OK ] ov_SC06_006
|
||||
[ OK ] ov_SC06_011
|
||||
[ OK ] ov_SC06_013
|
||||
[ OK ] ov_SC06_014
|
||||
[ OK ] ov_SC06_015
|
||||
[ OK ] ov_SC06_016
|
||||
[ OK ] ov_SC06_020
|
||||
[ OK ] ov_SC06_018
|
||||
[ OK ] ov_SC06_022
|
||||
[ OK ] ov_SC06_025
|
||||
[ OK ] ov_SC06_024
|
||||
[ OK ] ov_SC06_027
|
||||
[ OK ] md_MAIN_013
|
||||
[ OK ] md_MAIN_014
|
||||
[ OK ] md_MAIN_015
|
||||
[ OK ] md_MAIN_016
|
||||
[ OK ] md_MAIN_017
|
||||
[ OK ] md_MAIN_018
|
||||
[ OK ] md_MAIN_019
|
||||
[ OK ] md_MAIN_020
|
||||
[ OK ] md_MAIN_021
|
||||
[ OK ] md_MAIN_022
|
||||
[ OK ] md_MAIN_023
|
||||
[ OK ] md_MAIN_024
|
||||
[ OK ] md_MAIN_025
|
||||
[ OK ] md_MAIN_026
|
||||
[ OK ] ov_SC06_029
|
||||
[ OK ] md_MAIN_027
|
||||
[ OK ] md_MAIN_028
|
||||
[ OK ] md_MAIN_029
|
||||
[ OK ] md_MAIN_030
|
||||
[ OK ] md_MAIN_031
|
||||
[ OK ] md_MAIN_033
|
||||
[ OK ] md_MAIN_034
|
||||
[ OK ] md_MAIN_032
|
||||
[ OK ] ov_SC06_030
|
||||
[ OK ] md_MAIN_035
|
||||
[ OK ] md_MAIN_036
|
||||
[ OK ] md_MAIN_037
|
||||
[ OK ] md_MAIN_038
|
||||
[ OK ] md_MAIN_039
|
||||
[ OK ] md_MAIN_040
|
||||
[ OK ] md_MAIN_042
|
||||
[ OK ] ov_SC07_001
|
||||
[ OK ] md_MAIN_043
|
||||
[ OK ] md_MAIN_044
|
||||
[ OK ] md_MAIN_045
|
||||
[ OK ] md_MAIN_046
|
||||
[ OK ] md_MAIN_041
|
||||
[ OK ] md_MAIN_047
|
||||
[ OK ] md_MAIN_001
|
||||
[ OK ] md_MAIN_008
|
||||
[ OK ] md_MAIN_011
|
||||
[ OK ] ov_SC07_009
|
||||
[ OK ] ov_SC07_002
|
||||
[ OK ] md_SC07_003
|
||||
[ OK ] md_MAIN_003
|
||||
[ OK ] ov_SC07_008
|
||||
[ OK ] md_SC03_076
|
||||
[ OK ] md_SC07_004
|
||||
[ OK ] md_SC03_073
|
||||
[ OK ] md_SC03_074
|
||||
[ OK ] md_SC03_075
|
||||
[ OK ] md_SC03_077
|
||||
[ OK ] md_SC03_079
|
||||
[ OK ] md_SC03_132
|
||||
[ OK ] md_SC03_136
|
||||
[ OK ] md_SC03_135
|
||||
[ OK ] md_SC03_078
|
||||
[ OK ] ov_SC07_006
|
||||
[ OK ] md_SC04_024
|
||||
[ OK ] md_SC03_133
|
||||
[ OK ] md_SC04_025
|
||||
[ OK ] md_SC03_134
|
||||
[ OK ] md_SC04_026
|
||||
[ OK ] md_SC03_137
|
||||
[ OK ] md_SC03_138
|
||||
[ OK ] md_SC04_029
|
||||
[ OK ] md_SC04_030
|
||||
[ OK ] md_SC05_023
|
||||
[ OK ] md_SC04_027
|
||||
[ OK ] md_SC05_024
|
||||
[ OK ] md_SC04_028
|
||||
[ OK ] md_SC05_025
|
||||
[ OK ] md_SC05_028
|
||||
[ OK ] md_SC05_029
|
||||
[ OK ] md_SC02_009
|
||||
[ OK ] md_MAIN_009
|
||||
[ OK ] md_MAIN_007
|
||||
[ OK ] md_SC05_027
|
||||
[ OK ] ov_SC07_007
|
||||
[ OK ] md_SC05_026
|
||||
[ OK ] md_SC03_053
|
||||
[ OK ] ov_SC06_032
|
||||
[ OK ] md_SC03_054
|
||||
[ OK ] md_SC03_056
|
||||
[ OK ] ov_SC07_010
|
||||
[ OK ] ov_SC06_033
|
||||
[ OK ] ov_MAIN_012
|
||||
[ OK ] ov_SC02_037
|
||||
[ OK ] ov_SC07_011
|
||||
[ OK ] ov_SC03_107
|
||||
check-all: 218 passed, 0 failed of 218
|
||||
@@ -1 +0,0 @@
|
||||
clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, include macros, undefined_*_auto.txt).
|
||||
@@ -1,253 +0,0 @@
|
||||
splat 0.41.0 (powered by spimdisasm 1.41.0)
|
||||
0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 100%|██████████| 1096/1096 [00:00<00:00, 101635.14it/s]
|
||||
0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 100%|██████████| 47/47 [00:00<00:00, 473875.69it/s]
|
||||
0%| | 0/2 [00:00<?, ?it/s]
Scanning header: 0%| | 0/2 [00:00<?, ?it/s]
Scanning main: 0%| | 0/2 [00:00<?, ?it/s]
|
||||
Rodata segment '800' may belong to the text segment '800'
|
||||
Based on the usage from the function LzssDecodeSector to the symbol jtbl_80072A38
|
||||
|
||||
The rodata segment '800' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
|
||||
File split suggestions for this segment will follow in config yaml format:
|
||||
- [0x6324C, .rodata]
|
||||
- [0x63388, .rodata]
|
||||
- [0x633FC, .rodata]
|
||||
|
||||
|
||||
Rodata segment '800_b' may belong to the text segment '800_b'
|
||||
Based on the usage from the function func_8002B0B4 to the symbol jtbl_80072E44
|
||||
|
||||
Rodata segment '800_b_2' may belong to the text segment '800_b_2'
|
||||
Based on the usage from the function func_8002DC68 to the symbol jtbl_80072F3C
|
||||
|
||||
The rodata segment '800_b_2' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
|
||||
File split suggestions for this segment will follow in config yaml format:
|
||||
- [0x63920, .rodata]
|
||||
|
||||
|
||||
Rodata segment '800_c' may belong to the text segment '800_c'
|
||||
Based on the usage from the function func_80035270 to the symbol jtbl_800732A0
|
||||
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.14it/s]
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.14it/s]
|
||||
0%| | 0/2 [00:00<?, ?it/s]
Splitting header: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 100%|██████████| 2/2 [00:01<00:00, 1.53it/s]
Splitting main: 100%|██████████| 2/2 [00:01<00:00, 1.53it/s]
|
||||
0%| | 0/2 [00:00<?, ?it/s]
Linker script header: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 100%|██████████| 2/2 [00:00<00:00, 72.82it/s]
|
||||
Split 340 KB (82.28%) in defined segments
|
||||
header: 2 KB (0.50%) 1 split, 0 cached
|
||||
c: 338 KB (81.78%) 85 split, 0 cached
|
||||
unknown: 0 B (0.00%) from unknown bin files
|
||||
ld_interleave --order: .main island = 8 pieces [53198.data.o, 800.o, 63470.data.o, 800_b.o, 800_b_2.o, 63940.data.o, 800_c.o, 63C4C.data.o]; pre=0 text=85 empties=166 bss=85
|
||||
[ OK ] resident
|
||||
[ OK ] ov_SC05_000
|
||||
[ OK ] ov_SC01_000
|
||||
[ OK ] ov_SC06_000
|
||||
[ OK ] ov_SC04_000
|
||||
[ OK ] ov_SC03_002
|
||||
[ OK ] ov_SC01_005
|
||||
[ OK ] ov_SC01_006
|
||||
[ OK ] ov_SC01_077
|
||||
[ OK ] ov_SC02_003
|
||||
[ OK ] ov_SC02_000
|
||||
[ OK ] ov_SC04_018
|
||||
[ OK ] ov_SC04_019
|
||||
[ OK ] ov_SC03_001
|
||||
[ OK ] ov_SC03_006
|
||||
[ OK ] ov_SC01_001
|
||||
[ OK ] ov_SC01_004
|
||||
[ OK ] ov_SC01_008
|
||||
[ OK ] ov_SC01_074
|
||||
[ OK ] ov_SC07_000
|
||||
[ OK ] ov_SC02_004
|
||||
[ OK ] ov_SC02_015
|
||||
[ OK ] ov_SC02_021
|
||||
[ OK ] ov_SC01_080
|
||||
[ OK ] ov_SC01_084
|
||||
[ OK ] ov_SC01_009
|
||||
[ OK ] ov_SC02_016
|
||||
[ OK ] ov_SC02_026
|
||||
[ OK ] ov_SC02_027
|
||||
[ OK ] ov_SC02_005
|
||||
[ OK ] ov_SC02_039
|
||||
[ OK ] ov_SC02_011
|
||||
[ OK ] ov_SC02_028
|
||||
[ OK ] ov_SC02_031
|
||||
[ OK ] ov_SC02_017
|
||||
[ OK ] ov_SC03_003
|
||||
[ OK ] ov_SC02_035
|
||||
[ OK ] ov_SC02_041
|
||||
[ OK ] ov_SC03_010
|
||||
[ OK ] ov_SC03_012
|
||||
[ OK ] ov_SC03_011
|
||||
[ OK ] ov_SC03_013
|
||||
[ OK ] ov_SC03_023
|
||||
[ OK ] ov_SC03_007
|
||||
[ OK ] ov_SC03_024
|
||||
[ OK ] ov_SC03_089
|
||||
[ OK ] ov_SC03_031
|
||||
[ OK ] ov_SC03_090
|
||||
[ OK ] ov_SC03_014
|
||||
[ OK ] ov_SC03_029
|
||||
[ OK ] ov_SC03_015
|
||||
[ OK ] ov_SC03_030
|
||||
[ OK ] ov_SC03_092
|
||||
[ OK ] ov_SC03_095
|
||||
[ OK ] ov_SC03_091
|
||||
[ OK ] ov_SC03_028
|
||||
[ OK ] ov_SC03_093
|
||||
[ OK ] ov_SC03_096
|
||||
[ OK ] ov_SC03_094
|
||||
[ OK ] ov_SC03_097
|
||||
[ OK ] ov_SC03_101
|
||||
[ OK ] ov_SC03_098
|
||||
[ OK ] ov_SC03_109
|
||||
[ OK ] ov_SC03_108
|
||||
[ OK ] ov_SC03_099
|
||||
[ OK ] ov_SC03_110
|
||||
[ OK ] ov_SC03_102
|
||||
[ OK ] ov_SC03_100
|
||||
[ OK ] ov_SC03_103
|
||||
[ OK ] ov_SC03_104
|
||||
[ OK ] ov_SC03_112
|
||||
[ OK ] ov_SC03_111
|
||||
[ OK ] ov_SC03_115
|
||||
[ OK ] ov_SC03_105
|
||||
[ OK ] ov_SC03_113
|
||||
[ OK ] ov_SC03_114
|
||||
[ OK ] ov_SC03_116
|
||||
[ OK ] ov_SC03_126
|
||||
[ OK ] ov_SC03_121
|
||||
[ OK ] ov_SC04_003
|
||||
[ OK ] ov_SC04_008
|
||||
[ OK ] ov_SC03_117
|
||||
[ OK ] ov_SC04_006
|
||||
[ OK ] ov_SC04_009
|
||||
[ OK ] ov_SC04_004
|
||||
[ OK ] ov_SC03_118
|
||||
[ OK ] ov_SC04_002
|
||||
[ OK ] ov_SC03_125
|
||||
[ OK ] ov_SC03_119
|
||||
[ OK ] ov_SC04_007
|
||||
[ OK ] ov_SC04_005
|
||||
[ OK ] ov_SC04_010
|
||||
[ OK ] ov_SC03_124
|
||||
[ OK ] ov_SC04_012
|
||||
[ OK ] ov_SC04_021
|
||||
[ OK ] ov_SC04_016
|
||||
[ OK ] ov_SC05_006
|
||||
[ OK ] ov_SC05_002
|
||||
[ OK ] ov_SC05_001
|
||||
[ OK ] ov_SC05_004
|
||||
[ OK ] ov_SC05_007
|
||||
[ OK ] ov_SC04_020
|
||||
[ OK ] ov_SC05_009
|
||||
[ OK ] ov_SC05_003
|
||||
[ OK ] ov_SC04_015
|
||||
[ OK ] ov_SC05_008
|
||||
[ OK ] ov_SC05_005
|
||||
[ OK ] ov_SC04_011
|
||||
[ OK ] ov_SC05_010
|
||||
[ OK ] ov_SC05_011
|
||||
[ OK ] ov_SC05_019
|
||||
[ OK ] ov_SC06_015
|
||||
[ OK ] ov_SC06_013
|
||||
[ OK ] ov_SC06_008
|
||||
[ OK ] ov_SC06_014
|
||||
[ OK ] ov_SC06_016
|
||||
[ OK ] ov_SC06_010
|
||||
[ OK ] ov_SC06_011
|
||||
[ OK ] ov_SC05_017
|
||||
[ OK ] ov_SC06_020
|
||||
[ OK ] ov_SC05_018
|
||||
[ OK ] ov_SC06_018
|
||||
[ OK ] ov_SC06_025
|
||||
[ OK ] ov_SC06_027
|
||||
[ OK ] ov_SC06_006
|
||||
[ OK ] ov_SC06_022
|
||||
[ OK ] ov_SC06_024
|
||||
[ OK ] md_MAIN_013
|
||||
[ OK ] md_MAIN_014
|
||||
[ OK ] ov_SC07_008
|
||||
[ OK ] ov_SC07_002
|
||||
[ OK ] md_MAIN_015
|
||||
[ OK ] ov_SC07_001
|
||||
[ OK ] md_MAIN_016
|
||||
[ OK ] md_MAIN_018
|
||||
[ OK ] md_MAIN_017
|
||||
[ OK ] ov_SC06_030
|
||||
[ OK ] md_MAIN_019
|
||||
[ OK ] ov_SC07_009
|
||||
[ OK ] md_MAIN_020
|
||||
[ OK ] md_MAIN_022
|
||||
[ OK ] md_MAIN_021
|
||||
[ OK ] md_MAIN_023
|
||||
[ OK ] md_MAIN_024
|
||||
[ OK ] md_MAIN_025
|
||||
[ OK ] md_MAIN_026
|
||||
[ OK ] md_MAIN_027
|
||||
[ OK ] md_MAIN_028
|
||||
[ OK ] ov_SC06_032
|
||||
[ OK ] md_MAIN_029
|
||||
[ OK ] md_MAIN_030
|
||||
[ OK ] md_MAIN_031
|
||||
[ OK ] ov_SC06_033
|
||||
[ OK ] md_MAIN_033
|
||||
[ OK ] md_MAIN_032
|
||||
[ OK ] ov_SC06_029
|
||||
[ OK ] md_MAIN_035
|
||||
[ OK ] ov_MAIN_012
|
||||
[ OK ] md_MAIN_034
|
||||
[ OK ] md_MAIN_036
|
||||
[ OK ] md_MAIN_037
|
||||
[ OK ] md_MAIN_038
|
||||
[ OK ] ov_SC07_011
|
||||
[ OK ] md_MAIN_039
|
||||
[ OK ] md_MAIN_040
|
||||
[ OK ] md_MAIN_042
|
||||
[ OK ] md_MAIN_041
|
||||
[ OK ] md_MAIN_043
|
||||
[ OK ] md_MAIN_045
|
||||
[ OK ] md_MAIN_044
|
||||
[ OK ] md_MAIN_046
|
||||
[ OK ] ov_SC07_010
|
||||
[ OK ] md_MAIN_047
|
||||
[ OK ] md_MAIN_008
|
||||
[ OK ] md_MAIN_001
|
||||
[ OK ] md_MAIN_011
|
||||
[ OK ] md_SC03_073
|
||||
[ OK ] md_SC03_074
|
||||
[ OK ] md_SC03_078
|
||||
[ OK ] ov_SC03_107
|
||||
[ OK ] md_SC03_075
|
||||
[ OK ] md_SC03_077
|
||||
[ OK ] md_SC03_076
|
||||
[ OK ] md_SC03_079
|
||||
[ OK ] md_SC03_133
|
||||
[ OK ] md_SC03_132
|
||||
[ OK ] ov_SC07_007
|
||||
[ OK ] md_SC03_137
|
||||
[ OK ] md_SC03_134
|
||||
[ OK ] md_SC03_136
|
||||
[ OK ] md_SC03_135
|
||||
[ OK ] md_SC03_138
|
||||
[ OK ] md_SC04_024
|
||||
[ OK ] md_SC04_025
|
||||
[ OK ] md_MAIN_003
|
||||
[ OK ] md_SC04_029
|
||||
[ OK ] md_SC04_026
|
||||
[ OK ] md_SC04_028
|
||||
[ OK ] md_SC04_027
|
||||
[ OK ] md_SC05_023
|
||||
[ OK ] md_SC05_024
|
||||
[ OK ] md_SC04_030
|
||||
[ OK ] md_SC05_025
|
||||
[ OK ] md_SC05_028
|
||||
[ OK ] md_MAIN_007
|
||||
[ OK ] md_SC05_027
|
||||
[ OK ] md_MAIN_009
|
||||
[ OK ] ov_SC02_037
|
||||
[ OK ] md_SC05_026
|
||||
[ OK ] md_SC05_029
|
||||
[ OK ] md_SC03_053
|
||||
[ OK ] ov_SC07_006
|
||||
[ OK ] md_SC03_056
|
||||
[ OK ] md_SC03_054
|
||||
[ OK ] md_SC02_009
|
||||
[ OK ] md_SC07_004
|
||||
[ OK ] md_SC07_003
|
||||
extract-all: 217 extracted, 0 failed of 217 (+ main, serial)
|
||||
@@ -1,219 +0,0 @@
|
||||
[ OK ] resident
|
||||
[ OK ] ov_SC01_000
|
||||
[ OK ] ov_SC05_000
|
||||
[ OK ] ov_SC03_006
|
||||
[ OK ] ov_SC06_000
|
||||
[ OK ] ov_SC04_000
|
||||
[ OK ] ov_SC01_001
|
||||
[ OK ] ov_SC01_006
|
||||
[ OK ] ov_SC01_005
|
||||
[ OK ] ov_SC03_002
|
||||
[ OK ] ov_SC04_019
|
||||
[ OK ] ov_SC01_077
|
||||
[ OK ] ov_SC04_018
|
||||
[ OK ] ov_SC02_003
|
||||
[ OK ] ov_SC03_001
|
||||
[ OK ] ov_SC02_000
|
||||
[ OK ] main
|
||||
[ OK ] ov_SC01_080
|
||||
[ OK ] ov_SC02_004
|
||||
[ OK ] ov_SC01_074
|
||||
[ OK ] ov_SC01_004
|
||||
[ OK ] ov_SC07_000
|
||||
[ OK ] ov_SC01_008
|
||||
[ OK ] ov_SC01_009
|
||||
[ OK ] ov_SC01_084
|
||||
[ OK ] ov_SC02_015
|
||||
[ OK ] ov_SC02_005
|
||||
[ OK ] ov_SC02_021
|
||||
[ OK ] ov_SC02_016
|
||||
[ OK ] ov_SC02_011
|
||||
[ OK ] ov_SC02_017
|
||||
[ OK ] ov_SC02_026
|
||||
[ OK ] ov_SC02_027
|
||||
[ OK ] ov_SC02_031
|
||||
[ OK ] ov_SC03_003
|
||||
[ OK ] ov_SC02_041
|
||||
[ OK ] ov_SC02_039
|
||||
[ OK ] ov_SC02_035
|
||||
[ OK ] ov_SC02_028
|
||||
[ OK ] ov_SC03_010
|
||||
[ OK ] ov_SC03_007
|
||||
[ OK ] ov_SC03_011
|
||||
[ OK ] ov_SC03_012
|
||||
[ OK ] ov_SC03_023
|
||||
[ OK ] ov_SC03_013
|
||||
[ OK ] ov_SC03_014
|
||||
[ OK ] ov_SC03_024
|
||||
[ OK ] ov_SC03_015
|
||||
[ OK ] ov_SC03_028
|
||||
[ OK ] ov_SC03_030
|
||||
[ OK ] ov_SC03_031
|
||||
[ OK ] ov_SC03_029
|
||||
[ OK ] ov_SC03_089
|
||||
[ OK ] ov_SC03_090
|
||||
[ OK ] ov_SC03_092
|
||||
[ OK ] ov_SC03_093
|
||||
[ OK ] ov_SC03_094
|
||||
[ OK ] ov_SC03_091
|
||||
[ OK ] ov_SC03_095
|
||||
[ OK ] ov_SC03_096
|
||||
[ OK ] ov_SC03_097
|
||||
[ OK ] ov_SC03_098
|
||||
[ OK ] ov_SC03_099
|
||||
[ OK ] ov_SC03_100
|
||||
[ OK ] ov_SC03_101
|
||||
[ OK ] ov_SC03_102
|
||||
[ OK ] ov_SC03_103
|
||||
[ OK ] ov_SC03_104
|
||||
[ OK ] ov_SC03_109
|
||||
[ OK ] ov_SC03_108
|
||||
[ OK ] ov_SC03_110
|
||||
[ OK ] ov_SC03_111
|
||||
[ OK ] ov_SC03_113
|
||||
[ OK ] ov_SC03_114
|
||||
[ OK ] ov_SC03_112
|
||||
[ OK ] ov_SC03_105
|
||||
[ OK ] ov_SC03_115
|
||||
[ OK ] ov_SC03_116
|
||||
[ OK ] ov_SC03_117
|
||||
[ OK ] ov_SC03_118
|
||||
[ OK ] ov_SC03_119
|
||||
[ OK ] ov_SC03_121
|
||||
[ OK ] ov_SC03_126
|
||||
[ OK ] ov_SC03_125
|
||||
[ OK ] ov_SC04_002
|
||||
[ OK ] ov_SC03_124
|
||||
[ OK ] ov_SC04_004
|
||||
[ OK ] ov_SC04_003
|
||||
[ OK ] ov_SC04_005
|
||||
[ OK ] ov_SC04_008
|
||||
[ OK ] ov_SC04_006
|
||||
[ OK ] ov_SC04_007
|
||||
[ OK ] ov_SC04_009
|
||||
[ OK ] ov_SC04_010
|
||||
[ OK ] ov_SC04_011
|
||||
[ OK ] ov_SC04_012
|
||||
[ OK ] ov_SC04_015
|
||||
[ OK ] ov_SC04_016
|
||||
[ OK ] ov_SC04_021
|
||||
[ OK ] ov_SC04_020
|
||||
[ OK ] ov_SC05_002
|
||||
[ OK ] ov_SC05_001
|
||||
[ OK ] ov_SC05_004
|
||||
[ OK ] ov_SC05_003
|
||||
[ OK ] ov_SC05_005
|
||||
[ OK ] ov_SC05_006
|
||||
[ OK ] ov_SC05_007
|
||||
[ OK ] ov_SC05_008
|
||||
[ OK ] ov_SC05_009
|
||||
[ OK ] ov_SC05_010
|
||||
[ OK ] ov_SC05_011
|
||||
[ OK ] ov_SC05_018
|
||||
[ OK ] ov_SC05_017
|
||||
[ OK ] ov_SC05_019
|
||||
[ OK ] ov_SC06_010
|
||||
[ OK ] ov_SC06_008
|
||||
[ OK ] ov_SC06_006
|
||||
[ OK ] ov_SC06_011
|
||||
[ OK ] ov_SC06_013
|
||||
[ OK ] ov_SC06_014
|
||||
[ OK ] ov_SC06_015
|
||||
[ OK ] ov_SC06_016
|
||||
[ OK ] ov_SC06_020
|
||||
[ OK ] ov_SC06_018
|
||||
[ OK ] ov_SC06_022
|
||||
[ OK ] ov_SC06_025
|
||||
[ OK ] ov_SC06_024
|
||||
[ OK ] ov_SC06_027
|
||||
[ OK ] md_MAIN_013
|
||||
[ OK ] md_MAIN_014
|
||||
[ OK ] md_MAIN_015
|
||||
[ OK ] md_MAIN_016
|
||||
[ OK ] md_MAIN_017
|
||||
[ OK ] md_MAIN_018
|
||||
[ OK ] md_MAIN_019
|
||||
[ OK ] md_MAIN_020
|
||||
[ OK ] md_MAIN_021
|
||||
[ OK ] md_MAIN_022
|
||||
[ OK ] md_MAIN_023
|
||||
[ OK ] md_MAIN_024
|
||||
[ OK ] md_MAIN_025
|
||||
[ OK ] ov_SC06_029
|
||||
[ OK ] md_MAIN_026
|
||||
[ OK ] md_MAIN_027
|
||||
[ OK ] md_MAIN_028
|
||||
[ OK ] md_MAIN_029
|
||||
[ OK ] md_MAIN_030
|
||||
[ OK ] md_MAIN_031
|
||||
[ OK ] md_MAIN_033
|
||||
[ OK ] md_MAIN_034
|
||||
[ OK ] md_MAIN_032
|
||||
[ OK ] md_MAIN_035
|
||||
[ OK ] ov_SC06_030
|
||||
[ OK ] md_MAIN_037
|
||||
[ OK ] md_MAIN_036
|
||||
[ OK ] md_MAIN_040
|
||||
[ OK ] md_MAIN_039
|
||||
[ OK ] md_MAIN_038
|
||||
[ OK ] md_MAIN_042
|
||||
[ OK ] md_MAIN_043
|
||||
[ OK ] ov_SC07_001
|
||||
[ OK ] md_MAIN_045
|
||||
[ OK ] md_MAIN_044
|
||||
[ OK ] md_MAIN_047
|
||||
[ OK ] md_MAIN_001
|
||||
[ OK ] md_MAIN_046
|
||||
[ OK ] md_MAIN_041
|
||||
[ OK ] md_MAIN_008
|
||||
[ OK ] md_MAIN_011
|
||||
[ OK ] ov_SC07_002
|
||||
[ OK ] ov_SC07_008
|
||||
[ OK ] md_SC07_003
|
||||
[ OK ] ov_SC07_009
|
||||
[ OK ] md_MAIN_003
|
||||
[ OK ] md_SC07_004
|
||||
[ OK ] md_SC03_076
|
||||
[ OK ] md_SC03_077
|
||||
[ OK ] md_SC03_073
|
||||
[ OK ] md_SC03_079
|
||||
[ OK ] md_SC03_132
|
||||
[ OK ] md_SC03_074
|
||||
[ OK ] md_SC03_075
|
||||
[ OK ] md_SC03_135
|
||||
[ OK ] md_SC03_136
|
||||
[ OK ] md_SC03_078
|
||||
[ OK ] md_SC03_133
|
||||
[ OK ] md_SC04_024
|
||||
[ OK ] md_SC04_025
|
||||
[ OK ] md_SC03_134
|
||||
[ OK ] md_SC04_026
|
||||
[ OK ] md_SC03_137
|
||||
[ OK ] md_SC04_029
|
||||
[ OK ] md_SC03_138
|
||||
[ OK ] ov_SC07_006
|
||||
[ OK ] md_SC04_030
|
||||
[ OK ] md_SC05_023
|
||||
[ OK ] md_SC04_027
|
||||
[ OK ] md_SC04_028
|
||||
[ OK ] md_SC05_024
|
||||
[ OK ] md_SC05_025
|
||||
[ OK ] md_SC05_028
|
||||
[ OK ] md_MAIN_007
|
||||
[ OK ] md_SC05_029
|
||||
[ OK ] md_SC02_009
|
||||
[ OK ] md_SC05_027
|
||||
[ OK ] md_MAIN_009
|
||||
[ OK ] md_SC05_026
|
||||
[ OK ] md_SC03_053
|
||||
[ OK ] md_SC03_054
|
||||
[ OK ] md_SC03_056
|
||||
[ OK ] ov_SC07_007
|
||||
[ OK ] ov_SC06_032
|
||||
[ OK ] ov_SC07_010
|
||||
[ OK ] ov_MAIN_012
|
||||
[ OK ] ov_SC06_033
|
||||
[ OK ] ov_SC02_037
|
||||
[ OK ] ov_SC07_011
|
||||
[ OK ] ov_SC03_107
|
||||
check-all: 218 passed, 0 failed of 218
|
||||
@@ -1 +0,0 @@
|
||||
clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, include macros, undefined_*_auto.txt).
|
||||
@@ -1,253 +0,0 @@
|
||||
splat 0.41.0 (powered by spimdisasm 1.41.0)
|
||||
0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 100%|██████████| 1096/1096 [00:00<00:00, 130033.86it/s]
|
||||
0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 100%|██████████| 47/47 [00:00<00:00, 426693.26it/s]
|
||||
0%| | 0/2 [00:00<?, ?it/s]
Scanning header: 0%| | 0/2 [00:00<?, ?it/s]
Scanning main: 0%| | 0/2 [00:00<?, ?it/s]
|
||||
Rodata segment '800' may belong to the text segment '800'
|
||||
Based on the usage from the function LzssDecodeSector to the symbol jtbl_80072A38
|
||||
|
||||
The rodata segment '800' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
|
||||
File split suggestions for this segment will follow in config yaml format:
|
||||
- [0x6324C, .rodata]
|
||||
- [0x63388, .rodata]
|
||||
- [0x633FC, .rodata]
|
||||
|
||||
|
||||
Rodata segment '800_b' may belong to the text segment '800_b'
|
||||
Based on the usage from the function func_8002B0B4 to the symbol jtbl_80072E44
|
||||
|
||||
Rodata segment '800_b_2' may belong to the text segment '800_b_2'
|
||||
Based on the usage from the function func_8002DC68 to the symbol jtbl_80072F3C
|
||||
|
||||
The rodata segment '800_b_2' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
|
||||
File split suggestions for this segment will follow in config yaml format:
|
||||
- [0x63920, .rodata]
|
||||
|
||||
|
||||
Rodata segment '800_c' may belong to the text segment '800_c'
|
||||
Based on the usage from the function func_80035270 to the symbol jtbl_800732A0
|
||||
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.01it/s]
Scanning main: 100%|██████████| 2/2 [00:01<00:00, 1.01it/s]
|
||||
0%| | 0/2 [00:00<?, ?it/s]
Splitting header: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 100%|██████████| 2/2 [00:01<00:00, 1.71it/s]
Splitting main: 100%|██████████| 2/2 [00:01<00:00, 1.71it/s]
|
||||
0%| | 0/2 [00:00<?, ?it/s]
Linker script header: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 100%|██████████| 2/2 [00:00<00:00, 57.94it/s]
|
||||
Split 340 KB (82.28%) in defined segments
|
||||
header: 2 KB (0.50%) 1 split, 0 cached
|
||||
c: 338 KB (81.78%) 85 split, 0 cached
|
||||
unknown: 0 B (0.00%) from unknown bin files
|
||||
ld_interleave --order: .main island = 8 pieces [53198.data.o, 800.o, 63470.data.o, 800_b.o, 800_b_2.o, 63940.data.o, 800_c.o, 63C4C.data.o]; pre=0 text=85 empties=166 bss=85
|
||||
[ OK ] resident
|
||||
[ OK ] ov_SC05_000
|
||||
[ OK ] ov_SC01_000
|
||||
[ OK ] ov_SC04_000
|
||||
[ OK ] ov_SC06_000
|
||||
[ OK ] ov_SC03_002
|
||||
[ OK ] ov_SC01_005
|
||||
[ OK ] ov_SC01_006
|
||||
[ OK ] ov_SC01_077
|
||||
[ OK ] ov_SC02_003
|
||||
[ OK ] ov_SC02_000
|
||||
[ OK ] ov_SC04_018
|
||||
[ OK ] ov_SC04_019
|
||||
[ OK ] ov_SC03_006
|
||||
[ OK ] ov_SC03_001
|
||||
[ OK ] ov_SC01_001
|
||||
[ OK ] ov_SC01_004
|
||||
[ OK ] ov_SC01_008
|
||||
[ OK ] ov_SC01_074
|
||||
[ OK ] ov_SC07_000
|
||||
[ OK ] ov_SC02_004
|
||||
[ OK ] ov_SC02_015
|
||||
[ OK ] ov_SC02_021
|
||||
[ OK ] ov_SC01_080
|
||||
[ OK ] ov_SC01_084
|
||||
[ OK ] ov_SC01_009
|
||||
[ OK ] ov_SC02_016
|
||||
[ OK ] ov_SC02_005
|
||||
[ OK ] ov_SC02_026
|
||||
[ OK ] ov_SC02_039
|
||||
[ OK ] ov_SC02_027
|
||||
[ OK ] ov_SC02_011
|
||||
[ OK ] ov_SC02_031
|
||||
[ OK ] ov_SC02_028
|
||||
[ OK ] ov_SC02_017
|
||||
[ OK ] ov_SC03_003
|
||||
[ OK ] ov_SC02_035
|
||||
[ OK ] ov_SC02_041
|
||||
[ OK ] ov_SC03_012
|
||||
[ OK ] ov_SC03_010
|
||||
[ OK ] ov_SC03_011
|
||||
[ OK ] ov_SC03_013
|
||||
[ OK ] ov_SC03_023
|
||||
[ OK ] ov_SC03_007
|
||||
[ OK ] ov_SC03_024
|
||||
[ OK ] ov_SC03_014
|
||||
[ OK ] ov_SC03_015
|
||||
[ OK ] ov_SC03_031
|
||||
[ OK ] ov_SC03_029
|
||||
[ OK ] ov_SC03_089
|
||||
[ OK ] ov_SC03_092
|
||||
[ OK ] ov_SC03_090
|
||||
[ OK ] ov_SC03_030
|
||||
[ OK ] ov_SC03_091
|
||||
[ OK ] ov_SC03_095
|
||||
[ OK ] ov_SC03_028
|
||||
[ OK ] ov_SC03_096
|
||||
[ OK ] ov_SC03_093
|
||||
[ OK ] ov_SC03_094
|
||||
[ OK ] ov_SC03_097
|
||||
[ OK ] ov_SC03_101
|
||||
[ OK ] ov_SC03_098
|
||||
[ OK ] ov_SC03_109
|
||||
[ OK ] ov_SC03_108
|
||||
[ OK ] ov_SC03_099
|
||||
[ OK ] ov_SC03_110
|
||||
[ OK ] ov_SC03_102
|
||||
[ OK ] ov_SC03_100
|
||||
[ OK ] ov_SC03_104
|
||||
[ OK ] ov_SC03_112
|
||||
[ OK ] ov_SC03_105
|
||||
[ OK ] ov_SC03_103
|
||||
[ OK ] ov_SC03_111
|
||||
[ OK ] ov_SC03_113
|
||||
[ OK ] ov_SC03_115
|
||||
[ OK ] ov_SC03_114
|
||||
[ OK ] ov_SC03_116
|
||||
[ OK ] ov_SC03_126
|
||||
[ OK ] ov_SC04_003
|
||||
[ OK ] ov_SC03_121
|
||||
[ OK ] ov_SC04_008
|
||||
[ OK ] ov_SC03_117
|
||||
[ OK ] ov_SC04_009
|
||||
[ OK ] ov_SC04_006
|
||||
[ OK ] ov_SC03_118
|
||||
[ OK ] ov_SC04_004
|
||||
[ OK ] ov_SC03_119
|
||||
[ OK ] ov_SC03_125
|
||||
[ OK ] ov_SC04_002
|
||||
[ OK ] ov_SC04_007
|
||||
[ OK ] ov_SC04_005
|
||||
[ OK ] ov_SC03_124
|
||||
[ OK ] ov_SC04_010
|
||||
[ OK ] ov_SC04_012
|
||||
[ OK ] ov_SC04_021
|
||||
[ OK ] ov_SC04_016
|
||||
[ OK ] ov_SC05_006
|
||||
[ OK ] ov_SC05_002
|
||||
[ OK ] ov_SC05_004
|
||||
[ OK ] ov_SC04_015
|
||||
[ OK ] ov_SC05_007
|
||||
[ OK ] ov_SC04_020
|
||||
[ OK ] ov_SC05_003
|
||||
[ OK ] ov_SC05_001
|
||||
[ OK ] ov_SC05_009
|
||||
[ OK ] ov_SC05_005
|
||||
[ OK ] ov_SC05_008
|
||||
[ OK ] ov_SC04_011
|
||||
[ OK ] ov_SC05_011
|
||||
[ OK ] ov_SC05_010
|
||||
[ OK ] ov_SC05_019
|
||||
[ OK ] ov_SC06_015
|
||||
[ OK ] ov_SC06_013
|
||||
[ OK ] ov_SC06_008
|
||||
[ OK ] ov_SC06_014
|
||||
[ OK ] ov_SC06_011
|
||||
[ OK ] ov_SC06_016
|
||||
[ OK ] ov_SC06_010
|
||||
[ OK ] ov_SC05_017
|
||||
[ OK ] ov_SC06_020
|
||||
[ OK ] ov_SC05_018
|
||||
[ OK ] ov_SC06_018
|
||||
[ OK ] ov_SC06_006
|
||||
[ OK ] ov_SC06_027
|
||||
[ OK ] ov_SC06_025
|
||||
[ OK ] ov_SC06_022
|
||||
[ OK ] ov_SC06_024
|
||||
[ OK ] ov_SC07_008
|
||||
[ OK ] md_MAIN_013
|
||||
[ OK ] md_MAIN_014
|
||||
[ OK ] ov_SC07_002
|
||||
[ OK ] md_MAIN_015
|
||||
[ OK ] ov_SC07_001
|
||||
[ OK ] md_MAIN_016
|
||||
[ OK ] md_MAIN_017
|
||||
[ OK ] ov_SC06_030
|
||||
[ OK ] md_MAIN_018
|
||||
[ OK ] md_MAIN_019
|
||||
[ OK ] md_MAIN_020
|
||||
[ OK ] md_MAIN_021
|
||||
[ OK ] md_MAIN_023
|
||||
[ OK ] md_MAIN_022
|
||||
[ OK ] ov_SC07_009
|
||||
[ OK ] md_MAIN_024
|
||||
[ OK ] md_MAIN_026
|
||||
[ OK ] md_MAIN_025
|
||||
[ OK ] md_MAIN_027
|
||||
[ OK ] ov_SC06_032
|
||||
[ OK ] md_MAIN_028
|
||||
[ OK ] md_MAIN_030
|
||||
[ OK ] md_MAIN_029
|
||||
[ OK ] md_MAIN_031
|
||||
[ OK ] md_MAIN_032
|
||||
[ OK ] ov_SC06_033
|
||||
[ OK ] md_MAIN_035
|
||||
[ OK ] md_MAIN_034
|
||||
[ OK ] md_MAIN_033
|
||||
[ OK ] ov_MAIN_012
|
||||
[ OK ] md_MAIN_036
|
||||
[ OK ] md_MAIN_037
|
||||
[ OK ] ov_SC06_029
|
||||
[ OK ] ov_SC07_011
|
||||
[ OK ] md_MAIN_039
|
||||
[ OK ] md_MAIN_040
|
||||
[ OK ] md_MAIN_038
|
||||
[ OK ] md_MAIN_042
|
||||
[ OK ] md_MAIN_041
|
||||
[ OK ] md_MAIN_043
|
||||
[ OK ] ov_SC07_010
|
||||
[ OK ] md_MAIN_044
|
||||
[ OK ] md_MAIN_045
|
||||
[ OK ] md_MAIN_046
|
||||
[ OK ] md_MAIN_047
|
||||
[ OK ] md_MAIN_008
|
||||
[ OK ] md_MAIN_001
|
||||
[ OK ] md_MAIN_011
|
||||
[ OK ] md_SC03_073
|
||||
[ OK ] md_SC03_078
|
||||
[ OK ] md_SC03_074
|
||||
[ OK ] md_SC03_075
|
||||
[ OK ] md_SC03_077
|
||||
[ OK ] ov_SC07_007
|
||||
[ OK ] md_SC03_076
|
||||
[ OK ] md_SC03_079
|
||||
[ OK ] md_SC03_132
|
||||
[ OK ] md_SC03_133
|
||||
[ OK ] md_SC03_137
|
||||
[ OK ] ov_SC03_107
|
||||
[ OK ] md_SC03_134
|
||||
[ OK ] md_SC03_135
|
||||
[ OK ] md_SC03_136
|
||||
[ OK ] md_MAIN_003
|
||||
[ OK ] md_SC04_024
|
||||
[ OK ] md_SC03_138
|
||||
[ OK ] md_SC04_025
|
||||
[ OK ] md_SC04_026
|
||||
[ OK ] md_SC04_028
|
||||
[ OK ] md_SC04_029
|
||||
[ OK ] md_SC04_027
|
||||
[ OK ] md_SC05_023
|
||||
[ OK ] md_SC05_024
|
||||
[ OK ] md_SC04_030
|
||||
[ OK ] md_SC05_025
|
||||
[ OK ] md_SC05_028
|
||||
[ OK ] md_MAIN_007
|
||||
[ OK ] md_MAIN_009
|
||||
[ OK ] md_SC05_027
|
||||
[ OK ] md_SC03_053
|
||||
[ OK ] md_SC05_029
|
||||
[ OK ] md_SC05_026
|
||||
[ OK ] md_SC03_054
|
||||
[ OK ] md_SC03_056
|
||||
[ OK ] ov_SC02_037
|
||||
[ OK ] md_SC02_009
|
||||
[ OK ] ov_SC07_006
|
||||
[ OK ] md_SC07_004
|
||||
[ OK ] md_SC07_003
|
||||
extract-all: 217 extracted, 0 failed of 217 (+ main, serial)
|
||||
@@ -1,219 +0,0 @@
|
||||
[ OK ] resident
|
||||
[ OK ] ov_SC03_006
|
||||
[ OK ] ov_SC01_000
|
||||
[ OK ] ov_SC05_000
|
||||
[ OK ] ov_SC06_000
|
||||
[ OK ] ov_SC04_000
|
||||
[ OK ] ov_SC01_001
|
||||
[ OK ] ov_SC01_006
|
||||
[ OK ] ov_SC01_005
|
||||
[ OK ] ov_SC03_002
|
||||
[ OK ] ov_SC04_019
|
||||
[ OK ] ov_SC01_077
|
||||
[ OK ] ov_SC04_018
|
||||
[ OK ] ov_SC02_003
|
||||
[ OK ] ov_SC03_001
|
||||
[ OK ] ov_SC02_000
|
||||
[ OK ] main
|
||||
[ OK ] ov_SC02_004
|
||||
[ OK ] ov_SC01_074
|
||||
[ OK ] ov_SC01_080
|
||||
[ OK ] ov_SC01_004
|
||||
[ OK ] ov_SC07_000
|
||||
[ OK ] ov_SC01_008
|
||||
[ OK ] ov_SC01_009
|
||||
[ OK ] ov_SC01_084
|
||||
[ OK ] ov_SC02_015
|
||||
[ OK ] ov_SC02_005
|
||||
[ OK ] ov_SC02_011
|
||||
[ OK ] ov_SC02_021
|
||||
[ OK ] ov_SC02_016
|
||||
[ OK ] ov_SC02_017
|
||||
[ OK ] ov_SC02_026
|
||||
[ OK ] ov_SC02_027
|
||||
[ OK ] ov_SC02_031
|
||||
[ OK ] ov_SC02_041
|
||||
[ OK ] ov_SC03_003
|
||||
[ OK ] ov_SC02_035
|
||||
[ OK ] ov_SC02_039
|
||||
[ OK ] ov_SC02_028
|
||||
[ OK ] ov_SC03_010
|
||||
[ OK ] ov_SC03_007
|
||||
[ OK ] ov_SC03_011
|
||||
[ OK ] ov_SC03_012
|
||||
[ OK ] ov_SC03_023
|
||||
[ OK ] ov_SC03_013
|
||||
[ OK ] ov_SC03_014
|
||||
[ OK ] ov_SC03_024
|
||||
[ OK ] ov_SC03_015
|
||||
[ OK ] ov_SC03_028
|
||||
[ OK ] ov_SC03_030
|
||||
[ OK ] ov_SC03_031
|
||||
[ OK ] ov_SC03_029
|
||||
[ OK ] ov_SC03_089
|
||||
[ OK ] ov_SC03_090
|
||||
[ OK ] ov_SC03_092
|
||||
[ OK ] ov_SC03_093
|
||||
[ OK ] ov_SC03_094
|
||||
[ OK ] ov_SC03_091
|
||||
[ OK ] ov_SC03_095
|
||||
[ OK ] ov_SC03_096
|
||||
[ OK ] ov_SC03_097
|
||||
[ OK ] ov_SC03_098
|
||||
[ OK ] ov_SC03_099
|
||||
[ OK ] ov_SC03_100
|
||||
[ OK ] ov_SC03_101
|
||||
[ OK ] ov_SC03_102
|
||||
[ OK ] ov_SC03_103
|
||||
[ OK ] ov_SC03_104
|
||||
[ OK ] ov_SC03_108
|
||||
[ OK ] ov_SC03_109
|
||||
[ OK ] ov_SC03_111
|
||||
[ OK ] ov_SC03_110
|
||||
[ OK ] ov_SC03_113
|
||||
[ OK ] ov_SC03_114
|
||||
[ OK ] ov_SC03_105
|
||||
[ OK ] ov_SC03_112
|
||||
[ OK ] ov_SC03_115
|
||||
[ OK ] ov_SC03_116
|
||||
[ OK ] ov_SC03_117
|
||||
[ OK ] ov_SC03_118
|
||||
[ OK ] ov_SC03_119
|
||||
[ OK ] ov_SC03_121
|
||||
[ OK ] ov_SC03_126
|
||||
[ OK ] ov_SC03_125
|
||||
[ OK ] ov_SC04_002
|
||||
[ OK ] ov_SC04_004
|
||||
[ OK ] ov_SC03_124
|
||||
[ OK ] ov_SC04_003
|
||||
[ OK ] ov_SC04_005
|
||||
[ OK ] ov_SC04_006
|
||||
[ OK ] ov_SC04_008
|
||||
[ OK ] ov_SC04_007
|
||||
[ OK ] ov_SC04_009
|
||||
[ OK ] ov_SC04_010
|
||||
[ OK ] ov_SC04_012
|
||||
[ OK ] ov_SC04_011
|
||||
[ OK ] ov_SC04_015
|
||||
[ OK ] ov_SC04_016
|
||||
[ OK ] ov_SC04_020
|
||||
[ OK ] ov_SC04_021
|
||||
[ OK ] ov_SC05_002
|
||||
[ OK ] ov_SC05_001
|
||||
[ OK ] ov_SC05_004
|
||||
[ OK ] ov_SC05_003
|
||||
[ OK ] ov_SC05_005
|
||||
[ OK ] ov_SC05_006
|
||||
[ OK ] ov_SC05_007
|
||||
[ OK ] ov_SC05_008
|
||||
[ OK ] ov_SC05_009
|
||||
[ OK ] ov_SC05_010
|
||||
[ OK ] ov_SC05_011
|
||||
[ OK ] ov_SC05_018
|
||||
[ OK ] ov_SC05_017
|
||||
[ OK ] ov_SC05_019
|
||||
[ OK ] ov_SC06_010
|
||||
[ OK ] ov_SC06_008
|
||||
[ OK ] ov_SC06_006
|
||||
[ OK ] ov_SC06_011
|
||||
[ OK ] ov_SC06_013
|
||||
[ OK ] ov_SC06_014
|
||||
[ OK ] ov_SC06_015
|
||||
[ OK ] ov_SC06_016
|
||||
[ OK ] ov_SC06_020
|
||||
[ OK ] ov_SC06_018
|
||||
[ OK ] ov_SC06_022
|
||||
[ OK ] ov_SC06_025
|
||||
[ OK ] ov_SC06_024
|
||||
[ OK ] ov_SC06_027
|
||||
[ OK ] md_MAIN_013
|
||||
[ OK ] md_MAIN_014
|
||||
[ OK ] md_MAIN_015
|
||||
[ OK ] md_MAIN_016
|
||||
[ OK ] md_MAIN_017
|
||||
[ OK ] md_MAIN_018
|
||||
[ OK ] md_MAIN_019
|
||||
[ OK ] md_MAIN_020
|
||||
[ OK ] md_MAIN_021
|
||||
[ OK ] md_MAIN_022
|
||||
[ OK ] ov_SC06_029
|
||||
[ OK ] md_MAIN_023
|
||||
[ OK ] md_MAIN_024
|
||||
[ OK ] md_MAIN_025
|
||||
[ OK ] md_MAIN_026
|
||||
[ OK ] md_MAIN_027
|
||||
[ OK ] md_MAIN_028
|
||||
[ OK ] md_MAIN_029
|
||||
[ OK ] md_MAIN_030
|
||||
[ OK ] md_MAIN_031
|
||||
[ OK ] md_MAIN_033
|
||||
[ OK ] md_MAIN_034
|
||||
[ OK ] md_MAIN_032
|
||||
[ OK ] md_MAIN_035
|
||||
[ OK ] md_MAIN_036
|
||||
[ OK ] md_MAIN_037
|
||||
[ OK ] ov_SC06_030
|
||||
[ OK ] md_MAIN_038
|
||||
[ OK ] md_MAIN_040
|
||||
[ OK ] md_MAIN_039
|
||||
[ OK ] md_MAIN_042
|
||||
[ OK ] md_MAIN_043
|
||||
[ OK ] md_MAIN_044
|
||||
[ OK ] md_MAIN_045
|
||||
[ OK ] md_MAIN_046
|
||||
[ OK ] md_MAIN_047
|
||||
[ OK ] md_MAIN_041
|
||||
[ OK ] ov_SC07_009
|
||||
[ OK ] md_MAIN_001
|
||||
[ OK ] md_MAIN_008
|
||||
[ OK ] ov_SC07_001
|
||||
[ OK ] md_MAIN_011
|
||||
[ OK ] ov_SC07_008
|
||||
[ OK ] md_SC07_003
|
||||
[ OK ] ov_SC07_002
|
||||
[ OK ] md_MAIN_003
|
||||
[ OK ] md_SC03_073
|
||||
[ OK ] md_SC07_004
|
||||
[ OK ] md_SC03_074
|
||||
[ OK ] md_SC03_076
|
||||
[ OK ] md_SC03_077
|
||||
[ OK ] md_SC03_075
|
||||
[ OK ] md_SC03_132
|
||||
[ OK ] md_SC03_079
|
||||
[ OK ] md_SC03_135
|
||||
[ OK ] md_SC03_136
|
||||
[ OK ] md_SC03_078
|
||||
[ OK ] md_SC04_024
|
||||
[ OK ] md_SC03_133
|
||||
[ OK ] md_SC03_134
|
||||
[ OK ] md_SC04_025
|
||||
[ OK ] md_SC04_026
|
||||
[ OK ] md_SC03_137
|
||||
[ OK ] md_SC04_030
|
||||
[ OK ] md_SC03_138
|
||||
[ OK ] md_SC04_029
|
||||
[ OK ] md_SC04_027
|
||||
[ OK ] md_SC05_023
|
||||
[ OK ] md_SC04_028
|
||||
[ OK ] md_SC05_024
|
||||
[ OK ] md_SC05_025
|
||||
[ OK ] md_SC05_028
|
||||
[ OK ] md_SC05_029
|
||||
[ OK ] md_SC05_027
|
||||
[ OK ] md_SC02_009
|
||||
[ OK ] md_SC05_026
|
||||
[ OK ] md_MAIN_007
|
||||
[ OK ] md_MAIN_009
|
||||
[ OK ] ov_SC07_006
|
||||
[ OK ] md_SC03_053
|
||||
[ OK ] md_SC03_054
|
||||
[ OK ] md_SC03_056
|
||||
[ OK ] ov_SC07_007
|
||||
[ OK ] ov_SC06_032
|
||||
[ OK ] ov_SC07_010
|
||||
[ OK ] ov_SC06_033
|
||||
[ OK ] ov_MAIN_012
|
||||
[ OK ] ov_SC02_037
|
||||
[ OK ] ov_SC07_011
|
||||
[ OK ] ov_SC03_107
|
||||
check-all: 218 passed, 0 failed of 218
|
||||
@@ -1 +0,0 @@
|
||||
clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, include macros, undefined_*_auto.txt).
|
||||
@@ -1,253 +0,0 @@
|
||||
splat 0.41.0 (powered by spimdisasm 1.41.0)
|
||||
0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 0%| | 0/1096 [00:00<?, ?it/s]
Loading symbols (symbols.us): 100%|██████████| 1096/1096 [00:00<00:00, 61133.00it/s]
|
||||
0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 0%| | 0/47 [00:00<?, ?it/s]
Loading symbols (symbols.us.ram): 100%|██████████| 47/47 [00:00<00:00, 478476.43it/s]
|
||||
0%| | 0/2 [00:00<?, ?it/s]
Scanning header: 0%| | 0/2 [00:00<?, ?it/s]
Scanning main: 0%| | 0/2 [00:00<?, ?it/s]
|
||||
Rodata segment '800' may belong to the text segment '800'
|
||||
Based on the usage from the function LzssDecodeSector to the symbol jtbl_80072A38
|
||||
|
||||
The rodata segment '800' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
|
||||
File split suggestions for this segment will follow in config yaml format:
|
||||
- [0x6324C, .rodata]
|
||||
- [0x63388, .rodata]
|
||||
- [0x633FC, .rodata]
|
||||
|
||||
|
||||
Rodata segment '800_b' may belong to the text segment '800_b'
|
||||
Based on the usage from the function func_8002B0B4 to the symbol jtbl_80072E44
|
||||
|
||||
Rodata segment '800_b_2' may belong to the text segment '800_b_2'
|
||||
Based on the usage from the function func_8002DC68 to the symbol jtbl_80072F3C
|
||||
|
||||
The rodata segment '800_b_2' has jumptables that are not aligned properly file-wise, indicating one or more likely file split.
|
||||
File split suggestions for this segment will follow in config yaml format:
|
||||
- [0x63920, .rodata]
|
||||
|
||||
|
||||
Rodata segment '800_c' may belong to the text segment '800_c'
|
||||
Based on the usage from the function func_80035270 to the symbol jtbl_800732A0
|
||||
Scanning main: 100%|██████████| 2/2 [00:03<00:00, 1.57s/it]
Scanning main: 100%|██████████| 2/2 [00:03<00:00, 1.57s/it]
|
||||
0%| | 0/2 [00:00<?, ?it/s]
Splitting header: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 0%| | 0/2 [00:00<?, ?it/s]
Splitting main: 100%|██████████| 2/2 [00:01<00:00, 1.58it/s]
Splitting main: 100%|██████████| 2/2 [00:01<00:00, 1.58it/s]
|
||||
0%| | 0/2 [00:00<?, ?it/s]
Linker script header: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 0%| | 0/2 [00:00<?, ?it/s]
Linker script main: 100%|██████████| 2/2 [00:00<00:00, 66.29it/s]
|
||||
Split 340 KB (82.28%) in defined segments
|
||||
header: 2 KB (0.50%) 1 split, 0 cached
|
||||
c: 338 KB (81.78%) 85 split, 0 cached
|
||||
unknown: 0 B (0.00%) from unknown bin files
|
||||
ld_interleave --order: .main island = 8 pieces [53198.data.o, 800.o, 63470.data.o, 800_b.o, 800_b_2.o, 63940.data.o, 800_c.o, 63C4C.data.o]; pre=0 text=85 empties=166 bss=85
|
||||
[ OK ] resident
|
||||
[ OK ] ov_SC05_000
|
||||
[ OK ] ov_SC01_000
|
||||
[ OK ] ov_SC04_000
|
||||
[ OK ] ov_SC06_000
|
||||
[ OK ] ov_SC01_005
|
||||
[ OK ] ov_SC03_002
|
||||
[ OK ] ov_SC01_006
|
||||
[ OK ] ov_SC02_000
|
||||
[ OK ] ov_SC01_077
|
||||
[ OK ] ov_SC04_019
|
||||
[ OK ] ov_SC02_003
|
||||
[ OK ] ov_SC04_018
|
||||
[ OK ] ov_SC03_001
|
||||
[ OK ] ov_SC03_006
|
||||
[ OK ] ov_SC01_001
|
||||
[ OK ] ov_SC01_004
|
||||
[ OK ] ov_SC01_008
|
||||
[ OK ] ov_SC01_074
|
||||
[ OK ] ov_SC07_000
|
||||
[ OK ] ov_SC02_004
|
||||
[ OK ] ov_SC02_015
|
||||
[ OK ] ov_SC02_021
|
||||
[ OK ] ov_SC01_080
|
||||
[ OK ] ov_SC01_009
|
||||
[ OK ] ov_SC01_084
|
||||
[ OK ] ov_SC02_016
|
||||
[ OK ] ov_SC02_005
|
||||
[ OK ] ov_SC02_026
|
||||
[ OK ] ov_SC02_039
|
||||
[ OK ] ov_SC02_028
|
||||
[ OK ] ov_SC02_027
|
||||
[ OK ] ov_SC02_031
|
||||
[ OK ] ov_SC02_011
|
||||
[ OK ] ov_SC02_017
|
||||
[ OK ] ov_SC02_035
|
||||
[ OK ] ov_SC03_003
|
||||
[ OK ] ov_SC02_041
|
||||
[ OK ] ov_SC03_012
|
||||
[ OK ] ov_SC03_011
|
||||
[ OK ] ov_SC03_010
|
||||
[ OK ] ov_SC03_013
|
||||
[ OK ] ov_SC03_023
|
||||
[ OK ] ov_SC03_007
|
||||
[ OK ] ov_SC03_024
|
||||
[ OK ] ov_SC03_031
|
||||
[ OK ] ov_SC03_089
|
||||
[ OK ] ov_SC03_014
|
||||
[ OK ] ov_SC03_090
|
||||
[ OK ] ov_SC03_015
|
||||
[ OK ] ov_SC03_029
|
||||
[ OK ] ov_SC03_030
|
||||
[ OK ] ov_SC03_092
|
||||
[ OK ] ov_SC03_028
|
||||
[ OK ] ov_SC03_095
|
||||
[ OK ] ov_SC03_096
|
||||
[ OK ] ov_SC03_091
|
||||
[ OK ] ov_SC03_093
|
||||
[ OK ] ov_SC03_094
|
||||
[ OK ] ov_SC03_097
|
||||
[ OK ] ov_SC03_101
|
||||
[ OK ] ov_SC03_098
|
||||
[ OK ] ov_SC03_102
|
||||
[ OK ] ov_SC03_109
|
||||
[ OK ] ov_SC03_099
|
||||
[ OK ] ov_SC03_108
|
||||
[ OK ] ov_SC03_103
|
||||
[ OK ] ov_SC03_100
|
||||
[ OK ] ov_SC03_110
|
||||
[ OK ] ov_SC03_104
|
||||
[ OK ] ov_SC03_105
|
||||
[ OK ] ov_SC03_113
|
||||
[ OK ] ov_SC03_112
|
||||
[ OK ] ov_SC03_111
|
||||
[ OK ] ov_SC03_114
|
||||
[ OK ] ov_SC03_115
|
||||
[ OK ] ov_SC03_116
|
||||
[ OK ] ov_SC03_126
|
||||
[ OK ] ov_SC03_117
|
||||
[ OK ] ov_SC03_121
|
||||
[ OK ] ov_SC04_008
|
||||
[ OK ] ov_SC04_003
|
||||
[ OK ] ov_SC04_006
|
||||
[ OK ] ov_SC04_009
|
||||
[ OK ] ov_SC03_118
|
||||
[ OK ] ov_SC04_004
|
||||
[ OK ] ov_SC03_125
|
||||
[ OK ] ov_SC03_119
|
||||
[ OK ] ov_SC04_002
|
||||
[ OK ] ov_SC04_005
|
||||
[ OK ] ov_SC04_007
|
||||
[ OK ] ov_SC04_010
|
||||
[ OK ] ov_SC03_124
|
||||
[ OK ] ov_SC04_012
|
||||
[ OK ] ov_SC04_021
|
||||
[ OK ] ov_SC05_006
|
||||
[ OK ] ov_SC04_016
|
||||
[ OK ] ov_SC05_002
|
||||
[ OK ] ov_SC05_004
|
||||
[ OK ] ov_SC04_020
|
||||
[ OK ] ov_SC05_007
|
||||
[ OK ] ov_SC05_009
|
||||
[ OK ] ov_SC05_003
|
||||
[ OK ] ov_SC04_015
|
||||
[ OK ] ov_SC05_008
|
||||
[ OK ] ov_SC05_001
|
||||
[ OK ] ov_SC05_005
|
||||
[ OK ] ov_SC04_011
|
||||
[ OK ] ov_SC05_011
|
||||
[ OK ] ov_SC05_010
|
||||
[ OK ] ov_SC05_019
|
||||
[ OK ] ov_SC06_013
|
||||
[ OK ] ov_SC06_015
|
||||
[ OK ] ov_SC06_008
|
||||
[ OK ] ov_SC06_014
|
||||
[ OK ] ov_SC06_011
|
||||
[ OK ] ov_SC06_016
|
||||
[ OK ] ov_SC06_010
|
||||
[ OK ] ov_SC06_020
|
||||
[ OK ] ov_SC05_018
|
||||
[ OK ] ov_SC05_017
|
||||
[ OK ] ov_SC06_018
|
||||
[ OK ] ov_SC06_006
|
||||
[ OK ] ov_SC06_025
|
||||
[ OK ] ov_SC06_022
|
||||
[ OK ] ov_SC06_027
|
||||
[ OK ] ov_SC06_024
|
||||
[ OK ] md_MAIN_013
|
||||
[ OK ] md_MAIN_014
|
||||
[ OK ] ov_SC07_008
|
||||
[ OK ] ov_SC07_002
|
||||
[ OK ] md_MAIN_015
|
||||
[ OK ] ov_SC07_001
|
||||
[ OK ] md_MAIN_016
|
||||
[ OK ] md_MAIN_017
|
||||
[ OK ] ov_SC06_030
|
||||
[ OK ] md_MAIN_018
|
||||
[ OK ] md_MAIN_019
|
||||
[ OK ] md_MAIN_020
|
||||
[ OK ] md_MAIN_021
|
||||
[ OK ] md_MAIN_023
|
||||
[ OK ] md_MAIN_022
|
||||
[ OK ] md_MAIN_024
|
||||
[ OK ] md_MAIN_025
|
||||
[ OK ] ov_SC07_009
|
||||
[ OK ] md_MAIN_027
|
||||
[ OK ] ov_SC06_029
|
||||
[ OK ] md_MAIN_028
|
||||
[ OK ] md_MAIN_026
|
||||
[ OK ] md_MAIN_029
|
||||
[ OK ] ov_SC06_032
|
||||
[ OK ] ov_SC07_011
|
||||
[ OK ] md_MAIN_030
|
||||
[ OK ] md_MAIN_031
|
||||
[ OK ] ov_SC06_033
|
||||
[ OK ] md_MAIN_033
|
||||
[ OK ] md_MAIN_032
|
||||
[ OK ] md_MAIN_035
|
||||
[ OK ] md_MAIN_034
|
||||
[ OK ] md_MAIN_036
|
||||
[ OK ] md_MAIN_037
|
||||
[ OK ] md_MAIN_038
|
||||
[ OK ] md_MAIN_040
|
||||
[ OK ] md_MAIN_039
|
||||
[ OK ] md_MAIN_041
|
||||
[ OK ] md_MAIN_042
|
||||
[ OK ] md_MAIN_043
|
||||
[ OK ] md_MAIN_044
|
||||
[ OK ] md_MAIN_045
|
||||
[ OK ] ov_MAIN_012
|
||||
[ OK ] md_MAIN_047
|
||||
[ OK ] md_MAIN_046
|
||||
[ OK ] ov_SC07_010
|
||||
[ OK ] md_MAIN_008
|
||||
[ OK ] md_MAIN_001
|
||||
[ OK ] md_MAIN_011
|
||||
[ OK ] md_SC03_073
|
||||
[ OK ] md_SC03_074
|
||||
[ OK ] md_SC03_078
|
||||
[ OK ] md_SC03_075
|
||||
[ OK ] md_SC03_077
|
||||
[ OK ] md_SC03_076
|
||||
[ OK ] md_SC03_132
|
||||
[ OK ] md_SC03_079
|
||||
[ OK ] ov_SC03_107
|
||||
[ OK ] md_SC03_133
|
||||
[ OK ] ov_SC07_007
|
||||
[ OK ] md_SC03_137
|
||||
[ OK ] md_SC03_134
|
||||
[ OK ] md_SC03_135
|
||||
[ OK ] md_SC03_136
|
||||
[ OK ] md_MAIN_003
|
||||
[ OK ] md_SC04_025
|
||||
[ OK ] md_SC04_024
|
||||
[ OK ] md_SC04_029
|
||||
[ OK ] md_SC03_138
|
||||
[ OK ] md_SC04_026
|
||||
[ OK ] md_SC04_028
|
||||
[ OK ] md_SC04_027
|
||||
[ OK ] md_SC05_023
|
||||
[ OK ] md_SC04_030
|
||||
[ OK ] md_SC05_024
|
||||
[ OK ] md_SC05_028
|
||||
[ OK ] md_SC05_025
|
||||
[ OK ] md_MAIN_007
|
||||
[ OK ] md_MAIN_009
|
||||
[ OK ] md_SC05_027
|
||||
[ OK ] md_SC05_026
|
||||
[ OK ] md_SC05_029
|
||||
[ OK ] md_SC03_053
|
||||
[ OK ] md_SC03_056
|
||||
[ OK ] md_SC03_054
|
||||
[ OK ] ov_SC07_006
|
||||
[ OK ] md_SC02_009
|
||||
[ OK ] ov_SC02_037
|
||||
[ OK ] md_SC07_004
|
||||
[ OK ] md_SC07_003
|
||||
extract-all: 217 extracted, 0 failed of 217 (+ main, serial)
|
||||
@@ -1,7 +0,0 @@
|
||||
START 2026-09-05T11:55:05-06:00
|
||||
CLEAN_EXIT=0
|
||||
EXTRACT_EXIT=0
|
||||
extract-all: 217 extracted, 0 failed of 217 (+ main, serial)
|
||||
CHECK_EXIT=0
|
||||
check-all: 218 passed, 0 failed of 218
|
||||
END 2026-09-05T12:00:09-06:00
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +0,0 @@
|
||||
[twin_rescan] 33 open stub(s) scanned; 5 have a banked twin at d<=5
|
||||
[twin_rescan] NEWLY FREE since the last snapshot: 0
|
||||
(nothing new — the last bank did not unlock a sibling)
|
||||
[twin_rescan] snapshot written to .run/twin_rescan.snapshot.json
|
||||
@@ -1,4 +0,0 @@
|
||||
[twin_rescan] 16 open stub(s) scanned; 0 have a banked twin at d<=5
|
||||
[twin_rescan] NEWLY FREE since the last snapshot: 0
|
||||
(nothing new — the last bank did not unlock a sibling)
|
||||
[twin_rescan] snapshot written to .run/twin_rescan.snapshot.json
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,25 +0,0 @@
|
||||
.venv/bin/python tools/disc_audit.py
|
||||
disc: 416,021,760 bytes across 4 tracks; onboarded payload hashes: 213
|
||||
ISO root files: 27
|
||||
! LIST.CD: TOC walk failed (sub-file 0 [2048:24576] out of bounds (.CD is 4096 bytes)) — whole file booked as data
|
||||
onboarded-code 50,878,697
|
||||
unclaimed-code 0
|
||||
classified-data 134,017,708
|
||||
audio-video 184,338,000
|
||||
filesystem-metadata 46,787,355
|
||||
TOTAL 416,021,760 disc 416,021,760 residue 0
|
||||
L2 disagreements (review queue): 80
|
||||
SC06.CD/6 entry=0 type=4 854,543 B L1=data L2=code fns=3 0.87/0.0118
|
||||
SC03.CD/6 entry=0 type=4 849,759 B L1=data L2=code fns=3 0.87/0.0130
|
||||
SC07.CD/6 entry=1 type=4 844,311 B L1=data L2=code fns=3 0.84/0.0116
|
||||
SC01.CD/9 entry=0 type=4 832,263 B L1=data L2=code fns=3 0.85/0.0121
|
||||
SC01.CD/1 entry=0 type=4 831,599 B L1=data L2=code fns=3 0.74/0.0119
|
||||
SC04.CD/11 entry=0 type=4 824,663 B L1=data L2=code fns=3 0.79/0.0136
|
||||
SC02.CD/17 entry=0 type=4 818,143 B L1=data L2=code fns=3 0.89/0.0134
|
||||
SC03.CD/28 entry=0 type=4 804,015 B L1=data L2=code fns=3 0.88/0.0133
|
||||
SC02.CD/11 entry=0 type=4 801,063 B L1=data L2=code fns=3 0.89/0.0145
|
||||
SC03.CD/7 entry=0 type=4 799,087 B L1=data L2=code fns=3 0.88/0.0131
|
||||
SC03.CD/14 entry=0 type=4 798,439 B L1=data L2=code fns=3 0.87/0.0135
|
||||
SC03.CD/15 entry=0 type=4 798,439 B L1=data L2=code fns=3 0.87/0.0135
|
||||
UNCLAIMED code payloads: 0
|
||||
ledger -> docs/disc-ledger.md
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,57 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Rewrite staged member drafts to the §37/§124 DEFINITION-SIDE ASM-LABEL ALIAS form.
|
||||
|
||||
WHY (byte-diagnosed, P30 S38 — the dominant sweep residue, 208 of ~398 conflicts):
|
||||
A remapped member's definition can carry a signature that NO C declaration can reconcile with the
|
||||
fleet's. Measured on family 0x80146ab4 (18 ins, ×138):
|
||||
|
||||
draft def : void func_80146A6C(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6)
|
||||
TU decl : extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);
|
||||
|
||||
The narrow params are the wall: C's DEFAULT ARGUMENT PROMOTION means `s16`/`u16` cannot agree with
|
||||
an `s32` prototype, and the `()` no-prototype escape is ILLEGAL precisely when a param promotes. So
|
||||
neither side can move — `cast_call_sites` is the wrong axis (it fixes CALLEE decls, not the
|
||||
definition's own signature) and `--fix-def-sig` cannot help either (measured: 0/138, error
|
||||
unchanged).
|
||||
|
||||
THE ESCAPE (S33-proven on func_80147364: definition `(u16,u16)` vs 4,046 fleet decls, banked ×137
|
||||
first try; 1,725 in-tree precedents): give the DEFINITION a private C identifier and bind the
|
||||
emitted SYMBOL with a GNU asm label. The TU's declaration then simply never meets the definition,
|
||||
so its type is irrelevant — ZERO blast radius on every caller.
|
||||
|
||||
void aF80146A6C(<the byte-true params>) __asm__("func_80146A6C");
|
||||
void aF80146A6C(<the byte-true params>) { ... }
|
||||
|
||||
Byte-neutral by construction: the emitted symbol and the body are unchanged; only the C spelling of
|
||||
the definition differs. The whole-binary byte-gate remains the sole arbiter (G3/P9).
|
||||
|
||||
Usage: alias_defs.py <staged_dir> <out_dir>
|
||||
"""
|
||||
import sys, os, re, glob, shutil
|
||||
|
||||
SRC, OUT = sys.argv[1], sys.argv[2]
|
||||
shutil.rmtree(OUT, ignore_errors=True)
|
||||
|
||||
# `<type> func_<ADDR>(<params>)` at column 0, followed by the body brace — the definition head.
|
||||
DEF = re.compile(r'^([A-Za-z_][\w \*]*?)\b(func_([0-9A-Fa-f]{8}))\s*\(([^;{]*)\)\s*\{', re.M)
|
||||
|
||||
n_in = n_out = 0
|
||||
for p in sorted(glob.glob(os.path.join(SRC, '*', 'func_*.c'))):
|
||||
n_in += 1
|
||||
ov = os.path.basename(os.path.dirname(p))
|
||||
txt = open(p).read()
|
||||
m = DEF.search(txt)
|
||||
if not m:
|
||||
continue
|
||||
ret, sym, addr, params = m.group(1).strip(), m.group(2), m.group(3), m.group(4)
|
||||
alias = 'aF' + addr.upper()
|
||||
if alias in txt: # already aliased
|
||||
continue
|
||||
head = f'{ret} {alias}({params})'
|
||||
new = txt[:m.start()] + f'{head} __asm__("{sym}");\n{head}\n{{' + txt[m.end():]
|
||||
d = os.path.join(OUT, ov)
|
||||
os.makedirs(d, exist_ok=True)
|
||||
open(os.path.join(d, os.path.basename(p)), 'w').write(new)
|
||||
n_out += 1
|
||||
|
||||
print(f"alias_defs: {n_out} of {n_in} draft(s) rewritten to the def-side alias -> {OUT}")
|
||||
@@ -1,17 +0,0 @@
|
||||
{"t": 1786154750.2, "lba": 227, "gi": null, "name": null, "dest": "0x80180000", "state": 6}
|
||||
{"t": 1786154750.6, "lba": 241, "gi": 1, "name": "MAIN/1", "dest": "0x800CEDF8", "state": 6}
|
||||
{"t": 1786154756.3, "lba": 293, "gi": 2, "name": "MAIN/2", "dest": "0x00000000", "state": 3}
|
||||
{"t": 1786154759.6, "lba": 328, "gi": 3, "name": "MAIN/3", "dest": "0x800CEDF8", "state": 3}
|
||||
{"t": 1786154777.0, "lba": 1617, "gi": 10, "name": "MAIN/10", "dest": "0x800CEDF8", "state": 2}
|
||||
{"t": 1786154779.2, "lba": 2920, "gi": 42, "name": "MAIN/42", "dest": "0x800CCB1C", "state": 4}
|
||||
{"t": 1786154780.0, "lba": 40754, "gi": 166, "name": "SC02/31", "dest": "0x80128158", "state": 4}
|
||||
{"t": 1786154783.9, "lba": 41282, "gi": 169, "name": "SC02/34", "dest": "0x80128158", "state": 0}
|
||||
{"t": 1786154827.9, "lba": 754890, "gi": null, "name": null, "dest": "0x80128158", "state": 2}
|
||||
{"t": 1786154849.4, "lba": 41404, "gi": 170, "name": "SC02/35", "dest": "0x80128158", "state": 2}
|
||||
{"t": 1786154853.1, "lba": 41860, "gi": 171, "name": "SC02/36", "dest": "0x80128158", "state": 0}
|
||||
{"t": 1786154918.3, "lba": 42000, "gi": 172, "name": "SC02/37", "dest": "0x80128158", "state": 4}
|
||||
{"t": 1786154923.5, "lba": 42696, "gi": 173, "name": "SC02/38", "dest": "0x80128158", "state": 0}
|
||||
{"t": 1786154988.8, "lba": 42841, "gi": 174, "name": "SC02/39", "dest": "0x80128158", "state": 2}
|
||||
{"t": 1786154992.5, "lba": 43313, "gi": 175, "name": "SC02/40", "dest": "0x80128158", "state": 0}
|
||||
{"t": 1786155050.1, "lba": 43460, "gi": 176, "name": "SC02/41", "dest": "0x80128158", "state": 4}
|
||||
{"t": 1786155054.0, "lba": 43984, "gi": 177, "name": "SC02/42", "dest": "0x80128158", "state": 0}
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"_comment": "A1 finding: 4 fns matched ONLY in ov_SC01_077, still INCLUDE_ASM in 133 overlays.",
|
||||
"_why_never_propagated": "3 of 4 are defined in src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c, a _jr_* split file. dedup_propagate.overlay_files allowlists only ('_a','_o0','_o0b','_after') -- so the propagator could not SEE the definitions. The dedup group was registered anyway, and dedup_integrate's missing bank-check printed [ OK ] on the lie. Two silent-skip bugs compounding: one created the hole, the other hid it.",
|
||||
"_harvest_in": "A5 (dedup_propagate overlay_files glob fix)",
|
||||
"targets": [
|
||||
{"addr": "0x80128ED8", "nins": 53, "def": "src/ov_SC01_077/ov_SC01_077_a.c:451", "siblings": 133, "hidden_ins": 7049},
|
||||
{"addr": "0x8012C098", "nins": 21, "def": "src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c:449", "siblings": 133, "hidden_ins": 2793},
|
||||
{"addr": "0x8012C0EC", "nins": 42, "def": "src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c:470", "siblings": 133, "hidden_ins": 5586},
|
||||
{"addr": "0x8012C750", "nins": 52, "def": "src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c:594", "siblings": 133, "hidden_ins": 6916}
|
||||
],
|
||||
"total_hidden_instructions": 22344,
|
||||
"total_member_instances": 532
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
disc code sweep — 1189 payloads under extracted/retail, window=4096w, valid>=0.9, jr_ra>=0.01
|
||||
type payloads code onboarded HIDDEN
|
||||
0 301 0 0 0
|
||||
1 166 40 1 39
|
||||
2 201 0 0 0
|
||||
3 201 0 0 0
|
||||
4 138 138 138 0
|
||||
6 29 0 0 0
|
||||
7 139 0 0 0
|
||||
8 14 0 0 0
|
||||
|
||||
HIDDEN code-bearing payloads (valid>=0.9 AND jr_ra>=0.01, NOT onboarded): 39
|
||||
type 1 valid 96.4% jr_ra 7.23% (83w, raw) extracted/retail/MAIN.CD.dir/FILE_024.dir/0.1
|
||||
type 1 valid 96.9% jr_ra 6.19% (97w, raw) extracted/retail/MAIN.CD.dir/FILE_023.dir/0.1
|
||||
type 1 valid 98.4% jr_ra 5.13% (312w, raw) extracted/retail/MAIN.CD.dir/FILE_035.dir/1.1
|
||||
type 1 valid 100.0% jr_ra 3.39% (4096w, raw) extracted/retail/MAIN.CD.dir/FILE_012.dir/1.1
|
||||
type 1 valid 100.0% jr_ra 3.39% (4096w, raw) extracted/retail/SC02.CD.dir/FILE_037.dir/0.1
|
||||
type 1 valid 100.0% jr_ra 3.39% (4096w, raw) extracted/retail/SC03.CD.dir/FILE_107.dir/0.1
|
||||
type 1 valid 99.4% jr_ra 3.24% (1018w, raw) extracted/retail/MAIN.CD.dir/FILE_022.dir/1.1
|
||||
type 1 valid 100.0% jr_ra 2.86% (210w, raw) extracted/retail/MAIN.CD.dir/FILE_008.dir/1.1
|
||||
type 1 valid 98.8% jr_ra 2.70% (482w, raw) extracted/retail/MAIN.CD.dir/FILE_016.dir/1.1
|
||||
type 1 valid 96.0% jr_ra 2.68% (373w, raw) extracted/retail/MAIN.CD.dir/FILE_017.dir/1.1
|
||||
type 1 valid 99.2% jr_ra 2.67% (900w, raw) extracted/retail/MAIN.CD.dir/FILE_026.dir/1.1
|
||||
type 1 valid 100.0% jr_ra 2.52% (159w, raw) extracted/retail/MAIN.CD.dir/FILE_042.dir/0.1
|
||||
type 1 valid 99.0% jr_ra 2.49% (522w, raw) extracted/retail/MAIN.CD.dir/FILE_014.dir/1.1
|
||||
type 1 valid 100.0% jr_ra 2.35% (978w, raw) extracted/retail/MAIN.CD.dir/FILE_043.dir/0.1
|
||||
type 1 valid 93.4% jr_ra 2.34% (726w, raw) extracted/retail/MAIN.CD.dir/FILE_037.dir/1.1
|
||||
type 1 valid 98.8% jr_ra 2.33% (816w, raw) extracted/retail/MAIN.CD.dir/FILE_033.dir/1.1
|
||||
type 1 valid 98.4% jr_ra 2.28% (1229w, raw) extracted/retail/MAIN.CD.dir/FILE_036.dir/1.1
|
||||
type 1 valid 99.2% jr_ra 2.27% (484w, raw) extracted/retail/MAIN.CD.dir/FILE_021.dir/1.1
|
||||
type 1 valid 96.4% jr_ra 2.22% (496w, raw) extracted/retail/MAIN.CD.dir/FILE_029.dir/1.1
|
||||
type 1 valid 98.6% jr_ra 2.20% (1318w, raw) extracted/retail/MAIN.CD.dir/FILE_027.dir/1.1
|
||||
type 1 valid 97.4% jr_ra 2.13% (469w, raw) extracted/retail/MAIN.CD.dir/FILE_030.dir/1.1
|
||||
type 1 valid 99.2% jr_ra 1.97% (1115w, raw) extracted/retail/MAIN.CD.dir/FILE_028.dir/1.1
|
||||
type 1 valid 93.9% jr_ra 1.97% (2230w, raw) extracted/retail/MAIN.CD.dir/FILE_044.dir/0.1
|
||||
type 1 valid 98.9% jr_ra 1.89% (636w, raw) extracted/retail/MAIN.CD.dir/FILE_009.dir/0.1
|
||||
type 1 valid 92.4% jr_ra 1.82% (1425w, raw) extracted/retail/MAIN.CD.dir/FILE_039.dir/1.1
|
||||
type 1 valid 94.8% jr_ra 1.62% (678w, raw) extracted/retail/MAIN.CD.dir/FILE_018.dir/1.1
|
||||
type 1 valid 90.1% jr_ra 1.61% (4096w, raw) extracted/retail/SC03.CD.dir/FILE_076.dir/2.1
|
||||
type 1 valid 90.1% jr_ra 1.61% (4096w, raw) extracted/retail/SC03.CD.dir/FILE_135.dir/2.1
|
||||
type 1 valid 90.2% jr_ra 1.61% (4096w, raw) extracted/retail/SC04.CD.dir/FILE_027.dir/2.1
|
||||
type 1 valid 90.4% jr_ra 1.61% (4096w, raw) extracted/retail/SC05.CD.dir/FILE_026.dir/2.1
|
||||
type 1 valid 99.5% jr_ra 1.50% (1861w, raw) extracted/retail/MAIN.CD.dir/FILE_034.dir/1.1
|
||||
type 1 valid 99.9% jr_ra 1.47% (818w, raw) extracted/retail/MAIN.CD.dir/FILE_047.dir/0.1
|
||||
type 1 valid 99.9% jr_ra 1.46% (4096w, raw) extracted/retail/SC07.CD.dir/FILE_004.dir/1.1
|
||||
type 1 valid 90.5% jr_ra 1.46% (1025w, raw) extracted/retail/MAIN.CD.dir/FILE_041.dir/1.1
|
||||
type 1 valid 97.3% jr_ra 1.43% (1261w, raw) extracted/retail/MAIN.CD.dir/FILE_031.dir/1.1
|
||||
type 1 valid 100.0% jr_ra 1.37% (4096w, raw) extracted/retail/SC07.CD.dir/FILE_003.dir/1.1
|
||||
type 1 valid 93.0% jr_ra 1.30% (1690w, raw) extracted/retail/MAIN.CD.dir/FILE_019.dir/1.1
|
||||
type 1 valid 99.5% jr_ra 1.25% (4096w, raw) extracted/retail/MAIN.CD.dir/FILE_003.dir/1.1
|
||||
type 1 valid 99.5% jr_ra 1.25% (4096w, raw) extracted/retail/MAIN.CD.dir/FILE_004.dir/0.1
|
||||
@@ -1,54 +0,0 @@
|
||||
# Fable 5 — frontier attack analysis (P30 SESSION-38, 2026-08-04)
|
||||
|
||||
> **Provenance:** produced by a read-only Fable-5 agent commissioned during S38 with the explicit
|
||||
> brief *"this project has repeatedly declared 'no more families' and been wrong — treat my
|
||||
> conclusion as a hypothesis to attack."* The agent's harness blocked it from writing to disk, so
|
||||
> this file is its **verbatim returned report**, transcribed by the orchestrator so it survives the
|
||||
> session. Its computed scratch data — the h_exact / h_norm pools — **is** on disk at
|
||||
> `.run/fable_frontier/pool_ovres.json` (136 KB) and is the reusable artifact.
|
||||
>
|
||||
> **Status of its claims:** the two headline refutations were independently re-verified against the
|
||||
> repo before this was acted on (23,211 `.run/hseq_failed.*.classified.txt` files exist; the
|
||||
> `0x801833f0` family went 0/6 → 6/6 after the type lift, R22 140/140). The pool numbers in §"Top 3
|
||||
> findings" item 3 are the agent's own computation and are **not** independently re-verified —
|
||||
> verify before scaling a wave onto them (R14).
|
||||
|
||||
---
|
||||
|
||||
## Top 3 findings
|
||||
|
||||
**1. Both session-38 zeros were PLUMBING, and their diagnoses were already on disk, written by the sweep itself at probe time — unread.**
|
||||
- `0x801833f0` (0/6) → `.run/hseq_failed.ov_SC03_097.0.classified.txt`: `func_801813B4 PLUMBING: src/ov_SC03_097/ov_SC03_097_jr_8017D898.c:4162: parse error before 'vtx'`. All 11 instances of this family (5 matched + 6 open) have **identical h_norm** — the code is byte-proven identical modulo relocation; 0/6 was a compile-error certainty. Cause: the staged draft (`.run/sweep/ov_SC03_097/func_801813B4.c`) references the exemplar's TU-local types `Ft4_801833F0`/`Drm_801833F0`/`PTag_801833F0` whose **typedefs were never gathered** into the member TU (gcc-2.7.2 parses the unknown-type declarator as an expression → decl-after-statement error at `vtx`). `gather_externs` copies extern lines, not local typedef/macro definitions.
|
||||
- `0x80128c98` (0/138) → `.run/hseq_failed.ov_SC03_097.52.classified.txt`: `PLUMBING: conflicting types for 'cdFileLocTable'` — the §103/§20 extern-conflict class. Neither probe ever reached codegen. The S38 claim "family_sweep reports banked/failed without the per-member build error" is itself false — the `.classified.txt` payloads exist per member, per run.
|
||||
|
||||
**2. "The ×138 era is over / 4 families collide by chance" is another false wall — the map's own classifier refutes it.** `classify_member` (family_remap.py:213) is a per-word diff with reloc tracking; PURE means every differing word sits at a reloc position — the opposite of chance collision. All four "chance" families classify PURE or IMM ×138 (`0x80128c98` PURE×138, `0x80146ab4` PURE×138, `0x80161418` PURE×138 with **552 already-matched siblings** — this family has swept successfully before — `0x80146c3c` IMM×138). The two "ledgered not-templatable" families are also contradicted: `0x80175820` is IMM×137 (the T2a immediate engine's exact domain, 7,535 ins), `0x80132018` is PURE×132 (6,072 ins). Zero STRUCT members in any of them. Only the 2 GIANT walls survive scrutiny — and those are *exemplar* walls (close=91/110 regalloc) whose 138 members each classify PURE: 50,094 ins ride on 2 cracks. Historical blocker mix across ALL sweep runs' classified files: **~24k PLUMBING vs 4,917 DIFF (5:1)** — sweep failure has always been mostly plumbing.
|
||||
|
||||
**3. Half the open overlay code sits in h_norm-identical structure nobody is targeting.** Computed fresh from sig+corpus (overlays+resident, 12,094 open fns / 702,647 ins):
|
||||
- **h_exact pool**: 250 open fns / 12,981 ins are byte-identical (including reloc payloads) to an already-matched function — including **the whale `0x80144b9c` (770 ins), matched in 134/138 overlays, open only in SC07_006/007/010/011** — 3,080 ins of literally identical bytes blocked solely by the SC07 carve defect.
|
||||
- **h_norm pool**: 860 fns / 35,438 ins normalization-identical to matched code (859 of them inside the 148 matched-exemplar families — half the "free sweep lane" is h_norm-proven, not h_seq-inferred).
|
||||
- **Open-only h_norm clusters** (≥2, no matched sibling): **1,689 clusters / 5,956 fns / 326,261 ins = 46% of all open overlay instructions**. Exemplar ins 88,649, propagated ins 237,612 — a free 2.7× multiplier on every crack aimed here. Includes an unflagged alive ×138 h_norm-identical cluster (`0x80162ccc`, 3,174 ins) and 947-ins functions with identical siblings (`0x8017c6f4` ×3, `0x8017d538` ×2).
|
||||
- **Main is structurally barren** (zero h_exact overlap with anything, 5k ins of internal h_seq dups in 49,673 open ins) — genuine agent tail, different compiler era; its Ghidra sig is 7 weeks stale and missing 757 of 2,002 stubs. **Resident**: 2 of its 14 stubs (`func_800CFE60`, `func_800D0214`) already have match_one-MATCH drafts recorded in backlog.jsonl as "gate rejected (declaration/TU plumbing)" — same defect class.
|
||||
|
||||
## Ranked attack plan (tokens/instruction; baseline wave = 490)
|
||||
|
||||
| # | Strategy | Reachable ins | tok/ins | Pre-work | Validate/kill experiment |
|
||||
|---|---|---|---|---|---|
|
||||
| S1 | **Fix 2 plumbing classes (typedef/macro gather + extern-conflict reconcile), re-sweep the 148 matched-exemplar families** (1,585 members / 75,383 ins gross, 71,178 PURE+IMM) | 35–60k | **~10–25** (tool work ~0.5–1M, ~0 agent) | edit family_remap gather + wire reconcile into --hseq | `family_sweep.py --hseq --only 0x801833f0` after the typedef fix — 6 h_norm-identical members; less than ~6/6 means the fix is wrong, not the family. Then `--only 0x80128c98` after the extern fix |
|
||||
| S2 | jr matched-exemplar fams via `jtbl_family_bank` (§53's own lesson): 11 fams / 52 members | 10–18k | ~0 | none | ×1 member of the largest jr family |
|
||||
| S3 | SC07 carve/pin fix (T2 Arm-A +0x20): whale ×4 (3,080 h_exact-identical ins) + 61 SC07 o0 members | 5–15k | ~0 | already scoped in CURRENT_PHASE T2 | ov_SC07_007 symbol-inventory diff → pin → re-extract |
|
||||
| S4 | Draft-recovery on 39 draft-exemplar fams (382 members / 77,380 ins incl. walls) + the 2 resident TU-plumbing MATCHes | 10–25k | ~10–50 | T1a driver exists | `w6_diag.py`-shape run on one stored draft per family, read the error |
|
||||
| S5 | **Re-aim waves at open-only h_norm cluster exemplars, sweep after every bank**: 1,689 clusters / 326k ins | up to 326k | **~130–150 blended** (2.7× multiplier) | S1 must land first or propagation never realizes; regen map per crack | one 8-target wave from the ×16/×7/×6 clusters; measure realized propagation |
|
||||
| S6 | The two GIANT exemplar walls (50,094 ins / 2 cracks) | 50k | ~50–200, high variance | §17 pins, §52; prior close=91/110 | time-boxed siege, hard budget stop |
|
||||
| S7 | Singleton tail (232k) + main (~50k; regenerate sig + DefineFunctions first, then a 5-fn PsyQ-4.0 calibration probe to price it) | remainder | ~490+ | main sig regen | 5-fn main probe wave |
|
||||
|
||||
S1–S4 ≈ **80–115k instructions moved from the 490-t/ins column to ~0** (11–15% of everything left), and S1 restores the propagation multiplier that makes every later wave ~3× cheaper.
|
||||
|
||||
## Verification of the S38 numbers
|
||||
Distribution survives (I measure 5,793 fams / 709,920 ins at HEAD vs claimed 5,792/701,508 — snapshot drift; the 100+ band is 74,741 ins exactly). The 147-family pool is real (148 / 1,585 / 75,383 at HEAD). Fleet 96.29/94.2/88.9 confirmed. What does NOT survive: "chance collision" (all four refuted), "ledgered not-templatable" (both contradicted), "free-sweep 0/0 undiagnosed" (both diagnosed, on disk, PLUMBING), and "the ×138 era is over."
|
||||
|
||||
## False-wall watch list
|
||||
1. CURRENT_PHASE.md:228's ×138-era paragraph (S38) — rests entirely on the two undiagnosed zeros; should be rewritten against the classified files. *(DONE — struck in commit `d053d71a2`.)*
|
||||
2. The `0x80175820`/`0x80132018` "not-templatable" ledger entries — provenance predates or ignores the current classifier.
|
||||
3. Any post-S1 sweep still returning 0% on an h_norm-identical family is a NEW undiagnosed zero — the one-line h_norm check against the sig files should become a standard pre-probe step (it would have predicted both of today's zeros as compile-error certainties before spending the probe).
|
||||
|
||||
Key files: `.run/hseq_failed.ov_SC03_097.0.classified.txt` and `.52.classified.txt` (the smoking guns), `.run/sweep/ov_SC03_097/func_801813B4.c` (the typedef-less draft), `tools/family_remap.py:213` (classify_member), `tools/sig_image.py:134` (norm_stream's conservative-miss guarantee), `.run/fable_frontier/pool_ovres.json` (computed h_exact/h_norm pools).
|
||||
File diff suppressed because one or more lines are too long
@@ -1,398 +0,0 @@
|
||||
0: 27bdffc0 addiu sp,sp,-64
|
||||
1: afb70034 sw s7,52(sp)
|
||||
2: 0080b821 move s7,a0
|
||||
3: afb40028 sw s4,40(sp)
|
||||
4: 00a0a021 move s4,a1
|
||||
5: afb5002c sw s5,44(sp)
|
||||
6: 00c0a821 move s5,a2
|
||||
7: afb20020 sw s2,32(sp)
|
||||
8: 00e09021 move s2,a3
|
||||
9: afbe0038 sw s8,56(sp)
|
||||
10: 02e0f021 move s8,s7
|
||||
11: afbf003c sw ra,60(sp)
|
||||
12: afb60030 sw s6,48(sp)
|
||||
13: afb30024 sw s3,36(sp)
|
||||
14: afb1001c sw s1,28(sp)
|
||||
15: afb00018 sw s0,24(sp)
|
||||
16: 86830002 lh v1,2(s4)
|
||||
17: 3c050000 lui a1,0x0
|
||||
18: 8ca50000 lw a1,0(a1)
|
||||
19: 86820004 lh v0,4(s4)
|
||||
20: 000318c0 sll v1,v1,0x3
|
||||
21: 02a39821 addu s3,s5,v1
|
||||
22: 00021080 sll v0,v0,0x2
|
||||
23: 00521021 addu v0,v0,s2
|
||||
24: 8c560000 lw s6,0(v0)
|
||||
25: 02602021 move a0,s3
|
||||
26: 0c000000 jal 0 <func_80133CD4>
|
||||
27: 02c03021 move a2,s6
|
||||
28: 04410164 bgez v0,604 <func_80133CD4+0x604>
|
||||
29: 00001021 move v0,zero
|
||||
30: 02602021 move a0,s3
|
||||
31: 3c050000 lui a1,0x0
|
||||
32: 8ca50000 lw a1,0(a1)
|
||||
33: 0c000000 jal 0 <func_80133CD4>
|
||||
34: 02c03021 move a2,s6
|
||||
35: 00408821 move s1,v0
|
||||
36: 0620008e bltz s1,2cc <func_80133CD4+0x2cc>
|
||||
37: 02602021 move a0,s3
|
||||
38: 3c050000 lui a1,0x0
|
||||
39: 8ca50000 lw a1,0(a1)
|
||||
40: 0c000000 jal 0 <func_80133CD4>
|
||||
41: 00003021 move a2,zero
|
||||
42: 3c070000 lui a3,0x0
|
||||
43: 8ce70000 lw a3,0(a3)
|
||||
44: 00000000 nop
|
||||
45: 84e30000 lh v1,0(a3)
|
||||
46: 00113023 negu a2,s1
|
||||
47: 00c30018 mult a2,v1
|
||||
48: 00001812 mflo v1
|
||||
49: 00408021 move s0,v0
|
||||
50: 00000000 nop
|
||||
51: 0070001a div zero,v1,s0
|
||||
52: 16000002 bnez s0,dc <func_80133CD4+0xdc>
|
||||
53: 00000000 nop
|
||||
54: 0007000d break 0x7
|
||||
55: 2401ffff li at,-1
|
||||
56: 16010004 bne s0,at,f4 <func_80133CD4+0xf4>
|
||||
57: 3c018000 lui at,0x8000
|
||||
58: 14610002 bne v1,at,f4 <func_80133CD4+0xf4>
|
||||
59: 00000000 nop
|
||||
60: 0006000d break 0x6
|
||||
61: 00001812 mflo v1
|
||||
62: 3c040000 lui a0,0x0
|
||||
63: 8c840000 lw a0,0(a0)
|
||||
64: 00000000 nop
|
||||
65: 94820000 lhu v0,0(a0)
|
||||
66: 3c050000 lui a1,0x0
|
||||
67: 8ca50000 lw a1,0(a1)
|
||||
68: 00431021 addu v0,v0,v1
|
||||
69: a4a20000 sh v0,0(a1)
|
||||
70: 84e20002 lh v0,2(a3)
|
||||
71: 00000000 nop
|
||||
72: 00c20018 mult a2,v0
|
||||
73: 00001012 mflo v0
|
||||
74: 00000000 nop
|
||||
75: 00000000 nop
|
||||
76: 0050001a div zero,v0,s0
|
||||
77: 16000002 bnez s0,140 <func_80133CD4+0x140>
|
||||
78: 00000000 nop
|
||||
79: 0007000d break 0x7
|
||||
80: 2401ffff li at,-1
|
||||
81: 16010004 bne s0,at,158 <func_80133CD4+0x158>
|
||||
82: 3c018000 lui at,0x8000
|
||||
83: 14410002 bne v0,at,158 <func_80133CD4+0x158>
|
||||
84: 00000000 nop
|
||||
85: 0006000d break 0x6
|
||||
86: 00001812 mflo v1
|
||||
87: 94820002 lhu v0,2(a0)
|
||||
88: 00000000 nop
|
||||
89: 00431021 addu v0,v0,v1
|
||||
90: a4a20002 sh v0,2(a1)
|
||||
91: 84e20004 lh v0,4(a3)
|
||||
92: 00000000 nop
|
||||
93: 00c20018 mult a2,v0
|
||||
94: 00001012 mflo v0
|
||||
95: 00000000 nop
|
||||
96: 00000000 nop
|
||||
97: 0050001a div zero,v0,s0
|
||||
98: 16000002 bnez s0,194 <func_80133CD4+0x194>
|
||||
99: 00000000 nop
|
||||
100: 0007000d break 0x7
|
||||
101: 2401ffff li at,-1
|
||||
102: 16010004 bne s0,at,1ac <func_80133CD4+0x1ac>
|
||||
103: 3c018000 lui at,0x8000
|
||||
104: 14410002 bne v0,at,1ac <func_80133CD4+0x1ac>
|
||||
105: 00000000 nop
|
||||
106: 0006000d break 0x6
|
||||
107: 00001812 mflo v1
|
||||
108: 94820004 lhu v0,4(a0)
|
||||
109: 02603821 move a3,s3
|
||||
110: 00431021 addu v0,v0,v1
|
||||
111: a4a20004 sh v0,4(a1)
|
||||
112: 86820008 lh v0,8(s4)
|
||||
113: 86840006 lh a0,6(s4)
|
||||
114: 00021080 sll v0,v0,0x2
|
||||
115: 00521021 addu v0,v0,s2
|
||||
116: 000420c0 sll a0,a0,0x3
|
||||
117: 8c460000 lw a2,0(v0)
|
||||
118: 0c000000 jal 0 <func_80133CD4>
|
||||
119: 02a42021 addu a0,s5,a0
|
||||
120: 14400108 bnez v0,604 <func_80133CD4+0x604>
|
||||
121: 00001021 move v0,zero
|
||||
122: 02603821 move a3,s3
|
||||
123: 8682000c lh v0,12(s4)
|
||||
124: 3c050000 lui a1,0x0
|
||||
125: 8ca50000 lw a1,0(a1)
|
||||
126: 8684000a lh a0,10(s4)
|
||||
127: 00021080 sll v0,v0,0x2
|
||||
128: 00521021 addu v0,v0,s2
|
||||
129: 000420c0 sll a0,a0,0x3
|
||||
130: 8c460000 lw a2,0(v0)
|
||||
131: 0c000000 jal 0 <func_80133CD4>
|
||||
132: 02a42021 addu a0,s5,a0
|
||||
133: 144000fb bnez v0,604 <func_80133CD4+0x604>
|
||||
134: 00001021 move v0,zero
|
||||
135: 02603821 move a3,s3
|
||||
136: 86820010 lh v0,16(s4)
|
||||
137: 3c050000 lui a1,0x0
|
||||
138: 8ca50000 lw a1,0(a1)
|
||||
139: 8684000e lh a0,14(s4)
|
||||
140: 00021080 sll v0,v0,0x2
|
||||
141: 00521021 addu v0,v0,s2
|
||||
142: 000420c0 sll a0,a0,0x3
|
||||
143: 8c460000 lw a2,0(v0)
|
||||
144: 0c000000 jal 0 <func_80133CD4>
|
||||
145: 02a42021 addu a0,s5,a0
|
||||
146: 144000ee bnez v0,604 <func_80133CD4+0x604>
|
||||
147: 00001021 move v0,zero
|
||||
148: 00171400 sll v0,s7,0x10
|
||||
149: 0441000f bgez v0,294 <func_80133CD4+0x294>
|
||||
150: 33c20010 andi v0,s8,0x10
|
||||
151: 02603821 move a3,s3
|
||||
152: 86820014 lh v0,20(s4)
|
||||
153: 3c050000 lui a1,0x0
|
||||
154: 8ca50000 lw a1,0(a1)
|
||||
155: 86840012 lh a0,18(s4)
|
||||
156: 00021080 sll v0,v0,0x2
|
||||
157: 00521021 addu v0,v0,s2
|
||||
158: 000420c0 sll a0,a0,0x3
|
||||
159: 8c460000 lw a2,0(v0)
|
||||
160: 0c000000 jal 0 <func_80133CD4>
|
||||
161: 02a42021 addu a0,s5,a0
|
||||
162: 144000de bnez v0,604 <func_80133CD4+0x604>
|
||||
163: 00001021 move v0,zero
|
||||
164: 33c20010 andi v0,s8,0x10
|
||||
165: 10400006 beqz v0,2b0 <func_80133CD4+0x2b0>
|
||||
166: 00000000 nop
|
||||
167: 96820000 lhu v0,0(s4)
|
||||
168: 00000000 nop
|
||||
169: 30420100 andi v0,v0,0x100
|
||||
170: 144000d6 bnez v0,604 <func_80133CD4+0x604>
|
||||
171: 00001021 move v0,zero
|
||||
172: 96830000 lhu v1,0(s4)
|
||||
173: 00000000 nop
|
||||
174: 30620200 andi v0,v1,0x200
|
||||
175: 10400005 beqz v0,2d4 <func_80133CD4+0x2d4>
|
||||
176: 02602021 move a0,s3
|
||||
177: 3c010000 lui at,0x0
|
||||
178: a4230000 sh v1,0(at)
|
||||
179: 08000181 j 604 <func_80133CD4+0x604>
|
||||
180: 00001021 move v0,zero
|
||||
181: 3c050000 lui a1,0x0
|
||||
182: 8ca50000 lw a1,0(a1)
|
||||
183: 0c000000 jal 0 <func_80133CD4>
|
||||
184: 02c03021 move a2,s6
|
||||
185: 3c040000 lui a0,0x0
|
||||
186: 8c840000 lw a0,0(a0)
|
||||
187: 86630000 lh v1,0(s3)
|
||||
188: 00000000 nop
|
||||
189: ac830000 sw v1,0(a0)
|
||||
190: 86630002 lh v1,2(s3)
|
||||
191: 3c080000 lui t0,0x0
|
||||
192: 8d080000 lw t0,0(t0)
|
||||
193: ac830004 sw v1,4(a0)
|
||||
194: 86630004 lh v1,4(s3)
|
||||
195: 00028823 negu s1,v0
|
||||
196: ac830008 sw v1,8(a0)
|
||||
197: c9090000 lwc2 $9,0(t0)
|
||||
198: c90a0004 lwc2 $10,4(t0)
|
||||
199: c90b0008 lwc2 $11,8(t0)
|
||||
200: 00000000 nop
|
||||
201: 00000000 nop
|
||||
202: 4aa00428 c2 0xa00428
|
||||
203: 3c020000 lui v0,0x0
|
||||
204: 8c420000 lw v0,0(v0)
|
||||
205: 00000000 nop
|
||||
206: e8590000 swc2 $25,0(v0)
|
||||
207: e85a0004 swc2 $26,4(v0)
|
||||
208: e85b0008 swc2 $27,8(v0)
|
||||
209: 3c060000 lui a2,0x0
|
||||
210: 8cc60000 lw a2,0(a2)
|
||||
211: 00000000 nop
|
||||
212: 8cc20000 lw v0,0(a2)
|
||||
213: 00000000 nop
|
||||
214: 02220018 mult s1,v0
|
||||
215: 3c020000 lui v0,0x0
|
||||
216: 8c420000 lw v0,0(v0)
|
||||
217: 00000000 nop
|
||||
218: 8c430000 lw v1,0(v0)
|
||||
219: 8c440004 lw a0,4(v0)
|
||||
220: 8c420008 lw v0,8(v0)
|
||||
221: 00002812 mflo a1
|
||||
222: 00641821 addu v1,v1,a0
|
||||
223: 00628021 addu s0,v1,v0
|
||||
224: 00b0001a div zero,a1,s0
|
||||
225: 16000002 bnez s0,390 <func_80133CD4+0x390>
|
||||
226: 00000000 nop
|
||||
227: 0007000d break 0x7
|
||||
228: 2401ffff li at,-1
|
||||
229: 16010004 bne s0,at,3a8 <func_80133CD4+0x3a8>
|
||||
230: 3c018000 lui at,0x8000
|
||||
231: 14a10002 bne a1,at,3a8 <func_80133CD4+0x3a8>
|
||||
232: 00000000 nop
|
||||
233: 0006000d break 0x6
|
||||
234: 00002012 mflo a0
|
||||
235: 3c030000 lui v1,0x0
|
||||
236: 8c630000 lw v1,0(v1)
|
||||
237: 00000000 nop
|
||||
238: 94620000 lhu v0,0(v1)
|
||||
239: 00000000 nop
|
||||
240: 00441021 addu v0,v0,a0
|
||||
241: a4620000 sh v0,0(v1)
|
||||
242: 8cc20004 lw v0,4(a2)
|
||||
243: 00000000 nop
|
||||
244: 02220018 mult s1,v0
|
||||
245: 00001012 mflo v0
|
||||
246: 00000000 nop
|
||||
247: 00000000 nop
|
||||
248: 0050001a div zero,v0,s0
|
||||
249: 16000002 bnez s0,3f0 <func_80133CD4+0x3f0>
|
||||
250: 00000000 nop
|
||||
251: 0007000d break 0x7
|
||||
252: 2401ffff li at,-1
|
||||
253: 16010004 bne s0,at,408 <func_80133CD4+0x408>
|
||||
254: 3c018000 lui at,0x8000
|
||||
255: 14410002 bne v0,at,408 <func_80133CD4+0x408>
|
||||
256: 00000000 nop
|
||||
257: 0006000d break 0x6
|
||||
258: 00002012 mflo a0
|
||||
259: 94620002 lhu v0,2(v1)
|
||||
260: 00000000 nop
|
||||
261: 00441021 addu v0,v0,a0
|
||||
262: a4620002 sh v0,2(v1)
|
||||
263: 8cc20008 lw v0,8(a2)
|
||||
264: 00000000 nop
|
||||
265: 02220018 mult s1,v0
|
||||
266: 00001012 mflo v0
|
||||
267: 00000000 nop
|
||||
268: 00000000 nop
|
||||
269: 0050001a div zero,v0,s0
|
||||
270: 16000002 bnez s0,444 <func_80133CD4+0x444>
|
||||
271: 00000000 nop
|
||||
272: 0007000d break 0x7
|
||||
273: 2401ffff li at,-1
|
||||
274: 16010004 bne s0,at,45c <func_80133CD4+0x45c>
|
||||
275: 3c018000 lui at,0x8000
|
||||
276: 14410002 bne v0,at,45c <func_80133CD4+0x45c>
|
||||
277: 00000000 nop
|
||||
278: 0006000d break 0x6
|
||||
279: 00002812 mflo a1
|
||||
280: 84620000 lh v0,0(v1)
|
||||
281: 84640002 lh a0,2(v1)
|
||||
282: 00028c00 sll s1,v0,0x10
|
||||
283: 94620004 lhu v0,4(v1)
|
||||
284: 00048400 sll s0,a0,0x10
|
||||
285: 00451021 addu v0,v0,a1
|
||||
286: a4620004 sh v0,4(v1)
|
||||
287: 8cc30000 lw v1,0(a2)
|
||||
288: 00029400 sll s2,v0,0x10
|
||||
289: 00031100 sll v0,v1,0x4
|
||||
290: 04410002 bgez v0,494 <func_80133CD4+0x494>
|
||||
291: acc20000 sw v0,0(a2)
|
||||
292: 3631ffff ori s1,s1,0xffff
|
||||
293: 8cc20004 lw v0,4(a2)
|
||||
294: 00000000 nop
|
||||
295: 00021100 sll v0,v0,0x4
|
||||
296: 04410002 bgez v0,4ac <func_80133CD4+0x4ac>
|
||||
297: acc20004 sw v0,4(a2)
|
||||
298: 3610ffff ori s0,s0,0xffff
|
||||
299: 8cc30008 lw v1,8(a2)
|
||||
300: 00000000 nop
|
||||
301: 00031100 sll v0,v1,0x4
|
||||
302: 04410002 bgez v0,4c4 <func_80133CD4+0x4c4>
|
||||
303: acc20008 sw v0,8(a2)
|
||||
304: 3652ffff ori s2,s2,0xffff
|
||||
305: 00031140 sll v0,v1,0x5
|
||||
306: 02429021 addu s2,s2,v0
|
||||
307: 8cc30000 lw v1,0(a2)
|
||||
308: 8cc20004 lw v0,4(a2)
|
||||
309: 00031840 sll v1,v1,0x1
|
||||
310: 02238821 addu s1,s1,v1
|
||||
311: 00021040 sll v0,v0,0x1
|
||||
312: 02028021 addu s0,s0,v0
|
||||
313: 02602021 move a0,s3
|
||||
314: 3c020000 lui v0,0x0
|
||||
315: 8c420000 lw v0,0(v0)
|
||||
316: 02c03021 move a2,s6
|
||||
317: 8c430000 lw v1,0(v0)
|
||||
318: 3c050000 lui a1,0x0
|
||||
319: 8ca50000 lw a1,0(a1)
|
||||
320: 02238821 addu s1,s1,v1
|
||||
321: 8c430004 lw v1,4(v0)
|
||||
322: 8c420008 lw v0,8(v0)
|
||||
323: 02038021 addu s0,s0,v1
|
||||
324: 02429021 addu s2,s2,v0
|
||||
325: 00111403 sra v0,s1,0x10
|
||||
326: a4a20000 sh v0,0(a1)
|
||||
327: 00101403 sra v0,s0,0x10
|
||||
328: a4a20002 sh v0,2(a1)
|
||||
329: 00121403 sra v0,s2,0x10
|
||||
330: 0c000000 jal 0 <func_80133CD4>
|
||||
331: a4a20004 sh v0,4(a1)
|
||||
332: 86630002 lh v1,2(s3)
|
||||
333: 00000000 nop
|
||||
334: 2863f200 slti v1,v1,-3584
|
||||
335: 10600003 beqz v1,54c <func_80133CD4+0x54c>
|
||||
336: 00000000 nop
|
||||
337: 08000154 j 550 <func_80133CD4+0x550>
|
||||
338: 28421800 slti v0,v0,6144
|
||||
339: 28422f00 slti v0,v0,12032
|
||||
340: 1440ffe5 bnez v0,4e8 <func_80133CD4+0x4e8>
|
||||
341: 02602021 move a0,s3
|
||||
342: 86620002 lh v0,2(s3)
|
||||
343: 00000000 nop
|
||||
344: 00401821 move v1,v0
|
||||
345: 2842f435 slti v0,v0,-3019
|
||||
346: 10400013 beqz v0,5b8 <func_80133CD4+0x5b8>
|
||||
347: 00000000 nop
|
||||
348: 3c030000 lui v1,0x0
|
||||
349: 8c630000 lw v1,0(v1)
|
||||
350: 96620002 lhu v0,2(s3)
|
||||
351: 96660000 lhu a2,0(s3)
|
||||
352: a4620006 sh v0,6(v1)
|
||||
353: 96630002 lhu v1,2(s3)
|
||||
354: 96640004 lhu a0,4(s3)
|
||||
355: 96650006 lhu a1,6(s3)
|
||||
356: 3c010000 lui at,0x0
|
||||
357: a4260000 sh a2,0(at)
|
||||
358: 3c010000 lui at,0x0
|
||||
359: a4230000 sh v1,0(at)
|
||||
360: 3c010000 lui at,0x0
|
||||
361: a4240000 sh a0,0(at)
|
||||
362: 3c010000 lui at,0x0
|
||||
363: a4250000 sh a1,0(at)
|
||||
364: 08000181 j 604 <func_80133CD4+0x604>
|
||||
365: 24020001 li v0,1
|
||||
366: 3c020000 lui v0,0x0
|
||||
367: 8c420000 lw v0,0(v0)
|
||||
368: 00000000 nop
|
||||
369: a4430006 sh v1,6(v0)
|
||||
370: 3c050000 lui a1,0x0
|
||||
371: 24a50000 addiu a1,a1,0
|
||||
372: 8a620003 lwl v0,3(s3)
|
||||
373: 9a620000 lwr v0,0(s3)
|
||||
374: 8a630007 lwl v1,7(s3)
|
||||
375: 9a630004 lwr v1,4(s3)
|
||||
376: a8a20003 swl v0,3(a1)
|
||||
377: b8a20000 swr v0,0(a1)
|
||||
378: a8a30007 swl v1,7(a1)
|
||||
379: b8a30004 swr v1,4(a1)
|
||||
380: 92830000 lbu v1,0(s4)
|
||||
381: 00000000 nop
|
||||
382: 14600002 bnez v1,604 <func_80133CD4+0x604>
|
||||
383: 24020001 li v0,1
|
||||
384: 2402ffff li v0,-1
|
||||
385: 8fbf003c lw ra,60(sp)
|
||||
386: 8fbe0038 lw s8,56(sp)
|
||||
387: 8fb70034 lw s7,52(sp)
|
||||
388: 8fb60030 lw s6,48(sp)
|
||||
389: 8fb5002c lw s5,44(sp)
|
||||
390: 8fb40028 lw s4,40(sp)
|
||||
391: 8fb30024 lw s3,36(sp)
|
||||
392: 8fb20020 lw s2,32(sp)
|
||||
393: 8fb1001c lw s1,28(sp)
|
||||
394: 8fb00018 lw s0,24(sp)
|
||||
395: 27bd0040 addiu sp,sp,64
|
||||
396: 03e00008 jr ra
|
||||
397: 00000000 nop
|
||||
@@ -1,399 +0,0 @@
|
||||
0: addiu $sp, $sp, -0x40
|
||||
1: sw $s7, 0x34($sp)
|
||||
2: addu $s7, $a0, $zero
|
||||
3: sw $s4, 0x28($sp)
|
||||
4: addu $s4, $a1, $zero
|
||||
5: sw $s5, 0x2C($sp)
|
||||
6: addu $s5, $a2, $zero
|
||||
7: sw $s2, 0x20($sp)
|
||||
8: addu $s2, $a3, $zero
|
||||
9: sw $fp, 0x38($sp)
|
||||
10: addu $fp, $s7, $zero
|
||||
11: sw $ra, 0x3C($sp)
|
||||
12: sw $s6, 0x30($sp)
|
||||
13: sw $s3, 0x24($sp)
|
||||
14: sw $s1, 0x1C($sp)
|
||||
15: sw $s0, 0x18($sp)
|
||||
16: lh $v1, 0x2($s4)
|
||||
17: lui $a1, %hi(D_801870B0)
|
||||
18: lw $a1, %lo(D_801870B0)($a1)
|
||||
19: lh $v0, 0x4($s4)
|
||||
20: sll $v1, $v1, 3
|
||||
21: addu $s3, $s5, $v1
|
||||
22: sll $v0, $v0, 2
|
||||
23: addu $v0, $v0, $s2
|
||||
24: lw $s6, 0x0($v0)
|
||||
25: addu $a0, $s3, $zero
|
||||
26: jal func_80134310
|
||||
27: addu $a2, $s6, $zero
|
||||
28: bgez $v0, .L801342DC
|
||||
29: addu $v0, $zero, $zero
|
||||
30: addu $a0, $s3, $zero
|
||||
31: lui $a1, %hi(D_801870AC)
|
||||
32: lw $a1, %lo(D_801870AC)($a1)
|
||||
33: jal func_80134310
|
||||
34: addu $a2, $s6, $zero
|
||||
35: addu $s1, $v0, $zero
|
||||
36: bltz $s1, .L80133FA0
|
||||
37: addu $a0, $s3, $zero
|
||||
38: lui $a1, %hi(D_801870B8)
|
||||
39: lw $a1, %lo(D_801870B8)($a1)
|
||||
40: jal func_80134310
|
||||
41: addu $a2, $zero, $zero
|
||||
42: lui $a3, %hi(D_801870B8)
|
||||
43: lw $a3, %lo(D_801870B8)($a3)
|
||||
44: nop
|
||||
45: lh $v1, 0x0($a3)
|
||||
46: negu $a2, $s1
|
||||
47: mult $a2, $v1
|
||||
48: mflo $v1
|
||||
49: addu $s0, $v0, $zero
|
||||
50: nop
|
||||
51: div $zero, $v1, $s0
|
||||
52: bnez $s0, .L80133DB0
|
||||
53: nop
|
||||
54: break 7
|
||||
55: addiu $at, $zero, -0x1
|
||||
56: bne $s0, $at, .L80133DC8
|
||||
57: lui $at, (0x80000000 >> 16)
|
||||
58: bne $v1, $at, .L80133DC8
|
||||
59: nop
|
||||
60: break 6
|
||||
61: mflo $v1
|
||||
62: lui $a0, %hi(D_801870AC)
|
||||
63: lw $a0, %lo(D_801870AC)($a0)
|
||||
64: nop
|
||||
65: lhu $v0, 0x0($a0)
|
||||
66: lui $a1, %hi(D_801870B4)
|
||||
67: lw $a1, %lo(D_801870B4)($a1)
|
||||
68: addu $v0, $v0, $v1
|
||||
69: sh $v0, 0x0($a1)
|
||||
70: lh $v0, 0x2($a3)
|
||||
71: nop
|
||||
72: mult $a2, $v0
|
||||
73: mflo $v0
|
||||
74: nop
|
||||
75: nop
|
||||
76: div $zero, $v0, $s0
|
||||
77: bnez $s0, .L80133E14
|
||||
78: nop
|
||||
79: break 7
|
||||
80: addiu $at, $zero, -0x1
|
||||
81: bne $s0, $at, .L80133E2C
|
||||
82: lui $at, (0x80000000 >> 16)
|
||||
83: bne $v0, $at, .L80133E2C
|
||||
84: nop
|
||||
85: break 6
|
||||
86: mflo $v1
|
||||
87: lhu $v0, 0x2($a0)
|
||||
88: nop
|
||||
89: addu $v0, $v0, $v1
|
||||
90: sh $v0, 0x2($a1)
|
||||
91: lh $v0, 0x4($a3)
|
||||
92: nop
|
||||
93: mult $a2, $v0
|
||||
94: mflo $v0
|
||||
95: nop
|
||||
96: nop
|
||||
97: div $zero, $v0, $s0
|
||||
98: bnez $s0, .L80133E68
|
||||
99: nop
|
||||
100: break 7
|
||||
101: addiu $at, $zero, -0x1
|
||||
102: bne $s0, $at, .L80133E80
|
||||
103: lui $at, (0x80000000 >> 16)
|
||||
104: bne $v0, $at, .L80133E80
|
||||
105: nop
|
||||
106: break 6
|
||||
107: mflo $v1
|
||||
108: lhu $v0, 0x4($a0)
|
||||
109: addu $a3, $s3, $zero
|
||||
110: addu $v0, $v0, $v1
|
||||
111: sh $v0, 0x4($a1)
|
||||
112: lh $v0, 0x8($s4)
|
||||
113: lh $a0, 0x6($s4)
|
||||
114: sll $v0, $v0, 2
|
||||
115: addu $v0, $v0, $s2
|
||||
116: sll $a0, $a0, 3
|
||||
117: lw $a2, 0x0($v0)
|
||||
118: jal func_8013435C
|
||||
119: addu $a0, $s5, $a0
|
||||
120: bnez $v0, .L801342DC
|
||||
121: addu $v0, $zero, $zero
|
||||
122: addu $a3, $s3, $zero
|
||||
123: lh $v0, 0xC($s4)
|
||||
124: lui $a1, %hi(D_801870B4)
|
||||
125: lw $a1, %lo(D_801870B4)($a1)
|
||||
126: lh $a0, 0xA($s4)
|
||||
127: sll $v0, $v0, 2
|
||||
128: addu $v0, $v0, $s2
|
||||
129: sll $a0, $a0, 3
|
||||
130: lw $a2, 0x0($v0)
|
||||
131: jal func_8013435C
|
||||
132: addu $a0, $s5, $a0
|
||||
133: bnez $v0, .L801342DC
|
||||
134: addu $v0, $zero, $zero
|
||||
135: addu $a3, $s3, $zero
|
||||
136: lh $v0, 0x10($s4)
|
||||
137: lui $a1, %hi(D_801870B4)
|
||||
138: lw $a1, %lo(D_801870B4)($a1)
|
||||
139: lh $a0, 0xE($s4)
|
||||
140: sll $v0, $v0, 2
|
||||
141: addu $v0, $v0, $s2
|
||||
142: sll $a0, $a0, 3
|
||||
143: lw $a2, 0x0($v0)
|
||||
144: jal func_8013435C
|
||||
145: addu $a0, $s5, $a0
|
||||
146: bnez $v0, .L801342DC
|
||||
147: addu $v0, $zero, $zero
|
||||
148: sll $v0, $s7, 16
|
||||
149: bgez $v0, .L80133F68
|
||||
150: andi $v0, $fp, 0x10
|
||||
151: addu $a3, $s3, $zero
|
||||
152: lh $v0, 0x14($s4)
|
||||
153: lui $a1, %hi(D_801870B4)
|
||||
154: lw $a1, %lo(D_801870B4)($a1)
|
||||
155: lh $a0, 0x12($s4)
|
||||
156: sll $v0, $v0, 2
|
||||
157: addu $v0, $v0, $s2
|
||||
158: sll $a0, $a0, 3
|
||||
159: lw $a2, 0x0($v0)
|
||||
160: jal func_8013435C
|
||||
161: addu $a0, $s5, $a0
|
||||
162: bnez $v0, .L801342DC
|
||||
163: addu $v0, $zero, $zero
|
||||
164: andi $v0, $fp, 0x10
|
||||
165: beqz $v0, .L80133F84
|
||||
166: nop
|
||||
167: lhu $v0, 0x0($s4)
|
||||
168: nop
|
||||
169: andi $v0, $v0, 0x100
|
||||
170: bnez $v0, .L801342DC
|
||||
171: addu $v0, $zero, $zero
|
||||
172: lhu $v1, 0x0($s4)
|
||||
173: nop
|
||||
174: andi $v0, $v1, 0x200
|
||||
175: beqz $v0, .L80133FA8
|
||||
176: addu $a0, $s3, $zero
|
||||
177: lui $at, %hi(D_801D9500)
|
||||
178: sh $v1, %lo(D_801D9500)($at)
|
||||
179: j .L801342DC
|
||||
180: addu $v0, $zero, $zero
|
||||
181: lui $a1, %hi(D_801870B0)
|
||||
182: lw $a1, %lo(D_801870B0)($a1)
|
||||
183: jal func_80134310
|
||||
184: addu $a2, $s6, $zero
|
||||
185: lui $a0, %hi(D_801870C0)
|
||||
186: lw $a0, %lo(D_801870C0)($a0)
|
||||
187: lh $v1, 0x0($s3)
|
||||
188: lui $t0, %hi(D_801870C0)
|
||||
189: lw $t0, %lo(D_801870C0)($t0)
|
||||
190: sw $v1, 0x0($a0)
|
||||
191: lh $v1, 0x2($s3)
|
||||
192: nop
|
||||
193: sw $v1, 0x4($a0)
|
||||
194: lh $v1, 0x4($s3)
|
||||
195: negu $s1, $v0
|
||||
196: sw $v1, 0x8($a0)
|
||||
197: lwc2 $9, 0x0($t0)
|
||||
198: lwc2 $10, 0x4($t0)
|
||||
199: lwc2 $11, 0x8($t0)
|
||||
200: nop
|
||||
201: nop
|
||||
202: sqr 0
|
||||
203: lui $t0, %hi(D_801870C4)
|
||||
204: lw $t0, %lo(D_801870C4)($t0)
|
||||
205: nop
|
||||
206: swc2 $25, 0x0($t0)
|
||||
207: swc2 $26, 0x4($t0) /* handwritten instruction */
|
||||
208: swc2 $27, 0x8($t0) /* handwritten instruction */
|
||||
209: lui $a2, %hi(D_801870C0)
|
||||
210: lw $a2, %lo(D_801870C0)($a2)
|
||||
211: nop
|
||||
212: lw $v0, 0x0($a2)
|
||||
213: nop
|
||||
214: mult $s1, $v0
|
||||
215: lui $v0, %hi(D_801870C4)
|
||||
216: lw $v0, %lo(D_801870C4)($v0)
|
||||
217: nop
|
||||
218: lw $v1, 0x0($v0)
|
||||
219: lw $a0, 0x4($v0)
|
||||
220: lw $v0, 0x8($v0)
|
||||
221: mflo $a1
|
||||
222: addu $v1, $v1, $a0
|
||||
223: addu $s0, $v1, $v0
|
||||
224: div $zero, $a1, $s0
|
||||
225: bnez $s0, .L80134064
|
||||
226: nop
|
||||
227: break 7
|
||||
228: addiu $at, $zero, -0x1
|
||||
229: bne $s0, $at, .L8013407C
|
||||
230: lui $at, (0x80000000 >> 16)
|
||||
231: bne $a1, $at, .L8013407C
|
||||
232: nop
|
||||
233: break 6
|
||||
234: mflo $v1
|
||||
235: lui $a0, %hi(D_801870B0)
|
||||
236: lw $a0, %lo(D_801870B0)($a0)
|
||||
237: nop
|
||||
238: lhu $v0, 0x0($a0)
|
||||
239: nop
|
||||
240: addu $v0, $v0, $v1
|
||||
241: sh $v0, 0x0($a0)
|
||||
242: lw $v0, 0x4($a2)
|
||||
243: nop
|
||||
244: mult $s1, $v0
|
||||
245: mflo $v0
|
||||
246: nop
|
||||
247: nop
|
||||
248: div $zero, $v0, $s0
|
||||
249: bnez $s0, .L801340C4
|
||||
250: nop
|
||||
251: break 7
|
||||
252: addiu $at, $zero, -0x1
|
||||
253: bne $s0, $at, .L801340DC
|
||||
254: lui $at, (0x80000000 >> 16)
|
||||
255: bne $v0, $at, .L801340DC
|
||||
256: nop
|
||||
257: break 6
|
||||
258: mflo $v1
|
||||
259: lhu $v0, 0x2($a0)
|
||||
260: nop
|
||||
261: addu $v0, $v0, $v1
|
||||
262: sh $v0, 0x2($a0)
|
||||
263: lw $v0, 0x8($a2)
|
||||
264: nop
|
||||
265: mult $s1, $v0
|
||||
266: mflo $v0
|
||||
267: nop
|
||||
268: nop
|
||||
269: div $zero, $v0, $s0
|
||||
270: bnez $s0, .L80134118
|
||||
271: nop
|
||||
272: break 7
|
||||
273: addiu $at, $zero, -0x1
|
||||
274: bne $s0, $at, .L80134130
|
||||
275: lui $at, (0x80000000 >> 16)
|
||||
276: bne $v0, $at, .L80134130
|
||||
277: nop
|
||||
278: break 6
|
||||
279: mflo $a1
|
||||
280: lh $v0, 0x0($a0)
|
||||
281: nop
|
||||
282: sll $s1, $v0, 16
|
||||
283: lh $v0, 0x2($a0)
|
||||
284: lhu $v1, 0x4($a0)
|
||||
285: sll $s0, $v0, 16
|
||||
286: addu $v1, $v1, $a1
|
||||
287: sh $v1, 0x4($a0)
|
||||
288: lw $v0, 0x0($a2)
|
||||
289: sll $s2, $v1, 16
|
||||
290: sll $v0, $v0, 4
|
||||
291: bgez $v0, .L8013416C
|
||||
292: sw $v0, 0x0($a2)
|
||||
293: ori $s1, $s1, 0xFFFF
|
||||
294: lw $v0, 0x4($a2)
|
||||
295: nop
|
||||
296: sll $v0, $v0, 4
|
||||
297: bgez $v0, .L80134184
|
||||
298: sw $v0, 0x4($a2)
|
||||
299: ori $s0, $s0, 0xFFFF
|
||||
300: lw $v1, 0x8($a2)
|
||||
301: nop
|
||||
302: sll $v0, $v1, 4
|
||||
303: bgez $v0, .L8013419C
|
||||
304: sw $v0, 0x8($a2)
|
||||
305: ori $s2, $s2, 0xFFFF
|
||||
306: sll $v0, $v1, 5
|
||||
307: addu $s2, $s2, $v0
|
||||
308: lw $v1, 0x0($a2)
|
||||
309: lw $v0, 0x4($a2)
|
||||
310: sll $v1, $v1, 1
|
||||
311: addu $s1, $s1, $v1
|
||||
312: sll $v0, $v0, 1
|
||||
313: addu $s0, $s0, $v0
|
||||
314: addu $a0, $s3, $zero
|
||||
315: lui $v0, %hi(D_801870C0)
|
||||
316: lw $v0, %lo(D_801870C0)($v0)
|
||||
317: addu $a2, $s6, $zero
|
||||
318: lw $v1, 0x0($v0)
|
||||
319: lui $a1, %hi(D_801870B0)
|
||||
320: lw $a1, %lo(D_801870B0)($a1)
|
||||
321: addu $s1, $s1, $v1
|
||||
322: lw $v1, 0x4($v0)
|
||||
323: lw $v0, 0x8($v0)
|
||||
324: addu $s0, $s0, $v1
|
||||
325: addu $s2, $s2, $v0
|
||||
326: sra $v0, $s1, 16
|
||||
327: sh $v0, 0x0($a1)
|
||||
328: sra $v0, $s0, 16
|
||||
329: sh $v0, 0x2($a1)
|
||||
330: sra $v0, $s2, 16
|
||||
331: jal func_80134310
|
||||
332: sh $v0, 0x4($a1)
|
||||
333: lh $v1, 0x2($s3)
|
||||
334: nop
|
||||
335: slti $v1, $v1, -0xE00
|
||||
336: beqz $v1, .L80134224
|
||||
337: nop
|
||||
338: j .L80134228
|
||||
339: slti $v0, $v0, 0x1800
|
||||
340: slti $v0, $v0, 0x2F00
|
||||
341: bnez $v0, .L801341C0
|
||||
342: addu $a0, $s3, $zero
|
||||
343: lh $v0, 0x2($s3)
|
||||
344: nop
|
||||
345: addu $v1, $v0, $zero
|
||||
346: slti $v0, $v0, -0xBCB
|
||||
347: bnez $v0, .L80134298
|
||||
348: nop
|
||||
349: lui $v0, %hi(D_801870AC)
|
||||
350: lw $v0, %lo(D_801870AC)($v0)
|
||||
351: nop
|
||||
352: sh $v1, 0x6($v0)
|
||||
353: lui $a1, %hi(D_801152B0)
|
||||
354: addiu $a1, $a1, %lo(D_801152B0)
|
||||
355: lwl $v0, 0x3($s3)
|
||||
356: lwr $v0, 0x0($s3)
|
||||
357: lwl $v1, 0x7($s3)
|
||||
358: lwr $v1, 0x4($s3)
|
||||
359: swl $v0, 0x3($a1)
|
||||
360: swr $v0, 0x0($a1)
|
||||
361: swl $v1, 0x7($a1)
|
||||
362: swr $v1, 0x4($a1)
|
||||
363: lbu $v0, 0x0($s4)
|
||||
364: nop
|
||||
365: bnez $v0, .L801342DC
|
||||
366: addiu $v0, $zero, 0x1
|
||||
367: j .L801342DC
|
||||
368: addiu $v0, $zero, -0x1
|
||||
369: lhu $v0, 0x0($s3)
|
||||
370: lui $v1, %hi(D_801870B0)
|
||||
371: lw $v1, %lo(D_801870B0)($v1)
|
||||
372: lui $at, %hi(D_801152A8)
|
||||
373: sh $v0, %lo(D_801152A8)($at)
|
||||
374: lhu $v0, 0x2($s3)
|
||||
375: nop
|
||||
376: sh $v0, 0x6($v1)
|
||||
377: lui $at, %hi(D_801152AA)
|
||||
378: sh $v0, %lo(D_801152AA)($at)
|
||||
379: lhu $v0, 0x4($s3)
|
||||
380: lui $at, %hi(D_801152AC)
|
||||
381: sh $v0, %lo(D_801152AC)($at)
|
||||
382: lhu $v0, 0x6($s3)
|
||||
383: lui $at, %hi(D_801152AE)
|
||||
384: sh $v0, %lo(D_801152AE)($at)
|
||||
385: addiu $v0, $zero, 0x1
|
||||
386: lw $ra, 0x3C($sp)
|
||||
387: lw $fp, 0x38($sp)
|
||||
388: lw $s7, 0x34($sp)
|
||||
389: lw $s6, 0x30($sp)
|
||||
390: lw $s5, 0x2C($sp)
|
||||
391: lw $s4, 0x28($sp)
|
||||
392: lw $s3, 0x24($sp)
|
||||
393: lw $s2, 0x20($sp)
|
||||
394: lw $s1, 0x1C($sp)
|
||||
395: lw $s0, 0x18($sp)
|
||||
396: addiu $sp, $sp, 0x40
|
||||
397: jr $ra
|
||||
398: nop
|
||||
@@ -1,103 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""S2 — sweep the has_mid_jr MATCHED-EXEMPLAR families via the carve path (jtbl_family_bank).
|
||||
|
||||
WHY THIS EXISTS SEPARATELY FROM family_sweep --hseq:
|
||||
`family_sweep --hseq` REFUSES has_mid_jr families by design (§53 interlock). That refusal is
|
||||
correct — their exemplars only banked because a jump-table carve preceded the splice, and a 0% from
|
||||
the carve-less path is a TOOL ARTIFACT, which is exactly what manufactured the Phase-26 "structural
|
||||
families ~0%" doctrine and steered two phases of strategy. So the families the interlock skips are
|
||||
not dead; they are simply addressed to a different tool. This driver is that tool's front end.
|
||||
|
||||
DERIVED, NOT TRANSCRIBED (§138 rule 4 + R33):
|
||||
- the family set = every manifest family with has_mid_jr AND a matched exemplar;
|
||||
- the members = those still in corpus.stubs (the map's `members` list is unmatched-only, but a
|
||||
member can be banked between a map regen and this run, so re-check);
|
||||
- NB a JUST-BANKED head leaves `members` and becomes `exemplar.kind='matched'` — that is why the
|
||||
family is looked up by its EXEMPLAR, not by scanning member lists.
|
||||
|
||||
--raw is passed because these exemplars banked through harvest_verify's post-carve reconcile, i.e.
|
||||
at the `reconciled` stage, and a reconciled body is TU-specific (§41c: uniquified type names,
|
||||
TU-targeted casts). extract_unit would hand the sweep a polluted template and every sibling would
|
||||
gate-fail. jtbl_family_bank's own docstring records this (func_80178D40: 0/4 until --raw).
|
||||
|
||||
COMMITS PER FAMILY because jtbl_family_bank REFUSES a dirty tree — correctly: its per-sibling revert
|
||||
restores from HEAD, so an uncommitted prior family would be destroyed by the next family's first
|
||||
failure. R22 runs once over the whole batch afterwards.
|
||||
|
||||
Usage: jr_family_sweep.py [--dry] [--limit N] [--raw-dir DIR]
|
||||
"""
|
||||
import sys, os, json, glob, subprocess
|
||||
sys.path.insert(0, 'tools')
|
||||
import corpus
|
||||
|
||||
DRY = '--dry' in sys.argv
|
||||
LIMIT = int(sys.argv[sys.argv.index('--limit') + 1]) if '--limit' in sys.argv else None
|
||||
RAWD = sys.argv[sys.argv.index('--raw-dir') + 1] if '--raw-dir' in sys.argv else '.run/w6'
|
||||
|
||||
WALLS = {0x801412a8, 0x80178004, 0x80144b9c}
|
||||
LEDGERED = {0x8017c294, 0x8017f7b4, 0x801898e4, 0x80186e24, 0x801758fc, 0x80132018, 0x8018a808}
|
||||
|
||||
fam = json.load(open('.run/family_hseq.json'))['families']
|
||||
_sc = {}
|
||||
def stubs(ov):
|
||||
if ov not in _sc:
|
||||
try: _sc[ov] = corpus.stubs(ov)
|
||||
except Exception: _sc[ov] = {}
|
||||
return _sc[ov]
|
||||
|
||||
targets = []
|
||||
for f in fam:
|
||||
if not f.get('has_mid_jr') or f['exemplar'].get('kind') not in ('matched', 'matched-ov077'):
|
||||
continue
|
||||
ex_ov, ex_addr = f['exemplar']['ov'], int(f['exemplar']['addr'], 16)
|
||||
if ex_addr in WALLS | LEDGERED:
|
||||
continue
|
||||
members = [[ov, hex(int(a, 16))] for ov, a in f['members']
|
||||
if int(a, 16) in stubs(ov) and (ov, int(a, 16)) != (ex_ov, ex_addr)]
|
||||
if not members:
|
||||
continue
|
||||
targets.append((f['nins'] * len(members), f, ex_ov, ex_addr, members))
|
||||
|
||||
targets.sort(key=lambda t: -t[0])
|
||||
if LIMIT:
|
||||
targets = targets[:LIMIT]
|
||||
|
||||
print(f"{'exemplar':>12} {'overlay':<14} {'nins':>5} {'open':>5} {'templ ins':>10} raw-seed")
|
||||
tot = 0
|
||||
for ti, f, ex_ov, ex_addr, members in targets:
|
||||
raw = os.path.join(RAWD, ex_ov, f'func_{ex_addr:08X}.c')
|
||||
print(f" 0x{ex_addr:08x} {ex_ov:<14} {f['nins']:>5} {len(members):>5} {ti:>10,} "
|
||||
f"{'yes' if os.path.exists(raw) else 'NO (uses banked unit)'}")
|
||||
tot += ti
|
||||
print(f"\nTOTAL: {len(targets)} jr matched-exemplar families / {tot:,} open templatable ins")
|
||||
if DRY:
|
||||
sys.exit(0)
|
||||
|
||||
os.makedirs('.run/jrprop', exist_ok=True)
|
||||
for ti, f, ex_ov, ex_addr, members in targets:
|
||||
fn = f'func_{ex_addr:08X}'
|
||||
mf = f'.run/jrprop/{fn}_members.json'
|
||||
json.dump(members, open(mf, 'w'))
|
||||
cmd = ['.venv/bin/python', 'tools/jtbl_family_bank.py', fn, ex_ov, hex(ex_addr), mf]
|
||||
raw = os.path.join(RAWD, ex_ov, f'{fn}.c')
|
||||
if os.path.exists(raw):
|
||||
cmd += ['--raw', raw]
|
||||
print(f"\n== {fn} ({f['nins']} ins x {len(members)} open) ==", flush=True)
|
||||
r = subprocess.run(cmd, capture_output=True, text=True)
|
||||
out = (r.stdout or '') + (r.stderr or '')
|
||||
open(f'.run/jrprop/{fn}.log', 'w').write(out)
|
||||
for l in [x for x in out.strip().splitlines() if x.strip()][-3:]:
|
||||
print(' ', l[:170])
|
||||
dirty = subprocess.run(['git', 'status', '--porcelain', '--', 'src', 'config'],
|
||||
capture_output=True, text=True).stdout.strip()
|
||||
if dirty:
|
||||
subprocess.run(['git', 'add', '-A', 'src', 'config'], check=True)
|
||||
subprocess.run(['git', 'commit', '-q', '-F', '-'], text=True, check=True, input=(
|
||||
f"feat(phase-30 S38/S2): jr-family sweep — {fn} x{len(members)} sibling slots\n\n"
|
||||
f"jtbl_family_bank (the §53 carve path; family_sweep --hseq refuses has_mid_jr families\n"
|
||||
f"BY DESIGN — a 0% from the carve-less tool is an artifact, not a wall). Each sibling\n"
|
||||
f"individually byte-gated: carve -> extract -> remap -> whole-binary build, kept iff\n"
|
||||
f"byte-identical else reverted. Committed per family because jtbl_family_bank requires a\n"
|
||||
f"clean tree between families. R22 clean-fleet runs once over the batch.\n"))
|
||||
print(f" committed ({len(dirty.splitlines())} paths)")
|
||||
print("\nDONE — now run R22: make clean && make extract-all && make check-all")
|
||||
@@ -1,221 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# TWO PATHS, ONE SCRIPT: this file is tracked at BOTH .run/maintenance.sh and
|
||||
# tools/lanes/maintenance.sh, and `bash .run/maintenance.sh` is what actually runs. They diverged
|
||||
# once (P31 S59->S60): tools/lanes/ held a pre-S59 copy, an edit landed there, and copying it over
|
||||
# .run/ silently reverted the R47 shape filter, the R48 (binary,fn) keying, reloc --fix,
|
||||
# rtu_second_chance and fix_tu_ret_decls. EDIT ONE, COPY TO THE OTHER, DIFF BOTH BEFORE COMMITTING.
|
||||
# The FREE lane on a loop: re-run the A-prop sibling remap whenever the gater is idle.
|
||||
#
|
||||
# It compounds — every exemplar the waves bank creates new PURE seeds — and costs zero model
|
||||
# tokens. Measured: 390 banked on the first pass, 338 NEW members appeared on the second after a
|
||||
# day of banking. Only runs when .run/ready/ is empty, so it never competes with a wave's gate.
|
||||
set -u
|
||||
cd /home/musashi/bfm-decomp
|
||||
say(){ echo "[$(date +%H:%M:%S)] [maint] $*"; }
|
||||
while [ ! -e .run/ox_campaign.stop ]; do
|
||||
# A pre-CHECK is not a lock. This one raced: it saw an empty ready queue during a gater bounce,
|
||||
# started, and then a wave was queued — so two sweeps ran at once (measured P31 S58). Per-binary
|
||||
# flocks keep each BUILD safe, but both lanes commit, so a stale staged body from one lane can
|
||||
# revert the other lane's bank. Hold the same draw lock the gater takes, so gates never overlap.
|
||||
if [ -n "$(ls .run/ready/ 2>/dev/null)" ] || pgrep -f 'tools/sweep_parallel' >/dev/null; then
|
||||
sleep 300; continue
|
||||
fi
|
||||
# EXEMPLAR-COUNT TRIGGER, not a timer. The A-prop pool only refills when waves bank NEW
|
||||
# exemplars that create fresh PURE seeds; on a 45-minute timer it re-swept an unchanged
|
||||
# population and banked 390 -> 7 -> 0 -> 0 (P31 S58), holding a sweep slot and the draw lock for
|
||||
# ~25 minutes each pass to do nothing. Wait for real new banks before spending the machine.
|
||||
# Count BANKED FUNCTIONS, not commits. The gater makes ONE commit per wave, so wave `av`'s 428
|
||||
# banked functions registered as 4 revisions — a 12-commit threshold meant ~12 WAVES (hours),
|
||||
# not "enough new exemplars to refill the pool". The pool refills per EXEMPLAR, so that is the
|
||||
# unit to threshold on. (Miscalibration caught P31 S58, ~2h after the trigger was introduced.)
|
||||
NOW=$(git rev-list --count HEAD)
|
||||
LAST=$(cat .run/maint_last_rev 2>/dev/null || echo 0)
|
||||
NEWFN=$(git log -$(( NOW - LAST > 0 ? NOW - LAST : 1 )) --format=%s 2>/dev/null \
|
||||
| grep -oP '— \K[0-9]+(?= banked)' | paste -sd+ | bc 2>/dev/null || echo 0)
|
||||
NEWFN=${NEWFN:-0}
|
||||
# THRESHOLD 150 -> 50 (Drew, P31 S59): the A-prop pipeline was rebuilt to consume every
|
||||
# verdict layer and the lane now also carries the free reject-recovery and the periodic
|
||||
# fleet R22, so a pass is worth running on a smaller refill than when it only re-swept an
|
||||
# unchanged sibling pool. 150 was tuned for the old dead lane.
|
||||
if [ "$NEWFN" -lt 50 ]; then
|
||||
say "only $NEWFN functions banked since the last pass (need 50) — skipping"
|
||||
sleep 1800; continue
|
||||
fi
|
||||
echo "$NOW" > .run/maint_last_rev
|
||||
say "gater idle and $NEWFN new functions banked — running the free A-prop sibling lane"
|
||||
.venv/bin/python tools/family_cousins.py --aprop-cards 2>&1 | tail -1
|
||||
.venv/bin/python tools/aprop_autodraft.py --outdir .run/aprop_maint --slate .run/aprop_maint_slate.json 2>&1 | tail -1
|
||||
.venv/bin/python - <<'PY'
|
||||
import json
|
||||
s=json.load(open('.run/aprop_maint_slate.json'))
|
||||
json.dump([{'fn':r['fn'],'binary':r['binary'],'draft':r['draft']} for r in s],
|
||||
open('.run/reloc_maint.json','w'), indent=1)
|
||||
print('drafts:',len(s))
|
||||
PY
|
||||
.venv/bin/python tools/reloc_identity.py --batch .run/reloc_maint.json -j 12 --out .run/reloc_maint.out.json 2>&1 | tail -1
|
||||
# MECHANICAL SYMBOL REPAIR (S59): an unambiguous reloc MISMATCH is a RENAME, not a reject —
|
||||
# --fix rewrites the draft in place (it refuses ambiguity, R39) and the re-check below refreshes
|
||||
# the verdicts so a repaired draft stages on this same pass. Measured: 4 of 4 MISMATCHes of the
|
||||
# first fixed batch repaired to AGREE/MATCH this way.
|
||||
.venv/bin/python - <<'PY'
|
||||
import json, subprocess
|
||||
res = json.load(open('.run/reloc_maint.out.json'))
|
||||
mm = [r for r in res if r.get('status') == 'MISMATCH']
|
||||
if mm:
|
||||
rows = {(r['binary'], r['fn']) for r in mm}
|
||||
batch = [r for r in json.load(open('.run/reloc_maint.json')) if (r['binary'], r['fn']) in rows]
|
||||
json.dump(batch, open('.run/reloc_maint_mm.json', 'w'), indent=1)
|
||||
subprocess.run(['.venv/bin/python', 'tools/reloc_identity.py', '--batch',
|
||||
'.run/reloc_maint_mm.json', '-j', '4', '--fix'], capture_output=True)
|
||||
p = subprocess.run(['.venv/bin/python', 'tools/reloc_identity.py', '--batch',
|
||||
'.run/reloc_maint_mm.json', '-j', '4', '--out',
|
||||
'.run/reloc_maint_mm.out.json'], capture_output=True)
|
||||
fixed = {(r['binary'], r['fn']): r for r in json.load(open('.run/reloc_maint_mm.out.json'))}
|
||||
res = [fixed.get((r.get('binary'), r['fn']), r) for r in res]
|
||||
json.dump(res, open('.run/reloc_maint.out.json', 'w'), indent=1)
|
||||
n = sum(1 for r in fixed.values() if r['status'] == 'AGREE')
|
||||
print(f'reloc --fix: {n}/{len(mm)} MISMATCH draft(s) repaired to AGREE')
|
||||
PY
|
||||
.venv/bin/python - <<'PY'
|
||||
import json,os,shutil,collections
|
||||
res=json.load(open('.run/reloc_maint.out.json'))
|
||||
# STAGE ONLY WHAT CAN BANK (S59, measured). status==AGREE alone let 82 shape-DIFF drafts through
|
||||
# — reloc AGREE says the SYMBOLS agree, shape==MATCH says the INSTRUCTIONS do; a shape-DIFF draft
|
||||
# cannot be byte-identical, so each one staged is a whole-binary build spent to learn what
|
||||
# match_one already printed. Three consecutive 0-bank passes gated 82 of these every 45 minutes.
|
||||
# Key by (binary, fn): overlays share function NAMES across binaries (func_80162CCC exists in
|
||||
# main AND ov_MAIN_012), and an fn-keyed set stages every same-named draft when ONE agrees.
|
||||
ok={(r.get('binary'), r['fn']) for r in res
|
||||
if r.get('status') in ('AGREE','UNRESOLVED') and r.get('shape')=='MATCH'}
|
||||
sla=json.load(open('.run/aprop_maint_slate.json'))
|
||||
sel=[r for r in sla if (r['binary'], r['fn']) in ok]
|
||||
dropped=collections.Counter()
|
||||
for r in res:
|
||||
if (r.get('binary'), r['fn']) not in ok:
|
||||
dropped[f"{r.get('status')}/{r.get('shape') or '-'}"] += 1
|
||||
shutil.rmtree('.run/sweep_maint', ignore_errors=True)
|
||||
for r in sel:
|
||||
d=f".run/sweep_maint/{r['binary']}"; os.makedirs(d, exist_ok=True)
|
||||
shutil.copy(r['draft'], f"{d}/{r['fn']}.c")
|
||||
print('staged', len(sel), 'of', len(sla), '; dropped by class:', dict(dropped))
|
||||
PY
|
||||
# SECOND CHANCE FOR STANDALONE COMPILE-FAILS (P31 S59). reloc_identity compiles each draft
|
||||
# STANDALONE, but the draft is written to land in a TU that provides typedefs/decls the
|
||||
# standalone compile lacks — the wrong oracle for the question (R33). Re-judge those against the
|
||||
# REAL TU via rtu_match (no build tree, no locks) and stage the byte-MATCHes: measured 7 of 27
|
||||
# such drafts were TU-byte-identical the day this landed, all previously dropped unjudged.
|
||||
.venv/bin/python tools/rtu_second_chance.py --reloc .run/reloc_maint.out.json \
|
||||
--slate .run/aprop_maint_slate.json --stage .run/sweep_maint -j 8 2>&1 | tail -2
|
||||
|
||||
# FREE RECOVERY OF PRE-GATE REJECTS (P31 S59). 45% of drafts never reach the gate — the reloc
|
||||
# pre-filter drops them — and 13% of those have a body that ALREADY MATCHES with only the symbol
|
||||
# names wrong (§171). Rebasing is deterministic and costs no model tokens, so it belongs in this
|
||||
# lane beside the A-prop sweep. It only STAGES; the gate below is what decides.
|
||||
.venv/bin/python tools/recover_rejects.py --limit 60 2>&1 | tail -3
|
||||
|
||||
if [ -n "$(ls .run/sweep_maint 2>/dev/null)" ]; then
|
||||
flock .run/auto/draw.lock .venv/bin/python tools/sweep_parallel.py --drafts .run/sweep_maint -j 10 2>&1 | tail -2
|
||||
# THE RETURN-TYPE HALF OF THE STALE-DECL WALL (S59, byte-proven 14/30 on its first run): a
|
||||
# draft the gate rejects at closeness 0 has a byte-correct body; the dominant residual is the
|
||||
# TU's own 'extern void f(void);' against a value-returning definition — the arity pre-pass
|
||||
# relaxes the parens, not the return. fix_tu_ret_decls retypes the TU's decls to the
|
||||
# definition's return (byte-neutral: declared-void callers ignore $v0), gates, and restores
|
||||
# every edit the gate does not pay for. Zero tokens; the whole-binary SHA stays sole arbiter.
|
||||
.venv/bin/python - <<'PY'
|
||||
import json, glob, os, datetime
|
||||
cut = (datetime.datetime.now() - datetime.timedelta(hours=1)).strftime('%Y-%m-%d %H:%M')
|
||||
pairs = []
|
||||
for d in glob.glob('.run/sweep_maint/*/'):
|
||||
b = os.path.basename(d.rstrip('/'))
|
||||
p = f'.run/auto/bulk/{b}.backlog.jsonl'
|
||||
if not os.path.exists(f'config/splat.{b}.yaml') or not os.path.exists(p):
|
||||
continue
|
||||
fns = {os.path.basename(c)[:-2] for c in glob.glob(d + '*.c')}
|
||||
last = {}
|
||||
for line in open(p, errors='replace'):
|
||||
try: r = json.loads(line)
|
||||
except Exception: continue
|
||||
if r.get('name') in fns and r.get('ts', '') >= cut:
|
||||
last[r['name']] = r
|
||||
pairs += [[b, fn] for fn, r in last.items()
|
||||
if r.get('status') == 'near' and r.get('closeness') == 0]
|
||||
json.dump(pairs, open('.run/ret_pairs_maint.json', 'w'))
|
||||
print('fix_tu_ret candidates:', len(pairs))
|
||||
PY
|
||||
if [ -s .run/ret_pairs_maint.json ] && [ "$(cat .run/ret_pairs_maint.json)" != "[]" ]; then
|
||||
.venv/bin/python tools/fix_tu_ret_decls.py --pairs-file .run/ret_pairs_maint.json \
|
||||
--drafts .run/sweep_maint -j 6 2>&1 | tail -2
|
||||
fi
|
||||
if [ -n "$(git status --porcelain -- src/ config/)" ]; then
|
||||
git add -A src/ config/
|
||||
# NEVER stage main's TUs (top-level src/*.c) from this lane (S59): sweep_parallel refuses
|
||||
# main, so any dirt there is another lane's in-flight gate_main work — unverified by
|
||||
# construction. One writer (gate_main), one committer (main_lane); adopting a mid-flight
|
||||
# substitution is how 24bd25993 turned main's baseline RED for 3h46m.
|
||||
git reset -q -- src/*.c 2>/dev/null || true
|
||||
if git diff --cached --quiet; then
|
||||
say "only main-TU dirt found — leaving it to gate_main/main_lane; nothing to commit"
|
||||
else
|
||||
git commit -q -m "feat(decomp): free A-prop sibling lane (maintenance pass) — zero model tokens"
|
||||
say "committed $(git rev-parse --short HEAD)"
|
||||
fi
|
||||
else
|
||||
say "nothing banked this pass"
|
||||
fi
|
||||
fi
|
||||
# PERIODIC FLEET CHECK (P31 S59, cadence tightened S60). Two binaries sat RED for hours — every
|
||||
# lane only ever checks the binary it is currently touching, and a byte gate is a correctness
|
||||
# oracle with a null coverage model: it is silent about everything it did not build. So sweep the
|
||||
# whole fleet and report REDs loudly.
|
||||
#
|
||||
# EVERY PASS, not every 4th (S60). Detection latency is the real cost of a RED: the binary fails
|
||||
# at BUILD, so every draft gated against it is rejected regardless of quality, and the wave reads
|
||||
# as a drafting failure. Five REDs in one day, each burning drafts until the ~3 h sweep noticed.
|
||||
# Gates now finish in ~35 min instead of 60, so the check is affordable at every pass.
|
||||
# LOCK-AWARE WINDOW (S61). The pgrep guard above this line's history ("skip while any gate is in
|
||||
# flight") meant the sweep NEVER ran — the gater gates back-to-back, so one was always in flight
|
||||
# (last real sweep 12:54 on 08-25, S60 open thread #4). The wave gater, the maintenance sweep and
|
||||
# the resolver all hold .run/auto/draw.lock for exactly their gate window, so taking that lock IS
|
||||
# the "no overlay gate in flight" condition, and blocking on it gives the sweep a turn instead of
|
||||
# a skip. gate_main holds its own lock and is short (~1 min per batch): skip and retry next pass.
|
||||
if pgrep -f 'tools/gate_main' >/dev/null; then
|
||||
say "fleet R22 sweep skipped this pass: gate_main in flight (retry next pass)"
|
||||
else
|
||||
say "fleet R22 sweep — taking .run/auto/draw.lock (waits for the current gate), then checks every binary"
|
||||
flock .run/auto/draw.lock make check-all JOBS=12 >.run/fleet_check.log 2>&1 || true
|
||||
grep -E "^\[FAIL\]" .run/check-all.txt 2>/dev/null | awk '{print $2}' > .run/fleet_red.txt || true
|
||||
NRED=$(grep -c . .run/fleet_red.txt 2>/dev/null || echo 0)
|
||||
if [ "$NRED" -gt 0 ]; then
|
||||
say "*** $NRED BINARY/BINARIES ARE RED — see .run/fleet_red.txt ***"
|
||||
head -8 .run/fleet_red.txt | sed 's/^/ RED: /'
|
||||
# THE ONE AUTO-REPAIR, AND ONLY BECAUSE IT PROVES ITSELF (S60). Everything else here still
|
||||
# fixes NOTHING by design — a guessed pad spec or config edit is how a silent byte shift gets
|
||||
# committed. jtbl_pads_fix is different in kind: it does not derive or guess, it ENUMERATES
|
||||
# the 2^(N-1) candidate specs and accepts one only if it is the UNIQUE spec that rebuilds the
|
||||
# binary byte-identical to config/check.<bin>.sha, restoring the original otherwise. Three of
|
||||
# the five REDs on 08-25 were this one class: JTBL_PADS stores a DERIVED property (how many
|
||||
# jump tables an object emits) that every bank carrying a `switch` can change under it.
|
||||
while read -r RB; do
|
||||
[ -n "$RB" ] || continue
|
||||
.venv/bin/python tools/jtbl_pads_fix.py "$RB" --apply 2>&1 | sed 's/^/ /'
|
||||
done < .run/fleet_red.txt
|
||||
if [ -n "$(git status --porcelain -- config/overlays.mk)" ]; then
|
||||
make check-all JOBS=12 >.run/fleet_check.log 2>&1 || true
|
||||
grep -E "^\[FAIL\]" .run/check-all.txt 2>/dev/null | awk '{print $2}' > .run/fleet_red2.txt || true
|
||||
N2=$(grep -c . .run/fleet_red2.txt 2>/dev/null || echo 0)
|
||||
if [ "$N2" -lt "$NRED" ]; then
|
||||
git add config/overlays.mk
|
||||
git commit -q -m "fix(jtbl): byte-proven pad-spec repair ($((NRED-N2)) binary/binaries) — maintenance lane"
|
||||
say "pad-spec repair: $NRED RED -> $N2 RED, committed $(git rev-parse --short HEAD)"
|
||||
else
|
||||
say "pad-spec repair changed nothing measurable — left for a human"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
say "fleet R22: all binaries byte-identical ($(grep -c '^\[ OK \]' .run/check-all.txt 2>/dev/null || echo 0) checked)"
|
||||
fi
|
||||
fi
|
||||
|
||||
say "pass complete; sleeping 45m"
|
||||
sleep 2700
|
||||
done
|
||||
@@ -1,146 +0,0 @@
|
||||
[
|
||||
{
|
||||
"addr": "0x800CEFD0",
|
||||
"name": "func_800CEFD0",
|
||||
"status": "MATCH",
|
||||
"klass": "",
|
||||
"mismatches": 0,
|
||||
"nins": 77,
|
||||
"note": "goto-loop (label:/goto, not while(1)) suppresses loop.c invariant motion -> D_800D3488/D_800A651C stay inline GAS macros while the explicit `u8 *base = &(*(u8*)&D_800AF630)` local still lands in $s0; matched on 2nd iteration."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D1984",
|
||||
"name": "func_800D1984",
|
||||
"status": "MATCH",
|
||||
"klass": "",
|
||||
"mismatches": 0,
|
||||
"nins": 22,
|
||||
"note": "if/else merged-return layout closed 12->1; RC-12 $0-add opaque copy (register int zr __asm__(\"$0\"); p = arg0 + zr) closed the last one \u2014 store base $a0 needs a 2nd pseudo cse's canon_reg can't fold back onto $s0. Notable: RC-12 firing on a 22-ins stub, not a giant."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D2D10",
|
||||
"name": "func_800D2D10",
|
||||
"status": "MATCH",
|
||||
"klass": "",
|
||||
"mismatches": 0,
|
||||
"nins": 39,
|
||||
"note": "\u00a743 K&R s16 params (n, flag) got 38/39; the last delta was gcc CSE-merging `d = val>>28` into `idx` \u2014 \u00a717 pin `register unsigned int d __asm__(\"$8\")` kept the copy alive ($t0 + addu $v1,$t0,$zero) and shifted i/n-1/&table onto $t1-$t3 \u2192 MATCH."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D1B80",
|
||||
"name": "func_800D1B80",
|
||||
"status": "MATCH",
|
||||
"klass": "",
|
||||
"mismatches": 0,
|
||||
"nins": 22,
|
||||
"note": "Two levers: (1) `if (x!=0){body;return DsMix(p);} return 0;` NOT early-exit `if(x==0)return 0;` \u2014 fixes block layout/branch polarity (12->1 mismatch); (2) RC-12 $0-add opaque copy `p = arg0 + zr` (zr pinned $0) gives the sb its $a0 base \u2014 4 plain `u8 *p=arg0;` spellings all lost to cse2 canon copy-prop. Bonus integration fix: DsMix declared K&R-unprototyped on purpose \u2014 asm proves the $a0 arg, but resident.c already defines `s32 DsMix(void)`, so an `(u8*)` prototype would be a conflicting-types error on splice (verified compatible in one TU vs real cc1, exit 0)."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D1E28",
|
||||
"name": "func_800D1E28",
|
||||
"status": "MATCH",
|
||||
"nins": 37,
|
||||
"mismatches": 0,
|
||||
"klass": "",
|
||||
"note": "Placing `result = 2` BETWEEN the call and its test (r = call(); result = 2; if (r != 0) goto test;) fixed both residuals at once: fills term2's delay slot from BEFORE the branch (killing dbr's steal+retarget L80->L84, restoring term3's nop) AND conflicts result with live $v0 -> $v1 falls out naturally, no register pin. Range test needed cookbook line-1867's per-bound `if (...) goto` split (bltz+slti signed order; switch/&& both canonicalize wrong) -- that idiom was flagged CANDIDATE/unverified and is now byte-confirmed. Note: D_80078E50 typed u16 here (lhu) vs u8 in existing overlay TUs -- loose-typing risk at splice."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D24A0",
|
||||
"name": "func_800D24A0",
|
||||
"status": "MATCH",
|
||||
"klass": "",
|
||||
"mismatches": 0,
|
||||
"nins": 87,
|
||||
"note": "Prior-art func_8013EE10 shape (u16* v=&D_80115112, base q=(char*)v-2, E4 struct-fold on D_80115168) gave 87/87 with a pure $a1/$a2 swap; RTL dump showed a REAL ~9x allocno-priority gap (counter 7refs/36 vs base 3refs/68), not a \u00a747 plateau -> closed with a register pin q=$5 on the base PLUS an explicit `j=0;` hoisted before `q=` (for(;j<8;j++)) to fix emission order. Both levers load-bearing; pinning the counter instead kills the target's un-coalesced rotate copy."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D1FC8",
|
||||
"name": "func_800D1FC8",
|
||||
"status": "MATCH",
|
||||
"klass": "",
|
||||
"mismatches": 0,
|
||||
"nins": 62,
|
||||
"note": "S13 mid-body param copy (sh=arg1 after the deltas) denied $a1 to the global ptr -> $a2/$a3, pin-free; then qty_compare density: hoist pair-2/3 global loads into t1/t2 (lw span 2 > lhu span 1) while pair-1 stays un-hoisted (its lw merges with block-local dx). 0 mismatches, reproduced."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D1658",
|
||||
"name": "func_800D1658",
|
||||
"status": "MATCH",
|
||||
"nins": 47,
|
||||
"mismatches": 0,
|
||||
"klass": "",
|
||||
"note": "\u00a752a non-coalescing delay-slot copy wall CRACKED via hard->hard pin pair (v=$2 + ret=$16, both required \u2014 either alone lets cse/global-alloc kill the addu $s0,$v0,$zero copy \u2192 44 ins) + single-return convergence (goto out) to keep the sll/sra tail from const-propagating + a $3-pinned `t = ret & 0xFFFF` temp that both saves ret from the andi dest and displaces id onto $a0; pins \u21d2 \u00d71-only, not sweep-safe."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D0D7C",
|
||||
"name": "func_800D0D7C",
|
||||
"status": "MATCH",
|
||||
"mismatches": 0,
|
||||
"nins": 45,
|
||||
"klass": "",
|
||||
"note": "Three stacked levers: `>=` condition polarity (fixed block order/branch sense), RC-12 $0-add opaque copies (`r=now+zr`,`h=arg0+zr` -> the $a2=$a3 and $t0=$a0 moves + the unfoldable `andi $a2,0xFF`), and an unused 8-byte local to restore the phantom `vars=8` frame -- the pin and the frame fight each other (zr removes the temp reservation plain C creates), so both routes plateaued at 43 ins until the dead local decoupled them; the frame also gates the dbr delay-slot steal of `subu $v0,$t0,$v1` and the epilogue sra placement."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D0214",
|
||||
"name": "func_800D0214",
|
||||
"status": "NEAR",
|
||||
"mismatches": 5,
|
||||
"nins": 43,
|
||||
"klass": "sched",
|
||||
"note": "43/43 ins, ins 2-15 byte-exact; stuck on S2 birthing boost \u2014 the single-set `lh` chunk temp sinks to its consumer (target keeps it at source position => original had reg_n_sets(chunk)>=2, unreachable in C since chunk dies at `*p=chunk`); that sink sets Lv 8-vs-5, losing the local-alloc density race (mask 2*4/3=26666 > idx 2*7/8=17500), which a `register mask __asm__(\"$3\")` pin buys back (15->5, and the schedule followed the regs per \u00a7H) leaving only Qlh<->QD_800A2E20 swapped via RC-11's <=3-qty sort bug; the S2 asm re-tie that would kill the boost always costs +1 ins because #APP blocks the maspsx delay-slot hop (RC-11 caveat) \u2014 route to decomp-permuter."
|
||||
},
|
||||
{
|
||||
"addr": "0x800CFAD0",
|
||||
"name": "func_800CFAD0",
|
||||
"status": "NEAR",
|
||||
"mismatches": 5,
|
||||
"nins": 59,
|
||||
"klass": "sched",
|
||||
"note": "52->35->5 via separate-globals (dodges cse use_related_value sym+3 rebasing) + chained r0=g0=b0=0x80 + \u00a737 /s dep lattice (fixed all regs); stuck on S5: sched1 `blocking insn 114 for 1 cycles` \u2014 0xE1000085 is a 2-insn unboosted const so no ALU filler wedges between two stores, tag lw loses the mem-unit hazard and lands idx 6 not 9; 100 stmt-orders + 7 levers all hold at 5 \u2192 permuter next."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D0E30",
|
||||
"name": "func_800D0E30",
|
||||
"status": "NEAR",
|
||||
"nins": 37,
|
||||
"mismatches": 12,
|
||||
"klass": "regalloc-order",
|
||||
"note": "37/37 ins, idx0-12 exact (u8 dummy[16] -> RTL prologue schedules addiu $sp into the delay slot; u32 hi/lo block `shorten` fixing the ior order; u16 a promoted-subreg gives the addu $a1,$a0,$zero copy). Stuck on ONE fact: allocno_order is b(pri 16000)->m(7500)->a(3750) so b takes $v1; target needs a->m->b (b last => LL>64, unreachable). Interlock: u16 pins are silently ignored by gcc-2.7.2 so `a` is unpinnable, pinning b cascades (RC-5 ch3/4), and the \u00a747 dead-read slider materializes `a` as HImode killing the copy (38 ins)."
|
||||
},
|
||||
{
|
||||
"addr": "0x800CFE60",
|
||||
"name": "func_800CFE60",
|
||||
"status": "MATCH",
|
||||
"mismatches": 0,
|
||||
"nins": 161,
|
||||
"klass": "",
|
||||
"note": "MATCH 161 ins (verified 2x, isolated work dirs). Six levers: split the 2 call results (else a 7th $s reg); (u32) casts for srl not sra; RC-3 pins base=$s4/mode=$s3 (densities .162 vs .122 differ -> decl swap is a no-op, range-shaping unreachable); read the high half via its own symbol D_800D34AE[i*2] (&arr[i] costs an 8-byte expand temp); NEW+GENERAL -> the 2nd D_800D34AC read as pointer arith, because two array-index reads of the SAME symbol let CSE unify the symbol pseudo, combine deletes the folded address pseudo but its stale refcount becomes a phantom ST_REGS allocno that reload spills to an 8-rounded slot nothing accesses (vars=8 -> every prologue/epilogue offset off by 8); zero-byte asm(\"\" : \"=r\"(q) : \"0\"(q)) blocks combine folding q=sym;p=q so the target's addu $a3,$v0,$zero survives. Two cookbook-worthy idioms (phantom ST_REGS slot + &arr[i] frame cost). WARNING: match_one's default --work .run/match collides across parallel agents (found another agent's func_800D2650 in my t.c); pass --work per agent."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D29F8",
|
||||
"name": "func_800D29F8",
|
||||
"status": "MATCH",
|
||||
"mismatches": 0,
|
||||
"nins": 172,
|
||||
"klass": "",
|
||||
"note": "Closed by volatile D_800B9A02 read as *(volatile u16*)&sym (kills CSE -> 6 reloads; INDIRECT_REF path force_regs the const addr -> la+lhu+preheader copy) + the real libgpu bitfield addPrim (store_bit_field masks value 0xFFFFFF before dest 0xFF000000 -> fixes const order/LUID tie-break + or operand order) + ot-as-macro + an int alias for the u16 ofs param (defeats combine's promoted-SUBREG commutative swap). NOTE for the cookbook: \u00a730's \"deny /s\" bare-store lever does NOT substitute for volatile once the load addr is a reg with a known-constant quantity \u2014 cse_rtx_varies_p then calls it NOT varying, so a /s store leaves it cached (that lever alone stalled at 37/172)."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D2650",
|
||||
"name": "func_800D2650",
|
||||
"status": "NEAR",
|
||||
"klass": "regalloc-order",
|
||||
"mismatches": 4,
|
||||
"nins": 99,
|
||||
"note": "\u00a737 /s-dep lever (MEM_IN_STRUCT_P on the D_800B9A02 load) closed 79->4 by restoring the CSE-killing store<->load dep (cascaded: reload + &D_800B9A02 hoist to $t4 + const-8 un-hoist); stuck at \u00a747's allocation-vs-emission coupling on the two hoisted stack params \u2014 .lreg proves cy(78)=2refs/12len(equiv-doubled)=pri1666 loses $v1 to col(79)=2refs/8len=pri2500; \u00a747's slider provably cannot reach it (len_cy=len_col+4 structurally, so 2/(x+4)<2/x always \u2014 not a truncation tie), and per vendored gcc the only dials left are reg_n_sets!=1 (local-alloc.c:1021) or did_conversion (function.c:3803, forces lhu and contradicts the target's lw). Real source likely sets cy twice; no zero-byte C form found (dead-output asm deleted by flow, volatile won't hoist, S2-kill re-tie adds a use too and over-boosts to 59). u16 cy probe reaches 2 but its residual IS the load width = dead end."
|
||||
},
|
||||
{
|
||||
"addr": "0x800D27DC",
|
||||
"name": "func_800D27DC",
|
||||
"status": "NEAR",
|
||||
"mismatches": 48,
|
||||
"nins": 135,
|
||||
"klass": "regalloc-order",
|
||||
"note": "POLY_FT4+addPrim builder: structure byte-exact (135/135, prologue/preheader/cross-jump/delay slots all match) via macro-OT (not a named `e` local: addPrim double-evaluates ot -> two temps -> evicts `out` from $a1, 131->74), `s16 i` + `for(i=0;i<count;i++)` on the param directly (mints the single blez + two-pseudo counter + loop.c's `addu $s2,$v0,$zero` + frame 0x18), f2 hoisted from in-loop, getaddr-into-temp for the preheader constant order, and narrow `u16 sv/s16 w` (NEW IDIOM: combine puts a u16 stack param's zero_extend first in a commutative plus, silently losing source order). Stuck on pure register identity: i<->0xFFFFFF ($t7/$t8) and u<->v ($a0/$a1); `i`/`out` are unpinnable (a hard reg is not a basic_induction_var -> the `addiu $t0,$out,0x1D` giv anchor vanishes, 135->132), u/v pins are inert -> \u00a752a priority-first-fit GAP not a tie -> permuter seed. Pin-free structural-exact variant = 74 (header documents how to restore it)."
|
||||
}
|
||||
]
|
||||
-145
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
0x8018797c,0x80181688,0x8018a21c,0x8017d38c,0x8017f40c,0x801858bc,0x80187674,0x8017e3ac,0x801880ec,0x80188428,0x8018a2e0,0x80189000,0x8018d870
|
||||
@@ -1,33 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Capture the whole-binary blocker for a gate-refused draft: splice -> build -> read the
|
||||
compiler's OWN error -> revert. Agents cannot run the gate, so a TU-level declaration conflict is
|
||||
invisible to them (§136a: classify on the build's OUTPUT, never its exit status)."""
|
||||
import sys, os, re, subprocess, shutil
|
||||
sys.path.insert(0, 'tools'); import corpus
|
||||
for spec in sys.argv[1:]:
|
||||
ov, fn = spec.split(':')
|
||||
addr = int(fn.split('_')[1], 16)
|
||||
st = corpus.stubs(ov); rec = st.get(addr)
|
||||
if not rec:
|
||||
print(f"== {ov} {fn}: NOT A LIVE STUB (already banked?)"); continue
|
||||
tu = rec.path
|
||||
draft = f".run/s34/{ov}/{fn}.c"
|
||||
stub = f'INCLUDE_ASM("{rec.asm_dir}", {fn});'
|
||||
t = open(tu).read()
|
||||
if t.count(stub) != 1:
|
||||
print(f"== {ov} {fn}: stub line not found verbatim in {tu}"); continue
|
||||
bak = t
|
||||
open(tu, 'w').write(t.replace(stub, open(draft).read()))
|
||||
r = subprocess.run(['make', 'build', f'BINARY={ov}'], capture_output=True, text=True)
|
||||
open(tu, 'w').write(bak) # revert ALWAYS
|
||||
out = r.stdout + r.stderr
|
||||
# §136a, applied to MYSELF: a narrow keyword filter is exactly how a real error goes unseen.
|
||||
# Keep every cc1/ld diagnostic line that names a source position, minus the known SHB noise.
|
||||
errs = [l for l in out.splitlines()
|
||||
if re.search(r'\.[ch]:\d+|undefined reference|\bError \d+', l)
|
||||
and 'built-in function' not in l and 'Makefile:' not in l]
|
||||
print(f"== {ov} {fn} (build rc={r.returncode})")
|
||||
if errs:
|
||||
for l in errs[:6]: print(" ", l.strip())
|
||||
else:
|
||||
print(" NO COMPILE ERROR -> the draft builds clean; the miss is a byte DIFF at whole-binary")
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Capture the whole-binary blocker for a gate-refused draft: splice -> build -> read the
|
||||
compiler's OWN error -> revert. Agents cannot run the gate, so a TU-level declaration conflict is
|
||||
invisible to them (§136a: classify on the build's OUTPUT, never its exit status)."""
|
||||
import sys, os, re, subprocess, shutil
|
||||
sys.path.insert(0, 'tools'); import corpus
|
||||
for spec in sys.argv[1:]:
|
||||
ov, fn = spec.split(':')
|
||||
addr = int(fn.split('_')[1], 16)
|
||||
st = corpus.stubs(ov); rec = st.get(addr)
|
||||
if not rec:
|
||||
print(f"== {ov} {fn}: NOT A LIVE STUB (already banked?)"); continue
|
||||
tu = rec.path
|
||||
draft = f".run/s35/{ov}/{fn}.c"
|
||||
stub = f'INCLUDE_ASM("{rec.asm_dir}", {fn});'
|
||||
t = open(tu).read()
|
||||
if t.count(stub) != 1:
|
||||
print(f"== {ov} {fn}: stub line not found verbatim in {tu}"); continue
|
||||
bak = t
|
||||
open(tu, 'w').write(t.replace(stub, open(draft).read()))
|
||||
r = subprocess.run(['make', 'build', f'BINARY={ov}'], capture_output=True, text=True)
|
||||
open(tu, 'w').write(bak) # revert ALWAYS
|
||||
out = r.stdout + r.stderr
|
||||
# §136a, applied to MYSELF: a narrow keyword filter is exactly how a real error goes unseen.
|
||||
# Keep every cc1/ld diagnostic line that names a source position, minus the known SHB noise.
|
||||
HARD = re.compile(r'undeclared|redefinition|conflicting types|parse error|undefined reference'
|
||||
r'|syntax error|too (many|few) arguments|invalid|incompatible')
|
||||
lines_ = [l for l in out.splitlines()
|
||||
if re.search(r'\.[ch]:\d+|undefined reference', l)
|
||||
and 'built-in function' not in l and 'Makefile:' not in l]
|
||||
hard = [l for l in lines_ if HARD.search(l) and 'warning' not in l.lower()]
|
||||
errs = hard or [l for l in lines_ if 'warning' not in l.lower()] or lines_
|
||||
print(f"== {ov} {fn} (build rc={r.returncode})")
|
||||
if errs:
|
||||
for l in errs[:6]: print(" ", l.strip())
|
||||
else:
|
||||
print(" NO COMPILE ERROR -> the draft builds clean; the miss is a byte DIFF at whole-binary")
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Capture the whole-binary blocker for a gate-refused draft: splice -> build -> read the
|
||||
compiler's OWN error -> revert. Agents cannot run the gate, so a TU-level declaration conflict is
|
||||
invisible to them (§136a: classify on the build's OUTPUT, never its exit status)."""
|
||||
import sys, os, re, subprocess, shutil
|
||||
sys.path.insert(0, 'tools'); import corpus
|
||||
for spec in sys.argv[1:]:
|
||||
ov, fn = spec.split(':')
|
||||
addr = int(fn.split('_')[1], 16)
|
||||
st = corpus.stubs(ov); rec = st.get(addr)
|
||||
if not rec:
|
||||
print(f"== {ov} {fn}: NOT A LIVE STUB (already banked?)"); continue
|
||||
tu = rec.path
|
||||
draft = f".run/s36/{ov}/{fn}.c"
|
||||
stub = f'INCLUDE_ASM("{rec.asm_dir}", {fn});'
|
||||
t = open(tu).read()
|
||||
if t.count(stub) != 1:
|
||||
print(f"== {ov} {fn}: stub line not found verbatim in {tu}"); continue
|
||||
bak = t
|
||||
open(tu, 'w').write(t.replace(stub, open(draft).read()))
|
||||
r = subprocess.run(['make', 'build', f'BINARY={ov}'], capture_output=True, text=True)
|
||||
open(tu, 'w').write(bak) # revert ALWAYS
|
||||
out = r.stdout + r.stderr
|
||||
# §136a, applied to MYSELF: a narrow keyword filter is exactly how a real error goes unseen.
|
||||
# Keep every cc1/ld diagnostic line that names a source position, minus the known SHB noise.
|
||||
HARD = re.compile(r'undeclared|redefinition|conflicting types|parse error|undefined reference'
|
||||
r'|syntax error|too (many|few) arguments|invalid|incompatible')
|
||||
lines_ = [l for l in out.splitlines()
|
||||
if re.search(r'\.[ch]:\d+|undefined reference', l)
|
||||
and 'built-in function' not in l and 'Makefile:' not in l]
|
||||
hard = [l for l in lines_ if HARD.search(l) and 'warning' not in l.lower()]
|
||||
errs = hard or [l for l in lines_ if 'warning' not in l.lower()] or lines_
|
||||
print(f"== {ov} {fn} (build rc={r.returncode})")
|
||||
if errs:
|
||||
for l in errs[:6]: print(" ", l.strip())
|
||||
else:
|
||||
print(" NO COMPILE ERROR -> the draft builds clean; the miss is a byte DIFF at whole-binary")
|
||||
@@ -1,37 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Capture the whole-binary blocker for a gate-refused draft: splice -> build -> read the
|
||||
compiler's OWN error -> revert. Agents cannot run the gate, so a TU-level declaration conflict is
|
||||
invisible to them (§136a: classify on the build's OUTPUT, never its exit status)."""
|
||||
import sys, os, re, subprocess, shutil
|
||||
sys.path.insert(0, 'tools'); import corpus
|
||||
for spec in sys.argv[1:]:
|
||||
ov, fn = spec.split(':')
|
||||
addr = int(fn.split('_')[1], 16)
|
||||
st = corpus.stubs(ov); rec = st.get(addr)
|
||||
if not rec:
|
||||
print(f"== {ov} {fn}: NOT A LIVE STUB (already banked?)"); continue
|
||||
tu = rec.path
|
||||
draft = f".run/s36/{ov}/{fn}.c"
|
||||
stub = f'INCLUDE_ASM("{rec.asm_dir}", {fn});'
|
||||
t = open(tu).read()
|
||||
if t.count(stub) != 1:
|
||||
print(f"== {ov} {fn}: stub line not found verbatim in {tu}"); continue
|
||||
bak = t
|
||||
open(tu, 'w').write(t.replace(stub, open(draft).read()))
|
||||
r = subprocess.run(['make', 'build', f'BINARY={ov}'], capture_output=True, text=True)
|
||||
open(tu, 'w').write(bak) # revert ALWAYS
|
||||
out = r.stdout + r.stderr
|
||||
# §136a, applied to MYSELF: a narrow keyword filter is exactly how a real error goes unseen.
|
||||
# Keep every cc1/ld diagnostic line that names a source position, minus the known SHB noise.
|
||||
HARD = re.compile(r'undeclared|redefinition|conflicting types|parse error|undefined reference'
|
||||
r'|syntax error|too (many|few) arguments|invalid|incompatible')
|
||||
lines_ = [l for l in out.splitlines()
|
||||
if re.search(r'\.[ch]:\d+|undefined reference', l)
|
||||
and 'built-in function' not in l and 'Makefile:' not in l]
|
||||
hard = [l for l in lines_ if HARD.search(l) and 'warning' not in l.lower()]
|
||||
errs = hard or [l for l in lines_ if 'warning' not in l.lower()] or lines_
|
||||
print(f"== {ov} {fn} (build rc={r.returncode})")
|
||||
if errs:
|
||||
for l in errs[:6]: print(" ", l.strip())
|
||||
else:
|
||||
print(" NO COMPILE ERROR -> the draft builds clean; the miss is a byte DIFF at whole-binary")
|
||||
@@ -1,156 +0,0 @@
|
||||
[
|
||||
{
|
||||
"fn": "func_8018BED0",
|
||||
"ov": "ov_SC03_091",
|
||||
"sub": "asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_80182268",
|
||||
"tu": "src/ov_SC03_091/ov_SC03_091_jr_80182268.c",
|
||||
"n": 328,
|
||||
"m": 8,
|
||||
"ti": 2624,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_8018BAB4",
|
||||
"ov": "ov_SC03_091",
|
||||
"sub": "asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_80182268",
|
||||
"tu": "src/ov_SC03_091/ov_SC03_091_jr_80182268.c",
|
||||
"n": 263,
|
||||
"m": 8,
|
||||
"ti": 2104,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_8018A808",
|
||||
"ov": "ov_SC02_027",
|
||||
"sub": "asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898",
|
||||
"tu": "src/ov_SC02_027/ov_SC02_027_jr_8017D898.c",
|
||||
"n": 44,
|
||||
"m": 41,
|
||||
"ti": 1804,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_80181D38",
|
||||
"ov": "ov_SC03_006",
|
||||
"sub": "asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C",
|
||||
"tu": "src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c",
|
||||
"n": 143,
|
||||
"m": 9,
|
||||
"ti": 1287,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_8017ED54",
|
||||
"ov": "ov_SC06_014",
|
||||
"sub": "asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8017BEBC",
|
||||
"tu": "src/ov_SC06_014/ov_SC06_014_jr_8017BEBC.c",
|
||||
"n": 265,
|
||||
"m": 4,
|
||||
"ti": 1060,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_8017C290",
|
||||
"ov": "ov_SC03_024",
|
||||
"sub": "asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C",
|
||||
"tu": "src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c",
|
||||
"n": 229,
|
||||
"m": 4,
|
||||
"ti": 916,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_80182A78",
|
||||
"ov": "ov_SC03_002",
|
||||
"sub": "asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017D604",
|
||||
"tu": "src/ov_SC03_002/ov_SC03_002_jr_8017D604.c",
|
||||
"n": 180,
|
||||
"m": 5,
|
||||
"ti": 900,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_801803E0",
|
||||
"ov": "ov_SC03_108",
|
||||
"sub": "asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8017BEBC",
|
||||
"tu": "src/ov_SC03_108/ov_SC03_108_jr_8017BEBC.c",
|
||||
"n": 225,
|
||||
"m": 4,
|
||||
"ti": 900,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_8018829C",
|
||||
"ov": "ov_SC06_018",
|
||||
"sub": "asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C",
|
||||
"tu": "src/ov_SC06_018/ov_SC06_018_jr_8017C24C.c",
|
||||
"n": 150,
|
||||
"m": 6,
|
||||
"ti": 900,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_8018B29C",
|
||||
"ov": "ov_SC02_028",
|
||||
"sub": "asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017D898",
|
||||
"tu": "src/ov_SC02_028/ov_SC02_028_jr_8017D898.c",
|
||||
"n": 44,
|
||||
"m": 20,
|
||||
"ti": 880,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_8017DF18",
|
||||
"ov": "ov_SC01_004",
|
||||
"sub": "asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8017BE9C",
|
||||
"tu": "src/ov_SC01_004/ov_SC01_004_jr_8017BE9C.c",
|
||||
"n": 175,
|
||||
"m": 5,
|
||||
"ti": 875,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_80181CF0",
|
||||
"ov": "ov_SC06_008",
|
||||
"sub": "asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8017C294",
|
||||
"tu": "src/ov_SC06_008/ov_SC06_008_jr_8017C294.c",
|
||||
"n": 124,
|
||||
"m": 7,
|
||||
"ti": 868,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_8017D4A4",
|
||||
"ov": "ov_SC01_004",
|
||||
"sub": "asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8017BE9C",
|
||||
"tu": "src/ov_SC01_004/ov_SC01_004_jr_8017BE9C.c",
|
||||
"n": 173,
|
||||
"m": 5,
|
||||
"ti": 865,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_8018A970",
|
||||
"ov": "ov_SC02_027",
|
||||
"sub": "asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8017D898",
|
||||
"tu": "src/ov_SC02_027/ov_SC02_027_jr_8017D898.c",
|
||||
"n": 41,
|
||||
"m": 21,
|
||||
"ti": 861,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
}
|
||||
]
|
||||
-153
File diff suppressed because one or more lines are too long
@@ -1,76 +0,0 @@
|
||||
extern u8 *func_801290DC(s32 a0, u8 *a1);
|
||||
extern void func_80049CAC(s32 a0, s32 a1);
|
||||
extern void func_800484EC(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 rand(void);
|
||||
extern u16 D_801AC2F0[][4];
|
||||
extern s32 D_801AC2E4[];
|
||||
|
||||
s32 func_801825A4(void *a0, s32 a1, s32 a2, s32 a3) {
|
||||
u8 *obj;
|
||||
s32 sub;
|
||||
s32 rvA;
|
||||
s16 rvB;
|
||||
s32 p1;
|
||||
|
||||
p1 = a1;
|
||||
obj = func_801290DC(0x41, (u8 *)a0);
|
||||
if (obj == 0) {
|
||||
return 0;
|
||||
}
|
||||
{
|
||||
s32 idx;
|
||||
|
||||
rvA = rand();
|
||||
rvB = rvA;
|
||||
sub = *(s32 *)(obj + 0x20);
|
||||
*(s32 *)(sub + 0x20) = (s32) D_801AC2E4;
|
||||
idx = a3 & 0xF;
|
||||
{
|
||||
u16 *tbl = D_801AC2F0[idx];
|
||||
*(u8 *)(sub + 0x27) = (u8) tbl[2];
|
||||
*(u16 *)(sub + 0x28) = tbl[0];
|
||||
*(u16 *)(sub + 0x2A) = tbl[1];
|
||||
}
|
||||
|
||||
if ((a3 & 0x8000) != 0) {
|
||||
s16 spd = (rvA * 0x10000 >> 0x10) % 0x200 + 0x400;
|
||||
*(u16 *)(sub + 0x1A) = spd;
|
||||
*(u16 *)(sub + 0x18) = spd;
|
||||
*(s32 *)(obj + 0x34) = spd;
|
||||
} else {
|
||||
s16 spd = (rvA * 0x10000 >> 0x10) % 0xC00 + 0x400;
|
||||
*(u16 *)(sub + 0x1A) = spd;
|
||||
*(u16 *)(sub + 0x18) = spd;
|
||||
*(s32 *)(obj + 0x34) = spd;
|
||||
}
|
||||
|
||||
{
|
||||
s32 sign;
|
||||
s32 h;
|
||||
s32 mod128;
|
||||
s16 srcvec[4];
|
||||
s32 buf[8];
|
||||
s32 trailing[4];
|
||||
|
||||
sign = -1;
|
||||
if ((rvB & 1) != 0) {
|
||||
sign = 1;
|
||||
}
|
||||
h = rvB;
|
||||
mod128 = h % 128;
|
||||
|
||||
srcvec[2] = 0;
|
||||
trailing[1] = 0;
|
||||
trailing[0] = 0;
|
||||
trailing[2] = a2;
|
||||
|
||||
srcvec[0] = (s16) (sign * mod128 - 0x300);
|
||||
srcvec[1] = (s16) (p1 + sign * (h % 0x300));
|
||||
|
||||
func_80049CAC((s32) srcvec, (s32) buf);
|
||||
func_800484EC((s32) buf, (s32) trailing, (s32) (obj + 0x10));
|
||||
*(s32 *)(obj + 0x1C) = 0x2D;
|
||||
}
|
||||
}
|
||||
return (s32) obj;
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
typedef struct { s32 w[4]; } Blk16_8018B13C;
|
||||
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
extern void func_80028620(s32, void *);
|
||||
extern Blk16_8018B13C D_800A5EA8;
|
||||
extern Blk16_8018B13C D_801D0320;
|
||||
extern s32 D_800A5EB0;
|
||||
|
||||
void func_8018B13C(s32 a0) {
|
||||
Blk16_8018B13C *s1 = &D_800A5EA8;
|
||||
|
||||
*s1 = D_801D0320;
|
||||
D_800A5EB0 = func_8004787C(*(s16 *)(a0 + 0xFE)) * 10 / 4096 - 5;
|
||||
*(s16 *)(a0 + 0xFE) = (*(u16 *)(a0 + 0xFE) + 0x71) & 0xFFF;
|
||||
func_80028620(2, s1);
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
typedef struct { s32 w[4]; } Blk16_8018B29C;
|
||||
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
extern void func_80028620(s32, void *);
|
||||
extern Blk16_8018B29C D_800A5E88;
|
||||
extern Blk16_8018B29C D_801D03A8;
|
||||
extern s32 D_800A5E90;
|
||||
|
||||
void func_8018B354(s32 a0) {
|
||||
Blk16_8018B29C *s1 = &D_800A5E88;
|
||||
|
||||
*s1 = D_801D03A8;
|
||||
D_800A5E90 = func_8004787C(*(s16 *)(a0 + 0xFE)) / 512 + 8;
|
||||
*(s16 *)(a0 + 0xFE) = (*(u16 *)(a0 + 0xFE) + 0x71) & 0xFFF;
|
||||
func_80028620(0, s1);
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
typedef struct { s32 w[4]; } Blk16_80184328;
|
||||
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
extern void func_80028620(s32, void *);
|
||||
extern s32 D_800A5E90;
|
||||
extern Blk16_80184328 D_800A5E88;
|
||||
extern Blk16_80184328 D_801BBE34;
|
||||
|
||||
void func_80184328(s32 a0) {
|
||||
Blk16_80184328 *s1 = &D_800A5E88;
|
||||
|
||||
*s1 = D_801BBE34;
|
||||
D_800A5E90 = func_8004787C(*(s16 *)(a0 + 0xFE)) * 20 / 4096 - 10;
|
||||
*(s16 *)(a0 + 0xFE) = (*(u16 *)(a0 + 0xFE) + 0x71) & 0xFFF;
|
||||
func_80028620(0, s1);
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
extern s32 func_8017DBD0(u32 a0v);
|
||||
extern s16 func_8017DB14(u32 a0);
|
||||
|
||||
void func_8017D930(void *a0, void *a1) {
|
||||
u16 *r = (u16 *)a0;
|
||||
s16 *m = (s16 *)a1;
|
||||
s16 cx;
|
||||
s16 sx;
|
||||
s16 cy;
|
||||
s16 sy;
|
||||
s16 cz;
|
||||
s16 sz;
|
||||
s32 sxsy;
|
||||
s32 cxcz;
|
||||
s32 cxsz;
|
||||
|
||||
cx = func_8017DBD0(r[0] & 0xFFF);
|
||||
sx = func_8017DB14(r[0] & 0xFFF);
|
||||
cy = func_8017DBD0(r[1] & 0xFFF);
|
||||
sy = func_8017DB14(r[1] & 0xFFF);
|
||||
cz = func_8017DBD0(r[2] & 0xFFF);
|
||||
sz = func_8017DB14(r[2] & 0xFFF);
|
||||
|
||||
cxsz = (cx * sz) >> 15;
|
||||
cxcz = (cx * cz) >> 15;
|
||||
sxsy = (sx * sy) >> 15;
|
||||
|
||||
m[0] = (cz * cy) >> 15;
|
||||
m[1] = ((sxsy * cz) >> 15) - cxsz;
|
||||
m[2] = ((cxcz * sy) >> 15) + ((sx * sz) >> 15);
|
||||
m[3] = (sz * cy) >> 15;
|
||||
m[4] = ((sxsy * sz) >> 15) + cxcz;
|
||||
m[5] = ((cxsz * sy) >> 15) - ((sx * cz) >> 15);
|
||||
m[6] = -sy;
|
||||
m[7] = (cy * sx) >> 15;
|
||||
m[8] = (cy * cx) >> 15;
|
||||
}
|
||||
@@ -1,231 +0,0 @@
|
||||
/* func_801837B0 — ov_SC02_041, TU ov_SC02_041_jr_8017BEBC.c.
|
||||
*
|
||||
* Family of 4 (824 templatable ins): func_801837B0 / func_80186DD4 (ov_SC04_002) /
|
||||
* func_801861A4 (ov_SC04_005) / func_80182810 (ov_SC04_007).
|
||||
*
|
||||
* Draws the two triangles of an entity's ground marker: builds a 4-vertex gouraud packet on
|
||||
* the stack (verts 0x10, colours 0x30, code 0x40), whose colour ramp is derived from the s32
|
||||
* at a0+0x1C (*15, then >>1 for the second component, then -0x10 clamped-at-0 for the far
|
||||
* pair). Bit 0 of the u16 at a0+0x70 picks which channel carries the bright value. Then the
|
||||
* camera matrix cached at D_800AF630+0x18 is loaded and two rtpt+rtps+avsz4 groups run over a
|
||||
* sliding window of the SVECTORs at a0+0xDC..0x104 (stride 8), queueing the packet through
|
||||
* func_80017714 whenever the GTE flag masked with ~0x1000 is clear.
|
||||
*
|
||||
* DECLARATION SURFACE (whole-TU one-pass grep, D2):
|
||||
* * D_800AF630 — TU line 53 `extern u8 D_800AF630[];` (identical extern repeated, legal)
|
||||
* * func_80017714— TU line 4324 `extern void func_80017714(void *);` (identical extern repeated)
|
||||
* * func_801837B0— TU line 5235 `extern void func_801837B0(s32 a0);` — the definition below
|
||||
* uses that exact prototype, so no SELF-axis rename is needed.
|
||||
* * every type tag and every gte_ macro carries the _801837B0 suffix: this TU already defines
|
||||
* gte_ldv0 twice (lines 2687 and 4332, different bodies) and gte_SetRotMatrix at 5033, all
|
||||
* ABOVE the splice point at 5246, so unsuffixed names would collide/redefine.
|
||||
*
|
||||
* CODEGEN NOTES (what the .s pins):
|
||||
* * ONE aggregate `pkt` holds verts + colours + code. The code word MUST live inside the
|
||||
* object handed to func_80017714 or gcc dead-stores it (a separate `s32 tag` local is
|
||||
* eliminated and the frame comes out 8 short: 0x80 instead of 0x88).
|
||||
* * `c` is s16 but `d` is s32 — that asymmetry IS in the target: after the -0x10 the `c < 0`
|
||||
* test needs `sll $v1,$v1,16; bgez` (HImode) while the `d < 0` test is a bare `bgez $a3`
|
||||
* (an `sra` by 17 already leaves 18 sign bits, so no re-extension is emitted).
|
||||
* * `p`/`q` are a SECOND pair of s16 locals holding the value actually stored. They produce
|
||||
* the `addu $a1,$v1,$zero` / `addu $a2,$a3,$zero` copies in the head and after each -0x10,
|
||||
* and they occupy $a1/$a2 — which is what pushes the D_800AF630 base out to $t0 and the
|
||||
* reload register out to $t1, exactly as the target has them. `q` must be s16, not s32: an
|
||||
* s32 `q` is copy-propagated into `d` and the three `addu $a2,...` copies vanish.
|
||||
* * The colour writes are CHAINED assignments; gcc expands `A = B = C = D = q` innermost-first,
|
||||
* so the store order is D,C,B,A and exactly one QImode conversion temp is materialised per
|
||||
* chain ($a0 for the first, $v0 reused for the rest).
|
||||
* * The -0x10 on the second channel goes through a BLOCK-SCOPED `s32 e`, not `d -= 0x10`.
|
||||
* Two separate effects, both required:
|
||||
* - splitting `d` into `d` + `e` cuts REG_N_REFS(d) from 10 to 4, which drops d below p
|
||||
* and q in global.c's allocno priority. With `d -= 0x10` the ranking is d,c,p,q and the
|
||||
* three registers come out permuted ($a1/$a2/$a3 = d/p/q instead of p/q/d) — §137.
|
||||
* - scoping `e` INSIDE each arm (one pseudo per arm instead of one shared) is what fixes
|
||||
* the last residual: a function-scope `e` leaves `addiu $a3,$a3,-0x10` scheduled one slot
|
||||
* too early, ahead of the `addu $v0,$a2,$zero` chain temp. That reorder was INVARIANT
|
||||
* under every legal statement permutation (8 tried), i.e. it was never a source-order
|
||||
* problem — it is the allocno/live-range split.
|
||||
*/
|
||||
|
||||
extern u8 D_800AF630[];
|
||||
extern void func_80017714(void *);
|
||||
|
||||
typedef struct { s16 vx, vy, vz, pad; } SV_801837B0; /* 8 bytes */
|
||||
typedef struct { u8 r, g, b, cd; } CV_801837B0; /* 4 bytes */
|
||||
|
||||
typedef struct {
|
||||
SV_801837B0 v[4]; /* +0x00 : sxy0..3 (v[0].vz doubles as the otz slot) */
|
||||
CV_801837B0 rgb[4]; /* +0x20 */
|
||||
u32 code; /* +0x30 */
|
||||
u32 pad; /* +0x34 */
|
||||
} PKT_801837B0; /* 0x38 */
|
||||
|
||||
#define gte_ldv0_801837B0(r0) __asm__ volatile ( \
|
||||
"lwc2 $0, 0( %0 );" \
|
||||
"lwc2 $1, 4( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) )
|
||||
|
||||
#define gte_ldv3_801837B0(r0, r1, r2) __asm__ volatile ( \
|
||||
"lwc2 $0, 0( %0 );" \
|
||||
"lwc2 $1, 4( %0 );" \
|
||||
"lwc2 $2, 0( %1 );" \
|
||||
"lwc2 $3, 4( %1 );" \
|
||||
"lwc2 $4, 0( %2 );" \
|
||||
"lwc2 $5, 4( %2 )" \
|
||||
: \
|
||||
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
|
||||
|
||||
#define gte_rtps_801837B0() __asm__ volatile ("nop;nop;rtps")
|
||||
#define gte_rtpt_801837B0() __asm__ volatile ("nop;nop;rtpt")
|
||||
#define gte_avsz4_801837B0() __asm__ volatile ("nop;nop;avsz4")
|
||||
|
||||
#define gte_stsxy_801837B0(r0) __asm__ volatile ( \
|
||||
"swc2 $14, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_stsxy3_801837B0(r0, r1, r2) __asm__ volatile ( \
|
||||
"swc2 $12, 0( %0 );" \
|
||||
"swc2 $13, 0( %1 );" \
|
||||
"swc2 $14, 0( %2 )" \
|
||||
: \
|
||||
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_stotz_801837B0(r0) __asm__ volatile ( \
|
||||
"swc2 $7, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_stflg_801837B0(r0) __asm__ volatile ( \
|
||||
"cfc2 $12, $31;" \
|
||||
"nop;" \
|
||||
"sw $12, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "$12", "memory" )
|
||||
|
||||
#define gte_SetRotMatrix_801837B0(r0) __asm__ volatile ( \
|
||||
"lw $12, 0( %0 );" \
|
||||
"lw $13, 4( %0 );" \
|
||||
"ctc2 $12, $0;" \
|
||||
"ctc2 $13, $1;" \
|
||||
"lw $12, 8( %0 );" \
|
||||
"lw $13, 12( %0 );" \
|
||||
"lw $14, 16( %0 );" \
|
||||
"ctc2 $12, $2;" \
|
||||
"ctc2 $13, $3;" \
|
||||
"ctc2 $14, $4" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "$12", "$13", "$14" )
|
||||
|
||||
#define gte_SetTransMatrix_801837B0(r0) __asm__ volatile ( \
|
||||
"lw $12, 20( %0 );" \
|
||||
"lw $13, 24( %0 );" \
|
||||
"ctc2 $12, $5;" \
|
||||
"lw $14, 28( %0 );" \
|
||||
"ctc2 $13, $6;" \
|
||||
"ctc2 $14, $7" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "$12", "$13", "$14" )
|
||||
|
||||
void func_801837B0(s32 a0)
|
||||
{
|
||||
PKT_801837B0 pkt; /* 0x10 */
|
||||
s32 flag1; /* 0x48 */
|
||||
s32 flag2; /* 0x4C */
|
||||
s32 otz; /* 0x50 */
|
||||
u8 *base;
|
||||
s32 *m;
|
||||
s16 c, p, q;
|
||||
s32 d;
|
||||
|
||||
c = *(s32 *)(a0 + 0x1C) * 15;
|
||||
base = D_800AF630;
|
||||
p = c;
|
||||
d = c >> 1;
|
||||
q = d;
|
||||
|
||||
if ((*(u16 *)(a0 + 0x70) & 1) == 0) {
|
||||
pkt.rgb[0].b = pkt.rgb[1].b = p;
|
||||
pkt.rgb[0].r = pkt.rgb[1].r = pkt.rgb[0].g = pkt.rgb[1].g = q;
|
||||
c -= 0x10;
|
||||
p = c;
|
||||
{
|
||||
s32 e; /* block-scoped: one pseudo per arm (§136/L1) */
|
||||
e = d - 0x10;
|
||||
q = e;
|
||||
if (c < 0) {
|
||||
p = 0;
|
||||
}
|
||||
if (e < 0) {
|
||||
q = 0;
|
||||
}
|
||||
}
|
||||
pkt.rgb[2].b = pkt.rgb[3].b = p;
|
||||
pkt.rgb[2].r = pkt.rgb[3].r = pkt.rgb[2].g = pkt.rgb[3].g = q;
|
||||
} else {
|
||||
pkt.rgb[0].r = pkt.rgb[1].r = p;
|
||||
pkt.rgb[0].g = pkt.rgb[1].g = pkt.rgb[0].b = pkt.rgb[1].b = q;
|
||||
c -= 0x10;
|
||||
p = c;
|
||||
{
|
||||
s32 e; /* block-scoped: one pseudo per arm (§136/L1) */
|
||||
e = d - 0x10;
|
||||
q = e;
|
||||
if (c < 0) {
|
||||
p = 0;
|
||||
}
|
||||
if (e < 0) {
|
||||
q = 0;
|
||||
}
|
||||
}
|
||||
pkt.rgb[2].r = pkt.rgb[3].r = p;
|
||||
pkt.rgb[2].g = pkt.rgb[3].g = pkt.rgb[2].b = pkt.rgb[3].b = q;
|
||||
}
|
||||
|
||||
pkt.code = 0x50000000;
|
||||
|
||||
m = (s32 *)(base + 0x18);
|
||||
gte_SetRotMatrix_801837B0(m);
|
||||
gte_SetTransMatrix_801837B0(m);
|
||||
|
||||
gte_ldv3_801837B0((SV_801837B0 *)(a0 + 0xFC), (SV_801837B0 *)(a0 + 0x104),
|
||||
(SV_801837B0 *)(a0 + 0xEC));
|
||||
gte_rtpt_801837B0();
|
||||
gte_stflg_801837B0(&flag1);
|
||||
gte_stsxy3_801837B0(&pkt.v[0], &pkt.v[1], &pkt.v[2]);
|
||||
gte_ldv0_801837B0((SV_801837B0 *)(a0 + 0xF4));
|
||||
gte_rtps_801837B0();
|
||||
gte_stflg_801837B0(&flag2);
|
||||
flag1 = flag1 | flag2;
|
||||
gte_stsxy_801837B0(&pkt.v[3]);
|
||||
gte_avsz4_801837B0();
|
||||
gte_stotz_801837B0(&otz);
|
||||
if ((flag1 & 0xFFFFEFFF) == 0) {
|
||||
pkt.v[0].vz = (s16)otz;
|
||||
func_80017714(&pkt.v[0]);
|
||||
}
|
||||
|
||||
gte_ldv3_801837B0((SV_801837B0 *)(a0 + 0xEC), (SV_801837B0 *)(a0 + 0xF4),
|
||||
(SV_801837B0 *)(a0 + 0xDC));
|
||||
gte_rtpt_801837B0();
|
||||
gte_stflg_801837B0(&flag1);
|
||||
gte_stsxy3_801837B0(&pkt.v[0], &pkt.v[1], &pkt.v[2]);
|
||||
gte_ldv0_801837B0((SV_801837B0 *)(a0 + 0xE4));
|
||||
gte_rtps_801837B0();
|
||||
gte_stflg_801837B0(&flag2);
|
||||
flag1 = flag1 | flag2;
|
||||
gte_stsxy_801837B0(&pkt.v[3]);
|
||||
gte_avsz4_801837B0();
|
||||
gte_stotz_801837B0(&otz);
|
||||
if ((flag1 & 0xFFFFEFFF) == 0) {
|
||||
pkt.v[0].vz = (s16)otz;
|
||||
func_80017714(&pkt.v[0]);
|
||||
}
|
||||
}
|
||||
@@ -1,107 +0,0 @@
|
||||
/* func_80181914 — byte-verified twin of func_8017D77C (src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c:4271),
|
||||
* found via §136e/S34 magic-word grep on the `AAA32294` instruction bytes (the
|
||||
* D_800AF630+0xA3AA far-offset lhu). func_8017D77C is the banked member of this
|
||||
* family; this body was derived by remapping its symbols:
|
||||
* func_8017D77C -> func_80181914 D_801E6F58 -> D_801C12C0
|
||||
* func_8017D9B8 -> func_80181B50 func_8017DAC4 -> func_80181C5C
|
||||
* Ent_8017D6EC -> Ent_80181914 (own function-suffixed typedef -- same 0x24-stride
|
||||
* shape as this TU's own Ent_8017D6EC_80181884 at TU:4633-4639,
|
||||
* given a fresh name/no shared tag so splicing this in below that
|
||||
* file-scope typedef can't hit the C89 duplicate-typedef error, S33).
|
||||
* func_80181C5C is already banked in THIS TU (defined further down as
|
||||
* `void func_80181C5C(void *arg0)`), matching the direct call below with no cast
|
||||
* needed. func_80181B50 has no declaration anywhere in this TU but its own
|
||||
* INCLUDE_ASM stub, so it is declared directly as `void (void *)` (no idiom-9 cast
|
||||
* needed, unlike the twin's func_8017D9B8 which was `void (void)`).
|
||||
*/
|
||||
|
||||
extern u8 D_80078EB1;
|
||||
extern u8 D_80078E78[];
|
||||
extern u8 D_800AF630[];
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
extern void func_8012AD44(s32 *a0, s16 a1);
|
||||
extern void func_80181B50(void *arg0);
|
||||
extern void func_80181C5C(void *arg0);
|
||||
|
||||
typedef struct {
|
||||
u8 unk00[0x16];
|
||||
s16 unk16;
|
||||
u8 unk18[4];
|
||||
s32 unk1C;
|
||||
u8 unk20[4];
|
||||
} Ent_80181914;
|
||||
|
||||
extern Ent_80181914 D_801C12C0[];
|
||||
|
||||
void func_80181914(s32 *arg0)
|
||||
{
|
||||
u8 *m = D_800AF630;
|
||||
u8 *q = D_80078E78;
|
||||
Ent_80181914 *p;
|
||||
Ent_80181914 *r;
|
||||
s32 i;
|
||||
s32 j;
|
||||
s32 n;
|
||||
s32 h;
|
||||
s32 c;
|
||||
s32 e;
|
||||
|
||||
if (D_80078EB1 >= 9) {
|
||||
n = 0;
|
||||
for (j = 0; j < 4; j++) {
|
||||
r = &D_801C12C0[j];
|
||||
if (r->unk1C == 0) {
|
||||
n++;
|
||||
}
|
||||
}
|
||||
if (n == 0) {
|
||||
func_8012AD44(arg0, 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
i = 0;
|
||||
do {
|
||||
p = (Ent_80181914 *)((s32)D_801C12C0 + i * 0x24);
|
||||
if (p->unk1C == 0) {
|
||||
if (*(s16 *)((s32)p + 0xC) > 0x400) {
|
||||
if (*(s32 *)((s32)p + 0x18) != 0) {
|
||||
*(s32 *)((s32)p + 0x18) = *(s32 *)((s32)p + 0x18) - 1;
|
||||
} else {
|
||||
*(s16 *)((s32)p + 0xC) = *(s16 *)((s32)p + 0xC) + 11;
|
||||
}
|
||||
} else {
|
||||
*(s16 *)((s32)p + 0xC) = *(s16 *)((s32)p + 0xC) + 11;
|
||||
}
|
||||
if (*(s16 *)((s32)p + 0xC) > 0x800) {
|
||||
*(s16 *)((s32)p + 0xC) = 0;
|
||||
}
|
||||
c = (func_8004787C(*(s16 *)((s32)p + 0xC)) / 64) & 0xFF;
|
||||
c = c | ((c << 16) | (c << 8));
|
||||
*(s32 *)((s32)p + 0x4) = c;
|
||||
c = (func_8004787C(*(s16 *)((s32)p + 0xC)) / 256) & 0xFF;
|
||||
c = c | ((c << 16) | (c << 8));
|
||||
*(s32 *)((s32)p + 0x8) = c;
|
||||
if ((*(u16 *)(m + 0xA3AA) & 1) == 0) {
|
||||
e = *(u16 *)((s32)p + 0xE) + 1;
|
||||
*(u16 *)((s32)p + 0xE) = e;
|
||||
if ((s16)e >= 0x40) {
|
||||
*(s16 *)((s32)p + 0xE) = 0;
|
||||
}
|
||||
}
|
||||
h = *(s16 *)((s32)p + 0xC);
|
||||
if (h == 0) {
|
||||
p->unk1C = 1;
|
||||
} else if (h > 0x555) {
|
||||
if (*(s32 *)((s32)p + 0x20) == 0) {
|
||||
*(s32 *)((s32)p + 0x20) = 1;
|
||||
if (q[0x39] < 9) {
|
||||
func_80181B50(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
func_80181C5C(p);
|
||||
}
|
||||
i++;
|
||||
} while (i < 4);
|
||||
}
|
||||
@@ -1,189 +0,0 @@
|
||||
/* func_80184370 — ov_SC03_092 (263 ins, jr-function).
|
||||
* Family twin of the BANKED exemplar func_80182FD4 (ov_SC02_028,
|
||||
* src/ov_SC02_028/ov_SC02_028_jr_8017D898.c:4184) — same h_seq template
|
||||
* (family_hseq.json, diff_class PURE, 7 addr instances), body reused verbatim
|
||||
* with only the tail-call target (func_8018478C here vs func_801833F0 there,
|
||||
* the per-overlay sibling in the same wave) and local type-tag suffixes
|
||||
* renamed. See docs/matching-cookbook.md S34/S35/S36 (magic-grep / sibling
|
||||
* reuse) — this is the STEP 0 win: the whole body is a byte-proven template.
|
||||
*
|
||||
* 12-point (6-segment) ribbon/trail projector.
|
||||
* a0 = entity, a1 = ctx. Projects the entity origin (RTPS) into buf[0], then
|
||||
* the 12 offset points at (*(a0+0x20))->pt[0..11] into buf[1..12].
|
||||
*
|
||||
* Gate 1: RTPS flag & ~0x1000 must be clear.
|
||||
* Gate 2: z = otz + 1, biased by the 12-bit field of the u16 @0x2C according
|
||||
* to its top two bits (0xC000 = subtract & clamp at 0, else add), and
|
||||
* the whole draw is dropped unless z < 0x1000.
|
||||
* Bit 0x8000 of the s16 @0x1E picks the "per-segment OT" variant: the six EVEN
|
||||
* points go through RTPT three-at-a-time (screen xy only) and the six ODD ones
|
||||
* go through RTPS one at a time, each also depositing its own otz+1 into
|
||||
* buf[13..18]; func_8018478C then gets the OT *base*. Otherwise all 12 points
|
||||
* go through RTPT three-at-a-time and func_8018478C gets the single slot &ot[z].
|
||||
*
|
||||
* buf is ONE flat 19-word packet (76 bytes; gcc rounds the BLKmode stack slot
|
||||
* up to 80) — the OT indices are written as buf[13 + (i >> 1)].
|
||||
*/
|
||||
|
||||
#define gte_ldv0(r0) __asm__ volatile ( \
|
||||
"lwc2 $0, 0( %0 );" \
|
||||
"lwc2 $1, 4( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) )
|
||||
|
||||
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
|
||||
"lwc2 $0, 0( %0 );" \
|
||||
"lwc2 $1, 4( %0 );" \
|
||||
"lwc2 $2, 0( %1 );" \
|
||||
"lwc2 $3, 4( %1 );" \
|
||||
"lwc2 $4, 0( %2 );" \
|
||||
"lwc2 $5, 4( %2 )" \
|
||||
: \
|
||||
: "r"( r0 ), "r"( r1 ), "r"( r2 ) )
|
||||
|
||||
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
|
||||
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
|
||||
|
||||
#define gte_stsxy(r0) __asm__ volatile ( \
|
||||
"swc2 $14, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
|
||||
"swc2 $12, 0( %0 );" \
|
||||
"swc2 $13, 0( %1 );" \
|
||||
"swc2 $14, 0( %2 )" \
|
||||
: \
|
||||
: "r"( r0 ), "r"( r1 ), "r"( r2 ) \
|
||||
: "memory" )
|
||||
|
||||
#define gte_stszotz(r0) __asm__ volatile ( \
|
||||
"mfc2 $12, $19;" \
|
||||
"nop;" \
|
||||
"sra $12, $12, 2;" \
|
||||
"sw $12, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "$12", "memory" )
|
||||
|
||||
#define gte_stflg(r0) __asm__ volatile ( \
|
||||
"cfc2 $12, $31;" \
|
||||
"nop;" \
|
||||
"sw $12, 0( %0 )" \
|
||||
: \
|
||||
: "r"( r0 ) \
|
||||
: "$12", "memory" )
|
||||
|
||||
void func_80184370(void *a0, void *a1)
|
||||
{
|
||||
typedef struct { u16 vx, vy; } Pt2_80184370;
|
||||
typedef struct { u8 pad[0x10]; Pt2_80184370 pt[12]; } Src_80184370;
|
||||
typedef struct { u16 vx, vy, vz, pad; } Vec8_80184370;
|
||||
|
||||
extern void func_8001E094(void);
|
||||
extern void func_8001E378(void *a0);
|
||||
extern void func_8018478C(void *a0, void *a1, u32 *a2, u32 *a3);
|
||||
extern u8 D_800A6610[];
|
||||
extern short D_800B9A02;
|
||||
|
||||
Vec8_80184370 base;
|
||||
Vec8_80184370 v[3];
|
||||
u32 buf[19];
|
||||
long flag;
|
||||
long otz;
|
||||
long flag2;
|
||||
|
||||
Src_80184370 *s;
|
||||
u32 *ot;
|
||||
s32 z;
|
||||
s32 i;
|
||||
u16 w;
|
||||
|
||||
ot = (u32 *)&D_800A6610[(*(u16 *)&D_800B9A02) << 14];
|
||||
s = *(Src_80184370 **)((s32)a0 + 0x20);
|
||||
if (s == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (*(s32 *)((s32)a0 + 0x34) != 0) {
|
||||
func_8001E094();
|
||||
} else {
|
||||
func_8001E378(a0);
|
||||
}
|
||||
|
||||
base.vx = *(u16 *)((s32)a0 + 0x2E);
|
||||
base.vy = *(u16 *)((s32)a0 + 0x30);
|
||||
base.vz = *(u16 *)((s32)a0 + 0x32);
|
||||
|
||||
gte_ldv0(&base);
|
||||
gte_rtps();
|
||||
gte_stsxy(&buf[0]);
|
||||
gte_stflg(&flag);
|
||||
gte_stszotz(&otz);
|
||||
|
||||
if (flag & ~0x1000) {
|
||||
return;
|
||||
}
|
||||
|
||||
w = *(u16 *)((s32)a0 + 0x2C);
|
||||
z = otz + 1;
|
||||
if ((w & 0xC000) != 0) {
|
||||
if ((w & 0xC000) == 0xC000) {
|
||||
z -= (w & 0xFFF);
|
||||
if (z < 0) {
|
||||
z = 0;
|
||||
}
|
||||
} else {
|
||||
z += (w & 0xFFF);
|
||||
}
|
||||
}
|
||||
if (z >= 0x1000) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (*(s16 *)((s32)a0 + 0x1E) & 0x8000) {
|
||||
for (i = 0; i < 12; i += 6) {
|
||||
v[0].vx = base.vx + s->pt[i].vx;
|
||||
v[0].vy = base.vy + s->pt[i].vy;
|
||||
v[0].vz = base.vz;
|
||||
v[1].vx = base.vx + s->pt[i + 2].vx;
|
||||
v[1].vy = base.vy + s->pt[i + 2].vy;
|
||||
v[1].vz = base.vz;
|
||||
v[2].vx = base.vx + s->pt[i + 4].vx;
|
||||
v[2].vy = base.vy + s->pt[i + 4].vy;
|
||||
v[2].vz = base.vz;
|
||||
gte_ldv3(&v[0], &v[1], &v[2]);
|
||||
gte_rtpt();
|
||||
gte_stsxy3(&buf[i + 1], &buf[i + 3], &buf[i + 5]);
|
||||
}
|
||||
for (i = 1; i < 12; i += 2) {
|
||||
v[0].vx = base.vx + s->pt[i].vx;
|
||||
v[0].vy = base.vy + s->pt[i].vy;
|
||||
v[0].vz = base.vz;
|
||||
gte_ldv0(&v[0]);
|
||||
gte_rtps();
|
||||
gte_stsxy(&buf[i + 1]);
|
||||
gte_stflg(&flag2);
|
||||
gte_stszotz(&otz);
|
||||
buf[13 + (i >> 1)] = otz + 1;
|
||||
}
|
||||
func_8018478C(a0, a1, &buf[0], ot);
|
||||
} else {
|
||||
for (i = 0; i < 12; i += 3) {
|
||||
v[0].vx = base.vx + s->pt[i].vx;
|
||||
v[0].vy = base.vy + s->pt[i].vy;
|
||||
v[0].vz = base.vz;
|
||||
v[1].vx = base.vx + s->pt[i + 1].vx;
|
||||
v[1].vy = base.vy + s->pt[i + 1].vy;
|
||||
v[1].vz = base.vz;
|
||||
v[2].vx = base.vx + s->pt[i + 2].vx;
|
||||
v[2].vy = base.vy + s->pt[i + 2].vy;
|
||||
v[2].vz = base.vz;
|
||||
gte_ldv3(&v[0], &v[1], &v[2]);
|
||||
gte_rtpt();
|
||||
gte_stsxy3(&buf[i + 1], &buf[i + 2], &buf[i + 3]);
|
||||
}
|
||||
func_8018478C(a0, a1, &buf[0], ot + z);
|
||||
}
|
||||
}
|
||||
@@ -1,164 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
typedef struct {
|
||||
u32 addr : 24;
|
||||
u32 len : 8;
|
||||
} PTag_8018478C;
|
||||
|
||||
typedef struct {
|
||||
PTag_8018478C tag;
|
||||
u8 r0, g0, b0, code;
|
||||
u16 x0, y0;
|
||||
u8 u0, v0;
|
||||
u16 clut;
|
||||
u16 x1, y1;
|
||||
u8 u1, v1;
|
||||
u16 tpage;
|
||||
u16 x2, y2;
|
||||
u8 u2, v2;
|
||||
u16 pad2;
|
||||
u16 x3, y3;
|
||||
u8 u3, v3;
|
||||
u16 pad3;
|
||||
} Ft4_8018478C;
|
||||
|
||||
typedef struct {
|
||||
PTag_8018478C tag;
|
||||
u32 code0;
|
||||
} Drm_8018478C;
|
||||
|
||||
#define ADDPRIM_8018478C(o, p) \
|
||||
(((PTag_8018478C *)(p))->addr = ((PTag_8018478C *)(o))->addr, \
|
||||
((PTag_8018478C *)(o))->addr = (u32)(p))
|
||||
|
||||
/* lhu / sll 16 / sra 19 : signed 13-bit field held at bit 3 of a u16 */
|
||||
#define SR3_8018478C(a) (((s32)(*(u16 *)(a) << 16)) >> 19)
|
||||
|
||||
void func_8018478C(void *ent, void *spr, u32 *q, u32 *ot)
|
||||
{
|
||||
extern u8 *D_800A5E60;
|
||||
register s32 zr __asm__("$0");
|
||||
|
||||
Ft4_8018478C *poly;
|
||||
Drm_8018478C *dm;
|
||||
s32 vtx;
|
||||
u32 flags;
|
||||
s32 tp, abr, code, shift;
|
||||
u16 x;
|
||||
u32 y;
|
||||
s32 tpage, clut, cy;
|
||||
s32 su, sv, uu, vv;
|
||||
u16 fl;
|
||||
s32 i, m;
|
||||
u32 b;
|
||||
|
||||
poly = (Ft4_8018478C *)D_800A5E60;
|
||||
fl = *(u16 *)((s32)ent + 0x1E) & 0x8000;
|
||||
flags = *(u32 *)((s32)ent + 4);
|
||||
tp = (flags >> 24) & 3;
|
||||
shift = 2 - tp;
|
||||
x = *(u16 *)((s32)ent + 0x28) + (*(s16 *)((s32)spr + 4) >> shift);
|
||||
y = *(u16 *)((s32)ent + 0x2A) + *(u16 *)((s32)spr + 6);
|
||||
vtx = *(s32 *)((s32)ent + 0x20);
|
||||
D_800A5E60 += 0xF0;
|
||||
if (flags & 0x40000000) {
|
||||
code = 0x2E;
|
||||
abr = (flags >> 28) & 3;
|
||||
} else {
|
||||
code = 0x2C;
|
||||
abr = 1;
|
||||
}
|
||||
tpage = (tp << 7) | (abr << 5) | ((y & 0x100) >> 4) | ((x & 0x3C0) >> 6) |
|
||||
((y & 0x200) << 2);
|
||||
b = *(u8 *)((s32)ent + 0x27);
|
||||
cy = (b + 0x100) << 6;
|
||||
if (b < 0xE0) {
|
||||
clut = cy | 0x16;
|
||||
} else {
|
||||
clut = cy | 0x10;
|
||||
}
|
||||
{
|
||||
s32 t = ((x - ((tpage & 0xF) << 6)) << shift) +
|
||||
(*(u16 *)((s32)spr + 4) & ((1 << shift) - 1));
|
||||
su = t + zr;
|
||||
__asm__ __volatile__("" ::"r"(t + *(u8 *)((s32)spr + 2) - 1));
|
||||
__asm__ __volatile__("" ::"r"(t));
|
||||
}
|
||||
y = y & 0xFFFF;
|
||||
if (tpage & 0x10) {
|
||||
sv = y - 0x100;
|
||||
} else {
|
||||
sv = y + zr;
|
||||
}
|
||||
__asm__ __volatile__("" ::"r"(sv + *(u8 *)((s32)spr + 3) - 1));
|
||||
|
||||
i = 1;
|
||||
uu = su;
|
||||
vv = sv;
|
||||
for (; i < 13; i += 2, poly++) {
|
||||
s32 k = (i - 1) * 4;
|
||||
__asm__ __volatile__("" ::"r"(i));
|
||||
poly->tag.len = 9;
|
||||
poly->code = code;
|
||||
poly->tpage = tpage;
|
||||
poly->u2 = su;
|
||||
poly->v2 = sv;
|
||||
poly->u0 = SR3_8018478C(vtx + k + 0x10) + uu;
|
||||
poly->v0 = SR3_8018478C(vtx + k + 0x12) + vv;
|
||||
poly->u1 = SR3_8018478C(vtx + i * 4 + 0x10) + uu;
|
||||
poly->v1 = SR3_8018478C(vtx + i * 4 + 0x12) + vv;
|
||||
/* k2 is recorded as a giv HERE, AFTER the u1/v1 mem giv. */
|
||||
{
|
||||
s32 k2 = (i + 1) * 4;
|
||||
poly->u3 = SR3_8018478C(vtx + k2 + 0x10) + uu;
|
||||
poly->v3 = SR3_8018478C(vtx + k2 + 0x12) + vv;
|
||||
}
|
||||
poly->clut = clut;
|
||||
__asm__ __volatile__("" ::"r"(i), "r"(i));
|
||||
poly->r0 = *(u8 *)((s32)ent + 0x24);
|
||||
poly->g0 = *(u8 *)((s32)ent + 0x25);
|
||||
poly->b0 = *(u8 *)((s32)ent + 0x26);
|
||||
poly->x0 = ((u16 *)q)[i * 2];
|
||||
poly->y0 = ((u16 *)q)[i * 2 + 1];
|
||||
poly->x1 = ((u16 *)q)[i * 2 + 2];
|
||||
poly->y1 = ((u16 *)q)[i * 2 + 3];
|
||||
poly->x2 = ((u16 *)q)[0];
|
||||
poly->y2 = ((u16 *)q)[1];
|
||||
poly->x3 = ((u16 *)q)[i * 2 + 4];
|
||||
poly->y3 = ((u16 *)q)[i * 2 + 5];
|
||||
if (fl != 0) {
|
||||
ADDPRIM_8018478C(&ot[*(s32 *)((s32)q + 0x34 + (i >> 1) * 4)], poly);
|
||||
} else {
|
||||
ADDPRIM_8018478C(ot, poly);
|
||||
}
|
||||
}
|
||||
poly[-1].x3 = ((u16 *)q)[2];
|
||||
poly[-1].y3 = ((u16 *)q)[3];
|
||||
poly[-1].u3 = su + SR3_8018478C(vtx + 0x10);
|
||||
poly[-1].v3 = sv + SR3_8018478C(vtx + 0x12);
|
||||
|
||||
if (flags & 0x40000000) {
|
||||
dm = (Drm_8018478C *)poly;
|
||||
if (fl != 0) {
|
||||
m = 0;
|
||||
D_800A5E60 += 0x30;
|
||||
do {
|
||||
m++;
|
||||
dm->tag.len = 1;
|
||||
dm->code0 = (abr << 5) | 0xE100000A;
|
||||
ADDPRIM_8018478C(&ot[*(volatile s32 *)((s32)q + 0x34)], dm);
|
||||
q = (u32 *)((s32)q + 4);
|
||||
dm++;
|
||||
} while (m < 6);
|
||||
} else {
|
||||
dm->code0 = (abr << 5) | 0xE100000A;
|
||||
D_800A5E60 += 8;
|
||||
dm->tag.len = 1;
|
||||
ADDPRIM_8018478C(ot, dm);
|
||||
/* Zero-byte live-range stretch: puts vtx's allocno priority
|
||||
* inside the only admissible window. Placement is
|
||||
* load-bearing; do not move this statement. */
|
||||
__asm__ __volatile__("" ::"r"(vtx));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,171 +0,0 @@
|
||||
void func_8017F2E8(s32 param_1)
|
||||
{
|
||||
extern void func_801808B4(void *a0);
|
||||
extern void func_8012B178(s32 a0, s32 a1);
|
||||
extern s32 func_8012CBA4(s32 a0);
|
||||
extern s32 func_8012B608(s32 a0, s32 a1, s32 a2);
|
||||
extern s32 func_8012BEE8(s32 a0);
|
||||
extern void func_8012ADE4(u8 *a0);
|
||||
extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2);
|
||||
extern void func_8012B23C(s32 a0);
|
||||
extern s32 func_80143B6C(s32 a0, s32 a1);
|
||||
extern void func_80131E00(s32 a0, s32 a1);
|
||||
|
||||
s32 sVar1;
|
||||
s32 iVar1;
|
||||
u16 state;
|
||||
s32 uVar2;
|
||||
s32 pad[4];
|
||||
|
||||
if (*(s16 *)(param_1 + 0xa) >= 0x10) {
|
||||
func_801808B4((void *)param_1);
|
||||
return;
|
||||
}
|
||||
|
||||
sVar1 = func_8004787C((*(s32 *)(param_1 + 0xe4) << 6) & 0x7c0);
|
||||
*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1a) = (sVar1 >> 1) + 0x800;
|
||||
|
||||
state = *(u16 *)(param_1 + 0x34);
|
||||
switch (state) {
|
||||
case 0: {
|
||||
s32 iVar3 = 0x1000 - sVar1;
|
||||
s32 a1;
|
||||
if (iVar3 >= 0) {
|
||||
a1 = -0x8000 - (iVar3 << 4);
|
||||
} else {
|
||||
a1 = -0x8000 - ((sVar1 - 0x1000) << 4);
|
||||
}
|
||||
func_8012B178(param_1, a1);
|
||||
iVar1 = func_8012CBA4(param_1);
|
||||
if ((iVar1 & 0xff) == 0x1a) {
|
||||
goto EXIT_808B4;
|
||||
}
|
||||
if ((iVar1 & 0x6000) == 0) {
|
||||
goto MERGE_4C0;
|
||||
}
|
||||
if (--*(s32 *)(param_1 + 0xe8) != 0) {
|
||||
goto TAIL_5D8;
|
||||
}
|
||||
{
|
||||
s32 iVar2;
|
||||
s32 nVar;
|
||||
s32 sVar2;
|
||||
|
||||
*(u16 *)(param_1 + 0x34) = 1;
|
||||
*(s32 *)(param_1 + 0x1c) = 0x20;
|
||||
iVar2 = rand();
|
||||
nVar = iVar2 % 1024;
|
||||
sVar2 = *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12);
|
||||
if (rand() & 1) {
|
||||
uVar2 = sVar2 + nVar;
|
||||
} else {
|
||||
uVar2 = sVar2 - nVar;
|
||||
}
|
||||
}
|
||||
goto MERGE_4E0;
|
||||
}
|
||||
|
||||
case 1: {
|
||||
s32 ptr0 = *(s32 *)(param_1 + 0x20);
|
||||
s32 arg0 = *(s16 *)(ptr0 + 0x12);
|
||||
s32 ret = func_8012B608(arg0, *(s32 *)(param_1 + 0xe0), 0x14);
|
||||
s32 ptr1 = *(s32 *)(param_1 + 0x20);
|
||||
s32 sum;
|
||||
|
||||
sum = *(u16 *)(ptr1 + 0x12) + ret;
|
||||
__asm__ __volatile__("" : "=r"(sum) : "0"(sum));
|
||||
ret = 0x1000 - sVar1;
|
||||
*(s16 *)(ptr1 + 0x12) = sum;
|
||||
if (ret < 0) {
|
||||
ret = sVar1 - 0x1000;
|
||||
}
|
||||
ret = ret << 4;
|
||||
ret = -ret;
|
||||
{
|
||||
s32 arg1 = ret - 0x4000;
|
||||
__asm__ __volatile__("" : "=r"(arg1) : "0"(arg1));
|
||||
func_8012B178(param_1, arg1);
|
||||
}
|
||||
iVar1 = func_8012CBA4(param_1);
|
||||
if ((iVar1 & 0xff) == 0x1a) {
|
||||
goto EXIT_808B4;
|
||||
}
|
||||
if ((iVar1 & 0x6000) != 0) {
|
||||
goto MERGE_4E8;
|
||||
}
|
||||
}
|
||||
MERGE_4C0:
|
||||
func_8012ADE4((u8 *)param_1);
|
||||
{
|
||||
/* §17 pin: the merge-block pointer must land in $v1 so reload's
|
||||
* scratch for the constant store takes $v0 (see .L8017F4C0). */
|
||||
register s32 ptr2 __asm__("$3");
|
||||
ptr2 = *(s32 *)(param_1 + 0x20);
|
||||
*(u16 *)(param_1 + 0x34) = 2;
|
||||
uVar2 = *(s16 *)(ptr2 + 0x12) + 0x800;
|
||||
}
|
||||
MERGE_4E0:
|
||||
*(s32 *)(param_1 + 0xe0) = uVar2;
|
||||
goto TAIL_5D8;
|
||||
MERGE_4E8:
|
||||
if (func_8012BEE8(param_1) != 0) {
|
||||
*(u16 *)(param_1 + 0x34) = 0;
|
||||
*(s32 *)(param_1 + 0xe8) = 0x40;
|
||||
}
|
||||
goto TAIL_5D8;
|
||||
|
||||
case 2: {
|
||||
s32 ptrA = *(s32 *)(param_1 + 0x20);
|
||||
s32 arg1 = *(s32 *)(param_1 + 0xe0);
|
||||
s32 arg0 = *(s16 *)(ptrA + 0x12);
|
||||
s32 ret = func_8012B608(arg0, arg1, 0xa);
|
||||
|
||||
if (ret == 0) {
|
||||
*(u16 *)(param_1 + 0x34) = 0;
|
||||
}
|
||||
{
|
||||
s32 ptrB = *(s32 *)(param_1 + 0x20);
|
||||
*(s16 *)(ptrB + 0x12) = *(u16 *)(ptrB + 0x12) + ret;
|
||||
}
|
||||
goto TAIL_5D8;
|
||||
}
|
||||
|
||||
case 3:
|
||||
iVar1 = func_8012CBA4(param_1);
|
||||
if ((iVar1 & 0xff) != 0x1a) {
|
||||
goto NOT_1A;
|
||||
}
|
||||
EXIT_808B4:
|
||||
func_801808B4((void *)param_1);
|
||||
return;
|
||||
NOT_1A:
|
||||
if ((iVar1 & 0x2000) == 0) {
|
||||
goto L8017F598;
|
||||
}
|
||||
func_8012B23C(param_1);
|
||||
func_8012B178(param_1, 0xFFFD8000);
|
||||
*(u16 *)(param_1 + 0x34) = 0;
|
||||
goto TAIL_5D8;
|
||||
L8017F598:
|
||||
if ((*(s32 *)(param_1 + 0x1c) & 3) != 0) {
|
||||
goto L8017F5B4;
|
||||
}
|
||||
func_80143B6C(param_1, 1);
|
||||
L8017F5B4:
|
||||
*(s32 *)(param_1 + 0x1c) += 1;
|
||||
if (*(s32 *)(param_1 + 0x1c) < 0x3c) {
|
||||
goto TAIL_5DC;
|
||||
}
|
||||
func_80131E00(param_1, 0xd);
|
||||
}
|
||||
|
||||
TAIL_5D8:
|
||||
TAIL_5DC:
|
||||
if (func_8012BD3C(param_1, 0x400, 0x24000) == 1) {
|
||||
*(s16 *)(param_1 + 2) = 3;
|
||||
}
|
||||
if (0x100000 < *(s32 *)(param_1 + 0x14)) {
|
||||
*(s32 *)(param_1 + 0x14) = 0x100000;
|
||||
}
|
||||
*(s32 *)(param_1 + 0xe4) += 1;
|
||||
}
|
||||
@@ -1,149 +0,0 @@
|
||||
/* func_8018893C — twin of the byte-matched func_8018BCD4 in ov_SC03_001/ov_SC03_001_jr_8017AE2C.c
|
||||
* (family of 4: this fn + ov_SC04_018/func_80189214 + ov_SC04_019/func_80189214 +
|
||||
* ov_SC05_017/func_80188F14; all normalize byte-identical to this shape). Only the two
|
||||
* overlay-local data symbols differ (D_801BC522/D_801BC536 here vs D_801C11BA/D_801C11CE
|
||||
* there). Caller in this TU (func_801880E0) already declares the matching prototype:
|
||||
* extern s32 *func_8018893C(s32 *, void *, s32, void *, s32);
|
||||
*/
|
||||
|
||||
extern s32 *func_8018893C(s32 *, void *, s32, void *, s32);
|
||||
|
||||
s32 *func_8018893C(out, src, idx, w, col)
|
||||
s32 *out;
|
||||
void *src;
|
||||
s16 idx;
|
||||
void *w;
|
||||
s32 col;
|
||||
{
|
||||
extern short D_800B9A02; /* TU-visible spelling (file scope) */
|
||||
extern s16 func_8014168C(s16 a0);
|
||||
extern u16 D_8011511A;
|
||||
extern u16 D_80115116;
|
||||
extern u8 D_80115138[];
|
||||
extern u8 D_80115140[];
|
||||
extern u8 D_80115148[];
|
||||
extern u8 D_80115158[];
|
||||
extern u16 D_801BC522;
|
||||
extern u16 D_801BC536;
|
||||
|
||||
typedef struct {
|
||||
u32 *ot; /* 0x00 */
|
||||
u32 pad[4]; /* 0x04..0x13 -> 0x14 stride */
|
||||
} Env_8018893C;
|
||||
extern Env_8018893C D_800AE7BC[];
|
||||
|
||||
typedef struct { u32 addr : 24; u32 len : 8; } PTag_8018893C;
|
||||
|
||||
/* §37 /s-DEP LATTICE: this store MUST be MEM_IN_STRUCT_P. `out[0] = k` folds `out + 0`
|
||||
* away and expands as a NON-/s mem, which keeps the true_dependence edge to the incoming
|
||||
* 5th-arg slot and pins `lw $v1,0x38($sp)` after it. The target has the arg load AFTER
|
||||
* the out[0] store, i.e. the edge must be DROPPED — sched.c's drop clause needs the store
|
||||
* /s + varying and the load non-/s + fixed-address. A COMPONENT_REF at offset 0 supplies
|
||||
* the /s. */
|
||||
typedef struct { u32 w; } W_8018893C;
|
||||
|
||||
s32 c;
|
||||
s16 t;
|
||||
u16 *q;
|
||||
s32 m;
|
||||
volatile u16 *pbh;
|
||||
|
||||
c = D_80115138[idx];
|
||||
|
||||
((W_8018893C *)out)->w = 0x04000000;
|
||||
*((u8 *)out + 0xC) = 0x30;
|
||||
*((u8 *)out + 0xD) = 0x48;
|
||||
*(s16 *)((u8 *)out + 0xE) = 0x4056;
|
||||
out[1] = col | 0x64000000;
|
||||
|
||||
if (c < 10) {
|
||||
/* §135 idiom 9/T3: the fleet decl returns s16; cast at the CALL so the return feeds
|
||||
* `sll $v0,$v0,1` with no `andi`/re-extend. */
|
||||
t = ((s32 (*)(s16)) func_8014168C)(idx) * 2;
|
||||
} else {
|
||||
t = (D_80115148[idx * 2] - D_80115140[idx]) * 2;
|
||||
}
|
||||
|
||||
q = (u16 *)(t * 2 + (s32)src);
|
||||
pbh = (volatile u16 *)&D_800B9A02;
|
||||
*(s16 *)((u8 *)out + 0x8) = q[0] - 8;
|
||||
*(s16 *)((u8 *)out + 0xA) = q[1];
|
||||
*(s16 *)((u8 *)out + 0x12) = 8;
|
||||
*(s16 *)((u8 *)out + 0x10) = 8;
|
||||
|
||||
/* §36 BITFIELD STORE = THE MASK-ORDER DECOUPLER. The head materializes 0x00FFFFFF
|
||||
* (lui+ori) BEFORE 0xFF000000 (lui) while the body ANDs the dest first. `volatile` on the
|
||||
* index read is what keeps the SECOND *pbh load alive (a plain read cse-folds and the
|
||||
* fn loses 5 ins). */
|
||||
((PTag_8018893C *)out)->addr =
|
||||
((PTag_8018893C *)(D_800AE7BC[*pbh].ot + 2))->addr;
|
||||
((PTag_8018893C *)(D_800AE7BC[*pbh].ot + 2))->addr = (u32)out;
|
||||
|
||||
out += 5;
|
||||
if (c < 10) {
|
||||
return out;
|
||||
}
|
||||
|
||||
m = D_8011511A;
|
||||
if (m == idx) {
|
||||
if ((D_80115116 & 8) != 0) {
|
||||
s16 j;
|
||||
s32 k;
|
||||
s16 y;
|
||||
s16 eight;
|
||||
u16 *pb;
|
||||
/* §137/§36: m24 is a 2-insn constant, but the natural allocno order puts j/k ahead
|
||||
* of it and rotates $a2/$a3/$t0. Pinning m24 alone restores the whole rotation. */
|
||||
register u32 m24 __asm__("$6");
|
||||
u32 mhi;
|
||||
s32 vsum;
|
||||
|
||||
j = 0;
|
||||
k = m;
|
||||
eight = 8;
|
||||
pb = (u16 *)&D_800B9A02;
|
||||
m24 = 0xFFFFFF;
|
||||
mhi = 0xFF000000;
|
||||
/* NOTE: the loop deliberately has NO source pointer of its own. gcc's combine_givs
|
||||
* folds every `out + K` reference into ONE address giv based at out+0x12; adding a
|
||||
* `u8 *p = (u8*)out + 0x12` biv makes `*(s16*)p` use the biv directly, which
|
||||
* survives as a SECOND register (the +1-instruction LENGTH-DRIFT). The giv's base
|
||||
* is the LAST such reference in source order — hence the +8 (`vsum`) store sits
|
||||
* before the 0x10/0x12 stores here even though the scheduler sinks it back. */
|
||||
for (; j < 2; j++) {
|
||||
if (j == 0) {
|
||||
if (D_80115140[k] == 0) {
|
||||
continue;
|
||||
}
|
||||
*((u8 *)out + 0xD) = 0x30;
|
||||
y = D_801BC522 - 2;
|
||||
} else {
|
||||
s32 k2 = k * 2;
|
||||
if ((((s8 *)D_80115158)[k2] - ((s8 *)D_80115140)[k]) < 7) {
|
||||
continue;
|
||||
}
|
||||
*((u8 *)out + 0xD) = 0x38;
|
||||
y = D_801BC536 + 1;
|
||||
}
|
||||
*(s16 *)((u8 *)out + 0xA) = y;
|
||||
__asm__("" ::: "memory"); /* keeps the y store ahead of the 0x64808080 pair */
|
||||
*(u32 *)out = 0x04000000;
|
||||
*((u8 *)out + 0xC) = 0x78;
|
||||
*(u32 *)((u8 *)out + 0x4) = 0x64808080;
|
||||
*(s16 *)((u8 *)out + 0xE) = 0x4056;
|
||||
vsum = *(s32 *)((u8 *)w + 8) + *(s32 *)((u8 *)w + 0xC) - 0xC;
|
||||
*(s16 *)((u8 *)out + 0x8) = vsum;
|
||||
*(s16 *)((u8 *)out + 0x10) = eight;
|
||||
*(s16 *)((u8 *)out + 0x12) = eight;
|
||||
*(u32 *)out = ((*(u32 *)out) & mhi) | (D_800AE7BC[*pb].ot[2] & m24);
|
||||
{
|
||||
register u32 *op __asm__("$4");
|
||||
op = D_800AE7BC[*pb].ot;
|
||||
op[2] = (op[2] & mhi) | (((u32)out) & m24);
|
||||
}
|
||||
out += 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
/* TU declares func_8017ED80 as void(void) (S35 self-axis) but the asm takes
|
||||
* $a0 as a pointer parameter — bind through a private C name. */
|
||||
extern void aF8017ED80(void *param_1) __asm__("func_8017ED80");
|
||||
|
||||
void aF8017ED80(void *param_1) {
|
||||
u8 *a0 = (u8 *)param_1;
|
||||
s32 pad_[4];
|
||||
s32 iVar2;
|
||||
u32 uVar1;
|
||||
|
||||
if (*(u16 *)(a0 + 0x0) != 0) {
|
||||
iVar2 = *(s32 *)(a0 + 0xCC);
|
||||
*(u16 *)(iVar2 + 0x8) = *(u16 *)(a0 + 0x6);
|
||||
*(u16 *)(iVar2 + 0xA) = *(u16 *)(a0 + 0xA);
|
||||
*(u16 *)(iVar2 + 0xC) = *(u16 *)(a0 + 0xE);
|
||||
*(u16 *)(iVar2 + 0x10) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10);
|
||||
*(u16 *)(iVar2 + 0x12) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + *(u16 *)(a0 + 0xFC);
|
||||
*(u16 *)(iVar2 + 0x14) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x14);
|
||||
*(u16 *)(iVar2 + 0x18) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x18);
|
||||
*(u16 *)(iVar2 + 0x1A) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1A);
|
||||
*(u16 *)(iVar2 + 0x1C) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1C);
|
||||
if (*(s32 *)(*(s32 *)(a0 + 0x20) + 0x4) < 0) {
|
||||
register u32 val __asm__("$2");
|
||||
val = *(u32 *)(iVar2 + 0x4);
|
||||
uVar1 = val | 0x80000000;
|
||||
} else {
|
||||
__asm__ __volatile__("");
|
||||
uVar1 = *(u32 *)(iVar2 + 0x4) & 0x7FFFFFFF;
|
||||
}
|
||||
*(u32 *)(iVar2 + 0x4) = uVar1;
|
||||
|
||||
iVar2 = *(s32 *)(a0 + 0xD0);
|
||||
*(u16 *)(iVar2 + 0x8) = *(u16 *)(a0 + 0x6);
|
||||
*(u16 *)(iVar2 + 0xA) = *(u16 *)(a0 + 0xA);
|
||||
*(u16 *)(iVar2 + 0xC) = *(u16 *)(a0 + 0xE);
|
||||
*(u16 *)(iVar2 + 0x10) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10);
|
||||
*(u16 *)(iVar2 + 0x12) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + *(u16 *)(a0 + 0xFE);
|
||||
*(u16 *)(iVar2 + 0x14) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x14);
|
||||
*(u16 *)(iVar2 + 0x18) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x18);
|
||||
*(u16 *)(iVar2 + 0x1A) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1A);
|
||||
*(u16 *)(iVar2 + 0x1C) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1C);
|
||||
if (*(s32 *)(*(s32 *)(a0 + 0x20) + 0x4) < 0) {
|
||||
register u32 val __asm__("$2");
|
||||
val = *(u32 *)(iVar2 + 0x4);
|
||||
uVar1 = val | 0x80000000;
|
||||
} else {
|
||||
__asm__ __volatile__("");
|
||||
uVar1 = *(u32 *)(iVar2 + 0x4) & 0x7FFFFFFF;
|
||||
}
|
||||
*(u32 *)(iVar2 + 0x4) = uVar1;
|
||||
}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
extern s32 D_801151D4;
|
||||
extern s32 rand(void);
|
||||
extern s32 VectorNormalSS(void *a0, void *a1);
|
||||
extern s32 func_8012C588(s32 a0, s32 a1);
|
||||
extern u8 *func_8012913C();
|
||||
extern void func_8017ED80(void);
|
||||
|
||||
void func_8017F100(s32 a0)
|
||||
{
|
||||
u16 nv[4];
|
||||
s32 g;
|
||||
s32 s0;
|
||||
s32 idx;
|
||||
|
||||
g = D_801151D4;
|
||||
|
||||
if (*(u16 *)a0 != 0) {
|
||||
idx = *(s32 *)(a0 + 0x1C) & 3;
|
||||
switch (idx) {
|
||||
case 0:
|
||||
s0 = func_8012C588(0x281, a0);
|
||||
if (s0 != 0) {
|
||||
*(s32 *)(s0 + 0x1C) = 2;
|
||||
*(s16 *)(s0 + 0x12) = (rand() & 0x1F) - 0x10;
|
||||
*(s16 *)(s0 + 0x16) = -((rand() & 0xF) + 0x10);
|
||||
*(s16 *)(s0 + 0x1A) = (rand() & 0x1F) - 0x10;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
s0 = (s32)func_8012913C(0x23);
|
||||
if (s0 != 0) {
|
||||
*(s16 *)(s0 + 0x6) = *(u16 *)(a0 + 0x6) + (rand() & 0x3F) - 0x20;
|
||||
*(s16 *)(s0 + 0xA) = *(u16 *)(a0 + 0xA) + (rand() & 0x3F) - 0x30;
|
||||
{
|
||||
s32 r = rand();
|
||||
s32 t = *(u16 *)(a0 + 0xE);
|
||||
*(s32 *)(s0 + 0x18) = 0;
|
||||
*(s32 *)(s0 + 0x14) = 0;
|
||||
*(s32 *)(s0 + 0x10) = 0;
|
||||
*(s16 *)(s0 + 0xE) = t + (r & 0x3F) - 0x20;
|
||||
}
|
||||
*(s16 *)(s0 + 0x34) = (rand() & 0x17FF) + 0x800;
|
||||
nv[0] = *(s32 *)(g + 0x5C) - *(u16 *)(s0 + 0x6);
|
||||
nv[1] = *(s32 *)(g + 0x60) - *(u16 *)(s0 + 0xA);
|
||||
nv[2] = *(s32 *)(g + 0x64) - *(u16 *)(s0 + 0xE);
|
||||
VectorNormalSS(nv, nv);
|
||||
*(s16 *)(s0 + 0x6) = *(u16 *)(s0 + 0x6) + ((s16)nv[0] >> 6);
|
||||
*(s16 *)(s0 + 0xA) = *(u16 *)(s0 + 0xA) + ((s16)nv[1] >> 6);
|
||||
*(s16 *)(s0 + 0xE) = *(u16 *)(s0 + 0xE) + ((s16)nv[2] >> 6);
|
||||
}
|
||||
break;
|
||||
}
|
||||
((void (*)(s32))func_8017ED80)(a0);
|
||||
}
|
||||
}
|
||||
@@ -1,69 +0,0 @@
|
||||
#include "common.h"
|
||||
|
||||
extern void func_8012B370(int a0);
|
||||
extern void func_8004914C(void *a0);
|
||||
extern void func_800491AC(void *a0);
|
||||
extern void func_8002D4C8(s32 a0, s32 a1);
|
||||
extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3);
|
||||
extern u8 D_800AF648;
|
||||
|
||||
void func_80181B20(s32 a0) {
|
||||
|
||||
struct {
|
||||
s16 v[3]; /* sp+0x10 */
|
||||
s16 pad1; /* sp+0x16 */
|
||||
u16 sxy[2]; /* sp+0x18 */
|
||||
s32 z; /* sp+0x1C */
|
||||
s32 flag; /* sp+0x20 */
|
||||
} L;
|
||||
|
||||
s16 hp;
|
||||
s32 p;
|
||||
|
||||
hp = *(s16 *)(*(s32 *)(a0 + 0x20) + 0x14);
|
||||
if (hp < 0x301) {
|
||||
s32 count;
|
||||
s32 total;
|
||||
|
||||
count = *(u16 *)(a0 + 0xFC);
|
||||
total = *(u16 *)(a0 + 0xFE);
|
||||
count = count + 1;
|
||||
total = total + count;
|
||||
*(u16 *)(a0 + 0xFC) = count;
|
||||
*(u16 *)(a0 + 0xFE) = total;
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x14) =
|
||||
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x14) + total;
|
||||
} else {
|
||||
p = *(s32 *)(a0 + 0xD0);
|
||||
*(s16 *)(a0 + 2) = 3;
|
||||
*(s32 *)(a0 + 0x1C) = 0x1E;
|
||||
*(s16 *)(a0 + 0x98) = 0;
|
||||
*(s16 *)(p + 2) = 3;
|
||||
*(s32 *)(p + 0x1C) = 0x1E;
|
||||
*(s16 *)(p + 0x98) = 0;
|
||||
|
||||
L.v[0] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x48);
|
||||
L.v[1] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C);
|
||||
L.v[2] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x50);
|
||||
{ register void *r4 __asm__("$4"); r4 = &D_800AF648; func_8004914C(r4); }
|
||||
{ register void *r4 __asm__("$4"); r4 = &D_800AF648; func_800491AC(r4); }
|
||||
RotTransPers((s32)L.v, (s32)L.sxy, &L.z, &L.flag);
|
||||
if (L.flag >= 0 && (u32)((L.sxy[0] + 0xEF) & 0xFFFF) < 0x1DF
|
||||
&& (u32)((L.sxy[1] + 0xB3) & 0xFFFF) < 0x167) {
|
||||
s32 x = (s16)L.sxy[0];
|
||||
s32 ax;
|
||||
ax = x;
|
||||
if (x < 0) {
|
||||
ax = -x;
|
||||
}
|
||||
ax = ((0xF0 - ax) * 0x7F) / 0xF0;
|
||||
x = (x + 0xF0) / 0x1E;
|
||||
if (x == 0x10) {
|
||||
x = 0xF;
|
||||
}
|
||||
x = x << 8;
|
||||
func_8002D4C8(0x961, (ax | (0x3000 | x)) & 0xFFFF);
|
||||
}
|
||||
}
|
||||
func_8012B370(a0);
|
||||
}
|
||||
@@ -1,222 +0,0 @@
|
||||
/* func_8017D8AC -- ov_SC06_015 (family of 5: also func_8017ED54/ov_SC06_014,
|
||||
* func_8017D9F0/ov_SC06_013, func_801830B4/ov_SC06_016, func_80181164/ov_SC06_030 -- all
|
||||
* byte-identical modulo per-overlay local static data addresses).
|
||||
*
|
||||
* Builds a 5-pointed symmetric star/cross set of screen coordinates around the projected
|
||||
* position of the object, then emits 4 Gouraud-shaded quads (POLY_G4, len=8, code=0x3A) whose
|
||||
* per-vertex colour/x/y are selected from that coordinate set via small per-overlay index
|
||||
* tables, and finally adds the sprite-header primitive itself to the OT.
|
||||
*/
|
||||
|
||||
extern s32 D_80126950;
|
||||
extern s16 D_800B9A02;
|
||||
extern s32 D_800A651C;
|
||||
|
||||
extern void RotTransSV(void *a0, void *a1, void *a2);
|
||||
extern void func_8004914C(void *a0);
|
||||
extern void func_800491AC(void *a0);
|
||||
extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3);
|
||||
|
||||
extern void *func_80010A08(s32 a0);
|
||||
extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern s32 func_8005A600(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4);
|
||||
extern s32 AddPrim(s32 a0, void *a1);
|
||||
|
||||
extern u8 D_800AF648;
|
||||
|
||||
extern s32 D_8018F81C;
|
||||
extern s32 D_8018F824[];
|
||||
|
||||
extern u8 D_8018F830[];
|
||||
extern u8 D_8018F831[];
|
||||
extern u8 D_8018F832[];
|
||||
extern u8 D_8018F833[];
|
||||
extern u8 D_8018F840[];
|
||||
extern u8 D_8018F841[];
|
||||
extern u8 D_8018F842[];
|
||||
extern u8 D_8018F843[];
|
||||
extern u8 D_8018F850[];
|
||||
extern u8 D_8018F851[];
|
||||
extern u8 D_8018F852[];
|
||||
extern u8 D_8018F853[];
|
||||
|
||||
/* §37/§124 SELF-axis: the TU declares `extern void func_8017D8AC(void);` (called with zero
|
||||
args at func_8017E51C) while the byte-true definition takes an s32. Define under a private
|
||||
C name bound to the real symbol. */
|
||||
extern void aF8017D8AC(s32 param_1) __asm__("func_8017D8AC");
|
||||
void aF8017D8AC(s32 param_1) {
|
||||
/* single raw local block; sp+0x18 .. sp+0x5B (verified via the outgoing-arg-area rounded
|
||||
* to 8 for func_8005A600's 5th argument, matching the sibling family's identical frame). */
|
||||
u8 buf[0x44];
|
||||
|
||||
/* Loop-carried locals pinned to the exact callee-saved registers the target uses --
|
||||
* each is reused for TWO logical roles (early-phase / loop-phase), matching the target's
|
||||
* own register reuse across the two roles (§ "don't conclude unsteerable, try register
|
||||
* pins" -- these are loop/local values, never the incoming parameter, so S3 is respected). */
|
||||
register s32 vVec __asm__("$17"); /* s1: RotTransSV/Pers vector ptr, then loop counter i */
|
||||
register s32 vFlag __asm__("$18"); /* s2: RotTransSV/Pers flag ptr, then grid anchor */
|
||||
register u8 *p0 __asm__("$16"); /* s0: D_800AF648 ptr, then prim-write pointer */
|
||||
register u8 *cur __asm__("$19"); /* s3: walking AddPrim arg (s4object+0xC, +=0x24) */
|
||||
register void *s4o __asm__("$20"); /* s4: func_80010A08(0x9C) result */
|
||||
register s32 *ctab __asm__("$21"); /* s5: &D_8018F824 colour table */
|
||||
register s32 s6 __asm__("$22"); /* s6: OT-base + zcount, the AddPrim OT arg */
|
||||
|
||||
s32 zcount;
|
||||
s32 radius, inner;
|
||||
u16 cx, cy;
|
||||
s32 tpage;
|
||||
|
||||
{
|
||||
register s32 *p __asm__("$2") =
|
||||
(s32 *)(*(s32 *)(param_1 + 0x20) + 0x34);
|
||||
__asm__ __volatile__(
|
||||
"lw $12, 0(%0)\n"
|
||||
"lw $13, 4(%0)\n"
|
||||
"ctc2 $12, $0\n"
|
||||
"ctc2 $13, $1\n"
|
||||
"lw $12, 8(%0)\n"
|
||||
"lw $13, 12(%0)\n"
|
||||
"lw $14, 16(%0)\n"
|
||||
"ctc2 $12, $2\n"
|
||||
"ctc2 $13, $3\n"
|
||||
"ctc2 $14, $4\n"
|
||||
"lw $12, 20(%0)\n"
|
||||
"lw $13, 24(%0)\n"
|
||||
"ctc2 $12, $5\n"
|
||||
"lw $14, 28(%0)\n"
|
||||
"ctc2 $13, $6\n"
|
||||
"ctc2 $14, $7\n"
|
||||
: : "r"(p) : "$12", "$13", "$14", "memory");
|
||||
}
|
||||
|
||||
{
|
||||
/* §gcc-2.7.2-map/sched.md rule 7: a single-SET pseudo gets a "birthing boost" that
|
||||
* sinks it to just before its first consumer, regardless of source order. A 2nd SET
|
||||
* that survives CSE (a zero-byte re-tie) disables the boost so it schedules at its
|
||||
* natural (early) priority instead. */
|
||||
void *vecAddr = &D_8018F81C;
|
||||
void *arg1;
|
||||
__asm__ __volatile__("" : "=r"(vecAddr) : "0"(vecAddr));
|
||||
vVec = (s32)(buf + 0x10);
|
||||
arg1 = (void *)vVec;
|
||||
__asm__ __volatile__("" : "=r"(arg1) : "0"(arg1));
|
||||
vFlag = (s32)(buf + 0x38);
|
||||
RotTransSV(vecAddr, arg1, (void *)vFlag);
|
||||
}
|
||||
|
||||
p0 = &D_800AF648;
|
||||
func_8004914C(p0);
|
||||
func_800491AC(p0);
|
||||
|
||||
zcount = RotTransPers(vVec, (s32)(buf + 0x3C), (s32 *)(buf + 0x40), (s32 *)vFlag);
|
||||
if (zcount <= 0) {
|
||||
return;
|
||||
}
|
||||
if (*(s32 *)vFlag < 0) {
|
||||
return;
|
||||
}
|
||||
zcount = zcount << 2;
|
||||
|
||||
radius = ((D_80126950 + 0x1F4) * 48) / zcount;
|
||||
|
||||
cx = *(u16 *)(buf + 0x3C);
|
||||
cy = *(u16 *)(buf + 0x3E);
|
||||
|
||||
{
|
||||
register s32 t1 __asm__("$9") =
|
||||
*(s32 *)((s8 *)&D_800A651C + (u16)D_800B9A02 * 0x14);
|
||||
s6 = t1 + zcount;
|
||||
}
|
||||
|
||||
*(u16 *)(buf + 0x1C) = cx;
|
||||
*(u16 *)(buf + 0x2C) = cy;
|
||||
|
||||
*(u16 *)(buf + 0x18) = cx - radius;
|
||||
|
||||
inner = (radius * 179) >> 8;
|
||||
|
||||
*(u16 *)(buf + 0x1A) = cx - inner;
|
||||
*(u16 *)(buf + 0x1E) = cx + inner;
|
||||
*(u16 *)(buf + 0x20) = cx + radius;
|
||||
*(u16 *)(buf + 0x28) = cy - radius;
|
||||
*(u16 *)(buf + 0x2A) = cy - inner;
|
||||
*(u16 *)(buf + 0x2E) = cy + inner;
|
||||
*(u16 *)(buf + 0x30) = cy + radius;
|
||||
|
||||
s4o = func_80010A08(0x9C);
|
||||
if (s4o == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
tpage = GetTPage(0, 1, 0, 0);
|
||||
func_8005A600((s32)s4o, 0, 0, (u16)tpage, 0);
|
||||
|
||||
{
|
||||
register s32 t __asm__("$2") = (s32)((u8 *)s4o + 0xC);
|
||||
cur = (u8 *)t;
|
||||
ctab = D_8018F824;
|
||||
vFlag = (s32)buf;
|
||||
p0 = (u8 *)s4o + 0x2E;
|
||||
vVec = 0;
|
||||
|
||||
*(s32 *)(buf + 0x04) = (s32)((u8 *)s4o + 0x30);
|
||||
*(s32 *)(buf + 0x08) = (s32)((u8 *)s4o + 0x54);
|
||||
*(s32 *)(buf + 0x00) = t;
|
||||
*(s32 *)(buf + 0x0C) = (s32)((u8 *)s4o + 0x78);
|
||||
}
|
||||
|
||||
for (; vVec < 0x10;) {
|
||||
s32 color0, color1, color2, color3;
|
||||
u16 x0, x1, x2, x3;
|
||||
u16 y0, y1, y2, y3;
|
||||
|
||||
color0 = ctab[D_8018F850[vVec]];
|
||||
*(s32 *)(p0 - 0x1E) = color0;
|
||||
color1 = ctab[D_8018F851[vVec]];
|
||||
*(s32 *)(p0 - 0x16) = color1;
|
||||
color2 = ctab[D_8018F852[vVec]];
|
||||
*(s32 *)(p0 - 0xE) = color2;
|
||||
color3 = ctab[D_8018F853[vVec]];
|
||||
*(u8 *)(p0 - 0x1F) = 8;
|
||||
*(u8 *)(p0 - 0x1B) = 0x3A;
|
||||
*(s32 *)(p0 - 0x6) = color3;
|
||||
|
||||
x0 = *(u16 *)(vFlag + D_8018F830[vVec] * 2 + 0x18);
|
||||
*(u16 *)(p0 - 0x1A) = x0;
|
||||
x1 = *(u16 *)(vFlag + D_8018F831[vVec] * 2 + 0x18);
|
||||
*(u16 *)(p0 - 0x12) = x1;
|
||||
x2 = *(u16 *)(vFlag + D_8018F832[vVec] * 2 + 0x18);
|
||||
*(u16 *)(p0 - 0xA) = x2;
|
||||
x3 = *(u16 *)(vFlag + D_8018F833[vVec] * 2 + 0x18);
|
||||
*(u16 *)(p0 - 0x2) = x3;
|
||||
|
||||
y0 = *(u16 *)(vFlag + D_8018F840[vVec] * 2 + 0x28);
|
||||
*(u16 *)(p0 - 0x18) = y0;
|
||||
y1 = *(u16 *)(vFlag + D_8018F841[vVec] * 2 + 0x28);
|
||||
*(u16 *)(p0 - 0x10) = y1;
|
||||
{
|
||||
s32 argA0;
|
||||
u8 *argA1;
|
||||
|
||||
y2 = *(u16 *)(vFlag + D_8018F842[vVec] * 2 + 0x28);
|
||||
argA0 = s6;
|
||||
__asm__ __volatile__("" : "=r"(argA0) : "0"(argA0));
|
||||
*(u16 *)(p0 - 0x8) = y2;
|
||||
argA1 = cur;
|
||||
__asm__ __volatile__("" : "=r"(argA1) : "0"(argA1));
|
||||
{
|
||||
u8 idx3 = D_8018F843[vVec];
|
||||
cur += 0x24;
|
||||
y3 = *(u16 *)(vFlag + idx3 * 2 + 0x28);
|
||||
vVec += 4;
|
||||
}
|
||||
|
||||
*(u16 *)(p0) = y3;
|
||||
|
||||
AddPrim(argA0, argA1);
|
||||
}
|
||||
p0 += 0x24;
|
||||
}
|
||||
|
||||
AddPrim(s6, s4o);
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
// func_8018EDB0 — ov_SC06_032 / ov_SC06_032_jr_8017C24C
|
||||
// Sibling of func_8018F060 (ov_SC06_018 / ov_SC06_018_jr_8017C24C, banked MATCH, same jr group
|
||||
// "jr_8017C24C"). The .s is byte-identical in structure to the banked sibling: same prologue
|
||||
// (func_8004914C/func_800491AC on ((s32*)param_1)[8]+0x34), same two 3-iteration RotTransSV loops
|
||||
// (src[i].vx/vy from a per-overlay SVEC array selected by (param_2&1)*3, vz = -param_3[0] then
|
||||
// -param_3[1]), same B4 spill-copy of param_4 into pkt[8] + pkt[9]=0x50000000, same DRAW() GTE
|
||||
// macro (gte_ldv3/rtpt/stflg/stsxy3/ldv0/rtps/stflg/or-flags/stsxy/avsz4/stotz + OT-range guarded
|
||||
// func_80017254 insert) repeated 3x with the shared D_800AF630+0x18 draw-mode calls. Only the
|
||||
// per-overlay source-vector symbol differs (D_801CC7FC here vs D_801D1228 there); all other data
|
||||
// symbols (D_800AF630, D_800B9A02, D_800A651C, D_800AE610) and callees are declared identically to
|
||||
// the banked sibling, verbatim (S34/S36: reuse the byte-proven declaration + expression forms).
|
||||
//
|
||||
// DECLARATION SURFACE (whole-TU one-pass grep, D2):
|
||||
// * func_8004914C(void *a0) / func_800491AC(void *a0) / RotTransSV(void*,void*,void*) are ALL
|
||||
// already `extern` at this TU's file scope (lines 2637-2639) — do NOT redeclare here.
|
||||
// * D_800B9A02 is `extern short D_800B9A02;` at file scope (line 2451/2453) — do NOT redeclare;
|
||||
// unsigned access is forced at the USE with `*(u16 *)&D_800B9A02` (TU's own canonical spelling,
|
||||
// already used at TU lines 2842/6033).
|
||||
// * D_800AF630, D_800A651C, D_800AE610, func_80017254, D_801CC7FC appear nowhere else in this TU
|
||||
// — declare fresh, matching the banked sibling's exact canonical shapes.
|
||||
// * func_8018EDB0 has no caller anywhere in src/ (INCLUDE_ASM stub only) — signature unconstrained.
|
||||
|
||||
typedef struct { u16 vx, vy, vz, pad; } SVEC_8018EDB0; /* u16 source vec -> lhu */
|
||||
typedef struct { s16 vx, vy, vz, pad; } SVECTOR_8018EDB0; /* 8 bytes, align 2 */
|
||||
typedef struct { u8 d[8]; } __attribute__((packed, aligned(1))) B8_8018EDB0;
|
||||
typedef struct { u8 d[4]; } __attribute__((packed, aligned(1))) B4_8018EDB0;
|
||||
|
||||
extern void func_80017254(void *a0);
|
||||
extern SVEC_8018EDB0 D_801CC7FC[];
|
||||
extern short D_800B9A02;
|
||||
extern u8 D_800A651C[];
|
||||
extern u8 D_800AE610[];
|
||||
extern u8 D_800AF630[];
|
||||
|
||||
#define gte_ldv0(r0) __asm__ volatile ( \
|
||||
"lwc2 $0, 0( %0 );" "lwc2 $1, 4( %0 )" : : "r"( r0 ) )
|
||||
#define gte_ldv3(r0, r1, r2) __asm__ volatile ( \
|
||||
"lwc2 $0, 0( %0 );" "lwc2 $1, 4( %0 );" "lwc2 $2, 0( %1 );" \
|
||||
"lwc2 $3, 4( %1 );" "lwc2 $4, 0( %2 );" "lwc2 $5, 4( %2 )" \
|
||||
: : "r"( r0 ), "r"( r1 ), "r"( r2 ) )
|
||||
#define gte_rtps() __asm__ volatile ("nop;nop;rtps")
|
||||
#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt")
|
||||
#define gte_stsxy(r0) __asm__ volatile ( \
|
||||
"swc2 $14, 0( %0 )" : : "r"( r0 ) : "memory" )
|
||||
#define gte_stsxy3(r0, r1, r2) __asm__ volatile ( \
|
||||
"swc2 $12, 0( %0 );" "swc2 $13, 0( %1 );" "swc2 $14, 0( %2 )" \
|
||||
: : "r"( r0 ), "r"( r1 ), "r"( r2 ) : "memory" )
|
||||
#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4")
|
||||
#define gte_stotz(r0) __asm__ volatile ( \
|
||||
"swc2 $7, 0( %0 )" : : "r"( r0 ) : "memory" )
|
||||
#define gte_stflg(r0) __asm__ volatile ( \
|
||||
"cfc2 $12, $31;" "nop;" "sw $12, 0( %0 )" : : "r"( r0 ) : "$12", "memory" )
|
||||
|
||||
#define DRAW() \
|
||||
mb = (u8 *)&D_800AF630; \
|
||||
__asm__("" : "=r"(mb) : "0"(mb)); \
|
||||
func_8004914C(mb + 0x18); \
|
||||
__asm__("" : "=r"(mb) : "0"(mb)); \
|
||||
func_800491AC(mb + 0x18); \
|
||||
pc = (long *)&pkt[0]; \
|
||||
p1 = (long *)&pkt[2]; \
|
||||
p2 = (long *)&pkt[4]; \
|
||||
p3 = (long *)&pkt[6]; \
|
||||
pfl = &flag1; \
|
||||
p0 = pc; \
|
||||
gte_ldv3(p0, p1, p2); \
|
||||
gte_rtpt(); \
|
||||
gte_stflg(pfl); \
|
||||
__asm__ __volatile__("" :: "r"(pfl)); \
|
||||
gte_stsxy3(p0, p1, p2); \
|
||||
gte_ldv0(p3); \
|
||||
gte_rtps(); \
|
||||
gte_stflg(&flag2); \
|
||||
flag1 |= flag2; \
|
||||
gte_stsxy(p3); \
|
||||
gte_avsz4(); \
|
||||
gte_stotz(&otz); \
|
||||
oz = otz; \
|
||||
*(s16 *)((u8 *)pkt + 4) = (s16)oz; \
|
||||
if (oz > 0 && flag1 >= 0 && \
|
||||
!((u32)&D_800AE610 < (u32)(*(s32 *)((u8 *)&D_800A651C \
|
||||
+ (*(u16 *)&D_800B9A02) * 0x14) + oz * 4))) { \
|
||||
func_80017254(pc); \
|
||||
}
|
||||
|
||||
void func_8018EDB0(s32 param_1, u32 param_2, u16 *param_3, u32 param_4) {
|
||||
u8 dead[0x20]; /* 0x10 : reserved, never referenced (holds the frame at 0xC8) */
|
||||
SVECTOR_8018EDB0 scratch; /* 0x30 */
|
||||
B8_8018EDB0 out[6]; /* 0x38 */
|
||||
u32 pkt[10]; /* 0x68 : v0..v3 + color(0x88) + code(0x8C) */
|
||||
SVECTOR_8018EDB0 rtflag; /* 0x90 (8 bytes -> 0x94 gap) */
|
||||
s32 flag1; /* 0x98 */
|
||||
s32 flag2; /* 0x9C */
|
||||
s32 otz; /* 0xA0 */
|
||||
SVEC_8018EDB0 *src;
|
||||
s32 i, oz;
|
||||
long *p0, *p1, *p2, *p3, *pfl;
|
||||
u8 *mb;
|
||||
register long *pc __asm__("$16");
|
||||
|
||||
func_8004914C((void *)(((s32 *)param_1)[8] + 0x34));
|
||||
func_800491AC((void *)(((s32 *)param_1)[8] + 0x34));
|
||||
|
||||
src = &D_801CC7FC[(param_2 & 1) * 3];
|
||||
for (i = 0; i < 3; i++) {
|
||||
scratch.vx = src[i].vx;
|
||||
scratch.vy = src[i].vy;
|
||||
scratch.vz = -param_3[0];
|
||||
RotTransSV(&scratch, &out[i], &rtflag);
|
||||
}
|
||||
for (i = 0; i < 3; i++) {
|
||||
scratch.vx = src[i].vx;
|
||||
scratch.vy = src[i].vy;
|
||||
scratch.vz = -param_3[1];
|
||||
RotTransSV(&scratch, &out[3 + i], &rtflag);
|
||||
}
|
||||
|
||||
*(B4_8018EDB0 *)&pkt[8] = *(B4_8018EDB0 *)¶m_4;
|
||||
pkt[9] = 0x50000000;
|
||||
|
||||
/* face 0: verts 0,1,3,4 */
|
||||
*(B8_8018EDB0 *)&pkt[0] = out[0];
|
||||
*(B8_8018EDB0 *)&pkt[2] = out[1];
|
||||
*(B8_8018EDB0 *)&pkt[4] = out[3];
|
||||
*(B8_8018EDB0 *)&pkt[6] = out[4];
|
||||
DRAW();
|
||||
|
||||
/* face 1: verts 1,2,4,5 */
|
||||
*(B8_8018EDB0 *)&pkt[0] = out[1];
|
||||
*(B8_8018EDB0 *)&pkt[2] = out[2];
|
||||
*(B8_8018EDB0 *)&pkt[4] = out[4];
|
||||
*(B8_8018EDB0 *)&pkt[6] = out[5];
|
||||
DRAW();
|
||||
|
||||
/* face 2: verts 2,0,5,3 */
|
||||
*(B8_8018EDB0 *)&pkt[0] = out[2];
|
||||
*(B8_8018EDB0 *)&pkt[2] = out[0];
|
||||
*(B8_8018EDB0 *)&pkt[4] = out[5];
|
||||
*(B8_8018EDB0 *)&pkt[6] = out[3];
|
||||
DRAW();
|
||||
}
|
||||
@@ -1,178 +0,0 @@
|
||||
[
|
||||
{
|
||||
"fn": "func_8018478C",
|
||||
"ov": "ov_SC03_092",
|
||||
"sub": "asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C",
|
||||
"tu": "src/ov_SC03_092/ov_SC03_092_jr_8017AE2C.c",
|
||||
"n": 328,
|
||||
"m": 7,
|
||||
"ti": 2296,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_80184370",
|
||||
"ov": "ov_SC03_092",
|
||||
"sub": "asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8017AE2C",
|
||||
"tu": "src/ov_SC03_092/ov_SC03_092_jr_8017AE2C.c",
|
||||
"n": 263,
|
||||
"m": 7,
|
||||
"ti": 1841,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_8018B13C",
|
||||
"ov": "ov_SC02_028",
|
||||
"sub": "asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017D898",
|
||||
"tu": "src/ov_SC02_028/ov_SC02_028_jr_8017D898.c",
|
||||
"n": 44,
|
||||
"m": 40,
|
||||
"ti": 1760,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_80181914",
|
||||
"ov": "ov_SC03_024",
|
||||
"sub": "asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017DF84",
|
||||
"tu": "src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c",
|
||||
"n": 143,
|
||||
"m": 8,
|
||||
"ti": 1144,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_8017F2E8",
|
||||
"ov": "ov_SC03_108",
|
||||
"sub": "asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8017BEBC",
|
||||
"tu": "src/ov_SC03_108/ov_SC03_108_jr_8017BEBC.c",
|
||||
"n": 214,
|
||||
"m": 4,
|
||||
"ti": 856,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_8017F100",
|
||||
"ov": "ov_SC06_008",
|
||||
"sub": "asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8017C294",
|
||||
"tu": "src/ov_SC06_008/ov_SC06_008_jr_8017C294.c",
|
||||
"n": 122,
|
||||
"m": 7,
|
||||
"ti": 854,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_8017D930",
|
||||
"ov": "ov_SC02_039",
|
||||
"sub": "asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_8017BEBC",
|
||||
"tu": "src/ov_SC02_039/ov_SC02_039_jr_8017BEBC.c",
|
||||
"n": 121,
|
||||
"m": 7,
|
||||
"ti": 847,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_80184328",
|
||||
"ov": "ov_SC02_035",
|
||||
"sub": "asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8017BEBC",
|
||||
"tu": "src/ov_SC02_035/ov_SC02_035_jr_8017BEBC.c",
|
||||
"n": 44,
|
||||
"m": 19,
|
||||
"ti": 836,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_801837B0",
|
||||
"ov": "ov_SC02_041",
|
||||
"sub": "asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017BEBC",
|
||||
"tu": "src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c",
|
||||
"n": 206,
|
||||
"m": 4,
|
||||
"ti": 824,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_8018B354",
|
||||
"ov": "ov_SC02_028",
|
||||
"sub": "asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017D898",
|
||||
"tu": "src/ov_SC02_028/ov_SC02_028_jr_8017D898.c",
|
||||
"n": 41,
|
||||
"m": 20,
|
||||
"ti": 820,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_8017ED80",
|
||||
"ov": "ov_SC06_008",
|
||||
"sub": "asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8017C294",
|
||||
"tu": "src/ov_SC06_008/ov_SC06_008_jr_8017C294.c",
|
||||
"n": 117,
|
||||
"m": 7,
|
||||
"ti": 819,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_8018893C",
|
||||
"ov": "ov_SC03_124",
|
||||
"sub": "asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8017AE2C",
|
||||
"tu": "src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c",
|
||||
"n": 203,
|
||||
"m": 4,
|
||||
"ti": 812,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_80181B20",
|
||||
"ov": "ov_SC06_008",
|
||||
"sub": "asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8017C294",
|
||||
"tu": "src/ov_SC06_008/ov_SC06_008_jr_8017C294.c",
|
||||
"n": 116,
|
||||
"m": 7,
|
||||
"ti": 812,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
},
|
||||
{
|
||||
"fn": "func_8017D8AC",
|
||||
"ov": "ov_SC06_015",
|
||||
"sub": "asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8017BEBC",
|
||||
"tu": "src/ov_SC06_015/ov_SC06_015_jr_8017BEBC.c",
|
||||
"n": 265,
|
||||
"m": 3,
|
||||
"ti": 795,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_8018EDB0",
|
||||
"ov": "ov_SC06_032",
|
||||
"sub": "asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017C24C",
|
||||
"tu": "src/ov_SC06_032/ov_SC06_032_jr_8017C24C.c",
|
||||
"n": 397,
|
||||
"m": 2,
|
||||
"ti": 794,
|
||||
"model": "sonnet",
|
||||
"seed": 0
|
||||
},
|
||||
{
|
||||
"fn": "func_801825A4",
|
||||
"ov": "ov_SC02_026",
|
||||
"sub": "asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8017C180",
|
||||
"tu": "src/ov_SC02_026/ov_SC02_026_jr_8017C180.c",
|
||||
"n": 129,
|
||||
"m": 6,
|
||||
"ti": 774,
|
||||
"model": "sonnet",
|
||||
"seed": 1
|
||||
}
|
||||
]
|
||||
-152
File diff suppressed because one or more lines are too long
@@ -1,140 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""S3 — unblock the whale (func_80144B9C) in the 4 SC07 overlays.
|
||||
|
||||
The whale is matched in 134/138 overlays via the §38 shared-header route: a per-overlay `-O0` split
|
||||
file (`<ov>_o0b.c`) whose entire content is `#include "../shared/func_80144B9C.h"`. gcc-2.7.2 has no
|
||||
per-function optimize pragma, so the opt level is per FILE (§116) — the whale MUST live in its own
|
||||
`-O0` object or it recompiles at -O2 and stops matching.
|
||||
|
||||
The 4 SC07 overlays never got that region: they have `_o0c` but no `_o0b`, and the whale sits in
|
||||
`<ov>_jr_80140608.c` (an -O2 jr split). So this is not a codegen problem at all — it is 3,080
|
||||
instructions of code that is BYTE-IDENTICAL to what is already banked elsewhere (h_exact, relocation
|
||||
payloads included), blocked purely by a missing file boundary.
|
||||
|
||||
Per overlay: carve the range into its own -O0 region (o0_subsplit, which reuses jr_isolate_all's
|
||||
proven plan/config/validation path), re-extract, prove the split alone is BYTE-NEUTRAL, then swap
|
||||
the whale's INCLUDE_ASM for the shared header and prove it BANKS. Revert that overlay on any failure.
|
||||
The whole-binary byte-gate is the sole arbiter (G3/P9); a full R22 follows because config changed.
|
||||
|
||||
Usage: s3_sc07_whale.py [--dry]
|
||||
"""
|
||||
import sys, os, re, subprocess, json
|
||||
|
||||
LO, HI = 0x80144B9C, 0x801457A4
|
||||
OVS = ['ov_SC07_006', 'ov_SC07_007', 'ov_SC07_010', 'ov_SC07_011']
|
||||
PY = '.venv/bin/python'
|
||||
DRY = '--dry' in sys.argv
|
||||
sys.path.insert(0, 'tools')
|
||||
|
||||
|
||||
def sh(*cmd):
|
||||
return subprocess.run(list(cmd), capture_output=True, text=True)
|
||||
|
||||
|
||||
def good_sha(ov):
|
||||
return open(f'config/check.{ov}.sha').read().split()[0]
|
||||
|
||||
|
||||
def build_ok(ov):
|
||||
r = sh('make', '--no-print-directory', 'build', f'BINARY={ov}')
|
||||
return r.returncode == 0 and '[ OK ]' in (r.stdout or ''), (r.stdout or '') + (r.stderr or '')
|
||||
|
||||
|
||||
def revert(ov):
|
||||
sh('git', 'checkout', '--', f'src/{ov}', 'config')
|
||||
sh('git', 'clean', '-fdq', f'src/{ov}')
|
||||
sh('make', '--no-print-directory', 'extract', f'BINARY={ov}')
|
||||
|
||||
|
||||
results = {}
|
||||
for ov in OVS:
|
||||
print(f"\n===== {ov} =====", flush=True)
|
||||
import importlib, corpus
|
||||
for f in (corpus.stubs, corpus.sig, corpus.symbols, corpus.src_files):
|
||||
if hasattr(f, 'cache_clear'):
|
||||
f.cache_clear()
|
||||
if LO not in corpus.stubs(ov):
|
||||
print(" whale is not a live stub here — skipping"); results[ov] = 'not-stub'; continue
|
||||
|
||||
r = sh(PY, 'tools/o0_subsplit.py', ov, '--lo', hex(LO), '--hi', hex(HI),
|
||||
*(['--dry-run'] if DRY else []))
|
||||
out = (r.stdout or '') + (r.stderr or '')
|
||||
print(' [subsplit]', out.strip().splitlines()[-1][:150] if out.strip() else f'rc={r.returncode}')
|
||||
if r.returncode:
|
||||
results[ov] = 'subsplit-fail'; continue
|
||||
if DRY:
|
||||
results[ov] = 'dry'; continue
|
||||
|
||||
if sh('make', '--no-print-directory', 'extract', f'BINARY={ov}').returncode:
|
||||
print(" extract FAILED"); revert(ov); results[ov] = 'extract-fail'; continue
|
||||
|
||||
# The split alone must be BYTE-NEUTRAL — it only moves code between objects.
|
||||
ok, log = build_ok(ov)
|
||||
if not ok:
|
||||
hard = [l for l in log.splitlines() if 'undefined reference' in l or 'error' in l.lower()][:2]
|
||||
print(" split is NOT byte-neutral — reverting:", *hard)
|
||||
revert(ov); results[ov] = 'split-not-neutral'; continue
|
||||
print(" split byte-neutral ✓")
|
||||
|
||||
# Find the new -O0 region file holding the whale and swap the stub for the shared header.
|
||||
for f in (corpus.stubs, corpus.sig, corpus.symbols, corpus.src_files):
|
||||
if hasattr(f, 'cache_clear'):
|
||||
f.cache_clear()
|
||||
rec = corpus.stubs(ov).get(LO)
|
||||
if rec is None:
|
||||
print(" whale vanished from the corpus after the split"); revert(ov); results[ov] = 'lost'; continue
|
||||
tu = rec.path
|
||||
txt = open(tu).read()
|
||||
stub = f'INCLUDE_ASM("{rec.asm_dir}", {rec.symbol});'
|
||||
if stub not in txt:
|
||||
print(f" stub line not found verbatim in {tu}"); revert(ov); results[ov] = 'no-stub-line'; continue
|
||||
print(f" whale now in {os.path.basename(tu)} — swapping in the shared header")
|
||||
new_txt = txt.replace(stub, '#include "../shared/func_80144B9C.h"', 1)
|
||||
# DROP THE AMBIENT DECLS THE HEADER ALSO DECLARES (§8b/§8d).
|
||||
# In the 134 working overlays the whale sits in a CLEAN -O0 file (`common.h` + the header only),
|
||||
# so the TU's own decls of D_80126B58 / D_801274CC / D_801274D0 live in OTHER TUs and never meet
|
||||
# the header's. Here the region was carved out of a jr file, and jr_isolate_all hoists the
|
||||
# parent's file-scope decls into every new region as its `ambient` set — so the same TU now
|
||||
# declares those symbols twice, with the loose-typed spellings the fleet uses
|
||||
# (`extern void *D_801274CC` vs the header's `extern s32 D_801274CC`). The header is byte-proven
|
||||
# across 134 overlays, so the AMBIENT copy is the one to drop, and only in this file.
|
||||
# BOTH axes: the header declares DATA (D_*) and FUNCTION (func_*) symbols, and the ambient set
|
||||
# carried in by the carve can collide on either. The first pass only dropped D_*, and the three
|
||||
# remaining overlays then failed on func_801336E8 / func_8005C324 (the memcpy alias) instead.
|
||||
hdr_syms = set(re.findall(r'\b(?:D_|func_)[0-9A-Fa-f]{8}\b',
|
||||
open('src/shared/func_80144B9C.h').read()))
|
||||
kept, dropped = [], 0
|
||||
for line in new_txt.split('\n'):
|
||||
st = line.strip()
|
||||
# STRIP A TRAILING COMMENT BEFORE THE `;` TEST. The last holdout was
|
||||
# extern void func_8005C324(int,int,int) __asm__("memcpy"); /* Phase-24: ... */
|
||||
# which ends with `*/`, so an endswith(';') test skipped it — the §134 shape yet again.
|
||||
# Safe to drop HERE specifically: after the carve this file holds only the whale, so its
|
||||
# call now emits `func_8005C324` exactly as it does in the 134 overlays where the whale
|
||||
# sits in a clean -O0 file with no alias decl in scope. The parent jr file keeps its alias.
|
||||
st = re.sub(r'/\*.*?\*/\s*$', '', st).strip()
|
||||
st = re.sub(r'//.*$', '', st).strip()
|
||||
if st.startswith('extern ') and st.endswith(';') and '{' not in st:
|
||||
named = set(re.findall(r'\b(?:D_|func_)[0-9A-Fa-f]{8}\b', st))
|
||||
if named and named <= hdr_syms: # every symbol on this line is header-declared
|
||||
dropped += 1
|
||||
continue
|
||||
kept.append(line)
|
||||
if dropped:
|
||||
print(f" dropped {dropped} ambient extern line(s) the shared header already declares")
|
||||
open(tu, 'w').write('\n'.join(kept))
|
||||
|
||||
ok, log = build_ok(ov)
|
||||
if ok:
|
||||
print(f" ✅ BANKED — {ov} byte-identical with the whale from source")
|
||||
results[ov] = 'BANKED'
|
||||
else:
|
||||
hard = [l for l in log.splitlines()
|
||||
if 'undefined reference' in l or 'conflicting' in l or 'error' in l.lower()][:2]
|
||||
print(" gate refused:", *[h.strip()[:150] for h in hard])
|
||||
revert(ov); results[ov] = 'gate-fail'
|
||||
|
||||
print("\n=== S3 SUMMARY ===")
|
||||
for ov, v in results.items():
|
||||
print(f" {ov:<14} {v}")
|
||||
print("\nNEXT: R22 (config changed => full blast radius): make clean && make extract-all && make check-all")
|
||||
@@ -1,9 +0,0 @@
|
||||
extern void func_8017CFCC(void);
|
||||
extern void func_800167B8(s32 a0);
|
||||
|
||||
s32 func_8017CDD8(s32 a0) {
|
||||
func_8017CFCC();
|
||||
func_800167B8(0);
|
||||
*(u8 *)(a0 + 0x15) += 1;
|
||||
return 0;
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
extern void func_8017CF98(void);
|
||||
|
||||
s32 func_8017CE7C(s32 a0) {
|
||||
func_8017CF98();
|
||||
*(s32 *)(a0 + 0x28) = 10;
|
||||
*(u8 *)(a0 + 0x15) += 1;
|
||||
return 0;
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
extern s32 D_80126954;
|
||||
extern s32 D_8012695C;
|
||||
extern s16 D_80126968;
|
||||
extern s16 D_8012696A;
|
||||
extern s16 D_8012696C;
|
||||
extern s16 D_80126976;
|
||||
extern s16 D_80126978;
|
||||
extern s16 D_8012697A;
|
||||
extern u8 D_80126948[];
|
||||
extern void func_8012A018(s32 a0, s32 a1);
|
||||
extern void func_8012A094(s32 a0);
|
||||
extern void func_8017D500(void *a0);
|
||||
|
||||
void func_8017D468(void) {
|
||||
D_80126954 = 0x12C;
|
||||
D_8012695C = 0x384;
|
||||
D_80126968 = 0x155;
|
||||
D_8012696A = 0x800;
|
||||
D_8012696C = 0;
|
||||
D_80126976 = 0;
|
||||
D_80126978 = 0;
|
||||
D_8012697A = 0;
|
||||
func_8012A018((s32)func_8017D500, 0);
|
||||
func_8012A094((s32)D_80126948);
|
||||
func_8017D500(D_80126948);
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
extern s32 func_8012C354(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, s32 a1);
|
||||
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2);
|
||||
extern u8 D_80186448[];
|
||||
extern s32 D_801A9DC0[];
|
||||
extern s32 D_801A9DA0[];
|
||||
|
||||
void func_80180A4C(s32 a0) {
|
||||
s32 t;
|
||||
|
||||
if (func_8012C354(a0, (s32)D_801A9DC0) != 0) {
|
||||
*(u8 *)(a0 + 0xC0) = 1;
|
||||
|
||||
t = *(s32 *)(a0 + 0xC4);
|
||||
*(s32 *)(a0 + 0xBC) = (s32)D_801A9DA0;
|
||||
*(s32 *)(a0 + 0xC4) = t | 0x2;
|
||||
|
||||
func_8012A828(a0, (s32)D_80186448);
|
||||
|
||||
*(s16 *)(a0 + 0x2) = 1;
|
||||
*(u8 *)(a0 + 0x75) = 0;
|
||||
*(s16 *)(a0 + 0xFE) = 1;
|
||||
|
||||
func_8012C658(0x164, 0x555, a0);
|
||||
func_8012C658(0x164, 0xAAA, a0);
|
||||
func_8012C658(0x164, 0x1000, a0);
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
extern s32 func_8012C354(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, s32 a1);
|
||||
extern u8 D_80186448[];
|
||||
extern u8 D_801A9E84[];
|
||||
extern u8 D_801A9DA0[];
|
||||
|
||||
void func_80180B0C(void *a0) {
|
||||
if (func_8012C354((s32)a0, (s32)D_801A9E84) != 0) {
|
||||
void *a2 = *(void **)((char *)a0 + 0x20);
|
||||
|
||||
*(s32 *)((char *)a2 + 0x4) |= 0x80000000;
|
||||
*(u8 *)((char *)a0 + 0xC0) = 1;
|
||||
|
||||
*(s32 *)((char *)a0 + 0xBC) = (s32)D_801A9DA0;
|
||||
*(s32 *)((char *)a0 + 0xC4) |= 0x2;
|
||||
|
||||
func_8012A828((s32)a0, (s32)D_80186448);
|
||||
|
||||
*(u16 *)((char *)a0 + 0x2) = 1;
|
||||
*(u8 *)((char *)a0 + 0x75) = 0;
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
extern void func_8012CBCC(s32 a0);
|
||||
extern void func_8012E688(void*, s32, s32);
|
||||
|
||||
void func_80180BFC(s32 a0) {
|
||||
if (((s32 (*)(s32))func_8012CBCC)(a0) & 0x2000) {
|
||||
s16 v = *(s16 *)(a0 + 0x70);
|
||||
if (v != 0) {
|
||||
*(s16 *)(a0 + 0x2) = 2;
|
||||
((void (*)(void*, s32, s32))func_8012E688)((void *)a0, 0xBA2, 0);
|
||||
} else {
|
||||
void *p = *(void **)(a0 + 0x20);
|
||||
*(s16 *)(a0 + 0x2) = 3;
|
||||
*(s32 *)(p + 0x4) |= 0x80000000;
|
||||
*(s32 *)(a0 + 0x1C) = 0x1E;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
extern s32 func_8012BD14(s32 a0);
|
||||
extern void func_80143970(void *a0);
|
||||
extern void func_8012E688(void *a0, s32 a1, s32 a2);
|
||||
|
||||
void func_80180E24(s32 a0) {
|
||||
s32 ret = func_8012BD14(a0);
|
||||
if (ret <= 0x64000) {
|
||||
typedef struct { s32 f0; s32 f1; } Struct;
|
||||
Struct *ptr = *(Struct **)(a0 + 0x20);
|
||||
*(s16 *)(a0 + 0x2) = 1;
|
||||
ptr->f1 = ptr->f1 & 0x7FFFFFFF;
|
||||
func_80143970((void *)a0);
|
||||
func_8012E688((void *)a0, 0xBA2, 0);
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
extern s16 D_801AA252[];
|
||||
extern void func_8012DFD4(u8 *a0);
|
||||
|
||||
void func_80181148(s32 a0) {
|
||||
s32 a1 = a0;
|
||||
s32 t = *(s32 *)(a1 + 0x1C) - 1;
|
||||
*(s32 *)(a1 + 0x1C) = t;
|
||||
if (t == 0) {
|
||||
s16 idx = *(s16 *)(a1 + 0xFC);
|
||||
s32 val = D_801AA252[idx * 4];
|
||||
|
||||
*(s16 *)(a1 + 0x12) = -*(u16 *)(a1 + 0x12);
|
||||
*(s16 *)(a1 + 0x16) = -*(u16 *)(a1 + 0x16);
|
||||
*(s16 *)(a1 + 0x1A) = -*(u16 *)(a1 + 0x1A);
|
||||
*(s16 *)(a1 + 0x2) = 1;
|
||||
*(s32 *)(a1 + 0x1C) = val;
|
||||
}
|
||||
func_8012DFD4((u8 *)a0);
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
struct B16_8018584C { s32 w[4]; };
|
||||
|
||||
extern struct B16_8018584C D_800A5E88;
|
||||
extern struct B16_8018584C D_801CCC80;
|
||||
extern s32 D_800A5E90;
|
||||
extern s32 func_8004787C(s32 a0);
|
||||
extern void func_80028620(s32 a0, void *a1);
|
||||
|
||||
void func_8018584C(void *a0) {
|
||||
s32 t;
|
||||
|
||||
D_800A5E88 = D_801CCC80;
|
||||
t = func_8004787C(*(s16 *)((s32)a0 + 0xFE));
|
||||
if (t < 0) t += 0x1FF;
|
||||
D_800A5E90 = (t >> 9) + 8;
|
||||
*(u16 *)((s32)a0 + 0xFE) = (*(u16 *)((s32)a0 + 0xFE) + 0x71) & 0xFFF;
|
||||
func_80028620(0, &D_800A5E88);
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
extern s16 func_80128CFC(u16 a0);
|
||||
|
||||
void func_8017CA34(void *a0) {
|
||||
void *v1 = *(void **)(a0 + 0xDC);
|
||||
s16 v0;
|
||||
|
||||
if (*(u8 *)(v1 + 1) == 0) {
|
||||
v0 = 1;
|
||||
} else {
|
||||
v0 = *(s16 *)(a0 + 0x108);
|
||||
if (v0 == 0) {
|
||||
u16 arg = *(u16 *)(v1 + 2);
|
||||
v0 = func_80128CFC(arg);
|
||||
*(s16 *)(a0 + 0x108) = v0;
|
||||
}
|
||||
v0 = *(s16 *)(a0 + 0x108);
|
||||
}
|
||||
|
||||
if (v0 != 0) {
|
||||
*(u16 *)(a0 + 0x2) += 1;
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
extern void func_8012C1B8(void);
|
||||
extern void func_8001C214(s32 a0, s32 a1);
|
||||
extern void func_8012A828(s32 a0, void *a1);
|
||||
extern void func_800D20C0(void *a0, void *a1, s32 a2);
|
||||
extern void func_800D23D0(void *a0);
|
||||
|
||||
void func_8017CAB4(s32 a0) {
|
||||
s32 v0;
|
||||
s32 *s0_ptr;
|
||||
u16 sp[8];
|
||||
|
||||
s0_ptr = *(s32 **)(a0 + 0xDC);
|
||||
v0 = ((s32 (*)(void))func_8012C1B8)();
|
||||
*(s32 *)(a0 + 0x20) = v0;
|
||||
if (v0 == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
func_8001C214(v0, s0_ptr[1]);
|
||||
func_8012A828(a0, (void *)s0_ptr[2]);
|
||||
|
||||
*(s16 *)(a0 + 0x5C) = 0;
|
||||
*(s32 *)(a0 + 0x58) = 0;
|
||||
|
||||
sp[0] = *(u16 *)(a0 + 0x6);
|
||||
sp[1] = *(u16 *)(a0 + 0xA);
|
||||
sp[2] = *(u16 *)(a0 + 0xE);
|
||||
|
||||
func_800D20C0(&sp[0], &sp[4], 0);
|
||||
func_800D23D0(&sp[4]);
|
||||
|
||||
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = sp[5] + 0x800;
|
||||
*(u16 *)(a0 + 0x2) += 1;
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
extern s32 func_80178B18(s32 param_1, s32 param_2);
|
||||
|
||||
void func_8017CB68(s32 a0) {
|
||||
s32 ptr1 = *(s32 *)(a0 + 0xD0);
|
||||
s32 ptr2 = *(s32 *)(a0 + 0xDC);
|
||||
s16 val = *(u16 *)(ptr1 + 0x1A) - 0xC0;
|
||||
|
||||
*(s16 *)(ptr1 + 0x1A) = val;
|
||||
*(s16 *)(ptr1 + 0x18) = val;
|
||||
|
||||
if (val < 0) {
|
||||
*(s16 *)(ptr1 + 0x0) = 0;
|
||||
func_80178B18(a0, *(s32 *)(ptr2 + 0xC));
|
||||
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1;
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
extern void func_800291A0(s32, s32);
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
|
||||
void func_8017CBD4(s32 a0) {
|
||||
extern void func_8002955C(void);
|
||||
extern s32 func_8002953C(void);
|
||||
extern void func_8002AC00(s32 arg0);
|
||||
u8 *p = *(u8 **)(a0 + 0xDC);
|
||||
|
||||
if (func_80178970() != 0) {
|
||||
((void (*)(s32))func_80178D18)(a0);
|
||||
func_800291A0(*p + 0x3A, 1);
|
||||
func_8002955C();
|
||||
if ((u32)func_8002953C() >= 0x23U) {
|
||||
func_8002AC00(0x25);
|
||||
}
|
||||
*(u16 *)(a0 + 2) += 1;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
void func_8017CC80(s32 a0) {
|
||||
s32 rand_val = rand();
|
||||
func_8017BEBC(a0, rand_val & 0xF);
|
||||
if (func_80178970(a0) == 0) {
|
||||
return;
|
||||
}
|
||||
func_80178D18(a0);
|
||||
*(s16 *)(a0 + 0x2) = 1;
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
extern int func_80178970(void);
|
||||
extern void func_80178D18(void);
|
||||
|
||||
void func_8017D5C4(s32 a0) {
|
||||
if (func_80178970() != 0) {
|
||||
((void (*)(s32))func_80178D18)(a0);
|
||||
*(s16 *)(a0 + 2) = 7;
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
extern s32 func_8012BD14(s32 a0);
|
||||
extern s32 func_80178BF8(); /* TU-canonical (ov_SC03_014_jr_801848E4.c L2534) */
|
||||
extern void func_80172710(void);
|
||||
|
||||
s32 func_801859B0(void *a0)
|
||||
{
|
||||
if (func_8012BD14(*(s32 *)((s32)a0 + 0x64)) > 0x4000) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
*(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x2) = 2;
|
||||
func_80178BF8();
|
||||
return (s32)func_80172710;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user