phase12: match three continuation claims (733 bodies / 742 regions)

This commit is contained in:
Christopher Williams
2026-09-25 09:42:14 -04:00
parent 1f14787b62
commit ade236af14
7 changed files with 108 additions and 7 deletions
+2 -2
View File
@@ -959,7 +959,7 @@
952 0x801007E0 0x80100808 40 fallthrough 3 frame 1 - 1
#
# listed=952
# excluded_already_registered=737
# excluded_already_registered=740
# excluded_bad_extent_start=8
# excluded_degenerate_body=252
# excluded_delay_slot_start=5
@@ -968,6 +968,6 @@
# excluded_low_confidence_grade=90
# excluded_named_exclusion=9
# excluded_no_extent=0
# excluded_recorded_negative=91
# excluded_recorded_negative=88
# excluded_restores_unsaved=11
# excluded_trapping_arith=48
1 # Syphon Filter 3 (USA) match worklist.
959 952
960 #
961 # listed=952
962 # excluded_already_registered=737 # excluded_already_registered=740
963 # excluded_bad_extent_start=8
964 # excluded_degenerate_body=252
965 # excluded_delay_slot_start=5
968 # excluded_low_confidence_grade=90
969 # excluded_named_exclusion=9
970 # excluded_no_extent=0
971 # excluded_recorded_negative=91 # excluded_recorded_negative=88
972 # excluded_restores_unsaved=11
973 # excluded_trapping_arith=48
+3
View File
@@ -216,6 +216,7 @@
0x80038788 0x80038790 src/func_80038788.c
0x80038790 0x8003879C src/func_80038790.c
0x80038D48 0x80038DD8 src/func_80038D48.c
0x8003A5F4 0x8003A644 src/func_8003A5F4.c
0x8003A644 0x8003A6E0 src/func_8003A644.c
0x8003A9C8 0x8003AAB8 src/func_8003A9C8.c
0x8003AAE8 0x8003AB20 src/func_8003AAE8.c
@@ -390,6 +391,7 @@
0x8007A404 0x8007A428 src/func_8007A404.c
0x8007A428 0x8007A4FC src/func_8007A428.c
0x8007BC64 0x8007BD0C src/func_8007BC64.c
0x8007C408 0x8007C4A8 src/func_8007C408.c
0x8007C4A8 0x8007C4EC src/func_8007C4A8.c
0x8007C4EC 0x8007C524 src/func_8007C4EC.c
0x8007D5FC 0x8007D680 src/func_8007D5FC.c
@@ -720,6 +722,7 @@
0x80107AA0 0x80107AE0 src/func_80107AA0.c
0x80107AE0 0x80107B20 src/func_80107AE0.c
0x80107B20 0x80107B38 src/func_80107B20.c
0x80107C5C 0x80107CCC src/func_80107C5C.c maspsx=nopmarker
0x80107CCC 0x80107D18 src/func_80107CCC.c cc1bin=gcc-2.8.1-psx
0x80107DE8 0x80107E68 src/func_80107DE8.c maspsx=epilogue
0x80107E68 0x80107E74 src/func_80107E68.c
1 # Code-region registry: one C region per matched function.
216 0x80038788
217 0x80038790
218 0x80038D48
219 0x8003A5F4
220 0x8003A644
221 0x8003A9C8
222 0x8003AAE8
391 0x8007A404
392 0x8007A428
393 0x8007BC64
394 0x8007C408
395 0x8007C4A8
396 0x8007C4EC
397 0x8007D5FC
722 0x80107AA0
723 0x80107AE0
724 0x80107B20
725 0x80107C5C
726 0x80107CCC
727 0x80107DE8
728 0x80107E68
+5 -5
View File
@@ -6,11 +6,11 @@
## STATE — SOLO CONTINUATION, 2026-09-24 (current)
**730 bodies / 739 regions**, from 685 / 694 at the last session stop — **+45 bodies / +45 regions**.
The Phase 12 milestone remains 750 bodies, so **+20 remains**. The promoted whole-binary gate is green:
`c_regions=739`, `differing_bytes=0`, SHA-1
**733 bodies / 742 regions**, from 685 / 694 at the last session stop — **+48 bodies / +48 regions**.
The Phase 12 milestone remains 750 bodies, so **+17 remains**. The promoted whole-binary gate is green:
`c_regions=742`, `differing_bytes=0`, SHA-1
`e173426c157384ebf1b6caf8c6fea18a85a14af9`; 348 synthetic tests pass and extents report
`regions=739 disagreements=0 result=AGREE`.
`regions=742 disagreements=0 result=AGREE`.
The requested second batch of 20 is complete. Twenty additional bodies are now matched:
`0x800BC9C4`, `0x800BC8C4`, `0x8006BB0C`, `0x8002D17C`, `0x801029A0`, `0x80055958`,
@@ -24,7 +24,7 @@ Final clean verification (2026-09-25): `make clean && make all`, `make worklist`
`make extents-verify`, and `make check` all exited 0. Both clean assembly and code rebuilds
matched the USA executable byte-for-byte; each is 1,886,208 bytes with SHA-1
`e173426c157384ebf1b6caf8c6fea18a85a14af9`. The final worklist is 952 rows and the extents
check reports `regions=739 disagreements=0 result=AGREE`.
check reports `regions=742 disagreements=0 result=AGREE`.
## STATE — SESSION STOP, 2026-09-24 23:35 (historical; superseded by the state above, kept for provenance)
**685 bodies / 694 regions**, from 602 / 611 at the Phase 11 close — **+83 bodies**. **Milestone 750 was NOT
+13
View File
@@ -2520,6 +2520,19 @@ regeneration remains 952 rows.
**Count after task 33: 730 bodies / 739 regions (+128 bodies from the Phase 12 open baseline;
+20 remain to milestone 750).**
### Worker B continuation — three more exact claims
* `0x8003A5F4..0x8003A644`, 80/80, byte-offset nested object stores and repeated `a0+12` reloads.
* `0x80107C5C..0x80107CCC`, 112/112, doubly-linked-list unlink with `maspsx=nopmarker`.
* `0x8007C408..0x8007C4A8`, 160/160, nested-if/single-return result shape.
All three were freshly verified, merged against the current registry, and the resulting candidate
whole-binary gate passed at `c_regions=742`, zero differing bytes, expected SHA-1, exit 0. `make check`
passed with 348 tests and extents `regions=742 disagreements=0`; worklist regeneration reports 952 rows.
**Count after task 36: 733 bodies / 742 regions (+131 bodies from the Phase 12 open baseline;
+17 remain to milestone 750).**
### Duplicate-claim guard incident
A later autonomous draft attempted `0x8006FAEC`, but the merge check showed that exact region was
+25
View File
@@ -0,0 +1,25 @@
/*
* func_8003A5F4 — 80 bytes at 0x8003A5F4..0x8003A644
*
* Store a value at byte offset 288 of a nested object and update its bit-9
* field at byte offset 260, returning success only when the nested pointer is
* present. Both nested accesses are intentionally re-read from a0+12.
*
* The object layout and flag meaning are address-based hypotheses; the byte
* match is the evidence for this region.
*/
int func_8003A5F4(int a0, int a1, int a2)
{
if (a0 == 0)
return 0;
if (*(int **)(a0 + 12) != 0) {
*(int *)((char *)*(int **)(a0 + 12) + 288) = a1;
*(int *)((char *)*(int **)(a0 + 12) + 260) =
(*(int *)((char *)*(int **)(a0 + 12) + 260) & 0xfffffdff) |
((a2 & 1) << 9);
return 1;
}
return 0;
}
+32
View File
@@ -0,0 +1,32 @@
/*
* func_8007C408 — 160 bytes at 0x8007C408..0x8007C4A8
*
* Four nested guards gate a callback, after which the result byte is set to
* 100 and bit 0x4000 is set. The result variable remains live through one
* shared return, which preserves the original branch-delay copies.
*
* The field meanings and callback are address-based hypotheses; the byte match
* is the evidence for this region.
*/
void func_80043DC4(int, int);
int func_8007C408(int a0)
{
int s0 = *(int *)(a0 + 28);
int r = 0;
if (*(unsigned char *)(*(int *)(a0 + 16) + 12) == 2) {
if (*(unsigned char *)(s0 + 22) == 0) {
if ((*(int *)(*(int *)(s0 + 8) + 36) & 0x1F0000) == 0) {
if ((*(int *)s0 & 0x4000) == 0) {
func_80043DC4(*(short *)(a0 + 2), 12);
r = 1;
*(char *)(s0 + 22) = 100;
*(int *)s0 |= 0x4000;
}
}
}
}
return r;
}
+28
View File
@@ -0,0 +1,28 @@
/*
* func_80107C5C — 112 bytes at 0x80107C5C..0x80107CCC
*
* Unlink a node from a doubly linked list, updating the head global when the
* previous link is null, then clear the node links and its halfword flag.
*
* REGION TOKEN: `maspsx=nopmarker` (the original preserves a required
* load-delay nop between the back-link load and the following store).
*/
extern int D_801221C4;
void func_80107C5C(int *a0)
{
if (a0 == 0)
return;
if (*(short *)((char *)a0 + 20) == 0)
return;
if (a0[0] != 0)
*(int *)(a0[0] + 4) = a0[1];
else
D_801221C4 = a0[1];
if (a0[1] != 0)
*(int *)(a0[1]) = a0[0];
*(short *)((char *)a0 + 20) = 0;
a0[0] = 0;
a0[1] = 0;
}