From 6e433a44d646a71a4ca8f3491908d843ee2b8c82 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Fri, 11 Sep 2026 01:51:08 -0600 Subject: [PATCH] =?UTF-8?q?phase-36:=20S104=20s104=5Fe9=20=E2=80=94=20func?= =?UTF-8?q?=5F8018209C=20banked=20at=200=20through=20the=20whole-object=20?= =?UTF-8?q?gate=20+=20propagated=20=E2=80=94=20pin=20+=20keepalive=20+=20g?= =?UTF-8?q?te=20asm=20=E2=86=92=200:=20e7's=20func=5F80181E98=20ported,=20?= =?UTF-8?q?s32=20through=20the=20file's=20existing=20=5Fimpl=20asm-label?= =?UTF-8?q?=20alias=20(class=20E,=20deferred)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .run/P36/delever/calibration.json | 336 +++++++++++----------- .run/P36/delever/ledger.jsonl | 1 + src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c | 77 +++-- 3 files changed, 204 insertions(+), 210 deletions(-) diff --git a/.run/P36/delever/calibration.json b/.run/P36/delever/calibration.json index 992a5c231..7b5359c6f 100644 --- a/.run/P36/delever/calibration.json +++ b/.run/P36/delever/calibration.json @@ -1,5 +1,5 @@ { - "head": "31fb83027", + "head": "b591697b8", "stamp": "15956e4a96c4", "generated": "2026-09-11 01:50", "aliases": [ @@ -21,206 +21,206 @@ "main": { "objects": 85, "identical": 85, - "seconds": 6.583000000000002, + "seconds": 6.521999999999999, "mean_s": 0.077 }, "ov_SC03_014": { "objects": 32, "identical": 32, - "seconds": 4.49, - "mean_s": 0.14 + "seconds": 4.517, + "mean_s": 0.141 }, "ov_SC03_015": { "objects": 32, "identical": 32, - "seconds": 4.313, - "mean_s": 0.135 + "seconds": 4.3549999999999995, + "mean_s": 0.136 }, "ov_SC04_011": { "objects": 28, "identical": 28, - "seconds": 3.761, - "mean_s": 0.134 + "seconds": 3.813, + "mean_s": 0.136 } }, "per_object_seconds": { - "build/src/800.o": 0.704, - "build/src/800_b.o": 0.07, - "build/src/800_b_2.o": 0.303, - "build/src/800_b_o0a.o": 0.073, - "build/src/800_c.o": 0.173, - "build/src/800b2.o": 0.077, - "build/src/apicard1.o": 0.067, - "build/src/apicard2.o": 0.079, - "build/src/apicard3.o": 0.068, - "build/src/apicard4.o": 0.06, - "build/src/apicard5.o": 0.079, - "build/src/apicard6.o": 0.093, - "build/src/apicard7.o": 0.054, - "build/src/boot.o": 0.08, - "build/src/gap.o": 0.068, - "build/src/libapi1.o": 0.064, - "build/src/libapi2.o": 0.079, - "build/src/libc2_1.o": 0.065, - "build/src/libc2_2.o": 0.055, - "build/src/libcd1.o": 0.088, - "build/src/libcd2.o": 0.054, - "build/src/libetc.o": 0.057, + "build/src/800.o": 0.699, + "build/src/800_b.o": 0.071, + "build/src/800_b_2.o": 0.304, + "build/src/800_b_o0a.o": 0.081, + "build/src/800_c.o": 0.183, + "build/src/800b2.o": 0.073, + "build/src/apicard1.o": 0.068, + "build/src/apicard2.o": 0.064, + "build/src/apicard3.o": 0.063, + "build/src/apicard4.o": 0.088, + "build/src/apicard5.o": 0.062, + "build/src/apicard6.o": 0.087, + "build/src/apicard7.o": 0.062, + "build/src/boot.o": 0.104, + "build/src/gap.o": 0.074, + "build/src/libapi1.o": 0.081, + "build/src/libapi2.o": 0.057, + "build/src/libc2_1.o": 0.06, + "build/src/libc2_2.o": 0.058, + "build/src/libcd1.o": 0.064, + "build/src/libcd2.o": 0.058, + "build/src/libetc.o": 0.066, "build/src/libgpu.o": 0.059, - "build/src/libgpu2.o": 0.073, - "build/src/libgs1.o": 0.065, - "build/src/libgs2.o": 0.055, - "build/src/libgs3.o": 0.05, - "build/src/libgs4.o": 0.065, + "build/src/libgpu2.o": 0.077, + "build/src/libgs1.o": 0.048, + "build/src/libgs2.o": 0.061, + "build/src/libgs3.o": 0.059, + "build/src/libgs4.o": 0.061, "build/src/libgs5.o": 0.061, - "build/src/libgs6.o": 0.079, - "build/src/libgs7.o": 0.06, - "build/src/libgs8.o": 0.059, - "build/src/libgte1.o": 0.064, - "build/src/libgte10.o": 0.064, - "build/src/libgte11.o": 0.055, - "build/src/libgte12.o": 0.061, - "build/src/libgte13.o": 0.067, - "build/src/libgte14.o": 0.066, - "build/src/libgte15.o": 0.063, - "build/src/libgte16.o": 0.06, - "build/src/libgte17.o": 0.055, - "build/src/libgte18.o": 0.063, - "build/src/libgte19.o": 0.058, + "build/src/libgs6.o": 0.068, + "build/src/libgs7.o": 0.061, + "build/src/libgs8.o": 0.061, + "build/src/libgte1.o": 0.063, + "build/src/libgte10.o": 0.063, + "build/src/libgte11.o": 0.061, + "build/src/libgte12.o": 0.058, + "build/src/libgte13.o": 0.064, + "build/src/libgte14.o": 0.069, + "build/src/libgte15.o": 0.05, + "build/src/libgte16.o": 0.057, + "build/src/libgte17.o": 0.07, + "build/src/libgte18.o": 0.061, + "build/src/libgte19.o": 0.059, "build/src/libgte2.o": 0.064, - "build/src/libgte20.o": 0.062, - "build/src/libgte21.o": 0.07, - "build/src/libgte22.o": 0.065, - "build/src/libgte23.o": 0.07, - "build/src/libgte24.o": 0.056, - "build/src/libgte25.o": 0.066, - "build/src/libgte26.o": 0.061, - "build/src/libgte27.o": 0.062, - "build/src/libgte28.o": 0.067, - "build/src/libgte29.o": 0.069, + "build/src/libgte20.o": 0.063, + "build/src/libgte21.o": 0.061, + "build/src/libgte22.o": 0.053, + "build/src/libgte23.o": 0.057, + "build/src/libgte24.o": 0.064, + "build/src/libgte25.o": 0.059, + "build/src/libgte26.o": 0.063, + "build/src/libgte27.o": 0.067, + "build/src/libgte28.o": 0.053, + "build/src/libgte29.o": 0.06, "build/src/libgte3.o": 0.059, - "build/src/libgte30.o": 0.076, - "build/src/libgte4.o": 0.069, - "build/src/libgte5.o": 0.064, - "build/src/libgte6.o": 0.065, - "build/src/libgte7.o": 0.067, - "build/src/libgte8.o": 0.06, - "build/src/libgte9.o": 0.065, + "build/src/libgte30.o": 0.06, + "build/src/libgte4.o": 0.061, + "build/src/libgte5.o": 0.063, + "build/src/libgte6.o": 0.062, + "build/src/libgte7.o": 0.069, + "build/src/libgte8.o": 0.061, + "build/src/libgte9.o": 0.069, "build/src/libmcrd1.o": 0.071, - "build/src/libmcrd2.o": 0.059, - "build/src/libpad1.o": 0.065, - "build/src/libpad2.o": 0.066, - "build/src/sgap.o": 0.063, - "build/src/sgap_2.o": 0.063, - "build/src/sgap_3.o": 0.073, - "build/src/sgap_4.o": 0.076, + "build/src/libmcrd2.o": 0.064, + "build/src/libpad1.o": 0.06, + "build/src/libpad2.o": 0.075, + "build/src/sgap.o": 0.067, + "build/src/sgap_2.o": 0.062, + "build/src/sgap_3.o": 0.064, + "build/src/sgap_4.o": 0.073, "build/src/sgap_5.o": 0.064, - "build/src/sgap_6.o": 0.063, + "build/src/sgap_6.o": 0.07, "build/src/sgap_8.o": 0.072, - "build/src/snd1.o": 0.069, + "build/src/snd1.o": 0.072, "build/src/snd10.o": 0.061, - "build/src/snd11.o": 0.065, - "build/src/snd12.o": 0.066, - "build/src/snd2.o": 0.074, - "build/src/snd3.o": 0.057, - "build/src/snd4.o": 0.063, - "build/src/snd5.o": 0.064, - "build/src/snd6.o": 0.074, - "build/src/snd7.o": 0.067, - "build/src/snd8.o": 0.064, - "build/src/snd9.o": 0.075, + "build/src/snd11.o": 0.055, + "build/src/snd12.o": 0.067, + "build/src/snd2.o": 0.071, + "build/src/snd3.o": 0.064, + "build/src/snd4.o": 0.061, + "build/src/snd5.o": 0.072, + "build/src/snd6.o": 0.071, + "build/src/snd7.o": 0.066, + "build/src/snd8.o": 0.065, + "build/src/snd9.o": 0.069, "build/src/ov_SC03_014/ov_SC03_014.o": 0.125, - "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.494, - "build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.373, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.058, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.058, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.124, - "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.15, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.12, + "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.5, + "build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.388, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.065, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.057, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.117, + "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.148, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.129, "build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.075, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.073, - "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.183, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.086, - "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.175, - "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.085, - "build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.063, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.058, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.096, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.446, - "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.259, - "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.103, - "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.19, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.066, + "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.174, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.07, + "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.188, + "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.097, + "build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.061, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.075, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.089, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.441, + "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.261, + "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.094, + "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.182, "build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.054, - "build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.088, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.067, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.155, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.187, - "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.05, - "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.248, - "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.061, - "build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.061, - "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.056, - "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.069, - "build/src/ov_SC03_015/ov_SC03_015.o": 0.111, - "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.474, - "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.376, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.047, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.055, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.098, - "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.145, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.103, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.071, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.06, - "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.165, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.062, - "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.152, - "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.085, - "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.06, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.066, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.093, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.413, - "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.268, - "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.098, - "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.19, - "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.055, - "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.095, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.063, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.161, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.201, + "build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.095, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.065, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.153, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.19, + "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.048, + "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.276, + "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.056, + "build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.057, + "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.057, + "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.064, + "build/src/ov_SC03_015/ov_SC03_015.o": 0.118, + "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.518, + "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.369, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.051, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.051, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.122, + "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.143, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.112, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.076, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.063, + "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.166, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.068, + "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.163, + "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.084, + "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.067, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.07, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.094, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.421, + "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.254, + "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.094, + "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.181, + "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.056, + "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.099, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.056, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.156, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.165, "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.05, "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.257, - "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.063, - "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.057, - "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.058, - "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.061, - "build/src/ov_SC04_011/ov_SC04_011.o": 0.118, - "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.399, - "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.328, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.046, + "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.05, + "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.059, + "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.055, + "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.067, + "build/src/ov_SC04_011/ov_SC04_011.o": 0.123, + "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.415, + "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.332, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.055, "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.048, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.106, - "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.143, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.107, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.075, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.105, + "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.153, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.104, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.072, "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.059, - "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.167, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.066, - "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.163, - "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.085, - "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.063, + "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.168, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.074, + "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.152, + "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.087, + "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.064, "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.061, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.091, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.356, - "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.227, - "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.084, - "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.161, - "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.053, - "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.078, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.093, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.377, + "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.215, + "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.098, + "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.156, + "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.056, + "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.081, "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.063, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.088, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.413, - "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.049, - "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.064 + "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.093, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.406, + "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.051, + "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.052 }, "ok": true, "seconds": 2.2 diff --git a/.run/P36/delever/ledger.jsonl b/.run/P36/delever/ledger.jsonl index c8d6e8d49..118c988cf 100644 --- a/.run/P36/delever/ledger.jsonl +++ b/.run/P36/delever/ledger.jsonl @@ -29401,3 +29401,4 @@ {"ts": "2026-09-11 01:50:14", "label": "s104_e9", "rung": "E", "calib": {"head": "5a4a7eed0", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c", "fn": "func_80182FD0", "addr": 2149068752, "aliases": null, "header": false, "includers": 0, "nhash_before": "2eca4a3dae8ed526544c69ae6988b20a412e0a93", "nhash_after": "7e24c878055bfd382e58a69b9381c4118c7fb3be", "source": ".run/P36/agents/ov_SC02_017__func_80182FD0/body.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.195, "objects": ["build/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.o"], "before_text": "void func_80182FD0(int param)\n{\n u32 buf[3];\n u8 *s0;\n int v0;\n int x;\n int lim;\n\n s0 = ((u8 **)D_8018E8DC)[*(s16 *)(param + 0xFC)];\n\n /* gte_SetRotMatrix(&D_800AF648); gte_SetTransMatrix(&D_800AF648); */\n __asm__ volatile(\n \"lui $2,%%hi(D_800AF648);addiu $2,$2,%%lo(D_800AF648);\"\n \"lw $12,0($2);lw $13,4($2);ctc2 $12,$0;ctc2 $13,$1;\"\n \"lw $12,8($2);lw $13,12($2);lw $14,16($2);\"\n \"ctc2 $12,$2;ctc2 $13,$3;ctc2 $14,$4;\"\n \"lw $12,20($2);lw $13,24($2);ctc2 $12,$5;\"\n \"lw $14,28($2);ctc2 $13,$6;ctc2 $14,$7\"\n : : : \"$12\", \"$13\", \"$14\", \"$2\", \"memory\");\n\n func_80015978(param + 4, (s32 *)buf);\n\n /* gte_ldv0(buf); gte_rtps(); gte_stsxy(buf); */\n __asm__ volatile(\"lwc2 $0,0(%0);lwc2 $1,4(%0);nop;nop;rtps;swc2 $14,0(%0)\"\n : : \"r\"(buf) : \"memory\");\n /* gte_stflg(&buf[2]); */\n gte_stflg(buf + 2);\n\n lim = (D_800AF7BC >> 1) + 0x20;\n x = (int)(s16)buf[0];\n if (x <= -lim) goto done;\n if (x >= lim) goto done;\n __asm__ volatile(\"\" : : \"r\"(x)); /* keep $v1 live: see LEVER above */ // !FAKE: keepalive \u2014 NEEDED DIFFERS (P36 rung B tus8)\n\n lim = (D_800AF7BE >> 1) + 0x20;\n x = (int)(s16)((s16 *)buf)[1];\n if (x <= -lim) goto done;\n if (x >= lim) goto done;\n __asm__ volatile(\"\" : : \"r\"(x)); /* keep $v1 live: see LEVER above */ // !FAKE: keepalive \u2014 NEEDED DIFFERS (P36 rung B tus8)\n\n if ((int)buf[2] < 0) goto done;\n\n v0 = *(s32 *)(param + 0x1C);\n if (v0 != 0) { v0--; goto store; }\n\n if (*(s16 *)(s0 + 6) != 0xFF) {\n do {\n func_80183168((u8 *)param, s0);\n s0 += 8;\n } while (*(s16 *)(s0 + 6) != 0xFF);\n }\n v0 = *(s32 *)(param + 0xDC);\n *(s32 *)(param + 0x1C) = v0;\n v0 = *(volatile s32 *)(param + 0x1C);\n v0--;\nstore:\n *(s32 *)(param + 0x1C) = v0;\ndone:\n func_801831FC(param);\n}\n", "after_text": "void func_80182FD0(int param)\n{\n struct {\n s16 v[4];\n s32 flag;\n } w;\n u8 *s0;\n u8 *m = &D_800AF648;\n s32 lim;\n s32 lim2;\n\n s0 = ((u8 **)D_8018E8DC)[*(s16 *)(param + 0xFC)];\n\n gte_SetRotMatrix(m);\n gte_SetTransMatrix(m);\n\n func_80015978(param + 4, (s32 *)w.v);\n gte_ldv0(w.v);\n gte_rtps();\n gte_stsxy(w.v);\n gte_stflg(&w.flag);\n\n lim = (D_800AF7BC >> 1) + 0x20;\n if (w.v[0] > -lim && w.v[0] < lim) {\n lim2 = (D_800AF7BE >> 1) + 0x20;\n if (w.v[1] > -lim2 && w.v[1] < lim2 && w.flag >= 0) {\n if (*(s32 *)(param + 0x1C) == 0) {\n while (*(s16 *)(s0 + 6) != 0xFF) {\n func_80183168((u8 *)param, s0);\n s0 += 8;\n }\n *(s32 *)(param + 0x1C) = *(s32 *)(param + 0xDC);\n }\n *(s32 *)(param + 0x1C) -= 1;\n }\n }\n func_801831FC(param);\n}\n"} {"ts": "2026-09-11 01:50:32", "label": "s104_e9", "rung": "E", "calib": {"head": "09bf5ea39", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c", "fn": "func_8017F768", "addr": 2149054312, "aliases": null, "header": false, "includers": 0, "nhash_before": "56acff1e69cd39c010f53734fd44bb9ae5d68f7c", "nhash_after": "2caa54014192539150ae4240e5db8f74058ca1e0", "source": ".run/P36/agents/ov_SC02_017__func_8017F768/body.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.194, "objects": ["build/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.o"], "before_text": "void func_8017F768(s32 a0) {\n s32 s0 = a0;\n /* $s1 pin: without it the distance/angle pair allocates swapped ($s1<->$s2)\n AND `s1 = 0x800` floats out of the beqz delay slot. */\n register s32 s1 __asm__(\"$17\"); // !FAKE: pin $17 \u2014 NEEDED DIFFERS (P36 rung B tus8)\n /* NOT pinned: pinning $s2 makes local_alloc suggest the dying $18 for the\n `s2 >= 0x801` compare result, emitting `slti $s2,...` instead of the\n target's `slti $v0,$s2,0x801`. */\n s32 s2;\n /* $a0 pin: the target computes `andi $a0,$v0,0xFFF` then `addu $s1,$a0,$zero`\n and reuses the live $a0 as func_801898A4's first argument (no `move $a0,$s1`\n at the call). Coalescing kills that copy unless the value is born in $a0. */\n register s32 angle __asm__(\"$4\"); // !FAKE: pin $4 \u2014 NEEDED DIFFERS (P36 rung B tus8)\n s32 ret;\n s16 pt[4];\n\n if (func_80148800((s32 *)&D_80126B58) & 3) {\n u8 t = (*(u8 *)(s0 + 5) + 1) & 1;\n *(u8 *)(s0 + 5) = t;\n *(s32 *)(s0 + 0x14) = D_8018E1E0[t];\n }\n\n pt[0] = D_80126940[0];\n pt[1] = 0;\n pt[2] = D_80126940[2];\n\n s2 = (s16)func_80013294((void *)&D_8018E1D0, (void *)pt);\n\n s1 = 0x800;\n if (s2 < 0x200) {\n *(s16 *)(s0 + 0x20) = 0x71;\n *(s16 *)(s0 + 0x22) = 0;\n *(s16 *)(s0 + 0x24) = 0;\n *(s16 *)(s0 + 0x2E) = 0;\n *(s16 *)(s0 + 0x30) = -0xC0;\n *(s16 *)(s0 + 0x32) = 0;\n } else {\n *(s16 *)(s0 + 0x22) = 0;\n\n angle = ratan2((s32)D_80126940[0] << 16, (s32)D_80126940[2] << 16) & 0xFFF;\n s1 = angle;\n\n *(s16 *)(s0 + 0x20) = 0x1C7;\n *(s16 *)(s0 + 0x30) = -0x10;\n *(s16 *)(s0 + 0x22) = 0;\n *(s16 *)(s0 + 0x24) = 0;\n *(s16 *)(s0 + 0x2E) = 0;\n /* +0x32 is stored ONCE PER ARM and, in this arm, ABOVE the inner if\n (\u00a7194-M: it lands in the bnez delay slot, so it dominates the branch\n and is NOT executed on the s2 >= 0x801 path). Writing it once after\n the outer if/else is what cross_jump then folds to 112 instructions. */\n *(s16 *)(s0 + 0x32) = 0;\n\n if (s2 >= 0x801) {\n u16 tmp[4];\n tmp[0] = 0;\n tmp[1] = D_80126942;\n tmp[2] = 0x800;\n\n func_801898A4(angle, tmp, tmp);\n\n D_80126940[0] = (s16)tmp[0] >> 3;\n D_80126942 = (s16)tmp[1] >> 3;\n D_80126940[2] = (s16)tmp[2] >> 3;\n }\n }\n\n D_801274EA = (s16)s1;\n ret = func_80012DBC((s32)D_801EF9F0, s1, 0x14, 1);\n D_801EF9F0 = (s16)ret;\n func_8017F92C(s0, (s16)ret, D_80126940);\n}\n", "after_text": "void func_8017F768(s32 a0) {\n s16 dir;\n s16 dist;\n s32 angle;\n s32 ret;\n s16 pt[4];\n\n if (func_80148800((s32 *)&D_80126B58) & 3) {\n u8 t = (*(u8 *)(a0 + 5) + 1) & 1;\n *(u8 *)(a0 + 5) = t;\n *(s32 *)(a0 + 0x14) = D_8018E1E0[t];\n }\n\n pt[0] = D_80126940[0];\n pt[1] = 0;\n pt[2] = D_80126940[2];\n\n dist = func_80013294((void *)&D_8018E1D0, (void *)pt);\n\n if (dist < 0x200) {\n dir = 0x800;\n *(s16 *)(a0 + 0x20) = 0x71;\n *(s16 *)(a0 + 0x22) = 0;\n *(s16 *)(a0 + 0x24) = 0;\n *(s16 *)(a0 + 0x2E) = 0;\n *(s16 *)(a0 + 0x30) = -0xC0;\n *(s16 *)(a0 + 0x32) = 0;\n } else {\n *(s16 *)(a0 + 0x22) = 0;\n\n angle = ratan2((s32)D_80126940[0] << 16, (s32)D_80126940[2] << 16) & 0xFFF;\n dir = angle;\n\n *(s16 *)(a0 + 0x20) = 0x1C7;\n *(s16 *)(a0 + 0x30) = -0x10;\n *(s16 *)(a0 + 0x22) = 0;\n *(s16 *)(a0 + 0x24) = 0;\n *(s16 *)(a0 + 0x2E) = 0;\n /* +0x32 is stored ONCE PER ARM and, in this arm, ABOVE the inner if\n (\u00a7194-M: it lands in the bnez delay slot, so it dominates the branch\n and is NOT executed on the dist >= 0x801 path). Writing it once after\n the outer if/else is what cross_jump then folds to 112 instructions. */\n *(s16 *)(a0 + 0x32) = 0;\n\n if (dist >= 0x801) {\n u16 tmp[4];\n tmp[0] = 0;\n tmp[1] = D_80126942;\n tmp[2] = 0x800;\n\n func_801898A4(angle, tmp, tmp);\n\n D_80126940[0] = (s16)tmp[0] >> 3;\n D_80126942 = (s16)tmp[1] >> 3;\n D_80126940[2] = (s16)tmp[2] >> 3;\n }\n }\n\n D_801274EA = dir;\n ret = func_80012DBC((s32)D_801EF9F0, dir, 0x14, 1);\n D_801EF9F0 = (s16)ret;\n func_8017F92C(a0, (s16)ret, D_80126940);\n}\n"} {"ts": "2026-09-11 01:50:49", "label": "s104_e9", "rung": "E", "calib": {"head": "31fb83027", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c", "fn": "func_8017FCFC", "addr": 2149055740, "aliases": null, "header": false, "includers": 0, "nhash_before": "3696cabfe6b4ed90988b40e43fd89a850f8d9c38", "nhash_after": "7498c74c7f83ebd46de7113de29be86e6f138144", "source": ".run/P36/agents/ov_SC02_017__func_8017FCFC/body.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.193, "objects": ["build/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.o"], "before_text": "void func_8017FCFC(void *a0) {\n s32 t;\n register s32 u __asm__(\"$3\"); // !FAKE: pin $3 \u2014 NEEDED DIFFERS (P36 rung B tus8)\n register s32 zr __asm__(\"$0\"); // !FAKE: pin $0 \u2014 NEEDED DIFFERS (P36 rung B tus8)\n s32 frame_pad;\n s32 k;\n s32 *p;\n\n (void)(s32 *)&frame_pad;\n t = *(s16 *)((s32)a0 + 0xFE);\n if (t != 0) {\n u = t + zr;\n t = u - 1;\n *(s16 *)((s32)a0 + 0xFE) = t;\n return;\n }\n k = *(u16 *)((s32)a0 + 0x5C);\n if ((k & 1) == 0) {\n return;\n }\n *(u16 *)((s32)a0 + 0x5C) = k & 0xFFFE;\n p = D_8018E204;\n t = func_800291B4(D_8018E204[(*(u16 *)((s32)a0 + 0x70)) & 0xF]) & 0xFF;\n if (t != 0) {\n *(u16 *)((s32)a0 + 0x5E) = 0;\n t = 8;\n *(s16 *)((s32)a0 + 0xFE) = t;\n return;\n }\n k = *(u16 *)((s32)a0 + 0x5E);\n if (k == 0xC) {\n __asm__(\"\" : \"=r\"(p) : \"0\"(p)); // !FAKE: launder \u2014 NEEDED DIFFERS (P36 rung B tus8)\n *(s32 *)((s32)a0 + 0x58) = (s32)D_8018E1F4 | 0x40000000 | 0x20000000;\n func_800291A0(p[(*(u16 *)((s32)a0 + 0x70)) & 0xF], 1);\n t = 0x8C00;\n *(u16 *)((s32)a0 + 0x5C) = t;\n } else {\n t = 8;\n *(s16 *)((s32)a0 + 0xFE) = t;\n if (k != 0x1D && *(s32 *)((s32)a0 + 0xDC) == 0) {\n *(s32 *)((s32)a0 + 0xDC) = 1;\n func_801746DC();\n ((void (*)(void))func_80178BF8)();\n *(s16 *)((s32)a0 + 0x2) = 2;\n func_8002D4C8(0x59D, 0);\n *(u16 *)((s32)a0 + 0x5E) = 0;\n return;\n }\n }\n *(u16 *)((s32)a0 + 0x5E) = 0;\n}\n", "after_text": "void func_8017FCFC(void *a0) {\n s32 k;\n\n if (*(s16 *)((s32)a0 + 0xFE) != 0) {\n *(s16 *)((s32)a0 + 0xFE) -= 1;\n return;\n }\n k = *(u16 *)((s32)a0 + 0x5C);\n if ((k & 1) == 0) {\n return;\n }\n *(u16 *)((s32)a0 + 0x5C) = k & 0xFFFE;\n if ((func_800291B4(D_8018E204[*(u16 *)((s32)a0 + 0x70) & 0xF]) & 0xFF) != 0) {\n *(u16 *)((s32)a0 + 0x5E) = 0;\n *(s16 *)((s32)a0 + 0xFE) = 8;\n return;\n }\n k = *(u16 *)((s32)a0 + 0x5E);\n if (k == 0xC) {\n *(s32 *)((s32)a0 + 0x58) = (s32)D_8018E1F4 | 0x40000000 | 0x20000000;\n func_800291A0(D_8018E204[*(u16 *)((s32)a0 + 0x70) & 0xF], 1);\n *(u16 *)((s32)a0 + 0x5C) = 0x8C00;\n } else {\n *(s16 *)((s32)a0 + 0xFE) = 8;\n if (k != 0x1D && *(s32 *)((s32)a0 + 0xDC) == 0) {\n *(s32 *)((s32)a0 + 0xDC) = 1;\n func_801746DC();\n ((void (*)(void))func_80178BF8)();\n *(s16 *)((s32)a0 + 0x2) = 2;\n func_8002D4C8(0x59D, 0);\n *(u16 *)((s32)a0 + 0x5E) = 0;\n return;\n }\n }\n *(u16 *)((s32)a0 + 0x5E) = 0;\n}\n"} +{"ts": "2026-09-11 01:51:07", "label": "s104_e9", "rung": "E", "calib": {"head": "b591697b8", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c", "fn": "func_8018209C", "addr": 2149064860, "aliases": null, "header": false, "includers": 0, "nhash_before": "1427b5b4f01d5be2de684f2e48f07d0c4fffa587", "nhash_after": "31c71e7400f76e47f0c1ce76e2048b5bb257b0c8", "source": ".run/P36/agents/ov_SC02_017__func_8018209C/body.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.201, "objects": ["build/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.o"], "before_text": "void func_8018209C(void *arg0)\n{\n SV_8018209C vin;\n SV_8018209C w;\n RES_8018209C res;\n register s32 g __asm__(\"$7\"); // !FAKE: pin $7 \u2014 NEEDED DIFFERS (P36 rung B tus8)\n s32 rv;\n\n func_8012F214((s32)arg0, (s32)D_8018E56C, (s32)&vin);\n\n g = (s32)&D_800AF648;\n __asm__ __volatile__( // !FAKE: gte direct \u2014 clobbers beyond Sony's macro (a scheduling steer; P36 T5 t5_remark3)\n \"lw $12, 0(%0)\\n\" \"lw $13, 4(%0)\\n\"\n \"ctc2 $12, $0\\n\" \"ctc2 $13, $1\\n\"\n \"lw $12, 8(%0)\\n\" \"lw $13, 12(%0)\\n\" \"lw $14, 16(%0)\\n\"\n \"ctc2 $12, $2\\n\" \"ctc2 $13, $3\\n\" \"ctc2 $14, $4\\n\"\n : : \"r\"(g) : \"$12\", \"$13\", \"$14\", \"memory\"); // !FAKE: gte direct \u2014 clobbers ['memory'] (gte_SetRotMatrix_m) beyond Sony's (P36 T5 gte1)\n __asm__ __volatile__(\n \"lw $12, 20(%0)\\n\" \"lw $13, 24(%0)\\n\"\n \"ctc2 $12, $5\\n\" \"lw $14, 28(%0)\\n\"\n \"ctc2 $13, $6\\n\" \"ctc2 $14, $7\\n\"\n : : \"r\"(g) : \"$12\", \"$13\", \"$14\", \"memory\");\n\n gte_ldv0(&vin);\n gte_rtps();\n gte_stsxy(&res.x);\n gte_stflg(&res.flag);\n\n if ((res.flag & -0x1001) != 0) { rv = 0; goto out; }\n if ((res.x < 0 ? -res.x : res.x) >= 0xAB)\n goto L2;\n if ((res.y < 0 ? -res.y : res.y) >= 0x83)\n goto L2;\n goto tail;\n\nL2:\n w.vx = *(u16 *)((s32)arg0 + 6);\n w.vy = *(u16 *)((s32)arg0 + 0xA);\n w.vz = *(u16 *)((s32)arg0 + 0xE);\n gte_ldv0(&w);\n gte_rtps();\n gte_stsxy(&res.x);\n gte_stflg(&res.flag);\n\n if ((res.flag & -0x1001) != 0) { rv = 0; goto out; }\n if ((res.x < 0 ? -res.x : res.x) >= 0x105) { rv = 0; goto out; }\n if ((res.y < 0 ? -res.y : res.y) >= 0x8D) { rv = 0; goto out; }\ntail:\n if (func_80013478((s32)&D_80126B5C, (s32)&vin) <= 0x41010)\n func_8002D4C8(0xB67, 0);\n rv = 1;\nout:\n __asm__ __volatile__(\"\" : : \"r\"(rv)); // !FAKE: keepalive \u2014 NEEDED DIFFERS (P36 rung B tus8)\n}\n", "after_text": "s32 func_8018209C_impl(void *arg0) __asm__(\"func_8018209C\");\n\ns32 func_8018209C_impl(void *arg0)\n{\n SV_8018209C vin;\n SV_8018209C w;\n RES_8018209C res;\n s32 t;\n\n func_8012F214((s32)arg0, (s32)D_8018E56C, (s32)&vin);\n gte_SetRotMatrix(&D_800AF648);\n gte_SetTransMatrix(&D_800AF648);\n gte_ldv0(&vin);\n gte_rtps();\n gte_stsxy(&res.x);\n gte_stflg(&res.flag);\n if (res.flag & 0xFFFFEFFF) {\n return 0;\n }\n t = res.x;\n if (t < 0) {\n t = -t;\n }\n if (t >= 0xAB || (res.y >= 0 ? res.y >= 0x83 : -res.y >= 0x83)) {\n w.vx = *(u16 *)((s32)arg0 + 6);\n w.vy = *(u16 *)((s32)arg0 + 0xA);\n w.vz = *(u16 *)((s32)arg0 + 0xE);\n gte_ldv0(&w);\n gte_rtps();\n gte_stsxy(&res.x);\n gte_stflg(&res.flag);\n if (res.flag & 0xFFFFEFFF) {\n return 0;\n }\n t = res.x;\n if (t < 0) {\n t = -t;\n }\n if (t >= 0x105 || (res.y >= 0 ? res.y >= 0x8D : -res.y >= 0x8D)) {\n return 0;\n }\n }\n if (func_80013478((s32)&D_80126B5C, (s32)&vin) <= 0x41010) {\n func_8002D4C8(0xB67, 0);\n }\n return 1;\n}\n"} diff --git a/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c b/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c index 81a87df90..7019af8a3 100644 --- a/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c +++ b/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c @@ -5266,59 +5266,52 @@ extern s32 func_80013478(s32 a0, s32 a1); extern void func_8002D4C8(s32 a0, s32 a1); extern u8 D_80126B5C; -void func_8018209C(void *arg0) +s32 func_8018209C_impl(void *arg0) __asm__("func_8018209C"); + +s32 func_8018209C_impl(void *arg0) { SV_8018209C vin; SV_8018209C w; RES_8018209C res; - register s32 g __asm__("$7"); // !FAKE: pin $7 — NEEDED DIFFERS (P36 rung B tus8) - s32 rv; + s32 t; func_8012F214((s32)arg0, (s32)D_8018E56C, (s32)&vin); - - g = (s32)&D_800AF648; - __asm__ __volatile__( // !FAKE: gte direct — clobbers beyond Sony's macro (a scheduling steer; P36 T5 t5_remark3) - "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" - : : "r"(g) : "$12", "$13", "$14", "memory"); // !FAKE: gte direct — clobbers ['memory'] (gte_SetRotMatrix_m) beyond Sony's (P36 T5 gte1) - __asm__ __volatile__( - "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"(g) : "$12", "$13", "$14", "memory"); - + gte_SetRotMatrix(&D_800AF648); + gte_SetTransMatrix(&D_800AF648); gte_ldv0(&vin); gte_rtps(); gte_stsxy(&res.x); gte_stflg(&res.flag); - - if ((res.flag & -0x1001) != 0) { rv = 0; goto out; } - if ((res.x < 0 ? -res.x : res.x) >= 0xAB) - goto L2; - if ((res.y < 0 ? -res.y : res.y) >= 0x83) - goto L2; - goto tail; - -L2: - w.vx = *(u16 *)((s32)arg0 + 6); - w.vy = *(u16 *)((s32)arg0 + 0xA); - w.vz = *(u16 *)((s32)arg0 + 0xE); - gte_ldv0(&w); - gte_rtps(); - gte_stsxy(&res.x); - gte_stflg(&res.flag); - - if ((res.flag & -0x1001) != 0) { rv = 0; goto out; } - if ((res.x < 0 ? -res.x : res.x) >= 0x105) { rv = 0; goto out; } - if ((res.y < 0 ? -res.y : res.y) >= 0x8D) { rv = 0; goto out; } -tail: - if (func_80013478((s32)&D_80126B5C, (s32)&vin) <= 0x41010) + if (res.flag & 0xFFFFEFFF) { + return 0; + } + t = res.x; + if (t < 0) { + t = -t; + } + if (t >= 0xAB || (res.y >= 0 ? res.y >= 0x83 : -res.y >= 0x83)) { + w.vx = *(u16 *)((s32)arg0 + 6); + w.vy = *(u16 *)((s32)arg0 + 0xA); + w.vz = *(u16 *)((s32)arg0 + 0xE); + gte_ldv0(&w); + gte_rtps(); + gte_stsxy(&res.x); + gte_stflg(&res.flag); + if (res.flag & 0xFFFFEFFF) { + return 0; + } + t = res.x; + if (t < 0) { + t = -t; + } + if (t >= 0x105 || (res.y >= 0 ? res.y >= 0x8D : -res.y >= 0x8D)) { + return 0; + } + } + if (func_80013478((s32)&D_80126B5C, (s32)&vin) <= 0x41010) { func_8002D4C8(0xB67, 0); - rv = 1; -out: - __asm__ __volatile__("" : : "r"(rv)); // !FAKE: keepalive — NEEDED DIFFERS (P36 rung B tus8) + } + return 1; }