diff options
Diffstat (limited to 'src/Main/Message/MessageManager.cpp')
| -rw-r--r-- | src/Main/Message/MessageManager.cpp | 96 |
1 files changed, 88 insertions, 8 deletions
diff --git a/src/Main/Message/MessageManager.cpp b/src/Main/Message/MessageManager.cpp index 7413e15c..c18ce30f 100644 --- a/src/Main/Message/MessageManager.cpp +++ b/src/Main/Message/MessageManager.cpp @@ -1,11 +1,12 @@ #include "Message/MessageManager.hpp" -s32 func_02036824(void); -unk32 func_ov000_020d7f18(u32*, unk32); -unk32 func_ov000_020d77e4(u32*, unk32); -unk32 func_02037628(u8*); -THUMB unk32 func_0202ab48(void); -ARM void func_02038b40(Struct_027E0C68_unk_28*); +extern s32 func_02036824(void); +extern unk32 func_ov000_020d7f18(u32*, unk32); +extern unk32 func_ov000_020d77e4(u32*, unk32); +extern unk32 func_02037628(u8*); +extern THUMB unk32 func_0202ab48(void); +extern ARM void func_02038b40(Struct_027E0C68_unk_28*); +extern ARM unk32 func_0203de14(Struct_027E0C68_unk_28*, unk32); // see Actor.cpp struct UnkStruct2 { @@ -17,19 +18,43 @@ extern UnkStruct2 data_027e077c; extern u32 data_ov000_020eec9c[]; extern u8 data_02056be4[]; +ARM void UnkStruct_027E0C68::func_02036c50(unk32 param_2) { + s32 i; + + for (i = 0; i < ARRAY_LEN(this->unk_28); i++) { + if (this->unk_28[i] != NULL && func_0203de14(this->unk_28[i], param_2) != 0) { + this->unk_28[i]->unk_00->unk_28(this->unk_28[i]); + } + } +} + +ARM void UnkStruct_027E0C68::func_02036ca4(unk32 param_2) { + s32 i; + + for (i = 0; i < ARRAY_LEN(this->unk_28); i++) { + Struct_027E0C68_unk_28* pSVar1 = this->unk_28[i]; + + if (pSVar1 != NULL) { + pSVar1->unk_00->unk_3C(pSVar1, param_2); + } + } +} + +// non-matching ARM s32 UnkStruct_027E0C68::func_02036ce4(Struct_027E0C68_unk_18* param_2, unk32 param_3) { if (param_3 == 0) { return 0; } - if (func_020373ec(this->pGroups,param_3) != -1) { - param_2->unk_00->unk_08(param_2); + if (func_020373ec(this->pGroups, param_3) != -1) { + param_2->unk_00->unk_08(); return 1; } return 0; } +// non-matching ARM unk32 UnkStruct_027E0C68::func_02036d30(unk32 param_2) { if (this->unk_20 == 0 || this->unk_20 == param_2) { this->unk_20 = param_2; @@ -48,6 +73,7 @@ ARM unk32 UnkStruct_027E0C68::func_02036d4c(unk32 param_2) { return 0; } +// non-matching ARM void UnkStruct_027E0C68::func_02036d6c(void) { s32 i; @@ -58,6 +84,59 @@ ARM void UnkStruct_027E0C68::func_02036d6c(void) { } } +// non-matching +ARM Struct_027E0C68_unk_28* UnkStruct_027E0C68::func_02036da8(u32 param_2, s32* param_3) { + EntryINF1 *pEVar1; + EntryINF1 *pEVar2; + u8* puVar3; + Struct_027E0C68_unk_28 *pSVar4; + BMGGroups *pBVar5; + bool bVar6; + u8 iStack_38; + int iStack_34; + int iStack_30; + u8 uStack_2c; + u8 uStack_23; + + pEVar1 = func_02037258(&this->pGroups->entries[param_2 >> 0x10], param_2 & 0xFFFF); + + if (pEVar1 == NULL) { + return NULL; + } + + if ((data_02056be4[data_027e077c.mUnk_0] & 1) == 0) { + pSVar4 = this->unk_28[4]; + func_02037628(&iStack_38); + bVar6 = (data_02056be4[data_027e077c.mUnk_0] & 1) == 0; + puVar3 = data_02056be4; + + if (bVar6) { + puVar3[0] = 1; + } + + uStack_23 = puVar3[0]; + + if (!bVar6) { + uStack_23 = 0; + } + + uStack_2c = 1; + iStack_38 = *param_3; + iStack_34 = param_3[1]; + iStack_30 = param_3[2]; + pBVar5 = this->pGroups; + pEVar2 = func_02037258(&pBVar5->entries[param_2 >> 0x10], param_2 & 0xFFFF); + + pSVar4->unk_00->unk_50(pSVar4, pEVar1, (int)&((pBVar5->entries[param_2 >> 0x10].pDAT1)->base).tag + (pEVar2->offset & 0xfffffffe), &iStack_38); + + func_ov000_020d77e4(data_ov000_020eec9c, 0x1C); + return pSVar4; + } + + return NULL; +} + +// non-matching ARM void UnkStruct_027E0C68::func_02036edc(u32 param_2, u8 param_3) { Struct_027E0C68_unk_28 *pSVar1; u8 auStack_28[24]; @@ -81,6 +160,7 @@ ARM void UnkStruct_027E0C68::func_02036edc(u32 param_2, u8 param_3) { } } +// non-matching ARM Struct_027E0C68_unk_28* UnkStruct_027E0C68::func_02036f68(u32 param_2, u8* param_3) { EntryINF1 *pEVar1; Struct_027E0C68_unk_28 *pSVar2; |
