From 3591ac6566476f0f9f654fb37ef7eaced202648d Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 26 Aug 2026 19:42:23 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20free=20A-prop=20sibling=20lane?= =?UTF-8?q?=20(maintenance=20pass)=20=E2=80=94=20zero=20model=20tokens?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ov_SC01_005/ov_SC01_005_jr_8017ED5C.c | 9 +- src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.c | 9 +- src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c | 16 ++- src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c | 33 +++++- src/ov_SC03_002/ov_SC03_002_jr_8017D604.c | 22 +++- src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c | 19 +++- src/ov_SC03_015/ov_SC03_015_jr_80185B44.c | 118 +++++++++++++++++++++- src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c | 19 +++- src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c | 49 ++++++++- src/ov_SC03_089/ov_SC03_089_jr_8017CA80.c | 9 +- src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c | 49 ++++++++- src/ov_SC04_011/ov_SC04_011_jr_8017D494.c | 16 ++- src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c | 26 ++++- src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c | 58 ++++++++++- src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c | 19 +++- src/ov_SC04_019/ov_SC04_019_jr_80181804.c | 19 +++- src/ov_SC04_019/ov_SC04_019_jr_80183E6C.c | 37 ++++++- src/ov_SC05_017/ov_SC05_017_jr_80182A74.c | 37 ++++++- src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c | 49 ++++++++- src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c | 43 +++++++- src/ov_SC06_022/ov_SC06_022_jr_80182D08.c | 14 ++- 21 files changed, 641 insertions(+), 29 deletions(-) diff --git a/src/ov_SC01_005/ov_SC01_005_jr_8017ED5C.c b/src/ov_SC01_005/ov_SC01_005_jr_8017ED5C.c index 088c77608..812d76c06 100644 --- a/src/ov_SC01_005/ov_SC01_005_jr_8017ED5C.c +++ b/src/ov_SC01_005/ov_SC01_005_jr_8017ED5C.c @@ -3389,7 +3389,14 @@ INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_8018073 INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_8018078C); -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8017ED5C", func_801807D8); +extern s32 *D_80126B78; + +void func_801807D8(arg0) +void *arg0; +{ + *(s16 *)((s32)D_80126B78 + 0x10) = 0; +} + DEFINE_func_801807E8() /* dedup: shared engine-core @0x801807E8 (src/shared) */ diff --git a/src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.c b/src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.c index 5d8c1df84..3876978e1 100644 --- a/src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.c +++ b/src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.c @@ -3369,7 +3369,14 @@ INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_8018073 INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_8018078C); -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_801807D8); +extern s32 *D_80126B78; + +void func_801807D8(arg0) +void *arg0; +{ + *(s16 *)((s32)D_80126B78 + 0x10) = 0; +} + DEFINE_func_801807E8() /* dedup: shared engine-core @0x801807E8 (src/shared) */ diff --git a/src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c b/src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c index 9745dbee4..be46ec38a 100644 --- a/src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c +++ b/src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c @@ -3717,7 +3717,21 @@ void func_8017DA94(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017BEBC", func_8017DB10); +extern s32 func_80146E98(s32 a0); +extern void func_80146C3C(); +extern void func_8017DB58(); +extern void func_8017DCDC(); + +void func_8017DB10(param_1) +s32 param_1; +{ + func_8017DB58(param_1); + func_8017DCDC(param_1); + if (func_80146E98(param_1) != 0) { + ((void (*)(s32))func_80146C3C)(param_1); + } +} + extern s32 D_80188898; extern void func_8017DB80(s32 a0, s32 a1); diff --git a/src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c b/src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c index 5c59e72b4..59a193421 100644 --- a/src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c +++ b/src/ov_SC03_001/ov_SC03_001_jr_8017AE2C.c @@ -8002,7 +8002,38 @@ void func_80182A34(void *arg0) { } -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8017AE2C", func_80182A74); +extern int func_80178970(void); +extern s32 D_80191D74; +extern short D_801CAA80; + extern void func_8012A828(s32, s32); +extern void func_8012E88C(s32); +extern void func_8012E8E0(s32 a0, s32 a1); +extern void func_80178D18(void); +extern void func_80182898(void); +extern void func_80187750(s32); + +void func_80182A74(a0) +void *a0; +{ + extern void func_8012E8E0(s32 a0, s32 a1); + extern void func_8012E88C(s32 a0); + extern void func_8012A828(s32, s32); + extern void func_80187750(s32 a0); + extern void func_80182898(void); + extern s32 D_80191D74; + extern short D_801CAA80; + + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)a0); + *(short *)((char *)a0 + 0x2) = 3; + func_8012E8E0((s32)a0, (s32)&D_80191D74); + func_8012E88C((s32)a0); + ((void (*)(s32 *, s32))func_8012A828)((s32 *)a0, (s32)&D_801CAA80); + func_80187750((s32)a0); + ((void (*)(void))func_80182898)(); + } +} + extern s32 func_80187A64(s32 a0); diff --git a/src/ov_SC03_002/ov_SC03_002_jr_8017D604.c b/src/ov_SC03_002/ov_SC03_002_jr_8017D604.c index 71aa62e9a..82d5606ed 100644 --- a/src/ov_SC03_002/ov_SC03_002_jr_8017D604.c +++ b/src/ov_SC03_002/ov_SC03_002_jr_8017D604.c @@ -5026,7 +5026,27 @@ extern void func_80178CBC(s32 arg0, s32 arg1); } -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8017D604", func_80181938); +extern int func_80178970(void); +extern short D_801AA660; +extern void func_8012A828(s32 a0, s32 a1); +extern void func_80178D18(void); + +void func_80181938(arg0) +void *arg0; +{ + extern int func_80178970(void); + extern void func_80178D18(void); + extern void func_8012A828(s32, s32); + extern short D_801AA660; + + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(short *)((char *)arg0 + 0x2) = 16; + *(short *)((char *)arg0 + 0x34) = 2; + ((void (*)(s32 *, s32))func_8012A828)((s32 *)arg0, (s32)&D_801AA660); + } +} + extern s32 func_80182E88(void); extern s32 func_80183158(s32 arg0, s32 arg1); 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 ef44ca375..92c3b315c 100644 --- a/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c +++ b/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c @@ -3892,7 +3892,24 @@ void func_8017CC44(void *a0) } -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017CCC4); + + +void func_8017CCC4(a0) +s32 *a0; +{ + s32 *ptr = (s32 *)a0[8]; + + if (a0[7] & 1) { + ptr[1] |= 0x80000000; + } else { + ptr[1] &= 0x7FFFFFFF; + } + + *(s16 *)&a0[9] = 3; + + a0[7] += 1; +} + extern void func_8017CE10(void *a0, s32 a1, s32 a2); diff --git a/src/ov_SC03_015/ov_SC03_015_jr_80185B44.c b/src/ov_SC03_015/ov_SC03_015_jr_80185B44.c index f2b49832e..8da7a2ec3 100644 --- a/src/ov_SC03_015/ov_SC03_015_jr_80185B44.c +++ b/src/ov_SC03_015/ov_SC03_015_jr_80185B44.c @@ -3941,7 +3941,52 @@ DEFINE_func_80188670() /* dedup: shared engine-core @0x80188670 (src/shared) */ DEFINE_func_80188828() /* dedup: shared engine-core @0x80188828 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80185B44", func_801889B4); +extern s32 func_80132EF4(s32 a0, s32 a1); + +void func_801889B4(arg0) +s32 arg0; +{ + s32 s0; + for (s0 = 0; s0 < 0x49; s0 += 0x18) { + s32 a1 = func_80132EF4(arg0, 0x22); + if (a1 == 0) + continue; + { + register s32 v0 __asm__("v0"); + register s32 v1 __asm__("v1"); + register s32 a0 __asm__("a0"); + v0 = *(u16 *)(arg0 + 0x84); + a0 = *(u16 *)(a1 + 0xE); + v0 &= 0x4; + v1 = v0 * 2; + __asm__("":"=r"(v1):"0"(v1)); + v1 = v1 + v0; + v1 = s0 + v1; + v1 = v1 - 0x2A; + v0 = *(u16 *)(a1 + 0x6); + a0 -= 0x28; + *(u16 *)(a1 + 0xE) = a0; + v0 -= v1; + *(u16 *)(a1 + 0x6) = v0; + v0 = *(u16 *)(a1 + 0xA); + v1 = v1 << 16; + v0 -= 0x20; + *(u16 *)(a1 + 0xA) = v0; + v0 = v1 >> 16; + if (v0 >= 0) { + v0 = v0 << 7; + } else { + v0 = v0 << 7; + v0 = -v0; + } + v0 += 0x1000; + *(u16 *)(a1 + 0x34) = v0; + *(s32 *)(a1 + 0x14) = 0xFFFE0000; + *(s32 *)(a1 + 0x18) = 0xFFFD0000; + } + } +} + extern void func_8001CA1C(s32 a0, s32 a1); @@ -4278,7 +4323,27 @@ DEFINE_func_801890F8() /* dedup: shared engine-core @0x801890F8 (src/shared) */ DEFINE_func_80189104() /* dedup: shared engine-core @0x80189104 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80185B44", func_80189110); +extern u8 D_801EAC94; +extern u8 D_801EAC95; +extern u8 D_801EAC96; + +void func_80189110(void) +{ + typedef struct { unsigned char b[4]; } __attribute__((packed, aligned(1))) Block4; + + extern u8 D_801EAC94; + extern unsigned char D_801EAC95; + extern unsigned char D_801EAC96; + + unsigned char *p = (unsigned char *)&D_801EAC94; + + if (*p < 0xF8U) { + *p += 4; + D_801EAC95 += 8; + D_801EAC96 += 8; + } +} + extern void func_8002D4C8(s32 arg0, s32 arg1); void func_80189160(void *a0) { @@ -4460,7 +4525,54 @@ void func_80189630(void *param_1) { } -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_80185B44", func_80189680); +extern Block4 D_801E94F4; +extern Block4 D_801EAC98; +extern u8 D_801EAC94; +extern void func_8001CD9C(int, void *); +extern void func_800233CC(void *, unsigned short); + +void func_80189680(a0) +s32 a0; +{ + register u8 *s0 __asm__("$16"); + register s32 *s1 __asm__("$17"); + s32 *v1; + s32 *a0_ptr; + s8 pad[32]; + + s1 = (s32 *)a0; + s0 = (u8 *)&D_801EAC94; + + + func_8001CD9C(s1[8], (s32 *)s0); + + + func_800233CC(s0, 0x80); + + + *(Block4 *)s0 = D_801E94F4; + + + D_801EAC98 = D_801E94F4; + + + v1 = s1[8]; + *(s16 *)((s8 *)v1 + 0x18) = 0x800; + + + v1 = s1[8]; + *(s16 *)((s8 *)v1 + 0x1A) = 0x1000; + + + a0_ptr = s1[8]; + *(s32 *)((s8 *)a0_ptr + 0x4) |= 0x50000000; + + + *(s16 *)((s8 *)s1 + 0x2) = 1; + + (void)pad; +} + extern u8 D_801EAC94; extern u8 D_801EAC95; 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 a95991a51..e38c8e123 100644 --- a/src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c +++ b/src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c @@ -3890,7 +3890,24 @@ void func_8017CC44(void *a0) } -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017CCC4); + + +void func_8017CCC4(a0) +s32 *a0; +{ + s32 *ptr = (s32 *)a0[8]; + + if (a0[7] & 1) { + ptr[1] |= 0x80000000; + } else { + ptr[1] &= 0x7FFFFFFF; + } + + *(s16 *)&a0[9] = 3; + + a0[7] += 1; +} + extern void func_8017CE10(void *a0, s32 a1, s32 a2); diff --git a/src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c b/src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c index c9d68d31d..b8d2cc6d4 100644 --- a/src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c +++ b/src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c @@ -6024,7 +6024,54 @@ void func_80182D54(void *param_1) { } -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017DF84", func_80182DA4); +extern Block4 D_801BFD90; +extern Block4 D_801C1360; +extern u8 D_801C135C; +extern void func_8001CD9C(int, void *); +extern void func_800233CC(void *, unsigned short); + +void func_80182DA4(a0) +s32 a0; +{ + register u8 *s0 __asm__("$16"); + register s32 *s1 __asm__("$17"); + s32 *v1; + s32 *a0_ptr; + s8 pad[32]; + + s1 = (s32 *)a0; + s0 = (u8 *)&D_801C135C; + + + func_8001CD9C(s1[8], (s32 *)s0); + + + func_800233CC(s0, 0x80); + + + *(Block4 *)s0 = D_801BFD90; + + + D_801C1360 = D_801BFD90; + + + v1 = s1[8]; + *(s16 *)((s8 *)v1 + 0x18) = 0x800; + + + v1 = s1[8]; + *(s16 *)((s8 *)v1 + 0x1A) = 0x1000; + + + a0_ptr = s1[8]; + *(s32 *)((s8 *)a0_ptr + 0x4) |= 0x50000000; + + + *(s16 *)((s8 *)s1 + 0x2) = 1; + + (void)pad; +} + extern u8 D_801C135C; extern u8 D_801C135D; diff --git a/src/ov_SC03_089/ov_SC03_089_jr_8017CA80.c b/src/ov_SC03_089/ov_SC03_089_jr_8017CA80.c index 6d087ebfd..1b255c223 100644 --- a/src/ov_SC03_089/ov_SC03_089_jr_8017CA80.c +++ b/src/ov_SC03_089/ov_SC03_089_jr_8017CA80.c @@ -6551,7 +6551,14 @@ extern void func_80016714(void *a0, s32 a1); } -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8017CA80", func_8018517C); +extern s32 D_801A3BA0[]; +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); + +void func_8018517C(void* arg0) +{ + func_8012D5E4(arg0, (s32)D_801A3BA0, (s32)D_801A3BA0 + 8, 0x5); +} + /* func_801851A8 @ ov_SC03_089 (subseg ov_SC03_089_jr_8017CA80) — 173 ins. * diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c b/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c index 5f30c6f6a..93e82766b 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c @@ -4524,7 +4524,54 @@ void func_80182E38(void *param_1) { } -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017FB84", func_80182E88); +extern Block4 D_801D2E50; +extern Block4 D_801D4308; +extern u8 D_801D4304; +extern void func_8001CD9C(int, void *); +extern void func_800233CC(void *, unsigned short); + +void func_80182E88(a0) +s32 a0; +{ + register u8 *s0 __asm__("$16"); + register s32 *s1 __asm__("$17"); + s32 *v1; + s32 *a0_ptr; + s8 pad[32]; + + s1 = (s32 *)a0; + s0 = (u8 *)&D_801D4304; + + + func_8001CD9C(s1[8], (s32 *)s0); + + + func_800233CC(s0, 0x80); + + + *(Block4 *)s0 = D_801D2E50; + + + D_801D4308 = D_801D2E50; + + + v1 = s1[8]; + *(s16 *)((s8 *)v1 + 0x18) = 0x800; + + + v1 = s1[8]; + *(s16 *)((s8 *)v1 + 0x1A) = 0x1000; + + + a0_ptr = s1[8]; + *(s32 *)((s8 *)a0_ptr + 0x4) |= 0x50000000; + + + *(s16 *)((s8 *)s1 + 0x2) = 1; + + (void)pad; +} + void func_80182F44(void) { extern u8 D_801D4304; diff --git a/src/ov_SC04_011/ov_SC04_011_jr_8017D494.c b/src/ov_SC04_011/ov_SC04_011_jr_8017D494.c index 070743dfd..d62348cab 100644 --- a/src/ov_SC04_011/ov_SC04_011_jr_8017D494.c +++ b/src/ov_SC04_011/ov_SC04_011_jr_8017D494.c @@ -3828,7 +3828,21 @@ void func_8017F614(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_8017F690); +extern s32 func_80146E98(s32 a0); +extern void func_80146C3C(); +extern void func_8017F6D8(s32 arg0); +extern void func_8017F85C(s32*); + +void func_8017F690(param_1) +s32 param_1; +{ + func_8017F6D8(param_1); + func_8017F85C(param_1); + if (func_80146E98(param_1) != 0) { + ((void (*)(s32))func_80146C3C)(param_1); + } +} + extern void func_8017F700(s32 arg0, s32 arg1); extern s32 D_80193F64; diff --git a/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c b/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c index c9ce2fe91..811a571f6 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c @@ -6217,7 +6217,31 @@ extern void func_80178CBC(s32 *a0, s32 a1); } -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80180C38); +extern s32 D_80191A04[]; +extern s32 D_801E22B4[]; +extern s32 D_801E2344[]; +extern s32 func_80029504(void); +extern s32 func_80184DD0(s32 a0); + +void func_80180C38(a0) +void *a0; +{ + s32 s1; + s32 v1; + + s1 = func_80184DD0((s32)a0); + v1 = func_80029504(); + if (s1 == 2) { + if (v1 < 0x276) { + *(s32 *)((s32)a0 + 0xE4) = (s32)D_801E2344; + } else { + *(s32 *)((s32)a0 + 0xE4) = (s32)D_801E22B4; + } + } else { + *(s32 *)((s32)a0 + 0xE4) = D_80191A04[s1]; + } +} + extern void func_80172710(void); extern s32 func_801848DC(void); diff --git a/src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c b/src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c index ab707f22b..1636d26f4 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_80183E6C.c @@ -3067,7 +3067,26 @@ void func_80183E6C(void *a0) } -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80183E6C", func_80183FA8); +extern short D_801B99A8; + extern void func_8012A828(s32*, s32); +extern void func_8012E88C(s32); +extern void func_80184C90(s32); + +void func_80183FA8(arg0) +s32 *arg0; +{ + extern void func_8012E88C(s32 a0); + extern void func_8012A828(s32*, s32); + extern void func_80184C90(s32 a0); + extern short D_801B99A8; + + *(s16 *)((s32)arg0 + 2) = 9; + *(s16 *)((s32)arg0 + 0x34) = 0; + func_8012E88C((s32)arg0); + ((void (*)(s32, s32))func_8012A828)((s32)arg0, (s32)&D_801B99A8); + func_80184C90((s32)arg0); +} + extern s32 func_80184FA4(s32 a0); extern s32 func_80185BE0(s32 a0); @@ -3281,9 +3300,42 @@ extern void func_80184CB8(s32*, s32); } -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80183E6C", func_80184504); +extern int func_80178970(void); +extern short D_801B99A8; +extern void func_8012A828(s32*, s32); +extern void func_80178D18(void); + +void func_80184504(arg0) +void *arg0; +{ + + extern short D_801B99A8; + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(short *)((char *)arg0 + 0x2) = 2; + ((void (*)(s32, s32))func_8012A828)((int)arg0, (int)&D_801B99A8); + *(short *)((char *)arg0 + 0x34) = 2; + } +} + + +extern int func_80178970(void); +extern short D_801B99A8; +extern void func_8012A828(s32*, s32); +extern void func_80178D18(void); + +void func_80184560(arg0) +void *arg0; +{ + extern short D_801B99A8; + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(short *)((char *)arg0 + 0x2) = 9; + ((void (*)(s32, s32))func_8012A828)((s32)arg0, (s32)&D_801B99A8); + *(short *)((char *)arg0 + 0x34) = 2; + } +} -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_80183E6C", func_80184560); extern s32 func_801847BC(void *a0, void *a1); extern s32 func_80184BAC(s32 a0, s32 a1); diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c b/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c index 01aa0961c..4055fb5f4 100644 --- a/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c +++ b/src/ov_SC04_019/ov_SC04_019_jr_8017AE2C.c @@ -6539,7 +6539,24 @@ extern void func_80178CBC(s32 arg0, s32 arg1); } -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8017AE2C", func_80181270); +extern int func_80178970(void); +extern s16 D_801E7010; +extern s16 D_801E7012; +extern short D_801B9AA8; +extern void func_8012A828(s32*, s32); +extern void func_80178D18(void); + +void func_80181270(arg0) +void *arg0; +{ + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(u16 *)((char *)arg0 + 0x2) = D_801E7010; + *(u16 *)((char *)arg0 + 0x34) = D_801E7012; + ((void (*)(s32 *, s32))func_8012A828)((s32 *)arg0, (s32)&D_801B9AA8); + } +} + extern void func_80184CB8(s32 *a0, s32 a1); extern short D_80191AB0; diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80181804.c b/src/ov_SC04_019/ov_SC04_019_jr_80181804.c index b8d64b859..c29b448d1 100644 --- a/src/ov_SC04_019/ov_SC04_019_jr_80181804.c +++ b/src/ov_SC04_019/ov_SC04_019_jr_80181804.c @@ -3841,7 +3841,24 @@ extern void func_80178CBC(s32 a0, s32 a1); } -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80181804", func_80182AF8); +extern int func_80178970(void); +extern s16 D_801E7020; +extern s16 D_801E7022; +extern short D_801B9AA8; +extern void func_8012A828(s32*, s32); +extern void func_80178D18(void); + +void func_80182AF8(arg0) +void *arg0; +{ + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(u16 *)((char *)arg0 + 0x2) = D_801E7020; + *(u16 *)((char *)arg0 + 0x34) = D_801E7022; + ((void (*)(s32 *, s32))func_8012A828)((s32 *)arg0, (s32)&D_801B9AA8); + } +} + diff --git a/src/ov_SC04_019/ov_SC04_019_jr_80183E6C.c b/src/ov_SC04_019/ov_SC04_019_jr_80183E6C.c index f8ce59ce1..0a26b052e 100644 --- a/src/ov_SC04_019/ov_SC04_019_jr_80183E6C.c +++ b/src/ov_SC04_019/ov_SC04_019_jr_80183E6C.c @@ -3260,9 +3260,42 @@ extern void func_80184CB8(s32*, s32); } -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80183E6C", func_80184504); +extern int func_80178970(void); +extern short D_801B99A8; +extern void func_8012A828(s32*, s32); +extern void func_80178D18(void); + +void func_80184504(arg0) +void *arg0; +{ + + extern short D_801B99A8; + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(short *)((char *)arg0 + 0x2) = 2; + ((void (*)(s32, s32))func_8012A828)((int)arg0, (int)&D_801B99A8); + *(short *)((char *)arg0 + 0x34) = 2; + } +} + + +extern int func_80178970(void); +extern short D_801B99A8; +extern void func_8012A828(s32*, s32); +extern void func_80178D18(void); + +void func_80184560(arg0) +void *arg0; +{ + extern short D_801B99A8; + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(short *)((char *)arg0 + 0x2) = 9; + ((void (*)(s32, s32))func_8012A828)((s32)arg0, (s32)&D_801B99A8); + *(short *)((char *)arg0 + 0x34) = 2; + } +} -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_80183E6C", func_80184560); extern s32 func_801847BC(void *a0, void *a1); extern s32 func_80184BAC(s32 a0, s32 a1); diff --git a/src/ov_SC05_017/ov_SC05_017_jr_80182A74.c b/src/ov_SC05_017/ov_SC05_017_jr_80182A74.c index 028bd7900..bb530bbba 100644 --- a/src/ov_SC05_017/ov_SC05_017_jr_80182A74.c +++ b/src/ov_SC05_017/ov_SC05_017_jr_80182A74.c @@ -3114,9 +3114,42 @@ extern void func_801849B8(s32*, s32); } -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80182A74", func_80182FA8); +extern int func_80178970(void); +extern short D_801B9964; +extern void func_8012A828(s32, s32); +extern void func_80178D18(void); + +void func_80182FA8(arg0) +void *arg0; +{ + + extern short D_801B9964; + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(short *)((char *)arg0 + 0x2) = 2; + ((void (*)(s32, s32))func_8012A828)((int)arg0, (int)&D_801B9964); + *(short *)((char *)arg0 + 0x34) = 2; + } +} + + +extern int func_80178970(void); +extern short D_801B9964; +extern void func_8012A828(s32, s32); +extern void func_80178D18(void); + +void func_80183004(arg0) +void *arg0; +{ + extern short D_801B9964; + if (func_80178970() != 0) { + ((void (*)(s32))func_80178D18)((s32)arg0); + *(short *)((char *)arg0 + 0x2) = 9; + ((void (*)(s32, s32))func_8012A828)((s32)arg0, (s32)&D_801B9964); + *(short *)((char *)arg0 + 0x34) = 2; + } +} -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80182A74", func_80183004); extern s32 func_801844BC(void *a0, void *a1); extern void func_80183100(); 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 33f09016d..0ead7868e 100644 --- a/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c +++ b/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c @@ -9134,7 +9134,54 @@ void func_80184FD8(void *param_1) { } -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80185028); +extern Block4 D_801AD2DC; +extern Block4 D_801AECC8; +extern u8 D_801AECC4; +extern void func_8001CD9C(int, void *); +extern void func_800233CC(void *, unsigned short); + +void func_80185028(a0) +s32 a0; +{ + register u8 *s0 __asm__("$16"); + register s32 *s1 __asm__("$17"); + s32 *v1; + s32 *a0_ptr; + s8 pad[32]; + + s1 = (s32 *)a0; + s0 = (u8 *)&D_801AECC4; + + + func_8001CD9C(s1[8], (s32 *)s0); + + + func_800233CC(s0, 0x80); + + + *(Block4 *)s0 = D_801AD2DC; + + + D_801AECC8 = D_801AD2DC; + + + v1 = s1[8]; + *(s16 *)((s8 *)v1 + 0x18) = 0x800; + + + v1 = s1[8]; + *(s16 *)((s8 *)v1 + 0x1A) = 0x1000; + + + a0_ptr = s1[8]; + *(s32 *)((s8 *)a0_ptr + 0x4) |= 0x50000000; + + + *(s16 *)((s8 *)s1 + 0x2) = 1; + + (void)pad; +} + extern u8 D_801AECC4; extern u8 D_801AECC5; diff --git a/src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c b/src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c index cf574eea5..70280ebe8 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c @@ -3182,7 +3182,44 @@ void func_80181418(s32 arg0) { } -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80180CD0", func_80181468); +extern s32 func_80132EF4(s32 a0, s32 a1); + +s32 func_80181468(a0, a1) +s32 a0; +s32 a1; +{ + extern s32 func_80132EF4(s32 a0, s32 a1); + extern s32 rand(void); + s32 s0; + s32 rr; + register s32 x1 __asm__("$3"); + register s32 x2 __asm__("$4"); + + if (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x18) >= 0x800) { + if (*(s16 *)(a0 + 0xE4) == 0) { + *(s16 *)(a0 + 0xE4) = *(u16 *)(a0 + 0xE6); + s0 = func_80132EF4(a0, 0x22); + if (s0 != 0) { + rr = rand(); + x1 = *(u16 *)(s0 + 0x6); + x1 = x1 - 0x10; + *(u16 *)(s0 + 0x6) = x1 + (rr & 0x1F); + rr = rand(); + *(s32 *)(s0 + 0x14) = -0x40000; + x2 = *(u16 *)(s0 + 0xE); + x2 = x2 - 0x10; + *(u16 *)(s0 + 0xE) = x2 + (rr & 0x1F); + *(s16 *)(s0 + 0x34) = a1; + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) = 0xC010; + *(u32 *)(*(s32 *)(s0 + 0x20) + 0x4) |= 0x40000000; + } + return 1; + } + *(s16 *)(a0 + 0xE4) = *(s16 *)(a0 + 0xE4) - 1; + } + return 0; +} + extern u16 D_80126B66; extern void func_8017FA1C(int); @@ -3287,7 +3324,7 @@ void func_801818E4(s32 param_1) { extern void func_8012AD80(s32 a0); -extern void func_80181468(); +extern s32 func_80181468(); extern s32 rand(void); extern void func_80181394(void *a0); @@ -3321,7 +3358,7 @@ void func_8018199C(s32 arg0) { extern s32 rand(void); -extern void func_80181468(); +extern s32 func_80181468(); void func_80181A4C(s32 arg0) { diff --git a/src/ov_SC06_022/ov_SC06_022_jr_80182D08.c b/src/ov_SC06_022/ov_SC06_022_jr_80182D08.c index 8ca5a78a8..10224fadd 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_80182D08.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_80182D08.c @@ -3324,7 +3324,19 @@ void func_80183860(s32 param_1) } -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80182D08", func_801839D8); +extern u8 D_801D4640[]; +extern void func_8012A828(s32 a0, void *a1); + +void func_801839D8(p) +s32 p; +{ + *(u16 *)(p + 2) = 0x20; + func_8012A828(p, D_801D4640); + *(s32 *)(p + 0x1C) = 0; + *(s32 *)(p + 0xE4) = 0; + *(s32 *)(p + 0x48) = 0x4650; +} +