diff --git a/src/ov_SC06_020/ov_SC06_020_jr_8017C24C.c b/src/ov_SC06_020/ov_SC06_020_jr_8017C24C.c index c5d1ae3ec..fbeb87461 100644 --- a/src/ov_SC06_020/ov_SC06_020_jr_8017C24C.c +++ b/src/ov_SC06_020/ov_SC06_020_jr_8017C24C.c @@ -3657,7 +3657,68 @@ INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017E27 INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017E304); -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017E350); + +extern s32 func_801812A0(s32 a0, s32 a1); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BCCC(s32 a0); +extern void func_80183FD0(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +void func_8017E350(s32 p) +{ + + extern u8 D_801B5AC0[]; + extern u8 D_801B63D8[]; + s32 v0; + s32 s1; + + if (func_801812A0(p, 0x64) == 1) { + *(u32 *)(p + 0xE0) |= 0x10; + } + + if (*(s32 *)(p + 0x90) == (s32) D_801B5AC0) { + if (*(s32 *)(p + 0x94) == 0xB) { + func_80183FD0(p, 0x8C0); + } + } else { + if (*(s32 *)(p + 0x94) == 8) { + func_80183FD0(p, 0x8C0); + } + } + + if (*(u16 *)(p + 0x72) & 0x4000) { + if (func_8012BDBC(p, 0x300) == 0) { + v0 = 6; + goto set_and_return; + } + s1 = func_8012BCCC(p); + if (s1 >= 0x100000) { + v0 = 2; + goto set_and_return; + } + if (s1 < 0x4000) { + func_8012A828(p, D_801B63D8); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else if (s1 < 0x6400) { + if ((*(s32 *)(p + 0xE0) & 0x10) == 0) { + func_8012A828(p, D_801B63D8); + return; + } + func_8012A828(p, D_801B5AC0); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else { + v0 = 4; + goto set_and_return; + } + } + return; + +set_and_return: + *(s16 *)(p + 2) = v0; +} + INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8017C24C", func_8017E48C); diff --git a/src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c b/src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c index 617db060a..b932b33aa 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c @@ -4053,7 +4053,68 @@ INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_801821A INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_80182228); -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_80182274); + +extern s32 func_801851C4(s32 a0, s32 a1); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BCCC(s32 a0); +extern void func_80187EF4(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +void func_80182274(s32 p) +{ + + extern u8 D_801D41E8[]; + extern u8 D_801D4B00[]; + s32 v0; + s32 s1; + + if (func_801851C4(p, 0x64) == 1) { + *(u32 *)(p + 0xE0) |= 0x10; + } + + if (*(s32 *)(p + 0x90) == (s32) D_801D41E8) { + if (*(s32 *)(p + 0x94) == 0xB) { + func_80187EF4(p, 0x8C0); + } + } else { + if (*(s32 *)(p + 0x94) == 8) { + func_80187EF4(p, 0x8C0); + } + } + + if (*(u16 *)(p + 0x72) & 0x4000) { + if (func_8012BDBC(p, 0x300) == 0) { + v0 = 6; + goto set_and_return; + } + s1 = func_8012BCCC(p); + if (s1 >= 0x100000) { + v0 = 2; + goto set_and_return; + } + if (s1 < 0x4000) { + func_8012A828(p, D_801D4B00); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else if (s1 < 0x6400) { + if ((*(s32 *)(p + 0xE0) & 0x10) == 0) { + func_8012A828(p, D_801D4B00); + return; + } + func_8012A828(p, D_801D41E8); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else { + v0 = 4; + goto set_and_return; + } + } + return; + +set_and_return: + *(s16 *)(p + 2) = v0; +} + INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_801823B0); diff --git a/src/ov_SC06_024/ov_SC06_024_jr_8017BEBC.c b/src/ov_SC06_024/ov_SC06_024_jr_8017BEBC.c index 9633bc7fc..40e333dda 100644 --- a/src/ov_SC06_024/ov_SC06_024_jr_8017BEBC.c +++ b/src/ov_SC06_024/ov_SC06_024_jr_8017BEBC.c @@ -4687,7 +4687,68 @@ INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8018467 INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_80184700); -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_8018474C); + +extern s32 func_8018769C(s32 a0, s32 a1); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BCCC(s32 a0); +extern void func_8018A3CC(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +void func_8018474C(s32 p) +{ + + extern u8 D_801D332C[]; + extern u8 D_801D3C44[]; + s32 v0; + s32 s1; + + if (func_8018769C(p, 0x64) == 1) { + *(u32 *)(p + 0xE0) |= 0x10; + } + + if (*(s32 *)(p + 0x90) == (s32) D_801D332C) { + if (*(s32 *)(p + 0x94) == 0xB) { + func_8018A3CC(p, 0x8C0); + } + } else { + if (*(s32 *)(p + 0x94) == 8) { + func_8018A3CC(p, 0x8C0); + } + } + + if (*(u16 *)(p + 0x72) & 0x4000) { + if (func_8012BDBC(p, 0x300) == 0) { + v0 = 6; + goto set_and_return; + } + s1 = func_8012BCCC(p); + if (s1 >= 0x100000) { + v0 = 2; + goto set_and_return; + } + if (s1 < 0x4000) { + func_8012A828(p, D_801D3C44); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else if (s1 < 0x6400) { + if ((*(s32 *)(p + 0xE0) & 0x10) == 0) { + func_8012A828(p, D_801D3C44); + return; + } + func_8012A828(p, D_801D332C); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else { + v0 = 4; + goto set_and_return; + } + } + return; + +set_and_return: + *(s16 *)(p + 2) = v0; +} + INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8017BEBC", func_80184888); diff --git a/src/ov_SC06_032/ov_SC06_032_jr_8017C24C.c b/src/ov_SC06_032/ov_SC06_032_jr_8017C24C.c index 77e57c1bc..2d5d09da9 100644 --- a/src/ov_SC06_032/ov_SC06_032_jr_8017C24C.c +++ b/src/ov_SC06_032/ov_SC06_032_jr_8017C24C.c @@ -4091,7 +4091,68 @@ INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017C24C", func_8017EEB INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017C24C", func_8017EF38); -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017C24C", func_8017EF84); + +extern s32 func_80181ED4(s32 a0, s32 a1); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BCCC(s32 a0); +extern void func_80184C04(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +void func_8017EF84(s32 p) +{ + + extern u8 D_801BD720[]; + extern u8 D_801BE038[]; + s32 v0; + s32 s1; + + if (func_80181ED4(p, 0x64) == 1) { + *(u32 *)(p + 0xE0) |= 0x10; + } + + if (*(s32 *)(p + 0x90) == (s32) D_801BD720) { + if (*(s32 *)(p + 0x94) == 0xB) { + func_80184C04(p, 0x8C0); + } + } else { + if (*(s32 *)(p + 0x94) == 8) { + func_80184C04(p, 0x8C0); + } + } + + if (*(u16 *)(p + 0x72) & 0x4000) { + if (func_8012BDBC(p, 0x300) == 0) { + v0 = 6; + goto set_and_return; + } + s1 = func_8012BCCC(p); + if (s1 >= 0x100000) { + v0 = 2; + goto set_and_return; + } + if (s1 < 0x4000) { + func_8012A828(p, D_801BE038); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else if (s1 < 0x6400) { + if ((*(s32 *)(p + 0xE0) & 0x10) == 0) { + func_8012A828(p, D_801BE038); + return; + } + func_8012A828(p, D_801BD720); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else { + v0 = 4; + goto set_and_return; + } + } + return; + +set_and_return: + *(s16 *)(p + 2) = v0; +} + INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8017C24C", func_8017F0C0); 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 6190bdf36..23260dab0 100644 --- a/src/ov_SC06_033/ov_SC06_033_jr_8017C24C.c +++ b/src/ov_SC06_033/ov_SC06_033_jr_8017C24C.c @@ -6134,7 +6134,68 @@ INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_80182B9 INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_80182C1C); -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_80182C68); + +extern s32 func_80185BB8(s32 a0, s32 a1); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BCCC(s32 a0); +extern void func_801888E8(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +void func_80182C68(s32 p) +{ + + extern u8 D_801C6AB4[]; + extern u8 D_801C73CC[]; + s32 v0; + s32 s1; + + if (func_80185BB8(p, 0x64) == 1) { + *(u32 *)(p + 0xE0) |= 0x10; + } + + if (*(s32 *)(p + 0x90) == (s32) D_801C6AB4) { + if (*(s32 *)(p + 0x94) == 0xB) { + func_801888E8(p, 0x8C0); + } + } else { + if (*(s32 *)(p + 0x94) == 8) { + func_801888E8(p, 0x8C0); + } + } + + if (*(u16 *)(p + 0x72) & 0x4000) { + if (func_8012BDBC(p, 0x300) == 0) { + v0 = 6; + goto set_and_return; + } + s1 = func_8012BCCC(p); + if (s1 >= 0x100000) { + v0 = 2; + goto set_and_return; + } + if (s1 < 0x4000) { + func_8012A828(p, D_801C73CC); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else if (s1 < 0x6400) { + if ((*(s32 *)(p + 0xE0) & 0x10) == 0) { + func_8012A828(p, D_801C73CC); + return; + } + func_8012A828(p, D_801C6AB4); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else { + v0 = 4; + goto set_and_return; + } + } + return; + +set_and_return: + *(s16 *)(p + 2) = v0; +} + INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8017C24C", func_80182DA4);