diff --git a/src/800.c b/src/800.c index d52f1bf58..c6ccf160f 100644 --- a/src/800.c +++ b/src/800.c @@ -11949,7 +11949,42 @@ u8 func_8002D4B8(void) { INCLUDE_ASM("asm/nonmatchings/800", func_8002D4C8); -INCLUDE_ASM("asm/nonmatchings/800", func_8002D59C); +extern s8 D_800A4F17; +extern u8 D_800A4F18; +extern s16 D_800A4EFC; + +void func_8002D59C(s32 arg0, s32 arg1, s32 arg2) { + u16 id; + u8 v0; + s8 *p; + + *(u8 *)&D_800A4F17 = 1; + id = arg0 & 0xFFFF; + if (id < 0x80) { + func_8002E138(id, arg1 & 0xFFFF, arg2 & 0xFFFF); + } else if (id >= 0x100) { + if (id < 0x400) { + func_8002D904(id); + } else { + func_8002DC68(id | (arg2 << 16), arg1 & 0xFFFF); + } + } + + p = &D_800A4F17; + v0 = D_800A4F18; + *p = v0; + if (v0 != 0) { + s16 cnt = D_800A4EFC; + if (cnt != 0) { + D_800A4EFC = cnt - 1; + } + func_80030F80(); + func_8002D320(); + func_80031BE0(); + D_800A4F18 = 0; + *p = 0; + } +} INCLUDE_ASM("asm/nonmatchings/800", func_8002D678); @@ -15242,7 +15277,13 @@ void func_80036EE8(void) { INCLUDE_ASM("asm/nonmatchings/800", func_80036F18); -INCLUDE_ASM("asm/nonmatchings/800", func_80036F98); +extern s32 D_80078F10; +extern s32 D_8006AEE8; + +void func_80036F98(void) { + D_80078F10 = 0; + D_8006AEE8 = 0; +} INCLUDE_ASM("asm/nonmatchings/800", func_80036FB0); diff --git a/src/800c3.c b/src/800c3.c index ad289cba4..8212b7642 100644 --- a/src/800c3.c +++ b/src/800c3.c @@ -118,7 +118,15 @@ INCLUDE_ASM("asm/nonmatchings/800c3", func_8005D0F8); INCLUDE_ASM("asm/nonmatchings/800c3", func_8005D118); -INCLUDE_ASM("asm/nonmatchings/800c3", func_8005D138); +extern s32 D_800729A8; +extern s32 D_80072990; + +s32 func_8005D138(s32 arg0) { + if (D_800729A8 != 0) { + return *(u8 *)(D_80072990 + (arg0 >> 4) * 0xF0 + 0xE8) == 8; + } + return 0; +} extern void* (*D_80072970)(void);