From b4f6bbe8d3f1debecbd57853d7325864398068e7 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 12 Aug 2026 16:16:08 -0600 Subject: [PATCH] feat(phase-30 S48-T6): propagate func_80183340 to its zero-crack siblings --- src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c | 38 ++++++++++++++++++++++- src/ov_SC06_018/ov_SC06_018_jr_8017C24C.c | 38 ++++++++++++++++++++++- src/ov_SC06_022/ov_SC06_022_jr_80184A28.c | 38 ++++++++++++++++++++++- src/ov_SC06_024/ov_SC06_024_jr_80186F00.c | 38 ++++++++++++++++++++++- src/ov_SC06_032/ov_SC06_032_jr_80182890.c | 38 ++++++++++++++++++++++- src/ov_SC06_033/ov_SC06_033_jr_8017C24C.c | 38 ++++++++++++++++++++++- 6 files changed, 222 insertions(+), 6 deletions(-) diff --git a/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c b/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c index 453661b833..fe71a101a5 100644 --- a/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c +++ b/src/ov_SC06_010/ov_SC06_010_jr_8017A4AC.c @@ -7348,7 +7348,43 @@ void func_80185550(s32 arg0) { INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_8017A4AC", func_801857D4); -INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_8017A4AC", func_801857F4); + +extern void func_8012B1B4(s32 a0, s32 a1); +extern void func_8012CBCC(s32 a0); +extern int func_80182F4C(int param_1, short param_2); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8012A828(s32 a0, void *a1); + +void func_801857F4(s32 a0) { + extern u8 D_801A71A4[]; + extern u8 D_801AE960[]; + extern u8 D_801AEA50[]; + extern u8 D_801AEB40[]; + s32 pad[4]; + + func_8012B1B4(a0, (s32)D_801A71A4); + func_8012CBCC(a0); + func_80182F4C(a0, 0x48); + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10); + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF; + + *(u16 *)(a0 + 0x100) -= 1; + if (*(s16 *)(a0 + 0x100) == 0) { + *(s16 *)(a0 + 2) = 6; + *(u16 *)(a0 + 0x100) = 0x2D; + *(s32 *)(a0 + 0x1C) = 0; + *(s16 *)(a0 + 0x104) = 0; + func_8012A828(a0, D_801AE960); + + if (*(s32 *)(a0 + 0xCC) != 0) { + func_8012A828(*(s32 *)(a0 + 0xCC), D_801AEA50); + } + if (*(s32 *)(a0 + 0xD0) != 0) { + func_8012A828(*(s32 *)(a0 + 0xD0), D_801AEB40); + } + } +} + INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_8017A4AC", func_801858F4); diff --git a/src/ov_SC06_018/ov_SC06_018_jr_8017C24C.c b/src/ov_SC06_018/ov_SC06_018_jr_8017C24C.c index 5dd8e11c20..9b2aed3b4d 100644 --- a/src/ov_SC06_018/ov_SC06_018_jr_8017C24C.c +++ b/src/ov_SC06_018/ov_SC06_018_jr_8017C24C.c @@ -6406,7 +6406,43 @@ void func_80182EA8(s32 arg0) { INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C", func_8018312C); -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C", func_8018314C); + +extern void func_8012B1B4(void*, void*); +extern void func_8012CBCC(s32 a0); +extern int func_801808A4(int param_1, short param_2); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8012A828(s32 a0, void *a1); + +void func_8018314C(s32 a0) { + extern u8 D_801AD4D0[]; + extern u8 D_801B4C8C[]; + extern u8 D_801B4D7C[]; + extern u8 D_801B4E6C[]; + s32 pad[4]; + + ((void (*)(s32, s32))func_8012B1B4)(a0, (s32)D_801AD4D0); + func_8012CBCC(a0); + func_801808A4(a0, 0x48); + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10); + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF; + + *(u16 *)(a0 + 0x100) -= 1; + if (*(s16 *)(a0 + 0x100) == 0) { + *(s16 *)(a0 + 2) = 6; + *(u16 *)(a0 + 0x100) = 0x2D; + *(s32 *)(a0 + 0x1C) = 0; + *(s16 *)(a0 + 0x104) = 0; + func_8012A828(a0, D_801B4C8C); + + if (*(s32 *)(a0 + 0xCC) != 0) { + func_8012A828(*(s32 *)(a0 + 0xCC), D_801B4D7C); + } + if (*(s32 *)(a0 + 0xD0) != 0) { + func_8012A828(*(s32 *)(a0 + 0xD0), D_801B4E6C); + } + } +} + INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017C24C", func_8018324C); diff --git a/src/ov_SC06_022/ov_SC06_022_jr_80184A28.c b/src/ov_SC06_022/ov_SC06_022_jr_80184A28.c index 7fa381b448..29bda0b77e 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_80184A28.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_80184A28.c @@ -5962,7 +5962,43 @@ void func_8018AD58(s32 arg0) { INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80184A28", func_8018AFDC); -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80184A28", func_8018AFFC); + +extern void func_8012B1B4(s32 a0, s32 a1); +extern void func_8012CBCC(s32 a0); +extern int func_80188754(int param_1, short param_2); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8012A828(s32 a0, void *a1); + +void func_8018AFFC(s32 a0) { + extern u8 D_801D5AB8[]; + extern u8 D_801DD274[]; + extern u8 D_801DD364[]; + extern u8 D_801DD454[]; + s32 pad[4]; + + func_8012B1B4(a0, (s32)D_801D5AB8); + func_8012CBCC(a0); + func_80188754(a0, 0x48); + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10); + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF; + + *(u16 *)(a0 + 0x100) -= 1; + if (*(s16 *)(a0 + 0x100) == 0) { + *(s16 *)(a0 + 2) = 6; + *(u16 *)(a0 + 0x100) = 0x2D; + *(s32 *)(a0 + 0x1C) = 0; + *(s16 *)(a0 + 0x104) = 0; + func_8012A828(a0, D_801DD274); + + if (*(s32 *)(a0 + 0xCC) != 0) { + func_8012A828(*(s32 *)(a0 + 0xCC), D_801DD364); + } + if (*(s32 *)(a0 + 0xD0) != 0) { + func_8012A828(*(s32 *)(a0 + 0xD0), D_801DD454); + } + } +} + INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80184A28", func_8018B0FC); diff --git a/src/ov_SC06_024/ov_SC06_024_jr_80186F00.c b/src/ov_SC06_024/ov_SC06_024_jr_80186F00.c index 6b6c13374e..1367cd196a 100644 --- a/src/ov_SC06_024/ov_SC06_024_jr_80186F00.c +++ b/src/ov_SC06_024/ov_SC06_024_jr_80186F00.c @@ -6216,7 +6216,43 @@ void func_8018D230(s32 arg0) { INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80186F00", func_8018D4B4); -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80186F00", func_8018D4D4); + +extern void func_8012B1B4(s32 a0, s32 a1); +extern void func_8012CBCC(s32 a0); +extern int func_8018AC2C(int param_1, short param_2); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8012A828(s32 a0, void *a1); + +void func_8018D4D4(s32 a0) { + extern u8 D_801D4BFC[]; + extern u8 D_801DC3B8[]; + extern u8 D_801DC4A8[]; + extern u8 D_801DC598[]; + s32 pad[4]; + + func_8012B1B4(a0, (s32)D_801D4BFC); + func_8012CBCC(a0); + func_8018AC2C(a0, 0x48); + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10); + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF; + + *(u16 *)(a0 + 0x100) -= 1; + if (*(s16 *)(a0 + 0x100) == 0) { + *(s16 *)(a0 + 2) = 6; + *(u16 *)(a0 + 0x100) = 0x2D; + *(s32 *)(a0 + 0x1C) = 0; + *(s16 *)(a0 + 0x104) = 0; + func_8012A828(a0, D_801DC3B8); + + if (*(s32 *)(a0 + 0xCC) != 0) { + func_8012A828(*(s32 *)(a0 + 0xCC), D_801DC4A8); + } + if (*(s32 *)(a0 + 0xD0) != 0) { + func_8012A828(*(s32 *)(a0 + 0xD0), D_801DC598); + } + } +} + INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_80186F00", func_8018D5D4); diff --git a/src/ov_SC06_032/ov_SC06_032_jr_80182890.c b/src/ov_SC06_032/ov_SC06_032_jr_80182890.c index 25cb45ee74..3f8fa9ae8e 100644 --- a/src/ov_SC06_032/ov_SC06_032_jr_80182890.c +++ b/src/ov_SC06_032/ov_SC06_032_jr_80182890.c @@ -6129,7 +6129,43 @@ void func_8018ABE8(s32 arg0) { INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_8018AE6C); -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_8018AE8C); + +extern void func_8012B1B4(void*, void*); +extern void func_8012CBCC(s32 a0); +extern int func_801885E4(int param_1, short param_2); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8012A828(s32 a0, void *a1); + +void func_8018AE8C(s32 a0) { + extern u8 D_801C2CEC[]; + extern u8 D_801CA4A8[]; + extern u8 D_801CA598[]; + extern u8 D_801CA688[]; + s32 pad[4]; + + ((void (*)(s32, s32))func_8012B1B4)(a0, (s32)D_801C2CEC); + func_8012CBCC(a0); + func_801885E4(a0, 0x48); + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10); + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF; + + *(u16 *)(a0 + 0x100) -= 1; + if (*(s16 *)(a0 + 0x100) == 0) { + *(s16 *)(a0 + 2) = 6; + *(u16 *)(a0 + 0x100) = 0x2D; + *(s32 *)(a0 + 0x1C) = 0; + *(s16 *)(a0 + 0x104) = 0; + func_8012A828(a0, D_801CA4A8); + + if (*(s32 *)(a0 + 0xCC) != 0) { + func_8012A828(*(s32 *)(a0 + 0xCC), D_801CA598); + } + if (*(s32 *)(a0 + 0xD0) != 0) { + func_8012A828(*(s32 *)(a0 + 0xD0), D_801CA688); + } + } +} + INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_8018AF8C); diff --git a/src/ov_SC06_033/ov_SC06_033_jr_8017C24C.c b/src/ov_SC06_033/ov_SC06_033_jr_8017C24C.c index 86921803d4..0408fe809c 100644 --- a/src/ov_SC06_033/ov_SC06_033_jr_8017C24C.c +++ b/src/ov_SC06_033/ov_SC06_033_jr_8017C24C.c @@ -5576,7 +5576,43 @@ void func_80181930(s32 arg0) { INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_80181BB4); -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_80181BD4); + +extern void func_8012B1B4(void*, void*); +extern void func_8012CBCC(s32 a0); +extern int func_8017F32C(int param_1, short param_2); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8012A828(s32 a0, void *a1); + +void func_80181BD4(s32 a0) { + extern u8 D_801A7CF4[]; + extern u8 D_801AF4B0[]; + extern u8 D_801AF5A0[]; + extern u8 D_801AF690[]; + s32 pad[4]; + + ((void (*)(s32, s32))func_8012B1B4)(a0, (s32)D_801A7CF4); + func_8012CBCC(a0); + func_8017F32C(a0, 0x48); + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10); + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF; + + *(u16 *)(a0 + 0x100) -= 1; + if (*(s16 *)(a0 + 0x100) == 0) { + *(s16 *)(a0 + 2) = 6; + *(u16 *)(a0 + 0x100) = 0x2D; + *(s32 *)(a0 + 0x1C) = 0; + *(s16 *)(a0 + 0x104) = 0; + func_8012A828(a0, D_801AF4B0); + + if (*(s32 *)(a0 + 0xCC) != 0) { + func_8012A828(*(s32 *)(a0 + 0xCC), D_801AF5A0); + } + if (*(s32 *)(a0 + 0xD0) != 0) { + func_8012A828(*(s32 *)(a0 + 0xD0), D_801AF690); + } + } +} + INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_80181CD4);