diff --git a/src/md_MAIN_007/md_MAIN_007.c b/src/md_MAIN_007/md_MAIN_007.c index 0e3eb60aa..6f806f93d 100644 --- a/src/md_MAIN_007/md_MAIN_007.c +++ b/src/md_MAIN_007/md_MAIN_007.c @@ -33,7 +33,14 @@ INCLUDE_RODATA("asm/md_MAIN_007/nonmatchings/md_MAIN_007", D_800CEDF8); INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CF068); -INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CF0B8); + +extern s32 D_800D1374; /* the target reads it with lw (real-TU diff), not lhu */ +extern void (*D_800D1344[])(void); + +void func_800CF0B8(void) { + D_800D1344[D_800D1374](); +} + INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CF0F4); @@ -49,7 +56,12 @@ INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CF2BC); INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CF33C); -INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CF390); +extern void func_800CF3B0(void *a0, void *a1, void *a2); + +void func_800CF390(void *a0, void *a1, void *a2) { + func_800CF3B0(a0, a1, a2); +} + INCLUDE_ASM("asm/md_MAIN_007/nonmatchings/md_MAIN_007", func_800CF3B0); diff --git a/src/md_SC03_054/md_SC03_054.c b/src/md_SC03_054/md_SC03_054.c index dbc40cbfc..25c130bee 100644 --- a/src/md_SC03_054/md_SC03_054.c +++ b/src/md_SC03_054/md_SC03_054.c @@ -8,11 +8,31 @@ INCLUDE_ASM("asm/md_SC03_054/nonmatchings/md_SC03_054", func_801EF6D8); INCLUDE_ASM("asm/md_SC03_054/nonmatchings/md_SC03_054", func_801F0048); -INCLUDE_ASM("asm/md_SC03_054/nonmatchings/md_SC03_054", func_801F0098); + + +extern s32 func_8012E544(s32 a0); + +void func_801F0098(void) { + s32 v0 = func_8012E544(0x11A); + if (v0 != 0) { + *(s16*)(v0 + 0xfc) = 1; + } +} + INCLUDE_ASM("asm/md_SC03_054/nonmatchings/md_SC03_054", func_801F00C8); -INCLUDE_ASM("asm/md_SC03_054/nonmatchings/md_SC03_054", func_801F0104); + + +extern s32 func_8012E544(s32 a0); + +void func_801F0104(void) { + s32 v0 = func_8012E544(0x11A); + if (v0 != 0) { + *(s16*)(v0 + 0xfc) = 3; + } +} + extern s16 D_801F1480; diff --git a/src/md_SC03_056/md_SC03_056.c b/src/md_SC03_056/md_SC03_056.c index 4502e7451..70b1841ad 100644 --- a/src/md_SC03_056/md_SC03_056.c +++ b/src/md_SC03_056/md_SC03_056.c @@ -13,7 +13,15 @@ extern void func_80178CBC(s32*, s32); INCLUDE_ASM("asm/md_SC03_056/nonmatchings/md_SC03_056", func_801CBB80); -INCLUDE_ASM("asm/md_SC03_056/nonmatchings/md_SC03_056", func_801CBBDC); + + +extern void func_80178CBC(s32 *a0, s32 a1); + extern short D_801CC950; + void func_801CBBDC(void *a0) { + *(short *)((char *)a0 + 0x2) = 0xE; + func_80178CBC(a0, &D_801CC950); + } + extern s32 func_80178970(s32 *a0); extern void func_80178D18(u8 *a0);