From f83238b28aa8ed260bd018169f0af4ead962bec0 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Sat, 29 Aug 2026 17:39:39 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20family-remap-hnorm=20gate=20?= =?UTF-8?q?=E2=80=94=20+4=20fns=20x0=20propagated=20(fleet=2098.9%)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ov_SC07_011/ov_SC07_011.c | 28 +++++- src/ov_SC07_011/ov_SC07_011_jr_80135D20.c | 13 ++- src/ov_SC07_011/ov_SC07_011_jr_801457A4.c | 101 +++++++++++++++++++++- src/ov_SC07_011/ov_SC07_011_jr_8016AE5C.c | 28 +++++- 4 files changed, 166 insertions(+), 4 deletions(-) diff --git a/src/ov_SC07_011/ov_SC07_011.c b/src/ov_SC07_011/ov_SC07_011.c index 168491a66..f94d382a2 100644 --- a/src/ov_SC07_011/ov_SC07_011.c +++ b/src/ov_SC07_011/ov_SC07_011.c @@ -1386,7 +1386,33 @@ DEFINE_func_8012D5E4() /* dedup: shared engine-core @0x8012d5e4 (src/shared) */ DEFINE_func_8012D624() /* dedup: shared engine-core @0x8012d624 (src/shared) */ -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011", func_8012D664); + + +int func_8012D664(int arg0, int arg1, int arg2) +{ + extern u16 D_80126B5E; + extern u16 D_80126B62; + extern u16 D_80126B66; + extern s32 func_800132BC(s32 a0, s32 a1); + extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); + extern u8 D_8017E9BC[]; + + u16 s[3]; + int ret; + int t; + + s[0] = (*(unsigned short *)&D_80126B5E); + s[1] = (*(unsigned short *)&D_80126B62) - 0x40; + s[2] = (*(unsigned short *)&D_80126B66); + ret = ((int (*)())func_800132BC)(arg0, s); + t = arg1 + 0x20; + if (ret < t * t) { + func_8012F568(1, 1, 0, arg2, arg0, &D_8017E9BC); + return 1; + } + return 0; +} + DEFINE_func_8012D714() /* dedup: shared engine-core @0x8012d714 (src/shared) */ diff --git a/src/ov_SC07_011/ov_SC07_011_jr_80135D20.c b/src/ov_SC07_011/ov_SC07_011_jr_80135D20.c index e029d1d1f..464a221fc 100644 --- a/src/ov_SC07_011/ov_SC07_011_jr_80135D20.c +++ b/src/ov_SC07_011/ov_SC07_011_jr_80135D20.c @@ -1193,7 +1193,18 @@ void func_80136C54(void) } -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_80135D20", func_80136C90); + + + + +s32 func_80136C90() +{ + extern void func_8001534C(int, void *, int, int, int, int); + extern S10_80136C90 D_8018E144; + S10_80136C90 buf = D_8018E144; + func_8001534C(0, &buf, 0x78, 0x10, 0, 0); +} + void func_80136D00(void) { } diff --git a/src/ov_SC07_011/ov_SC07_011_jr_801457A4.c b/src/ov_SC07_011/ov_SC07_011_jr_801457A4.c index a0d4d07a1..e1d89e242 100644 --- a/src/ov_SC07_011/ov_SC07_011_jr_801457A4.c +++ b/src/ov_SC07_011/ov_SC07_011_jr_801457A4.c @@ -1135,7 +1135,106 @@ DEFINE_func_80145BF8() /* dedup: shared engine-core @0x80145bf8 (src/shared) */ DEFINE_func_80145C54() /* dedup: shared engine-core @0x80145c54 (src/shared) */ -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_801457A4", func_80145CEC); + + +void func_80145CEC(void) { + extern int func_8001C320(); + extern s32 func_80029504(void); + extern int func_801552F4(); + extern int func_80147084(); + extern int func_80147098(); + extern int func_801470AC(); + extern int func_80149210(); + extern int func_8014BE9C(); + extern int func_8016533C(); + extern int func_801627C0(); + extern int func_80162AF4(); + extern int func_80165C78(); + extern int func_801468C8(); + extern int func_80145EE8(); + extern int func_8014C968(); + extern int func_8014C6D0(); + extern int func_80165938(); + extern int func_80153C8C(); + extern int func_800290BC(); + extern s32 D_800AFAE8; + extern s32 D_800DE2A4; + extern s32 D_801152C8; + extern s32 D_80180030; + extern s32 * D_80126B78[1]; + extern s32 * D_800AF7C8; + extern s32 * D_80126B90; + extern s16 D_80126BB8; + extern s16 D_80126BBA; + extern s16 D_80126BBC; + extern s16 D_80126BC0; + extern s16 D_80126BC2; + extern s16 D_80126BC4; + extern s16 D_80126BC8; + extern s16 D_80126BCA; + extern s16 D_80126BCC; + extern s16 D_80126D10; + extern s16 D_80126D12; + extern s16 D_80126C4E; + extern s16 currentLocationId; + extern s32 D_8011F9C4; + extern s32 D_8012707C; + extern s32 D_8011DB10; + extern s32 D_80126B58; + + unsigned int uVar1; + s32 pad[2]; + (void)&pad; + + func_80016714(&D_80126B58, 0x254); + D_80126B78[0] = (s32 *)&D_800AFAE8; + D_800AF7C8 = (s32 *)&D_801152C8; + func_8001C320(&D_800AFAE8, &D_800DE2A4); + *(s32 *)((s32)D_80126B78[0] + 0x28) = 0x7fff7fff; + D_80126B90 = (s32 *)&D_80180030; + *(u16 *)((s32)D_80126B78[0] + 0x18) = 0x1000; + D_80126BC8 = 0x1000; + D_80126BC0 = 0x1000; + D_80126BB8 = 0x1000; + *(u16 *)((s32)D_80126B78[0] + 0x1a) = 0x1000; + D_80126BCA = 0x1000; + D_80126BC2 = 0x1000; + D_80126BBA = 0x1000; + *(u16 *)((s32)D_80126B78[0] + 0x1c) = 0x1000; + D_80126BCC = 0x1000; + D_80126BC4 = 0x1000; + D_80126BBC = 0x1000; + D_80126D12 = 0x1000; + D_80126D10 = 0x1000; + D_80126C4E = 0x1000; + func_801552F4(&D_80126B58); + func_80147084(&D_80126B58); + func_80147098(&D_80126B58); + func_801470AC(&D_80126B58); + *(u16 *)((s32)D_80126B78[0] + 0x2c) = *(u16 *)((s32)D_80126B78[0] + 0x2c) | 0x50; + func_80149210(&D_80126B58, 8); + func_8014BE9C(); + func_8016533C(); + func_801627C0(); + func_80162AF4(); + func_80165C78(); + func_801468C8(&D_80126B58, 1); + if (currentLocationId != 0x30a2 && currentLocationId != 0x30a5) { + func_80145EE8(0); + } + func_8014C968(); + func_8014C6D0(); + D_8011F9C4 = 0; + func_80165938(); + func_80153C8C(); + D_8012707C = 0; + D_8011DB10 = 0; + uVar1 = ((int (*)())func_80029504)(); + if (uVar1 >= 10) { + func_800290BC(); + } +} + diff --git a/src/ov_SC07_011/ov_SC07_011_jr_8016AE5C.c b/src/ov_SC07_011/ov_SC07_011_jr_8016AE5C.c index 075cebac3..c2154b378 100644 --- a/src/ov_SC07_011/ov_SC07_011_jr_8016AE5C.c +++ b/src/ov_SC07_011/ov_SC07_011_jr_8016AE5C.c @@ -3094,7 +3094,33 @@ s32 func_8016BBE0(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC07_011/nonmatchings/ov_SC07_011_jr_8016AE5C", func_8016BCC0); + + +extern M2C_UNK D_8018F794; +extern M2C_UNK D_8018F798; +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); + + void func_8016BCC0(void *arg0) { + u16 temp_a2; + u16 temp_v0; + void *temp_s0; + temp_s0 = M2C_FIELD(arg0, void **, 0x20); + func_8016BF50(); + temp_a2 = M2C_FIELD(arg0, u16 *, 0x10) + 0x60; + M2C_FIELD(arg0, u16 *, 0x10) = temp_a2; + temp_v0 = M2C_FIELD(temp_s0, u16 *, 0x1A) + temp_a2; + M2C_FIELD(temp_s0, u16 *, 0x1A) = temp_v0; + M2C_FIELD(temp_s0, u16 *, 0x18) = temp_v0; + M2C_FIELD(temp_s0, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_s0, u16 *, 0x12) + 0x71) & 0xFFF); + func_8016BFA8(arg0, &D_8018F794, &D_8018F798, temp_s0 + 0x18); + if ((s16) M2C_FIELD(temp_s0, u16 *, 0x1A) >= 0x1001) { + M2C_FIELD(temp_s0, u16 *, 0x18) = 0x1000U; + M2C_FIELD(temp_s0, u16 *, 0x1A) = 0x1000U; + func_80146E90(arg0, M2C_FIELD(arg0, s32 *, 0x30)); + M2C_FIELD(arg0, u16 *, 2) = (u16) (M2C_FIELD(arg0, u16 *, 2) + 1); + } + } + extern void func_8016BF50(s32); extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3);