more vfuncs progress

This commit is contained in:
Yanis002
2025-01-25 21:25:14 +01:00
parent 45f07884d2
commit acc3200e65
4 changed files with 305 additions and 51 deletions
+1 -1
View File
@@ -1944,7 +1944,7 @@ 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
_ZN31UnkStruct_027E0C68_UnkSubClass1D0Ev kind:function(arm,size=0x48) addr:0x203c2c8
func_0203c310 kind:function(arm,size=0x40) addr:0x203c310
_ZN31UnkStruct_027E0C68_UnkSubClass1D1Ev kind:function(arm,size=0x40) addr:0x203c310
func_0203c350 kind:function(arm,size=0x8) addr:0x203c350
func_0203c358 kind:function(thumb,size=0x44) addr:0x203c358
func_0203c39c kind:function(thumb,size=0x78) addr:0x203c39c
+1 -1
View File
@@ -1944,7 +1944,7 @@ func_0203c13c kind:function(arm,size=0x64) addr:0x203c0f8
func_0203c1a0 kind:function(arm,size=0xbc) addr:0x203c15c
func_0203c25c kind:function(arm,size=0x6c) addr:0x203c218
_ZN31UnkStruct_027E0C68_UnkSubClass1D0Ev kind:function(arm,size=0x48) addr:0x203c284
func_0203c310 kind:function(arm,size=0x40) addr:0x203c2cc
_ZN31UnkStruct_027E0C68_UnkSubClass1D1Ev kind:function(arm,size=0x40) addr:0x203c2cc
func_0203c350 kind:function(arm,size=0x8) addr:0x203c30c
func_0203c358 kind:function(thumb,size=0x44) addr:0x203c314
func_0203c39c kind:function(thumb,size=0x78) addr:0x203c358
@@ -6,6 +6,65 @@
// temp
#define UNK_TYPE void
typedef struct UnkStruct_0203b264 {
/* 0 */ u8 mUnk_0[0x4];
/* 4 */ u16 *mUnk_4;
/* 8 */
} UnkStruct_0203b264;
typedef struct UnkSubClass1_unk_154 {
u8 unk_00;
u8 unk_01;
u8 unk_02;
u8 unk_03;
u8 unk_04;
u8 unk_05;
u8 unk_06;
} UnkSubClass1_unk_154;
typedef u32 (*UnkCallback1)(void);
typedef struct UnkStruct1 {
/* 0x00 */ UnkCallback1 unk_00;
/* 0x04 */ UnkCallback1 unk_04;
} UnkStruct1; // size = 0x8
class UnkSubClass1_unk_168 {
public:
/* 0x00 */ UnkStruct1* unk_00;
/* 0x04 */
void func_020350b4(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5, unk32 param_6);
void func_020351b8(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5);
void func_020352d8(void);
void func_020350ac(void);
};
class UnkSubClass1_unk_410 {
public:
/* 0x00 */ unk32 unk_00;
/* 0x04 */
void func_0203ec34(void);
};
class UnkSubClass1_unk_424 {
public:
/* 0x00 */ unk32 unk_00;
/* 0x04 */
void func_0203ee80(unk32);
void func_0203ef78(unk16, u16, unk8);
};
class UnkSubClass1_unk_124 {
public:
/* 0x00 */ unk32 unk_00;
/* 0x04 */
void func_0203f020(unk32, unk32);
};
class UnkStruct_027E0C68_UnkSubClass1 : public SysObject {
public:
/* 0x000 (vtable) */
@@ -31,55 +90,112 @@ public:
/* 0x04A */ unk16 unk_4A;
/* 0x04C */ unk32 unk_4C;
/* 0x050 */ u8 unk_50;
/* 0x050 */ unk8 unk_51;
/* 0x050 */ unk16 unk_52;
/* 0x051 */ unk8 unk_51;
/* 0x052 */ unk16 unk_52;
/* 0x054 */ unk32 unk_54;
/* 0x058 */ unk32 unk_58;
/* 0x05C */ s16 unk_5C;
/* 0x05E */ s16 unk_5E;
/* 0x060 */ unk32 unk_60[0x2E];
/* 0x118 */ s32 unk_118;
/* 0x11C */ unk32 unk_11C[0xD];
/* 0x11C */ unk8 unk_11C;
/* 0x11D */ unk8 unk_11D;
/* 0x11E */ u8 unk_11E;
/* 0x11F */ unk8 unk_11F;
/* 0x120 */ u8 unk_120;
/* 0x120 */ u8 unk_121;
/* 0x122 */ u8 unk_122;
/* 0x122 */ u8 unk_123;
/* 0x124 */ UnkSubClass1_unk_124* unk_124;
/* 0x128 */ unk32 unk_128;
/* 0x12C */ unk32 unk_12C;
/* 0x130 */ unk16 unk_130;
/* 0x132 */ unk16 unk_132;
/* 0x134 */ unk32 unk_134;
/* 0x138 */ unk32 unk_138;
/* 0x13C */ unk32 unk_13C;
/* 0x140 */ unk32 unk_140;
/* 0x144 */ unk32 unk_144;
/* 0x148 */ unk32 unk_148;
/* 0x14C */ unk32 unk_14C;
/* 0x150 */ unk8 unk_150;
/* 0x151 */ unk8 unk_151;
/* 0x152 */ unk8 unk_152;
/* 0x153 */ unk8 unk_153;
/* 0x154 */ unk32 unk_154;
/* 0x154 */ UnkSubClass1_unk_154* unk_154;
/* 0x158 */ unk16 unk_158;
/* 0x15A */ unk16 unk_15A;
/* 0x15C */ s16 unk_15C;
/* 0x15C */ s16 unk_15E;
/* 0x15E */ s8 unk_15E;
/* 0x15F */ s8 unk_15F;
/* 0x160 */ unk32 unk_160;
/* 0x164 */ UnkStruct_027E0C68_UnkSubClass1* unk_164;
/* 0x168 */ u32 unk_168;
/* 0x16C */ u8 unk_16C[0x84];
/* 0x1F0 */ u32 unk_1F0;
/* 0x168 */ UnkSubClass1_unk_168 unk_168;
/* 0x16C */ u32* unk_16C;
/* 0x16C */ u32* unk_170;
/* 0x16C */ u8 unk_174[0x58];
/* 0x1CC */ u32 unk_1CC;
/* 0x1D0 */ unk32 unk_1D0;
/* 0x1D4 */ unk32 unk_1D4;
/* 0x1D8 */ unk32 unk_1D8;
/* 0x1DC */ u32* unk_1DC;
/* 0x1E0 */ u32* unk_1E0;
/* 0x1E4 */ u32 unk_1E4;
/* 0x1E8 */ unk32 unk_1E8;
/* 0x1EC */ unk32 unk_1EC;
/* 0x1F0 */ UnkSubClass1_unk_168 unk_1F0;
/* 0x1F4 */ u8 unk_1F4[0x84];
/* 0x278 */ u32 unk_278;
/* 0x278 */ UnkSubClass1_unk_168 unk_278;
/* 0x27C */ u8 unk_27C[0x84];
/* 0x300 */ u32 unk_300;
/* 0x300 */ UnkSubClass1_unk_168 unk_300;
/* 0x304 */ u8 unk_304[0x84];
/* 0x388 */ u32 unk_388;
/* 0x388 */ UnkSubClass1_unk_168 unk_388;
/* 0x38C */ u8 unk_38C[0x84];
/* 0x410 */ u32 unk_410;
/* 0x410 */ UnkSubClass1_unk_410 unk_410;
/* 0x414 */ unk32 unk_414;
/* 0x418 */ UnkStruct_027E0C68_UnkSubClass1* unk_418;
/* 0x41C */ unk32 unk_41C;
/* 0x420 */ unk32 unk_420;
/* 0x424 */ UnkSubClass1_unk_424 unk_424;
/* 0x428 */ u16* unk_428;
/* 0x42C */ unk32 unk_42C;
/* 0x430 */ unk32 unk_430;
/* 0x434 */ u8 unk_434[0xF4];
/* 0x528 */ s16* unk_528;
/* 0x52C */ u8 unk_52C[0x3C];
/* 0x568 */ unk32 unk_568;
/* 0x56C */ unk16 unk_56C;
/* 0x56E */ unk16 unk_56E;
/* 0x570 */ unk16 unk_570;
/* 0x572 */ unk16 unk_572;
/* 0x574 */ s16 unk_574;
/* 0x576 */ u8 unk_576;
/* 0x577 */ u8 unk_577;
/* 0x578 */ u8 unk_578;
/* 0x579 */ u8 unk_579;
/* 0x57A */ u8 unk_57A;
/* 0x57B */ u8 unk_57B;
/* 0x57C */ u8 unk_57C;
/* 0x57D */ u8 unk_57D;
/* 0x57E */ u8 unk_57E;
/* 0x57F */ u8 unk_57F;
/* 0x580 */ u8 unk_580;
UnkStruct_027E0C68_UnkSubClass1();
/* 0x00 */ virtual ~UnkStruct_027E0C68_UnkSubClass1() override;
/* 0x08 */ virtual UNK_TYPE vfunc_08(void) override; // func_0203c2c8 (dtor?)
/* 0x0C */ virtual void func_02039228(unk32* param_2, unk32* param_3) override;
/* 0x10 */ virtual void func_02039578(unk8 param_2, unk8 param_3, unk8 param_4, unk32 param_5) override;
/* 0x14 */ virtual UNK_TYPE func_0203e060(void) override;
/* 0x18 */ virtual UNK_TYPE func_0203dcb4(void) override;
/* 0x1C */ virtual UNK_TYPE func_0203b264(void) override;
/* 0x20 */ virtual UNK_TYPE func_0203b310(void) override;
/* 0x10 */ virtual void func_02039578(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) override;
/* 0x14 */ virtual void func_0203e060(u8 param_2, u8 param_3) override;
/* 0x18 */ virtual bool func_0203dcb4(unk32 param_2, unk32 param_3) override;
/* 0x1C */ virtual unk32 func_0203b264(UnkStruct_0203b264* param_2, unk32 param_3, unk32 param_4) override;
/* 0x20 */ virtual unk32 func_0203b310(unk8 param_2, UnkStruct_0203b264* param_3, unk8 param_4, unk32 param_5) override;
/* 0x24 */ virtual UNK_TYPE func_0203b814(void) override;
/* 0x28 */ virtual void func_0203e0c8(void) override;
/* 0x28 */ virtual bool func_0203e0c8(void) override;
/* 0x2C */ virtual void func_02039a5c(void) override;
/* 0x30 */ virtual void func_02038ed0(void) override;
/* 0x34 */ virtual UNK_TYPE func_02038c34(void) override;
/* 0x38 */ virtual UNK_TYPE func_0203c350(void) override;
/* 0x38 */ virtual bool func_0203c350(void) override;
/* 0x3C */ virtual void func_02039ccc(unk32 param_2) override;
/* 0x40 */ virtual UNK_TYPE func_02039d74(void) override;
/* 0x44 */ virtual void func_0203a3fc(s32 touchLastX, s32 touchLastY) override;
@@ -88,9 +204,9 @@ public:
/* 0x50 */ virtual void func_0203a7f0(EntryINF1* param_2, int param_3, u8* param_4) override;
/* 0x54 */ virtual UNK_TYPE func_0203a988(void) override;
/* 0x58 */ virtual void func_0203af1c(void) override;
/* 0x5C */ virtual UNK_TYPE func_0203aea8(void) override;
/* 0x5C */ virtual void func_0203aea8(void) override;
/* 0x60 */ virtual UNK_TYPE func_0203b410(void) override;
/* 0x64 */ virtual UNK_TYPE func_0203b5d0(void) override;
/* 0x64 */ virtual void func_0203b5d0(unk32 param_2) override;
/* 0x68 */ virtual unk32 func_020393d0(unk32 param_2) override;
/* 0x6C */ virtual void func_0203bdcc(unk32* param_2, unk32* param_3) override;
/* 0x70 */ virtual void func_020394d8(unk32* param_2, unk32* param_3) override;
@@ -99,14 +215,29 @@ public:
unk32 func_020337d8(unk32 param_2);
void func_02038b28(void);
void func_0203e090(void);
void func_0203dc10(unk32 param_2, unk32 param_3, unk32 param_4);
void func_0203dcfc(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5);
unk32 func_0203a30c(void);
unk32 func_0203905c(unk8 param_2, UnkStruct_0203b264* param_3, unk8 param_4, unk32 param_5);
unk32 func_0203cb5c(unk8, unk32);
void func_020393a8(unk32 param_2);
void func_0203be08(void);
unk32 func_02032fa4(void);
void func_0203e0f8(void);
void func_0203dc10(u8 param_2, u8 param_3);
void func_0203dc10(u8 param_2);
// not sure it belongs to this class:
void func_0203e2ac(unk32* param_2, unk32* param_3);
void func_02033190(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5);
void func_02038b40(void);
void func_0203ec34(u32*);
void func_020350ac(u32*);
void func_02038b1c(void);
unk32 func_0203951c(void);
unk32 func_0203e284(UnkStruct_0203b264*, unk32, unk32);
void func_0203f020(UnkSubClass1_unk_124*, unk32, unk32);
void func_0203947c(void);
void func_0203fc78(unk32*, unk32*);
void func_02032fcc(unk32, unk32);
void func_020331c4(unk32, unk32);
};
@@ -1,4 +1,9 @@
#include "Message/UnkStruct_027E0C68_UnkSubClass1.hpp"
#include "Message/MessageManager.hpp"
#include "Save/AdventureFlags.hpp"
extern unk32 func_0203c084(void);
extern s32 data_027e0db0;
ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_02038c34(UNK_TYPE) {
// TODO
@@ -19,7 +24,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039228(unk32* param_2, unk32* p
// temp = param_3[2];
this->unk_152 = 1;
// param_3[0] = param_3[2];
func_0203e2ac(param_2, param_3);
this->func_0203e2ac(param_2, param_3);
}
ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_020393d0(unk32 param_2) {
@@ -51,8 +56,8 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_020394d8(unk32* param_2, unk32* p
*param_3 += this->unk_15A;
}
ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039578(unk8 param_2, unk8 param_3, unk8 param_4, unk32 param_5) {
this->func_0203dc10(1, param_3, param_4);
ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039578(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) {
this->func_0203dc10(1, param_3);
this->func_02033190(param_2, param_3, param_4, param_5);
}
@@ -79,7 +84,7 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a328(UNK_TYPE) {
this->func_02038b40();
}
this->func_0203ec34(&this->unk_410);
this->unk_410.func_0203ec34();
}
ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203a3fc(s32 touchLastX, s32 touchLastY) {
@@ -94,28 +99,123 @@ ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203a988(UNK_TYPE) {
// TODO
}
ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203aea8(UNK_TYPE) {
// TODO
ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203aea8(void) {
if (this->unk_15F == 0 || this->unk_154->unk_06 <= 2) {
this->unk_1CC = this->unk_1E4;
this->unk_168.func_020352d8();
} else {
this->unk_1CC = 0;
this->unk_168.func_020352d8();
this->unk_168.func_020351b8(1, 0, 0, 0);
}
}
ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203af1c(void) {
// TODO
}
ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203b264(UNK_TYPE) {
// TODO
// non-matching (regalloc)
ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_0203b264(UnkStruct_0203b264* param_2, unk32 param_3, unk32 param_4) {
u16 sVar1;
u32 uVar4;
s32 unaff_r4;
bool bVar5;
if (this->func_0203951c() == 0) {
return 1;
}
if (this->unk_580 != 0) {
unaff_r4 = -0xC;
} else {
unaff_r4 = 0;
}
sVar1 = param_2->mUnk_4[0];
if (sVar1 != 0x1A || sVar1 == 0x1A) {
bVar5 = true;
if (sVar1 == 0x1A) {
uVar4 = (param_2->mUnk_0[3] << 0x10) | ((u16*)param_2->mUnk_0)[2];
if (((uVar4 == 0x0001000A || uVar4 == 0x00020000) || uVar4 == 0x00FF0000)) {
bVar5 = false;
}
}
if (bVar5) {
this->unk_424.func_0203ee80(this->unk_130);
}
}
return this->func_0203e284(param_2, param_3, param_4 + unaff_r4);
}
ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203b310(UNK_TYPE) {
// TODO
// non-matching
ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_0203b310(unk8 param_2, UnkStruct_0203b264* param_3, unk8 param_4, unk32 param_5) {
int iVar1;
u16* psVar3;
psVar3 = param_3->mUnk_4;
if (psVar3[0] == 10) {
this->unk_424.func_0203ef78(this->unk_130, psVar3[0], param_4);
this->unk_574++;
if (this->func_0203a30c() == 0) {
this->unk_153 = 1;
}
}
if (this->unk_15E == 6) {
return 1;
}
switch (this->unk_57A) {
case 0:
return this->func_0203905c(param_2, param_3, param_4, param_5);
case 1:
iVar1 = this->func_0203a30c();
return this->unk_164->func_0203cb5c(param_2, (this->unk_428[this->unk_528[iVar1]] & ~0xFFFF) >> 0x10);
default:
break;
}
return 0;
}
ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203b410(UNK_TYPE) {
// TODO
}
ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203b5d0(UNK_TYPE) {
// TODO
// non-matching
ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203b5d0(unk32 param_2) {
unk32 uVar2;
if ((this->unk_50 == 0 && data_027e0db0 <= 0 && func_0203c084() != 0) || (gAdventureFlags->Exists() && gAdventureFlags->func_ov00_02097738())) {
uVar2 = 0x16;
} else {
uVar2 = 0;
}
this->func_0203f020(this->unk_124, param_2, uVar2);
this->func_0203be08();
if (this->func_02032fa4()) {
this->unk_168.func_020350b4(0x39, 0, 2, 0, 0);
this->unk_1F0.func_020350b4(0x33, 0, 2, 0, 0);
this->unk_278.func_020350b4(0x33, 1, 2, 0, 0);
} else {
this->unk_168.func_020350b4(0x34, 0, 2, 0, 0);
this->unk_1F0.func_020350b4(0x32, 0, 2, 0, 0);
this->unk_278.func_020350b4(0x32, 1, 2, 0, 0);
}
this->unk_168.func_020351b8(1, 0, 0, 0);
this->unk_1F0.func_020351b8(0, 0, 0, 0);
this->unk_278.func_020351b8(0, 0, 0, 0);
this->func_020393a8(param_2);
}
ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203b814(UNK_TYPE) {
@@ -123,30 +223,53 @@ ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203b814(UNK_TYPE) {
}
ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203bdcc(unk32* param_2, unk32* param_3) {
// TODO
this->func_0203947c();
*param_2 += this->unk_56E;
*param_3 += this->unk_570;
}
ARM UnkStruct_027E0C68_UnkSubClass1::~UnkStruct_027E0C68_UnkSubClass1() {
this->func_020350ac(&this->unk_388);
this->func_020350ac(&this->unk_300);
this->func_020350ac(&this->unk_278);
this->func_020350ac(&this->unk_1F0);
this->func_020350ac(&this->unk_168);
this->unk_388.func_020350ac();
this->unk_300.func_020350ac();
this->unk_278.func_020350ac();
this->unk_1F0.func_020350ac();
this->unk_168.func_020350ac();
this->func_02038b1c();
}
ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203c350(UNK_TYPE) {
// TODO
ARM bool UnkStruct_027E0C68_UnkSubClass1::func_0203c350(void) {
return true;
}
ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203dcb4(UNK_TYPE) {
// TODO
// non-matching
ARM bool UnkStruct_027E0C68_UnkSubClass1::func_0203dcb4(unk32 param_2, unk32 param_3) {
unk32 uVar1;
unk32 local_c;
unk32 local_10;
local_c = param_2;
local_10 = param_3;
this->func_02032fa4();
this->func_0203fc78(&local_c, &local_10);
this->func_02032fcc(local_c, local_10);
this->unk_10 = 0;
return true;
}
ARM UNK_TYPE UnkStruct_027E0C68_UnkSubClass1::func_0203e060(UNK_TYPE) {
// TODO
ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203e060(u8 param_2, u8 param_3) {
this->func_0203dc10(1, param_3);
this->unk_11E = param_2;
this->unk_118 = -1;
this->func_020331c4(param_2, -1);
}
ARM void UnkStruct_027E0C68_UnkSubClass1::func_0203e0c8(UNK_TYPE) {
// TODO
ARM bool UnkStruct_027E0C68_UnkSubClass1::func_0203e0c8(void) {
if (this->unk_122 != 0) {
this->func_0203e0f8();
this->func_0203dc10(0);
return true;
}
return false;
}