more progress

This commit is contained in:
Yanis002
2025-01-30 14:28:49 +01:00
parent 1ef64a5308
commit a65697ce56
5 changed files with 166 additions and 28 deletions
+5 -5
View File
@@ -1937,12 +1937,12 @@ _ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203b764Ev kind:function(arm,siz
_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_20Ev kind:function(arm,size=0x578) addr:0x203b814
_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203bd8cEt kind:function(arm,size=0x40) addr:0x203bd8c
_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_6CEPiS0_ kind:function(arm,size=0x3c) addr:0x203bdcc
func_0203be08 kind:function(arm,size=0x5c) addr:0x203be08
_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203be08Ev kind:function(arm,size=0x5c) addr:0x203be08
func_0203be64 kind:function(arm,size=0x220) addr:0x203be64
func_0203c084 kind:function(arm,size=0xb8) addr:0x203c084
func_0203c13c kind:function(arm,size=0x64) addr:0x203c13c
func_0203c1a0 kind:function(arm,size=0xbc) addr:0x203c1a0
func_0203c25c kind:function(arm,size=0x6c) addr:0x203c25c
_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203c084Ev kind:function(arm,size=0xb8) addr:0x203c084
_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203c13cEv kind:function(arm,size=0x64) addr:0x203c13c
_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203c1a0Ev kind:function(arm,size=0xbc) addr:0x203c1a0
_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub113func_0203c25cEPS_ kind:function(arm,size=0x6c) addr:0x203c25c
_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub1D0Ev kind:function(arm,size=0x48) addr:0x203c2c8
_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub1D2Ev kind:function(arm,size=0x40) addr:0x203c310
_ZN36UnkStruct_027E0C68_UnkSubClass1_Sub18vfunc_38Ev kind:function(arm,size=0x8) addr:0x203c350
+13 -7
View File
@@ -23,15 +23,21 @@ struct UnkStruct_027e103c {
void func_ov000_020cf224(unk32);
void func_ov000_020cf2a0(unk32);
unk32 func_ov000_020cf4bc(void);
unk8* func_ov000_020cef9c(void);
void func_ov000_020cfb38(void);
unk32 func_ov000_020cf488(void);
void func_ov000_020cfa24(void);
void func_ov000_020cfe40(unk32, unk32);
void func_ov005_02104028(unk32);
s8* func_ov000_020cef9c(void);
unk32 func_ov000_020cf0bc(void);
bool func_ov000_020cf42c(void);
unk32 func_ov000_020cf488(void);
unk32 func_ov000_020cf4bc(void);
void func_ov000_020cfa24(void);
void func_ov000_020cfb38(void);
void func_ov000_020cfe40(unk32, unk32);
void func_ov005_02103f8c(unk32*);
void func_ov005_02104028(unk32);
void func_ov000_020cfb58(u8*);
unk32 func_ov000_020cf8fc(unk32);
//! TODO: find out if the type is always `UnkStruct_027E0C68_UnkSubClass1_Sub1*`
void func_ov000_020cfb20(void*);
};
extern UnkStruct_027e103c *data_027e103c;
+1
View File
@@ -82,6 +82,7 @@ public:
class UnkStruct_027E0C68 : public SysObject {
public:
/* 0x00 */ u8 unk_00[2];
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ u8 unk_04;
/* 0x05 */ u8 unk_05;
@@ -119,12 +119,14 @@ public:
/* 0x08 */
};
typedef bool (*UnknownCallback)(class UnkStruct_027E0C68_UnkSubClass1_Sub1*);
class UnkSubClass1_UnkownClass2 : public UnkSubClass1_UnkownClass2_Base1 {
public:
/* 0x14 */ unk32 unk_14;
/* 0x18 */ unk32 unk_18;
/* 0x1C */ unk32 unk_1C;
/* 0x20 */ unk32 unk_20;
/* 0x1C */ UnknownCallback unk_1C;
/* 0x20 */ class UnkStruct_027E0C68_UnkSubClass1_Sub1* unk_20;
/* 0x24 */ unk32 unk_24;
/* 0x2C */
@@ -271,6 +273,8 @@ public:
/* 0x6C */ virtual void vfunc_6C(unk32* param_2, unk32* param_3);
/* 0x70 */ virtual void vfunc_70(unk32* param_2, unk32* param_3);
/* 0x74 */
unk32 func_02032fa4(void);
};
class UnkStruct_027E0C68_UnkSubClass1_Base_0_unk_114 : public SysObject {
@@ -437,7 +441,6 @@ public:
static void func_020387e0(u8* param_2);
unk32 func_02032fa4(void);
unk32 func_02032fb4(void);
unk32 func_020337d8(unk32 param_2);
u16* func_02037604(u16**);
@@ -453,8 +456,6 @@ public:
void func_020393a8(unk32 param_2);
void func_0203a188(unk32, unk32);
unk32 func_0203a3e0(void);
void func_0203be08(void);
void func_0203be64(void);
unk32 func_0203cb5c(unk8, s16);
void func_0203dc10(u8 param_2);
void func_0203dc10(u8 param_2, u8 param_3);
@@ -505,16 +506,20 @@ public:
/* 0x428 */ UnknownMsgChoiceStruct unk_428[0x20];
/* 0x528 */ unk16 unk_528[4]; // number of choices?
/* 0x55C */ unk32 unk_530;
/* 0x55C */ unk32 unk_534;
/* 0x55C */ unk32 unk_538;
/* 0x55C */ unk16 unk_534;
/* 0x55C */ unk16 unk_536;
/* 0x55C */ unk16 unk_538;
/* 0x55C */ unk16 unk_53A;
/* 0x55C */ unk32 unk_53C;
/* 0x55C */ unk32 unk_540;
/* 0x55C */ unk8 unk_544;
/* 0x55C */ unk8 unk_545;
/* 0x55C */ unk8 unk_546;
/* 0x55C */ unk8 unk_547;
/* 0x55C */ unk32 unk_548;
/* 0x55C */ unk32 unk_54C;
/* 0x55C */ unk16 unk_548;
/* 0x55C */ unk16 unk_54A;
/* 0x55C */ unk16 unk_54C;
/* 0x55C */ unk16 unk_54E;
/* 0x55C */ unk32 unk_550;
/* 0x55C */ unk32 unk_554;
/* 0x55C */ unk8 unk_558;
@@ -581,6 +586,8 @@ public:
/* 0x70 */ virtual void vfunc_70(unk32* param_2, unk32* param_3) override;
/* 0x74 */
static bool func_0203c25c(class UnkStruct_027E0C68_UnkSubClass1_Sub1* param_1);
void func_0203e060(u8 param_2, u8 param_3);
void func_02039a3c(void);
@@ -597,6 +604,11 @@ public:
unk32 func_0203b0ec(unk32 param_2);
void func_0203b764(void);
void func_0203bd8c(u16 param_2);
void func_0203be08(void);
void func_0203be64(void);
unk32 func_0203c084(void);
bool func_0203c13c(void);
unk32 func_0203c1a0(void);
unk32 func_02038cb8(unk32 param_2);
};
@@ -777,12 +789,21 @@ typedef struct UnkStruct_01ffbe34 {
} UnkStruct_01ffbe34;
extern "C" void func_01ffbe34(UnkStruct_01ffbe34 *param1);
struct UnkClass_027e1054_unk_00_unk00 {
/* 0x00 */ u8 unk_00[0x95];
/* 0x95 */ u8 unk_95;
};
struct UnkClass_027e1054_unk_00 {
/* 0x00 */ unk32 unk_04;
/* 0x00 */ UnkClass_027e1054_unk_00_unk00* unk_00;
};
class UnkClass_027e1054 {
public:
unk32 unk_00;
UnkClass_027e1054_unk_00* unk_00;
unk32 unk_04;
void func_ov003_020f4874(void);
void func_ov003_020f4760(u8, unk32);
};
extern UnkClass_027e1054 data_027e1054;
@@ -800,3 +821,9 @@ public:
void func_0203fe60(unk32);
};
extern UnkClass_ov000_027e0d04 data_027e0d04;
class UnkClass_data_027e0f7c {
public:
u8* func_ov000_0209d90c(s8, s8);
};
extern UnkClass_data_027e0f7c data_027e0f7c;
+110 -6
View File
@@ -765,7 +765,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_5C(void) {
// non-matching
ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_58(void) {
bool bVar1;
unk8* puVar2;
s8* puVar2;
int iVar3;
char *pcVar4;
@@ -799,11 +799,11 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_58(void) {
}
}
if (data_027e0618[0] == 2 && func_ov000_02079e04() && (data_027e1054.unk_04 + 0x99) != 0 &&
(data_027e077c.mUnk_0 != 0x39 || data_027e103c->func_ov000_020cf0bc())) {
data_027e1054.func_ov003_020f4874();
data_027e103c->func_ov005_02103f8c(data_02057ed4);
}
// if (data_027e0618[0] == 2 && func_ov000_02079e04() && (data_027e1054.unk_04 + 0x99) != 0 &&
// (data_027e077c.mUnk_0 != 0x39 || data_027e103c->func_ov000_020cf0bc())) {
// data_027e1054.func_ov003_020f4874();
// data_027e103c->func_ov005_02103f8c(data_02057ed4);
// }
}
this->func_02039398();
@@ -1106,6 +1106,110 @@ ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::vfunc_6C(unk32* param_2, unk32* p
*param_3 += this->unk_570;
}
ARM void UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203be08(void) {
if (data_027e0d38 != 0) {
if (data_027e103c->func_ov000_020cf42c() != 0) {
this->unk_534 = this->unk_538;
} else {
this->unk_534 = this->unk_536;
}
if (this->func_0203c084() != 0) {
this->unk_548 = this->unk_54C;
}
}
}
// non-matching
ARM unk32 UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203c084(void) {
unk32 uVar4;
bool bVar2;
bool bVar1;
bool bVar3;
uVar4 = 0;
if (this->unk_50 == 0) {
bVar2 = true;
bVar1 = true;
if ((data_02056be4[data_027e077c.mUnk_0] & 1) == 0 && data_027e103c->func_ov000_020cf8fc(0x8F) == 0) {
bVar1 = false;
}
if (!bVar1 && data_027e0618[0x101] == 0) {
if ((data_027e0d38 != NULL && data_027e0d38->mUnk_14 == 1) == 0) {
bVar2 = false;
}
}
if (bVar2) {
uVar4 = 1;
}
}
return uVar4;
}
ARM bool UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203c13c(void) {
if (this->func_02032fa4() == 0) {
data_ov000_020eec9c.func_ov000_020d77e4(6);
data_027e103c->func_ov000_020cfb20(this);
this->unk_585 = 1;
this->unk_584 = 1;
this->unk_128.unk_18 = 0x00016000;
this->unk_128.unk_1C = NULL;
this->unk_128.unk_20 = 0;
this->unk_128.unk_24 = 0;
return true;
}
return false;
}
// non-matching
ARM unk32 UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203c1a0(void) {
s8* pVar1;
u8* iVar3;
if ((data_02056be4[data_027e077c.mUnk_0] & 1) == 0) {
this->unk_584 = 1;
pVar1 = data_027e103c->func_ov000_020cef9c();
iVar3 = data_027e0f7c.func_ov000_0209d90c(pVar1[0x24F], 0);
data_027e1054.func_ov003_020f4760(iVar3[1], 0);
data_ov000_020eec9c.func_ov000_020d77e4(6);
data_027e103c->func_ov000_020cfb58(iVar3);
this->unk_128.unk_18 = 0x0000A000;
this->unk_128.unk_1C = this->func_0203c25c;
this->unk_128.unk_20 = this;
this->unk_128.unk_24 = 0;
return 0;
}
return 0;
}
ARM bool UnkStruct_027E0C68_UnkSubClass1_Sub1::func_0203c25c(UnkStruct_027E0C68_UnkSubClass1_Sub1* param_1) {
if (data_027e1054.unk_00->unk_00->unk_95 != 0) {
return false;
}
if ((data_02056be4[data_027e077c.mUnk_0] & 1) == 0) {
param_1->unk_585 = 1;
param_1->unk_128.unk_18 = 0x00016000;
param_1->unk_128.unk_1C = NULL;
param_1->unk_128.unk_20 = 0;
param_1->unk_128.unk_24 = 0;
return true;
}
return false;
}
ARM UnkStruct_027E0C68_UnkSubClass1_Sub1::~UnkStruct_027E0C68_UnkSubClass1_Sub1() {
}