diff --git a/src/ov_SC01_009/ov_SC01_009_jr_8018057C.c b/src/ov_SC01_009/ov_SC01_009_jr_8018057C.c index 246eb061f..970e67253 100644 --- a/src/ov_SC01_009/ov_SC01_009_jr_8018057C.c +++ b/src/ov_SC01_009/ov_SC01_009_jr_8018057C.c @@ -3910,7 +3910,19 @@ void func_801823D0(s32 a0) { } -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8018057C", func_80182438); +void func_80182438(void *a0) { + extern s32 func_8017F2A0(void *a0); + extern void func_801439C0(u8 *a0); + extern void func_8012C218(void *a0); + u8 *p; + if ((func_8017F2A0(a0) << 16) != 0) + return; + p = *(u8 **)((u8 *)a0 + 0xD8); + if (p != 0) + func_801439C0(p); + func_8012C218(a0); +} + extern void func_8012A828(s32 a0, void *a1); extern void *D_801ED72C[]; diff --git a/src/ov_SC03_007/ov_SC03_007_jr_80183894.c b/src/ov_SC03_007/ov_SC03_007_jr_80183894.c index 10e1e28b2..fb56713e8 100644 --- a/src/ov_SC03_007/ov_SC03_007_jr_80183894.c +++ b/src/ov_SC03_007/ov_SC03_007_jr_80183894.c @@ -5069,7 +5069,41 @@ void func_80186074(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_80183894", func_8018611C); +void func_8018611C(void *a0) { + s32 sp10[3]; + extern s32 func_8012CBCC(s32 a0); + extern void func_8012B200(u8 *a0); + extern void func_8012A828(s32 a0, void *a1); + extern void func_80185D3C(void *a0, s32 a1); + extern void func_80185E3C(void *a0); + extern void (*D_8018C678[])(void); + s32 t; + s32 st; + + if (func_8012CBCC((s32)a0) & 0x2000) { + func_80146A6C(2, a0, 0, 0, 0, 3, 0x30000000); + t = *(s32 *)((s32)a0 + 0x1C) + 1; + *(s32 *)((s32)a0 + 0x1C) = t; + if (t == 1) { + sp10[0] = 0; + sp10[1] = 0xFFFD0000; + sp10[2] = 0x20000; + func_8012B14C((s32)a0, sp10); + return; + } + func_8012B200((u8 *)a0); + func_8012A828((s32)a0, (void *)&D_8018C678); + st = *(u16 *)((s32)a0 + 2); + st = st + 1; + *(u16 *)((s32)a0 + 0xF6) = *(u16 *)((s32)a0 + 0x76) - 8; + *(u16 *)((s32)a0 + 0x98) = 0; + *(u16 *)((s32)a0 + 2) = st; + *(s32 *)((s32)a0 + 0x1C) = 0x50; + } + func_80185D3C(a0, 0); + func_80185E3C(a0); +} + #include "common.h"