diff --git a/src/ov_SC03_089/ov_SC03_089_jr_80185E50.c b/src/ov_SC03_089/ov_SC03_089_jr_80185E50.c index 34411e4de..e6953c740 100644 --- a/src/ov_SC03_089/ov_SC03_089_jr_80185E50.c +++ b/src/ov_SC03_089/ov_SC03_089_jr_80185E50.c @@ -4754,7 +4754,50 @@ INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_80185E50", func_801885A INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_80185E50", func_80188664); -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_80185E50", func_801886B4); + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80029124(s32, s32); +extern void func_80188428(void *a0); +extern void func_801884B8(void *a0); +extern s32 func_801885A4(void *a0, s32 a1); + +void func_801886B4(void *a0) +{ + s32 s1; + s16 flags; + s16 v0; + + flags = *(s16 *)((s32)a0 + 0x70); + s1 = *(s32 *)((s32)a0 + 0x20); + + if ((flags & 0x8000) != 0) { + return; + } + + if ((flags & 0x2000) != 0) { + if ((flags & 0x1000) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x70) = flags & 0xDFFF; + func_8002D4C8(0x701, 0); + } + + v0 = *(s16 *)(s1 + 0x18); + if (v0 < 0x800) { + *(s16 *)(s1 + 0x18) = v0 + 0x40; + *(u16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0x1A) + 0x40; + } else if ((*(u16 *)((s32)a0 + 0x70) & 1) == 0) { + if (func_801885A4(a0, 0x30) != 0) { + func_80188428(a0); + func_80029124(0xAE, 0); + func_80029124(0xAF, 0); + func_80029124(0xB0, 0); + } + } + + func_801884B8(a0); +} + INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_80185E50", func_8018879C); diff --git a/src/ov_SC03_090/ov_SC03_090_jr_80188274.c b/src/ov_SC03_090/ov_SC03_090_jr_80188274.c index 1f045b8aa..f542e323c 100644 --- a/src/ov_SC03_090/ov_SC03_090_jr_80188274.c +++ b/src/ov_SC03_090/ov_SC03_090_jr_80188274.c @@ -4783,7 +4783,50 @@ INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80188274", func_8018A9C INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80188274", func_8018AA88); -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80188274", func_8018AAD8); + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80029124(s32, s32); +extern void func_8018A84C(void *a0); +extern void func_8018A8DC(void *a0); +extern s32 func_8018A9C8(void *a0, s32 a1); + +void func_8018AAD8(void *a0) +{ + s32 s1; + s16 flags; + s16 v0; + + flags = *(s16 *)((s32)a0 + 0x70); + s1 = *(s32 *)((s32)a0 + 0x20); + + if ((flags & 0x8000) != 0) { + return; + } + + if ((flags & 0x2000) != 0) { + if ((flags & 0x1000) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x70) = flags & 0xDFFF; + func_8002D4C8(0x701, 0); + } + + v0 = *(s16 *)(s1 + 0x18); + if (v0 < 0x800) { + *(s16 *)(s1 + 0x18) = v0 + 0x40; + *(u16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0x1A) + 0x40; + } else if ((*(u16 *)((s32)a0 + 0x70) & 1) == 0) { + if (func_8018A9C8(a0, 0x30) != 0) { + func_8018A84C(a0); + func_80029124(0xAE, 0); + func_80029124(0xAF, 0); + func_80029124(0xB0, 0); + } + } + + func_8018A8DC(a0); +} + INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80188274", func_8018ABC0); diff --git a/src/ov_SC03_091/ov_SC03_091_jr_8018911C.c b/src/ov_SC03_091/ov_SC03_091_jr_8018911C.c index 8bb39c848..e750d0d23 100644 --- a/src/ov_SC03_091/ov_SC03_091_jr_8018911C.c +++ b/src/ov_SC03_091/ov_SC03_091_jr_8018911C.c @@ -4747,7 +4747,50 @@ INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8018911C", func_8018B87 INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8018911C", func_8018B930); -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8018911C", func_8018B980); + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80029124(s32, s32); +extern void func_8018B6F4(void *a0); +extern void func_8018B784(void *a0); +extern s32 func_8018B870(void *a0, s32 a1); + +void func_8018B980(void *a0) +{ + s32 s1; + s16 flags; + s16 v0; + + flags = *(s16 *)((s32)a0 + 0x70); + s1 = *(s32 *)((s32)a0 + 0x20); + + if ((flags & 0x8000) != 0) { + return; + } + + if ((flags & 0x2000) != 0) { + if ((flags & 0x1000) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x70) = flags & 0xDFFF; + func_8002D4C8(0x701, 0); + } + + v0 = *(s16 *)(s1 + 0x18); + if (v0 < 0x800) { + *(s16 *)(s1 + 0x18) = v0 + 0x40; + *(u16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0x1A) + 0x40; + } else if ((*(u16 *)((s32)a0 + 0x70) & 1) == 0) { + if (func_8018B870(a0, 0x30) != 0) { + func_8018B6F4(a0); + func_80029124(0xAE, 0); + func_80029124(0xAF, 0); + func_80029124(0xB0, 0); + } + } + + func_8018B784(a0); +} + INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8018911C", func_8018BA68); diff --git a/src/ov_SC03_092/ov_SC03_092_jr_80181694.c b/src/ov_SC03_092/ov_SC03_092_jr_80181694.c index 18452bb01..7fcd7eca7 100644 --- a/src/ov_SC03_092/ov_SC03_092_jr_80181694.c +++ b/src/ov_SC03_092/ov_SC03_092_jr_80181694.c @@ -4552,7 +4552,50 @@ INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_80181694", func_8018412 INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_80181694", func_801841EC); -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_80181694", func_8018423C); + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80029124(s32, s32); +extern void func_80183FB0(void *a0); +extern void func_80184040(void *a0); +extern s32 func_8018412C(void *a0, s32 a1); + +void func_8018423C(void *a0) +{ + s32 s1; + s16 flags; + s16 v0; + + flags = *(s16 *)((s32)a0 + 0x70); + s1 = *(s32 *)((s32)a0 + 0x20); + + if ((flags & 0x8000) != 0) { + return; + } + + if ((flags & 0x2000) != 0) { + if ((flags & 0x1000) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x70) = flags & 0xDFFF; + func_8002D4C8(0x701, 0); + } + + v0 = *(s16 *)(s1 + 0x18); + if (v0 < 0x800) { + *(s16 *)(s1 + 0x18) = v0 + 0x40; + *(u16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0x1A) + 0x40; + } else if ((*(u16 *)((s32)a0 + 0x70) & 1) == 0) { + if (func_8018412C(a0, 0x30) != 0) { + func_80183FB0(a0); + func_80029124(0xAE, 0); + func_80029124(0xAF, 0); + func_80029124(0xB0, 0); + } + } + + func_80184040(a0); +} + INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_80181694", func_80184324); diff --git a/src/ov_SC03_097/ov_SC03_097_jr_8017D898.c b/src/ov_SC03_097/ov_SC03_097_jr_8017D898.c index 103a669ae..fa45b61b3 100644 --- a/src/ov_SC03_097/ov_SC03_097_jr_8017D898.c +++ b/src/ov_SC03_097/ov_SC03_097_jr_8017D898.c @@ -3998,7 +3998,50 @@ INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017D898", func_80180D5 INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017D898", func_80180E14); -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017D898", func_80180E64); + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80029124(s32, s32); +extern void func_80180BD8(void *a0); +extern void func_80180C68(void *a0); +extern s32 func_80180D54(void *a0, s32 a1); + +void func_80180E64(void *a0) +{ + s32 s1; + s16 flags; + s16 v0; + + flags = *(s16 *)((s32)a0 + 0x70); + s1 = *(s32 *)((s32)a0 + 0x20); + + if ((flags & 0x8000) != 0) { + return; + } + + if ((flags & 0x2000) != 0) { + if ((flags & 0x1000) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x70) = flags & 0xDFFF; + func_8002D4C8(0x701, 0); + } + + v0 = *(s16 *)(s1 + 0x18); + if (v0 < 0x800) { + *(s16 *)(s1 + 0x18) = v0 + 0x40; + *(u16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0x1A) + 0x40; + } else if ((*(u16 *)((s32)a0 + 0x70) & 1) == 0) { + if (func_80180D54(a0, 0x30) != 0) { + func_80180BD8(a0); + func_80029124(0xAE, 0); + func_80029124(0xAF, 0); + func_80029124(0xB0, 0); + } + } + + func_80180C68(a0); +} + INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017D898", func_80180F4C); diff --git a/src/ov_SC03_101/ov_SC03_101_jr_8017CA80.c b/src/ov_SC03_101/ov_SC03_101_jr_8017CA80.c index b24ce4947..6402dc515 100644 --- a/src/ov_SC03_101/ov_SC03_101_jr_8017CA80.c +++ b/src/ov_SC03_101/ov_SC03_101_jr_8017CA80.c @@ -4819,7 +4819,50 @@ INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017CA80", func_801812B INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017CA80", func_80181374); -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017CA80", func_801813C4); + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80029124(s32, s32); +extern void func_80181138(void *a0); +extern void func_801811C8(void *a0); +extern s32 func_801812B4(void *a0, s32 a1); + +void func_801813C4(void *a0) +{ + s32 s1; + s16 flags; + s16 v0; + + flags = *(s16 *)((s32)a0 + 0x70); + s1 = *(s32 *)((s32)a0 + 0x20); + + if ((flags & 0x8000) != 0) { + return; + } + + if ((flags & 0x2000) != 0) { + if ((flags & 0x1000) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x70) = flags & 0xDFFF; + func_8002D4C8(0x701, 0); + } + + v0 = *(s16 *)(s1 + 0x18); + if (v0 < 0x800) { + *(s16 *)(s1 + 0x18) = v0 + 0x40; + *(u16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0x1A) + 0x40; + } else if ((*(u16 *)((s32)a0 + 0x70) & 1) == 0) { + if (func_801812B4(a0, 0x30) != 0) { + func_80181138(a0); + func_80029124(0xAE, 0); + func_80029124(0xAF, 0); + func_80029124(0xB0, 0); + } + } + + func_801811C8(a0); +} + INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8017CA80", func_801814AC); diff --git a/src/ov_SC03_104/ov_SC03_104_jr_80182038.c b/src/ov_SC03_104/ov_SC03_104_jr_80182038.c index ea8c4ebb6..e15121ccb 100644 --- a/src/ov_SC03_104/ov_SC03_104_jr_80182038.c +++ b/src/ov_SC03_104/ov_SC03_104_jr_80182038.c @@ -3564,7 +3564,50 @@ INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_80182038", func_801846F INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_80182038", func_801847B0); -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_80182038", func_80184800); + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80029124(s32, s32); +extern void func_80184574(void *a0); +extern void func_80184604(void *a0); +extern s32 func_801846F0(void *a0, s32 a1); + +void func_80184800(void *a0) +{ + s32 s1; + s16 flags; + s16 v0; + + flags = *(s16 *)((s32)a0 + 0x70); + s1 = *(s32 *)((s32)a0 + 0x20); + + if ((flags & 0x8000) != 0) { + return; + } + + if ((flags & 0x2000) != 0) { + if ((flags & 0x1000) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x70) = flags & 0xDFFF; + func_8002D4C8(0x701, 0); + } + + v0 = *(s16 *)(s1 + 0x18); + if (v0 < 0x800) { + *(s16 *)(s1 + 0x18) = v0 + 0x40; + *(u16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0x1A) + 0x40; + } else if ((*(u16 *)((s32)a0 + 0x70) & 1) == 0) { + if (func_801846F0(a0, 0x30) != 0) { + func_80184574(a0); + func_80029124(0xAE, 0); + func_80029124(0xAF, 0); + func_80029124(0xB0, 0); + } + } + + func_80184604(a0); +} + INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_80182038", func_801848E8);