diff --git a/src/ov_SC02_035/ov_SC02_035_jr_8017BEBC.c b/src/ov_SC02_035/ov_SC02_035_jr_8017BEBC.c index 5ad0571c5..13e6065bb 100644 --- a/src/ov_SC02_035/ov_SC02_035_jr_8017BEBC.c +++ b/src/ov_SC02_035/ov_SC02_035_jr_8017BEBC.c @@ -629,7 +629,6 @@ extern s32 func_8014F4C0(); extern s32 func_8014F468(void); extern int func_8014F74C(); extern int func_8014F6F4(void); -extern u8 D_800D3918[]; extern u8 D_801152A8[]; extern s32 D_801152BC; extern int func_8014F74C(s32 arg0); @@ -5148,7 +5147,53 @@ INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8017BEBC", func_8018063 INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8017BEBC", func_8018071C); -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8017BEBC", func_80180770); + +extern s32 func_80180B38(s32 a0, s32 a1); +extern void func_801292C8(u8 *a0); +extern void func_80180C10(s32 a0); +extern s32 func_801809E4(s32 a0, s32 a1, s32 a2); +extern s32 func_800132BC(s32 a0, s32 a1); + +void func_80180770(s32 a0) { + + extern u8 D_800D3918[]; + s32 partner; + s32 ret; + + if (func_80180B38(a0, -0x18000) == 0) { + func_801292C8((u8 *)a0); + } else { + partner = *(s32 *)(a0 + 0x2C); + *(s32 *)(a0 + 0x14) = 0x18000; + + if (*(s32 *)(a0 + 0x1C) >= 0x150) { + *(s32 *)(partner + 0x30) -= 1; + func_801292C8((u8 *)a0); + } else { + SV3_8012CC88 sp10; + SV3_8012CC88 sp18; + s32 pad[4]; + + func_80180C10(a0); + func_801809E4(a0, (s32)D_800D3918, 0); + + sp10.vx = *(u16 *)(a0 + 0x6); + sp10.vy = 0; + sp10.vz = *(u16 *)(a0 + 0xE); + sp18.vx = *(u16 *)(partner + 0x6); + sp18.vy = 0; + sp18.vz = *(u16 *)(partner + 0xE); + + ret = func_800132BC((s32)&sp10, (s32)&sp18); + if (ret < 0x41) { + *(s32 *)(partner + 0x30) -= 1; + *(s16 *)(a0 + 0x2) = 5; + } + *(s32 *)(a0 + 0x1C) += 1; + } + } +} + extern void func_801292C8(u8 *a0); void func_8018087C(s32 *a0) { diff --git a/src/ov_SC03_090/ov_SC03_090_jr_8017CA80.c b/src/ov_SC03_090/ov_SC03_090_jr_8017CA80.c index ed1e48633..c4dd98e5a 100644 --- a/src/ov_SC03_090/ov_SC03_090_jr_8017CA80.c +++ b/src/ov_SC03_090/ov_SC03_090_jr_8017CA80.c @@ -628,7 +628,6 @@ extern s32 func_8014F4C0(); extern s32 func_8014F468(void); extern int func_8014F74C(); extern int func_8014F6F4(void); -extern u8 D_800D3918[]; extern u8 D_801152A8[]; extern s32 D_801152BC; extern int func_8014F74C(s32 arg0); @@ -6873,7 +6872,53 @@ INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017CA80", func_80186D4 INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017CA80", func_80186E24); -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8017CA80", func_80186E78); + +extern s32 func_80187240(s32 a0, s32 a1); +extern void func_801292C8(u8 *a0); +extern void func_80187318(s32 a0); +extern s32 func_801870EC(s32 a0, s32 a1, s32 a2); +extern s32 func_800132BC(s32 a0, s32 a1); + +void func_80186E78(s32 a0) { + + extern u8 D_800D3918[]; + s32 partner; + s32 ret; + + if (func_80187240(a0, -0x18000) == 0) { + func_801292C8((u8 *)a0); + } else { + partner = *(s32 *)(a0 + 0x2C); + *(s32 *)(a0 + 0x14) = 0x18000; + + if (*(s32 *)(a0 + 0x1C) >= 0x150) { + *(s32 *)(partner + 0x30) -= 1; + func_801292C8((u8 *)a0); + } else { + SV3_8012CC88 sp10; + SV3_8012CC88 sp18; + s32 pad[4]; + + func_80187318(a0); + func_801870EC(a0, (s32)D_800D3918, 0); + + sp10.vx = *(u16 *)(a0 + 0x6); + sp10.vy = 0; + sp10.vz = *(u16 *)(a0 + 0xE); + sp18.vx = *(u16 *)(partner + 0x6); + sp18.vy = 0; + sp18.vz = *(u16 *)(partner + 0xE); + + ret = func_800132BC((s32)&sp10, (s32)&sp18); + if (ret < 0x41) { + *(s32 *)(partner + 0x30) -= 1; + *(s16 *)(a0 + 0x2) = 5; + } + *(s32 *)(a0 + 0x1C) += 1; + } + } +} + extern void func_801292C8(u8 *a0); s32 func_80186F84(s32 arg0) { diff --git a/src/ov_SC03_091/ov_SC03_091_jr_8018326C.c b/src/ov_SC03_091/ov_SC03_091_jr_8018326C.c index bca50c97b..c2066ef17 100644 --- a/src/ov_SC03_091/ov_SC03_091_jr_8018326C.c +++ b/src/ov_SC03_091/ov_SC03_091_jr_8018326C.c @@ -622,7 +622,6 @@ extern s32 func_8014F4C0(); extern s32 func_8014F468(void); extern int func_8014F74C(); extern int func_8014F6F4(void); -extern u8 D_800D3918[]; extern u8 D_801152A8[]; extern s32 D_801152BC; extern int func_8014F74C(s32 arg0); @@ -4957,7 +4956,53 @@ INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8018326C", func_80187BE INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8018326C", func_80187CCC); -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8018326C", func_80187D20); + +extern s32 func_801880E8(s32 a0, s32 a1); +extern void func_801292C8(u8 *a0); +extern void func_801881C0(s32 a0); +extern s32 func_80187F94(s32 a0, s32 a1, s32 a2); +extern s32 func_800132BC(s32 a0, s32 a1); + +void func_80187D20(s32 a0) { + + extern u8 D_800D3918[]; + s32 partner; + s32 ret; + + if (func_801880E8(a0, -0x18000) == 0) { + func_801292C8((u8 *)a0); + } else { + partner = *(s32 *)(a0 + 0x2C); + *(s32 *)(a0 + 0x14) = 0x18000; + + if (*(s32 *)(a0 + 0x1C) >= 0x150) { + *(s32 *)(partner + 0x30) -= 1; + func_801292C8((u8 *)a0); + } else { + SV3_8012CC88 sp10; + SV3_8012CC88 sp18; + s32 pad[4]; + + func_801881C0(a0); + func_80187F94(a0, (s32)D_800D3918, 0); + + sp10.vx = *(u16 *)(a0 + 0x6); + sp10.vy = 0; + sp10.vz = *(u16 *)(a0 + 0xE); + sp18.vx = *(u16 *)(partner + 0x6); + sp18.vy = 0; + sp18.vz = *(u16 *)(partner + 0xE); + + ret = func_800132BC((s32)&sp10, (s32)&sp18); + if (ret < 0x41) { + *(s32 *)(partner + 0x30) -= 1; + *(s16 *)(a0 + 0x2) = 5; + } + *(s32 *)(a0 + 0x1C) += 1; + } + } +} + extern void func_801292C8(u8 *a0); s32 func_80187E2C(s32 arg0) { diff --git a/src/ov_SC03_094/ov_SC03_094_jr_8017BEBC.c b/src/ov_SC03_094/ov_SC03_094_jr_8017BEBC.c index 6247430d3..38cba660c 100644 --- a/src/ov_SC03_094/ov_SC03_094_jr_8017BEBC.c +++ b/src/ov_SC03_094/ov_SC03_094_jr_8017BEBC.c @@ -627,7 +627,6 @@ extern s32 func_8014F4C0(); extern s32 func_8014F468(void); extern int func_8014F74C(); extern int func_8014F6F4(void); -extern u8 D_800D3918[]; extern u8 D_801152A8[]; extern s32 D_801152BC; extern int func_8014F74C(s32 arg0); @@ -5302,7 +5301,53 @@ INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017BEBC", func_801819C INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017BEBC", func_80181AA4); -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8017BEBC", func_80181AF8); + +extern s32 func_80181EC0(s32 a0, s32 a1); +extern void func_801292C8(u8 *a0); +extern void func_80181F98(s32 a0); +extern s32 func_80181D6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800132BC(s32 a0, s32 a1); + +void func_80181AF8(s32 a0) { + + extern u8 D_800D3918[]; + s32 partner; + s32 ret; + + if (func_80181EC0(a0, -0x18000) == 0) { + func_801292C8((u8 *)a0); + } else { + partner = *(s32 *)(a0 + 0x2C); + *(s32 *)(a0 + 0x14) = 0x18000; + + if (*(s32 *)(a0 + 0x1C) >= 0x150) { + *(s32 *)(partner + 0x30) -= 1; + func_801292C8((u8 *)a0); + } else { + SV3_8012CC88 sp10; + SV3_8012CC88 sp18; + s32 pad[4]; + + func_80181F98(a0); + func_80181D6C(a0, (s32)D_800D3918, 0); + + sp10.vx = *(u16 *)(a0 + 0x6); + sp10.vy = 0; + sp10.vz = *(u16 *)(a0 + 0xE); + sp18.vx = *(u16 *)(partner + 0x6); + sp18.vy = 0; + sp18.vz = *(u16 *)(partner + 0xE); + + ret = func_800132BC((s32)&sp10, (s32)&sp18); + if (ret < 0x41) { + *(s32 *)(partner + 0x30) -= 1; + *(s16 *)(a0 + 0x2) = 5; + } + *(s32 *)(a0 + 0x1C) += 1; + } + } +} + extern void func_801292C8(u8 *a0); diff --git a/src/ov_SC03_098/ov_SC03_098_jr_8017D898.c b/src/ov_SC03_098/ov_SC03_098_jr_8017D898.c index fcb0a5f76..a36774328 100644 --- a/src/ov_SC03_098/ov_SC03_098_jr_8017D898.c +++ b/src/ov_SC03_098/ov_SC03_098_jr_8017D898.c @@ -628,7 +628,6 @@ extern s32 func_8014F4C0(); extern s32 func_8014F468(void); extern int func_8014F74C(); extern int func_8014F6F4(void); -extern u8 D_800D3918[]; extern u8 D_801152A8[]; extern s32 D_801152BC; extern int func_8014F74C(s32 arg0); @@ -5237,7 +5236,53 @@ INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017D898", func_801821C INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017D898", func_801822AC); -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8017D898", func_80182300); + +extern s32 func_801826C8(s32 a0, s32 a1); +extern void func_801292C8(u8 *a0); +extern void func_801827A0(s32 a0); +extern s32 func_80182574(s32 a0, s32 a1, s32 a2); +extern s32 func_800132BC(s32 a0, s32 a1); + +void func_80182300(s32 a0) { + + extern u8 D_800D3918[]; + s32 partner; + s32 ret; + + if (func_801826C8(a0, -0x18000) == 0) { + func_801292C8((u8 *)a0); + } else { + partner = *(s32 *)(a0 + 0x2C); + *(s32 *)(a0 + 0x14) = 0x18000; + + if (*(s32 *)(a0 + 0x1C) >= 0x150) { + *(s32 *)(partner + 0x30) -= 1; + func_801292C8((u8 *)a0); + } else { + SV3_8012CC88 sp10; + SV3_8012CC88 sp18; + s32 pad[4]; + + func_801827A0(a0); + func_80182574(a0, (s32)D_800D3918, 0); + + sp10.vx = *(u16 *)(a0 + 0x6); + sp10.vy = 0; + sp10.vz = *(u16 *)(a0 + 0xE); + sp18.vx = *(u16 *)(partner + 0x6); + sp18.vy = 0; + sp18.vz = *(u16 *)(partner + 0xE); + + ret = func_800132BC((s32)&sp10, (s32)&sp18); + if (ret < 0x41) { + *(s32 *)(partner + 0x30) -= 1; + *(s16 *)(a0 + 0x2) = 5; + } + *(s32 *)(a0 + 0x1C) += 1; + } + } +} + extern void func_801292C8(u8 *a0);