mirror of
https://github.com/zeldaret/ph
synced 2026-08-07 18:22:16 -04:00
EquipBombchu (#131)
* Map symbol in Game * EquipBombchu 12% * EquipBombchu 53% * EquipBombchu 71% * configure: Don't verify dsd version if `--dsd` specified * EquipBombchu 89% * Fix regression
This commit is contained in:
@@ -15,6 +15,7 @@ extern "C" {
|
||||
#include "Player/PlayerLinkBase.hpp"
|
||||
#include "Player/TouchControl.hpp"
|
||||
#include "Save/AdventureFlags.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020e9c88.hpp"
|
||||
|
||||
static char *sShipTypes[] = {"brg", "anc", "bow", "hul", "can", "dco", "pdl", "fnl"};
|
||||
|
||||
@@ -491,7 +492,7 @@ ARM bool Actor::CollidesWithShield(Cylinder *param1) {
|
||||
Vec3p vecFromPlayer;
|
||||
Vec3p_Sub(&mPos, &gPlayerPos, &vecFromPlayer);
|
||||
s32 currAngle = gPlayerAngle;
|
||||
s32 angle = Atan2(vecFromPlayer.x, vecFromPlayer.z);
|
||||
s32 angle = FX_Atan2Idx(vecFromPlayer.x, vecFromPlayer.z);
|
||||
s32 angleDiff = (s16) angle - currAngle;
|
||||
if (angleDiff < 0) {
|
||||
angleDiff = -angleDiff;
|
||||
@@ -705,7 +706,7 @@ ARM s16 Actor::GetAngleTo(Vec3p *vec) {
|
||||
q20 dz = vec->z - mPos.z;
|
||||
q20 dx = vec->x - mPos.x;
|
||||
if (dx != 0 || dz != 0) {
|
||||
angle = Atan2(dx, dz);
|
||||
angle = FX_Atan2Idx(dx, dz);
|
||||
}
|
||||
return angle;
|
||||
}
|
||||
@@ -973,11 +974,9 @@ ARM void Actor::KillInBounds() {
|
||||
this->Kill();
|
||||
}
|
||||
|
||||
extern unk32 data_ov00_020e9c88;
|
||||
extern "C" void func_ov00_0207b89c(unk32 *param1, s32 param2, Vec3p *param3, void *param4, Actor *param5);
|
||||
void vfunc_ac_Thunk(Actor *actor);
|
||||
ARM void Actor::func_ov00_020c31c0(unk32 param1) {
|
||||
func_ov00_0207b89c(&data_ov00_020e9c88, param1, &mPos, &vfunc_ac_Thunk, this);
|
||||
data_ov000_020e9c88.func_ov000_0207b89c(param1, &mPos, (void (*)(void *)) &vfunc_ac_Thunk, this);
|
||||
}
|
||||
|
||||
ARM void vfunc_ac_Thunk(Actor *actor) {
|
||||
|
||||
@@ -10,7 +10,7 @@ UnkStruct_ov000_020b8110::UnkStruct_ov000_020b8110() :
|
||||
UnkStruct_ov000_020b8110::~UnkStruct_ov000_020b8110() {}
|
||||
void UnkStruct_ov000_020b8110::vfunc_08(unk16 *param1) {}
|
||||
void UnkStruct_ov000_020b8110::vfunc_18(s32 *param1) {}
|
||||
void UnkStruct_ov000_020b8110::vfunc_14(u16 *param1) {}
|
||||
bool UnkStruct_ov000_020b8110::vfunc_14(u16 *param1) {}
|
||||
void ActorNavi::func_ov000_020b8200() {}
|
||||
void ActorNavi::vfunc_c4() {}
|
||||
void ActorNavi::vfunc_c8() {}
|
||||
|
||||
@@ -167,24 +167,24 @@ ARM ItemModel *ItemManager::GetItemModel(ItemModelId id) {
|
||||
return mItemModels[id];
|
||||
}
|
||||
|
||||
extern "C" void func_ov000_020c0bdc(unk32 param1, unk32 param2);
|
||||
ARM void ItemManager::func_ov00_020ad538(unk32 param1) const {
|
||||
extern "C" void *func_ov000_020c0bdc(unk32 param1, const ItemManager_Unk1 *param2);
|
||||
ARM void *ItemManager::func_ov00_020ad538(const ItemManager_Unk1 *param1) const {
|
||||
unk32 unk1 = gItemModelLoader->func_ov000_020bb3a8(6);
|
||||
func_ov000_020c0bdc(unk1, param1);
|
||||
return func_ov000_020c0bdc(unk1, param1);
|
||||
}
|
||||
|
||||
ARM void ItemManager::func_ov00_020ad560(unk32 param1) const {
|
||||
ARM void *ItemManager::func_ov00_020ad560(const ItemManager_Unk1 *param1) const {
|
||||
unk32 unk1 = gItemModelLoader->func_ov000_020bb3a8(7);
|
||||
func_ov000_020c0bdc(unk1, param1);
|
||||
return func_ov000_020c0bdc(unk1, param1);
|
||||
}
|
||||
|
||||
ARM ItemModel *ItemManager::GetDungeonItemModel(u32 index) {
|
||||
return mDungeonItemModels[index];
|
||||
}
|
||||
|
||||
ARM void ItemManager::func_ov00_020ad594(unk32 param1) const {
|
||||
ARM void *ItemManager::func_ov00_020ad594(const ItemManager_Unk1 *param1) const {
|
||||
unk32 unk1 = gItemModelLoader->func_ov000_020bb3a8(11);
|
||||
func_ov000_020c0bdc(unk1, param1);
|
||||
return func_ov000_020c0bdc(unk1, param1);
|
||||
}
|
||||
|
||||
ARM void ItemManager::Sword_vfunc_38(unk32 param1) {
|
||||
|
||||
@@ -27,7 +27,7 @@ unk32 MapBase::vfunc_68(Vec3p *param_1, bool param_2) {}
|
||||
unk8 MapBase::func_ov00_0207e940(unk8 *param_1) {}
|
||||
unk8 MapBase::func_ov00_0207e968() {}
|
||||
unk8 MapBase::func_ov00_0207e96c() {}
|
||||
unk8 MapBase::vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) {}
|
||||
unk8 MapBase::vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4) {}
|
||||
unk32 MapBase::vfunc_70(Vec3p *param_2) {}
|
||||
unk32 *MapBase::vfunc_74(Vec3p *param_2) {}
|
||||
unk8 MapBase::func_ov00_0207f100() {}
|
||||
|
||||
@@ -1264,7 +1264,7 @@ ARM unk32 MapManager::func_ov00_02083f44(Vec3p *param_2, bool param_3) {
|
||||
return this->func_ov00_02083ef8(param_2, &local_18, param_3);
|
||||
}
|
||||
|
||||
unk8 MapManager::MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) {
|
||||
unk8 MapManager::MapData_vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4) {
|
||||
this->mMap->vfunc_6c(param_2, param_3, param_4);
|
||||
}
|
||||
|
||||
@@ -2503,7 +2503,7 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param
|
||||
Vec2p iStack_104;
|
||||
Vec3p VStack_f0;
|
||||
Vec3p VStack_e4;
|
||||
Vec4p VStack_d8;
|
||||
Sphere VStack_d8;
|
||||
Vec3p VStack_c8;
|
||||
Vec3p VStack_bc;
|
||||
Vec3p VStack_b0;
|
||||
@@ -2566,11 +2566,11 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param
|
||||
VStack_b0.z = VStack_bc.z;
|
||||
Vec3p_Add(&VStack_b0, &VStack_c8, &VStack_b0);
|
||||
}
|
||||
bVar5 = false;
|
||||
VStack_d8.y = param_5 << 1;
|
||||
VStack_d8.x = 0;
|
||||
VStack_d8.z = 0;
|
||||
VStack_d8.w = param_5;
|
||||
bVar5 = false;
|
||||
VStack_d8.pos.y = param_5 << 1;
|
||||
VStack_d8.pos.x = 0;
|
||||
VStack_d8.pos.z = 0;
|
||||
VStack_d8.radius = param_5;
|
||||
do {
|
||||
bVar4 = func_01ffbe78(param_2, &VStack_b0, &VStack_bc, &VStack_d8);
|
||||
if (bVar4) {
|
||||
|
||||
@@ -13,7 +13,7 @@ unk32 EquipItem::vfunc_48(unk32 param1) const {}
|
||||
s32 EquipItem::vfunc_4c() const {}
|
||||
Vec3p *EquipItem::GetPlayerPos() {}
|
||||
void EquipItem::func_ov000_020be99c(Vec3p *param1) {}
|
||||
void EquipItem::func_ov000_020be9e4(s32 param1, s32 param2, s32 param3, s16 param4) {}
|
||||
void EquipItem::func_ov000_020be9e4(Vec3p param3, s16 param4) {}
|
||||
s16 EquipItem::GetAmmo() const {}
|
||||
void EquipItem::GiveAmmo(u32 amount) {}
|
||||
bool EquipItem::GetHitbox(Cylinder *hitbox) const {}
|
||||
|
||||
@@ -54,7 +54,7 @@ ARM void PlayerBase::LookAt(Vec3p *target) {
|
||||
if (vec.x == 0 && vec.z == 0) {
|
||||
return;
|
||||
}
|
||||
gPlayerAngle = Atan2(*(vs32 *) &vec.x, vec.z);
|
||||
gPlayerAngle = FX_Atan2Idx(*(vs32 *) &vec.x, vec.z);
|
||||
}
|
||||
|
||||
ARM bool PlayerBase::func_ov00_020a7c00(s32 param1) {
|
||||
|
||||
@@ -873,7 +873,7 @@ ARM bool PlayerControl::func_ov00_020b0b0c(s16 *pAngle, ItemFlag *pEquipId, unk3
|
||||
*pAngle = mTouchAngle + ((s16) (mTouchFastAngle - mTouchAngle)) / 2;
|
||||
|
||||
if (mTouchSpeed > FLOAT_TO_Q20(0.5)) {
|
||||
q4 touchMoveAngle = Atan2(mTouchSpeedX, mTouchSpeedY) - *pAngle;
|
||||
q4 touchMoveAngle = FX_Atan2Idx(mTouchSpeedX, mTouchSpeedY) - *pAngle;
|
||||
if (pFast != NULL) {
|
||||
*pFast = true;
|
||||
}
|
||||
@@ -881,7 +881,7 @@ ARM bool PlayerControl::func_ov00_020b0b0c(s16 *pAngle, ItemFlag *pEquipId, unk3
|
||||
return true;
|
||||
}
|
||||
|
||||
s32 unkAngle = Atan2(local_20.x, local_20.z);
|
||||
s32 unkAngle = FX_Atan2Idx(local_20.x, local_20.z);
|
||||
|
||||
s32 unkAngle2 = (s16) ((s16) unkAngle - *pAngle);
|
||||
Vec3p VStack_2c = {INT_TO_Q20(mTouchFastX), INT_TO_Q20(mTouchFastY), 0};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "Render/ModelRender.hpp"
|
||||
|
||||
ModelRender::ModelRender() {}
|
||||
ModelRender::ModelRender(unk32 param1) {}
|
||||
ModelRender::~ModelRender() {}
|
||||
void *ModelRender::GetLcdcAddress() {}
|
||||
void ModelRender::vfunc_0c(ItemModel *model) {}
|
||||
@@ -10,7 +10,7 @@ void ModelRender::SetRotationTranslation(Mat3p *rotation, Vec3p *translation) {}
|
||||
void ModelRender::SetTranslation(Vec3p *translation) {}
|
||||
void ModelRender::PushGeometryCommands() {}
|
||||
void ModelRender::vfunc_20() {}
|
||||
void ModelRender::vfunc_24(unk32 param1) {}
|
||||
void ModelRender::vfunc_24(UnkStruct_ov000_020c0c08 *param1) {}
|
||||
void ModelRender::vfunc_28() {}
|
||||
void ModelRender::vfunc_2c() {}
|
||||
void ModelRender::vfunc_34() {}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#include "Unknown/UnkStruct_ov000_020beba8.hpp"
|
||||
|
||||
UnkStruct_ov000_020beba8::UnkStruct_ov000_020beba8(unk32 param1) {}
|
||||
void UnkStruct_ov000_020beba8::vfunc_08(unk16 *param1) {}
|
||||
bool UnkStruct_ov000_020beba8::vfunc_08(UnkStruct_ov000_020beba8_08 *param1) {}
|
||||
void UnkStruct_ov000_020beba8::vfunc_0c(unk16 *param1) {}
|
||||
void UnkStruct_ov000_020beba8::vfunc_10(s32 *param1) {}
|
||||
bool UnkStruct_ov000_020beba8::vfunc_10(s32 *param1) {}
|
||||
void UnkStruct_ov000_020beba8::vfunc_18(s32 *param1) {}
|
||||
void UnkStruct_ov000_020beba8::vfunc_14(u16 *param1) {}
|
||||
bool UnkStruct_ov000_020beba8::vfunc_14(u16 *param1, s32 param2) {}
|
||||
UnkStruct_ov000_020beba8::~UnkStruct_ov000_020beba8() {}
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#include "Actor/Navi/ActorNavi.hpp"
|
||||
#include "Item/ItemManager.hpp"
|
||||
|
||||
ActorNavi::ActorNavi() {}
|
||||
ActorNavi::ActorNavi() :
|
||||
mUnk_294(0),
|
||||
mUnk_2f0(&mUnk_314, gItemManager->GetItemModel(ItemModelId_Hammer)) {}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "Actor/Navi/ActorNaviBase.hpp"
|
||||
|
||||
ActorNaviBase::ActorNaviBase() {}
|
||||
ActorNaviBase::ActorNaviBase() :
|
||||
mUnk_168(0) {}
|
||||
ActorNaviBase::~ActorNaviBase() {}
|
||||
void func_ov004_021079d4(unk32 *param1) {}
|
||||
bool ActorNaviBase::Init() {}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "Player/LinkStateDamage.hpp"
|
||||
|
||||
LinkStateDamage::LinkStateDamage(PlayerLinkBase *link) :
|
||||
LinkStateBase(link) {}
|
||||
LinkStateBase(link),
|
||||
mUnk_3c(0) {}
|
||||
unk32 *_Z19func_ov004_021083f4Piiii(unk32 *param1, unk32 param2, unk32 param3, unk32 param4) {}
|
||||
LinkStateDamage::~LinkStateDamage() {}
|
||||
|
||||
@@ -21,4 +21,4 @@ bool UnkStruct_027e103c::func_ov005_021040ec() {}
|
||||
void UnkStruct_027e103c::func_ov005_02104114() {}
|
||||
void UnkStruct_027e103c::func_ov005_0210413c() {}
|
||||
void UnkStruct_027e103c::func_ov005_02104160() {}
|
||||
void UnkStruct_027e103c::func_Ov005_0210418c(char param1) {}
|
||||
void UnkStruct_027e103c::func_ov005_0210418c(char param1) {}
|
||||
|
||||
@@ -227,7 +227,7 @@ ARM bool UnkFilterActor::Filter(Actor *actor) {
|
||||
Vec3p sp0;
|
||||
Vec3p_Sub(&actor->mPos, &mPos, &sp0);
|
||||
s16 angle2 = mAngle;
|
||||
s16 angle1 = (s16) Atan2(sp0.x, sp0.z);
|
||||
s16 angle1 = (s16) FX_Atan2Idx(sp0.x, sp0.z);
|
||||
s32 var_r6 = (s16) (angle1 - angle2) >> 3;
|
||||
if (var_r6 < 0) {
|
||||
var_r6 = -var_r6;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
ActorType ActorBlast::gType = ActorType(ActorTypeId_Blast, (ActorCreateFunc) ActorBlast::Create, NULL);
|
||||
|
||||
ActorBlast *ActorBlast::Create() {}
|
||||
void ActorBlast_Unk1::vfunc_10(s32 *param1) {}
|
||||
bool ActorBlast_Unk1::vfunc_10(s32 *param1) {}
|
||||
ActorBlast::ActorBlast() {}
|
||||
ActorBlast::~ActorBlast() {}
|
||||
bool ActorBlast::Init() {}
|
||||
|
||||
@@ -4,7 +4,7 @@ ActorType ActorBomb::gType = ActorType(ActorTypeId_Bomb, (ActorCreateFunc) Actor
|
||||
|
||||
ActorBomb *ActorBomb::Create() {}
|
||||
void ActorBomb_Unk1::vfunc_0c(unk16 *param1) {}
|
||||
void ActorBomb_Unk1::vfunc_10(s32 *param1) {}
|
||||
bool ActorBomb_Unk1::vfunc_10(s32 *param1) {}
|
||||
ActorBomb::ActorBomb() {}
|
||||
ActorBomb_Unk2::~ActorBomb_Unk2() {}
|
||||
ActorBomb::~ActorBomb() {}
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
#include "Player/EquipBombchu.hpp"
|
||||
|
||||
EquipBombchu::EquipBombchu() {}
|
||||
EquipBombchu_Unk1::EquipBombchu_Unk1() {}
|
||||
EquipBombchu::~EquipBombchu() {}
|
||||
void EquipBombchu::func_ov014_0213eba4() {}
|
||||
void EquipBombchu::func_ov014_0213ec40() {}
|
||||
void EquipBombchu::func_ov014_0213ec64() {}
|
||||
ItemFlag EquipBombchu::GetId() const {}
|
||||
void EquipBombchu::vfunc_34(unk16 *param1) {}
|
||||
Actor *EquipBombchu::func_ov014_0213ed74() {}
|
||||
Actor *EquipBombchu::func_ov014_0213ed74() const {}
|
||||
void *EquipBombchu::func_ov014_0213ed94(s32 param1) {}
|
||||
void EquipBombchu::func_ov014_0213eda0() {}
|
||||
|
||||
@@ -29,7 +29,7 @@ void MapOverworld::vfunc_b0(unk32 param_2, unk32 param_3) {}
|
||||
void MapOverworld::func_ov018_0215c650() {}
|
||||
void MapOverworld::func_ov018_0215c6ac() {}
|
||||
void MapOverworld::func_ov018_0215c6d0() {}
|
||||
MapOverworld_Unk1::MapOverworld_Unk1(u32 param1, u8 *param2, unk32 param3) :
|
||||
MapOverworld_Unk1::MapOverworld_Unk1(u32 param1, ItemModel *param2, unk32 param3) :
|
||||
UnkStruct_ov000_020c0c08(0, param2) {}
|
||||
void MapOverworld::func_ov018_0215c9ac() {}
|
||||
void func_ov018_0215ca24(s32 param1) {}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "Player/EquipScoop.hpp"
|
||||
#include "Player/LinkStateItem.hpp"
|
||||
|
||||
ModelRender EquipScoop::gModelRender;
|
||||
ModelRender EquipScoop::gModelRender(0);
|
||||
|
||||
void EquipScoop::vfunc_00() {}
|
||||
void EquipScoop::vfunc_18() {}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "Player/EquipBomb.hpp"
|
||||
#include "Player/LinkStateItem.hpp"
|
||||
|
||||
ModelRender EquipBomb::gModelRender;
|
||||
ModelRender EquipBomb::gModelRender(0);
|
||||
|
||||
void EquipBomb::vfunc_00() {}
|
||||
bool EquipBomb::IsUsable(unk32 param1) const {}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include "Player/EquipBow.hpp"
|
||||
#include "Player/LinkStateItem.hpp"
|
||||
|
||||
ModelRender EquipBow::gModelRenderBow;
|
||||
ModelRender EquipBow::gModelRenderArrow;
|
||||
ModelRender EquipBow::gModelRenderBow(0);
|
||||
ModelRender EquipBow::gModelRenderArrow(0);
|
||||
|
||||
void EquipBow::vfunc_00() {}
|
||||
bool EquipBow::IsUsable(unk32 param1) const {}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
ActorRope_Unk_0219a3b0 gUnk_0219a3b0;
|
||||
|
||||
void ActorRope_Unk_0219a3b0::vfunc_08(unk16 *param1) {}
|
||||
void ActorRope_Unk_0219a3b0::vfunc_10(s32 *param1) {}
|
||||
bool ActorRope_Unk_0219a3b0::vfunc_10(s32 *param1) {}
|
||||
ActorRope::ActorRope() {}
|
||||
bool ActorRope::Init() {}
|
||||
q20 ActorRope::func_ov057_0219a5ac() {}
|
||||
|
||||
@@ -1,33 +1,884 @@
|
||||
#include "Player/EquipBombchu.hpp"
|
||||
#include "Actor/ActorSpawner.hpp"
|
||||
#include "DTCM/UnkStruct_027e077c.hpp"
|
||||
#include "DTCM/UnkStruct_027e0c54.hpp"
|
||||
#include "DTCM/UnkStruct_027e0de4.hpp"
|
||||
#include "DTCM/UnkStruct_027e0f6c.hpp"
|
||||
#include "DTCM/UnkStruct_027e0fd4.hpp"
|
||||
#include "DTCM/UnkStruct_027e103c.hpp"
|
||||
#include "Map/MapManager.hpp"
|
||||
#include "Player/LinkStateItem.hpp"
|
||||
#include "Player/PlayerControl.hpp"
|
||||
#include "Unknown/UnkStruct_020e9360.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020c0c08.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020e9c88.hpp"
|
||||
|
||||
ModelRender EquipBombchu::gModelRenderBombchu;
|
||||
ModelRender EquipBombchu::gModelRenderBombchuPt;
|
||||
EquipBombchu_Unk_02198d00 sUnk_02198d00;
|
||||
static char *sShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"};
|
||||
|
||||
void EquipBombchu_Unk_02198d00::vfunc_08(unk16 *param1) {}
|
||||
void func_ov058_02198ef4() {}
|
||||
void func_ov058_02198ef8() {}
|
||||
void EquipBombchu_Unk_02198d00::vfunc_14(u16 *param1) {}
|
||||
void EquipBombchu_Unk_02198d00::vfunc_10(s32 *param1) {}
|
||||
void EquipBombchu::vfunc_00() {}
|
||||
void EquipBombchu::vfunc_18() {}
|
||||
void EquipBombchu::vfunc_1c() {}
|
||||
void EquipBombchu::vfunc_30() {}
|
||||
void EquipBombchu::vfunc_38(unk32 param1) {}
|
||||
void EquipBombchu::func_ov058_02199220() {}
|
||||
void EquipBombchu::func_ov058_02199228() {}
|
||||
void EquipBombchu::func_ov058_02199264() {}
|
||||
void EquipBombchu::func_ov058_0219926c() {}
|
||||
bool EquipBombchu::IsUsable(unk32 param1) const {}
|
||||
bool EquipBombchu::CheckUsable(unk32 param1) const {}
|
||||
Actor *EquipBombchu::func_ov058_02199400() {}
|
||||
bool EquipBombchu::func_ov058_02199498(Vec3p *vec) {}
|
||||
void EquipBombchu::func_ov058_02199ef0(unk16 param1) {}
|
||||
void EquipBombchu::func_ov058_02199fd8(u32 param1) {}
|
||||
unk32 EquipBombchu::func_ov058_0219a084(unk16 param1) {}
|
||||
bool EquipBombchu::func_ov058_0219a3b4(unk16 param1) {}
|
||||
EquipBombchu_Unk_02198d00::~EquipBombchu_Unk_02198d00() {}
|
||||
void LinkStateItem::func_ov058_0219a454() {}
|
||||
void LinkStateItem::func_ov058_0219a47c() {}
|
||||
EquipBombchu *GetEquipBombchu() {}
|
||||
ARM bool EquipBombchu_Unk_02198d00::vfunc_08(UnkStruct_ov000_020beba8_08 *param1) {
|
||||
Vec3p sp14 = {param1->mUnk_04.x, param1->mUnk_04.y, param1->mUnk_04.z};
|
||||
UnkStruct_027e0f6c_20 sp38;
|
||||
s32 temp_r1 = param1->mUnk_00;
|
||||
UnkStruct_027e0f6c_20 *temp_r2 = data_027e0f6c->mUnk_20;
|
||||
sp38 = *(temp_r2 + temp_r1);
|
||||
|
||||
Vec3p sp8 = {sp38.mUnk_08.x, sp38.mUnk_08.y, sp38.mUnk_08.z};
|
||||
Vec3p_Normalize(&sp8, &sp8);
|
||||
Vec3p_Scale(&sp8, -0x400);
|
||||
Vec3p_Add(&sp14, &sp8, &sp14);
|
||||
MapManager *pMapManager = gMapManager;
|
||||
TilePos sp4 = pMapManager->func_ov00_02083a1c(&sp14);
|
||||
if ((pMapManager->func_ov00_020840dc(&sp4) == 0x46) && (gMapManager->func_ov00_02083f44(&sp14, 0) <= (sp14.y + 0x17FF))) {
|
||||
return 0;
|
||||
}
|
||||
return this->func_ov014_02124034(param1);
|
||||
}
|
||||
|
||||
static unk32 data_ov058_0219aee0 = -1;
|
||||
|
||||
ModelRender EquipBombchu::gModelRenderBombchu(0);
|
||||
ModelRender EquipBombchu::gModelRenderBombchuPt(0);
|
||||
static unk16 data_ov058_0219b090;
|
||||
extern UnkStruct_ov000_020c0c08_04 data_ov058_0219b0c4;
|
||||
static UnkStruct_ov000_020c0c08 data_ov058_0219b0a0(&data_ov058_0219b0c4, 0);
|
||||
static UnkStruct_ov000_020c0c08_04 data_ov058_0219b0c4;
|
||||
static EquipBombchu_Unk_02198d00 sUnk_02198d00;
|
||||
static TilePos data_ov058_0219b110;
|
||||
|
||||
ARM UnkStruct_027e0f6c_Unk_1::~UnkStruct_027e0f6c_Unk_1() {}
|
||||
|
||||
ARM UnkStruct_027e0f6c_Unk_1::UnkStruct_027e0f6c_Unk_1() {}
|
||||
|
||||
struct UnkStruct1 {
|
||||
/* 00 */ unk8 mUnk_00[0xc];
|
||||
/* 0c */ Vec3p mUnk_0c;
|
||||
/* 18 */
|
||||
|
||||
UnkStruct1(Vec3p vec) :
|
||||
mUnk_0c(vec) {}
|
||||
};
|
||||
|
||||
ARM bool EquipBombchu_Unk_02198d00::vfunc_14(u16 *param1, s32 param2) {
|
||||
Actor *temp_r0 = gActorManager->FindActorById(param2);
|
||||
if ((temp_r0 != NULL) && (temp_r0->mType == ActorTypeId_PWBS)) {
|
||||
mUnk_10.y = 1;
|
||||
UnkStruct1 unk(*(Vec3p *) ((u32) temp_r0 + 0x820));
|
||||
mUnk_14 = unk.mUnk_0c;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM bool EquipBombchu_Unk_02198d00::vfunc_10(s32 *param1) {
|
||||
Actor *temp_r0 = (Actor *) param1;
|
||||
if (!temp_r0->SetUnk_11b()) {
|
||||
return false;
|
||||
}
|
||||
bool result;
|
||||
if ((*(s32 *) ((s32) param1 + 4) & 0x800) == 0) {
|
||||
return false;
|
||||
}
|
||||
sUnk_02198d00.mUnk_10 = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static const ItemManager_Unk1 sEquipBombchu_Unk1 = {
|
||||
.mUnk_00 = "bomchu_pt",
|
||||
.mUnk_10 = {0, 100},
|
||||
};
|
||||
|
||||
THUMB void EquipBombchu::vfunc_00() {
|
||||
gModelRenderBombchu.vfunc_0c(gItemManager->GetItemModel(ItemModelId_Bombchu));
|
||||
gModelRenderBombchuPt.vfunc_0c(gItemManager->GetItemModel(ItemModelId_BombchuPt));
|
||||
data_ov058_0219b0a0.mUnk_08 = gItemManager->GetItemModel(ItemModelId_BombchuPt);
|
||||
data_ov058_0219b0a0.func_ov000_020c0c44(gItemManager->func_ov00_020ad538(&sEquipBombchu_Unk1));
|
||||
data_ov058_0219b0a0.func_ov000_020c0e5c(0);
|
||||
gModelRenderBombchuPt.vfunc_24(&data_ov058_0219b0a0);
|
||||
data_ov058_0219b090 = 2;
|
||||
}
|
||||
|
||||
THUMB void EquipBombchu::vfunc_18() {
|
||||
this->UpdateInUse(1);
|
||||
mBombchuRef.Reset();
|
||||
this->func_ov014_0213eda0();
|
||||
this->func_ov014_0213ec64();
|
||||
}
|
||||
|
||||
THUMB void EquipBombchu::vfunc_1c() {
|
||||
data_ov058_0219b090 = 2;
|
||||
}
|
||||
|
||||
THUMB void EquipBombchu::vfunc_30() {
|
||||
mUnk_44 += 1;
|
||||
if ((gPlayerControl->IsUntouchedNow() || !mUnk_47) && !mUnk_48 && mUnk_18 > 0) {
|
||||
data_027e103c->func_ov005_0210418c(1);
|
||||
mUnk_48 = true;
|
||||
}
|
||||
if (mUnk_18 <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
data_ov058_0219b0a0.func_ov000_020c0e04();
|
||||
if (data_027e077c.mUnk_0 != 0xd) {
|
||||
return;
|
||||
}
|
||||
|
||||
Vec3p local_18 = mUnk_2c;
|
||||
Vec3p_Sub(&local_18, &mUnk_20, &local_18);
|
||||
q20 length = Vec3p_Length(&local_18);
|
||||
if (length < FLOAT_TO_Q20(0.2)) {
|
||||
mUnk_20 = mUnk_2c;
|
||||
} else if (Vec3p_TryNormalize(&local_18)) {
|
||||
if (length < FLOAT_TO_Q20(1.0)) {
|
||||
Vec3p_Scale(&local_18, FLOAT_TO_Q20(0.2));
|
||||
} else {
|
||||
Vec3p_Scale(&local_18, FX_Mul(length, FLOAT_TO_Q20(0.2)));
|
||||
}
|
||||
Vec3p_Add(&mUnk_20, &local_18, &mUnk_20);
|
||||
} else {
|
||||
mUnk_20 = mUnk_2c;
|
||||
}
|
||||
gPlayerLink->func_ov000_020bb810(&mUnk_20, 0x800);
|
||||
}
|
||||
|
||||
void func_ov058_02199220(EquipBombchu *bombchu);
|
||||
void func_ov058_02199264(EquipBombchu *bombchu);
|
||||
|
||||
THUMB void EquipBombchu::vfunc_38(unk32 param1) {
|
||||
if (this->IsInUse()) {
|
||||
Vec3p VStack_1c;
|
||||
this->func_ov000_020be99c(&VStack_1c);
|
||||
VStack_1c.y += FLOAT_TO_Q20(0.7);
|
||||
gModelRenderBombchu.func_ov000_020b413c(mUnk_04, &VStack_1c);
|
||||
if ((mUnk_14 == 1) && (mUnk_18 > 0)) {
|
||||
data_ov000_020e9c88.func_ov000_0207b89c(param1, &mUnk_20, (void (*)(void *)) &func_ov058_02199220, this);
|
||||
}
|
||||
} else {
|
||||
if (this->CheckUsable(1)) {
|
||||
if (data_ov058_0219b090 > 0) {
|
||||
data_ov058_0219b090 -= 1;
|
||||
}
|
||||
} else {
|
||||
data_ov058_0219b090 = 2;
|
||||
}
|
||||
}
|
||||
if (mUnk_46 && data_027e077c.mUnk_0 == 0xd) {
|
||||
data_027e0de4.func_ov000_0207bb1c(5, (void (*)(void *)) &func_ov058_02199264, this);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
THUMB void func_ov058_02199220(EquipBombchu *bombchu) {
|
||||
bombchu->func_ov058_02199228();
|
||||
}
|
||||
|
||||
extern "C" void func_020197bc(void *param1, unk32 param2);
|
||||
extern "C" void func_0201987c(void *param1, unk32 param2);
|
||||
THUMB void EquipBombchu::func_ov058_02199228() {
|
||||
unk32 uVar1 = data_ov000_020e9360.func_ov000_02079e68(2);
|
||||
void *pvVar2 = gModelRenderBombchuPt.GetLcdcAddress();
|
||||
func_020197bc(pvVar2, uVar1);
|
||||
pvVar2 = gModelRenderBombchuPt.GetLcdcAddress();
|
||||
func_0201987c(pvVar2, 1);
|
||||
gModelRenderBombchuPt.SetTranslation(&mUnk_20);
|
||||
}
|
||||
|
||||
THUMB void func_ov058_02199264(EquipBombchu *bombchu) {
|
||||
bombchu->func_ov058_0219926c();
|
||||
}
|
||||
|
||||
THUMB void EquipBombchu::func_ov058_0219926c() {
|
||||
this->func_ov000_020be9e4(mUnk_38, mUnk_44);
|
||||
}
|
||||
|
||||
ARM bool EquipBombchu::IsUsable(unk32 param1) const {
|
||||
if (!this->CheckUsable(param1)) {
|
||||
return false;
|
||||
}
|
||||
if ((param1 != 0) && (data_ov058_0219b090 > 0)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
extern "C" unk32 func_ov014_0212505c();
|
||||
ARM bool EquipBombchu::CheckUsable(unk32 param1) const {
|
||||
if (!gMapManager->func_ov00_0208499c() || data_027e0c54.mUnk_0 || data_027e0d38->mUnk_0c.func_ov000_020a5e9c() == 0x33) {
|
||||
return false;
|
||||
}
|
||||
if (data_027e0fd4->mUnk_05a != 0) {
|
||||
return false;
|
||||
}
|
||||
if (this->GetAmmo() <= 0) {
|
||||
return false;
|
||||
}
|
||||
if (param1 != 0) {
|
||||
if (!gPlayerLink->func_ov000_020bba28()) {
|
||||
return false;
|
||||
}
|
||||
switch (data_027e077c.mUnk_0) {
|
||||
case 0x1:
|
||||
case 0xb:
|
||||
case 0xc:
|
||||
case 0xd:
|
||||
case 0x33:
|
||||
case 0x34:
|
||||
return this->func_ov014_0213ed74() == NULL || func_ov014_0212505c() != 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
THUMB Actor *EquipBombchu::func_ov058_02199400() {
|
||||
if (this->EquipItem::GetAmmo() <= 0 || mUnk_18 <= 0) {
|
||||
return NULL;
|
||||
}
|
||||
Vec3p *playerPos = EquipItem::GetPlayerPos();
|
||||
Vec3p spawnPos = *playerPos;
|
||||
spawnPos.y += FLOAT_TO_Q20(0.5);
|
||||
ActorSpawnOptions options;
|
||||
options.mUnk_1c.id = 1;
|
||||
options.mAngle = mUnk_04;
|
||||
gActorSpawner->Spawn(ActorTypeId_Bombchu, &spawnPos, &options, &mBombchuRef);
|
||||
Actor *iVar3 = this->func_ov014_0213ed74();
|
||||
if (iVar3 != NULL) {
|
||||
this->GiveAmmo(-1);
|
||||
}
|
||||
this->UpdateInUse(0);
|
||||
return iVar3;
|
||||
}
|
||||
|
||||
extern "C" void func_ov014_02124ff4(Sphere *sphere);
|
||||
extern "C" bool func_0202b2f8(Vec3p *param_1, Vec3p *param_2, unk32 param_3);
|
||||
THUMB bool EquipBombchu::func_ov058_02199498(Vec3p *vec) {
|
||||
struct TempStruct1 {
|
||||
/* 00 */ unk8 mUnk_00[0xe];
|
||||
/* 0e */ unk8 mUnk_0e;
|
||||
/* 0f */ unk8 mUnk_0f;
|
||||
/* 10 */ unk8 mUnk_10;
|
||||
/* 11 */ unk8 mUnk_11;
|
||||
/* 12 */ unk8 mUnk_12[0x6];
|
||||
/* 18 */ volatile unk8 mUnk_18;
|
||||
/* 19 */ unk8 mUnk_19;
|
||||
/* 1a */ unk8 mUnk_1a;
|
||||
/* 1b */ unk8 mUnk_1b;
|
||||
/* 1c */ unk8 mUnk_1c;
|
||||
/* 1d */ unk8 mUnk_1d;
|
||||
/* 1e */
|
||||
};
|
||||
|
||||
struct TempStruct2 {
|
||||
union {
|
||||
/* 00 */ Vec3p mUnk_00;
|
||||
struct {
|
||||
/* 00 */ u16 mUnk_00_x;
|
||||
/* 02 */ u16 mUnk_02;
|
||||
/* 04 */ u16 mUnk_04;
|
||||
/* 06 */ u16 mUnk_06;
|
||||
/* 08 */ unk32 mUnk_08;
|
||||
};
|
||||
};
|
||||
/* 0c */ unk8 mUnk_0c[0x34];
|
||||
/* 40 */
|
||||
};
|
||||
|
||||
TempStruct1 sp214;
|
||||
TempStruct2 sp1D4;
|
||||
AABB sp1BC;
|
||||
Vec3p sp1B0;
|
||||
Vec3p sp1A4;
|
||||
Sphere sp194;
|
||||
Vec3p sp188;
|
||||
Vec3p sp17C;
|
||||
Vec3p sp170;
|
||||
Vec3p sp164;
|
||||
Vec3p sp158;
|
||||
Vec3p sp14C;
|
||||
Vec3p sp140;
|
||||
Vec3p sp134;
|
||||
Vec3p sp128;
|
||||
Vec3p sp11C;
|
||||
Vec3p sp110;
|
||||
Vec3p sp104;
|
||||
Vec3p spF8;
|
||||
Vec3p spEC;
|
||||
Vec3p spE0;
|
||||
Vec3p spD4;
|
||||
Vec3p spBC;
|
||||
Vec3p spB0;
|
||||
Vec3p spA4;
|
||||
Vec3p sp98;
|
||||
Vec3p sp8C;
|
||||
Vec3p sp80;
|
||||
Vec3p sp74;
|
||||
unk32 sp64;
|
||||
u32 sp60;
|
||||
u32 sp5C;
|
||||
unk32 sp50;
|
||||
unk32 sp48;
|
||||
unk32 sp44;
|
||||
s32 sp20;
|
||||
s32 sp1C;
|
||||
s32 sp18;
|
||||
s32 sp14;
|
||||
s32 temp_r0_13;
|
||||
s32 temp_r0_16;
|
||||
s32 temp_r0_21;
|
||||
s32 temp_r0_22;
|
||||
s32 temp_r0_23;
|
||||
s32 temp_r0_24;
|
||||
s32 temp_r0_25;
|
||||
s32 temp_r0_27;
|
||||
s32 temp_r0_3;
|
||||
s32 temp_r0_4;
|
||||
s32 temp_r0_5;
|
||||
s32 temp_r0_6;
|
||||
s32 temp_r0_7;
|
||||
s32 temp_r0_8;
|
||||
s32 temp_r0_9;
|
||||
s32 temp_r1;
|
||||
s32 temp_r1_10;
|
||||
s32 temp_r1_14;
|
||||
s32 temp_r1_2;
|
||||
s32 temp_r1_3;
|
||||
s32 temp_r7_2;
|
||||
s32 temp_r7_3;
|
||||
s32 var_r0;
|
||||
s32 var_r0_2;
|
||||
s32 var_r1;
|
||||
s32 var_r1_2;
|
||||
s32 var_r1_3;
|
||||
s32 var_r6;
|
||||
s32 var_r6_2;
|
||||
s32 var_r6_3;
|
||||
s32 var_r7;
|
||||
|
||||
data_ov058_0219aee0 = -1;
|
||||
if ((mUnk_18 >= 0x64) || (!mUnk_47)) {
|
||||
return 0;
|
||||
}
|
||||
gMapManager->func_ov00_0208346c(&sp1BC);
|
||||
sp128.x = vec->x;
|
||||
sp128.y = vec->y;
|
||||
sp128.z = vec->z;
|
||||
if (!sp1BC.Contains(&sp128)) {
|
||||
var_r0 = 1;
|
||||
} else {
|
||||
var_r0 = 0;
|
||||
}
|
||||
if (var_r0 != 0) {
|
||||
if (mUnk_18 > 0) {
|
||||
mUnk_47 = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
TilePos sp5a = gMapManager->func_ov00_02083a1c(vec);
|
||||
sp1B0.x = vec->x;
|
||||
sp1B0.y = vec->y;
|
||||
sp1B0.z = vec->z;
|
||||
gMapManager->func_ov00_02083c7c(&sp1B0, sp5a);
|
||||
sp1B0.y = vec->y;
|
||||
temp_r1 = mUnk_18;
|
||||
if (temp_r1 > 0) {
|
||||
TilePos sp24_unk1C = sp5a;
|
||||
TilePos sp24_unk6 = mUnk_1c[temp_r1 - 1];
|
||||
TilePos sp24_unk1E = sp24_unk6;
|
||||
if (sp24_unk1E == sp24_unk1C) {
|
||||
return 0;
|
||||
}
|
||||
gMapManager->func_ov00_02083c7c(&sp1A4, sp24_unk6);
|
||||
var_r1 = vec->x - sp1A4.x;
|
||||
if (var_r1 < 0) {
|
||||
var_r1 = 0 - var_r1;
|
||||
}
|
||||
if (var_r1 < 0x1000) {
|
||||
var_r1_2 = vec->z - sp1A4.z;
|
||||
if (var_r1_2 < 0) {
|
||||
var_r1_2 = 0 - var_r1_2;
|
||||
}
|
||||
if (var_r1_2 < 0x1000) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
func_ov014_02124ff4(&sp194);
|
||||
if (mUnk_18 <= 0) {
|
||||
var_r6 = gPlayerPos.y;
|
||||
sp18 = gPlayerPos.x;
|
||||
sp1B0.y = var_r6;
|
||||
sp14 = gPlayerPos.z;
|
||||
} else {
|
||||
var_r6 = mUnk_2c.y;
|
||||
sp18 = mUnk_2c.x;
|
||||
sp14 = mUnk_2c.z;
|
||||
sp11C.x = sp1B0.x;
|
||||
sp11C.y = sp1B0.y;
|
||||
sp11C.z = sp1B0.z;
|
||||
sp1B0.y = gMapManager->MapData_vfunc_68(&sp11C, 0);
|
||||
}
|
||||
var_r6_2 = var_r6 + sp194.pos.y;
|
||||
temp_r1_2 = sp1B0.y + sp194.pos.y;
|
||||
sp1B0.y = temp_r1_2;
|
||||
sp188.x = sp1B0.x;
|
||||
sp188.y = temp_r1_2;
|
||||
sp188.z = sp1B0.z;
|
||||
sp110.x = sp18;
|
||||
sp110.y = var_r6_2;
|
||||
sp110.z = sp14;
|
||||
Vec3p_Sub(&sp188, &sp110, &sp188);
|
||||
var_r7 = sp188.y;
|
||||
sp188.y = 0;
|
||||
sp20 = Vec3p_Length(&sp188);
|
||||
sp1C = 0;
|
||||
if (Vec3p_TryNormalize(&sp188) == 0) {
|
||||
return 0;
|
||||
}
|
||||
if (sp20 > 0x7000) {
|
||||
Vec3p_Scale(&sp188, 0x7000);
|
||||
sp1C = 1;
|
||||
} else if (sp20 >= 0x1000) {
|
||||
if (mUnk_18 > 0 || ABS(var_r7) > 0) {
|
||||
Vec3p_Scale(&sp188, 0x1000);
|
||||
sp1C = 1;
|
||||
}
|
||||
}
|
||||
if (sp1C != 0) {
|
||||
sp1B0.x = sp18 + sp188.x;
|
||||
sp1B0.z = sp14 + sp188.z;
|
||||
TilePos sp58 = gMapManager->func_ov00_02083a1c(&sp1B0);
|
||||
gMapManager->func_ov00_02083c7c(&sp1B0, sp58);
|
||||
temp_r1_3 = sp1B0.y + 0x999;
|
||||
sp1B0.y = temp_r1_3;
|
||||
sp104.x = sp1B0.x;
|
||||
sp104.x = temp_r1_3;
|
||||
sp104.x = sp1B0.z;
|
||||
temp_r0_3 = gMapManager->MapData_vfunc_68(&sp104, 0);
|
||||
sp1B0.y = temp_r0_3;
|
||||
temp_r0_4 = temp_r0_3 + sp194.pos.y;
|
||||
sp1B0.y = temp_r0_4;
|
||||
vec->x = sp1B0.x;
|
||||
vec->y = temp_r0_4;
|
||||
vec->z = sp1B0.z;
|
||||
}
|
||||
if (this->func_ov058_0219a3b4(sp5a) != 0) {
|
||||
temp_r0_5 = this->func_ov058_02199ef0(sp5a);
|
||||
sp1B0.y = temp_r0_5;
|
||||
temp_r0_6 = temp_r0_5 + sp194.pos.y;
|
||||
sp1B0.y = temp_r0_6;
|
||||
vec->x = sp1B0.x;
|
||||
vec->y = temp_r0_6;
|
||||
vec->z = sp1B0.z;
|
||||
}
|
||||
if (mUnk_18 > 0) {
|
||||
if (this->func_ov058_0219a3b4(mUnk_1c[mUnk_18 - 1]) != 0) {
|
||||
var_r6_2 = this->func_ov058_02199ef0(mUnk_1c[mUnk_18 - 1]);
|
||||
}
|
||||
if (gMapManager->MapData_vfunc_54(&mUnk_1c[mUnk_18 - 1]) == 0x19) {
|
||||
temp_r0_7 = gMapManager->MapData_vfunc_60(&mUnk_1c[mUnk_18 - 1]);
|
||||
spF8.x = sp18;
|
||||
spF8.y = temp_r0_7 - 0x1333;
|
||||
spF8.z = sp14;
|
||||
var_r6_2 = gMapManager->MapData_vfunc_68(&spF8, 0);
|
||||
if ((sp1B0.y - var_r6_2) >= 0x999) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
sp1D4.mUnk_00_x = -1;
|
||||
sp1D4.mUnk_02 = -1;
|
||||
sp1D4.mUnk_04 = -1;
|
||||
sp1D4.mUnk_06 = -1;
|
||||
sp1D4.mUnk_00.z = 0;
|
||||
sp214.mUnk_0e = 0;
|
||||
sp214.mUnk_0f = 0;
|
||||
sp214.mUnk_10 = 0;
|
||||
sp214.mUnk_11 = 0;
|
||||
sp214.mUnk_18 = 0U;
|
||||
sp214.mUnk_19 = 0U;
|
||||
sp214.mUnk_1a = 0;
|
||||
sp214.mUnk_1b = 0;
|
||||
sp214.mUnk_1c = 0;
|
||||
sp214.mUnk_1d = 0;
|
||||
if (var_r6_2 < sp1B0.y) {
|
||||
if ((sp1B0.y - var_r6_2) < 0x999) {
|
||||
var_r6_2 = sp1B0.y;
|
||||
} else {
|
||||
spEC.x = sp18;
|
||||
spEC.z = sp14;
|
||||
spEC.y = var_r6_2;
|
||||
gMapManager->MapData_vfunc_6c(&spEC, &sp64, &sp17C);
|
||||
if ((sp17C.x != 0) || (sp17C.z != 0)) {
|
||||
var_r6_2 += 0x99A;
|
||||
if (var_r6_2 >= sp1B0.y) {
|
||||
var_r6_2 = sp1B0.y;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sp1B0.y = var_r6_2;
|
||||
}
|
||||
sUnk_02198d00.mUnk_10.x = 0;
|
||||
sUnk_02198d00.mUnk_10.y = 0;
|
||||
spD4.y = var_r6_2;
|
||||
spE0.x = sp1B0.x;
|
||||
spE0.y = sp1B0.y;
|
||||
spE0.z = sp1B0.z;
|
||||
spD4.x = sp18;
|
||||
spD4.z = sp14;
|
||||
sp194.pos.y = 9;
|
||||
sp194.pos.z = 0xCF;
|
||||
sp194.radius = 1;
|
||||
temp_r0_8 = gMapManager->func_01ffbe78(&sp1D4.mUnk_00, &spE0, &spD4, &sp194);
|
||||
if (sUnk_02198d00.mUnk_10.x != 0) {
|
||||
return 0;
|
||||
}
|
||||
if (temp_r0_8 != 0) {
|
||||
if (sUnk_02198d00.mUnk_10.y != 0) {
|
||||
sp1B0.x = sUnk_02198d00.mUnk_14.x;
|
||||
sp1B0.y = sUnk_02198d00.mUnk_14.y;
|
||||
sp1B0.z = sUnk_02198d00.mUnk_14.z;
|
||||
sp1B0.y = mUnk_20.y;
|
||||
TilePos sp56 = gMapManager->func_ov00_02083a1c(&sp1B0);
|
||||
sp5a.x = sp56.x;
|
||||
sp5a.y = sp56.y;
|
||||
vec->x = sp1B0.x;
|
||||
vec->y = sp1B0.y;
|
||||
vec->z = sp1B0.z;
|
||||
mUnk_38.x = sp1B0.x;
|
||||
mUnk_38.y = sp1B0.y;
|
||||
mUnk_38.z = sp1B0.z;
|
||||
mUnk_47 = 0;
|
||||
mUnk_46 = 1;
|
||||
} else {
|
||||
if (sp214.mUnk_18 != 0) {
|
||||
if (mUnk_18 <= 0) {
|
||||
return 0;
|
||||
}
|
||||
sp170.x = sp1D4.mUnk_00.x;
|
||||
sp170.y = sp1D4.mUnk_00.y;
|
||||
sp170.z = sp1D4.mUnk_00.z;
|
||||
TilePos sp54 = gMapManager->func_ov00_02083a1c(&sp170);
|
||||
sp5a = sp54;
|
||||
if (this->func_ov058_0219a3b4(sp5a) != 0) {
|
||||
return 0;
|
||||
}
|
||||
gMapManager->func_ov00_02083c7c(&sp170, sp5a);
|
||||
TilePos sp24_unk18 = sp5a;
|
||||
TilePos sp24_unk1A = mUnk_1c[mUnk_18 - 1];
|
||||
if (sp24_unk1A == sp24_unk18) {
|
||||
sp164.x = sp1D4.mUnk_00.x;
|
||||
spBC.y = var_r6_2;
|
||||
sp164.y = sp1D4.mUnk_00.y;
|
||||
sp164.z = sp1D4.mUnk_00.z;
|
||||
spBC.x = sp18;
|
||||
spBC.z = sp14;
|
||||
Vec3p_Sub(&sp164, &spBC, &sp164);
|
||||
var_r0_2 = sp164.z;
|
||||
if (var_r0_2 < 0) {
|
||||
var_r0_2 = 0 - var_r0_2;
|
||||
}
|
||||
var_r1_3 = sp164.x;
|
||||
if (var_r1_3 < 0) {
|
||||
var_r1_3 = 0 - var_r1_3;
|
||||
}
|
||||
if (var_r1_3 > var_r0_2) {
|
||||
sp164.z = 0;
|
||||
} else {
|
||||
sp164.x = 0;
|
||||
}
|
||||
if (Vec3p_TryNormalize(&sp164) != 0) {
|
||||
sp170.x = sp18;
|
||||
sp170.y = var_r6_2;
|
||||
sp170.z = sp14;
|
||||
Vec3p_Add(&sp170, &sp164, &sp170);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
TilePos sp52 = gMapManager->func_ov00_02083a1c(&sp170);
|
||||
sp5a = sp52;
|
||||
if (this->func_ov058_0219a3b4(sp5a) != 0) {
|
||||
return 0;
|
||||
}
|
||||
sUnk_02198d00.mUnk_10.x = 0;
|
||||
sUnk_02198d00.mUnk_10.y = 0;
|
||||
spB0.y = var_r6_2;
|
||||
spB0.x = sp18;
|
||||
spB0.z = sp14;
|
||||
sp194.pos.y = 9;
|
||||
sp194.pos.z = 0xCF;
|
||||
sp194.radius = 1;
|
||||
temp_r0_16 = gMapManager->func_01ffbe78(&sp1D4.mUnk_00, &sp170, &spB0, &sp194);
|
||||
if (sUnk_02198d00.mUnk_10.x != 0) {
|
||||
return 0;
|
||||
}
|
||||
if (temp_r0_16 == 0) {
|
||||
TilePos sp50 = gMapManager->func_ov00_02083a1c(&sp170);
|
||||
TilePos sp24_unk4 = sp50;
|
||||
TilePos sp24_unk14 = sp24_unk4;
|
||||
TilePos sp24_unk16 = mUnk_1c[mUnk_18 - 1];
|
||||
if (sp24_unk16 == sp24_unk14) {
|
||||
return 0;
|
||||
}
|
||||
gMapManager->func_ov00_02083c7c(&sp170, sp24_unk4);
|
||||
} else {
|
||||
if (sp214.mUnk_18 == 0) {
|
||||
return false;
|
||||
}
|
||||
sp170.x = sp1D4.mUnk_00.x;
|
||||
sp170.y = sp1D4.mUnk_00.y;
|
||||
sp170.z = sp1D4.mUnk_00.z;
|
||||
TilePos sp4E = gMapManager->func_ov00_02083a1c(&sp170);
|
||||
sp5a = sp4E;
|
||||
TilePos sp24_unk2 = sp5a;
|
||||
TilePos sp24_unk10 = sp24_unk2;
|
||||
TilePos sp24_unk12 = mUnk_1c[mUnk_18 - 1];
|
||||
if (sp24_unk12 == sp24_unk10) {
|
||||
return 0;
|
||||
}
|
||||
gMapManager->func_ov00_02083c7c(&sp170, sp24_unk2);
|
||||
}
|
||||
}
|
||||
sp1B0.x = sp170.x;
|
||||
spA4.x = sp170.x;
|
||||
temp_r1_14 = sp170.y + 0x999;
|
||||
sp1B0.y = sp170.y;
|
||||
sp1B0.z = sp170.z;
|
||||
spA4.z = sp170.z;
|
||||
sp1B0.y = temp_r1_14;
|
||||
spA4.y = temp_r1_14;
|
||||
temp_r0_21 = gMapManager->MapData_vfunc_68(&spA4, 0);
|
||||
sp1B0.y = temp_r0_21;
|
||||
temp_r0_22 = temp_r0_21 + sp194.pos.y;
|
||||
sp1B0.y = temp_r0_22;
|
||||
vec->x = sp1B0.x;
|
||||
vec->y = temp_r0_22;
|
||||
vec->z = sp1B0.z;
|
||||
} else {
|
||||
if (sp214.mUnk_19 == 0) {
|
||||
return 0;
|
||||
}
|
||||
sp158.x = sp1D4.mUnk_00.x;
|
||||
sp158.y = sp1D4.mUnk_00.y;
|
||||
sp158.z = sp1D4.mUnk_00.z;
|
||||
TilePos sp4C = gMapManager->func_ov00_02083a1c(&sp158);
|
||||
sp5a.x = sp4C.x;
|
||||
sp5a.y = sp4C.y;
|
||||
TilePos sp24_unk0 = sp5a;
|
||||
TilePos sp24_unkC = sp24_unk0;
|
||||
TilePos sp24_unkE = mUnk_1c[mUnk_18 - 1];
|
||||
if (sp24_unkE == sp24_unkC) {
|
||||
return 0;
|
||||
}
|
||||
gMapManager->func_ov00_02083c7c(&sp158, sp24_unk0);
|
||||
sp1B0.x = sp158.x;
|
||||
sp98.x = sp158.x;
|
||||
temp_r1_10 = sp158.y + 0x999;
|
||||
sp1B0.y = sp158.y;
|
||||
sp1B0.z = sp158.z;
|
||||
sp98.z = sp158.z;
|
||||
sp1B0.y = temp_r1_10;
|
||||
sp98.y = temp_r1_10;
|
||||
temp_r0_13 = gMapManager->MapData_vfunc_68(&sp98, 0);
|
||||
sp1B0.y = temp_r0_13;
|
||||
sp1B0.y = temp_r0_13 + sp194.pos.y;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
MapManager *temp_r7_2 = gMapManager;
|
||||
TilePos sp4a = temp_r7_2->func_ov00_02083a1c(&sp1B0);
|
||||
if (temp_r7_2->MapData_vfunc_54(&sp4a) == 0x19) {
|
||||
MapManager *temp_r7_3 = gMapManager;
|
||||
TilePos sp48 = temp_r7_3->func_ov00_02083a1c(&sp1B0);
|
||||
temp_r0_9 = temp_r7_3->MapData_vfunc_60(&sp48);
|
||||
sp1B0.y = temp_r0_9;
|
||||
sp1B0.y = temp_r0_9 - 0x1333;
|
||||
}
|
||||
sp8C.x = sp1B0.x;
|
||||
sp8C.y = sp1B0.y;
|
||||
sp8C.z = sp1B0.z;
|
||||
sp1B0.y = gMapManager->MapData_vfunc_68(&sp8C, 0);
|
||||
}
|
||||
sp14C.y = var_r6_2;
|
||||
sp14C.x = sp18;
|
||||
sp140.y = var_r6_2;
|
||||
sp14C.z = sp14;
|
||||
var_r6_3 = 1;
|
||||
sp140.x = sp18;
|
||||
sp140.z = sp14;
|
||||
while (true) {
|
||||
if (func_0202b2f8(&sp14C, &sp1B0, 0x1000) != 0) {
|
||||
var_r6_3 = 0;
|
||||
}
|
||||
MapManager::func_ov00_02083fb0(&sp60, gMapManager, &sp14C);
|
||||
if (((3 & (sp60 >> 5)) == 2) && ((sp60 & 0x1F) != 0xA)) {
|
||||
sp1B0.y = sp140.y;
|
||||
temp_r0_23 = sp140.y + 0x999;
|
||||
sp1B0.y = temp_r0_23;
|
||||
sp80.y = temp_r0_23;
|
||||
sp1B0.z = sp140.z;
|
||||
sp80.z = sp140.z;
|
||||
sp1B0.x = sp140.x;
|
||||
sp80.x = sp140.x;
|
||||
temp_r0_24 = gMapManager->MapData_vfunc_68(&sp80, 0);
|
||||
sp1B0.y = temp_r0_24;
|
||||
temp_r0_25 = temp_r0_24 + sp194.pos.y;
|
||||
sp1B0.y = temp_r0_25;
|
||||
vec->x = sp1B0.x;
|
||||
vec->y = temp_r0_25;
|
||||
vec->z = sp1B0.z;
|
||||
TilePos sp46 = gMapManager->func_ov00_02083a1c(&sp1B0);
|
||||
sp5a = sp46;
|
||||
TilePos sp24_unk8 = sp5a;
|
||||
TilePos sp24_unkA = mUnk_1c[mUnk_18 - 1];
|
||||
if (sp24_unkA == sp24_unk8) {
|
||||
return 0;
|
||||
}
|
||||
goto block_114;
|
||||
} else {
|
||||
sp140.x = sp14C.x;
|
||||
sp140.y = sp14C.y;
|
||||
sp140.z = sp14C.z;
|
||||
}
|
||||
if (var_r6_3 == 0) {
|
||||
block_114:
|
||||
if (this->func_ov058_0219a3b4(sp5a) != 0) {
|
||||
TilePos sp44 = gMapManager->func_ov00_02083a1c(&sp1B0);
|
||||
temp_r0_27 = this->func_ov058_02199ef0(sp44);
|
||||
sp1B0.y = temp_r0_27;
|
||||
sp1B0.y = temp_r0_27 + sp194.pos.y;
|
||||
} else {
|
||||
sp74.x = sp1B0.x;
|
||||
sp74.y = sp1B0.y;
|
||||
sp74.z = sp1B0.z;
|
||||
MapManager::func_ov00_02083fb0(&sp5C, gMapManager, &sp74);
|
||||
if (((3 & (sp5C >> 5)) == 2) && ((0x1F & sp5C) != 0xA)) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
mUnk_1c[mUnk_18] = sp5a;
|
||||
mUnk_18 += 1;
|
||||
sp134.x = sp1B0.x;
|
||||
sp134.y = sp1B0.y;
|
||||
sp134.z = sp1B0.z;
|
||||
Vec3p_Sub(&sp134, &mUnk_20, &sp134);
|
||||
mUnk_2c = sp1B0;
|
||||
if (mUnk_18 <= 1) {
|
||||
mUnk_20 = sp1B0;
|
||||
}
|
||||
mUnk_14 = 1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void func_ov000_020a61ac(Vec3p *vec, s16 angle);
|
||||
ARM unk32 EquipBombchu::func_ov058_02199ef0(TilePos param1) {
|
||||
s32 iVar1;
|
||||
s32 iVar2;
|
||||
s16 sVar3;
|
||||
s32 result;
|
||||
Vec3p local_58;
|
||||
Vec3p local_4c;
|
||||
Vec3p local_40;
|
||||
|
||||
TilePos local_5c = param1;
|
||||
gMapManager->func_ov00_02083c7c(&local_40, local_5c);
|
||||
for (s32 iVar2 = 0; iVar2 < 4; iVar2++) {
|
||||
sVar3 = 0;
|
||||
local_58.x = 0;
|
||||
local_58.y = 0;
|
||||
local_58.z = 0x400;
|
||||
func_ov000_020a61ac(&local_58, (int) sVar3);
|
||||
local_4c.x = local_40.x;
|
||||
local_4c.y = local_40.y;
|
||||
local_4c.z = local_40.z;
|
||||
Vec3p_Add(&local_4c, &local_58, &local_4c);
|
||||
if (iVar2 == 0) {
|
||||
result = gMapManager->func_ov00_02083f44(&local_4c, false);
|
||||
} else {
|
||||
iVar1 = gMapManager->func_ov00_02083f44(&local_4c, false);
|
||||
if (result <= iVar1) {
|
||||
result = iVar1;
|
||||
}
|
||||
}
|
||||
sVar3 = sVar3 + 0x4000;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
ARM unk32 EquipBombchu::func_ov058_02199fd8(TilePos param1) {
|
||||
if (data_ov058_0219aee0 != -1) {
|
||||
if (data_ov058_0219b110 == param1) {
|
||||
return data_ov058_0219aee0;
|
||||
}
|
||||
}
|
||||
data_ov058_0219aee0 = this->func_ov058_0219a084(param1);
|
||||
data_ov058_0219b110 = param1;
|
||||
return data_ov058_0219aee0;
|
||||
}
|
||||
|
||||
ARM unk32 EquipBombchu::func_ov058_0219a084(TilePos param1) {
|
||||
Vec3p sp3C[4];
|
||||
|
||||
Vec3p sp30;
|
||||
gMapManager->func_ov00_02083c7c(&sp30, param1);
|
||||
Vec3p sp24;
|
||||
for (s32 i = 0; i < 4; i++) {
|
||||
sp24.x = 0;
|
||||
sp24.y = 0;
|
||||
sp24.z = FLOAT_TO_Q20(0.25);
|
||||
func_ov000_020a61ac(&sp24, 0x4000 * i);
|
||||
sp3C[i] = sp30;
|
||||
Vec3p_Add(&sp3C[i], &sp24, &sp3C[i]);
|
||||
sp3C[i].y = gMapManager->func_ov00_02083f44(&sp3C[i], 0);
|
||||
}
|
||||
if ((sp3C[0].y == sp3C[1].y) && (sp3C[0].y == sp3C[2].y) && (sp3C[0].y == sp3C[3].y)) {
|
||||
UnkStruct sp90;
|
||||
if (gMapManager->func_01ffbf5c(&sp90, &sp3C[0], &sp3C[2], 0x200, 9, 1, &sUnk_02198d00, 0)) {
|
||||
return 7;
|
||||
}
|
||||
if (gMapManager->func_01ffbf5c(&sp90, &sp3C[1], &sp3C[3], 0x200, 9, 1, &sUnk_02198d00, 0)) {
|
||||
return 7;
|
||||
}
|
||||
if (gMapManager->func_01ffbf5c(&sp90, &sp3C[2], &sp3C[0], 0x200, 9, 1, &sUnk_02198d00, 0)) {
|
||||
return 7;
|
||||
}
|
||||
if (gMapManager->func_01ffbf5c(&sp90, &sp3C[3], &sp3C[1], 0x200, 9, 1, &sUnk_02198d00, 0)) {
|
||||
return 7;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
if ((sp3C[0].y == sp3C[1].y) && (sp3C[2].y == sp3C[3].y)) {
|
||||
if (sp3C[0].y < sp3C[2].y) {
|
||||
return 4;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
if ((sp3C[0].y == sp3C[3].y) && (sp3C[1].y == sp3C[2].y)) {
|
||||
if (sp3C[0].y < sp3C[1].y) {
|
||||
return 3;
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
|
||||
Vec3p sp18;
|
||||
unk32 sp14;
|
||||
gMapManager->MapData_vfunc_6c(&sp30, &sp14, &sp18);
|
||||
if ((sp18.x != 0) || (sp18.z != 0)) {
|
||||
return 5;
|
||||
}
|
||||
return 7;
|
||||
}
|
||||
|
||||
bool EquipBombchu::func_ov058_0219a3b4(TilePos param1) {
|
||||
switch (this->func_ov058_02199fd8(param1)) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 7:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
#include "Player/PlayerBase.hpp"
|
||||
#include "Player/PlayerControl.hpp"
|
||||
|
||||
extern unk32 data_ov000_020dc7d0;
|
||||
extern unk32 data_ov000_020dc7e4;
|
||||
extern const ItemManager_Unk1 data_ov000_020dc7d0;
|
||||
extern const ItemManager_Unk1 data_ov000_020dc7e4;
|
||||
extern u32 data_ov000_020e9370[];
|
||||
extern "C" void Vec3p_RotateY(u32, Vec3p *);
|
||||
extern "C" void func_ov005_02102c2c(u32 *param_1, int param_2, Vec3p *param_3, int param_4, int param_5, u32 param_6,
|
||||
@@ -58,200 +58,99 @@ ARM void ActorNavi::func_ov059_0219aa08() {
|
||||
}
|
||||
}
|
||||
|
||||
struct UnkStruct {
|
||||
/* 00 */ u16 mUnk_00;
|
||||
/* 02 */ unk16 mUnk_02;
|
||||
/* 04 */ unk16 mUnk_04;
|
||||
/* 06 */ unk16 mUnk_06;
|
||||
/* 08 */ unk16 mUnk_08;
|
||||
/* 09 */ unk8 mUnk_09;
|
||||
/* 0a */ unk8 mUnk_0a;
|
||||
/* 0b */ unk8 mUnk_0b;
|
||||
/* 0c */ unk8 mUnk_0c;
|
||||
/* 0d */ unk8 mUnk_0d;
|
||||
/* 0e */ unk8 mUnk_0e;
|
||||
/* 0f */ unk8 mUnk_0f;
|
||||
/* 10 */ unk8 mUnk_10;
|
||||
/* 11 */ unk8 mUnk_11;
|
||||
/* 12 */ unk8 mUnk_12;
|
||||
/* 13 */ unk8 mUnk_13;
|
||||
/* 14 */ Vec3p mUnk_14;
|
||||
/* 14 */ unk8 mUnk_20[4];
|
||||
/* 24 */
|
||||
};
|
||||
|
||||
// non-matching
|
||||
ARM void ActorNavi::func_ov059_0219aba8(u32 param1) {
|
||||
bool bVar1;
|
||||
LinkStateItem *uVar1;
|
||||
ItemManager *pIVar3;
|
||||
int uVar4;
|
||||
int iVar5;
|
||||
int uVar6;
|
||||
bool bVar7;
|
||||
Vec3p local_134;
|
||||
Vec3p local_128;
|
||||
Vec3p local_11c;
|
||||
Vec3p local_110;
|
||||
Vec3p local_104;
|
||||
Vec3p local_e4;
|
||||
|
||||
UnkStruct auStack_e0;
|
||||
u16 local_bc;
|
||||
unk16 local_ba;
|
||||
unk16 local_b8;
|
||||
unk16 local_b6;
|
||||
unk16 local_b4;
|
||||
unk32 local_92;
|
||||
unk32 local_91;
|
||||
unk32 local_90;
|
||||
unk32 local_8f;
|
||||
unk32 local_88;
|
||||
unk32 local_87;
|
||||
unk32 local_86;
|
||||
unk32 local_85;
|
||||
unk32 local_84;
|
||||
unk32 local_83;
|
||||
UnkStruct auStack_80;
|
||||
u16 local_5c;
|
||||
unk16 local_5a;
|
||||
unk16 local_58;
|
||||
unk16 local_56;
|
||||
unk16 local_54;
|
||||
unk32 local_32;
|
||||
unk32 local_31;
|
||||
unk32 local_30;
|
||||
unk32 local_2f;
|
||||
unk32 local_28;
|
||||
unk32 local_27;
|
||||
unk32 local_26;
|
||||
unk32 local_25;
|
||||
unk32 local_24;
|
||||
unk32 local_23;
|
||||
ItemManager *puVar1;
|
||||
|
||||
switch (param1) {
|
||||
case 3:
|
||||
uVar1 = EquipHammer::GetLinkStateItem();
|
||||
case 3: {
|
||||
LinkStateItem *uVar1 = EquipHammer::GetLinkStateItem();
|
||||
|
||||
if (uVar1->mUnk_25[2] != 0 && uVar1->mUnk_25[3] != 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
local_11c.x = data_027e0fd4->mUnk_020.pos.x;
|
||||
local_11c.z = data_027e0fd4->mUnk_020.pos.z;
|
||||
Vec3p local_11c = data_027e0fd4->mUnk_020.pos;
|
||||
|
||||
iVar5 = gPlayerPos.y + FLOAT_TO_Q20(0.5);
|
||||
uVar4 = this->mPos.x;
|
||||
uVar6 = this->mPos.z;
|
||||
q20 iVar5 = gPlayerPos.y + FLOAT_TO_Q20(0.5);
|
||||
q20 uVar4 = this->mPos.x;
|
||||
q20 uVar6 = this->mPos.z;
|
||||
|
||||
auStack_80.mUnk_00 = -1;
|
||||
auStack_80.mUnk_02 = 0;
|
||||
auStack_80.mUnk_04 = 0;
|
||||
auStack_80.mUnk_06 = 0;
|
||||
auStack_80.mUnk_08 = 0;
|
||||
auStack_80.mUnk_09 = 0;
|
||||
auStack_80.mUnk_0a = 0;
|
||||
auStack_80.mUnk_0b = 0;
|
||||
auStack_80.mUnk_0c = 0;
|
||||
auStack_80.mUnk_0d = 0;
|
||||
auStack_80.mUnk_0e = 0;
|
||||
auStack_80.mUnk_0f = 0;
|
||||
auStack_80.mUnk_10 = 0;
|
||||
auStack_80.mUnk_11 = 0;
|
||||
auStack_80.mUnk_12 = 0;
|
||||
local_11c.y = iVar5;
|
||||
UnkStruct auStack_80;
|
||||
local_11c.y = iVar5;
|
||||
|
||||
local_110.x = uVar4;
|
||||
local_110.y = iVar5;
|
||||
// local_110.z = uVar6;
|
||||
Vec3p local_110 = {uVar4, iVar5, uVar6};
|
||||
|
||||
local_e4.x = local_11c.x;
|
||||
local_e4.y = iVar5;
|
||||
local_e4.z = local_11c.z;
|
||||
Vec3p local_e4 = local_11c;
|
||||
|
||||
local_5a = local_5c;
|
||||
local_58 = local_5c;
|
||||
local_56 = local_5c;
|
||||
|
||||
if (gMapManager->func_01ffbf5c(&auStack_80, &local_110, &local_11c, this->mUnk_08c.size) ? false : true) {
|
||||
this->mPos = local_e4;
|
||||
this->mPrevPos = local_e4;
|
||||
this->mOffsetPos = local_e4;
|
||||
} else {
|
||||
// if (gMapManager->func_01ffbf5c(&auStack_80, &local_110, &local_11c, this->mUnk_08c.size, 0, 0, NULL, 0) ? false
|
||||
if (gMapManager->func_01ffbf5c(&auStack_80, &local_110, &local_11c, this->mUnk_08c.size, this->mRef.id,
|
||||
this->mUnk_09c.mUnk_0, this->mUnk_09c.mUnk_4, 0)
|
||||
? false
|
||||
: true) {
|
||||
this->mOffsetPos.x = uVar4;
|
||||
this->mOffsetPos.y = iVar5;
|
||||
this->mOffsetPos.z = uVar6;
|
||||
} else {
|
||||
this->mPos.x = local_e4.x;
|
||||
this->mPos.y = local_e4.y;
|
||||
this->mPos.z = local_e4.z;
|
||||
this->mPrevPos = local_e4;
|
||||
this->mOffsetPos = local_e4;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
uVar1 = EquipHammer::GetLinkStateItem();
|
||||
} break;
|
||||
case 4: {
|
||||
LinkStateItem *uVar1 = EquipHammer::GetLinkStateItem();
|
||||
|
||||
if (uVar1->mUnk_25[2] != 0 && uVar1->mUnk_25[3] != 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
auStack_e0.mUnk_14.x = data_027e0fd4->mUnk_020.pos.x;
|
||||
auStack_e0.mUnk_14.y = gPlayerPos.y + FLOAT_TO_Q20(0.5);
|
||||
auStack_e0.mUnk_14.z = data_027e0fd4->mUnk_020.pos.z;
|
||||
|
||||
bVar1 = gPlayerControl->UpdateAimWorld(&local_104);
|
||||
bVar7 = false;
|
||||
local_104.y = auStack_e0.mUnk_14.y;
|
||||
auStack_80.mUnk_00 = -1;
|
||||
auStack_80.mUnk_02 = 0;
|
||||
auStack_80.mUnk_04 = 0;
|
||||
auStack_80.mUnk_06 = 0;
|
||||
auStack_80.mUnk_08 = 0;
|
||||
auStack_80.mUnk_09 = 0;
|
||||
auStack_80.mUnk_0a = 0;
|
||||
auStack_80.mUnk_0b = 0;
|
||||
auStack_80.mUnk_0c = 0;
|
||||
auStack_80.mUnk_0d = 0;
|
||||
auStack_80.mUnk_0e = 0;
|
||||
auStack_80.mUnk_0f = 0;
|
||||
auStack_80.mUnk_10 = 0;
|
||||
auStack_80.mUnk_11 = 0;
|
||||
auStack_80.mUnk_12 = 0;
|
||||
local_ba = local_bc;
|
||||
local_b8 = local_bc;
|
||||
local_b6 = local_bc;
|
||||
Vec3p local_f8 = data_027e0fd4->mUnk_020.pos;
|
||||
local_f8.y = gPlayerPos.y + FLOAT_TO_Q20(0.5);
|
||||
Vec3p local_104;
|
||||
bool bVar1 = gPlayerControl->UpdateAimWorld(&local_104);
|
||||
local_104.y = local_f8.y;
|
||||
UnkStruct auStack_e0;
|
||||
bool bVar7 = false;
|
||||
UnkStruct auStack_80;
|
||||
|
||||
if (bVar1) {
|
||||
local_128 = auStack_e0.mUnk_14;
|
||||
s32 id = this->mRef.id;
|
||||
Vec3p local_128 = local_f8;
|
||||
|
||||
// local_134.x = local_104.x;
|
||||
// local_134.y = auStack_e0.mUnk_14.y;
|
||||
// local_134.z = local_104.z;
|
||||
Vec3p local_134;
|
||||
local_134 = local_104;
|
||||
local_134.y = local_f8.y;
|
||||
|
||||
if (!gMapManager->func_01ffbf5c(&auStack_e0, &local_134, &local_128, this->mUnk_08c.size)) {
|
||||
if (!gMapManager->func_01ffbf5c(&auStack_e0, &local_134, &local_128, this->mUnk_08c.size, id,
|
||||
this->mUnk_09c.mUnk_0, this->mUnk_09c.mUnk_4, 0)) {
|
||||
bVar7 = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!bVar7) {
|
||||
this->mPos = auStack_e0.mUnk_14;
|
||||
this->mPrevPos = auStack_e0.mUnk_14;
|
||||
this->mOffsetPos = auStack_e0.mUnk_14;
|
||||
if (!bVar7) {
|
||||
this->mPos = auStack_e0.mUnk_3c;
|
||||
this->mPrevPos = auStack_e0.mUnk_3c;
|
||||
this->mOffsetPos = auStack_e0.mUnk_3c;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
this->func_ov000_020b853c();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
this->func_ov000_020b853c();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
pIVar3 = gItemManager;
|
||||
void *pvVar2;
|
||||
switch (param1) {
|
||||
case 3:
|
||||
pIVar3->func_ov00_020ad538(data_ov000_020dc7d0);
|
||||
pIVar3->func_ov000_020c0c44(&this->mUnk_2f0);
|
||||
pIVar3->func_ov000_020c0e5c(&this->mUnk_2f0, 0);
|
||||
pvVar2 = gItemManager->func_ov00_020ad538(&data_ov000_020dc7d0);
|
||||
this->mUnk_2f0.func_ov000_020c0c44(pvVar2);
|
||||
this->mUnk_2f0.func_ov000_020c0e5c(0);
|
||||
break;
|
||||
case 4:
|
||||
this->mUnk_348 = 0;
|
||||
pIVar3->func_ov00_020ad538(data_ov000_020dc7e4);
|
||||
pIVar3->func_ov000_020c0c44(&this->mUnk_2f0);
|
||||
pIVar3->func_ov000_020c0e5c(&this->mUnk_2f0, 1);
|
||||
pvVar2 = gItemManager->func_ov00_020ad538(&data_ov000_020dc7e4);
|
||||
this->mUnk_2f0.func_ov000_020c0c44(pvVar2);
|
||||
this->mUnk_2f0.func_ov000_020c0e5c(1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -161,7 +161,7 @@ ARM void LinkStateItem::func_ov059_02198ffc() {
|
||||
local_20 = *this->GetPlayerPos();
|
||||
|
||||
Vec3p_Sub(&local_14, &local_20, &local_14);
|
||||
dest = Atan2(local_14.x, local_14.z);
|
||||
dest = FX_Atan2Idx(local_14.x, local_14.z);
|
||||
ApproachAngle_thunk(this->GetPlayerAngle(), dest, 0x2000);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "Map/MapManager.hpp"
|
||||
|
||||
bool MapManager::func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Vec4p *param4) {}
|
||||
bool MapManager::func_01ffbf5c(struct UnkStruct *param1, Vec3p *param2, Vec3p *param3, s32 length) {}
|
||||
bool MapManager::func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Sphere *param4) {}
|
||||
bool MapManager::func_01ffbf5c(struct UnkStruct *param1, Vec3p *param2, Vec3p *param3, s32 length, unk32 param5, unk32 param6,
|
||||
UnkStruct_ov000_020beba8 *param7, unk32 param8) {}
|
||||
bool MapManager::func_01ffc118(s32 *param1, Vec3p *param2, Vec3p *param3, s32 param4, s32 *param5, u32 param6, s32 *param7) {}
|
||||
bool MapManager::func_01ffd1e0(s32 *param1, Vec3p *param2, Vec3p *param3, s32 param4, s32 *param5, u32 param6, s32 *param7) {}
|
||||
|
||||
Reference in New Issue
Block a user