From 1f8eb7e594eaccd360e09853fd02340e7a3a2c97 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Thu, 1 Oct 2026 12:24:09 -0600 Subject: [PATCH] T3.c1: rung S exemplar ov_SC05_010_jr_80180F84: members + CAST_* respells, ledger t3_ex1 --- .run/P36/delever/calibration.json | 314 +++++++++++----------- phase-ends/current/logs/T3.c1.md | 39 +++ src/ov_SC05_010/ov_SC05_010_jr_80180F84.c | 130 ++++----- 3 files changed, 261 insertions(+), 222 deletions(-) create mode 100644 phase-ends/current/logs/T3.c1.md diff --git a/.run/P36/delever/calibration.json b/.run/P36/delever/calibration.json index 2940d4d186..327d58cc93 100644 --- a/.run/P36/delever/calibration.json +++ b/.run/P36/delever/calibration.json @@ -1,7 +1,7 @@ { - "head": "b5e18e5f83", + "head": "3507628e40", "stamp": "588cbf38c6e4", - "generated": "2026-10-01 10:57", + "generated": "2026-10-01 12:16", "aliases": [ "main", "md_SC07_004", @@ -21,176 +21,176 @@ "main": { "objects": 85, "identical": 85, - "seconds": 7.198999999999999, - "mean_s": 0.085 + "seconds": 8.519999999999998, + "mean_s": 0.1 }, "md_SC07_004": { "objects": 1, "identical": 1, - "seconds": 0.516, - "mean_s": 0.516 + "seconds": 0.602, + "mean_s": 0.602 }, "ov_SC03_015": { "objects": 32, "identical": 32, - "seconds": 5.2540000000000004, - "mean_s": 0.164 + "seconds": 6.038, + "mean_s": 0.189 }, "ov_SC04_011": { "objects": 28, "identical": 28, - "seconds": 4.247, - "mean_s": 0.152 + "seconds": 5.418000000000002, + "mean_s": 0.194 } }, "per_object_seconds": { - "build/src/800.o": 0.764, - "build/src/800_b.o": 0.095, - "build/src/800_b_2.o": 0.328, - "build/src/800_b_o0a.o": 0.058, - "build/src/800_c.o": 0.206, - "build/src/800b2.o": 0.078, - "build/src/apicard1.o": 0.094, - "build/src/apicard2.o": 0.061, - "build/src/apicard3.o": 0.084, - "build/src/apicard4.o": 0.062, - "build/src/apicard5.o": 0.079, - "build/src/apicard6.o": 0.093, - "build/src/apicard7.o": 0.071, - "build/src/boot.o": 0.095, - "build/src/gap.o": 0.07, - "build/src/libapi1.o": 0.084, - "build/src/libapi2.o": 0.067, - "build/src/libc2_1.o": 0.068, - "build/src/libc2_2.o": 0.063, - "build/src/libcd1.o": 0.074, - "build/src/libcd2.o": 0.066, - "build/src/libetc.o": 0.067, - "build/src/libgpu.o": 0.066, - "build/src/libgpu2.o": 0.071, - "build/src/libgs1.o": 0.066, - "build/src/libgs2.o": 0.062, - "build/src/libgs3.o": 0.06, - "build/src/libgs4.o": 0.066, - "build/src/libgs5.o": 0.072, - "build/src/libgs6.o": 0.076, - "build/src/libgs7.o": 0.06, - "build/src/libgs8.o": 0.065, - "build/src/libgte1.o": 0.069, - "build/src/libgte10.o": 0.067, - "build/src/libgte11.o": 0.062, - "build/src/libgte12.o": 0.064, - "build/src/libgte13.o": 0.076, - "build/src/libgte14.o": 0.071, - "build/src/libgte15.o": 0.073, - "build/src/libgte16.o": 0.074, - "build/src/libgte17.o": 0.072, - "build/src/libgte18.o": 0.07, - "build/src/libgte19.o": 0.068, - "build/src/libgte2.o": 0.07, - "build/src/libgte20.o": 0.073, - "build/src/libgte21.o": 0.07, - "build/src/libgte22.o": 0.07, - "build/src/libgte23.o": 0.068, - "build/src/libgte24.o": 0.07, - "build/src/libgte25.o": 0.073, - "build/src/libgte26.o": 0.068, - "build/src/libgte27.o": 0.068, - "build/src/libgte28.o": 0.064, - "build/src/libgte29.o": 0.068, - "build/src/libgte3.o": 0.072, - "build/src/libgte30.o": 0.064, - "build/src/libgte4.o": 0.06, - "build/src/libgte5.o": 0.062, - "build/src/libgte6.o": 0.071, - "build/src/libgte7.o": 0.064, - "build/src/libgte8.o": 0.071, - "build/src/libgte9.o": 0.062, - "build/src/libmcrd1.o": 0.077, - "build/src/libmcrd2.o": 0.068, - "build/src/libpad1.o": 0.078, - "build/src/libpad2.o": 0.069, - "build/src/sgap.o": 0.064, - "build/src/sgap_2.o": 0.062, - "build/src/sgap_3.o": 0.066, - "build/src/sgap_4.o": 0.081, - "build/src/sgap_5.o": 0.077, - "build/src/sgap_6.o": 0.066, - "build/src/sgap_8.o": 0.079, - "build/src/snd1.o": 0.079, - "build/src/snd10.o": 0.077, - "build/src/snd11.o": 0.067, - "build/src/snd12.o": 0.078, - "build/src/snd2.o": 0.111, - "build/src/snd3.o": 0.077, - "build/src/snd4.o": 0.084, - "build/src/snd5.o": 0.071, - "build/src/snd6.o": 0.079, - "build/src/snd7.o": 0.077, - "build/src/snd8.o": 0.087, - "build/src/snd9.o": 0.08, - "build/src/md_SC07_004/md_SC07_004.o": 0.516, - "build/src/ov_SC03_015/ov_SC03_015.o": 0.161, - "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.505, - "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.428, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.083, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.082, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.146, - "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.182, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.152, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.109, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.117, - "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.217, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.091, - "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.188, - "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.131, - "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.086, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.079, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.102, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.463, - "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.287, - "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.12, - "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.222, - "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.076, - "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.109, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.084, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.178, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.213, - "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.067, - "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.282, - "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.057, - "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.077, - "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.077, - "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.083, - "build/src/ov_SC04_011/ov_SC04_011.o": 0.135, - "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.44, - "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.349, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.063, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.068, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.135, - "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.154, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.112, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.086, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.069, - "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.181, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.081, - "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.16, - "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.105, - "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.082, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.085, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.105, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.366, - "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.223, - "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.107, - "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.191, - "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.069, - "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.104, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.077, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.108, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.465, - "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.061, - "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.066 + "build/src/800.o": 0.9, + "build/src/800_b.o": 0.111, + "build/src/800_b_2.o": 0.368, + "build/src/800_b_o0a.o": 0.081, + "build/src/800_c.o": 0.239, + "build/src/800b2.o": 0.093, + "build/src/apicard1.o": 0.089, + "build/src/apicard2.o": 0.084, + "build/src/apicard3.o": 0.105, + "build/src/apicard4.o": 0.073, + "build/src/apicard5.o": 0.102, + "build/src/apicard6.o": 0.098, + "build/src/apicard7.o": 0.121, + "build/src/boot.o": 0.128, + "build/src/gap.o": 0.093, + "build/src/libapi1.o": 0.081, + "build/src/libapi2.o": 0.071, + "build/src/libc2_1.o": 0.081, + "build/src/libc2_2.o": 0.073, + "build/src/libcd1.o": 0.1, + "build/src/libcd2.o": 0.079, + "build/src/libetc.o": 0.081, + "build/src/libgpu.o": 0.09, + "build/src/libgpu2.o": 0.086, + "build/src/libgs1.o": 0.08, + "build/src/libgs2.o": 0.081, + "build/src/libgs3.o": 0.074, + "build/src/libgs4.o": 0.079, + "build/src/libgs5.o": 0.077, + "build/src/libgs6.o": 0.1, + "build/src/libgs7.o": 0.081, + "build/src/libgs8.o": 0.071, + "build/src/libgte1.o": 0.083, + "build/src/libgte10.o": 0.075, + "build/src/libgte11.o": 0.076, + "build/src/libgte12.o": 0.088, + "build/src/libgte13.o": 0.083, + "build/src/libgte14.o": 0.09, + "build/src/libgte15.o": 0.074, + "build/src/libgte16.o": 0.085, + "build/src/libgte17.o": 0.079, + "build/src/libgte18.o": 0.08, + "build/src/libgte19.o": 0.077, + "build/src/libgte2.o": 0.078, + "build/src/libgte20.o": 0.08, + "build/src/libgte21.o": 0.075, + "build/src/libgte22.o": 0.085, + "build/src/libgte23.o": 0.09, + "build/src/libgte24.o": 0.082, + "build/src/libgte25.o": 0.077, + "build/src/libgte26.o": 0.079, + "build/src/libgte27.o": 0.087, + "build/src/libgte28.o": 0.087, + "build/src/libgte29.o": 0.086, + "build/src/libgte3.o": 0.09, + "build/src/libgte30.o": 0.091, + "build/src/libgte4.o": 0.107, + "build/src/libgte5.o": 0.094, + "build/src/libgte6.o": 0.077, + "build/src/libgte7.o": 0.074, + "build/src/libgte8.o": 0.082, + "build/src/libgte9.o": 0.084, + "build/src/libmcrd1.o": 0.09, + "build/src/libmcrd2.o": 0.083, + "build/src/libpad1.o": 0.089, + "build/src/libpad2.o": 0.093, + "build/src/sgap.o": 0.1, + "build/src/sgap_2.o": 0.077, + "build/src/sgap_3.o": 0.082, + "build/src/sgap_4.o": 0.093, + "build/src/sgap_5.o": 0.079, + "build/src/sgap_6.o": 0.08, + "build/src/sgap_8.o": 0.085, + "build/src/snd1.o": 0.099, + "build/src/snd10.o": 0.084, + "build/src/snd11.o": 0.08, + "build/src/snd12.o": 0.074, + "build/src/snd2.o": 0.091, + "build/src/snd3.o": 0.079, + "build/src/snd4.o": 0.082, + "build/src/snd5.o": 0.083, + "build/src/snd6.o": 0.088, + "build/src/snd7.o": 0.089, + "build/src/snd8.o": 0.074, + "build/src/snd9.o": 0.081, + "build/src/md_SC07_004/md_SC07_004.o": 0.602, + "build/src/ov_SC03_015/ov_SC03_015.o": 0.174, + "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.626, + "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.475, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.088, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.087, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.164, + "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.199, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.154, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.123, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.091, + "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.232, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.105, + "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.225, + "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.122, + "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.081, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.093, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.125, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.574, + "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.322, + "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.133, + "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.251, + "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.097, + "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.141, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.099, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.219, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.251, + "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.084, + "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.344, + "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.076, + "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.095, + "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.084, + "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.104, + "build/src/ov_SC04_011/ov_SC04_011.o": 0.177, + "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.549, + "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.435, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.081, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.078, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.163, + "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.209, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.154, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.111, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.099, + "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.233, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.104, + "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.218, + "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.135, + "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.098, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.107, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.137, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.463, + "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.287, + "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.148, + "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.23, + "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.097, + "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.134, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.099, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.145, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.58, + "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.069, + "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.078 }, "ok": true, - "seconds": 2.1 + "seconds": 2.6 } diff --git a/phase-ends/current/logs/T3.c1.md b/phase-ends/current/logs/T3.c1.md new file mode 100644 index 0000000000..f9108223f2 --- /dev/null +++ b/phase-ends/current/logs/T3.c1.md @@ -0,0 +1,39 @@ +# T3.c1 — rung S per-site classes, CAST_* respell, --only glob; exemplar apply + +## Change +- `tools/restruct.py` + - `s_edits(..., why=None)` / `s_body_edits(..., why=None)`: record {id(site): skip reason} (index, negative-offset, no-field, aggregate-field, width, sign, pointee, overlap). + - `site_row(..., cause=None)`: `cause` on every site. + - new `S_KEPT_MACRO`, `S_RESPELL_VERDICTS`, `site_class()` (order: MISALIGNED > SIGN > WIDTH(width skip / overlap / drop_overlaps loser) > SCHED-ALIAS(kept S2/KEPT-ALL edit) > NON-STRUCT(base not typed in body_base_type.json; an indexed / negative untyped site → INDEX / NEGATIVE-OFFSET) > other skip uppercased), `respell_edit()` (P-form `*(T *)(p + k)` → `CAST_(T, p, k)`; refuses no literal `+ k`, a lower-precedence op in p, comments inside, or p/k not reparsing to the site's base/off), `s_site_rows()` (every RAW_FORMS site of the body, source order; respells never overlap an accepted edit or each other), `typed_bases_of()` (bases bbt types but the plan does not draw → RESIDUAL(TYPE-NOT-CANONICAL|TYPE-NOT-VISIBLE)). + - `work_file_S`: replaces the old site loop (body hint / KEPT(overlap-edit)); respells composed with accepted edits (`compose_text(base_text, accepted + resp + inserts)`, or `resp` alone for KEPT-ALL) → proved by the final whole-file judge. No-edit body with respellable kept sites → verdict `KEPT`. REFUSED body: edit sites stay REFUSED, nothing respelled. `--recipes` (try): no respell (recipes need raw kept sites). `row["hint"]` unchanged. `out/row["respelled"]` counts. + - `matches_only`: glob items (`*?[`) fnmatch the path or the `src/` component. + - `--try-file` prints full site verdicts, non-member sites, and the respelled `CAST_` lines (was `verdict.split("(")[0]`). + - selftest +8: class order, fixture `FIXTURE_TU_S2`/`fx_c` (S2 body: MEMBER, KEPT(SIGN|SCHED-ALIAS|MISALIGNED|NON-STRUCT|WIDTH), RESIDUAL(NO-FIELD|NEGATIVE-OFFSET)), cause present, respell text + final IDENTICAL + respelled 5, census backs all 5 (unbacked 0), negative (NO-SITE row backs nothing), respell_edit refusals, `--only ov_*` glob. Existing all-DIFFERS stub now IDENTICAL for the final tag (`…F`) only (the respelled-only final text is judged). +- `tools/type_census.py:1963` `BACKED_S_VERDICTS` += `MEMBERS`, `S+A` (old value kept in comment). S+A: a body whose levers came off after respell keeps verdict S+A; without it its macros would be unbacked. + +## Commands +- `restruct.py --selftest` → 85/85 OK; `type_census.py --selftest` → 50/50 OK. +- `make kit-corpus` → ok; `make tools-health` → `tools-health: OK`. +- commit 3ff15ee462 (tool), 3507628e40 (try-file print). +- `delever_oracle --snapshot-baseline` + `--calibrate ov_SC04_011 ov_SC03_015 md_SC07_004 main -j 16` → 146/146 OK (rerun after the 2nd commit: R56 refused the apply at the stale calibration). +- `restruct.py --selftest --real` → 90/90 OK. +- `--try-file … func_801814AC` → S2, final IDENTICAL; `global:D_801C7E30+0x34 store KEPT(SCHED-ALIAS)` → `CAST_ALIAS(u16, D_801C7E30, 0x34) = 0;` (local type in try mode). +- `--apply --rung S --batch 1 --only src/ov_SC05_010/ov_SC05_010_jr_80180F84.c --label t3_ex1 -j 12` → rc 0, final 1/1 IDENTICAL, 3 bodies, members 62 kept 16 skipped 36, compiles 21; WALL 25.5 s. +- `make check BINARY=ov_SC05_010` → BYTE-IDENTICAL. +- R22 `make clean && make extract-all JOBS=16 && make check-all JOBS=16` → 218 passed, 0 failed. + +## Exemplar rows (label t3_ex1) +- func_80180F84 MEMBERS respelled 9: MEMBER 38, KEPT(SIGN) 6, KEPT(WIDTH) 15, RESIDUAL(NO-FIELD) 5. +- func_801814AC S2 respelled 6: MEMBER 4, KEPT(SIGN) 3, KEPT(SCHED-ALIAS) 3, RESIDUAL(TYPE-NOT-CANONICAL) 8. +- func_80181B4C MEMBERS respelled 4: MEMBER 20, KEPT(SIGN) 2, KEPT(WIDTH) 5, RESIDUAL(TYPE-NOT-CANONICAL) 13. +- file forms (file_view): before P 160 I 2 → after P 79 I 2 K 19 C 49. + +## check-casts +- before (derived: after + this file's P delta 81, macros only in this file): `raw P=408974 I=60666 X=13800 M=19542; macros none`. +- after: `check-casts: raw P=408893 I=60666 X=13800 M=19542; macros CAST_ALIAS=3 CAST_SIGN=10 CAST_WIDTH=6 (unbacked 0); lying=229 (ledgered 0)` (rc 1: raw > 0, expected). + +## Expert should know +- In the real apply the +0x34 store (`D_801C7E30`) is RESIDUAL(TYPE-NOT-CANONICAL): its type is not canonical, only try mode's local type draws it. The try shows the KEPT(SCHED-ALIAS)/CAST_ALIAS outcome. +- KEPT sites ≠ respelled: a kept inner site inside an ACCEPTED member edit's base (`((T *)*(s32 *)(arg0 + 0x20))->unk12`, KEPT(WIDTH) inner) stays raw (respell refused on overlap with an accepted edit); also X/I/M kept sites and an outer-over-inner respell pair (outer wins). 21 kept in func_80180F84, 9 respelled. Composing the inner respell into the member replacement text would cover the first case. +- NON-STRUCT = base absent from body_base_type.json for the body (any bclass), per brief; those sites leave the P census once respelled. +- `tools/commit_task.sh` also picked up the untracked `phase-ends/current/logs/T3.md` into 3ff15ee462 (the script stages logs/). diff --git a/src/ov_SC05_010/ov_SC05_010_jr_80180F84.c b/src/ov_SC05_010/ov_SC05_010_jr_80180F84.c index e09df4c38b..2c39a6ea77 100644 --- a/src/ov_SC05_010/ov_SC05_010_jr_80180F84.c +++ b/src/ov_SC05_010/ov_SC05_010_jr_80180F84.c @@ -2816,39 +2816,39 @@ void func_80180F84(s32 arg0) s16 scnt; s32 arr[3]; - switch (*(u16 *)(arg0 + 0x34)) { + switch (((Unkstruct_800B5CB8 *)arg0)->unk34) { case 0: - *(u16 *)(arg0 + 0xFC) = *(u16 *)(arg0 + 0xFC) + 0x40; - scnt = *(s16 *)(arg0 + 0xFE) - 1; - *(s16 *)(arg0 + 0xFE) = scnt; + ((Unkstruct_800B5CB8 *)arg0)->unkFC = CAST_SIGN(u16, arg0, 0xFC) + 0x40; + scnt = ((Unkstruct_800B5CB8 *)arg0)->unkFE - 1; + ((Unkstruct_800B5CB8 *)arg0)->unkFE = scnt; if (((s32)scnt << 16) > 0) { return; } - *(u16 *)(arg0 + 0x34) = 1; + ((Unkstruct_800B5CB8 *)arg0)->unk34 = 1; break; case 1: - *(u16 *)(arg0 + 0xFC) = *(u16 *)(arg0 + 0xFC) - 0x180; - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) + 0x400; + ((Unkstruct_800B5CB8 *)arg0)->unkFC = CAST_SIGN(u16, arg0, 0xFC) - 0x180; + ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 = ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 + 0x400; t = func_8012B8E4(arg0, 0x10); - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) - 0x400; - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) + t; + ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 = ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 - 0x400; + ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 = ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 + t; if ((u32)(t + 8) >= 0x11) { return; } if (func_8012BCCC(arg0) < 0x4001) { - *(u16 *)(arg0 + 0x34) = 3; - *(u16 *)(arg0 + 0xFC) = 0; - *(u16 *)(arg0 + 0xFE) = 0x1E; + ((Unkstruct_800B5CB8 *)arg0)->unk34 = 3; + ((Unkstruct_800B5CB8 *)arg0)->unkFC = 0; + ((Unkstruct_800B5CB8 *)arg0)->unkFE = 0x1E; } else { - *(u16 *)(arg0 + 0x34) = 2; - *(u16 *)(arg0 + 0xFE) = 0x20; + ((Unkstruct_800B5CB8 *)arg0)->unk34 = 2; + ((Unkstruct_800B5CB8 *)arg0)->unkFE = 0x20; } break; case 2: - *(u16 *)(arg0 + 0xFC) = *(u16 *)(arg0 + 0xFC) - 0x80; - t = func_80047948((s16)*(u16 *)(arg0 + 0xFC)) << 5; + ((Unkstruct_800B5CB8 *)arg0)->unkFC = CAST_SIGN(u16, arg0, 0xFC) - 0x80; + t = func_80047948((s16)CAST_SIGN(u16, arg0, 0xFC)) << 5; if (t > 0) { t = 0; } @@ -2863,27 +2863,27 @@ void func_80180F84(s32 arg0) if (func_8017ECE4(arg0) < 0) { goto die; } - scnt = *(s16 *)(arg0 + 0xFE) - 1; - *(s16 *)(arg0 + 0xFE) = scnt; + scnt = ((Unkstruct_800B5CB8 *)arg0)->unkFE - 1; + ((Unkstruct_800B5CB8 *)arg0)->unkFE = scnt; if (scnt != 0) { return; } - *(u16 *)(arg0 + 0x34) = 1; + ((Unkstruct_800B5CB8 *)arg0)->unk34 = 1; break; case 3: - scnt = *(s16 *)(arg0 + 0xFE) - 1; - *(s16 *)(arg0 + 0xFE) = scnt; + scnt = ((Unkstruct_800B5CB8 *)arg0)->unkFE - 1; + ((Unkstruct_800B5CB8 *)arg0)->unkFE = scnt; if (scnt != 0) { return; } - *(u16 *)(arg0 + 0xFC) = 0x800; - *(s32 *)(arg0 + 0x14) = 0xFFF00000; + ((Unkstruct_800B5CB8 *)arg0)->unkFC = 0x800; + ((Unkstruct_800B5CB8 *)arg0)->unk14 = 0xFFF00000; arr[0] = 0xFFF80000; arr[1] = 0; arr[2] = 0; func_8012B1B4(arg0, (s32)arr); - *(u16 *)(arg0 + 0x34) = 4; + ((Unkstruct_800B5CB8 *)arg0)->unk34 = 4; func_8002D4C8(0x897, 0); break; @@ -2892,9 +2892,9 @@ void func_80180F84(s32 arg0) func_8012C218((void *)arg0); } if (func_8012D5E4(arg0, (s32)D_80192844, (s32)&D_8019284C, 0xC) != 0) { - *(u16 *)(arg0 + 0x34) = 5; - *(s32 *)(arg0 + 0x10) = -*(s32 *)(arg0 + 0x10); - *(s32 *)(arg0 + 0x18) = -*(s32 *)(arg0 + 0x18); + ((Unkstruct_800B5CB8 *)arg0)->unk34 = 5; + CAST_WIDTH(s32, arg0, 0x10) = -CAST_WIDTH(s32, arg0, 0x10); + CAST_WIDTH(s32, arg0, 0x18) = -CAST_WIDTH(s32, arg0, 0x18); } goto join; @@ -2907,7 +2907,7 @@ void func_80180F84(s32 arg0) break; } e28 = D_801C7E28; - *(u16 *)(arg0 + 0x34) = 6; + ((Unkstruct_800B5CB8 *)arg0)->unk34 = 6; if (e28 != 0) { D_801C7E2C = D_801C7E2C + 1; if (D_801C7E2C >= 9) { @@ -2923,18 +2923,18 @@ void func_80180F84(s32 arg0) break; case 6: - *(u16 *)(arg0 + 0xFC) = *(u16 *)(arg0 + 0xFC) - 0x80; - t = func_8012B608(*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12), 0x400, 0x10); - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) + t; - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) & 0xFFF; - if ((u32)(*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) - 0x3F0) < 0x21) { - *(u16 *)(arg0 + 0x34) = 7; + ((Unkstruct_800B5CB8 *)arg0)->unkFC = CAST_SIGN(u16, arg0, 0xFC) - 0x80; + t = func_8012B608(*(s16 *)(((Unkstruct_800B5CB8 *)arg0)->unk20 + 0x12), 0x400, 0x10); + ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 = ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 + t; + ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 = ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 & 0xFFF; + if ((u32)(((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 - 0x3F0) < 0x21) { + ((Unkstruct_800B5CB8 *)arg0)->unk34 = 7; *(s16 *)(arg0 + 0x16) = -0x10; - *(s16 *)(arg0 + 0x1A) = 4; + ((Unkstruct_800B5CB8 *)arg0)->unk1A = 4; func_8002D4C8(0x897, 0); break; } - t = func_80047948(*(s16 *)(arg0 + 0xFC)) << 5; + t = func_80047948(((Unkstruct_800B5CB8 *)arg0)->unkFC) << 5; if (t > 0) { t = 0; } @@ -2995,14 +2995,14 @@ void func_801814AC(s32 param_1) { s32 var; u8 t; - func_8016AA50(param_1, *(s16 *)(param_1 + 0x60)); - if (*(u16 *)(param_1 + 0x82) & 1) { + func_8016AA50(param_1, ((Unkstruct_800B5CB8 *)param_1)->unk60); + if (CAST_SIGN(u16, param_1, 0x82) & 1) { func_8016B428(param_1); func_80019064(D_80192860); } - *(s32 *)(param_1 + 0x1C) = 10; - *(u16 *)(param_1 + 0x5C) = 0; - *(u16 *)(param_1 + 0x76) = *(u16 *)(param_1 + 0x76) - *(u16 *)(param_1 + 0x60); + CAST_ALIAS(s32, param_1, 0x1C) = 10; + CAST_ALIAS(u16, param_1, 0x5C) = 0; + CAST_ALIAS(u16, param_1, 0x76) = CAST_SIGN(u16, param_1, 0x76) - CAST_SIGN(u16, param_1, 0x60); *(u16 *)(D_801C7E30 + 0x34) = 0; *(u16 *)(D_801C7E30 + 2) = 9; *(u8 *)(D_801C7E30 + 0xC2) = 0xE; @@ -3019,11 +3019,11 @@ void func_801814AC(s32 param_1) { *(u16 *)(D_801C7E30 + 0x70) &= 0xFFFE; } func_8002D4C8(0x8A0, 0); - if (*(u8 *)(param_1 + 0x5E) != 0x1D) { - if (*(u8 *)(param_1 + 0xC8) != 0) { + if (((Unkstruct_800B5CB8 *)param_1)->unk5E != 0x1D) { + if (((Unkstruct_800B5CB8 *)param_1)->unkC8 != 0) { func_8002A520(param_1); } - if (*(u8 *)(param_1 + 0xC9) != 0) { + if (((Unkstruct_800B5CB8 *)param_1)->unkC9 != 0) { func_8002A790(param_1); } } @@ -3185,37 +3185,37 @@ void func_80181B4C(void *a0) s32 ptr64; s32 rec; - if (*(u16 *)((s32)a0 + 0x2) == 0) { + if (CAST_SIGN(u16, (s32)a0, 0x2) == 0) { v0 = func_8012C1B8(); - *(s32 *)((s32)a0 + 0x20) = v0; + ((Unkstruct_800B5CB8 *)a0)->unk20 = v0; if (v0 == 0) { func_8012CAE4(a0); return; } func_8001C2C4(v0); - *(u16 *)((s32)a0 + 0x5C) = 0x8000; - *(s32 *)((s32)a0 + 0x58) = (s32)D_801928B8 | 0x40000000 | 0x20000000; - *(u16 *)((s32)a0 + 0x76) = 10000; - *(u8 *)((s32)a0 + 0xC0) = 1; - *(s16 *)((s32)a0 + 0xAE) = -1; - *(s32 *)((s32)a0 + 0xBC) = (s32)D_801928C8; - *(s32 *)((s32)a0 + 0x4) = 0x25B0000; - *(s32 *)((s32)a0 + 0x8) = 0xFF900000; - *(s32 *)((s32)a0 + 0xB4) = 0; - *(u16 *)((s32)a0 + 0x2) += 1; - *(s32 *)((s32)a0 + 0xC4) |= 3; + ((Unkstruct_800B5CB8 *)a0)->unk5C = 0x8000; + ((Unkstruct_800B5CB8 *)a0)->unk58 = (s32)D_801928B8 | 0x40000000 | 0x20000000; + ((Unkstruct_800B5CB8 *)a0)->unk76 = 10000; + ((Unkstruct_800B5CB8 *)a0)->unkC0 = 1; + ((Unkstruct_800B5CB8 *)a0)->unkAE = -1; + ((Unkstruct_800B5CB8 *)a0)->unkBC = (s32)D_801928C8; + CAST_WIDTH(s32, (s32)a0, 0x4) = 0x25B0000; + CAST_WIDTH(s32, (s32)a0, 0x8) = 0xFF900000; + ((Unkstruct_800B5CB8 *)a0)->unkB4 = 0; + CAST_SIGN(u16, (s32)a0, 0x2) += 1; + ((Unkstruct_800B5CB8 *)a0)->unkC4 |= 3; } else { - ptr64 = *(s32 *)((s32)a0 + 0x64); + ptr64 = ((Unkstruct_800B5CB8 *)a0)->unk64; if (*(u16 *)ptr64 != 0) { rec = *(s32 *)(*(s32 *)(ptr64 + 0x20) + 0x20); - *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x10) = *(u16 *)(rec + 0x6); - *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = *(u16 *)(rec + 0x8); - *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x14) = *(u16 *)(rec + 0xA) - 0x100; - *(s16 *)((s32)a0 + 0x6) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0x6) + *(u16 *)(rec + 0x0); - *(s16 *)((s32)a0 + 0xA) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xA) + *(u16 *)(rec + 0x2); - *(s16 *)((s32)a0 + 0xE) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xE) + *(u16 *)(rec + 0x4); + ((Unkstruct_800B5CB8 *)*(s32 *)((s32)a0 + 0x20))->unk10 = *(u16 *)(rec + 0x6); + ((Unkstruct_800B5CB8 *)*(s32 *)((s32)a0 + 0x20))->unk12 = *(u16 *)(rec + 0x8); + *(s16 *)(((Unkstruct_800B5CB8 *)a0)->unk20 + 0x14) = *(u16 *)(rec + 0xA) - 0x100; + ((Unkstruct_800B5CB8 *)a0)->unk6 = *(u16 *)(((Unkstruct_800B5CB8 *)a0)->unk64 + 0x6) + *(u16 *)(rec + 0x0); + ((Unkstruct_800B5CB8 *)a0)->unkA = *(u16 *)(((Unkstruct_800B5CB8 *)a0)->unk64 + 0xA) + *(u16 *)(rec + 0x2); + ((Unkstruct_800B5CB8 *)a0)->unkE = *(u16 *)(((Unkstruct_800B5CB8 *)a0)->unk64 + 0xE) + *(u16 *)(rec + 0x4); func_8012B2CC((s32)a0); - if (*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0x90) == (s32)D_801A3E2C) { + if (*(s32 *)(((Unkstruct_800B5CB8 *)a0)->unk64 + 0x90) == (s32)D_801A3E2C) { func_80181670(a0); } }