diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 63c5f6ac..237f2a65 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -609,7 +609,7 @@ _ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x2083bd4 _ZN10MapManager11GetTileEndZEi 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_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c7c +_ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x2083c7c _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083ce8 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 _ZN10MapManager16MapData_vfunc_60EPh kind:function(arm,size=0x18) addr:0x2083e58 @@ -621,9 +621,9 @@ _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f8 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f98 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083fb0 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2084024 -_ZN10MapManager16MapData_vfunc_54EPc kind:function(arm,size=0x18) addr:0x2084088 -_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x20840a0 -_ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x20840c4 +_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084088 +_ZN10MapManager18func_ov00_020840a0Ecc kind:function(arm,size=0x24) addr:0x20840a0 +_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x20840c4 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x20840dc _ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x2084100 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x2084114 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index bf12c8db..293b51c3 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -609,7 +609,7 @@ _ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x2083b74 _ZN10MapManager11GetTileEndZEi 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_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c1c +_ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x2083c1c _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083c88 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083dd4 _ZN10MapManager16MapData_vfunc_60EPh kind:function(arm,size=0x18) addr:0x2083df8 @@ -621,9 +621,9 @@ _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f2 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f38 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083f50 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2083fc4 -_ZN10MapManager16MapData_vfunc_54EPc kind:function(arm,size=0x18) addr:0x2084028 -_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x2084040 -_ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x2084064 +_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084028 +_ZN10MapManager18func_ov00_020840a0Ecc kind:function(arm,size=0x24) addr:0x2084040 +_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x2084064 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x208407c _ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x20840a0 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x20840b4 diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index a99658ac..d4602640 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -135,7 +135,7 @@ public: /* 48 */ virtual void vfunc_48(); /* 4c */ virtual s32 vfunc_4c() = 0; /* 50 */ virtual unk32 vfunc_50(); - /* 54 */ virtual unk32 vfunc_54(unk8 *param_1); + /* 54 */ virtual unk32 vfunc_54(Vec2b *param_1); /* 58 */ virtual unk32 vfunc_58(Vec2b *param_1, int param_2); /* 5c */ virtual unk32 vfunc_5c(); /* 60 */ virtual unk32 vfunc_60(u8 *param_1); @@ -144,7 +144,7 @@ public: /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); /* 74 */ virtual s32 vfunc_74(Vec3p *param_2); - /* 78 */ virtual unk32 vfunc_78(bool *param_1); + /* 78 */ virtual unk32 vfunc_78(Vec2b *param_1); /* 7c */ virtual s32 vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]); /* 80 */ virtual unk32 vfunc_80(); /* 84 */ virtual void vfunc_84(unk32 param_2); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index d82694db..52be0786 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -166,7 +166,7 @@ public: s32 GetTileEndZ(unk32 z); s32 func_ov00_02083c24(unk32 x); s32 func_ov00_02083c50(unk32 z); - void func_ov00_02083c7c(Vec3p *param_2, u32 param_3); + void func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3); static void func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5); s32 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); unk32 MapData_vfunc_60(u8 *param_1); @@ -178,9 +178,9 @@ public: unk32 MapData_vfunc_70(Vec3p *param_2); static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds); - unk32 MapData_vfunc_54(unk8 *a); - unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4); - unk32 MapData_vfunc_78(bool *param_1); + unk32 MapData_vfunc_54(Vec2b *a); + unk32 func_ov00_020840a0(unk8 param_2, unk8 param_3); + unk32 MapData_vfunc_78(Vec2b *param_1); unk8 func_ov00_020840dc(); static unk8 func_ov00_02084100(unk32 *param_1, MapManager *param_2); u32 GetMapData_Unk_48(); @@ -232,10 +232,10 @@ public: unk8 func_ov00_02084d24(unk8 param_2, unk8 param_3, unk32 param_4); s32 func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4); unk32 func_ov00_02084ebc(Vec3p *param_2); - s32 func_ov00_02085108(s32 *param_2); + s32 func_ov00_02085108(Vec3p *param_2); static s32 func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *param_3); static s32 func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *param_3); - static unk32 func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 param_3, unk32 param_4); + unk32 func_ov00_02085594(Vec3p *param_2); static void func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3); static unk8 func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3); s32 func_ov00_02085a34(Vec3p *param_2, unk32 param_3); diff --git a/include/Map/MapOverworld.hpp b/include/Map/MapOverworld.hpp index 482b3ad1..4ce6d91a 100644 --- a/include/Map/MapOverworld.hpp +++ b/include/Map/MapOverworld.hpp @@ -46,7 +46,7 @@ public: /* 1c */ virtual void vfunc_1c(bool param_2) override; /* 20 */ virtual void vfunc_20(s32 param_2) override; /* 2c */ virtual void vfunc_2c() override; - /* 4c */ virtual void vfunc_4c() override; + /* 4c */ virtual s32 vfunc_4c() override; /* 54 */ virtual unk32 vfunc_54() override; /* 58 */ virtual unk32 vfunc_58() override; /* 5c */ virtual unk32 vfunc_5c() override; @@ -58,7 +58,7 @@ public: /* 94 */ virtual void vfunc_94() override; /* 98 */ virtual void vfunc_98() override; /* a4 */ virtual unk32 vfunc_a4() override; - /* b0 */ virtual unk8 vfunc_b0(unk32 param_2, unk32 param_3) override; + /* b0 */ virtual void vfunc_b0(unk32 param_2, unk32 param_3) override; /* bc */ virtual void vfunc_bc() override; /* c0 */ virtual void vfunc_c0() override; /* c4 */ diff --git a/include/Player/PlayerBase.hpp b/include/Player/PlayerBase.hpp index bb14a81f..744ff464 100644 --- a/include/Player/PlayerBase.hpp +++ b/include/Player/PlayerBase.hpp @@ -62,6 +62,6 @@ public: }; extern PlayerBase *gPlayer; -extern Vec3p *gPlayerPos; +extern Vec3p gPlayerPos; extern Vec3p gPlayerVel; extern u16 gPlayerAngle; diff --git a/include/lib/math.h b/include/lib/math.h deleted file mode 100644 index 28e2fd0b..00000000 --- a/include/lib/math.h +++ /dev/null @@ -1,96 +0,0 @@ -#pragma once - -#include "global.h" -#include "types.h" - -// Q20.12 fixed point number -typedef s32 q20; -// Q4.12 fixed point number -typedef s16 q4; - -#define INT_TO_Q20(n) ((s32) ((n) << 12)) -#define FLOAT_TO_Q21(n) ((s32) (((n) * 8192 + 1) / 4)) -#define FLOAT_TO_Q20(n) ((s32) (((n) * 8192 + 1) / 2)) -#define FLOAT_TO_Q19(n) ((s32) (((n) * 8192 + 1))) -#define ROUND_Q20(n) (((s32) (n) + 0x800) >> 12) -#define MUL_Q20(a, b) (q20)((((s64) (a)) * ((s64) (b)) + 0x800) >> 12) - -#define DEG_TO_ANG(n) ((n) * 0x10000 / 360) -#define SIN(n) (gSinCosTable[2 * ((n) >> 4)]) -#define COS(n) (gSinCosTable[2 * ((n) >> 4) + 1]) - -extern "C" s32 Atan2(s32 x, s32 y); -extern q4 gSinCosTable[]; - -typedef struct { - /* 0 */ s8 x; - /* 1 */ s8 y; - /* 2 */ -} Vec2b; - -typedef struct { - /* 0 */ s16 x; - /* 1 */ s16 y; - /* 2 */ -} Vec2s; - -typedef struct { - /* 0 */ q20 x; - /* 4 */ q20 y; - /* 8 */ q20 z; - /* c */ -} Vec3p; - -extern const Vec3p gVec3p_ZERO; - -extern "C" void Vec3p_Add(Vec3p *a, Vec3p *b, Vec3p *out); -extern "C" void Vec3p_Sub(Vec3p *a, Vec3p *b, Vec3p *out); -extern "C" q20 Vec3p_Dot(Vec3p *a, Vec3p *b); -extern "C" void Vec3p_Cross(Vec3p *a, Vec3p *b, Vec3p *out); -extern "C" q20 Vec3p_Length(Vec3p *a); -extern "C" void Vec3p_Normalize(Vec3p *vec, Vec3p *out); -extern "C" void Vec3p_Axpy(q20 a, Vec3p *x, Vec3p *y, Vec3p *out); -extern "C" q20 Vec3p_Distance(Vec3p *a, Vec3p *b); -extern "C" void Vec3p_Scale(Vec3p *vec, q20 scale); - -inline void Vec3p_Rotate(Vec3p *vec, q20 sin, q20 cos, Vec3p *out) { - out->x += MUL_Q20(vec->z, sin); - out->z += MUL_Q20(vec->z, cos); - out->x += MUL_Q20(vec->x, cos); - out->z += MUL_Q20(vec->x, -sin); -} - -inline void Vec3p_CopyXZ(Vec3p *vec, Vec3p *out) { - q20 z = vec->z; - q20 x = vec->x; - - out->x = x; - out->y = 0; - out->z = z; -} - -inline void Vec3p_Copy(Vec3p *vec, Vec3p *out) { - out->x = vec->x; - out->y = vec->y; - out->z = vec->z; -} - -typedef struct { - /* 00 */ q20 x; - /* 04 */ q20 y; - /* 08 */ q20 z; - /* 0c */ q20 w; - /* 10 */ -} Vec4p; - -typedef struct { - /* 00 */ Vec3p xColumn; - /* 0c */ Vec3p yColumn; - /* 18 */ Vec3p zColumn; - /* 24 */ -} Mat3p; - -extern "C" u32 FastDivide(u32 a, u32 b); -extern "C" u32 Divide(u32 a, u32 b); -extern "C" bool Approach(unk32 *src, unk32 dest, unk32 step); -extern "C" bool Approach_thunk(unk32 *src, unk32 dest, unk32 step); diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index a6af4159..73db38f9 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -332,7 +332,7 @@ ARM bool Actor::vfunc_4c(unk32 *param1) { } ARM bool Actor::IsNearLink() { - Vec3p playerPos = *gPlayerPos; + Vec3p playerPos = gPlayerPos; q20 z = playerPos.z; q20 dx = abs(playerPos.x - mPos.x); @@ -365,7 +365,7 @@ ARM bool Actor::func_ov00_020c1da0(s32 param1, Vec3p *param2) { if (param2) { vec = *param2; } else { - Vec3p_Sub(gPlayerPos, &mPrevPos, &vec); + Vec3p_Sub(&gPlayerPos, &mPrevPos, &vec); } return gPlayer->vfunc_30(mUnk_124, &vec, param1); @@ -379,7 +379,7 @@ ARM bool Actor::func_ov00_020c1e2c(s32 param1, Vec3p *param2) { if (param2) { vec = *param2; } else { - Vec3p_Sub(gPlayerPos, &mPrevPos, &vec); + Vec3p_Sub(&gPlayerPos, &mPrevPos, &vec); } Cylinder hitbox; @@ -411,7 +411,7 @@ ARM bool Actor::func_ov00_020c1fc8(PlayerCollide flags) { bool result = false; if (mHitbox.size >= 0) { Vec3p vecFromPlayer; - Vec3p_Sub(&mPos, gPlayerPos, &vecFromPlayer); + Vec3p_Sub(&mPos, &gPlayerPos, &vecFromPlayer); if (this->CollidesWithPlayer(flags & PlayerCollide_Sword)) { Knockback knockback; knockback.mUnk_00 = gPlayer->EquipItem_vfunc_2c(); @@ -459,7 +459,7 @@ ARM bool Actor::func_ov00_020c1fc8(PlayerCollide flags) { ARM bool Actor::CollidesWithShield(Cylinder *param1) { Vec3p vecFromPlayer; - Vec3p_Sub(&mPos, gPlayerPos, &vecFromPlayer); + Vec3p_Sub(&mPos, &gPlayerPos, &vecFromPlayer); s32 currAngle = gPlayerAngle; s32 angle = Atan2(vecFromPlayer.x, vecFromPlayer.z); s32 angleDiff = (s16) angle - currAngle; @@ -631,13 +631,13 @@ ARM q20 Actor::XzDistanceTo(Vec3p *vec) { } ARM q20 Actor::DistanceToLink() { - return Vec3p_Distance(&mPos, gPlayerPos); + return Vec3p_Distance(&mPos, &gPlayerPos); } ARM q20 Actor::XzDistanceToLink() { Vec3p src; Vec3p_CopyXZ(&mPos, &src); - Vec3p dest = *gPlayerPos; + Vec3p dest = gPlayerPos; dest.y = 0; return Vec3p_Distance(&src, &dest); @@ -655,7 +655,7 @@ ARM s16 Actor::GetAngleTo(Vec3p *vec) { } ARM s32 Actor::GetAngleToLink() { - return this->GetAngleTo(gPlayerPos); + return this->GetAngleTo(&gPlayerPos); } extern "C" void func_0202d95c(Vec3p *param1, q20 param2); @@ -735,7 +735,7 @@ ARM bool Actor::func_ov00_020c2c70() { this->GetLinkPos(&pos); Vec3p_Sub(&pos, &mPos, &vel); } else { - Vec3p_Sub(gPlayerPos, &mPos, &vel); + Vec3p_Sub(&gPlayerPos, &mPos, &vel); } } Vec3p_Add(&mPos, &vel, &mPos); @@ -777,7 +777,7 @@ ARM bool Actor::func_ov00_020c2de4() { func_0202d95c(&vel, FLOAT_TO_Q20(1.0)); } } else { - Vec3p_Sub(gPlayerPos, &mPos, &vel); + Vec3p_Sub(&gPlayerPos, &mPos, &vel); } Vec3p_Add(&mPos, &vel, &mPos); mVel = vel; @@ -927,7 +927,7 @@ ARM void Actor::GetLinkPos(Vec3p *result) { if (gPlayerLink != NULL && gPlayerLink->GetCurrentCharacter() != PlayerCharacter_Link) { return this->GetLinkDummyPos(result); } - result = gPlayerPos; + *result = gPlayerPos; } ARM void Actor::GetLinkDummyPos(Vec3p *result) { @@ -938,7 +938,7 @@ ARM void Actor::GetLinkDummyPos(Vec3p *result) { *result = dummy->mPos; return; } - result = gPlayerPos; + *result = gPlayerPos; } Actor_UnkStruct_09c::Actor_UnkStruct_09c() { diff --git a/src/00_Core/Actor/ActorSpawner.cpp b/src/00_Core/Actor/ActorSpawner.cpp index 55cf1a57..fcf8b66b 100644 --- a/src/00_Core/Actor/ActorSpawner.cpp +++ b/src/00_Core/Actor/ActorSpawner.cpp @@ -68,8 +68,8 @@ ARM s32 ActorSpawner::Spawn(ActorTypeId type, Vec3p *pos, ActorSpawnOptions *opt Actor *actor2 = *actorSlot; actor2->mPos = *pos; actor2->mPrevPos = *pos; - (*actorSlot)->mUnk_010 = gMapManager->GetCourseData_Unk_1c(); - (*actorSlot)->mUnk_011 = gMapManager->GetCourseData_Unk_1d(); + (*actorSlot)->mUnk_010 = gMapManager->GetCurrentMapPosX(); + (*actorSlot)->mUnk_011 = gMapManager->GetCurrentMapPosY(); u16 nextIndex = index + 1; if (actorManager->mMaxActorIndex < nextIndex) { actorManager->mMaxActorIndex = nextIndex; diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index f4182b96..960c9871 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -18,7 +18,7 @@ s32 MapBase::func_ov00_0207e28c(s32 param_2) {} void MapBase::vfunc_b4() {} void MapBase::vfunc_48() {} unk32 MapBase::vfunc_50() {} -unk32 MapBase::vfunc_54(unk8 *param_1) {} +unk32 MapBase::vfunc_54(Vec2b *param_1) {} unk32 MapBase::vfunc_58(Vec2b *param_1, int param_2) {} unk32 MapBase::vfunc_5c() {} unk32 MapBase::vfunc_60(u8 *param_1) {} @@ -40,7 +40,7 @@ void MapBase::vfunc_a0() {} unk32 MapBase::vfunc_a4(unk8 *param_1) {} void MapBase::vfunc_a8() {} void MapBase::vfunc_ac() {} -unk32 MapBase::vfunc_78(bool *param_1) {} +unk32 MapBase::vfunc_78(Vec2b *param_1) {} s32 MapBase::vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]) {} unk32 MapBase::vfunc_80() {} void MapBase::vfunc_84(unk32 param_2) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 15de64f6..176ed826 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -254,12 +254,7 @@ ARM Vec3p *MapManager::func_ov00_02082538() { s32 var1 = this->mMap->vfunc_4c(); Vec3p var0; if (var1 != 2) { - q20 x = gPlayerPos->x; - q20 y = gPlayerPos->y; - var0.x = x; - var0.y = y; - q20 z = gPlayerPos->z; - var0.z = z; + var0 = gPlayerPos; return &var0; } return &this->mMap->mUnk_1a0; @@ -674,9 +669,9 @@ ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { *param_3 = this->mCourse->mUnk_0b8; return; } - local_1c.y = gPlayerPos->y; - local_1c.x = gPlayerPos->x; - local_1c.z = gPlayerPos->z; + local_1c.y = gPlayerPos.y; + local_1c.x = gPlayerPos.x; + local_1c.z = gPlayerPos.z; // this->func_ov00_02083a1c(auStack_2c, this, &local_1c); this->func_ov00_02082d84(auStack_2c, param_2, param_3); } @@ -710,9 +705,9 @@ ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) { *param_3 = this->mCourse->mUnk_0c0; return; } - local_20.x = *(s32 *) gPlayerPos->x; - local_20.y = *(s32 *) gPlayerPos->y; - local_20.z = *(s32 *) gPlayerPos->z; + local_20.x = *(s32 *) gPlayerPos.x; + local_20.y = *(s32 *) gPlayerPos.y; + local_20.z = *(s32 *) gPlayerPos.z; uVar1 = this->func_ov00_02082d08(); this->func_ov00_02083298(uVar1, &local_20, param_2, param_3); } @@ -960,10 +955,10 @@ ARM bool MapManager::func_ov00_020836dc(u32 type, u32 actorId) { switch (actorId) { case 0: case 1: - q20 y = gPlayerPos->y; - playerPos.x = gPlayerPos->x; + q20 y = gPlayerPos.y; + playerPos.x = gPlayerPos.x; playerPos.y = y; - playerPos.z = gPlayerPos->z; + playerPos.z = gPlayerPos.z; break; default: actor = gActorManager->FindActorById(actorId); @@ -1179,11 +1174,11 @@ ARM s32 MapManager::func_ov00_02083c50(unk32 z) { return this->GetMapCenterZ() + this->mMap->GetTileStartZ(z) + 0x800; } -ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, u32 param_3) { +ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3) { Vec3p local_28; - q20 x = this->func_ov00_02083c24(param_3 & 0xff); + q20 x = this->func_ov00_02083c24(param_3.x); // param_2->x = x; - q20 z = this->func_ov00_02083c50(param_3 >> 8 & 0xff); + q20 z = this->func_ov00_02083c50(param_3.y); // param_2->z = z; q20 y = this->MapData_vfunc_68(&local_28, true); // param_2->y = y; @@ -1328,22 +1323,18 @@ void MapManager::GetTileWorldBounds(Vec2b *tile, AABB *tileBounds) { Vec3p_Add(&tileBounds->max, &local_20, &tileBounds->max); } -unk32 MapManager::MapData_vfunc_54(unk8 *a) { +unk32 MapManager::MapData_vfunc_54(Vec2b *a) { return this->mMap->vfunc_54(a); // what to use for this param? } -unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { - unk8 local_8; - unk8 local_7; - unk16 uStack_6; - - uStack_6 = (unk16) ((u32) param_4 >> 0x10); - // _local_8 = CONCAT11(param_3, param_2); - this->MapData_vfunc_54(&local_8); // Doesn't take any params. - // No calls to functions according to objdiff, why??? +unk32 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3) { + Vec2b local_8; + local_8.x = param_2; + local_8.y = param_3; + return this->mMap->vfunc_54(&local_8); } -unk32 MapManager::MapData_vfunc_78(bool *param_1) { // bool* param placeholder for now, no way of knowing what the type is. +unk32 MapManager::MapData_vfunc_78(Vec2b *param_1) { return this->mMap->vfunc_78(param_1); } @@ -1669,9 +1660,9 @@ unk8 MapManager::func_ov00_02084740() { // iVar2 = this->func_ov00_02084700(?); // what param? // iVar3 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__020847d4); if (iVar3 != 2) { - local_1c8 = *(unk32 *) gPlayerPos->x; - local_1c4 = *(unk32 *) gPlayerPos->y; - local_1c0 = *(unk32 *) gPlayerPos->z; + local_1c8 = *(unk32 *) gPlayerPos.x; + local_1c4 = *(unk32 *) gPlayerPos.y; + local_1c0 = *(unk32 *) gPlayerPos.z; // bVar1 = FUN_overlay_d_0__02083780(&local_1c8); // MapManager method? if (bVar1) { iVar2 = this->func_ov00_020847f0(); @@ -2157,7 +2148,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { return 0; } -s32 MapManager::func_ov00_02085108(s32 *param_2) { +s32 MapManager::func_ov00_02085108(Vec3p *param_2) { MapManager *puVar1; unk32 uVar2; int *piVar3; @@ -2199,9 +2190,9 @@ s32 MapManager::func_ov00_02085108(s32 *param_2) { local_2c = iVar8; // iVar4 = func_0202b8e4(&local_34, 2); if (iVar4 != 0) { - *param_2 = piVar3[6]; - param_2[1] = piVar3[7]; - param_2[2] = piVar3[8]; + param_2->x = piVar3[6]; + param_2->y = piVar3[7]; + param_2->z = piVar3[8]; return (int) *(char *) ((int) piVar3 + 0x12); } } @@ -2338,19 +2329,19 @@ s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *par return iVar7; } -unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 param_3, unk32 param_4) { +unk32 MapManager::func_ov00_02085594(Vec3p *param_2) { int *piVar1; int iVar2; unk32 dVar3; // dword unk32 uVar4; bool bVar5; - unk32 uStack_2c; + Vec2b uStack_2c; Vec2b local_28; u32 uStack_24; Vec3p VStack_20; - param_1->func_ov00_02083a1c(&local_28, param_1, param_2); - piVar1 = (int *) param_1->MapData_vfunc_78(0); + MapManager::func_ov00_02083a1c(&local_28, this, param_2); + piVar1 = (int *) this->MapData_vfunc_78(0); bVar5 = true; if (piVar1 != (int *) 0x0) { param_2->x = piVar1[6]; @@ -2382,7 +2373,7 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 } } } - iVar2 = param_1->func_ov00_020840a0(local_28.x, local_28.y, param_4); + iVar2 = this->func_ov00_020840a0(local_28.x, local_28.y); if (iVar2 < 0x47) { if (0x45 < iVar2) { return 0; @@ -2445,13 +2436,13 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 } else if (iVar2 == 0x50) { return 0; } - iVar2 = param_1->mMap->vfunc_58(&local_28, 5); // no params + iVar2 = this->mMap->vfunc_58(&local_28, 5); // no params if (iVar2 != 0) { return 0; } // uStack_2c._0_2_ = CONCAT11(local_27, local_28); - param_1->func_ov00_02083c7c(&VStack_20, uStack_2c); - // dVar3 = param_1->MapData_vfunc_70(); + this->func_ov00_02083c7c(&VStack_20, uStack_2c); + // dVar3 = this->MapData_vfunc_70(); if (dVar3 != 0xffff) { func_ov000_02093a1c(&uStack_24, data_027e0f6c); if ((uStack_24 >> 5 & 3) != 1) { @@ -2505,7 +2496,7 @@ unk8 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 par iVar3 = param_1->GetMapHeight(); local_38 = 0xffffffff; param_1->func_ov00_02083a1c(&local_28, param_1, param_2); - iVar6 = gPlayerPos->y; // *(int *) (PTR_gPlayerPos_overlay_d_0__02085a30 + 4); + iVar6 = gPlayerPos.y; // *(int *) (PTR_gPlayerPos_overlay_d_0__02085a30 + 4); for (iVar7 = local_28.x - 1; iVar7 <= (int) (local_28.x + 1); iVar7 = iVar7 + 1) { if ((-1 < iVar7) && (iVar1 = local_28.y - 1, iVar7 < iVar2)) { for (; iVar1 <= (int) (local_28.y + 1); iVar1 = iVar1 + 1) { diff --git a/src/18_Overworld/Map/MapOverworld.cpp b/src/18_Overworld/Map/MapOverworld.cpp index 5737ea54..e2c73db7 100644 --- a/src/18_Overworld/Map/MapOverworld.cpp +++ b/src/18_Overworld/Map/MapOverworld.cpp @@ -25,7 +25,7 @@ void MapOverworld::vfunc_c0() {} unk32 MapOverworld::vfunc_78() {} unk32 MapOverworld::vfunc_7c() {} unk32 MapOverworld::vfunc_80() {} -unk8 MapOverworld::vfunc_b0(unk32 param_2, unk32 param_3) {} +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() {} @@ -35,4 +35,4 @@ void MapOverworld::func_ov018_0215c9ac() {} void func_ov018_0215ca24(s32 param1) {} void func_ov018_0215ca3c(s32 param1, s32 param2, unk32 param3, unk32 param4) {} void func_ov018_0215ca8c(s32 param1) {} -void MapOverworld::vfunc_4c() {} +s32 MapOverworld::vfunc_4c() {}