mirror of
https://github.com/zeldaret/ph
synced 2026-07-11 22:40:17 -04:00
PlayerControl: Decomp 38%
This commit is contained in:
@@ -2202,10 +2202,10 @@ _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_020aff90Eii kind:function(arm,size=0x5c) addr:0x20aff90
|
||||
_ZN13PlayerControl18func_ov00_020aff90EP8Cylinderi kind:function(arm,size=0x5c) addr:0x20aff90
|
||||
_ZN13PlayerControl18func_ov00_020affecEP5Vec3piiS1_ kind:function(arm,size=0x160) addr:0x20affec
|
||||
_ZN13PlayerControl18func_ov00_020b014cEv kind:function(arm,size=0xd0) addr:0x20b014c
|
||||
_ZN13PlayerControl6SetAimEv kind:function(arm,size=0x24) addr:0x20b021c
|
||||
_ZN13PlayerControl18func_ov00_020b014cEP5Vec3p kind:function(arm,size=0xd0) addr:0x20b014c
|
||||
_ZN13PlayerControl8ResetAimEv kind:function(arm,size=0x24) addr:0x20b021c
|
||||
_ZN13PlayerControl14UpdateAimWorldEP5Vec3p kind:function(arm,size=0xe8) addr:0x20b0240
|
||||
_ZN13PlayerControl13GetTouchAngleEv kind:function(arm,size=0x24) addr:0x20b0328
|
||||
_ZN13PlayerControl18func_ov00_020b034cEv kind:function(arm,size=0xcc) addr:0x20b034c
|
||||
@@ -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_020baca8EP5Vec3pi kind:function(arm,size=0x70) addr:0x20baca8
|
||||
_ZN13ActorNaviBase19func_ov000_020baca8EP8Cylinderi 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
|
||||
|
||||
@@ -286,7 +286,7 @@ func_ov024_02178204 kind:function(arm,size=0x30) addr:0x2178204
|
||||
func_ov024_02178234 kind:function(arm,size=0xec) addr:0x2178234
|
||||
func_ov024_02178320 kind:function(arm,size=0x20) addr:0x2178320
|
||||
func_ov024_02178340 kind:function(arm,size=0x8) addr:0x2178340
|
||||
func_ov024_02178348 kind:function(arm,size=0x358) addr:0x2178348
|
||||
_ZN13PlayerControl19func_ov024_02178348EP5Vec3p kind:function(arm,size=0x358) addr:0x2178348
|
||||
func_ov024_021786a0 kind:function(arm,size=0x10) addr:0x21786a0
|
||||
func_ov024_021786b0 kind:function(arm,size=0x30) addr:0x21786b0
|
||||
func_ov024_021786e0 kind:function(arm,size=0x20) addr:0x21786e0
|
||||
|
||||
@@ -2202,10 +2202,10 @@ _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_020aff90Eii kind:function(arm,size=0x5c) addr:0x20aff30
|
||||
_ZN13PlayerControl18func_ov00_020aff90EP8Cylinderi kind:function(arm,size=0x5c) addr:0x20aff30
|
||||
_ZN13PlayerControl18func_ov00_020affecEP5Vec3piiS1_ kind:function(arm,size=0x160) addr:0x20aff8c
|
||||
_ZN13PlayerControl18func_ov00_020b014cEv kind:function(arm,size=0xd0) addr:0x20b00ec
|
||||
_ZN13PlayerControl6SetAimEv kind:function(arm,size=0x24) addr:0x20b01bc
|
||||
_ZN13PlayerControl18func_ov00_020b014cEP5Vec3p kind:function(arm,size=0xd0) addr:0x20b00ec
|
||||
_ZN13PlayerControl8ResetAimEv kind:function(arm,size=0x24) addr:0x20b01bc
|
||||
_ZN13PlayerControl14UpdateAimWorldEP5Vec3p kind:function(arm,size=0xe8) addr:0x20b01e0
|
||||
_ZN13PlayerControl13GetTouchAngleEv kind:function(arm,size=0x24) addr:0x20b02c8
|
||||
_ZN13PlayerControl18func_ov00_020b034cEv kind:function(arm,size=0xcc) addr:0x20b02ec
|
||||
@@ -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_020baca8EP5Vec3pi kind:function(arm,size=0x70) addr:0x20bac48
|
||||
_ZN13ActorNaviBase19func_ov000_020baca8EP8Cylinderi 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
|
||||
|
||||
@@ -286,7 +286,7 @@ func_ov024_02178204 kind:function(arm,size=0x30) addr:0x2178164
|
||||
func_ov024_02178234 kind:function(arm,size=0xec) addr:0x2178194
|
||||
func_ov024_02178320 kind:function(arm,size=0x20) addr:0x2178280
|
||||
func_ov024_02178340 kind:function(arm,size=0x8) addr:0x21782a0
|
||||
func_ov024_02178348 kind:function(arm,size=0x358) addr:0x21782a8
|
||||
_ZN13PlayerControl19func_ov024_02178348EP5Vec3p kind:function(arm,size=0x358) addr:0x21782a8
|
||||
func_ov024_021786a0 kind:function(arm,size=0x10) addr:0x2178600
|
||||
func_ov024_021786b0 kind:function(arm,size=0x30) addr:0x2178610
|
||||
func_ov024_021786e0 kind:function(arm,size=0x20) addr:0x2178640
|
||||
|
||||
@@ -97,7 +97,7 @@ public:
|
||||
bool func_ov000_020ba458();
|
||||
void func_ov000_020ba4e4();
|
||||
void func_ov000_020ba53c();
|
||||
void func_ov000_020baca8(Vec3p *param1, unk32 param2);
|
||||
void func_ov000_020baca8(Cylinder *param1, unk32 param2);
|
||||
void func_ov000_020bad18();
|
||||
static void func_ov000_020bb0ac();
|
||||
static void func_ov000_020bb0e0();
|
||||
|
||||
@@ -59,7 +59,7 @@ public:
|
||||
/* 94 */ ActorRef mLastFollowRef;
|
||||
/* 9c */ Vec2b mUnk_9c;
|
||||
/* 9e */ unk8 mUnk_9e[2];
|
||||
/* a0 */ void *mFollowActor;
|
||||
/* a0 */ void *mFollowObject;
|
||||
/* a4 */ q20 mFollowDist;
|
||||
/* a8 */ u16 mFollowStuckTimer;
|
||||
/* aa */ s16 mCutsceneEndTimer;
|
||||
@@ -98,8 +98,8 @@ public:
|
||||
bool func_ov00_020afeec(unk32 param1, bool param2);
|
||||
void func_ov00_020aff90(Cylinder *param1, unk32 param2);
|
||||
void func_ov00_020affec(Vec3p *param1, s32 y, s32 param3, Vec3p *param4);
|
||||
void func_ov00_020b014c();
|
||||
void SetAim();
|
||||
void func_ov00_020b014c(Vec3p *param1);
|
||||
void ResetAim();
|
||||
bool UpdateAimWorld(Vec3p *param1);
|
||||
s16 GetTouchAngle();
|
||||
u32 func_ov00_020b034c();
|
||||
@@ -137,6 +137,8 @@ public:
|
||||
void Init();
|
||||
void func_ov004_0210b1d0();
|
||||
static void func_ov004_0210b1f0();
|
||||
|
||||
bool func_ov024_02178348(Vec3p *param1);
|
||||
};
|
||||
|
||||
extern PlayerControl *gPlayerControl;
|
||||
|
||||
@@ -87,8 +87,8 @@ public:
|
||||
/* 68 */ virtual void vfunc_68(unk32 param1, unk32 param2);
|
||||
/* 6c */ virtual void vfunc_6c(s32 param1, Vec3p *param2);
|
||||
/* 70 */ virtual void vfunc_70(s32 param1);
|
||||
/* 74 */ virtual unk32 vfunc_74();
|
||||
/* 78 */ virtual unk32 vfunc_78();
|
||||
/* 74 */ virtual unk32 vfunc_74(s32 param1);
|
||||
/* 78 */ virtual unk32 vfunc_78(s32 param1);
|
||||
/* 7c */ virtual unk32 vfunc_7c();
|
||||
/* 80 */
|
||||
|
||||
@@ -105,3 +105,5 @@ public:
|
||||
|
||||
PlayerControlData();
|
||||
};
|
||||
|
||||
extern PlayerControlData *gPlayerControlData;
|
||||
|
||||
@@ -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(Vec3p *param1, unk32 param2) {}
|
||||
void ActorNaviBase::func_ov000_020baca8(Cylinder *param1, unk32 param2) {}
|
||||
void ActorNaviBase::func_ov000_020bad18() {}
|
||||
bool ActorNaviBase::vfunc_90() {}
|
||||
void ActorNaviBase::vfunc_94() {}
|
||||
|
||||
@@ -78,8 +78,8 @@ ARM void PlayerControl::SetUnk_80() {
|
||||
|
||||
ARM void PlayerControl::StopFollowing() {
|
||||
mFollowRef.Reset();
|
||||
mFollowing = false;
|
||||
mFollowActor = NULL;
|
||||
mFollowing = false;
|
||||
mFollowObject = NULL;
|
||||
}
|
||||
|
||||
ARM void PlayerControl::func_ov00_020af06c() {
|
||||
@@ -442,13 +442,13 @@ ARM void PlayerControl::func_ov00_020afb6c() {
|
||||
}
|
||||
|
||||
if (!mFollowing) {
|
||||
mFollowActor = NULL;
|
||||
mFollowObject = NULL;
|
||||
} else {
|
||||
mFollowActor = (void *) gMapManager->MapData_vfunc_78();
|
||||
mFollowObject = (void *) gMapManager->MapData_vfunc_78();
|
||||
Vec3p local_3c;
|
||||
s32 iVar2;
|
||||
s32 iVar7;
|
||||
if (mFollowActor == NULL) {
|
||||
if (mFollowObject == NULL) {
|
||||
local_3c.y = gPlayerPos.y;
|
||||
Vec2b local_44 = mUnk_9c;
|
||||
gMapManager->func_ov00_02083c7c(&local_3c, local_44);
|
||||
@@ -459,15 +459,168 @@ ARM void PlayerControl::func_ov00_020afb6c() {
|
||||
}
|
||||
}
|
||||
|
||||
bool PlayerControl::func_ov00_020afe88(s32 param1, bool param2) {}
|
||||
bool PlayerControl::func_ov00_020afeec(unk32 param1, bool param2) {}
|
||||
void PlayerControl::func_ov00_020aff90(Cylinder *param1, unk32 param2) {}
|
||||
void PlayerControl::func_ov00_020affec(Vec3p *param1, s32 y, s32 param3, Vec3p *param4) {}
|
||||
void PlayerControl::func_ov00_020b014c() {}
|
||||
void PlayerControl::SetAim() {}
|
||||
bool PlayerControl::UpdateAimWorld(Vec3p *param1) {}
|
||||
s16 PlayerControl::GetTouchAngle() {}
|
||||
u32 PlayerControl::func_ov00_020b034c() {}
|
||||
ARM bool PlayerControl::func_ov00_020afe88(s32 param1, bool param2) {
|
||||
if (!mUnk_7d || !gPlayerControlData->vfunc_74(param1)) {
|
||||
return false;
|
||||
}
|
||||
if (!param2) {
|
||||
return true;
|
||||
}
|
||||
return param1 == 2 || param1 == 6;
|
||||
}
|
||||
|
||||
ARM bool PlayerControl::func_ov00_020afeec(unk32 param1, bool param2) {
|
||||
if (!mUnk_7d) {
|
||||
return false;
|
||||
}
|
||||
if (!gPlayerControlData->vfunc_78(param1)) {
|
||||
return false;
|
||||
}
|
||||
switch (param1) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 7:
|
||||
case 13: return true;
|
||||
|
||||
case 10:
|
||||
case 11: return param2;
|
||||
|
||||
default: return !param2;
|
||||
}
|
||||
}
|
||||
|
||||
ARM void PlayerControl::func_ov00_020aff90(Cylinder *param1, unk32 param2) {
|
||||
if (data_027e0d38->func_ov000_02078b40() == 2) {
|
||||
return;
|
||||
}
|
||||
ItemManager *itemMgr = gItemManager;
|
||||
FairyId fairyId = itemMgr->GetEquippedFairy();
|
||||
ActorNaviBase *fairy = itemMgr->GetFairy(fairyId);
|
||||
if (fairy == NULL) {
|
||||
return;
|
||||
}
|
||||
fairy->func_ov000_020baca8(param1, param2);
|
||||
}
|
||||
|
||||
ARM void PlayerControl::func_ov00_020affec(Vec3p *param1, s32 y, s32 param3, Vec3p *param4) {
|
||||
if (mUnk_44.x != 0 || mUnk_44.z != 0) {
|
||||
Vec3p local_24;
|
||||
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.z = param4->z - local_24.z;
|
||||
q20 iVar2 = Vec3p_Length(&local_30);
|
||||
if (iVar2 <= param3) {
|
||||
*param1 = local_24;
|
||||
return;
|
||||
}
|
||||
|
||||
Vec3p local_3c;
|
||||
local_3c.x = mUnk_44.x;
|
||||
local_3c.y = 0;
|
||||
local_3c.z = mUnk_44.z;
|
||||
q20 lengthInv = CoReciprocal(Vec3p_Length(&local_3c));
|
||||
local_3c.x = MUL_Q20(local_3c.x, lengthInv);
|
||||
local_3c.z = MUL_Q20(local_3c.z, lengthInv);
|
||||
iVar2 = Vec3p_Dot(&local_30, &local_3c);
|
||||
|
||||
Vec3p local_48;
|
||||
local_48.x = local_3c.x;
|
||||
local_48.y = lengthInv;
|
||||
local_48.z = local_3c.z;
|
||||
Vec3p_Axpy(iVar2 - param3, &local_48, &local_24, param1);
|
||||
return;
|
||||
}
|
||||
|
||||
param1->x = mTouchWorld.x;
|
||||
param1->y = y;
|
||||
param1->z = mTouchWorld.z;
|
||||
}
|
||||
|
||||
extern u32 data_ov000_020ee198;
|
||||
extern u32 data_027e0f64;
|
||||
|
||||
ARM void PlayerControl::func_ov00_020b014c(Vec3p *param1) {
|
||||
if ((data_ov000_020ee198 & 1) == 0) {
|
||||
data_ov000_020ee198 |= 1;
|
||||
}
|
||||
if (*(s32 *) (*(s32 *) (data_027e0f64 + 0x4) + 0x15c) == 0x16) {
|
||||
return;
|
||||
}
|
||||
if (!this->func_ov00_020aeef8()) {
|
||||
return;
|
||||
}
|
||||
if (mTouchDuration > 0) {
|
||||
ItemManager *itemMgr = gItemManager;
|
||||
FairyId fairyId = itemMgr->GetEquippedFairy();
|
||||
ActorNaviBase *fairy = itemMgr->GetFairy(fairyId);
|
||||
if (fairy != NULL) {
|
||||
Vec3p auStack_1c;
|
||||
this->func_ov00_020affec(&auStack_1c, FLOAT_TO_Q20(0.5), FLOAT_TO_Q20(8.0), param1);
|
||||
fairy->func_ov000_020ba204(&auStack_1c, &mUnk_44, mTouchWorld.y + FLOAT_TO_Q20(4.2));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ARM void PlayerControl::ResetAim() {
|
||||
mAim = gVec3p_ZERO;
|
||||
}
|
||||
|
||||
extern "C" s32 func_ov000_020a5e9c(unk32 param1);
|
||||
|
||||
ARM bool PlayerControl::UpdateAimWorld(Vec3p *param1) {
|
||||
Vec3p pos;
|
||||
pos = gPlayerPos;
|
||||
|
||||
s32 iVar2 = func_ov000_020a5e9c(data_027e0d38->mUnk_0c);
|
||||
if (iVar2 == 0x2f && *(s32 *) (*(s32 *) (data_027e0f64 + 0x4) + 0x15c) == 0x31) {
|
||||
return this->func_ov024_02178348(param1);
|
||||
}
|
||||
|
||||
if (this->CheckTouching(1)) {
|
||||
this->func_ov00_020affec(param1, 0, FLOAT_TO_Q20(8.0), &pos);
|
||||
mAimWorld = *param1;
|
||||
return true;
|
||||
}
|
||||
*param1 = mAimWorld;
|
||||
return false;
|
||||
}
|
||||
|
||||
ARM s16 PlayerControl::GetTouchAngle() {
|
||||
if (mTouchDuration >= 0) {
|
||||
return mTouchAngle;
|
||||
}
|
||||
if (!mUnk_7f) {
|
||||
return 0;
|
||||
}
|
||||
return mUnk_ac;
|
||||
}
|
||||
|
||||
const q20 data_ov000_020e6144 = FLOAT_TO_Q20(80.0);
|
||||
|
||||
ARM u32 PlayerControl::func_ov00_020b034c() {
|
||||
if (mTouchDuration >= 0 && this->func_ov00_020af2d4(1, true)) {
|
||||
q20 uVar5 = func_01ff992c(data_ov000_020e6144);
|
||||
s64 lVar1 = mTouchDist * uVar5;
|
||||
if (mTouchDuration < 4) {
|
||||
lVar1 -= (4 - mTouchDuration) * FLOAT_TO_Q20(1.0);
|
||||
}
|
||||
if (lVar1 < 0) {
|
||||
return 0;
|
||||
}
|
||||
if (lVar1 > FLOAT_TO_Q20(1.0)) {
|
||||
return FLOAT_TO_Q20(1.0);
|
||||
}
|
||||
return lVar1;
|
||||
}
|
||||
if (!mUnk_7f && (data_027e05f8.mUnk_0 & 0xf0) != 0) {
|
||||
return FLOAT_TO_Q20(1.0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 PlayerControl::func_ov00_020b0418() {}
|
||||
bool PlayerControl::func_ov00_020b049c(Vec3p *param1, bool param2) {}
|
||||
bool PlayerControl::func_ov00_020b05e8(Vec3p *param1) {}
|
||||
|
||||
@@ -18,8 +18,8 @@ void PlayerControlData::vfunc_2c() {}
|
||||
void PlayerControlData::vfunc_30() {}
|
||||
void PlayerControlData::vfunc_34() {}
|
||||
unk32 PlayerControlData::vfunc_7c() {}
|
||||
unk32 PlayerControlData::vfunc_74() {}
|
||||
unk32 PlayerControlData::vfunc_78() {}
|
||||
unk32 PlayerControlData::vfunc_74(s32 param1) {}
|
||||
unk32 PlayerControlData::vfunc_78(s32 param1) {}
|
||||
void PlayerControlData::func_ov000_020b484c(s32 param1, s32 param2, s32 param3) {}
|
||||
void PlayerControlData::vfunc_6c(s32 param1, Vec3p *param2) {}
|
||||
void PlayerControlData::vfunc_5c() {}
|
||||
|
||||
Reference in New Issue
Block a user