diff --git a/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c b/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c index ea9904df7..2353aeb4f 100644 --- a/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c +++ b/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c @@ -5553,7 +5553,47 @@ INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F0E INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F160); -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8017F1AC); + +extern void func_8017F2AC(void *a0, s32 a1, s32 a2); +extern void func_80147324(s32 a0); +extern void func_80146C3C(void); + +void func_8017F1AC(void *a0) { + + extern u16 D_80194C1C[][2]; + s32 *s2; + s16 v0; + + s2 = *(s32 **)((s32)a0 + 0x20); + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + s2[1] |= 0x80000000; + } else { + s2[1] &= 0x7FFFFFFF; + } + + v0 = (*(u16 *)((s32)s2 + 0x12) + 0x80) & 0xFFF; + *(u16 *)((s32)s2 + 0x12) = v0; + + if (v0 == 0 || v0 == 0x800) { + if (*(s16 *)((s32)a0 + 0x24) != 0) { + *(s16 *)((s32)a0 + 0x24) = *(s16 *)((s32)a0 + 0x24) - 1; + } + } + + v0 = *(u16 *)((s32)s2 + 0x1A) - 0x40; + *(u16 *)((s32)s2 + 0x1A) = v0; + *(u16 *)((s32)s2 + 0x18) = v0; + + if (v0 < 0) { + func_8017F2AC(a0, *(s32 *)((s32)a0 + 0x2C), 0x8F); + func_80147324(D_80194C1C[*(s32 *)((s32)a0 + 0x2C)][0]); + ((void (*)(s32))func_80146C3C)((s32)a0); + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; +} + extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); 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 bf3ce2e25..2b71621bf 100644 --- a/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c +++ b/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.c @@ -3798,7 +3798,47 @@ INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017CC4 INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017CCC4); -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8017AE2C", func_8017CD10); + +extern void func_8017CE10(void *a0, s32 a1, s32 a2); +extern void func_80147324(s32 a0); +extern void func_80146C3C(void); + +void func_8017CD10(void *a0) { + + extern u16 D_8018EFE8[][2]; + s32 *s2; + s16 v0; + + s2 = *(s32 **)((s32)a0 + 0x20); + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + s2[1] |= 0x80000000; + } else { + s2[1] &= 0x7FFFFFFF; + } + + v0 = (*(u16 *)((s32)s2 + 0x12) + 0x80) & 0xFFF; + *(u16 *)((s32)s2 + 0x12) = v0; + + if (v0 == 0 || v0 == 0x800) { + if (*(s16 *)((s32)a0 + 0x24) != 0) { + *(s16 *)((s32)a0 + 0x24) = *(s16 *)((s32)a0 + 0x24) - 1; + } + } + + v0 = *(u16 *)((s32)s2 + 0x1A) - 0x40; + *(u16 *)((s32)s2 + 0x1A) = v0; + *(u16 *)((s32)s2 + 0x18) = v0; + + if (v0 < 0) { + func_8017CE10(a0, *(s32 *)((s32)a0 + 0x2C), 0x8F); + func_80147324(D_8018EFE8[*(s32 *)((s32)a0 + 0x2C)][0]); + ((void (*)(s32))func_80146C3C)((s32)a0); + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; +} + extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); 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 58acf9f1e..26576167a 100644 --- a/src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c +++ b/src/ov_SC03_024/ov_SC03_024_jr_8017AE2C.c @@ -3796,7 +3796,47 @@ INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017CC4 INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017CCC4); -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8017AE2C", func_8017CD10); + +extern void func_8017CE10(void *a0, s32 a1, s32 a2); +extern void func_80147324(s32 a0); +extern void func_80146C3C(void); + +void func_8017CD10(void *a0) { + + extern u16 D_8018A988[][2]; + s32 *s2; + s16 v0; + + s2 = *(s32 **)((s32)a0 + 0x20); + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + s2[1] |= 0x80000000; + } else { + s2[1] &= 0x7FFFFFFF; + } + + v0 = (*(u16 *)((s32)s2 + 0x12) + 0x80) & 0xFFF; + *(u16 *)((s32)s2 + 0x12) = v0; + + if (v0 == 0 || v0 == 0x800) { + if (*(s16 *)((s32)a0 + 0x24) != 0) { + *(s16 *)((s32)a0 + 0x24) = *(s16 *)((s32)a0 + 0x24) - 1; + } + } + + v0 = *(u16 *)((s32)s2 + 0x1A) - 0x40; + *(u16 *)((s32)s2 + 0x1A) = v0; + *(u16 *)((s32)s2 + 0x18) = v0; + + if (v0 < 0) { + func_8017CE10(a0, *(s32 *)((s32)a0 + 0x2C), 0x8F); + func_80147324(D_8018A988[*(s32 *)((s32)a0 + 0x2C)][0]); + ((void (*)(s32))func_80146C3C)((s32)a0); + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; +} + extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c b/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c index 233d9e5e7..0a875c039 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_8017AE2C.c @@ -3762,7 +3762,47 @@ INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017CC4 INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017CCC4); -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8017AE2C", func_8017CD10); + +extern void func_8017CE10(void *a0, s32 a1, s32 a2); +extern void func_80147324(s32 a0); +extern void func_80146C3C(void); + +void func_8017CD10(void *a0) { + + extern u16 D_8018D3E4[][2]; + s32 *s2; + s16 v0; + + s2 = *(s32 **)((s32)a0 + 0x20); + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + s2[1] |= 0x80000000; + } else { + s2[1] &= 0x7FFFFFFF; + } + + v0 = (*(u16 *)((s32)s2 + 0x12) + 0x80) & 0xFFF; + *(u16 *)((s32)s2 + 0x12) = v0; + + if (v0 == 0 || v0 == 0x800) { + if (*(s16 *)((s32)a0 + 0x24) != 0) { + *(s16 *)((s32)a0 + 0x24) = *(s16 *)((s32)a0 + 0x24) - 1; + } + } + + v0 = *(u16 *)((s32)s2 + 0x1A) - 0x40; + *(u16 *)((s32)s2 + 0x1A) = v0; + *(u16 *)((s32)s2 + 0x18) = v0; + + if (v0 < 0) { + func_8017CE10(a0, *(s32 *)((s32)a0 + 0x2C), 0x8F); + func_80147324(D_8018D3E4[*(s32 *)((s32)a0 + 0x2C)][0]); + ((void (*)(s32))func_80146C3C)((s32)a0); + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; +} + extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c b/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c index 9509730c0..3608028b8 100644 --- a/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c +++ b/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c @@ -3756,7 +3756,47 @@ INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017CC4 INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017CCC4); -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8017AE2C", func_8017CD10); + +extern void func_8017CE10(void *a0, s32 a1, s32 a2); +extern void func_80147324(s32 a0); +extern void func_80146C3C(void); + +void func_8017CD10(void *a0) { + + extern u16 D_8018D3E4[][2]; + s32 *s2; + s16 v0; + + s2 = *(s32 **)((s32)a0 + 0x20); + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + s2[1] |= 0x80000000; + } else { + s2[1] &= 0x7FFFFFFF; + } + + v0 = (*(u16 *)((s32)s2 + 0x12) + 0x80) & 0xFFF; + *(u16 *)((s32)s2 + 0x12) = v0; + + if (v0 == 0 || v0 == 0x800) { + if (*(s16 *)((s32)a0 + 0x24) != 0) { + *(s16 *)((s32)a0 + 0x24) = *(s16 *)((s32)a0 + 0x24) - 1; + } + } + + v0 = *(u16 *)((s32)s2 + 0x1A) - 0x40; + *(u16 *)((s32)s2 + 0x1A) = v0; + *(u16 *)((s32)s2 + 0x18) = v0; + + if (v0 < 0) { + func_8017CE10(a0, *(s32 *)((s32)a0 + 0x2C), 0x8F); + func_80147324(D_8018D3E4[*(s32 *)((s32)a0 + 0x2C)][0]); + ((void (*)(s32))func_80146C3C)((s32)a0); + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; +} + extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); 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 1ef6039f7..1bae61200 100644 --- a/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c +++ b/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c @@ -3768,7 +3768,47 @@ INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017CC4 INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017CCC4); -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017CD10); + +extern void func_8017CE10(void *a0, s32 a1, s32 a2); +extern void func_80147324(s32 a0); +extern void func_80146C3C(void); + +void func_8017CD10(void *a0) { + + extern u16 D_8018BD04[][2]; + s32 *s2; + s16 v0; + + s2 = *(s32 **)((s32)a0 + 0x20); + + if (*(s32 *)((s32)a0 + 0x1C) & 1) { + s2[1] |= 0x80000000; + } else { + s2[1] &= 0x7FFFFFFF; + } + + v0 = (*(u16 *)((s32)s2 + 0x12) + 0x80) & 0xFFF; + *(u16 *)((s32)s2 + 0x12) = v0; + + if (v0 == 0 || v0 == 0x800) { + if (*(s16 *)((s32)a0 + 0x24) != 0) { + *(s16 *)((s32)a0 + 0x24) = *(s16 *)((s32)a0 + 0x24) - 1; + } + } + + v0 = *(u16 *)((s32)s2 + 0x1A) - 0x40; + *(u16 *)((s32)s2 + 0x1A) = v0; + *(u16 *)((s32)s2 + 0x18) = v0; + + if (v0 < 0) { + func_8017CE10(a0, *(s32 *)((s32)a0 + 0x2C), 0x8F); + func_80147324(D_8018BD04[*(s32 *)((s32)a0 + 0x2C)][0]); + ((void (*)(s32))func_80146C3C)((s32)a0); + } + + *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; +} + extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6);