mirror of
https://github.com/zeldaret/ph
synced 2026-05-31 09:21:38 -04:00
func_0203690c: 90%
This commit is contained in:
@@ -1804,14 +1804,14 @@ _ZN18UnkStruct_027E0C6813func_02036808Ev kind:function(arm,size=0x1c) addr:0x203
|
||||
_ZN18UnkStruct_027E0C6813func_02036824Ev kind:function(arm,size=0x2c) addr:0x2036824
|
||||
_ZN18UnkStruct_027E0C6813func_02036850Ev kind:function(arm,size=0x38) addr:0x2036850
|
||||
_ZN18UnkStruct_027E0C6813func_02036888EP31UnkStruct_027E0C68_UnkSubClass2 kind:function(arm,size=0x6c) addr:0x2036888
|
||||
_ZN18UnkStruct_027E0C6813func_020368f4Ei kind:function(arm,size=0x18) addr:0x20368f4
|
||||
func_0203690c kind:function(arm,size=0x2b0) addr:0x203690c
|
||||
_ZN18UnkStruct_027E0C6813func_020368f4EP31UnkStruct_027E0C68_UnkSubClass3 kind:function(arm,size=0x18) addr:0x20368f4
|
||||
_ZN18UnkStruct_027E0C6813func_0203690cEiii kind:function(arm,size=0x2b0) addr:0x203690c
|
||||
func_02036bbc kind:function(arm,size=0x94) addr:0x2036bbc
|
||||
_ZN18UnkStruct_027E0C6813func_02036c50Ei kind:function(arm,size=0x54) addr:0x2036c50
|
||||
_ZN18UnkStruct_027E0C6813func_02036ca4Ei kind:function(arm,size=0x40) addr:0x2036ca4
|
||||
_ZN18UnkStruct_027E0C6813func_02036ce4EP31UnkStruct_027E0C68_UnkSubClass2i kind:function(arm,size=0x4c) addr:0x2036ce4
|
||||
_ZN18UnkStruct_027E0C6813func_02036d30EPj kind:function(arm,size=0x1c) addr:0x2036d30
|
||||
_ZN18UnkStruct_027E0C6813func_02036d4cEPj kind:function(arm,size=0x20) addr:0x2036d4c
|
||||
_ZN18UnkStruct_027E0C6813func_02036d30EP31UnkStruct_027E0C68_UnkSubClass3 kind:function(arm,size=0x1c) addr:0x2036d30
|
||||
_ZN18UnkStruct_027E0C6813func_02036d4cEP31UnkStruct_027E0C68_UnkSubClass3 kind:function(arm,size=0x20) addr:0x2036d4c
|
||||
_ZN18UnkStruct_027E0C6813func_02036d6cEv kind:function(arm,size=0x3c) addr:0x2036d6c
|
||||
_ZN18UnkStruct_027E0C6813func_02036da8EjPi kind:function(arm,size=0x134) addr:0x2036da8
|
||||
_ZN18UnkStruct_027E0C6813func_02036edcEjh kind:function(arm,size=0x8c) addr:0x2036edc
|
||||
|
||||
@@ -1804,14 +1804,14 @@ _ZN18UnkStruct_027E0C6813func_02036808Ev kind:function(arm,size=0x1c) addr:0x203
|
||||
_ZN18UnkStruct_027E0C6813func_02036824Ev kind:function(arm,size=0x2c) addr:0x20367e0
|
||||
_ZN18UnkStruct_027E0C6813func_02036850Ev kind:function(arm,size=0x38) addr:0x203680c
|
||||
_ZN18UnkStruct_027E0C6813func_02036888EP31UnkStruct_027E0C68_UnkSubClass2 kind:function(arm,size=0x6c) addr:0x2036844
|
||||
_ZN18UnkStruct_027E0C6813func_020368f4Ei kind:function(arm,size=0x18) addr:0x20368b0
|
||||
func_0203690c kind:function(arm,size=0x2b0) addr:0x20368c8
|
||||
_ZN18UnkStruct_027E0C6813func_020368f4EP31UnkStruct_027E0C68_UnkSubClass3 kind:function(arm,size=0x18) addr:0x20368b0
|
||||
_ZN18UnkStruct_027E0C6813func_0203690cEiii kind:function(arm,size=0x2b0) addr:0x20368c8
|
||||
func_02036bbc kind:function(arm,size=0x94) addr:0x2036b78
|
||||
_ZN18UnkStruct_027E0C6813func_02036c50Ei kind:function(arm,size=0x54) addr:0x2036c0c
|
||||
_ZN18UnkStruct_027E0C6813func_02036ca4Ei kind:function(arm,size=0x40) addr:0x2036c60
|
||||
_ZN18UnkStruct_027E0C6813func_02036ce4EP31UnkStruct_027E0C68_UnkSubClass2i kind:function(arm,size=0x4c) addr:0x2036ca0
|
||||
_ZN18UnkStruct_027E0C6813func_02036d30EPj kind:function(arm,size=0x1c) addr:0x2036cec
|
||||
_ZN18UnkStruct_027E0C6813func_02036d4cEPj kind:function(arm,size=0x20) addr:0x2036d08
|
||||
_ZN18UnkStruct_027E0C6813func_02036d30EP31UnkStruct_027E0C68_UnkSubClass3 kind:function(arm,size=0x1c) addr:0x2036cec
|
||||
_ZN18UnkStruct_027E0C6813func_02036d4cEP31UnkStruct_027E0C68_UnkSubClass3 kind:function(arm,size=0x20) addr:0x2036d08
|
||||
_ZN18UnkStruct_027E0C6813func_02036d6cEv kind:function(arm,size=0x3c) addr:0x2036d28
|
||||
_ZN18UnkStruct_027E0C6813func_02036da8EjPi kind:function(arm,size=0x134) addr:0x2036d64
|
||||
_ZN18UnkStruct_027E0C6813func_02036edcEjh kind:function(arm,size=0x8c) addr:0x2036e98
|
||||
|
||||
@@ -31,7 +31,9 @@ public:
|
||||
/* 0x3C */ unk32 unk_3C;
|
||||
/* 0x40 */ unk32 unk_40;
|
||||
/* 0x44 */ unk32 unk_44;
|
||||
/* 0x48 */ unk32 unk_48;
|
||||
/* 0x48 */ u8 unk_48;
|
||||
/* 0x49 */ u8 unk_49;
|
||||
/* 0x4A */ unk16 unk_4A;
|
||||
/* 0x4C */ unk32 unk_4C;
|
||||
/* 0x50 */ unk32 unk_50;
|
||||
/* 0x54 */ unk32 unk_54;
|
||||
@@ -51,7 +53,7 @@ public:
|
||||
/* 0x20 */ virtual UNK_TYPE vfunc_20(void) override;
|
||||
/* 0x24 */ virtual UNK_TYPE vfunc_24(void) override;
|
||||
/* 0x28 */ virtual void vfunc_28(void) override;
|
||||
/* 0x2C */ virtual UNK_TYPE vfunc_2C(void) override;
|
||||
/* 0x2C */ virtual void vfunc_2C(void) override;
|
||||
/* 0x30 */ virtual UNK_TYPE vfunc_30(void) override;
|
||||
/* 0x34 */ virtual UNK_TYPE vfunc_34(void) override;
|
||||
/* 0x38 */ virtual UNK_TYPE vfunc_38(void) override;
|
||||
@@ -107,6 +109,32 @@ public:
|
||||
/* 0x34 */ virtual UNK_TYPE vfunc_34(void) override;
|
||||
};
|
||||
|
||||
class UnkStruct_027E0C68_UnkSubClass3 : public SysObject {
|
||||
public:
|
||||
/* 0x00 (vtable) */
|
||||
/* 0x04 */ unk32 unk_04;
|
||||
/* 0x08 */ unk32 unk_08;
|
||||
/* 0x0C */ unk32 unk_0C;
|
||||
/* 0x10 */ unk32 unk_10;
|
||||
/* 0x14 */ unk32 unk_14;
|
||||
/* 0x18 */ u32 unk_18;
|
||||
|
||||
UnkStruct_027E0C68_UnkSubClass3();
|
||||
/* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass3() override;
|
||||
/* 0x08 */ virtual UNK_TYPE vfunc_08(void) override;
|
||||
/* 0x0C */ virtual UNK_TYPE vfunc_0C(void) override;
|
||||
/* 0x10 */ virtual void vfunc_10(void) override;
|
||||
/* 0x14 */ virtual UNK_TYPE vfunc_14(void) override;
|
||||
/* 0x1C */ virtual UNK_TYPE vfunc_1C(void) override;
|
||||
/* 0x20 */ virtual UNK_TYPE vfunc_20(void) override;
|
||||
/* 0x24 */ virtual UNK_TYPE vfunc_24(void) override;
|
||||
/* 0x28 */ virtual UNK_TYPE vfunc_28(void) override;
|
||||
/* 0x2C */ virtual UNK_TYPE vfunc_2C(void) override;
|
||||
/* 0x30 */ virtual UNK_TYPE vfunc_30(void) override;
|
||||
/* 0x34 */ virtual UNK_TYPE vfunc_34(void) override;
|
||||
/* 0x38 */ virtual UNK_TYPE vfunc_38(void) override;
|
||||
};
|
||||
|
||||
class UnkStruct_027E0C68 : public SysObject {
|
||||
public:
|
||||
/* 0x00 */ unk16 unk_00;
|
||||
@@ -119,12 +147,13 @@ public:
|
||||
/* 0x0C */ u8 unk_0C;
|
||||
/* 0x0C */ u8 unk_0D;
|
||||
/* 0x0C */ unk16 unk_0E;
|
||||
/* 0x10 */ unk32 unk_10;
|
||||
/* 0x10 */ unk16 unk_10;
|
||||
/* 0x10 */ unk16 unk_12;
|
||||
/* 0x14 */ BMGGroups* pGroups;
|
||||
/* 0x18 */ UnkStruct_027E0C68_UnkSubClass2* unk_18[2];
|
||||
/* 0x20 */ u32* unk_20;
|
||||
/* 0x24 */ unk32 unk_24;
|
||||
/* 0x20 */ UnkStruct_027E0C68_UnkSubClass3* unk_20[2]; // is it actually UnkStruct_027E0C68_UnkSubClass2?
|
||||
/* 0x28 */ UnkStruct_027E0C68_UnkSubClass1* unk_28[6];
|
||||
/* 0x40 */ UnkStruct_027E0C68_UnkSubClass1* unk_40[2]; // is array size 6?
|
||||
|
||||
void func_02036490(unk32 param_2, unk32 param_3, unk32 param_4);
|
||||
void func_0203665c(void);
|
||||
@@ -140,12 +169,14 @@ public:
|
||||
bool func_02036824(void);
|
||||
bool func_02036850(void);
|
||||
void func_02036888(UnkStruct_027E0C68_UnkSubClass2* param_2);
|
||||
bool func_020368f4(unk32 param_2);
|
||||
bool func_020368f4(UnkStruct_027E0C68_UnkSubClass3* param_2);
|
||||
void func_0203690c(unk32 param_2, unk32 param_3, unk32 param_4);
|
||||
void func_02036bbc(UNK_TYPE);
|
||||
void func_02036c50(unk32 param_2);
|
||||
void func_02036ca4(unk32 param_2);
|
||||
s32 func_02036ce4(UnkStruct_027E0C68_UnkSubClass2* param_2, unk32 param_3);
|
||||
unk32 func_02036d30(u32* param_2);
|
||||
unk32 func_02036d4c(u32* param_2);
|
||||
bool func_02036d30(UnkStruct_027E0C68_UnkSubClass3* param_2);
|
||||
bool func_02036d4c(UnkStruct_027E0C68_UnkSubClass3* param_2);
|
||||
void func_02036d6c(void);
|
||||
UnkStruct_027E0C68_UnkSubClass1* func_02036da8(u32 param_2, s32* param_3);
|
||||
void func_02036edc(u32 param_2, u8 param_3);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "Message/MessageManager.hpp"
|
||||
#include "Actor/ActorManager.hpp"
|
||||
|
||||
extern unk32 func_ov000_020d7f18(u32*, unk32);
|
||||
extern unk32 func_ov000_020d77e4(u32*, unk32);
|
||||
@@ -22,6 +23,13 @@ extern u32** data_027e0ce0[];
|
||||
extern u32 data_02056924[];
|
||||
extern u32* data_02068e6c;
|
||||
extern u32* data_02068e8c;
|
||||
extern u16 data_02056918[];
|
||||
extern ActorTypeId data_0205691c[];
|
||||
extern u8 data_027e0c54;
|
||||
|
||||
// this should be `data_027e0ffc->func_ov000_020cec60(u16, Vec3p*, s32);`
|
||||
extern u32* data_027e0ffc;
|
||||
extern void func_ov000_020cec60(u32*, u16, Vec3p*, Actor*, unk32);
|
||||
|
||||
ARM void func_0203643c(int *param_1, UnkStruct_027E0C68* param_2, u32 param_3) {
|
||||
BMGGroups *pBVar2 = param_2->pGroups;
|
||||
@@ -239,7 +247,7 @@ ARM bool UnkStruct_027E0C68::func_02036850(void) {
|
||||
}
|
||||
|
||||
ARM void UnkStruct_027E0C68::func_02036888(UnkStruct_027E0C68_UnkSubClass2* param_2) {
|
||||
if ((param_2->unk_18 & 0xFFFF0000) != 0x1000000) {
|
||||
if ((param_2->unk_18 & ~0xFFFF) != (0x100 << 0x10)) {
|
||||
UnkStruct_027E0C68_UnkSubClass1* iVar1 = this->func_020366c4();
|
||||
|
||||
//! TODO: fake?
|
||||
@@ -251,15 +259,110 @@ ARM void UnkStruct_027E0C68::func_02036888(UnkStruct_027E0C68_UnkSubClass2* para
|
||||
}
|
||||
}
|
||||
|
||||
ARM bool UnkStruct_027E0C68::func_020368f4(unk32 param_2) {
|
||||
if (this->unk_24 != 0) {
|
||||
ARM bool UnkStruct_027E0C68::func_020368f4(UnkStruct_027E0C68_UnkSubClass3* param_2) {
|
||||
if (this->unk_20[1] != NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this->unk_24 = param_2;
|
||||
this->unk_20[1] = param_2;
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void UnkStruct_027E0C68::func_0203690c(unk32 param_2, unk32 param_3, unk32 param_4) {
|
||||
UnkStruct_027E0C68_UnkSubClass1* unk_28_0;
|
||||
UnkStruct_027E0C68_UnkSubClass1* unk_28_2;
|
||||
UnkStruct_027E0C68_UnkSubClass1 *pSVar4;
|
||||
ActorRef actorRef;
|
||||
Actor* pActor;
|
||||
bool iVar1;
|
||||
bool iVar2;
|
||||
s32 i;
|
||||
|
||||
if (!this->func_020367dc(param_2)) {
|
||||
return;
|
||||
}
|
||||
|
||||
this->unk_40[1] = this->unk_40[0];
|
||||
|
||||
unk_28_0 = this->unk_28[0];
|
||||
|
||||
if (unk_28_0 != NULL && unk_28_0->unk_15C > 0) {
|
||||
unk_28_2 = this->unk_28[2];
|
||||
|
||||
if (unk_28_2 != NULL && unk_28_2->unk_15C > 0) {
|
||||
this->unk_40[0] = this->func_020366c4();
|
||||
} else {
|
||||
this->unk_40[0] = unk_28_2;
|
||||
}
|
||||
} else {
|
||||
unk_28_2 = this->unk_28[2];
|
||||
|
||||
if (unk_28_2 != NULL && unk_28_2->unk_15C > 0) {
|
||||
this->unk_40[0] = unk_28_0;
|
||||
} else {
|
||||
this->unk_40[0] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
iVar1 = this->func_02036824();
|
||||
iVar2 = this->func_02036850();
|
||||
|
||||
if (this->unk_20[1] != NULL && ((this->unk_20[1]->unk_18 & ~0xFFFF) != (0x100 << 0x10))) {
|
||||
this->unk_20[1]->vfunc_10();
|
||||
this->unk_20[1] = NULL;
|
||||
}
|
||||
|
||||
if (iVar1) {
|
||||
this->func_02036888(this->unk_18[0]);
|
||||
} else if (iVar2) {
|
||||
this->func_02036888(this->unk_18[1]);
|
||||
}
|
||||
|
||||
for (i = 0; i < ARRAY_LEN(this->unk_28); i++) {
|
||||
if (this->unk_28[i] != NULL) {
|
||||
this->unk_28[i]->vfunc_2C();
|
||||
}
|
||||
}
|
||||
|
||||
this->unk_04 = 0;
|
||||
|
||||
if (this->unk_20[0] != NULL) {
|
||||
if ((this->unk_20[0]->unk_18 & ~0xFFFF) == (0x100 << 0x10)) {
|
||||
this->unk_20[0] = NULL;
|
||||
} else {
|
||||
this->unk_04 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ((this->unk_18[0] != NULL) && ((this->unk_18[0]->unk_18 & ~0xFFFF) != (0x100 << 0x10))) {
|
||||
this->unk_04 = 1;
|
||||
|
||||
//! TODO: fake?
|
||||
pSVar4 = this->func_02037178((UnkStruct_027E0C68_UnkSubClass1*)this->unk_18[0]);
|
||||
|
||||
if (data_027e0c54 != 0 && pSVar4 != NULL && pSVar4->unk_48 != ((data_02056be4[data_027e077c.mUnk_0] & 1) != 0)) {
|
||||
this->unk_04 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->unk_08 != NULL && this->unk_08->unk_15C > 0) {
|
||||
this->unk_04 = 1;
|
||||
} else {
|
||||
this->unk_08 = NULL;
|
||||
}
|
||||
|
||||
this->func_02036bbc();
|
||||
|
||||
if (this->unk_10 != 0) {
|
||||
ActorManager::FindActorByType(&actorRef, gActorManager, data_0205691c[this->unk_10]);
|
||||
pActor = gActorManager->GetActor(&actorRef);
|
||||
|
||||
if (pActor != NULL) {
|
||||
func_ov000_020cec60(data_027e0ffc, data_02056918[this->unk_10], &pActor->mPos, pActor, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ARM void UnkStruct_027E0C68::func_02036c50(unk32 param_2) {
|
||||
s32 i;
|
||||
|
||||
@@ -296,22 +399,22 @@ ARM s32 UnkStruct_027E0C68::func_02036ce4(UnkStruct_027E0C68_UnkSubClass2* param
|
||||
return 0;
|
||||
}
|
||||
|
||||
ARM unk32 UnkStruct_027E0C68::func_02036d30(u32* param_2) {
|
||||
if (this->unk_20 != NULL && this->unk_20 != param_2) {
|
||||
return 0;
|
||||
ARM bool UnkStruct_027E0C68::func_02036d30(UnkStruct_027E0C68_UnkSubClass3* param_2) {
|
||||
if (this->unk_20[0] != NULL && this->unk_20[0] != param_2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this->unk_20 = param_2;
|
||||
return 1;
|
||||
this->unk_20[0] = param_2;
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM unk32 UnkStruct_027E0C68::func_02036d4c(u32* param_2) {
|
||||
if (this->unk_20 == param_2) {
|
||||
this->unk_20 = NULL;
|
||||
return 1;
|
||||
ARM bool UnkStruct_027E0C68::func_02036d4c(UnkStruct_027E0C68_UnkSubClass3* param_2) {
|
||||
if (this->unk_20[0] == param_2) {
|
||||
this->unk_20[0] = NULL;
|
||||
return true;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
|
||||
Reference in New Issue
Block a user