diff --git a/src/ov_SC03_107/ov_SC03_107_jr_801789AC.c b/src/ov_SC03_107/ov_SC03_107_jr_801789AC.c index c62a8f1c6..edd2fd070 100644 --- a/src/ov_SC03_107/ov_SC03_107_jr_801789AC.c +++ b/src/ov_SC03_107/ov_SC03_107_jr_801789AC.c @@ -7550,7 +7550,52 @@ void func_801801E4(s32 a0) INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_801789AC", func_80180428); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107_jr_801789AC", func_801804D8); + +extern u8 *func_8012913C(s32 a0); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern void func_801292C8(u8 *a0); + +typedef struct { + u16 x, y, z; + u8 flag; +} V8_80187968_801804D8; + +void func_801804D8(s32 a0) { + u32 v0; + u8 *s1; + + v0 = *(u16 *)(a0 + 0x10A) + 1; + *(u16 *)(a0 + 0x10A) = v0; + + if ((v0 & 7) == 0) { + s1 = func_8012913C(0x7B); + if (s1 != 0) { + V8_80187968_801804D8 p1; + V8_80187968_801804D8 q; + + v0 = *(u16 *)(a0 + 0x10A); + *(s32 *)(s1 + 0x2C) = (v0 & 0x18) >> 3; + + p1.x = *(u16 *)(a0 + 0x6); + p1.y = *(u16 *)(a0 + 0xA); + p1.z = *(u16 *)(a0 + 0xE); + q.x = p1.x; + q.y = p1.y + 0x80; + q.z = p1.z; + + func_80133784(1, &p1, (s32)&q); + + if (q.flag) { + *(u16 *)(s1 + 0x6) = *(u16 *)(a0 + 0x6); + *(u16 *)(s1 + 0xA) = q.y; + *(u16 *)(s1 + 0xE) = *(u16 *)(a0 + 0xE); + } else { + func_801292C8(s1); + } + } + } +} + diff --git a/src/ov_SC03_111/ov_SC03_111_jr_8017EC58.c b/src/ov_SC03_111/ov_SC03_111_jr_8017EC58.c index 67043b98d..c43ce3a86 100644 --- a/src/ov_SC03_111/ov_SC03_111_jr_8017EC58.c +++ b/src/ov_SC03_111/ov_SC03_111_jr_8017EC58.c @@ -4857,7 +4857,52 @@ void func_80182F8C(s32 a0) INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_801831D0); -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8017EC58", func_80183280); + +extern u8 *func_8012913C(s32 a0); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern void func_801292C8(u8 *a0); + +typedef struct { + u16 x, y, z; + u8 flag; +} V8_80187968_80183280; + +void func_80183280(s32 a0) { + u32 v0; + u8 *s1; + + v0 = *(u16 *)(a0 + 0x10A) + 1; + *(u16 *)(a0 + 0x10A) = v0; + + if ((v0 & 7) == 0) { + s1 = func_8012913C(0x7B); + if (s1 != 0) { + V8_80187968_80183280 p1; + V8_80187968_80183280 q; + + v0 = *(u16 *)(a0 + 0x10A); + *(s32 *)(s1 + 0x2C) = (v0 & 0x18) >> 3; + + p1.x = *(u16 *)(a0 + 0x6); + p1.y = *(u16 *)(a0 + 0xA); + p1.z = *(u16 *)(a0 + 0xE); + q.x = p1.x; + q.y = p1.y + 0x80; + q.z = p1.z; + + func_80133784(1, &p1, (s32)&q); + + if (q.flag) { + *(u16 *)(s1 + 0x6) = *(u16 *)(a0 + 0x6); + *(u16 *)(s1 + 0xA) = q.y; + *(u16 *)(s1 + 0xE) = *(u16 *)(a0 + 0xE); + } else { + func_801292C8(s1); + } + } + } +} + extern void (*D_801B1D18[])(void); diff --git a/src/ov_SC03_112/ov_SC03_112_jr_80183AE0.c b/src/ov_SC03_112/ov_SC03_112_jr_80183AE0.c index 71fb6759b..10d9169d1 100644 --- a/src/ov_SC03_112/ov_SC03_112_jr_80183AE0.c +++ b/src/ov_SC03_112/ov_SC03_112_jr_80183AE0.c @@ -3053,7 +3053,52 @@ void func_80183EA0(s32 a0) INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_801840E4); -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_80183AE0", func_80184194); + +extern u8 *func_8012913C(s32 a0); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern void func_801292C8(u8 *a0); + +typedef struct { + u16 x, y, z; + u8 flag; +} V8_80187968_80184194; + +void func_80184194(s32 a0) { + u32 v0; + u8 *s1; + + v0 = *(u16 *)(a0 + 0x10A) + 1; + *(u16 *)(a0 + 0x10A) = v0; + + if ((v0 & 7) == 0) { + s1 = func_8012913C(0x7B); + if (s1 != 0) { + V8_80187968_80184194 p1; + V8_80187968_80184194 q; + + v0 = *(u16 *)(a0 + 0x10A); + *(s32 *)(s1 + 0x2C) = (v0 & 0x18) >> 3; + + p1.x = *(u16 *)(a0 + 0x6); + p1.y = *(u16 *)(a0 + 0xA); + p1.z = *(u16 *)(a0 + 0xE); + q.x = p1.x; + q.y = p1.y + 0x80; + q.z = p1.z; + + func_80133784(1, &p1, (s32)&q); + + if (q.flag) { + *(u16 *)(s1 + 0x6) = *(u16 *)(a0 + 0x6); + *(u16 *)(s1 + 0xA) = q.y; + *(u16 *)(s1 + 0xE) = *(u16 *)(a0 + 0xE); + } else { + func_801292C8(s1); + } + } + } +} + extern void (*D_801A8BF4[])(void); diff --git a/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c b/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c index cebbbce35..7cee09af0 100644 --- a/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c +++ b/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c @@ -6019,7 +6019,52 @@ void func_80181C24(s32 a0) INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_80181E68); -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_80181F18); + +extern u8 *func_8012913C(s32 a0); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern void func_801292C8(u8 *a0); + +typedef struct { + u16 x, y, z; + u8 flag; +} V8_80187968_80181F18; + +void func_80181F18(s32 a0) { + u32 v0; + u8 *s1; + + v0 = *(u16 *)(a0 + 0x10A) + 1; + *(u16 *)(a0 + 0x10A) = v0; + + if ((v0 & 7) == 0) { + s1 = func_8012913C(0x7B); + if (s1 != 0) { + V8_80187968_80181F18 p1; + V8_80187968_80181F18 q; + + v0 = *(u16 *)(a0 + 0x10A); + *(s32 *)(s1 + 0x2C) = (v0 & 0x18) >> 3; + + p1.x = *(u16 *)(a0 + 0x6); + p1.y = *(u16 *)(a0 + 0xA); + p1.z = *(u16 *)(a0 + 0xE); + q.x = p1.x; + q.y = p1.y + 0x80; + q.z = p1.z; + + func_80133784(1, &p1, (s32)&q); + + if (q.flag) { + *(u16 *)(s1 + 0x6) = *(u16 *)(a0 + 0x6); + *(u16 *)(s1 + 0xA) = q.y; + *(u16 *)(s1 + 0xE) = *(u16 *)(a0 + 0xE); + } else { + func_801292C8(s1); + } + } + } +} + extern void (*D_8019F340[])(void); diff --git a/src/ov_SC03_117/ov_SC03_117_jr_80181C80.c b/src/ov_SC03_117/ov_SC03_117_jr_80181C80.c index 103bf93d2..684761043 100644 --- a/src/ov_SC03_117/ov_SC03_117_jr_80181C80.c +++ b/src/ov_SC03_117/ov_SC03_117_jr_80181C80.c @@ -3640,7 +3640,52 @@ void func_80182F28(s32 a0) INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80181C80", func_8018316C); -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_80181C80", func_8018321C); + +extern u8 *func_8012913C(s32 a0); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern void func_801292C8(u8 *a0); + +typedef struct { + u16 x, y, z; + u8 flag; +} V8_80187968_8018321C; + +void func_8018321C(s32 a0) { + u32 v0; + u8 *s1; + + v0 = *(u16 *)(a0 + 0x10A) + 1; + *(u16 *)(a0 + 0x10A) = v0; + + if ((v0 & 7) == 0) { + s1 = func_8012913C(0x7B); + if (s1 != 0) { + V8_80187968_8018321C p1; + V8_80187968_8018321C q; + + v0 = *(u16 *)(a0 + 0x10A); + *(s32 *)(s1 + 0x2C) = (v0 & 0x18) >> 3; + + p1.x = *(u16 *)(a0 + 0x6); + p1.y = *(u16 *)(a0 + 0xA); + p1.z = *(u16 *)(a0 + 0xE); + q.x = p1.x; + q.y = p1.y + 0x80; + q.z = p1.z; + + func_80133784(1, &p1, (s32)&q); + + if (q.flag) { + *(u16 *)(s1 + 0x6) = *(u16 *)(a0 + 0x6); + *(u16 *)(s1 + 0xA) = q.y; + *(u16 *)(s1 + 0xE) = *(u16 *)(a0 + 0xE); + } else { + func_801292C8(s1); + } + } + } +} + extern void (*D_801C3740[])(void); diff --git a/src/ov_SC03_119/ov_SC03_119_jr_801863CC.c b/src/ov_SC03_119/ov_SC03_119_jr_801863CC.c index 0b6f3bcca..de2524830 100644 --- a/src/ov_SC03_119/ov_SC03_119_jr_801863CC.c +++ b/src/ov_SC03_119/ov_SC03_119_jr_801863CC.c @@ -3672,7 +3672,52 @@ void func_80187674(s32 a0) INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801863CC", func_801878B8); -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_801863CC", func_80187968); + +extern u8 *func_8012913C(s32 a0); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern void func_801292C8(u8 *a0); + +typedef struct { + u16 x, y, z; + u8 flag; +} V8_80187968_80187968; + +void func_80187968(s32 a0) { + u32 v0; + u8 *s1; + + v0 = *(u16 *)(a0 + 0x10A) + 1; + *(u16 *)(a0 + 0x10A) = v0; + + if ((v0 & 7) == 0) { + s1 = func_8012913C(0x7B); + if (s1 != 0) { + V8_80187968_80187968 p1; + V8_80187968_80187968 q; + + v0 = *(u16 *)(a0 + 0x10A); + *(s32 *)(s1 + 0x2C) = (v0 & 0x18) >> 3; + + p1.x = *(u16 *)(a0 + 0x6); + p1.y = *(u16 *)(a0 + 0xA); + p1.z = *(u16 *)(a0 + 0xE); + q.x = p1.x; + q.y = p1.y + 0x80; + q.z = p1.z; + + func_80133784(1, &p1, (s32)&q); + + if (q.flag) { + *(u16 *)(s1 + 0x6) = *(u16 *)(a0 + 0x6); + *(u16 *)(s1 + 0xA) = q.y; + *(u16 *)(s1 + 0xE) = *(u16 *)(a0 + 0xE); + } else { + func_801292C8(s1); + } + } + } +} + extern void (*D_801C705C[])(void); diff --git a/src/ov_SC05_004/ov_SC05_004_jr_8017F210.c b/src/ov_SC05_004/ov_SC05_004_jr_8017F210.c index 0b34297b0..e7d83db31 100644 --- a/src/ov_SC05_004/ov_SC05_004_jr_8017F210.c +++ b/src/ov_SC05_004/ov_SC05_004_jr_8017F210.c @@ -3600,7 +3600,52 @@ void func_801804B8(s32 a0) INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017F210", func_801806FC); -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8017F210", func_801807AC); + +extern u8 *func_8012913C(s32 a0); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern void func_801292C8(u8 *a0); + +typedef struct { + u16 x, y, z; + u8 flag; +} V8_80187968_801807AC; + +void func_801807AC(s32 a0) { + u32 v0; + u8 *s1; + + v0 = *(u16 *)(a0 + 0x10A) + 1; + *(u16 *)(a0 + 0x10A) = v0; + + if ((v0 & 7) == 0) { + s1 = func_8012913C(0x7B); + if (s1 != 0) { + V8_80187968_801807AC p1; + V8_80187968_801807AC q; + + v0 = *(u16 *)(a0 + 0x10A); + *(s32 *)(s1 + 0x2C) = (v0 & 0x18) >> 3; + + p1.x = *(u16 *)(a0 + 0x6); + p1.y = *(u16 *)(a0 + 0xA); + p1.z = *(u16 *)(a0 + 0xE); + q.x = p1.x; + q.y = p1.y + 0x80; + q.z = p1.z; + + func_80133784(1, &p1, (s32)&q); + + if (q.flag) { + *(u16 *)(s1 + 0x6) = *(u16 *)(a0 + 0x6); + *(u16 *)(s1 + 0xA) = q.y; + *(u16 *)(s1 + 0xE) = *(u16 *)(a0 + 0xE); + } else { + func_801292C8(s1); + } + } + } +} + extern void (*D_8019AF58[])(void);