From 8eb11589048685272d2c2dbb3faa7a3f74b958ef Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Tue, 30 Jun 2026 07:17:05 -0600 Subject: [PATCH] =?UTF-8?q?feat(phase-23):=20lora-grind=20gate=20=E2=80=94?= =?UTF-8?q?=20+23=20fns=20x0=20propagated=20(fleet=2063.81%)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ov_SC02_028/ov_SC02_028.c | 152 +++++++++++++++++++++++++++++----- 1 file changed, 129 insertions(+), 23 deletions(-) diff --git a/src/ov_SC02_028/ov_SC02_028.c b/src/ov_SC02_028/ov_SC02_028.c index 6679bfeb8d..a72118ab15 100644 --- a/src/ov_SC02_028/ov_SC02_028.c +++ b/src/ov_SC02_028/ov_SC02_028.c @@ -73,7 +73,15 @@ DEFINE_func_80128D60() /* dedup: shared engine-core @0x80128D60 (src/shared) */ DEFINE_func_80128DB4() /* dedup: shared engine-core @0x80128DB4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80128EA8); +void func_80128EA8(s32 a0, s32 a1, s32 a2) +{ + *(s32 *)((s32)a1 + 0x0) = a2; + *(s16 *)((s32)a1 + 0x4) = 0; + *(s16 *)((s32)a1 + 0x6) = (*(s32 *)((s32)a2 + 0x4)) & 0x3F; + *(s16 *)((s32)a0 + 0x28) = *(s16 *)((s32)a2 + 0x0); + *(s16 *)((s32)a0 + 0x2A) = *(s16 *)((s32)a2 + 0x2); + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80128ED8); @@ -149,7 +157,12 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8012A464); DEFINE_func_8012A4BC() /* dedup: shared engine-core @0x8012A4BC (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8012A568); +extern void func_8012A598(void *a0); + void func_8012A568(void (*a0)(void)) { + ((void (*)(void))func_8012A598)(); + a0(); + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8012A598); @@ -189,7 +202,10 @@ DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ DEFINE_func_8012AD50() /* dedup: shared engine-core @0x8012AD50 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8012AD64); +void func_8012AD64(s32 *a0, s16 a1) { + *(s16 *)((s32)a0 + 0x34) = a1; + } + DEFINE_func_8012AD6C() /* dedup: shared engine-core @0x8012AD6C (src/shared) */ @@ -265,7 +281,10 @@ DEFINE_func_8012BEE8() /* dedup: shared engine-core @0x8012BEE8 (src/shared) */ DEFINE_func_8012BF10() /* dedup: shared engine-core @0x8012BF10 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8012BF4C); +void func_8012BF4C(s32 *a0, s32 a1) { + *(s32 *)((s32)a0 + 0x1C) = a1; + } + DEFINE_func_8012BF54() /* dedup: shared engine-core @0x8012BF54 (src/shared) */ @@ -379,7 +398,10 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8012E014); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8012E138); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8012E27C); +s32 func_8012E27C(void) { + return 0x1; + } + DEFINE_func_8012E284() /* dedup: shared engine-core @0x8012E284 (src/shared) */ @@ -601,7 +623,13 @@ DEFINE_func_80132DC4() /* dedup: shared engine-core @0x80132DC4 (src/shared) */ DEFINE_func_80132E6C() /* dedup: shared engine-core @0x80132E6C (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80132EC4); +void func_80132EC4(s32 *a0, s16 a1) { + while (*a0 != 0) { + *(s16 *)((s32)a0 + 0x4) = a1; + a0 = (s32 *)((s32)a0 + 0x8); + } + } + DEFINE_func_80132EF4() /* dedup: shared engine-core @0x80132EF4 (src/shared) */ @@ -749,7 +777,16 @@ DEFINE_func_80138B88() /* dedup: shared engine-core @0x80138B88 (src/shared) */ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80138BE0); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80138C30); +void func_80138C30(void * a0) +{ + s16 v1 = *(s16 *)((s32)a0 + 0x4); + if (v1 == 4) { + *(s16 *)((s32)a0 + 0x4) = 2; + } else { + *(s32 *)((s32)a0 + 0x8) |= 0x800; + } + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80138C60); @@ -4413,7 +4450,14 @@ DEFINE_func_80174604() /* dedup: shared engine-core @0x80174604 (src/shared) */ DEFINE_func_80174630() /* dedup: shared engine-core @0x80174630 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80174650); +extern s32 D_801270BC; + extern s32 D_801150F8; + s32 func_80174650(s32 _arg0) +{ + D_801270BC = D_801270BC | 1; + D_801150F8 = 0; + } + DEFINE_func_80174674() /* dedup: shared engine-core @0x80174674 (src/shared) */ @@ -4773,7 +4817,11 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017CB68); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017CBD4); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017CC60); +extern void func_8012C218(void *a0); + void func_8017CC60(void) { + ((s32 (*)(void))func_8012C218)(); + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017CC80); @@ -4841,7 +4889,11 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017EA48); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017EA88); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017EB14); +extern void func_800D1EBC(void); + void func_8017EB14(void) { + func_800D1EBC(); + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017EB34); @@ -4857,11 +4909,18 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017ED00); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017ED3C); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017ED78); +s32 func_8017ED78(void) { + return 0; + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017ED80); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017EDE8); +extern void func_800D1EBC(void); + void func_8017EDE8(void) { + func_800D1EBC(); + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017EE08); @@ -4911,11 +4970,19 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017F9AC); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017FB44); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017FB74); +extern s32 resLoad_lastId; + s32 func_8017FB74(void) { + return (u32)(resLoad_lastId ^ 0x39) != 0; + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017FB8C); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017FBBC); +extern void func_8017FD30(void); + void func_8017FBBC(void) { + func_8017FD30(); + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8017FBDC); @@ -5004,7 +5071,12 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801812FC); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801813B8); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801813E0); +extern void func_8012AD44(s32 *a0, s16 a1); + void func_801813E0(s32 *a0) { + *(s16 *)((char *)a0 + 0xFC) = 0; + ((void (*)(s32 *, s32))func_8012AD44)(a0, 0x1); + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80181404); @@ -5026,7 +5098,11 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80181824); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801819F0); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80181A20); +extern void func_8012AD44(s32 *a0, s16 a1); + void func_80181A20(void *arg0) { + ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 0x5); + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80181A40); @@ -5064,7 +5140,11 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8018226C); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80182294); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801822D0); +extern void func_8012AD44(s32 *a0, s16 a1); + void func_801822D0(void *arg0) { + ((void (*)(void *, int))func_8012AD44)(arg0, 0x6); + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801822F0); @@ -5124,7 +5204,11 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801839DC); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80183A0C); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80183A84); +extern s16 D_801D3292; + void func_80183A84(s32 arg0) { + *(s16 *)((s32)&D_801D3292 + 0x0) += arg0; + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80183AA0); @@ -5176,11 +5260,20 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801856B4); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801856F0); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8018572C); +void func_8018572C(void *a0) { + *(s8 *)((s32)a0 + 0xc1) = 0; + *(s16 *)((s32)a0 + 0x5e) = 0; + *(s16 *)((s32)a0 + 0x5c) &= 0xc800; + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80185744); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801857E8); +void func_801857E8(void *a0) { + void *a1 = *(void **)((char *)a0 + 0x20); + *(u16 *)((char *)a1 + 0x12) += *(u16 *)((char *)a0 + 0xfc); + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80185804); @@ -5223,7 +5316,10 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80186318); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80186344); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801863B4); +void func_801863B4(void *a0) { + M2C_FIELD(a0, s16 *, 0x2) = 4; + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801863C0); @@ -5239,7 +5335,12 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80186994); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801869FC); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80186A8C); +void func_80186A8C(void *a0) { + *(s16 *)((char *)a0 + 0x5c) = 0; + *(s16 *)((char *)a0 + 0x98) = 0; + *(s32 *)((char *)a0 + 0x1c) = 0; + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80186A9C); @@ -5263,7 +5364,12 @@ INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80186F00); INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80186F78); -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_80187094); +extern s32 D_801A9788; + void func_80187094(s32 *a0) { + *(s16 *)((s32)a0 + 0x2) = 0x3; + *(s32 *)((s32)a0 + 0xcc) = &D_801A9788; + } + INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_801870AC);