more vfuncs progress

This commit is contained in:
Yanis002
2025-01-26 16:42:09 +01:00
parent 1af423e8ae
commit 2107619c79
2 changed files with 155 additions and 8 deletions
@@ -67,6 +67,8 @@ public:
/* 0x84 */ unk32 unk_84;
/* 0x88 */
void func_02034a1c(unk32, unk32, struct UnkStruct_01ffbe34*);
void func_02034b0c(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5, unk32 param_6);
void func_020350ac(void);
void func_020350b4(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5, unk32 param_6);
void func_0203516c(void);
@@ -153,7 +155,10 @@ public:
/* 0x00C */ unk32* unk_0C;
/* 0x010 */ unk32* unk_10;
/* 0x014 */ unk32 unk_14;
/* 0x018 */ unk32 unk_18;
/* 0x018 */ u8 unk_18;
/* 0x018 */ u8 unk_19;
/* 0x018 */ u8 unk_1A;
/* 0x018 */ u8 unk_1B;
/* 0x01C */ unk32 unk_1C;
/* 0x020 */ unk32 unk_20;
/* 0x024 */ unk32* unk_24;
@@ -226,7 +231,10 @@ public:
/* 0x430 */ unk32 unk_430;
/* 0x434 */ u8 unk_434[0xF4];
/* 0x528 */ s16* unk_528;
/* 0x52C */ u8 unk_52C[0x3C];
/* 0x52C */ u8 unk_52C[0x30];
/* 0x55C */ unk32 unk_55C;
/* 0x560 */ unk32 unk_560;
/* 0x564 */ unk32 unk_564;
/* 0x568 */ unk32 unk_568;
/* 0x56C */ unk16 unk_56C;
/* 0x56E */ unk16 unk_56E;
@@ -299,7 +307,7 @@ public:
void func_0203bd8c(u16 param_2);
void func_0203be08(void);
void func_0203be64(void);
unk32 func_0203cb5c(unk8, unk32);
unk32 func_0203cb5c(unk8, s16);
void func_0203dc10(u8 param_2);
void func_0203dc10(u8 param_2, u8 param_3);
void func_0203dcfc(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5);
@@ -307,6 +315,9 @@ public:
void func_0203e090(void);
void func_0203e0f8(void);
void func_0203a188(unk32, unk32);
void func_0203e1b0(unk32, unk32, unk32);
// not sure it belongs to this class:
void func_02032fcc(unk32, unk32);
void func_02033190(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5);
@@ -21,17 +21,51 @@ struct UnkStruct2 {
};
extern UnkStruct2 data_027e077c;
extern u8 data_02056be4[];
extern u8 data_027e0618[];
extern unk32 data_027e0618[];
class UnkClass_027e0cbc {
public:
unk32 func_0203d7e0(unk32);
};
extern UnkClass_027e0cbc data_027e0cbc;
extern unk16 data_02056a10[];
extern unk16 data_02056a16[];
extern unk32 data_02056a04[];
extern unk32 data_027e0c38[];
extern "C" void func_0203489c(unk32, unk16, unk32*, unk32*);
extern "C" void func_020347b0(unk32, unk16, unk32*, unk32*, unk32, unk32);
extern THUMB unk32 func_0202ab48(void);
extern "C" void func_02034984(unk32, unk32, unk32, unk32, unk32);
extern "C" void func_02034698(unk32, unk32, unk32*, unk32*);
// see Actor.cpp
typedef struct UnkStruct_01ffbe34 {
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk8 mUnk_08;
/* 09 */ unk8 mUnk_09;
/* 0a */ unk8 mUnk_0a;
/* 0b */ unk8 mUnk_0b;
/* 0c */ unk32 mUnk_0c;
/* 10 */ unk32 mUnk_10;
/* 14 */ unk8 mUnk_14;
/* 15 */ unk8 mUnk_15;
/* 16 */ unk16 mUnk_16;
/* 18 */ unk32 mUnk_18;
/* 1c */ unk32 mUnk_1c;
/* 20 */
} UnkStruct_01ffbe34;
extern "C" void func_01ffbe34(UnkStruct_01ffbe34 *param1);
ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_02038c34(unk32 param_2) {
unk32 iVar1;
s16 iVar1;
unk32 iVar2;
unk32 iVar3;
unk32 uVar4;
iVar2 = this->func_02038cf4();
iVar3 = this->func_02038d10();
iVar1 = ((this->unk_15A - (this->unk_18 << 3) / 2) << 0x10) >> 0x10;
iVar1 = ((this->unk_15A - (this->unk_18 << 3) / 2));
if ((param_2 < iVar2 + iVar1) || (iVar2 + iVar3 + iVar1 <= param_2)) {
return -1;
@@ -193,8 +227,110 @@ ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039ccc(unk32 param_2) {
}
// non-matching
ARM void UnkStruct_027E0C68_UnkSubClass1::func_02039d74(unk32 param_2, unk32 param_3) {
// TODO
UnkStruct_027E0C68_UnkSubClass1* bVar1;
s8 cVar2;
unk32 iVar4;
unk32 iVar6;
unk32 iVar7;
unk32 iVar8;
unk32 uVar9;
unk32 iStack_a8;
unk32 iStack_a4;
unk32 local_a0;
unk32 local_9c;
unk32 local_98;
unk32 local_94;
unk32 local_90;
unk32 local_8c;
unk32 iVar5;
UnkStruct_01ffbe34 aStack_88;
UnkStruct_01ffbe34 aStack_68;
UnkStruct_01ffbe34 aStack_48;
local_8c = 0;
local_90 = 0;
bVar1 = data_027e0c68.unk_28[this->unk_50];
this->func_0203bdcc(&local_8c, &local_90);
this->func_0203a188(local_8c + param_2, local_90 + param_3);
this->func_0203e1b0(param_2 + local_8c + (this->unk_158 - (this->unk_14 << 3) / 2), param_3 + local_90 + (this->unk_15A - (this->unk_18 << 3) / 2), 0);
if (this->unk_584 != 0) {
iVar5 = this->unk_18 << 3;
if (this->unk_580 != 0) {
iVar5 = -0xC;
} else {
iVar5 = 0;
}
this->unk_300.func_02034a1c(param_2 + local_8c + this->unk_55C + (this->unk_158 - (this->unk_14 << 3) / 2),
iVar5 + param_3 + local_90 + this->unk_560 + ((this->unk_15A - (iVar5 / 2))), 0);
}
if (this->unk_585 != 0 && ((data_02056be4[data_027e077c.mUnk_0] & 1) == 0)) {
switch (data_027e0618[0]) {
case 2:
if (data_027e0cbc.func_0203d7e0(3) != 0) {
this->unk_388.func_02034b0c(0xBE, 0, 0, 0, 0);
}
break;
case 6:
if (data_027e0cbc.func_0203d7e0(0x58) != 0) {
this->unk_388.func_02034b0c(0x013B, 0, 0, 0, 0);
}
break;
}
}
iVar5 = this->func_02032fa4();
iVar8 = bVar1->unk_18;
uVar9 = data_02056a04[iVar8];
func_0203489c(uVar9, data_02056a16[iVar8], &local_94, &local_98);
iVar6 = this->unk_158 - local_94;
iVar7 = this->unk_15A - local_98;
if ((this->unk_15E != 7) && (this->func_0203a2c0() != 0)) {
func_01ffbe34(&aStack_48);
func_020347b0(uVar9, data_02056a10[iVar8], &local_9c, &local_a0, 4, 4);
local_9c += param_2 + local_8c + iVar6;
local_a0 += param_3 + local_90 + iVar7;
if (data_027e0c38[5] == 1) {
iVar8 = func_0202ab48();
if (iVar8 == 0) {
iVar8 = 0;
} else {
iVar8 = -3;
}
local_9c = (0x108 - local_9c) + iVar8;
}
if ((this->unk_57F == 0) && (this->unk_56C <= 0)) {
func_01ffbe34(&aStack_68);
aStack_68.mUnk_0a = 1;
this->unk_1F0.func_02034a1c(local_9c, local_a0, &aStack_68);
} else {
func_02034984(iVar5 != 0 ? 0x11F : 0x18, 0, local_9c, local_a0 + 2, 0);
}
}
if (this->unk_08 != 0) {
if ((this->unk_08->unk_1C == 1 || this->unk_08->unk_1C == 2) == 0) {
return;
}
func_01ffbe34(&aStack_88);
aStack_88.mUnk_0a = 1;
func_02034698(iVar5 != 0 ? 0x11F : 0x18, 2, &iStack_a4, &iStack_a8);
iStack_a4 += param_2 + local_8c + iVar6;
iStack_a8 += param_3 + local_90 + iVar7;
this->unk_278.func_02034a1c(iStack_a4, iStack_a8, &aStack_88);
}
}
// non-matching (regalloc)
@@ -296,7 +432,7 @@ ARM unk32 UnkStruct_027E0C68_UnkSubClass1::func_0203b310(unk8 param_2, UnkStruct
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);
return this->unk_164->func_0203cb5c(param_2, ((this->unk_428[this->unk_528[iVar1]] & ~0xFFFF)));
default:
break;
}