diff --git a/src/code/audio/code_801A4EB0.c b/src/code/audio/code_801A4EB0.c index ee4c9f4e6..bb496ad5c 100644 --- a/src/code/audio/code_801A4EB0.c +++ b/src/code/audio/code_801A4EB0.c @@ -4,14 +4,16 @@ void func_801A5080(u16 arg0); s32 func_801A5228(u8* arg0); void func_801A53E8(u16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); - - +s32 func_801A5808(void); +OSVoiceData* func_801A5390(void); void func_801A5680(u16 arg0); void func_801A54D0(u16 arg0); u8* func_801A54C4(void); extern u8 D_801D8BE0; extern OSVoiceHandle D_801FD5B8; +extern OSVoiceData* D_801D8E40; +extern u8 D_801D8E48; void func_801A4EB0(void) { } @@ -90,4 +92,29 @@ u8 func_801A510C(void) { return D_801D8E3C; } -#pragma GLOBAL_ASM("asm/non_matchings/code/code_801A4EB0/func_801A5118.s") +void func_801A5118(void) { + if (D_801D8E3C & 2) { + D_801D8E3C &= 1; + func_801A4EB8(); + } + + if (D_801D8E3C != 0) { + if (func_801A5808() != 0) { + D_801D8E48++; + if (D_801D8E48 == 0xA) { + D_801D8E3C = 0; + D_801D8E44 = 0xFFFF; + return; + } + } else { + D_801D8E48 = 0; + } + + D_801D8E40 = func_801A5390(); + if (D_801D8E40 != 0) { + D_801D8E44 = D_801D8E40->answer[0]; + } else { + D_801D8E44 = 0xFFFF; + } + } +} diff --git a/src/code/audio/code_801A51F0.c b/src/code/audio/code_801A51F0.c index 03e186283..acff8dba6 100644 --- a/src/code/audio/code_801A51F0.c +++ b/src/code/audio/code_801A51F0.c @@ -253,9 +253,9 @@ s32 func_801A5680(u16 arg0) { return errorCode; } -void func_801A5808(void) { +s32 func_801A5808(void) { s32 errorCode = 0; - s32 pad; + s32 ret; OSMesgQueue* msgQ; switch (D_801FD5A0.unk_04) { @@ -307,7 +307,7 @@ void func_801A5808(void) { break; } - func_801A51F0(errorCode); + return func_801A51F0(errorCode); } void func_801A5A10(void) {