diff --git a/src/ov_SC02_027/ov_SC02_027.c b/src/ov_SC02_027/ov_SC02_027.c index dcad81ae6..37f06a56d 100644 --- a/src/ov_SC02_027/ov_SC02_027.c +++ b/src/ov_SC02_027/ov_SC02_027.c @@ -73,7 +73,15 @@ DEFINE_func_80128D60() /* dedup: shared engine-core @0x80128D60 (src/shared) */ DEFINE_func_80128DB4() /* dedup: shared engine-core @0x80128DB4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80128EA8); +void func_80128EA8(s32 a0, s32 a1, s32 a2) +{ + *(s32 *)((s32)a1 + 0x0) = a2; + *(s16 *)((s32)a1 + 0x4) = 0; + *(s16 *)((s32)a1 + 0x6) = (*(s32 *)((s32)a2 + 0x4)) & 0x3F; + *(s16 *)((s32)a0 + 0x28) = *(s16 *)((s32)a2 + 0x0); + *(s16 *)((s32)a0 + 0x2A) = *(s16 *)((s32)a2 + 0x2); + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80128ED8); @@ -149,7 +157,12 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8012A464); DEFINE_func_8012A4BC() /* dedup: shared engine-core @0x8012A4BC (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8012A568); +extern void func_8012A598(void *a0); + void func_8012A568(void (*a0)(void)) { + ((void (*)(void))func_8012A598)(); + a0(); + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8012A598); @@ -189,7 +202,10 @@ DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ DEFINE_func_8012AD50() /* dedup: shared engine-core @0x8012AD50 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8012AD64); +void func_8012AD64(s32 *a0, s16 a1) { + *(s16 *)((s32)a0 + 0x34) = a1; + } + DEFINE_func_8012AD6C() /* dedup: shared engine-core @0x8012AD6C (src/shared) */ @@ -265,7 +281,10 @@ DEFINE_func_8012BEE8() /* dedup: shared engine-core @0x8012BEE8 (src/shared) */ DEFINE_func_8012BF10() /* dedup: shared engine-core @0x8012BF10 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8012BF4C); +void func_8012BF4C(s32 *a0, s32 a1) { + *(s32 *)((s32)a0 + 0x1C) = a1; + } + DEFINE_func_8012BF54() /* dedup: shared engine-core @0x8012BF54 (src/shared) */ @@ -379,7 +398,10 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8012E014); INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8012E138); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8012E27C); +s32 func_8012E27C(void) { + return 0x1; + } + DEFINE_func_8012E284() /* dedup: shared engine-core @0x8012E284 (src/shared) */ @@ -601,7 +623,13 @@ DEFINE_func_80132DC4() /* dedup: shared engine-core @0x80132DC4 (src/shared) */ DEFINE_func_80132E6C() /* dedup: shared engine-core @0x80132E6C (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80132EC4); +void func_80132EC4(s32 *a0, s16 a1) { + while (*a0 != 0) { + *(s16 *)((s32)a0 + 0x4) = a1; + a0 = (s32 *)((s32)a0 + 0x8); + } + } + DEFINE_func_80132EF4() /* dedup: shared engine-core @0x80132EF4 (src/shared) */ @@ -749,7 +777,16 @@ DEFINE_func_80138B88() /* dedup: shared engine-core @0x80138B88 (src/shared) */ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80138BE0); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80138C30); +void func_80138C30(void * a0) +{ + s16 v1 = *(s16 *)((s32)a0 + 0x4); + if (v1 == 4) { + *(s16 *)((s32)a0 + 0x4) = 2; + } else { + *(s32 *)((s32)a0 + 0x8) |= 0x800; + } + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80138C60); @@ -4413,7 +4450,14 @@ DEFINE_func_80174604() /* dedup: shared engine-core @0x80174604 (src/shared) */ DEFINE_func_80174630() /* dedup: shared engine-core @0x80174630 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80174650); +extern s32 D_801270BC; + extern s32 D_801150F8; + s32 func_80174650(s32 _arg0) +{ + D_801270BC = D_801270BC | 1; + D_801150F8 = 0; + } + DEFINE_func_80174674() /* dedup: shared engine-core @0x80174674 (src/shared) */ @@ -4773,7 +4817,11 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017CB68); INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017CBD4); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017CC60); +extern void func_8012C218(void *a0); + void func_8017CC60(void) { + ((s32 (*)(void))func_8012C218)(); + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017CC80); @@ -4841,7 +4889,11 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017EA30); INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017EA70); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017EAFC); +extern void func_800D1EBC(void); + void func_8017EAFC(void) { + func_800D1EBC(); + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017EB1C); @@ -4901,11 +4953,23 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017FAE0); INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017FB08); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017FB38); +extern s32 func_8017FCAC(void); + void func_8017FB38(void) { + func_8017FCAC(); + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017FB58); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017FC88); +extern s32 D_801DA128; + extern s32 D_801DA120; + extern s32 D_801DA124; + void func_8017FC88(void) { + D_801DA128 = 0; + D_801DA120 = 1; + D_801DA124 = 0; + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8017FCAC); @@ -5056,7 +5120,12 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_801831F4); INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_801832B0); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_801832D8); +extern void func_8012AD44(s32 *a0, s16 a1); + void func_801832D8(s32 a0) { + *(s16 *)(a0 + 0xFC) = 0; + ((void (*)(void *, s32))func_8012AD44)((void *)a0, 0x1); + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_801832FC); @@ -5078,7 +5147,11 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8018371C); INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_801838E8); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80183918); +extern void func_8012AD44(s32 *a0, s16 a1); + void func_80183918(void *arg0) { + ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 0x5); + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80183938); @@ -5120,11 +5193,20 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80184CD0); INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80184D0C); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80184D48); +void func_80184D48(void *a0) { + *(s8 *)((s32)a0 + 0xC1) = 0; + *(s16 *)((s32)a0 + 0x5E) = 0; + *(s16 *)((s32)a0 + 0x5C) &= 0xC800; + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80184D60); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80184E04); +void func_80184E04(void *a0) { + void *a1 = *(void **)((char *)a0 + 0x20); + *(u16 *)((char *)a1 + 0x12) += *(u16 *)((char *)a0 + 0xfc); + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80184E20); @@ -5167,7 +5249,10 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80185934); INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80185960); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_801859D0); +void func_801859D0(void *a0) { + M2C_FIELD(a0, s16 *, 0x2) = 4; + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_801859DC); @@ -5183,7 +5268,12 @@ INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80185FB0); INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_80186018); -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_801860A8); +void func_801860A8(void *a0) { + *(short *)((char *)a0 + 0x5c) = 0; + *(short *)((char *)a0 + 0x98) = 0; + *(int *)((char *)a0 + 0x1c) = 0; + } + INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_801860B8);