diff --git a/src/md_MAIN_007/md_MAIN_007.c b/src/md_MAIN_007/md_MAIN_007.c index 03b7fc573f..0e3eb60aa4 100644 --- a/src/md_MAIN_007/md_MAIN_007.c +++ b/src/md_MAIN_007/md_MAIN_007.c @@ -4,13 +4,30 @@ INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CEE2C); INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CEEFC); -INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CEF60); + + +void func_800CEF60(void) { + extern s32 func_800167F0(s32 a0); + extern void func_800118AC(void); + + if (func_800167F0(0) & 0xFFFF) { + func_800118AC(); + } +} + INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CEF94); INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CEFF8); -INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CF02C); + +extern u16 D_800B99E4; +extern void (*D_800D133C[])(void); + +void func_800CF02C(void) { + D_800D133C[D_800B99E4](); +} + INCLUDE_RODATA("asm/md_MAIN_007/nonmatchings/md_MAIN_007", D_800CEDF8); diff --git a/src/md_MAIN_009/md_MAIN_009.c b/src/md_MAIN_009/md_MAIN_009.c index f0e4e1a6d2..8d831f22cd 100644 --- a/src/md_MAIN_009/md_MAIN_009.c +++ b/src/md_MAIN_009/md_MAIN_009.c @@ -1,6 +1,14 @@ #include "common.h" -INCLUDE_ASM("asm/md_MAIN_009/nonmatchings/md_MAIN_009", func_800CD384); + +extern void (*D_800CDD08[])(void); + +void func_800CD384(void) { + register s32 idx __asm__("$2"); + __asm__ __volatile__("" : : "r"(idx)); + D_800CDD08[idx](); +} + INCLUDE_RODATA("asm/md_MAIN_009/nonmatchings/md_MAIN_009", D_800CD348); diff --git a/src/md_SC03_053/md_SC03_053.c b/src/md_SC03_053/md_SC03_053.c index 3e63e8697b..4f6e2e5141 100644 --- a/src/md_SC03_053/md_SC03_053.c +++ b/src/md_SC03_053/md_SC03_053.c @@ -4,13 +4,28 @@ INCLUDE_ASM("asm/md_SC03_053/nonmatchings/md_SC03_053", func_801EF46C); INCLUDE_ASM("asm/md_SC03_053/nonmatchings/md_SC03_053", func_801EF49C); -INCLUDE_ASM("asm/md_SC03_053/nonmatchings/md_SC03_053", func_801EF560); + + +void func_801EF560(void *a0) { + *(short *)((char *)a0 + 0x2) = 0x10; /* NEAR-COUSIN constant from the real-TU diff (li v0,0x10) */ + } + INCLUDE_ASM("asm/md_SC03_053/nonmatchings/md_SC03_053", func_801EF56C); INCLUDE_ASM("asm/md_SC03_053/nonmatchings/md_SC03_053", func_801EF58C); -INCLUDE_ASM("asm/md_SC03_053/nonmatchings/md_SC03_053", func_801EF5E4); +extern s32 func_80178970(s32 *a0); +extern void func_80178D18(u8 *a0); +extern s32 func_801858CC(s32); +void func_801EF5E4(u8 * a0) +{ + if (func_80178970(a0)) { + func_80178D18((u8 *)a0); + func_801858CC((s32)a0); + } +} + INCLUDE_ASM("asm/md_SC03_053/nonmatchings/md_SC03_053", func_801EF624); diff --git a/src/md_SC03_054/md_SC03_054.c b/src/md_SC03_054/md_SC03_054.c index 907b27d7fd..dbc40cbfc4 100644 --- a/src/md_SC03_054/md_SC03_054.c +++ b/src/md_SC03_054/md_SC03_054.c @@ -14,4 +14,9 @@ INCLUDE_ASM("asm/md_SC03_054/nonmatchings/md_SC03_054", func_801F00C8); INCLUDE_ASM("asm/md_SC03_054/nonmatchings/md_SC03_054", func_801F0104); -INCLUDE_ASM("asm/md_SC03_054/nonmatchings/md_SC03_054", func_801F0134); + +extern s16 D_801F1480; +void func_801F0134(void) { + D_801F1480 = 1; +} + diff --git a/src/md_SC03_056/md_SC03_056.c b/src/md_SC03_056/md_SC03_056.c index c442166cca..4502e7451b 100644 --- a/src/md_SC03_056/md_SC03_056.c +++ b/src/md_SC03_056/md_SC03_056.c @@ -1,11 +1,30 @@ #include "common.h" -INCLUDE_ASM("asm/md_SC03_056/nonmatchings/md_SC03_056", func_801CBB54); + + + +extern void func_80178CBC(s32*, s32); + extern short D_801CC890; + void func_801CBB54(void * arg0) { + *(short *)((char *)arg0 + 0x2) = 10; + ((void (*)(s32, s32))func_80178CBC)((int)arg0, (int)&D_801CC890); + } + INCLUDE_ASM("asm/md_SC03_056/nonmatchings/md_SC03_056", func_801CBB80); INCLUDE_ASM("asm/md_SC03_056/nonmatchings/md_SC03_056", func_801CBBDC); -INCLUDE_ASM("asm/md_SC03_056/nonmatchings/md_SC03_056", func_801CBC08); +extern s32 func_80178970(s32 *a0); +extern void func_80178D18(u8 *a0); +extern s32 func_8018151C(s32); +void func_801CBC08(u8 * a0) +{ + if (func_80178970(a0)) { + func_80178D18((u8 *)a0); + func_8018151C((s32)a0); + } +} + INCLUDE_RODATA("asm/md_SC03_056/nonmatchings/md_SC03_056", D_801CBB50);