PlayerControl: Decomp 80%

This commit is contained in:
Aetias
2025-02-18 18:33:12 +01:00
parent 83bdfdb892
commit 4a764f9d58
14 changed files with 117 additions and 78 deletions
+8 -8
View File
@@ -609,7 +609,7 @@ _ZN10MapManager18func_ov00_02083bd4Ev kind:function(arm,size=0x28) addr:0x2083bd
_ZN10MapManager18func_ov00_02083bfcEv kind:function(arm,size=0x28) addr:0x2083bfc
_ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083c24
_ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083c50
_ZN10MapManager18func_ov00_02083c7cEP5Vec3pi kind:function(arm,size=0x6c) addr:0x2083c7c
_ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x2083c7c
_ZN10MapManager18func_ov00_02083ce8Ecccci kind:function(arm,size=0x14c) addr:0x2083ce8
_ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34
_ZN10MapManager16MapData_vfunc_60Ev kind:function(arm,size=0x18) addr:0x2083e58
@@ -623,7 +623,7 @@ _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) ad
_ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2084024
_ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084088
_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x20840a0
_ZN10MapManager16MapData_vfunc_78Ev kind:function(arm,size=0x18) addr:0x20840c4
_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x20840c4
_ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x20840dc
_ZN10MapManager18func_ov00_02084100EiPS_ kind:function(arm,size=0x14) addr:0x2084100
_ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x2084114
@@ -2202,7 +2202,7 @@ _ZN13PlayerControl18func_ov00_020afad8EP5Vec3p kind:function(arm,size=0x94) addr
_ZN13PlayerControl18func_ov00_020afb6cEv kind:function(arm,size=0x31c) addr:0x20afb6c
_ZN13PlayerControl18func_ov00_020afe88Eib kind:function(arm,size=0x64) addr:0x20afe88
_ZN13PlayerControl18func_ov00_020afeecEib kind:function(arm,size=0xa4) addr:0x20afeec
_ZN13PlayerControl18func_ov00_020aff90EP8Cylinderi kind:function(arm,size=0x5c) addr:0x20aff90
_ZN13PlayerControl18func_ov00_020aff90EP5Vec3pi kind:function(arm,size=0x5c) addr:0x20aff90
_ZN13PlayerControl18func_ov00_020affecEP5Vec3piiS1_ kind:function(arm,size=0x160) addr:0x20affec
_ZN13PlayerControl18func_ov00_020b014cEP5Vec3p kind:function(arm,size=0xd0) addr:0x20b014c
_ZN13PlayerControl8ResetAimEv kind:function(arm,size=0x24) addr:0x20b021c
@@ -2479,7 +2479,7 @@ _ZN13ActorNaviBase8vfunc_84Ev kind:function(arm,size=0x18) addr:0x20ba5d4
_ZN13ActorNaviBase8vfunc_78Ev kind:function(arm,size=0x288) addr:0x20ba5ec
_ZN13ActorNaviBase8vfunc_bcEici kind:function(arm,size=0x400) addr:0x20ba874
_ZN13ActorNaviBase8vfunc_74Ev kind:function(arm,size=0x34) addr:0x20bac74
_ZN13ActorNaviBase19func_ov000_020baca8EP8Cylinderi kind:function(arm,size=0x70) addr:0x20baca8
_ZN13ActorNaviBase19func_ov000_020baca8EP5Vec3pi kind:function(arm,size=0x70) addr:0x20baca8
_ZN13ActorNaviBase19func_ov000_020bad18Ev kind:function(arm,size=0x2c) addr:0x20bad18
_ZN13ActorNaviBase8vfunc_90Ev kind:function(arm,size=0x224) addr:0x20bad44
_ZN13ActorNaviBase8vfunc_94Ev kind:function(arm,size=0x144) addr:0x20baf68
@@ -2738,7 +2738,7 @@ _ZN9EquipItem8vfunc_2cEv kind:function(arm,size=0x8) addr:0x20be964
_ZN9EquipItem8vfunc_34EPs kind:function(arm,size=0x4) addr:0x20be96c
_ZNK9EquipItem8vfunc_40Ev kind:function(arm,size=0x8) addr:0x20be970
_ZNK9EquipItem8vfunc_44Ei kind:function(arm,size=0x8) addr:0x20be978
_ZNK9EquipItem8vfunc_48Ei kind:function(arm,size=0x8) addr:0x20be980
_ZNK9EquipItem8vfunc_48Eii kind:function(arm,size=0x8) addr:0x20be980
_ZNK9EquipItem8vfunc_4cEv kind:function(arm,size=0x8) addr:0x20be988
_ZN9EquipItem12GetPlayerPosEv kind:function(arm,size=0xc) addr:0x20be990
_ZN9EquipItem19func_ov000_020be99cEP5Vec3p kind:function(arm,size=0x48) addr:0x20be99c
@@ -3324,8 +3324,8 @@ _ZN18UnkStruct_027e0ffc19func_ov000_020cebccEjsi kind:function(arm,size=0x3c) ad
func_ov000_020cec08 kind:function(arm,size=0x58) addr:0x20cec08
func_ov000_020cec60 kind:function(arm,size=0x78) addr:0x20cec60
func_ov000_020cecd8 kind:function(arm,size=0x8c) addr:0x20cecd8
func_ov000_020ced64 kind:function(arm,size=0x18) addr:0x20ced64
func_ov000_020ced7c kind:function(arm,size=0x40) addr:0x20ced7c
_ZN18UnkStruct_027e0ffc19func_ov000_020ced64EP8Cylinderjj kind:function(arm,size=0x18) addr:0x20ced64
_ZN18UnkStruct_027e0ffc19func_ov000_020ced7cEP5Vec3piii kind:function(arm,size=0x40) addr:0x20ced7c
func_ov000_020cedbc kind:function(arm,size=0x54) addr:0x20cedbc
func_ov000_020cee10 kind:function(arm,size=0x48) addr:0x20cee10
func_ov000_020cee58 kind:function(arm,size=0x88) addr:0x20cee58
@@ -5002,7 +5002,7 @@ data_ov000_020e6118 kind:data(any) addr:0x20e6118
data_ov000_020e611c kind:data(any) addr:0x20e611c
data_ov000_020e6120 kind:data(any) addr:0x20e6120
data_ov000_020e6124 kind:data(any) addr:0x20e6124
data_ov000_020e6148 kind:data(any) addr:0x20e6148
@1518 kind:data(any) addr:0x20e6148
data_ov000_020e6158 kind:data(any) addr:0x20e6158
data_ov000_020e6174 kind:data(any) addr:0x20e6174
data_ov000_020e6178 kind:data(any) addr:0x20e6178
+1 -1
View File
@@ -846,7 +846,7 @@ func_ov014_0213ccd8 kind:function(arm,size=0xe8) addr:0x213ccd8
func_ov014_0213cdc0 kind:function(arm,size=0x3c) addr:0x213cdc0
func_ov014_0213cdfc kind:function(arm,size=0x5c) addr:0x213cdfc
func_ov014_0213ce58 kind:function(arm,size=0x18) addr:0x213ce58
func_ov014_0213ce70 kind:function(arm,size=0xbc) addr:0x213ce70
_ZN24UnkStruct_ov015_0213ce4c11GetInstanceEv kind:function(arm,size=0xbc) addr:0x213ce70
func_ov014_0213cf2c kind:function(arm,size=0x5c) addr:0x213cf2c
_ZN10EquipScoopC2Ev kind:function(thumb,size=0x14) addr:0x213cf88
_ZN10EquipScoopD1Ev kind:function(thumb,size=0xc) addr:0x213cf9c
+8 -8
View File
@@ -609,7 +609,7 @@ _ZN10MapManager18func_ov00_02083bd4Ev kind:function(arm,size=0x28) addr:0x2083b7
_ZN10MapManager18func_ov00_02083bfcEv kind:function(arm,size=0x28) addr:0x2083b9c
_ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083bc4
_ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083bf0
_ZN10MapManager18func_ov00_02083c7cEP5Vec3pi kind:function(arm,size=0x6c) addr:0x2083c1c
_ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x2083c1c
_ZN10MapManager18func_ov00_02083ce8Ecccci kind:function(arm,size=0x14c) addr:0x2083c88
_ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083dd4
_ZN10MapManager16MapData_vfunc_60Ev kind:function(arm,size=0x18) addr:0x2083df8
@@ -623,7 +623,7 @@ _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) ad
_ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2083fc4
_ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084028
_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x2084040
_ZN10MapManager16MapData_vfunc_78Ev kind:function(arm,size=0x18) addr:0x2084064
_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x2084064
_ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x208407c
_ZN10MapManager18func_ov00_02084100EiPS_ kind:function(arm,size=0x14) addr:0x20840a0
_ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x20840b4
@@ -2202,7 +2202,7 @@ _ZN13PlayerControl18func_ov00_020afad8EP5Vec3p kind:function(arm,size=0x94) addr
_ZN13PlayerControl18func_ov00_020afb6cEv kind:function(arm,size=0x31c) addr:0x20afb0c
_ZN13PlayerControl18func_ov00_020afe88Eib kind:function(arm,size=0x64) addr:0x20afe28
_ZN13PlayerControl18func_ov00_020afeecEib kind:function(arm,size=0xa4) addr:0x20afe8c
_ZN13PlayerControl18func_ov00_020aff90EP8Cylinderi kind:function(arm,size=0x5c) addr:0x20aff30
_ZN13PlayerControl18func_ov00_020aff90EP5Vec3pi kind:function(arm,size=0x5c) addr:0x20aff30
_ZN13PlayerControl18func_ov00_020affecEP5Vec3piiS1_ kind:function(arm,size=0x160) addr:0x20aff8c
_ZN13PlayerControl18func_ov00_020b014cEP5Vec3p kind:function(arm,size=0xd0) addr:0x20b00ec
_ZN13PlayerControl8ResetAimEv kind:function(arm,size=0x24) addr:0x20b01bc
@@ -2479,7 +2479,7 @@ _ZN13ActorNaviBase8vfunc_84Ev kind:function(arm,size=0x18) addr:0x20ba574
_ZN13ActorNaviBase8vfunc_78Ev kind:function(arm,size=0x288) addr:0x20ba58c
_ZN13ActorNaviBase8vfunc_bcEici kind:function(arm,size=0x400) addr:0x20ba814
_ZN13ActorNaviBase8vfunc_74Ev kind:function(arm,size=0x34) addr:0x20bac14
_ZN13ActorNaviBase19func_ov000_020baca8EP8Cylinderi kind:function(arm,size=0x70) addr:0x20bac48
_ZN13ActorNaviBase19func_ov000_020baca8EP5Vec3pi kind:function(arm,size=0x70) addr:0x20bac48
_ZN13ActorNaviBase19func_ov000_020bad18Ev kind:function(arm,size=0x2c) addr:0x20bacb8
_ZN13ActorNaviBase8vfunc_90Ev kind:function(arm,size=0x224) addr:0x20bace4
_ZN13ActorNaviBase8vfunc_94Ev kind:function(arm,size=0x144) addr:0x20baf08
@@ -2640,7 +2640,7 @@ _ZN9EquipItem8vfunc_2cEv kind:function(arm,size=0x8) addr:0x20be904
_ZN9EquipItem8vfunc_34EPs kind:function(arm,size=0x4) addr:0x20be90c
_ZNK9EquipItem8vfunc_40Ev kind:function(arm,size=0x8) addr:0x20be910
_ZNK9EquipItem8vfunc_44Ei kind:function(arm,size=0x8) addr:0x20be918
_ZNK9EquipItem8vfunc_48Ei kind:function(arm,size=0x8) addr:0x20be920
_ZNK9EquipItem8vfunc_48Eii kind:function(arm,size=0x8) addr:0x20be920
_ZNK9EquipItem8vfunc_4cEv kind:function(arm,size=0x8) addr:0x20be928
_ZN9EquipItem12GetPlayerPosEv kind:function(arm,size=0xc) addr:0x20be930
_ZN9EquipItem19func_ov000_020be99cEP5Vec3p kind:function(arm,size=0x48) addr:0x20be93c
@@ -3226,8 +3226,8 @@ _ZN18UnkStruct_027e0ffc19func_ov000_020cebccEjsi kind:function(arm,size=0x3c) ad
func_ov000_020cec08 kind:function(arm,size=0x58) addr:0x20ceba8
func_ov000_020cec60 kind:function(arm,size=0x78) addr:0x20cec00
func_ov000_020cecd8 kind:function(arm,size=0x8c) addr:0x20cec78
func_ov000_020ced64 kind:function(arm,size=0x18) addr:0x20ced04
func_ov000_020ced7c kind:function(arm,size=0x40) addr:0x20ced1c
_ZN18UnkStruct_027e0ffc19func_ov000_020ced64EP8Cylinderjj kind:function(arm,size=0x18) addr:0x20ced04
_ZN18UnkStruct_027e0ffc19func_ov000_020ced7cEP5Vec3piii kind:function(arm,size=0x40) addr:0x20ced1c
func_ov000_020cedbc kind:function(arm,size=0x54) addr:0x20ced5c
func_ov000_020cee10 kind:function(arm,size=0x48) addr:0x20cedb0
func_ov000_020cee58 kind:function(arm,size=0x88) addr:0x20cedf8
@@ -4904,7 +4904,7 @@ data_ov000_020e6118 kind:data(any) addr:0x20e60b8
data_ov000_020e611c kind:data(any) addr:0x20e60bc
data_ov000_020e6120 kind:data(any) addr:0x20e60c0
data_ov000_020e6124 kind:data(any) addr:0x20e60c4
data_ov000_020e6148 kind:data(any) addr:0x20e60e8
@1518 kind:data(any) addr:0x20e60e8
data_ov000_020e6158 kind:data(any) addr:0x20e60f8
data_ov000_020e6174 kind:data(any) addr:0x20e6114
data_ov000_020e6178 kind:data(any) addr:0x20e6118
+1 -1
View File
@@ -846,7 +846,7 @@ func_ov014_0213ccd8 kind:function(arm,size=0xe8) addr:0x213cc34
func_ov014_0213cdc0 kind:function(arm,size=0x3c) addr:0x213cd1c
func_ov014_0213cdfc kind:function(arm,size=0x5c) addr:0x213cd58
func_ov014_0213ce58 kind:function(arm,size=0x18) addr:0x213cdb4
func_ov014_0213ce70 kind:function(arm,size=0xbc) addr:0x213cdcc
_ZN24UnkStruct_ov015_0213ce4c11GetInstanceEv kind:function(arm,size=0xbc) addr:0x213cdcc
func_ov014_0213cf2c kind:function(arm,size=0x5c) addr:0x213ce88
_ZN10EquipScoopC2Ev kind:function(thumb,size=0x14) addr:0x213cee4
_ZN10EquipScoopD1Ev kind:function(thumb,size=0xc) addr:0x213cef8
+1 -1
View File
@@ -97,7 +97,7 @@ public:
bool func_ov000_020ba458();
void func_ov000_020ba4e4();
void func_ov000_020ba53c();
void func_ov000_020baca8(Cylinder *param1, unk32 param2);
void func_ov000_020baca8(Vec3p *param1, unk32 param2);
void func_ov000_020bad18();
static void func_ov000_020bb0ac();
static void func_ov000_020bb0e0();
+1 -1
View File
@@ -24,4 +24,4 @@ struct UnkStruct_027e0c68 {
/* 4c */
};
extern UnkStruct_027e0c68 *data_027e0c68;
extern UnkStruct_027e0c68 data_027e0c68;
+2 -1
View File
@@ -20,7 +20,8 @@ struct UnkStruct_027e0ffc {
/* 39 */
void func_ov000_020cebcc(u32 param1, unk16 param2, unk32 param3);
void func_ov000_020ced64(Cylinder *param1, u32 param2);
void func_ov000_020ced64(Cylinder *param1, u32 param2, u32 param3);
void func_ov000_020ced7c(Vec3p *param1, s32 param2, s32 param3, unk32 param4);
};
extern UnkStruct_027e0ffc data_027e0ffc;
+1 -1
View File
@@ -180,7 +180,7 @@ public:
void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds);
unk8 MapData_vfunc_54();
unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4);
unk32 MapData_vfunc_78();
unk32 MapData_vfunc_78(Vec2b *param1);
static unk8 func_ov00_020840dc();
static unk8 func_ov00_02084100(unk32 param_1, MapManager *param_2);
unk8 GetMapData_Unk_48();
+1 -1
View File
@@ -34,7 +34,7 @@ public:
/* 3c */ virtual bool GetHitbox(Cylinder *hitbox) const;
/* 40 */ virtual unk32 vfunc_40() const;
/* 44 */ virtual unk32 vfunc_44(unk32 param1) const;
/* 48 */ virtual unk32 vfunc_48() const;
/* 48 */ virtual unk32 vfunc_48(unk32 param1) const;
/* 4c */ virtual s32 vfunc_4c() const;
/* 50 */
+2 -2
View File
@@ -61,7 +61,7 @@ public:
/* 9e */ unk8 mUnk_9e[2];
/* a0 */ void *mFollowObject;
/* a4 */ q20 mFollowDist;
/* a8 */ u16 mFollowStuckTimer;
/* a8 */ s16 mFollowStuckTimer;
/* aa */ s16 mCutsceneEndTimer;
/* ac */ s16 mUnk_ac;
/* ae */ unk16 mUnk_ae;
@@ -96,7 +96,7 @@ public:
void func_ov00_020afb6c();
bool func_ov00_020afe88(s32 param1, bool param2);
bool func_ov00_020afeec(unk32 param1, bool param2);
void func_ov00_020aff90(Cylinder *param1, unk32 param2);
void func_ov00_020aff90(Vec3p *param1, unk32 param2);
void func_ov00_020affec(Vec3p *param1, s32 y, s32 param3, Vec3p *param4);
void func_ov00_020b014c(Vec3p *param1);
void ResetAim();
+1 -1
View File
@@ -37,7 +37,7 @@ void ActorNaviBase::vfunc_84() {}
bool ActorNaviBase::vfunc_78() {}
bool ActorNaviBase::vfunc_bc(unk32 param1, unk8 param2, s32 param3) {}
void ActorNaviBase::vfunc_74() {}
void ActorNaviBase::func_ov000_020baca8(Cylinder *param1, unk32 param2) {}
void ActorNaviBase::func_ov000_020baca8(Vec3p *param1, unk32 param2) {}
void ActorNaviBase::func_ov000_020bad18() {}
bool ActorNaviBase::vfunc_90() {}
void ActorNaviBase::vfunc_94() {}
+1 -1
View File
@@ -135,7 +135,7 @@ unk8 MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *pa
void MapManager::GetTileWorldBounds(Vec2b *tile, AABB *tileBounds) {}
unk8 MapManager::MapData_vfunc_54() {}
unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) {}
unk32 MapManager::MapData_vfunc_78() {}
unk32 MapManager::MapData_vfunc_78(Vec2b *param1) {}
unk8 MapManager::func_ov00_020840dc() {}
unk8 MapManager::func_ov00_02084100(unk32 param_1, MapManager *param_2) {}
unk8 MapManager::GetMapData_Unk_48() {}
+1 -1
View File
@@ -9,7 +9,7 @@ u32 EquipItem::vfunc_2c() {}
void EquipItem::vfunc_34(unk16 *param1) {}
unk32 EquipItem::vfunc_40() const {}
unk32 EquipItem::vfunc_44(unk32 param1) const {}
unk32 EquipItem::vfunc_48() const {}
unk32 EquipItem::vfunc_48(unk32 param1) const {}
s32 EquipItem::vfunc_4c() const {}
Vec3p *EquipItem::GetPlayerPos() {}
void EquipItem::func_ov000_020be99c(Vec3p *param1) {}
+88 -50
View File
@@ -92,19 +92,20 @@ ARM void PlayerControl::func_ov00_020af06c() {
if (mUnk_7a) {
mUnk_7b = usingEquipItem;
}
if (gAdventureFlags->func_ov00_02097738() || data_027e0c68->mUnk_04 != 0) {
if (gAdventureFlags->func_ov00_02097738() || data_027e0c68.mUnk_04 != 0) {
if (data_027e0d38->func_ov000_02078b40() != 2) {
mUsingEquipItem = false;
}
return;
}
ItemManager *itemManager = gItemManager;
if (itemManager->mEquippedItem == ItemFlag_PotionA) {
ItemFlag equippedItem = itemManager->mEquippedItem;
if (equippedItem == ItemFlag_PotionA) {
if (itemManager->HasPotion(0)) {
mUsingEquipItem = true;
return;
}
} else if (itemManager->mEquippedItem == ItemFlag_PotionB) {
} else if (equippedItem == ItemFlag_PotionB) {
if (itemManager->HasPotion(1)) {
mUsingEquipItem = true;
return;
@@ -112,7 +113,7 @@ ARM void PlayerControl::func_ov00_020af06c() {
}
if (data_027e0d38->func_ov000_02078b40() == 2) {
mUnk_7b = true;
mUnk_7b = (mUnk_7b & itemManager->func_ov00_020ad790(1)) != 0;
mUnk_7b = (mUnk_7b & gItemManager->func_ov00_020ad790(1)) != 0;
} else {
if (((data_027e05f8.mUnk_0 & 0x300) != 0) && mUnk_7e != 0 && func_ov00_020aeef8()) {
mUnk_7b = true;
@@ -126,18 +127,21 @@ ARM void PlayerControl::func_ov00_020af06c() {
}
}
}
mUnk_7b = (mUnk_7b & itemManager->func_ov00_020ad790(1)) != 0;
mUnk_7b = (mUnk_7b & gItemManager->func_ov00_020ad790(1)) != 0;
if (itemManager->mEquippedItem == ItemFlag_Hammer && !mUsingEquipItem && mUnk_7b == true) {
ActorNaviBase *courageFairy = itemManager->GetFairy(FairyId_Courage);
if (equippedItem == ItemFlag_Hammer && !usingEquipItem && mUnk_7b == true) {
ActorNaviBase *courageFairy = gItemManager->GetFairy(FairyId_Courage);
if (courageFairy != NULL) {
mAimWorld.x = courageFairy->mPos.x;
mAimWorld.y = gPlayerPos.y + FLOAT_TO_Q20(0.5);
mAimWorld.z = courageFairy->mPos.z;
q20 x = courageFairy->mPos.x;
q20 y = gPlayerPos.y + FLOAT_TO_Q20(0.5);
q20 z = courageFairy->mPos.z;
mAimWorld.x = x;
mAimWorld.y = y;
mAimWorld.z = z;
}
}
}
if (!mUnk_7a) {
if (mUnk_7a) {
mUsingEquipItem = mUnk_7b;
}
}
@@ -176,9 +180,9 @@ bool PlayerControl::func_ov00_020af2d4(u32 param1, bool param2) {
if (mUnk_7c) {
bool unk1 = true;
bool unk2 = true;
bool unk2 = false;
if ((param1 & 0x2) != 0 && (data_02056be4[data_027e077c.mUnk_0] & 0x1) != 0) {
unk2 = false;
unk2 = true;
}
if (!unk2 && ((param1 & 0x1) == 0 || !this->func_ov00_020aeef8() || !data_027e103c->mUnk_24)) {
unk1 = false;
@@ -242,7 +246,7 @@ ARM void PlayerControl::func_ov00_020af538(bool param1, u8 param2) {
mUnk_7e = param2;
mUnk_7d = param1;
if (mUnk_78) {
bool unk = gAdventureFlags->func_ov00_02097738() || data_027e0c68->mUnk_04 ? false : true;
bool unk = gAdventureFlags->func_ov00_02097738() || data_027e0c68.mUnk_04 ? false : true;
if (unk) {
if (!this->func_ov00_020af4a4()) {
mUnk_7c = false;
@@ -317,17 +321,19 @@ ARM bool PlayerControl::func_ov00_020af778() {
return false;
}
bool bVar1 = false;
EquipItem *equipItem;
bool bVar1 = false;
EquipItem *equipItem = NULL;
if ((mFlags & TouchFlag_UntouchedNow) != 0 && mTouchDuration < 21) {
s32 dx = mTouchLastX - mTouchFastX;
s32 dy = mTouchLastY - mTouchFastY;
if (dx * dx + dy * dy < 100) {
bVar1 = !this->func_ov00_020af2d4(7, true);
if (!bVar1 && mUsingEquipItem) {
ItemFlag equipId = gPlayer->GetEquipId();
if (equipId != ItemFlag_None) {
equipItem = gItemManager->GetEquipItem(equipId);
if (this->func_ov00_020af2d4(7, true)) {
bVar1 = true;
if (mUsingEquipItem) {
ItemFlag equipId = gPlayer->GetEquipId();
if (equipId != ItemFlag_None) {
equipItem = gItemManager->GetEquipItem(equipId);
}
}
}
}
@@ -358,13 +364,13 @@ ARM bool PlayerControl::func_ov00_020af778() {
return true;
}
} else {
if (equipItem->vfunc_48()) {
if (equipItem->vfunc_48(iVar4)) {
this->func_ov00_020af6e4(&vec, followDistance, uVar4);
return true;
}
if (followDistance == 0 && equipItem->vfunc_40()) {
this->ApplyTouchWorld(&vec, 0);
this->func_ov00_020af6e4(&vec, 0, uVar4);
this->func_ov00_020af6e4(&vec, followDistance, uVar4);
return true;
}
}
@@ -396,17 +402,16 @@ ARM bool PlayerControl::func_ov00_020afad8(Vec3p *param1) {
ARM void PlayerControl::func_ov00_020afb6c() {
bool iVar1 = this->func_ov00_020af778();
Actor *followActor = gActorManager->GetActor(&mFollowRef);
FairyId fairyId = gItemManager->GetEquippedFairy();
ActorNaviBase *fairy = gItemManager->GetFairy(fairyId);
ItemManager *itemMgr = gItemManager;
FairyId fairyId = itemMgr->GetEquippedFairy();
ActorNaviBase *fairy = itemMgr->GetFairy(fairyId);
if (followActor == NULL && fairy != NULL) {
if (followActor == NULL && !mFollowing && fairy != NULL) {
fairy->func_ov000_020bad18();
}
q20 followDist = mFollowDist;
if (followActor == NULL) {
mFollowRef.Reset();
} else {
if (followActor != NULL) {
followDist = Vec3p_Distance(&gPlayerPos, &followActor->mPos);
Cylinder followHitbox;
followActor->GetHitbox(&followHitbox);
@@ -417,47 +422,80 @@ ARM void PlayerControl::func_ov00_020afb6c() {
switch (followActor->mUnk_12c) {
case 0: mFollowRef.Reset(); break;
case 1: iVar8 = 1; break;
case 2:
iVar8 = 3;
followHitbox.pos.y += followHitbox.size;
uVar9 = 0;
break;
case 3:
case 4:
iVar8 = 2;
followHitbox.pos.y += followHitbox.size;
uVar9 = 2;
break;
case 5:
iVar8 = 2;
uVar9 = 1;
followHitbox.pos.y += followActor->mYOffset;
break;
case 2:
iVar8 = 3;
followHitbox.pos.y += followHitbox.size;
uVar9 = 0;
break;
default:
iVar8 = 2;
followHitbox.pos.y += followHitbox.size;
uVar9 = 2;
break;
}
if (iVar8 != 0 && gPlayerLink->GetCurrentCharacter() == PlayerCharacter_Link) {
this->func_ov00_020aff90(&followHitbox, iVar8);
this->func_ov00_020aff90(&followHitbox.pos, iVar8);
if (iVar1) {
data_027e0ffc.func_ov000_020ced64(&followHitbox, followActor->mRef.id);
data_027e0ffc.func_ov000_020ced64(&followHitbox, followActor->mRef.id, uVar9);
}
}
} else {
mFollowRef.Reset();
}
if (!mFollowing) {
mFollowObject = NULL;
} else {
mFollowObject = (void *) gMapManager->MapData_vfunc_78();
if (mFollowing) {
mFollowObject = (void *) gMapManager->MapData_vfunc_78(&mUnk_9c);
Vec3p local_3c;
s32 iVar2;
s32 iVar7;
if (mFollowObject == NULL) {
if (mFollowObject != NULL) {
local_3c = *(Vec3p *) ((u32) mFollowObject + 0x18);
void *piVar4 = (*(void *(**) (void *) )((*(u32 *) mFollowObject) + 0x54))(mFollowObject);
if (piVar4 == NULL) {
iVar7 = 0;
} else {
iVar7 = (*(s32(**)(void *))((*(u32 *) piVar4) + 0x44))(piVar4);
}
local_3c.y += iVar7;
if (*(s8 *) ((u32) mFollowObject + 0x12) == 1) {
iVar2 = 1;
iVar7 = 3;
} else {
iVar2 = 2;
iVar7 = 2;
}
} else {
local_3c.y = gPlayerPos.y;
Vec2b local_44 = mUnk_9c;
gMapManager->func_ov00_02083c7c(&local_3c, local_44);
iVar2 = 2;
iVar7 = 3;
} else {
}
if (iVar2 != 0 && gPlayerLink->GetCurrentCharacter() == PlayerCharacter_Link) {
this->func_ov00_020aff90(&local_3c, iVar2);
if (iVar1) {
data_027e0ffc.func_ov000_020ced7c(&local_3c, mUnk_9c.x, mUnk_9c.y, iVar7);
}
}
followDist = Vec3p_Distance(&gPlayerPos, &local_3c);
} else {
mFollowObject = NULL;
}
if (mFollowStuckTimer > 0 && mFollowDist - followDist <= FLOAT_TO_Q20(0.01)) {
mFollowStuckTimer -= 1;
if (mFollowStuckTimer <= 0) {
this->StopFollowing();
}
}
mFollowDist = followDist;
}
ARM bool PlayerControl::func_ov00_020afe88(s32 param1, bool param2) {
@@ -490,7 +528,7 @@ ARM bool PlayerControl::func_ov00_020afeec(unk32 param1, bool param2) {
}
}
ARM void PlayerControl::func_ov00_020aff90(Cylinder *param1, unk32 param2) {
ARM void PlayerControl::func_ov00_020aff90(Vec3p *param1, unk32 param2) {
if (data_027e0d38->func_ov000_02078b40() == 2) {
return;
}
@@ -509,8 +547,8 @@ ARM void PlayerControl::func_ov00_020affec(Vec3p *param1, s32 y, s32 param3, Vec
Vec3p_Axpy(y, &mUnk_44, &mTouchWorld, &local_24);
Vec3p local_30;
local_30.x = param4->x - local_24.x;
local_30.y = 0;
local_30.x = param4->x - local_24.x;
local_30.z = param4->z - local_24.z;
q20 iVar2 = Vec3p_Length(&local_30);
if (iVar2 <= param3) {