From 2d61baa9e9db59be90f5321a694872ec1bfb1aa3 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 12 Aug 2026 16:15:34 -0600 Subject: [PATCH] feat(phase-30 S48-T6): propagate func_80187F2C to its zero-crack siblings --- src/ov_SC03_107/ov_SC03_107_jr_801789AC.c | 29 ++++++++++++++++++++++- src/ov_SC03_111/ov_SC03_111_jr_8017EC58.c | 29 ++++++++++++++++++++++- src/ov_SC03_112/ov_SC03_112_jr_80183AE0.c | 29 ++++++++++++++++++++++- src/ov_SC03_113/ov_SC03_113_jr_8017C294.c | 29 ++++++++++++++++++++++- src/ov_SC03_117/ov_SC03_117_jr_80181C80.c | 29 ++++++++++++++++++++++- src/ov_SC03_119/ov_SC03_119_jr_801863CC.c | 29 ++++++++++++++++++++++- src/ov_SC05_004/ov_SC05_004_jr_8017F210.c | 29 ++++++++++++++++++++++- 7 files changed, 196 insertions(+), 7 deletions(-) diff --git a/src/ov_SC03_107/ov_SC03_107_jr_801789AC.c b/src/ov_SC03_107/ov_SC03_107_jr_801789AC.c index edd2fd070..11ca9de74 100644 --- a/src/ov_SC03_107/ov_SC03_107_jr_801789AC.c +++ b/src/ov_SC03_107/ov_SC03_107_jr_801789AC.c @@ -7735,7 +7735,34 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_801789AC", func_8018096 INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_801789AC", func_801809E8); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_801789AC", func_80180A9C); + +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012E688(s32, u16, u16); + +void func_80180A9C(s32 a0) +{ + *(s32 *)(a0 + 0x8) -= 0x80000; + *(s32 *)(a0 + 0x4) += func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + *(s32 *)(a0 + 0xC) += func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + + if (--*(s16 *)(a0 + 0xFE) == 0) { + if (func_8012BCCC(a0) < 0x4001) { + if (func_8012BDBC(a0, 0x200) == 1) { + *(s16 *)(a0 + 0x2) = 5; + *(s16 *)(a0 + 0xFE) = 4; + ((void (*)(s32, s32, s32))func_8012E688)(a0, 0x98F, 0); + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_801789AC", func_80180B7C); diff --git a/src/ov_SC03_111/ov_SC03_111_jr_8017EC58.c b/src/ov_SC03_111/ov_SC03_111_jr_8017EC58.c index c43ce3a86..c5376804b 100644 --- a/src/ov_SC03_111/ov_SC03_111_jr_8017EC58.c +++ b/src/ov_SC03_111/ov_SC03_111_jr_8017EC58.c @@ -5038,7 +5038,34 @@ INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_8018371 INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80183790); -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80183844); + +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012E688(s32, s32, s32); + +void func_80183844(s32 a0) +{ + *(s32 *)(a0 + 0x8) -= 0x80000; + *(s32 *)(a0 + 0x4) += func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + *(s32 *)(a0 + 0xC) += func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + + if (--*(s16 *)(a0 + 0xFE) == 0) { + if (func_8012BCCC(a0) < 0x4001) { + if (func_8012BDBC(a0, 0x200) == 1) { + *(s16 *)(a0 + 0x2) = 5; + *(s16 *)(a0 + 0xFE) = 4; + ((void (*)(s32, s32, s32))func_8012E688)(a0, 0x98F, 0); + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } +} + INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80183924); diff --git a/src/ov_SC03_112/ov_SC03_112_jr_80183AE0.c b/src/ov_SC03_112/ov_SC03_112_jr_80183AE0.c index 10d9169d1..836d1a62c 100644 --- a/src/ov_SC03_112/ov_SC03_112_jr_80183AE0.c +++ b/src/ov_SC03_112/ov_SC03_112_jr_80183AE0.c @@ -3233,7 +3233,34 @@ INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_8018462 INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_801846A4); -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_80184758); + +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012E688(s32, s32, s32); + +void func_80184758(s32 a0) +{ + *(s32 *)(a0 + 0x8) -= 0x80000; + *(s32 *)(a0 + 0x4) += func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + *(s32 *)(a0 + 0xC) += func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + + if (--*(s16 *)(a0 + 0xFE) == 0) { + if (func_8012BCCC(a0) < 0x4001) { + if (func_8012BDBC(a0, 0x200) == 1) { + *(s16 *)(a0 + 0x2) = 5; + *(s16 *)(a0 + 0xFE) = 4; + ((void (*)(s32, s32, s32))func_8012E688)(a0, 0x98F, 0); + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } +} + INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_80184838); diff --git a/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c b/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c index 7cee09af0..e7181a808 100644 --- a/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c +++ b/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c @@ -6198,7 +6198,34 @@ INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_801823A INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_80182428); -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_801824DC); + +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012E688(s32, s32, s32); + +void func_801824DC(s32 a0) +{ + *(s32 *)(a0 + 0x8) -= 0x80000; + *(s32 *)(a0 + 0x4) += func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + *(s32 *)(a0 + 0xC) += func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + + if (--*(s16 *)(a0 + 0xFE) == 0) { + if (func_8012BCCC(a0) < 0x4001) { + if (func_8012BDBC(a0, 0x200) == 1) { + *(s16 *)(a0 + 0x2) = 5; + *(s16 *)(a0 + 0xFE) = 4; + ((void (*)(s32, s32, s32))func_8012E688)(a0, 0x98F, 0); + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } +} + INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_801825BC); diff --git a/src/ov_SC03_117/ov_SC03_117_jr_80181C80.c b/src/ov_SC03_117/ov_SC03_117_jr_80181C80.c index 684761043..57d057a08 100644 --- a/src/ov_SC03_117/ov_SC03_117_jr_80181C80.c +++ b/src/ov_SC03_117/ov_SC03_117_jr_80181C80.c @@ -3821,7 +3821,34 @@ INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80181C80", func_801836A INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80181C80", func_8018372C); -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80181C80", func_801837E0); + +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012E688(s32, s32, s32); + +void func_801837E0(s32 a0) +{ + *(s32 *)(a0 + 0x8) -= 0x80000; + *(s32 *)(a0 + 0x4) += func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + *(s32 *)(a0 + 0xC) += func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + + if (--*(s16 *)(a0 + 0xFE) == 0) { + if (func_8012BCCC(a0) < 0x4001) { + if (func_8012BDBC(a0, 0x200) == 1) { + *(s16 *)(a0 + 0x2) = 5; + *(s16 *)(a0 + 0xFE) = 4; + ((void (*)(s32, s32, s32))func_8012E688)(a0, 0x98F, 0); + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } +} + INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80181C80", func_801838C0); diff --git a/src/ov_SC03_119/ov_SC03_119_jr_801863CC.c b/src/ov_SC03_119/ov_SC03_119_jr_801863CC.c index de2524830..323d93e77 100644 --- a/src/ov_SC03_119/ov_SC03_119_jr_801863CC.c +++ b/src/ov_SC03_119/ov_SC03_119_jr_801863CC.c @@ -3852,7 +3852,34 @@ INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801863CC", func_80187DF INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801863CC", func_80187E78); -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801863CC", func_80187F2C); + +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012E688(s32, s32, s32); + +void func_80187F2C(s32 a0) +{ + *(s32 *)(a0 + 0x8) -= 0x80000; + *(s32 *)(a0 + 0x4) += func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + *(s32 *)(a0 + 0xC) += func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + + if (--*(s16 *)(a0 + 0xFE) == 0) { + if (func_8012BCCC(a0) < 0x4001) { + if (func_8012BDBC(a0, 0x200) == 1) { + *(s16 *)(a0 + 0x2) = 5; + *(s16 *)(a0 + 0xFE) = 4; + ((void (*)(s32, s32, s32))func_8012E688)(a0, 0x98F, 0); + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } +} + INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801863CC", func_8018800C); diff --git a/src/ov_SC05_004/ov_SC05_004_jr_8017F210.c b/src/ov_SC05_004/ov_SC05_004_jr_8017F210.c index e7d83db31..fda8fdeab 100644 --- a/src/ov_SC05_004/ov_SC05_004_jr_8017F210.c +++ b/src/ov_SC05_004/ov_SC05_004_jr_8017F210.c @@ -3781,7 +3781,34 @@ INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017F210", func_80180C3 INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017F210", func_80180CBC); -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017F210", func_80180D70); + +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012E688(s32, s32, s32); + +void func_80180D70(s32 a0) +{ + *(s32 *)(a0 + 0x8) -= 0x80000; + *(s32 *)(a0 + 0x4) += func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + *(s32 *)(a0 + 0xC) += func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; + + if (--*(s16 *)(a0 + 0xFE) == 0) { + if (func_8012BCCC(a0) < 0x4001) { + if (func_8012BDBC(a0, 0x200) == 1) { + *(s16 *)(a0 + 0x2) = 5; + *(s16 *)(a0 + 0xFE) = 4; + ((void (*)(s32, s32, s32))func_8012E688)(a0, 0x98F, 0); + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } else { + *(s16 *)(a0 + 0x2) = 7; + } + } +} + INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017F210", func_80180E50);