diff --git a/src/ov_SC06_013/ov_SC06_013_jr_8017BEBC.c b/src/ov_SC06_013/ov_SC06_013_jr_8017BEBC.c index 266cf508ff..b0ef7c1eb3 100644 --- a/src/ov_SC06_013/ov_SC06_013_jr_8017BEBC.c +++ b/src/ov_SC06_013/ov_SC06_013_jr_8017BEBC.c @@ -3803,7 +3803,54 @@ void func_8017E188(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017BEBC", func_8017E1C4); + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 *a0, s32 a1); +extern void func_8012B23C(void *a0); + + +void func_8017E1C4(void *a0) { + + extern u8 D_80195AEC[]; + extern s32 D_80195B20[]; + extern u8 D_8017EEF8[]; + if (func_8012C354((s32)a0, (s32)D_80195AEC) != 0) { + u16 v1 = *(u16 *)((s32)a0 + 0x70); + + if (v1 & 0x10) { + u16 v0 = v1 & ~0x10; + *(u16 *)((s32)a0 + 0x70) = v0; + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_80195B20[(s16)v0]); + *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x60000040; + } else { + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_80195B20[(s16)v1]); + } + + if (*(s16 *)((s32)a0 + 0x70) == 8 || *(s16 *)((s32)a0 + 0x70) == 0xA) { + *(s16 *)((s32)a0 + 0x34) = 3; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 9) { + *(s16 *)((s32)a0 + 0x34) = 2; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 0xB) { + *(s16 *)((s32)a0 + 0x34) = 4; + } + + *(u8 *)((s32)a0 + 0xC0) = 1; + *(s32 *)((s32)a0 + 0xB4) = -1; + *(u8 *)((s32)a0 + 0x75) = 8; + func_8012A828((s32 *)a0, (s32)D_8017EEF8); + + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; + func_8012B23C(a0); + *(s16 *)((s32)a0 + 0xAE) = -1; + } +} + INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8017BEBC", func_8017E30C); diff --git a/src/ov_SC06_014/ov_SC06_014_jr_8017BEBC.c b/src/ov_SC06_014/ov_SC06_014_jr_8017BEBC.c index 63f4444a01..7f09232eba 100644 --- a/src/ov_SC06_014/ov_SC06_014_jr_8017BEBC.c +++ b/src/ov_SC06_014/ov_SC06_014_jr_8017BEBC.c @@ -4099,7 +4099,54 @@ void func_8017F4EC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8017BEBC", func_8017F528); + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 *a0, s32 a1); +extern void func_8012B23C(void *a0); + + +void func_8017F528(void *a0) { + + extern u8 D_80199ECC[]; + extern s32 D_80199F00[]; + extern u8 D_8018025C[]; + if (func_8012C354((s32)a0, (s32)D_80199ECC) != 0) { + u16 v1 = *(u16 *)((s32)a0 + 0x70); + + if (v1 & 0x10) { + u16 v0 = v1 & ~0x10; + *(u16 *)((s32)a0 + 0x70) = v0; + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_80199F00[(s16)v0]); + *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x60000040; + } else { + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_80199F00[(s16)v1]); + } + + if (*(s16 *)((s32)a0 + 0x70) == 8 || *(s16 *)((s32)a0 + 0x70) == 0xA) { + *(s16 *)((s32)a0 + 0x34) = 3; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 9) { + *(s16 *)((s32)a0 + 0x34) = 2; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 0xB) { + *(s16 *)((s32)a0 + 0x34) = 4; + } + + *(u8 *)((s32)a0 + 0xC0) = 1; + *(s32 *)((s32)a0 + 0xB4) = -1; + *(u8 *)((s32)a0 + 0x75) = 8; + func_8012A828((s32 *)a0, (s32)D_8018025C); + + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; + func_8012B23C(a0); + *(s16 *)((s32)a0 + 0xAE) = -1; + } +} + INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8017BEBC", func_8017F670); diff --git a/src/ov_SC06_015/ov_SC06_015_jr_8017BEBC.c b/src/ov_SC06_015/ov_SC06_015_jr_8017BEBC.c index 8d92ce1547..7dc705e7a8 100644 --- a/src/ov_SC06_015/ov_SC06_015_jr_8017BEBC.c +++ b/src/ov_SC06_015/ov_SC06_015_jr_8017BEBC.c @@ -3939,7 +3939,54 @@ void func_8017E044(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8017BEBC", func_8017E080); + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 *a0, s32 a1); +extern void func_8012B23C(void *a0); + + +void func_8017E080(void *a0) { + + extern u8 D_8018F8BC[]; + extern s32 D_8018F8F0[]; + extern u8 D_8017EDB4[]; + if (func_8012C354((s32)a0, (s32)D_8018F8BC) != 0) { + u16 v1 = *(u16 *)((s32)a0 + 0x70); + + if (v1 & 0x10) { + u16 v0 = v1 & ~0x10; + *(u16 *)((s32)a0 + 0x70) = v0; + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_8018F8F0[(s16)v0]); + *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x60000040; + } else { + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_8018F8F0[(s16)v1]); + } + + if (*(s16 *)((s32)a0 + 0x70) == 8 || *(s16 *)((s32)a0 + 0x70) == 0xA) { + *(s16 *)((s32)a0 + 0x34) = 3; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 9) { + *(s16 *)((s32)a0 + 0x34) = 2; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 0xB) { + *(s16 *)((s32)a0 + 0x34) = 4; + } + + *(u8 *)((s32)a0 + 0xC0) = 1; + *(s32 *)((s32)a0 + 0xB4) = -1; + *(u8 *)((s32)a0 + 0x75) = 8; + func_8012A828((s32 *)a0, (s32)D_8017EDB4); + + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; + func_8012B23C(a0); + *(s16 *)((s32)a0 + 0xAE) = -1; + } +} + INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8017BEBC", func_8017E1C8); diff --git a/src/ov_SC06_016/ov_SC06_016_jr_8017C8D0.c b/src/ov_SC06_016/ov_SC06_016_jr_8017C8D0.c index 67c6db6bb6..15de1bbd3d 100644 --- a/src/ov_SC06_016/ov_SC06_016_jr_8017C8D0.c +++ b/src/ov_SC06_016/ov_SC06_016_jr_8017C8D0.c @@ -3992,7 +3992,54 @@ void func_8018384C(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017C8D0", func_80183888); + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 *a0, s32 a1); +extern void func_8012B23C(void *a0); + + +void func_80183888(void *a0) { + + extern u8 D_8019A53C[]; + extern s32 D_8019A570[]; + extern u8 D_801851C4[]; + if (func_8012C354((s32)a0, (s32)D_8019A53C) != 0) { + u16 v1 = *(u16 *)((s32)a0 + 0x70); + + if (v1 & 0x10) { + u16 v0 = v1 & ~0x10; + *(u16 *)((s32)a0 + 0x70) = v0; + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_8019A570[(s16)v0]); + *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x60000040; + } else { + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_8019A570[(s16)v1]); + } + + if (*(s16 *)((s32)a0 + 0x70) == 8 || *(s16 *)((s32)a0 + 0x70) == 0xA) { + *(s16 *)((s32)a0 + 0x34) = 3; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 9) { + *(s16 *)((s32)a0 + 0x34) = 2; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 0xB) { + *(s16 *)((s32)a0 + 0x34) = 4; + } + + *(u8 *)((s32)a0 + 0xC0) = 1; + *(s32 *)((s32)a0 + 0xB4) = -1; + *(u8 *)((s32)a0 + 0x75) = 8; + func_8012A828((s32 *)a0, (s32)D_801851C4); + + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; + func_8012B23C(a0); + *(s16 *)((s32)a0 + 0xAE) = -1; + } +} + INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8017C8D0", func_801839D0); diff --git a/src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.c b/src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.c index b5c865bb53..c62601c1bd 100644 --- a/src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.c +++ b/src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.c @@ -4029,7 +4029,54 @@ void func_801818FC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_80181938); + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32, void*); +extern void func_8012B23C(void *a0); + + +void func_80181938(void *a0) { + + extern u8 D_801B4D44[]; + extern s32 D_801B4D78[]; + extern u8 D_80182184[]; + if (func_8012C354((s32)a0, (s32)D_801B4D44) != 0) { + u16 v1 = *(u16 *)((s32)a0 + 0x70); + + if (v1 & 0x10) { + u16 v0 = v1 & ~0x10; + *(u16 *)((s32)a0 + 0x70) = v0; + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_801B4D78[(s16)v0]); + *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x60000040; + } else { + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_801B4D78[(s16)v1]); + } + + if (*(s16 *)((s32)a0 + 0x70) == 8 || *(s16 *)((s32)a0 + 0x70) == 0xA) { + *(s16 *)((s32)a0 + 0x34) = 3; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 9) { + *(s16 *)((s32)a0 + 0x34) = 2; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 0xB) { + *(s16 *)((s32)a0 + 0x34) = 4; + } + + *(u8 *)((s32)a0 + 0xC0) = 1; + *(s32 *)((s32)a0 + 0xB4) = -1; + *(u8 *)((s32)a0 + 0x75) = 8; + ((void (*)(s32 *, s32))func_8012A828)((s32 *)a0, (s32)D_80182184); + + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; + func_8012B23C(a0); + *(s16 *)((s32)a0 + 0xAE) = -1; + } +} + INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_80181A80);