diff --git a/src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c b/src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c index e1c72190bb..3036018e0f 100644 --- a/src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c +++ b/src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c @@ -5296,7 +5296,24 @@ INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F79 INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F850); -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8017F8AC); +extern s32 D_801BE580; +extern s32 func_8012BEE8(s32 a0); +extern s32 func_80180064(s32 a0, s32 a1); +extern u8 D_800D3918[]; +extern void func_8012A828(s32 a0, void *a1); + +void func_8017F8AC(s32 a0) { + if (*(s16 *)(a0 + 0xAA) <= 0) { + *(u16 *)(a0 + 2) = 2; + } else { + if (func_8012BEE8(a0) != 0) { + func_8012A828(a0, (void *)&D_801BE580); + *(s32 *)(a0 + 0x1C) = 0x1A; + } + func_80180064(a0, (s32)D_800D3918); + } +} + void func_8017F920(s32 param_1) { s32 p; 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 64e04aedcc..ae9ceaa5e2 100644 --- a/src/ov_SC06_033/ov_SC06_033_jr_8017C24C.c +++ b/src/ov_SC06_033/ov_SC06_033_jr_8017C24C.c @@ -3495,7 +3495,30 @@ void func_8017DC10(void *a0) { INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_8017DC18); -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_8017DC30); +extern s16 D_80126CAC; +extern s16 D_80126CB0; + +int func_8017DC30(short *a0) { + int data[3]; + data[0] = D_80126CAC - a0[0]; + data[1] = 0; + data[2] = D_80126CB0 - a0[2]; + __asm__ __volatile__( + "lwc2 $9, 0($sp)\n" + "lwc2 $10, 4($sp)\n" + "lwc2 $11, 8($sp)\n" + "nop\n" + "nop\n" + "sqr 0\n" + : : : "$9", "$10", "$11", "memory"); + __asm__ __volatile__( + "swc2 $25, 0($sp)\n" + "swc2 $26, 4($sp)\n" + "swc2 $27, 8($sp)\n" + : : : "memory"); + return (data[0] + data[1] + data[2]) - 0x90001U < 0x18FFF; +} + INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_8017DCC4);