From 3d627b97a96b9c8fbb1a7c6d352d6f49aaccb0d2 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 12 Aug 2026 18:24:23 -0600 Subject: [PATCH] feat(phase-30 S48-T6): propagate func_8017C814 to its zero-crack siblings --- src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c | 34 ++++++++++++++++++++++- src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c | 34 ++++++++++++++++++++++- src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c | 34 ++++++++++++++++++++++- src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c | 34 ++++++++++++++++++++++- src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c | 34 ++++++++++++++++++++++- src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c | 34 ++++++++++++++++++++++- 6 files changed, 198 insertions(+), 6 deletions(-) diff --git a/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c b/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c index 2353aeb4f..11dd63e8b 100644 --- a/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c +++ b/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c @@ -5423,7 +5423,39 @@ void func_8017EB3C(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017ECB0); + + +extern void func_80146E90(s32 *a0, s32 a1); +extern void func_8017FA94(void *a0, s32 a1, s32 a2); + +void func_8017ECB0(void *a0) { + s32 *a2 = *(s32 **)((s32)a0 + 0x20); + s16 sum; + s32 pad[2]; + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + a2[1] |= 0x80000000; + } else { + a2[1] &= 0x7FFFFFFF; + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; + *(s32 *)((s32)a0 + 0x10) = *(s32 *)((s32)a0 + 0x10) + 0x6C000; + + sum = *(u16 *)((s32)a2 + 0x1A) + *(u16 *)((s32)a0 + 0x12); + *(u16 *)((s32)a2 + 0x1A) = sum; + *(u16 *)((s32)a2 + 0x18) = sum; + + if (sum >= 0x1001) { + *(u16 *)((s32)a2 + 0x1A) = 0x1000; + *(u16 *)((s32)a2 + 0x18) = 0x1000; + func_80146E90((s32 *)a0, 0); + func_8017FA94(a0, *(s32 *)((s32)a0 + 0x2C), 0); + func_80146E90((s32 *)a0, 0); + *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; + } +} + extern void func_8017F2AC(void *a0, s32 a1, s32 a2); diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c b/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c index 2b71621bf..c7bb11ae1 100644 --- a/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c +++ b/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c @@ -3668,7 +3668,39 @@ void func_8017C6A0(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017C814); + + +extern void func_80146E90(s32 *a0, s32 a1); +extern void func_8017D5F8(void *a0, s32 a1, s32 a2); + +void func_8017C814(void *a0) { + s32 *a2 = *(s32 **)((s32)a0 + 0x20); + s16 sum; + s32 pad[2]; + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + a2[1] |= 0x80000000; + } else { + a2[1] &= 0x7FFFFFFF; + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; + *(s32 *)((s32)a0 + 0x10) = *(s32 *)((s32)a0 + 0x10) + 0x6C000; + + sum = *(u16 *)((s32)a2 + 0x1A) + *(u16 *)((s32)a0 + 0x12); + *(u16 *)((s32)a2 + 0x1A) = sum; + *(u16 *)((s32)a2 + 0x18) = sum; + + if (sum >= 0x1001) { + *(u16 *)((s32)a2 + 0x1A) = 0x1000; + *(u16 *)((s32)a2 + 0x18) = 0x1000; + func_80146E90((s32 *)a0, 0); + func_8017D5F8(a0, *(s32 *)((s32)a0 + 0x2C), 0); + func_80146E90((s32 *)a0, 0); + *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; + } +} + extern void func_8017CE10(void *a0, s32 a1, s32 a2); diff --git a/src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c b/src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c index 26576167a..7de89bb82 100644 --- a/src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c +++ b/src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c @@ -3666,7 +3666,39 @@ void func_8017C6A0(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017C814); + + +extern void func_80146E90(s32 *a0, s32 a1); +extern void func_8017D5F8(void *a0, s32 a1, s32 a2); + +void func_8017C814(void *a0) { + s32 *a2 = *(s32 **)((s32)a0 + 0x20); + s16 sum; + s32 pad[2]; + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + a2[1] |= 0x80000000; + } else { + a2[1] &= 0x7FFFFFFF; + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; + *(s32 *)((s32)a0 + 0x10) = *(s32 *)((s32)a0 + 0x10) + 0x6C000; + + sum = *(u16 *)((s32)a2 + 0x1A) + *(u16 *)((s32)a0 + 0x12); + *(u16 *)((s32)a2 + 0x1A) = sum; + *(u16 *)((s32)a2 + 0x18) = sum; + + if (sum >= 0x1001) { + *(u16 *)((s32)a2 + 0x1A) = 0x1000; + *(u16 *)((s32)a2 + 0x18) = 0x1000; + func_80146E90((s32 *)a0, 0); + func_8017D5F8(a0, *(s32 *)((s32)a0 + 0x2C), 0); + func_80146E90((s32 *)a0, 0); + *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; + } +} + extern void func_8017CE10(void *a0, s32 a1, s32 a2); diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c b/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c index 16d86bd61..0d8a3b3dd 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c @@ -3632,7 +3632,39 @@ void func_8017C6A0(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017C814); + + +extern void func_80146E90(s32 *a0, s32 a1); +extern void func_8017D5F8(void *a0, s32 a1, s32 a2); + +void func_8017C814(void *a0) { + s32 *a2 = *(s32 **)((s32)a0 + 0x20); + s16 sum; + s32 pad[2]; + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + a2[1] |= 0x80000000; + } else { + a2[1] &= 0x7FFFFFFF; + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; + *(s32 *)((s32)a0 + 0x10) = *(s32 *)((s32)a0 + 0x10) + 0x6C000; + + sum = *(u16 *)((s32)a2 + 0x1A) + *(u16 *)((s32)a0 + 0x12); + *(u16 *)((s32)a2 + 0x1A) = sum; + *(u16 *)((s32)a2 + 0x18) = sum; + + if (sum >= 0x1001) { + *(u16 *)((s32)a2 + 0x1A) = 0x1000; + *(u16 *)((s32)a2 + 0x18) = 0x1000; + func_80146E90((s32 *)a0, 0); + func_8017D5F8(a0, *(s32 *)((s32)a0 + 0x2C), 0); + func_80146E90((s32 *)a0, 0); + *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; + } +} + extern void func_8017CE10(void *a0, s32 a1, s32 a2); diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c b/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c index fb2d308ee..b54bc4bf1 100644 --- a/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c +++ b/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c @@ -3626,7 +3626,39 @@ void func_8017C6A0(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017C814); + + +extern void func_80146E90(s32 *a0, s32 a1); +extern void func_8017D5F8(void *a0, s32 a1, s32 a2); + +void func_8017C814(void *a0) { + s32 *a2 = *(s32 **)((s32)a0 + 0x20); + s16 sum; + s32 pad[2]; + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + a2[1] |= 0x80000000; + } else { + a2[1] &= 0x7FFFFFFF; + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; + *(s32 *)((s32)a0 + 0x10) = *(s32 *)((s32)a0 + 0x10) + 0x6C000; + + sum = *(u16 *)((s32)a2 + 0x1A) + *(u16 *)((s32)a0 + 0x12); + *(u16 *)((s32)a2 + 0x1A) = sum; + *(u16 *)((s32)a2 + 0x18) = sum; + + if (sum >= 0x1001) { + *(u16 *)((s32)a2 + 0x1A) = 0x1000; + *(u16 *)((s32)a2 + 0x18) = 0x1000; + func_80146E90((s32 *)a0, 0); + func_8017D5F8(a0, *(s32 *)((s32)a0 + 0x2C), 0); + func_80146E90((s32 *)a0, 0); + *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; + } +} + extern void func_8017CE10(void *a0, s32 a1, s32 a2); diff --git a/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c b/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c index 1bae61200..9fb276828 100644 --- a/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c +++ b/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c @@ -3638,7 +3638,39 @@ void func_8017C6A0(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017C814); + + +extern void func_80146E90(s32 *a0, s32 a1); +extern void func_8017D5F8(void *a0, s32 a1, s32 a2); + +void func_8017C814(void *a0) { + s32 *a2 = *(s32 **)((s32)a0 + 0x20); + s16 sum; + s32 pad[2]; + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + a2[1] |= 0x80000000; + } else { + a2[1] &= 0x7FFFFFFF; + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; + *(s32 *)((s32)a0 + 0x10) = *(s32 *)((s32)a0 + 0x10) + 0x6C000; + + sum = *(u16 *)((s32)a2 + 0x1A) + *(u16 *)((s32)a0 + 0x12); + *(u16 *)((s32)a2 + 0x1A) = sum; + *(u16 *)((s32)a2 + 0x18) = sum; + + if (sum >= 0x1001) { + *(u16 *)((s32)a2 + 0x1A) = 0x1000; + *(u16 *)((s32)a2 + 0x18) = 0x1000; + func_80146E90((s32 *)a0, 0); + func_8017D5F8(a0, *(s32 *)((s32)a0 + 0x2C), 0); + func_80146E90((s32 *)a0, 0); + *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; + } +} + extern void func_8017CE10(void *a0, s32 a1, s32 a2);