From c7775eb8b575b6ffabe09b11f0b8ac5a4d63e3ff Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Tue, 30 Jun 2026 05:36:16 -0600 Subject: [PATCH] =?UTF-8?q?feat(phase-23):=20lora-grind=20gate=20=E2=80=94?= =?UTF-8?q?=20+15=20fns=20x0=20propagated=20(fleet=2063.74%)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/dedup.us.yaml | 7 +++ src/ov_SC01_009/ov_SC01_009.c | 6 +- src/ov_SC01_074/ov_SC01_074.c | 2 +- src/ov_SC01_080/ov_SC01_080.c | 101 +++++++++++++++++++++++++++++----- src/shared/engine_core.h | 6 ++ 5 files changed, 101 insertions(+), 21 deletions(-) diff --git a/config/dedup.us.yaml b/config/dedup.us.yaml index e4b8f5be91..d5b100e364 100644 --- a/config/dedup.us.yaml +++ b/config/dedup.us.yaml @@ -11671,3 +11671,10 @@ groups: func: DEFINE_func_8017D7E0 vram: 0x8017D7E0 binaries: [ov_SC01_005, ov_SC01_006] + - id: E_func_8017CDFC + tier: h_exact + hash: 511a8b68802b6800ebb271e89b28604ee53e3401 + source: src/shared/engine_core.h + func: DEFINE_func_8017CDFC + vram: 0x8017CDFC + binaries: [ov_SC01_009, ov_SC01_074] diff --git a/src/ov_SC01_009/ov_SC01_009.c b/src/ov_SC01_009/ov_SC01_009.c index 07e03e3589..b2a1da89b2 100644 --- a/src/ov_SC01_009/ov_SC01_009.c +++ b/src/ov_SC01_009/ov_SC01_009.c @@ -4771,11 +4771,7 @@ INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009", func_8017CD7C); INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009", func_8017CDB8); -extern s32 func_800167F0(s32 arg0); - -s32 func_8017CDFC(void) { - return (func_800167F0(0) & 0xFFFF) != 0; -} +DEFINE_func_8017CDFC() /* dedup: shared engine-core @0x8017CDFC (src/shared) */ INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009", func_8017CE20); diff --git a/src/ov_SC01_074/ov_SC01_074.c b/src/ov_SC01_074/ov_SC01_074.c index c570587509..66be130e16 100644 --- a/src/ov_SC01_074/ov_SC01_074.c +++ b/src/ov_SC01_074/ov_SC01_074.c @@ -4778,7 +4778,7 @@ INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074", func_8017CD7C); INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074", func_8017CDB8); -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074", func_8017CDFC); +DEFINE_func_8017CDFC() /* dedup: shared engine-core @0x8017CDFC (src/shared) */ INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074", func_8017CE20); diff --git a/src/ov_SC01_080/ov_SC01_080.c b/src/ov_SC01_080/ov_SC01_080.c index 847782a434..1f12465e7e 100644 --- a/src/ov_SC01_080/ov_SC01_080.c +++ b/src/ov_SC01_080/ov_SC01_080.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_SC01_080/nonmatchings/ov_SC01_080", 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_SC01_080/nonmatchings/ov_SC01_080", func_80128ED8); @@ -149,7 +157,12 @@ INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8012A464); DEFINE_func_8012A4BC() /* dedup: shared engine-core @0x8012A4BC (src/shared) */ -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8012A568); +extern void func_8012A598(void *a0); + void func_8012A568(void (*a0)(void)) { + ((void (*)(void))func_8012A598)(); + a0(); + } + INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", 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_SC01_080/nonmatchings/ov_SC01_080", 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_SC01_080/nonmatchings/ov_SC01_080", 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_SC01_080/nonmatchings/ov_SC01_080", func_8012E014); INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8012E138); -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", 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_SC01_080/nonmatchings/ov_SC01_080", 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_SC01_080/nonmatchings/ov_SC01_080", func_80138BE0); -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", 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_SC01_080/nonmatchings/ov_SC01_080", 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_SC01_080/nonmatchings/ov_SC01_080", 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) */ @@ -4819,7 +4863,11 @@ INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8017EDF8); INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8017EE44); -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8017EEC0); +extern void func_800D1EBC(void); + void func_8017EEC0(void) { + func_800D1EBC(); + } + INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8017EEE0); @@ -4837,7 +4885,11 @@ INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8017F1C0); INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8017F204); -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8017F248); +extern void func_8016F0E4(void); + void func_8017F248(void) { + ((s32 (*)(void))func_8016F0E4)(); + } + INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8017F268); @@ -4955,7 +5007,10 @@ INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_801819D0); INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80181A70); -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80181B80); +void func_80181B80(void *a0) { + *(short *)((char *)a0 + 0x2) = 1; + } + INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80181B8C); @@ -4997,7 +5052,10 @@ INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80182990); INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80182A00); -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80182A70); +s32 func_80182A70(void) { + return 0x2; + } + INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80182A78); @@ -5013,7 +5071,11 @@ INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80182EF8); INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80182F64); -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80183034); +extern s32 func_8012AD50(void *a0); + void func_80183034(void) { + ((void (*)(void))func_8012AD50)(); + } + INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80183054); @@ -5021,12 +5083,21 @@ INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_801831A0); INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_801831E8); -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80183258); +extern void func_80183278(void); + void func_80183258(s32 *a0) { + *(s16 *)((s32)a0 + 0xFE) = 0; + func_80183278(); + } + INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_80183278); INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_801832C0); -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_801832FC); +extern s32 func_8012AD50(void *a0); + void func_801832FC(void) { + ((void (*)(void))func_8012AD50)(); + } + INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8018331C); diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index b52971c521..6eb3fc3d85 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -24008,4 +24008,10 @@ func_8017D808(arg0, &D_801274E8); \ } +#define DEFINE_func_8017CDFC() \ + extern s32 func_800167F0(s32 arg0); \ + s32 func_8017CDFC(void) { \ + return (func_800167F0(0) & 0xFFFF) != 0; \ + } + #endif