summaryrefslogtreecommitdiff
path: root/src/00_Core/Map/MapManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/00_Core/Map/MapManager.cpp')
-rw-r--r--src/00_Core/Map/MapManager.cpp1354
1 files changed, 670 insertions, 684 deletions
diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp
index f991890e..22f15cf8 100644
--- a/src/00_Core/Map/MapManager.cpp
+++ b/src/00_Core/Map/MapManager.cpp
@@ -7,10 +7,15 @@
#include "Actor/ActorManager.hpp"
#include "Actor/ActorSpawner.hpp"
#include "DTCM/UnkStruct_027e077c.hpp"
+#include "DTCM/UnkStruct_027e0c68.hpp"
#include "DTCM/UnkStruct_027e0d38.hpp"
#include "DTCM/UnkStruct_027e0f64.hpp"
+#include "DTCM/UnkStruct_027e0f6c.hpp"
+#include "DTCM/UnkStruct_027e0f78.hpp"
#include "DTCM/UnkStruct_027e0fd4.hpp"
#include "DTCM/UnkStruct_027e103c.hpp"
+#include "Message/MessageManager.hpp"
+#include "Message/MsgProc.hpp"
#include "Player/PlayerBase.hpp"
#include "Save/AdventureFlags.hpp"
#include "Unknown/UnkStruct_02037750.hpp"
@@ -20,22 +25,18 @@
extern bool func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Vec4p *param4);
extern u32 func_ov000_02078bc4(unk32 param_1);
-extern void func_ov000_02078bf0(s32 *param_1, unk32 *param_2);
extern s32 func_ov000_02078fe8(s32 *param_1);
extern void func_ov000_0207920c(s32 *param_1, Vec3p *param_2, s32 *param_3, s32 *param_4);
extern void func_ov000_020792a0(s32 *param_1, s32 param_2, unk32 param_3, unk32 param_4);
extern void func_ov000_02079898(unk32 *param_1, unk32 param_2, unk32 param_3);
extern void func_ov000_020798bc(s32 *param_1, s32 param_2);
-extern void func_ov000_02088000(unk32 param_1, s32 param_2);
+extern void func_ov000_02088000(UnkStruct_027e0f64_04 *param_1, s32 param_2);
extern void func_ov000_02088130(u8 *param_1, unk32 param_2);
extern void func_ov000_02088144(u8 *param_1, unk32 param_2);
-extern unk32 func_ov000_0208b180(s32 *param_1);
+
extern s32 func_ov000_0208b73c(s32 param_1, unk32 param_2);
extern s32 func_ov000_0208b7d0(s32 param_1, Vec3p *param_2);
extern s32 func_ov000_0208b804(s32 *param_1, Vec3p *param_2, Vec3p *param_3);
-extern void func_ov000_0208cc88(s32 *param1);
-extern void func_ov000_0208d620(s32 *param_1);
-extern void func_ov000_0208d680(s32 *param_1);
extern s32 func_ov000_0208df78(s32 *param_1, unk32 param_, unk32 param_3, Vec3p *param_4, s32 *param_5);
extern void func_ov000_0208e6b0(Vec3p *param_1, Vec3p *param_2);
extern s32 func_ov000_0208e6f0(Vec3p *param_1);
@@ -45,30 +46,9 @@ extern void func_ov000_0208ed74(AABB *param_1, Vec3p *param_2);
extern void func_ov000_02093a1c(u32 *param_1, unk32 *param_2, unk32 param_3);
extern void func_ov000_02096324(unk32 *param_1, unk32 *param_2);
extern s32 *func_ov000_02096418(s32 *param_1);
-extern void func_ov000_0209d6e8(unk32 *param_1, unk32 *param_2);
-extern s32 func_ov000_0209d71c(s32 *param_1, s32 param_2);
extern void func_ov000_020c3348(ActorSpawnOptions *param_1);
-extern void func_ov000_020d70a4(unk32 *param_1, unk32 param_2, unk32 param_3, unk32 param_4);
-extern void func_ov000_020d72b8(unk32 *param_1);
-
-extern void func_ov004_021024c4(MapManager *param_1, s32 param_2, bool param_3, s32 param_4);
-extern void func_ov004_02102770(s32 *param_1);
-extern void func_ov004_02102b28(s32 *param_1);
-extern void func_ov004_02102e3c(s32 *param_1);
-extern void func_ov004_02106db8(unk32 *param_1); // UnkStruct_027e0c68 doesn't exist, so using unk32
-
-extern MapBase *func_ov012_0212b358(MapBase *param_1, unk32 param_2, unk32 param_3);
-
-extern MapBase *func_ov015_02128dd8(MapBase *param_1, unk32 param_2, unk32 param_3);
-extern s32 func_ov015_02129c14(MapBase *param_1);
-extern bool func_ov015_02129c24(MapBase *param_1, Vec3p *param_2, Vec3p *param_3);
-extern bool func_ov015_02129c34(MapBase *param_1, s32 param_2);
-extern bool func_ov015_02129c44(MapBase *param_1, s32 param_2);
extern void func_ov015_021849a4(unk32 *param_1);
-extern MapBase *func_ov017_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3);
-extern MapBase *func_ov017_0215b4e8(MapBase *param_1, unk32 param_2, unk32 param_3);
-
// extern MapBase *func_ov018_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3);
struct astruct_16 {
@@ -85,43 +65,85 @@ struct astruct_16 {
/* 2c */
}; // What is this struct?
-class Case_0 : public MapBase {
+class UnkStruct_0212b358 : public MapBase {
public:
char pad[0x790 - 0x1B0];
- Case_0(u32 param1, u32 param2);
- virtual ~Case_0() override;
+ UnkStruct_0212b358(u32 param1, u32 param2);
+ virtual ~UnkStruct_0212b358() override;
+};
+
+class UnkStruct_02128dd8 : public MapBase {
+public:
+ UnkStruct_02128dd8(u32 param1, u32 param2);
+ virtual ~UnkStruct_02128dd8() override;
};
-class Case_4 : public MapBase {
+class UnkStruct_0215b4a0 : public MapBase {
public:
char pad[0x1DC - 0x1B0];
- Case_4(u32 param1, u32 param2);
- virtual ~Case_4() override;
+ UnkStruct_0215b4a0(u32 param1, u32 param2);
+ virtual ~UnkStruct_0215b4a0() override;
};
-class Case_Default : public MapBase {
+class UnkStruct_0215b4e8 : public MapBase {
public:
char pad[0x790 - 0x1B0];
- Case_Default(u32 param1, u32 param2);
- virtual ~Case_Default() override;
+ UnkStruct_0215b4e8(u32 param1, u32 param2);
+ virtual ~UnkStruct_0215b4e8() override;
+};
+
+struct UnkStruct_02084740 {
+ /* 00 */ unk32 mUnk_00[0x6c];
+ /* 68 */
+};
+
+class UnkStruct_02085594 {
+public:
+ /* 00 */ unk32 mUnk_00;
+ /* 04 */ Vec3p mUnk_04;
+ /* 10 */ unk32 mUnk_10;
+ /* 14 */ Vec3p mUnk_14;
+ /* 20 */ unk32 mUnk_20;
+
+ virtual void vfunc_00();
+ virtual void vfunc_04();
+ virtual void vfunc_08();
+ virtual void vfunc_0c();
+ virtual void vfunc_10();
+ virtual void vfunc_14();
+ virtual void vfunc_18();
+ virtual unk8 vfunc_1c();
+ virtual void vfunc_20();
+ virtual void vfunc_24();
+ virtual void vfunc_28();
+ virtual void vfunc_2c();
+ virtual unk32 vfunc_30(unk32 param_2);
+ virtual void vfunc_34();
+ virtual unk32 vfunc_38(unk32 param_2);
+ virtual unk32 vfunc_3c(unk32 param_2);
+};
+
+struct UnkStruct_027e0f68 {
+ void func_ov000_0208cc88();
+ void func_ov000_0208d620();
+ void func_ov000_0208d680();
+ void func_ov004_02102b28();
};
-extern unk32 *data_027e0c68;
extern u32 *data_027e0ce0[];
extern UnkStruct_0202e894 *data_027e0ce4;
extern unk32 *data_027e0d3c;
-extern unk32 *data_027e0f68;
-extern unk32 *data_027e0f6c;
+extern UnkStruct_027e0f68 *data_027e0f68;
extern unk32 *data_027e0f70;
-extern unk32 *data_027e0f78;
-extern unk32 *data_027e0f7c;
-extern UnkStruct_027e103c *data_027e103c;
-
-extern unk32 *data_ov000_020e24a4;
+extern unk32 data_ov000_020e24a4;
+extern unk32 data_ov000_020e24b4;
+extern unk32 data_ov000_020e24c4;
extern MapManager_Unk2 data_ov000_020e24c8[];
extern MapManager_Unk2 data_ov000_020e24e8[];
extern unk32 data_ov015_02190458;
+// static char *gShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"};
+
MapManager::MapManager() {
/*MapManager_Unk1 *object;
undefined *destructor;
@@ -177,86 +199,84 @@ ARM void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_
this->mCourse->func_ov00_0207ca28(param_2, param_3, param_4);
}
-ARM void MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) {
- void *pvVar3;
- unk32 uVar2;
- FlagsUnk2 local_40[2];
-
- local_40[1].mUnk_00.mUnk_00 = 0x47;
- local_40[1].mUnk_04.mUnk_00 = 0;
- local_40[1].mUnk_04.mUnk_04 = 0;
- local_40[1].mUnk_04.mUnk_08 = -2;
- local_40[1].mUnk_04.mUnk_0c = 0;
- local_40[1].mUnk_04.mUnk_0e = -1;
- local_40[1].mUnk_04.mUnk_0f = 0;
- local_40[1].mUnk_04.mUnk_10 = 0;
- local_40[1].mUnk_04.mUnk_11 = 0;
+ARM void MapManager::func_ov00_0208210c(unk32 param_2, UnkStruct_0208210c_param3 *param_3) {
+ FlagsUnk2 local_28;
+ FlagsUnk2 local_40;
+
+ local_28.mUnk_00.mUnk_00 = 0x47;
+ local_28.mUnk_04.mUnk_00.x = 0;
+ local_28.mUnk_04.mUnk_00.y = 0;
+ local_28.mUnk_04.mUnk_00.z = -2;
+ local_28.mUnk_04.mUnk_0c = 0x0000;
+ local_28.mUnk_04.mUnk_0e = -1;
+ local_28.mUnk_04.mUnk_0f = 0;
+ local_28.mUnk_04.mUnk_10 = 0;
+ local_28.mUnk_04.mUnk_11 = 0;
+
if (param_2 != 0) {
- *param_3 = 0xb;
- *(unk8 *) (param_3 + 1) = 2;
- *(u8 *) ((int) param_3 + 5) = 4;
+ param_3->mUnk_00 = 0xb;
+ param_3->mUnk_04 = 2;
+ param_3->mUnk_05 = 4;
} else {
- this->func_ov00_02082348((unk32 *) &local_40[1]);
- *param_3 = ((UnkStruct_027e0d38_UnkC *) &local_40[1])->func_ov000_020a5e9c();
- *(unk8 *) (param_3 + 1) = local_40[1].mUnk_04.mUnk_0e;
- *(u8 *) ((int) param_3 + 5) = local_40[1].mUnk_04.mUnk_0f;
- }
- param_3[2] = ((UnkStruct_027e0d38_UnkC *) ((unk32) (data_027e0d38->mUnk_28) + 0x1c))->func_ov000_020a5e9c();
- *(u8 *) (param_3 + 4) = *(u8 *) ((int) data_027e0d38->mUnk_28 + 0x2e);
- *(unk16 *) (param_3 + 5) = *(unk16 *) ((int) data_027e0d38->mUnk_28 + 0x36);
- pvVar3 = data_027e0d38->mUnk_28;
- param_3[6] = *(unk32 *) ((int) pvVar3 + 0x38); // Likely Vec3p
- param_3[7] = *(unk32 *) ((int) pvVar3 + 0x3c);
- param_3[8] = *(unk32 *) ((int) pvVar3 + 0x40);
- param_3[3] = ((UnkStruct_027e0d38_UnkC *) ((unk32) data_027e0d38->mUnk_28 + 0x44))->func_ov000_020a5e9c();
- *(u8 *) ((int) param_3 + 0x11) = *(u8 *) ((int) data_027e0d38->mUnk_28 + 0x56);
- pvVar3 = data_027e0d38->mUnk_28;
- param_3[9] = *(unk32 *) ((int) pvVar3 + 0x5c); // Likely Vec3p
- param_3[10] = *(unk32 *) ((int) pvVar3 + 0x60);
- param_3[0xb] = *(unk32 *) ((int) pvVar3 + 0x64);
- *(unk16 *) ((int) param_3 + 0x16) = *(unk16 *) ((int) data_027e0d38->mUnk_28 + 0x68);
- pvVar3 = data_027e0d38->mUnk_28;
- local_40[0].mUnk_00.mUnk_00 = *(unk32 *) ((int) pvVar3 + 0x70);
- local_40[0].mUnk_04.mUnk_00 = *(unk32 *) ((int) pvVar3 + 0x74);
- local_40[0].mUnk_04.mUnk_04 = *(unk32 *) ((int) pvVar3 + 0x78);
- local_40[0].mUnk_04.mUnk_08 = *(unk32 *) ((int) pvVar3 + 0x7c);
- local_40[0].mUnk_04.mUnk_0c = *(unk16 *) ((int) pvVar3 + 0x80);
- local_40[0].mUnk_04.mUnk_0e = *(u8 *) ((int) pvVar3 + 0x82);
- local_40[0].mUnk_04.mUnk_0f = *(u8 *) ((int) pvVar3 + 0x83);
- local_40[0].mUnk_04.mUnk_10 = *(u8 *) ((int) pvVar3 + 0x84);
- local_40[0].mUnk_04.mUnk_11 = *(u8 *) ((int) pvVar3 + 0x85);
- uVar2 = ((UnkStruct_027e0d38_UnkC *) &local_40[0])->func_ov000_020a5e9c();
- param_3[0x70] = uVar2;
- *(u8 *) ((int) param_3 + 0x1be) = local_40[0].mUnk_04.mUnk_0e;
- *(u8 *) ((int) param_3 + 0x1bf) = local_40[0].mUnk_04.mUnk_0f;
- func_ov000_02096324(data_027e0f70, param_3);
- func_ov000_0209d6e8(data_027e0f7c, param_3);
+ this->func_ov00_02082348(&local_28);
+ param_3->mUnk_00 = local_28.mUnk_00.func_ov000_020a5e9c();
+ param_3->mUnk_04 = local_28.mUnk_04.mUnk_0e;
+ param_3->mUnk_05 = local_28.mUnk_04.mUnk_0f;
+ }
+
+ param_3->mUnk_08 = data_027e0d38->mUnk_28->mUnk_1c.func_ov000_020a5e9c();
+ param_3->mUnk_10 = data_027e0d38->mUnk_28->mUnk_2e;
+ param_3->mUnk_14 = data_027e0d38->mUnk_28->mUnk_36;
+ param_3->mUnk_18 = data_027e0d38->mUnk_28->mUnk_38;
+ param_3->mUnk_0c = data_027e0d38->mUnk_28->mUnk_44.func_ov000_020a5e9c();
+ param_3->mUnk_11 = data_027e0d38->mUnk_28->mUnk_56;
+ param_3->mUnk_24 = data_027e0d38->mUnk_28->mUnk_5c.mUnk_00;
+ param_3->mUnk_16 = data_027e0d38->mUnk_28->mUnk_5c.mUnk_0c;
+
+ UnkStruct_027e0d38_Unk28 *pUVar4 = data_027e0d38->mUnk_28;
+ local_40.mUnk_00 = pUVar4->mUnk_70.mUnk_00;
+ local_40.mUnk_04.mUnk_00 = pUVar4->mUnk_70.mUnk_04.mUnk_00;
+ local_40.mUnk_04.mUnk_0c = pUVar4->mUnk_70.mUnk_04.mUnk_0c;
+ local_40.mUnk_04.mUnk_0e = pUVar4->mUnk_70.mUnk_04.mUnk_0e;
+ local_40.mUnk_04.mUnk_0f = pUVar4->mUnk_70.mUnk_04.mUnk_0f;
+ local_40.mUnk_04.mUnk_10 = pUVar4->mUnk_70.mUnk_04.mUnk_10;
+ local_40.mUnk_04.mUnk_11 = pUVar4->mUnk_70.mUnk_04.mUnk_11;
+
+ param_3->mUnk_1c0 = local_40.mUnk_00.func_ov000_020a5e9c();
+ param_3->mUnk_1be = local_40.mUnk_04.mUnk_0e;
+ param_3->mUnk_1bf = local_40.mUnk_04.mUnk_0f;
+ func_ov000_02096324(data_027e0f70, (unk32 *) param_3);
+ data_027e0f7c->func_ov000_0209d6e8((unk32 *) param_3);
+
if (this->mCourse->mType != CourseType_TempleOfTheOceanKing) {
- *(bool *) ((int) param_3 + 7) = this->mUnk_08;
- *(bool *) (param_3 + 0x6f) = this->mUnk_09;
+ param_3->mUnk_07 = this->mUnk_08;
+ param_3->mUnk_1bc = this->mUnk_09;
}
}
-ARM void MapManager::func_ov00_0208230c(s32 *param_2) {
- *param_2 = this->mCourse->mIndex;
- Course *course = this->mCourse;
- *(unk8 *) ((u32) param_2 + 0x12) = course->mMapGrid[(u8) course->mCurrMapPos.x][(u8) course->mCurrMapPos.y];
- *(unk8 *) ((u32) param_2 + 0x13) = this->mUnk_0c;
+ARM void MapManager::func_ov00_0208230c(FlagsUnk2 *param_2) {
+ param_2->mUnk_00.mUnk_00 = this->mCourse->mIndex;
+
+ Course *course = this->mCourse;
+ param_2->mUnk_04.mUnk_0e = course->mMapGrid[course->mCurrMapPos.x][course->mCurrMapPos.y];
+ param_2->mUnk_04.mUnk_0f = this->mUnk_0c;
}
-ARM void MapManager::func_ov00_02082348(unk32 *param_2) {
+ARM void MapManager::func_ov00_02082348(FlagsUnk2 *param_2) {
FlagsUnk2 unkStruct;
- unkStruct.mUnk_00.mUnk_00 = 0x47;
- unkStruct.mUnk_04.mUnk_00 = 0;
- unkStruct.mUnk_04.mUnk_04 = 0;
- unkStruct.mUnk_04.mUnk_08 = -2;
- unkStruct.mUnk_04.mUnk_0c = 0;
- unkStruct.mUnk_04.mUnk_0e = -1;
- unkStruct.mUnk_04.mUnk_0f = 0;
- unkStruct.mUnk_04.mUnk_10 = 0;
- unkStruct.mUnk_04.mUnk_11 = 0;
- this->func_ov00_0208230c((s32 *) &unkStruct);
- func_ov000_02078bf0((s32 *) &unkStruct, param_2);
+
+ unkStruct.mUnk_00.mUnk_00 = 0x47;
+ unkStruct.mUnk_04.mUnk_00.x = 0;
+ unkStruct.mUnk_04.mUnk_00.y = 0;
+ unkStruct.mUnk_04.mUnk_00.z = -2;
+ unkStruct.mUnk_04.mUnk_0c = 0;
+ unkStruct.mUnk_04.mUnk_0e = -1;
+ unkStruct.mUnk_04.mUnk_0f = 0;
+ unkStruct.mUnk_04.mUnk_10 = 0;
+ unkStruct.mUnk_04.mUnk_11 = 0;
+
+ this->func_ov00_0208230c(&unkStruct);
+ unkStruct.func_ov000_02078bf0(param_2);
}
ARM void MapManager::func_ov00_020823a4(unk32 param_2) {
@@ -288,75 +308,71 @@ ARM void MapManager::MapData_vfunc_9c() {
}
ARM s32 MapManager::func_ov00_02082424() {
- s32 var = this->mMap->vfunc_4c();
- if (var == 2) {
- var = func_ov015_02129c14(this->mMap); // MapBase::GetUnk_19c_Unk_28 according to Ghidra
- return var;
+ if (this->mMap->vfunc_4c() == 2) {
+ return this->mMap->func_ov015_02129c14(); // MapBase::GetUnk_19c_Unk_28 according to Ghidra
}
+
return 0;
}
ARM bool MapManager::func_ov00_02082454(Vec3p *param_2, Vec3p *param_3) {
- s32 var = this->mMap->vfunc_4c();
- if (var == 2) {
- bool state = func_ov015_02129c24(this->mMap, param_2, param_3);
- return state;
+ if (this->mMap->vfunc_4c() == 2) {
+ return this->mMap->func_ov015_02129c24(param_2, param_3);
}
+
return false;
}
ARM bool MapManager::func_ov00_02082494(s32 param_2) {
- s32 var = this->mMap->vfunc_4c();
- if (var == 2) {
- bool state = func_ov015_02129c34(this->mMap, param_2);
- return state;
+ if (this->mMap->vfunc_4c() == 2) {
+ return this->mMap->func_ov015_02129c34(param_2);
}
+
return false;
}
ARM bool MapManager::func_ov00_020824cc(s32 param_2) {
- s32 var = this->mMap->vfunc_4c();
- if (var == 2) {
- bool state = func_ov015_02129c44(this->mMap, param_2);
- return state;
+ if (this->mMap->vfunc_4c() == 2) {
+ return this->mMap->func_ov015_02129c44(param_2);
}
+
return false;
}
ARM s32 MapManager::func_ov00_02082504() {
- s32 var = this->mMap->vfunc_4c();
- if (var == 2) {
+ if (this->mMap->vfunc_4c() == 2) {
return this->mMap->mUnk_1ac;
}
+
return 0;
}
ARM Vec3p *MapManager::func_ov00_02082538() {
- s32 var1 = this->mMap->vfunc_4c();
Vec3p var0;
- if (var1 == 2) {
+
+ if (this->mMap->vfunc_4c() == 2) {
return &this->mMap->mUnk_1a0;
}
+
+ //! @bug: returning pointer to local variable (fake match?)
var0 = gPlayerPos;
return &var0;
}
ARM void MapManager::func_ov00_02082594() {
- func_ov000_0208d620(data_027e0f68);
+ data_027e0f68->func_ov000_0208d620();
}
ARM void MapManager::func_ov00_020825ac() {
- func_ov000_0208d680(data_027e0f68);
+ data_027e0f68->func_ov000_0208d680();
}
ARM s32 MapManager::GetCourseFilePath(char *courseName, char *buf) {
- s32 var = sprintf(buf, "Map/%s/course.bin\0\0", courseName);
- return var;
+ return sprintf(buf, "Map/%s/course.bin", courseName);
}
ARM void MapManager::func_ov00_020825e4(unk32 param_2, char *buf) {
- char *courseName = (char *) func_ov000_0209d71c(data_027e0f7c, param_2);
- this->GetCourseFilePath(courseName, buf);
+ this->GetCourseFilePath(data_027e0f7c->func_ov000_0209d71c(param_2), buf);
}
ARM void MapManager::func_ov00_02082614(char *param_2, unk32 param_3) {
@@ -388,36 +404,31 @@ ARM void MapManager::func_ov00_020826a0(unk32 param_2, unk32 param_3) {
}
ARM void MapManager::CreateMap(unk32 mapType, unk32 param_3, unk32 param_4) {
- MapBase *mapBase;
if (this->mMap == NULL) {
switch (mapType) {
case 4:
- this->mMap = new(data_027e0ce0[1], 4) Case_0(param_3, param_4);
+ this->mMap = new(data_027e0ce0[1], 4) UnkStruct_0212b358(param_3, param_4);
break;
case 2:
- this->mMap = new(data_027e0ce0[1], 4) MapBase(param_3, param_4);
+ this->mMap = new(data_027e0ce0[1], 4) UnkStruct_02128dd8(param_3, param_4);
break;
case 0:
- this->mMap = new(data_027e0ce0[1], 4) Case_4(param_3, param_4);
+ this->mMap = new(data_027e0ce0[1], 4) UnkStruct_0215b4a0(param_3, param_4);
break;
case 1:
case 3:
default:
- this->mMap = new(data_027e0ce0[1], 4) Case_Default(param_3, param_4);
+ this->mMap = new(data_027e0ce0[1], 4) UnkStruct_0215b4e8(param_3, param_4);
break;
}
}
}
ARM void MapManager::DestroyMap() {
- if (this->mMap == NULL) {
- return;
- }
if (this->mMap != NULL) {
- this->mMap->~MapBase(); // 0x0 offset instead of the expected 0x4.
+ delete this->mMap;
+ this->mMap = NULL;
}
- this->mMap = NULL;
- return;
}
ARM void MapManager::MapData_vfunc_44() {
@@ -426,29 +437,31 @@ ARM void MapManager::MapData_vfunc_44() {
ARM void MapManager::func_ov00_02082808(bool param_2) {
int iVar1;
- int iVar2;
if (data_027e0d38->mUnk_14 == 1) {
return;
}
+
iVar1 = this->func_ov00_02084740();
+
if (param_2) {
- iVar2 = data_027e0d38->mUnk_0c.func_ov000_020a5e9c();
- if (iVar2 == 0) {
+ if (data_027e0d38->mUnk_0c.func_ov000_020a5e9c() == 0) {
func_ov015_021849a4(&data_ov015_02190458);
}
- data_ov000_020eec68.func_ov000_020d70a4(iVar1, 0, 0x7f);
+
+ data_ov000_020eec68.func_ov000_020d70a4(iVar1, 0, 127);
} else {
- iVar2 = data_ov000_020eec68.func_ov000_020d7424();
- if (iVar1 == iVar2) {
+ if (iVar1 == data_ov000_020eec68.func_ov000_020d7424()) {
return;
}
- data_ov000_020eec68.func_ov000_020d70a4(iVar1, 0, 0x7f);
+
+ data_ov000_020eec68.func_ov000_020d70a4(iVar1, 0, 127);
}
- iVar1 = data_027e0d38->mUnk_0c.func_ov000_020a5e9c();
- if (iVar1 == 0) {
+
+ if (data_027e0d38->mUnk_0c.func_ov000_020a5e9c() == 0) {
return;
}
+
data_ov000_020eec68.func_ov000_020d72b8();
}
@@ -469,16 +482,18 @@ ARM u8 MapManager::GetNumMaps() {
}
ARM s32 MapManager::func_ov00_02082914(unk32 param_2) {
- void *pvVar1;
- int iVar3;
- int iVar4;
+ q20 iVar3;
+ q20 iVar4;
int iVar5;
Vec3p pVar1;
+ Entrance local_30;
+
+ int local_48;
+ int local_50;
switch (param_2) {
- case 0xfa:
- pvVar1 = data_027e0d38->mUnk_28;
- Entrance local_30(*(Entrance *) ((s32) pvVar1 + 0x5c));
+ case 0xfa: // temp correction
+ Entrance local_30(*(Entrance *) ((s32) data_027e0d38->mUnk_28 + 0x5c));
iVar3 = this->mMap->AddEntrance(&local_30);
return iVar3;
case 0xfb:
@@ -487,48 +502,44 @@ ARM s32 MapManager::func_ov00_02082914(unk32 param_2) {
case 0xfe:
break;
default:
- return (int) this;
+ return this->mCourse->mIndex;
}
+
Entrance local_44;
- pvVar1 = data_027e0d38->mUnk_28;
- pVar1 = *(Vec3p *) ((int) pvVar1 + 0x38);
- iVar3 = 0x2000;
- iVar4 = 0x2000;
- iVar5 = 0xfd;
+
+ pVar1 = data_027e0d38->mUnk_28->mUnk_38;
+ iVar3 = FLOAT_TO_Q20(2.0);
+ iVar4 = FLOAT_TO_Q20(2.0);
+ iVar5 = 0xfd;
if (this->mCourse->mType == CourseType_Sea) {
- iVar3 = this->mMap->vfunc_88();
- iVar3 = iVar3 + 0xa000;
- iVar4 = this->mMap->vfunc_8c();
- iVar4 = iVar4 + 0xa000;
+ iVar3 = this->mMap->vfunc_88() + 0xa000;
+ iVar4 = this->mMap->vfunc_8c() + 0xa000;
iVar5 = 0xfe;
}
+
local_44.mAngle = 0;
+
switch (param_2) {
case 0xfb:
- pVar1.z = this->GetMapMaxZ();
- pVar1.z = pVar1.z - iVar4;
+ pVar1.z = this->GetMapMaxZ() - iVar4;
local_44.mAngle = 0x8000;
break;
case 0xfc:
- pVar1.z = this->GetMapMinZ();
- pVar1.z = iVar4 + pVar1.z;
+ pVar1.z = iVar4 + this->GetMapMinZ();
local_44.mAngle = 0;
break;
case 0xfd:
- pVar1.x = GetMapMaxX();
- pVar1.x = pVar1.x - iVar3;
+ pVar1.x = GetMapMaxX() - iVar3;
local_44.mAngle = 0xc000;
break;
case 0xfe:
- pVar1.x = GetMapMinX();
- pVar1.x = iVar3 + pVar1.x;
+ pVar1.x = iVar3 + GetMapMinX();
local_44.mAngle = 0x4000;
+ break;
}
- local_44.mId = (unk8) param_2;
- local_44.mPos.x = pVar1.x;
- local_44.mPos.z = pVar1.z;
- local_44.mPos.y = pVar1.y;
- local_44.mUnk_10 = iVar5;
+
+ local_44.mId = param_2;
+ local_44.mPos = pVar1;
return this->mMap->AddEntrance(&local_44);
}
@@ -541,54 +552,58 @@ ARM s32 *MapManager::func_ov00_02082adc() {
}
ARM void MapManager::func_ov00_02082af4() {
- func_ov000_0208cc88(data_027e0f68);
+ data_027e0f68->func_ov000_0208cc88();
this->mMap->vfunc_48();
this->func_ov00_02082808(false);
this->mUnk_0a = true;
this->mUnk_0b = false;
}
-void MapManager::func_ov00_02082b3c(unk32 *param_2, Vec2b *param_3) {
- u8 bVar1;
- u16 uVar3;
- u32 uVar4;
- unk32 uVar5;
- ActorManager *pAVar6;
- PlayerBase *puVar2;
-
- this->mCourse->FindMapGridPos(param_3, this->mCourse, *(u32 *) ((unk32) param_2 + 0x12));
- uVar4 = this->GetCurrentMapPosX();
- if (((((param_3->x) == uVar4) && (uVar4 = this->GetCurrentMapPosY(), (param_3->y) == uVar4)) &&
- ((*(s32 *) (param_2 + 8) != 1 || (*(s32 *) (*(s32 *) data_027e0d38 + 0x14) != 1)))) &&
- (*(char *) (param_2 + 0x15) == '\0')) {
- gAdventureFlags->func_ov00_020976c8();
- this->mUnk_0c = *(unk32 *) (param_2 + 0x13);
- gPlayer->TeleportToEntrance(*(unk32 *) (param_2 + 0x13), false);
- func_ov004_02106db8(data_027e0c68);
- this->mMap->vfunc_18();
- } else {
+ARM bool MapManager::func_ov00_02082b3c(FlagsUnk2 *param_2) {
+ Vec2b mapGridPos;
+ u8 entranceId;
+ bool cmp;
+ ActorManager *actorManager;
+ u16 var1;
+ u32 var2;
+
+ Course::FindMapGridPos(&mapGridPos, this->mCourse, param_2->mUnk_04.mUnk_0e);
+
+ if (mapGridPos.x != this->GetCurrentMapPosX() || mapGridPos.y != this->GetCurrentMapPosY() ||
+ (param_2->mUnk_04.mUnk_00.y == 1 && data_027e0d38->mUnk_14 == 1) || param_2->mUnk_04.mUnk_11 != 0) {
gAdventureFlags->func_ov00_020976c8();
data_027e0f64->func_ov000_0208b13c();
- uVar5 = this->func_ov00_02082d08();
- gActorManager->func_ov004_02105608(param_3->x, param_3->y, uVar5);
+ actorManager = gActorManager;
+ actorManager->func_ov004_02105608(mapGridPos.x, mapGridPos.y, this->func_ov00_02082d08());
this->mMap->vfunc_2c();
- func_ov004_02102b28(data_027e0f68);
- func_ov004_02102770(data_027e0f6c);
- func_ov004_02102e3c(data_027e0f78);
- bVar1 = *(u8 *) (param_2 + 0x12);
- uVar3 = this->mCourse->FindCurrentMapData_Unk_04();
- uVar4 = this->mCourse->FindMapData_Unk_04((u32) bVar1);
- (this->mCourse->mCurrMapPos).x = (u8) param_3->x;
- (this->mCourse->mCurrMapPos).y = (u8) param_3->y;
- this->func_ov004_021024c4(param_2, uVar3 != uVar4, 0);
- gActorManager->func_ov004_02105578(*(unk32 *) ((unk32) param_2 + 0x12));
+ data_027e0f68->func_ov004_02102b28();
+ data_027e0f6c->func_ov004_02102770();
+ data_027e0f78->func_ov004_02102e3c();
+ entranceId = param_2->mUnk_04.mUnk_0e;
+ cmp = false;
+ var1 = this->mCourse->FindCurrentMapData_Unk_04();
+ var2 = this->mCourse->FindMapData_Unk_04(entranceId);
+ if (var1 != var2) {
+ cmp = true;
+ }
+ this->mCourse->mCurrMapPos.x = mapGridPos.x;
+ this->mCourse->mCurrMapPos.y = mapGridPos.y;
+ this->func_ov004_021024c4(param_2, cmp, false);
+ gActorManager->func_ov004_02105578(param_2->mUnk_04.mUnk_0e);
data_027e103c->func_ov000_020cfcec();
+ } else {
+ gAdventureFlags->func_ov00_020976c8();
+ this->mUnk_0c = param_2->mUnk_04.mUnk_0f;
+ gPlayer->TeleportToEntrance(param_2->mUnk_04.mUnk_0f, false);
+ gMessageManager.func_ov004_02106db8();
+ this->mMap->vfunc_18();
}
+ return true;
}
ARM u8 MapManager::func_ov00_02082d08() {
Course *course = this->mCourse;
- return course->mMapGrid[(u8) course->mCurrMapPos.x][(u8) course->mCurrMapPos.y];
+ return course->mMapGrid[course->mCurrMapPos.x][course->mCurrMapPos.y];
}
ARM u8 MapManager::GetCurrentMapPosX() {
@@ -602,10 +617,12 @@ ARM u8 MapManager::GetCurrentMapPosY() {
ARM u8 MapManager::func_ov00_02082d40() {
switch (this->mCourse->mType) {
case CourseType_Sea:
- return this->mCourse->mMapGrid[(u8) this->mCourse->mCurrMapPos.x][(u8) this->mCourse->mCurrMapPos.y];
+ return this->mCourse->mMapGrid[this->mCourse->mCurrMapPos.x][this->mCourse->mCurrMapPos.y];
default:
- return this->mCourse->mUnk_0b1;
+ break;
}
+
+ return this->mCourse->mUnk_0b1;
}
ARM u32 MapManager::func_ov00_02082d74(unk32 param_2) {
@@ -626,113 +643,110 @@ ARM void MapManager::func_ov00_02082d84(Vec2b *param_2, s32 *param_3, s32 *param
}
ARM bool MapManager::func_ov00_02082e1c(s32 *param_2, s32 *param_3) {
- unk32 local_20; // Unused. What could this be for?
- unk32 local_24; // Unused. What could this be for?
- unk32 local_28; // Vec3p instead ???
- s32 local_44[11]; // not [6] apparently
- s32 local_48;
+ Vec2p mapScreenPos;
+ u8 uVar8;
+ Vec3p local_28;
Vec2b local_4a;
- u8 local_4b;
- u8 local_4c;
- u8 bVar1;
- u8 bVar2;
- s64 lVar3;
- s32 iVar5;
- u32 uVar7;
- if (!this->mCourse->mUnk_25c) {
- *param_2 = 0xc0;
- *param_3 = 0xc0;
- return false;
- }
- if (!this->mCourse->IsCurrentMapInMainGrid()) {
- local_44[0] = -0x100;
- local_48 = -0x100;
- bVar1 = this->mMap->mUnk_01a;
- iVar5 = data_027e0d38->func_ov000_02078b40();
- if (iVar5 == 0) {
- // bVar2 = *(u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28) + 0x9a);
- } else {
- // bVar2 = *(u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28) + 0x2e);
- }
- uVar7 = (u32) bVar2;
- if (uVar7 == 0xff) {
- uVar7 = (u32) (u8) this->mCourse->mMapGrid[(u8) this->mCourse->mUnk_01e][(u8) this->mCourse->mUnk_01f];
- }
- // iVar5 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__02083068);
- if (iVar5 == 0) {
- // iVar5 = *(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28);
- local_24 = *(unk32 *) (iVar5 + 0xa4);
- local_20 = *(unk32 *) (iVar5 + 0xa8);
- local_28 = *(unk32 *) (iVar5 + 0xa0);
- } else {
- // iVar5 = *(int *) (*(int *) PTR_PTR_overlay_d_0__02083068 + 0x28);
- local_24 = *(unk32 *) (iVar5 + 0x3c);
- local_20 = *(unk32 *) (iVar5 + 0x40);
- local_28 = *(unk32 *) (iVar5 + 0x38);
- }
- if (this->mCourse->GetMapScreenPos((u32) bVar1, local_44, &local_48)) {
- uVar7 = this->mCourse->GetScreenMapCellSizeX();
- lVar3 = (s64) (s32) ((u32) (u8) this->mMap->mUnk_01b << 0xc) * (s64) (s32) uVar7 + 0x800;
- *param_2 = local_44[0] + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc);
- uVar7 = this->mCourse->GetScreenMapCellSizeY();
- local_4b = this->mMap->mUnk_01c;
+ Vec3p local_4c;
+ Course *course;
+ bool bVar1;
+
+ if (this->mCourse->mUnk_25c) {
+ if (!this->mCourse->IsCurrentMapInMainGrid()) {
+ mapScreenPos.x = -256;
+ mapScreenPos.y = -256;
+ bVar1 = this->mMap->mUnk_01a;
+
+ if (!data_027e0d38->func_ov000_02078b40()) {
+ uVar8 = data_027e0d38->mUnk_28->mUnk_9a;
+ } else {
+ uVar8 = data_027e0d38->mUnk_28->mUnk_2e;
+ }
+
+ if (uVar8 == 0xff) {
+ course = this->mCourse;
+ uVar8 = course->mMapGrid[course->mUnk_01e.x][course->mUnk_01e.y];
+ }
+
+ if (!data_027e0d38->func_ov000_02078b40()) {
+ local_28 = data_027e0d38->mUnk_28->mUnk_38;
+ } else {
+ local_28 = data_027e0d38->mUnk_28->mUnk_a0;
+ }
+
+ long long lVar3;
+
+ if (!this->mCourse->GetMapScreenPos(bVar1, &mapScreenPos.x, &mapScreenPos.y)) {
+ this->mCourse->GetMapScreenPos(uVar8, &mapScreenPos.x, &mapScreenPos.y);
+ Course::FindMapGridPos(&local_4a, this->mCourse, uVar8);
+ MapManager::func_ov00_02083a54(&local_4a, this, &local_28, local_4a.x, local_4a.y);
+ uVar8 = this->mCourse->GetScreenMapCellSizeX();
+ lVar3 = (int) ((u32) local_4c.x << 0xc) * (int) uVar8 + 0x800;
+ *param_2 = mapScreenPos.y + ((int) (((u32) lVar3 >> 0xc | (int) (lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc);
+ uVar8 = this->mCourse->GetScreenMapCellSizeY();
+ } else {
+ uVar8 = this->mCourse->GetScreenMapCellSizeX();
+ lVar3 = (int) ((u32) (char) this->mMap->mUnk_01b << 0xc) * (int) uVar8 + 0x800;
+ *param_2 = mapScreenPos.y + ((int) (((u32) lVar3 >> 0xc | (int) (lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc);
+ uVar8 = this->mCourse->GetScreenMapCellSizeY();
+ local_4c.y = this->mMap->mUnk_01c;
+ }
+
+ // probably an optimized div? or another operator like that
+ /*
+ s64 lVar1 = (s64) ((u8) param_2->x << 0xc) * (s32) uVar3 + 0x800;
+ *param_3 = (s32) (((s32) (lVar1 >> 0xc)) + ((s32) uVar3 >> 1) + 0x800) >> 0xc;
+ */
+ lVar3 = (local_4c.y << 0xc) * uVar8 + 0x800;
+ *param_3 = mapScreenPos.x + ((int) (((u32) lVar3 >> 0xc | (int) (lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc);
+ return true;
} else {
- this->mCourse->GetMapScreenPos(uVar7, local_44, &local_48);
- this->mCourse->FindMapGridPos(&local_4a, this->mCourse, uVar7);
- // this->func_ov00_02083a54(&local_4c, this, &local_28, (u32) local_4a.x, (u32) local_4a.y);
- uVar7 = this->mCourse->GetScreenMapCellSizeX();
- lVar3 = (s64) (s32) ((u32) local_4c << 0xc) * (s64) (s32) uVar7 + 0x800;
- *param_2 = local_44[0] + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc);
- uVar7 = this->mCourse->GetScreenMapCellSizeY();
+ param_2[0] = 0x80;
+ param_3[0] = 0x80;
+ return false;
}
- lVar3 = (s64) (s32) ((u32) local_4b << 0xc) * (s64) (s32) uVar7 + 0x800;
- *param_3 = local_48 + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc);
- return true;
+ } else {
+ param_2[0] = 0xC0;
+ param_3[0] = 0xC0;
+ return false;
}
}
ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) {
- MapManager *pMVar1;
- s32 iVar2;
- MapManager *pMVar3;
Vec2b auStack_2c[18];
- s32 local_28; // This has to be a Vec3p, but uncertain as of now.
- unk32 local_24; // Unused.
- unk32 local_20; // Unused.
Vec3p local_1c;
+ Vec3p local_28;
+ unk32 pMVar1;
+ UnkStruct_027e0d38_Unk28 *iVar2;
+ unk32 pMVar3;
+
+ pMVar3 = this->mCourse->mUnk_008;
+ pMVar1 = -3;
+ if (pMVar3 != -3) {
+ pMVar1 = -2;
+ }
- pMVar3 = (MapManager *) this->mCourse->mUnk_008;
- pMVar1 = this; // why
- if (pMVar3 != (MapManager *) 0xfffffffd) {
- pMVar1 = (MapManager *) 0xfffffffe; // I really don't get this
- }
- if (pMVar3 == (MapManager *) 0xfffffffd || pMVar3 == pMVar1) {
- // iVar2 = *(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083158 + 0x28);
- local_28 = *(int *) (iVar2 + 0x5c);
- local_24 = *(unk32 *) (iVar2 + 0x60);
- local_20 = *(unk32 *) (iVar2 + 100);
- /*this->func_ov00_02083244((u32) * (u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083158 + 0x28) + 0x56), &local_28,
- param_2, param_3);*/
+ local_1c = gPlayerPos;
+ this->func_ov00_02083a1c(auStack_2c, this, &local_1c);
+ this->func_ov00_02082d84(auStack_2c, param_2, param_3);
+
+ if (pMVar3 == -3 || pMVar3 == pMVar1) {
+ iVar2 = data_027e0d38->mUnk_28;
+ local_28 = iVar2->mUnk_5c.mUnk_00;
+ this->func_ov00_02083244(iVar2->mUnk_56, &local_28, param_2, param_3);
return;
}
- if (pMVar3 != (MapManager *) 0xffffffff) {
+ if (pMVar3 != -1) {
*param_2 = this->mCourse->mUnk_0b4;
*param_3 = this->mCourse->mUnk_0b8;
return;
}
- 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);
}
ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) {
- u32 uVar1;
s32 *piVar2;
- UnkStruct_027e0d38_Unk28 *pvVar3;
s32 *piVar4;
- Vec3p local_20;
+ Vec3p playerPos;
Vec3p local_2c;
*piVar4 = this->mCourse->mUnk_008;
@@ -741,36 +755,34 @@ ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) {
if (*piVar4 != -3) {
*piVar2 = -2;
}
- local_20.x = gPlayerPos.x;
- local_20.y = gPlayerPos.y;
- local_20.z = gPlayerPos.z;
- uVar1 = this->func_ov00_02082d08();
- this->func_ov00_02083298(uVar1, &local_20, param_2, param_3);
-
- if (*piVar4 == -2 || piVar4 == piVar2) {
- pvVar3 = data_027e0d38->mUnk_28;
- local_2c.x = pvVar3->mUnk_5c.mUnk_00;
- local_2c.y = pvVar3->mUnk_5c.mUnk_04;
- local_2c.z = pvVar3->mUnk_5c.mUnk_08;
- this->func_ov00_02083298((u32) * (u8 *) (*(s32 *) data_027e0d38->mUnk_28 + 0x56), &local_2c, param_2, param_3);
+
+ playerPos = gPlayerPos;
+ this->func_ov00_02083298(this->func_ov00_02082d08(), &playerPos, param_2, param_3);
+
+ if (*piVar4 != -3 && piVar4 != piVar2) {
+ local_2c = data_027e0d38->mUnk_28->mUnk_5c.mUnk_00;
+ this->func_ov00_02083298(data_027e0d38->mUnk_28->mUnk_56, &local_2c, param_2, param_3);
return;
}
+
if (*piVar4 != -1) {
*param_2 = this->mCourse->mUnk_0bc;
*param_3 = this->mCourse->mUnk_0c0;
+ return;
}
}
ARM void MapManager::func_ov00_02083244(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5) {
- if (4 <= param_2) {
+ if (param_2 >= 4) {
param_2 = 0;
}
+
*param_4 = (param_3->x - data_ov000_020e24e8[param_2].mUnk_0) + 0x800 >> 0xc;
*param_5 = (param_3->z - data_ov000_020e24e8[param_2].mUnk_4) + 0x800 >> 0xc;
}
ARM void MapManager::func_ov00_02083298(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5) {
- if (4 <= param_2) {
+ if (param_2 >= 4) {
param_2 = 0;
}
@@ -787,16 +799,15 @@ ARM bool MapManager::IsMapInMainGrid(u32 map) {
}
ARM bool MapManager::func_ov00_02083328() {
- u32 map = (u32) this->func_ov00_02082d08();
- return this->mCourse->IsMapInMainGrid(map);
+ return this->mCourse->IsMapInMainGrid(this->func_ov00_02082d08());
}
ARM u8 MapManager::GetCourseMainGridSizeX() {
- return (u8) this->mCourse->mMainGridSize.x;
+ return this->mCourse->mMainGridSize.x;
}
ARM u8 MapManager::GetCourseMainGridSizeY() {
- return (u8) this->mCourse->mMainGridSize.y;
+ return this->mCourse->mMainGridSize.y;
}
ARM u16 MapManager::GetMapWidth() {
@@ -877,28 +888,29 @@ ARM void MapManager::GetMapCenter(Vec3p *param_2) {
}
ARM void MapManager::func_ov00_0208346c(AABB *param_2) {
- (param_2->min).x = this->GetMapMinX();
- (param_2->min).z = this->GetMapMinZ();
- (param_2->max).x = this->GetMapMaxX();
- (param_2->max).z = this->GetMapMaxZ();
- (param_2->max).y = 0x1333;
- (param_2->min).y = 0;
+ param_2->min.x = this->GetMapMinX();
+ param_2->min.z = this->GetMapMinZ();
+
+ param_2->max.x = this->GetMapMaxX();
+ param_2->max.z = this->GetMapMaxZ();
+
+ param_2->max.y = FLOAT_TO_Q20(1.2);
+ param_2->min.y = 0;
}
ARM void MapManager::func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4) {
- Vec3p *mapCenter = this->mCourse->FindMapCenter((u32) (u8) this->mCourse->mMapGrid[param_3][param_4]);
- s32 iVar2;
+ Vec3p *mapCenter = this->mCourse->FindMapCenter(this->mCourse->mMapGrid[param_3][param_4]);
+
param_2->x = mapCenter->x;
param_2->y = mapCenter->y;
param_2->z = mapCenter->z;
- iVar2 = this->func_ov00_02083374();
- param_2->x = param_2->x - (iVar2 >> 1);
- iVar2 = this->func_ov00_02083384();
- param_2->z = param_2->z - (iVar2 >> 1);
+
+ param_2->x = param_2->x - (this->func_ov00_02083374() >> 1);
+ param_2->z = param_2->z - (this->func_ov00_02083384() >> 1);
}
ARM void MapManager::func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4) {
- Vec3p *mapCenter = this->mCourse->FindMapCenter((u32) (u8) this->mCourse->mMapGrid[param_3][param_4]);
+ Vec3p *mapCenter = this->mCourse->FindMapCenter(this->mCourse->mMapGrid[param_3][param_4]);
param_2->x = mapCenter->x;
param_2->y = mapCenter->y;
param_2->z = mapCenter->z;
@@ -998,46 +1010,43 @@ ARM bool MapManager::IsTriggerTypeOverlapped(u32 type, Vec3p *pos) {
return this->mMap->IsTriggerTypeOverlapped(type, pos);
}
-ARM bool MapManager::GetOverlappingTrigger(Vec3p *param_2) {
+ARM unk8 MapManager::GetOverlappingTrigger(Vec3p *param_2) {
return this->mMap->GetOverlappingTrigger(param_2);
}
ARM bool MapManager::func_ov00_02083790(s32 param_2) {
- bool bVar1;
- int iVar2;
int aiStack_14;
int iStack_18;
if (param_2 == 0) {
return true;
}
- *(int *) (*(int *) ((unk32 *) data_027e0f64 + 2) + 0x1b4) = param_2;
- *(int *) (*(int *) ((unk32 *) data_027e0f64 + 1) + 0x1b4) = param_2;
- iVar2 = data_027e0d38->func_ov000_02078b40();
- if ((iVar2 != 0) && (bVar1 = this->func_ov00_02082e1c(&aiStack_14, &iStack_18), !bVar1)) {
+
+ data_027e0f64->mUnk_8->mUnk_1b4 = param_2;
+ data_027e0f64->mUnk_4->mUnk_1b4 = param_2;
+
+ if (data_027e0d38->func_ov000_02078b40() != 0 && !this->func_ov00_02082e1c(&aiStack_14, &iStack_18)) {
func_ov000_02079898(data_027e0d3c, param_2, 0x10);
gActorManager->func_ov00_020c3ce8(param_2, true);
}
- bVar1 = this->mMap->AnyTrigger_func_0c(param_2);
- return bVar1;
+
+ return this->mMap->AnyTrigger_func_0c(param_2);
}
ARM bool MapManager::func_ov00_02083840(s32 param_2) {
- bool bVar3;
- s32 iVar4;
-
if (param_2 == 0) {
return true;
}
- *(unk32 *) (*(unk32 *) ((unk32 *) data_027e0f64 + 2) + 0x1b4) = -1;
- *(unk32 *) (*(unk32 *) ((unk32 *) data_027e0f64 + 1) + 0x1b4) = -1;
- iVar4 = func_ov000_02078fe8(data_027e0d3c);
- if (0 <= iVar4) {
+
+ data_027e0f64->mUnk_8->mUnk_1b4 = -1;
+ data_027e0f64->mUnk_4->mUnk_1b4 = -1;
+
+ if (func_ov000_02078fe8(data_027e0d3c) >= 0) {
func_ov000_020798bc(data_027e0d3c, 0x10);
gActorManager->func_ov00_020c3ce8(param_2, false);
}
- bVar3 = this->mMap->TriggerOfType_vfunc_10(param_2);
- return bVar3;
+
+ return this->mMap->TriggerOfType_vfunc_10(param_2);
}
ARM bool MapManager::AddTrigger(s32 param_2) {
@@ -1118,51 +1127,40 @@ ARM void MapManager::func_ov00_02083a1c(Vec2b *param_1, MapManager *param_2, Vec
param_1->y = x;
}
-ARM void MapManager::func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, s32 param_4, s32 *param_5) {
- bool bVar1;
+ARM void MapManager::func_ov00_02083a54(Vec2b *param_1, MapManager *param_2, Vec3p *param_3, s32 param_4, unk32 param_5) {
unk8 uVar2;
unk8 uVar3;
s32 iVar4;
+ Vec3p VStack_20;
u32 uVar5;
- s32 *piVar6;
- Vec3p local_38;
+ Vec3p *piVar6;
Vec3p local_2c;
- Vec3p VStack_20;
+ Vec3p local_38;
- piVar6 = param_3;
- iVar4 = param_2->GetCourseData_Unk_25c();
- if (iVar4 == 0) {
- uVar2 = param_2->func_ov00_020839f8(param_3[2]);
- uVar3 = param_2->func_ov00_020839d4(*param_3);
- *param_1 = uVar3;
- param_1[1] = uVar2;
- return;
- }
- if (param_4 != -1) {
- piVar6 = param_5;
- }
- if (param_4 != -1 && piVar6 != (int *) 0xffffffff) {
- uVar5 = (u32) * (u8 *) ((s32) piVar6 + (s32) (param_2->mCourse->mMapGrid + param_4));
- } else {
- uVar5 = param_2->func_ov00_02082d08();
- }
- bVar1 = param_2->IsMapInMainGrid(uVar5);
- if (!bVar1) {
- uVar2 = param_2->func_ov00_020839f8(param_3[2]);
- uVar3 = param_2->func_ov00_020839d4(*param_3);
- *param_1 = uVar3;
- param_1[1] = uVar2;
+ if (param_2->GetCourseData_Unk_25c() != 0) {
+ uVar5 = (param_4 == -1 || param_5 == 0xffffffff) ? param_2->func_ov00_02082d08()
+ : uVar5 = param_2->mCourse->mMapGrid[param_4][param_5];
+
+ if (param_2->IsMapInMainGrid(uVar5)) {
+ param_2->func_ov00_02083524(&VStack_20, param_4, param_5);
+ local_38 = *param_3;
+ Vec3p_Sub(&local_38, &VStack_20, &local_2c);
+ uVar2 = param_2->mMap->GetClampedTileY(local_2c.z);
+ uVar3 = param_2->mMap->GetClampedTileX(local_2c.x);
+ param_1->x = uVar3;
+ param_1->y = uVar2;
+ return;
+ }
+ uVar2 = param_2->func_ov00_020839f8(param_3->z);
+ uVar3 = param_2->func_ov00_020839d4(param_3->x);
+ param_1->x = uVar3;
+ param_1->y = uVar2;
return;
}
- param_2->func_ov00_02083524(&VStack_20, param_4, *param_5);
- local_38.x = *param_3;
- local_38.y = param_3[1];
- local_38.z = param_3[2];
- Vec3p_Sub(&local_38, &VStack_20, &local_2c);
- uVar2 = param_2->mMap->GetClampedTileY(local_2c.z);
- uVar3 = param_2->mMap->GetClampedTileX(local_2c.x);
- *param_1 = uVar3;
- param_1[1] = uVar2;
+ uVar2 = param_2->func_ov00_020839f8(param_3->z);
+ uVar3 = param_2->func_ov00_020839d4(param_3->x);
+ param_1->x = uVar3;
+ param_1->y = uVar2;
}
ARM s32 MapManager::GetTileStartX(unk32 x) {
@@ -1198,35 +1196,34 @@ ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3) {
param_2->y = this->MapData_vfunc_68(&local_28, true);
}
-ARM void MapManager::func_ov00_02083ce8(Vec3p *param_2, u32 param_3, s32 param_4, u32 param_5) {
- bool bVar1;
+ARM void MapManager::func_ov00_02083ce8(Vec3p *param_2, Vec2b param_3, s32 param_4, u32 param_5) {
u32 uVar2;
- Vec3p local_38;
+ u8 uVar3;
+ u8 uVar4;
Vec3p local_2c;
+ Vec3p local_38;
+ Vec2b local_8;
- uVar2 = param_3;
- bVar1 = GetCourseData_Unk_25c();
- if (bVar1) {
- if (param_4 != -1) {
- uVar2 = param_5;
- } else if (param_4 != -1 && uVar2 != -1) {
- uVar2 = this->mCourse->mMapGrid[param_4][uVar2];
- } else {
+ if (GetCourseData_Unk_25c()) {
+ if (param_4 == -1 || param_5 == -1) {
uVar2 = this->func_ov00_02082d08();
+ } else {
+ uVar2 = this->mCourse->mMapGrid[param_4][param_5];
}
- bVar1 = this->IsMapInMainGrid(uVar2);
- if (bVar1) {
+
+ if (this->IsMapInMainGrid(uVar2)) {
func_ov00_02083524(&local_2c, param_4, param_5);
- param_2->x = local_2c.x + this->mMap->GetTileStartX(param_3 & 0xff) + 0x800;
- param_2->z = local_2c.z + this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800;
+ param_2->x = local_2c.x + this->mMap->GetTileStartX(param_3.x) + 0x800;
+ param_2->z = local_2c.z + this->mMap->GetTileStartZ(param_3.y) + 0x800;
} else {
- param_2->x = this->mMap->GetTileStartX(param_3 & 0xff) + 0x800;
- param_2->z = this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800;
+ param_2->x = this->mMap->GetTileStartX(param_3.x) + 0x800;
+ param_2->z = this->mMap->GetTileStartZ(param_3.y) + 0x800;
}
} else {
- param_2->x = this->mMap->GetTileStartX(param_3 & 0xff) + 0x800;
- param_2->z = this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800;
+ param_2->x = this->mMap->GetTileStartX(param_3.x) + 0x800;
+ param_2->z = this->mMap->GetTileStartZ(param_3.y) + 0x800;
}
+
local_38 = *param_2;
param_2->y = MapData_vfunc_68(&local_38, true);
}
@@ -1243,12 +1240,7 @@ ARM unk32 MapManager::MapData_vfunc_60(Vec2b *param_1) {
}
ARM bool MapManager::func_ov00_02083e70(Vec2b *param_2) {
- int iVar1;
- int iVar2;
-
- iVar1 = this->MapData_vfunc_54(param_2);
-
- switch (iVar1) {
+ switch (this->MapData_vfunc_54(param_2)) {
case 0x1b:
case 0x2b:
case 0x4e:
@@ -1256,9 +1248,7 @@ ARM bool MapManager::func_ov00_02083e70(Vec2b *param_2) {
return true;
}
- iVar1 = this->MapData_vfunc_60(param_2);
- iVar2 = this->GetMapData_Unk_48();
- return iVar1 >= iVar2;
+ return this->MapData_vfunc_60(param_2) >= this->GetMapData_Unk_48();
}
ARM unk32 MapManager::MapData_vfunc_68(Vec3p *param_1, bool param_2) {
@@ -1271,14 +1261,14 @@ ARM s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, bool para
if (param_3->y > local_18.y) {
local_18.y = param_3->y;
}
+
return this->mMap->vfunc_68(&local_18, param_4);
}
ARM unk32 MapManager::func_ov00_02083f44(Vec3p *param_2, bool param_3) {
- Vec3p local_18;
-
- local_18 = *param_2;
- local_18.y = *(data_ov000_020e24a4 + 0x8);
+ q20 x = param_2->x;
+ q20 z = param_2->z;
+ Vec3p local_18 = {x, data_ov000_020e24a4, z};
return this->func_ov00_02083ef8(param_2, &local_18, param_3);
}
@@ -1299,11 +1289,13 @@ ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p
*param_1 = *(u32 *) ((unk32 *) iVar1 + 0x3); // offset 0xc
return;
}
+
dVar2 = param_2->MapData_vfunc_70(param_3);
if (dVar2 != 0xffff) {
- func_ov000_02093a1c(param_1, data_027e0f6c, dVar2);
+ func_ov000_02093a1c(param_1, (unk32 *) data_027e0f6c, dVar2);
return;
}
+
*param_1 = 0;
}
@@ -1324,7 +1316,7 @@ unk32 MapManager::MapData_vfunc_54(Vec2b *param_1) {
return this->mMap->vfunc_54(param_1);
}
-ARM unk32 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3) {
+ARM unk32 MapManager::func_ov00_020840a0(u8 param_2, u8 param_3) {
// Correct param types?
Vec2b vec;
vec.x = param_2;
@@ -1332,6 +1324,7 @@ ARM unk32 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3) {
return this->mMap->vfunc_54(&vec);
}
+// Returns UnkStruct_02085594*
unk32 *MapManager::MapData_vfunc_78(Vec2b *param_1) {
return this->mMap->vfunc_78(param_1);
}
@@ -1343,6 +1336,7 @@ unk32 MapManager::func_ov00_020840dc(Vec2b *param_1) {
if (piVar1 != NULL) {
return piVar1->vfunc_1c();
}
+
return -1;
}
@@ -1352,7 +1346,7 @@ unk8 MapManager::func_ov00_02084100(unk32 *param_1, MapManager *param_2) {
param_1[1] = uVar1;
}
-u32 MapManager::GetMapData_Unk_48() {
+unk32 MapManager::GetMapData_Unk_48() {
return this->mMap->mUnk_048;
}
@@ -1373,15 +1367,11 @@ unk8 MapManager::MapData_vfunc_58(Vec2b *param_1, int param_2) {
}
ARM s32 MapManager::func_ov00_02084164(Vec2b *param_2) {
- int iVar1;
- unk32 uVar2;
-
- iVar1 = this->mMap->vfunc_58(param_2, 7);
- if (iVar1 != 0) {
+ if (this->mMap->vfunc_58(param_2, 7) != 0) {
return 0;
}
- uVar2 = this->MapData_vfunc_54(param_2);
- switch (uVar2) {
+
+ switch (this->MapData_vfunc_54(param_2)) {
case 0:
case 8:
case 9:
@@ -1435,7 +1425,10 @@ ARM s32 MapManager::func_ov00_02084164(Vec2b *param_2) {
case 0x53:
case 0x54:
return 1;
+ default:
+ break;
}
+
return 0;
}
@@ -1500,7 +1493,7 @@ void MapManager::func_ov00_020843ec(s32 *param_2) {
s32 local_24;
s32 local_20;
- // uVar1 = (**(code **) (*param_2 + 8))(); // Which function is this?
+ // uVar1 = (**(code **) (*param_2 + 8))();
if (uVar1 < 2) {
// (**(code **) (*param_2 + 0x3c))(param_2, &local_28); // And this?
// local_40.z = (**(code **) (*param_2 + 0x40))(); // What about this?
@@ -1539,7 +1532,7 @@ void MapManager::func_ov00_020843ec(s32 *param_2) {
return;
}
if (uVar1 == 2) {
- this->mMap->vfunc_2c(/*&local_58*/); // No args?
+ // this->mMap->vfunc_2c(/*&local_58*/); // No args?
local_64.x = local_58;
local_64.y = iStack_54;
local_64.z = iStack_50;
@@ -1597,68 +1590,100 @@ ARM s32 MapManager::func_ov00_020846a4() {
}
ARM s32 MapManager::func_ov00_02084700() {
- s32 iVar1;
- iVar1 = this->mMap->mUnk_034;
+ s32 iVar1 = this->mMap->mUnk_034;
+
if (iVar1 == -1) {
iVar1 = this->mCourse->mUnk_0c4;
}
- if ((iVar1 == 0x1b) && (gActorManager->mUnk_29 != false)) {
+
+ if (iVar1 == 0x1b && gActorManager->mUnk_29) {
iVar1 = 0x1c;
}
+
return iVar1;
}
unk32 MapManager::func_ov00_02084740() {
- static const s32 data_ov000_020d88f0[] = {
+ unk32 bVar1;
+ int iVar2;
+ int iVar3;
+ unk32 uVar4;
+ unk32 uVar5;
+ unk32 uVar6;
+ unk32 uVar7;
+ Vec3p local_1c8;
+ UnkStruct_02084740 local_1bc;
+
+ static const UnkStruct_02084740 data_ov000_020d88f0 = {
+ .mUnk_00 =
+ {
+ 0x51, 0x6e, 0x65, 0x50, 0x30, 0x74, 0x49, 0x50, 0x51, 0x54, 0x52, 0x53, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
+ 0x5f, 0x60, 0x61, 0x5c, 0x5b, 0x5e, 0x62, 0x63, 0x64, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x5d,
+ 0x31, 0x39, 0x3a, 0x3b, 0x3c, 0x32, 0x33, 0x34, 0x35, 0x38, 0x3d, 0xd9, 0xdc, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5,
+ 0xa6, 0x6f, 0x72, 0x75, 0x78, 0x79, 0x7a, 0x7b, 0x7f, 0x83, 0x87, 0x7c, 0x80, 0x84, 0x00, 0x88, 0x89, 0x8a,
+ 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9d,
+ 0x9e, 0x9f, 0xa0, 0x70, 0x71, 0x73, 0x76, 0x77, 0x7d, 0x7e, 0x81, 0x82, 0x86, 0x9c, 0x36, 0x37, // 0xd0, 0xd1,
+ // 0xcd, 0x19a
+ },
+ };
+
+ iVar2 = this->func_ov00_02084700();
+ iVar3 = data_027e0d38->func_ov000_02078b40();
+ if (iVar3 != 2) {
+ local_1c8 = gPlayerPos;
+ bVar1 = this->GetOverlappingTrigger(&local_1c8);
+ if (bVar1 > 0) {
+ iVar2 = this->func_ov00_020847f0(bVar1);
+ }
+ }
+ // 4-member structs? Or just 4 byte values? Since it's 1/4 of 108.
+
+ local_1bc = data_ov000_020d88f0;
+
+ return local_1bc.mUnk_00[iVar2];
+ /*static const s32 data_ov000_020d88f0[] = {
// Map IDs?
- 0x51, 0x6e, 0x65, 0x50, 0x30, 0x74, 0x49, 0x50, 0x51, 0x54, 0x52, 0x53, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5f,
- 0x60, 0x61, 0x5c, 0x5b, 0x5e, 0x62, 0x63, 0x64, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x5d, 0x31, 0x39,
- 0x3a, 0x3b, 0x3c, 0x32, 0x33, 0x34, 0x35, 0x38, 0x3d, 0xd9, 0xdc, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x6f, 0x72,
- 0x75, 0x78, 0x79, 0x7a, 0x7b, 0x7f, 0x83, 0x87, 0x7c, 0x80, 0x84, 0x0, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e,
- 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9d, 0x9e, 0x9f, 0xa0, 0x70, 0x71,
- 0x73, 0x76, 0x77, 0x7d, 0x7e, 0x81, 0x82, 0x86, 0x9c, 0x36, 0x37, 0xd0, 0xd1, 0xcd, 0x19a};
- bool bVar1;
+ 0x51, 0x6e, 0x65, 0x50, 0x30, 0x74, 0x49, 0x50, 0x51, 0x54, 0x52, 0x53, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5f,
+ 0x60, 0x61, 0x5c, 0x5b, 0x5e, 0x62, 0x63, 0x64, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x5d, 0x31, 0x39,
+ 0x3a, 0x3b, 0x3c, 0x32, 0x33, 0x34, 0x35, 0x38, 0x3d, 0xd9, 0xdc, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x6f, 0x72,
+ 0x75, 0x78, 0x79, 0x7a, 0x7b, 0x7f, 0x83, 0x87, 0x7c, 0x80, 0x84, 0x0, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e,
+ 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9d, 0x9e, 0x9f, 0xa0, 0x70, 0x71,
+ 0x73, 0x76, 0x77, 0x7d, 0x7e, 0x81, 0x82, 0x86, 0x9c, 0x36, 0x37, 0xd0, 0xd1, 0xcd, 0x19a,
+ };
+ unk32 bVar1;
int iVar2;
int iVar3;
unk32 uVar4;
unk32 uVar5;
unk32 uVar6;
unk32 uVar7;
- s32 *puVar8;
- unk32 *puVar9;
- unk32 local_1c8;
- unk32 local_1c4;
- unk32 local_1c0;
+ Vec3p local_1c8;
unk32 local_1bc[108];
- // iVar2 = this->func_ov00_02084700(?); // what param?
- // iVar3 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__020847d4);
+ iVar2 = this->func_ov00_02084700();
+ iVar3 = data_027e0d38->func_ov000_02078b40();
if (iVar3 != 2) {
- 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();
+ local_1c8 = gPlayerPos;
+ bVar1 = this->GetOverlappingTrigger(&local_1c8);
+ if (bVar1 > 0) {
+ iVar2 = this->func_ov00_020847f0(bVar1);
}
}
- puVar9 = local_1bc;
- iVar3 = 0x1b;
- puVar8 = (s32 *) data_ov000_020d88f0;
- do {
- uVar4 = *puVar8;
- uVar5 = puVar8[1];
- uVar6 = puVar8[2];
- uVar7 = puVar8[3];
- puVar8 = puVar8 + 4;
- *puVar9 = uVar4;
- puVar9[1] = uVar5;
- puVar9[2] = uVar6;
- puVar9[3] = uVar7;
- puVar9 = puVar9 + 4;
- iVar3 = iVar3 + -1;
- } while (iVar3 != 0);
- return local_1bc[iVar2];
+ iVar3 = 0x1b; //((sizeof(data_ov000_020d88f0) / 4) - 2) / 4;
+ unk32 *array = (unk32 *) &data_ov000_020d88f0;
+ unk32 *array2 = local_1bc;
+ while (iVar3 != 0) {
+ array[0] = array2[0];
+ array[1] = array2[1];
+ array[2] = array2[2];
+ array[3] = array2[3];
+
+ *array += 4;
+ *array2 += 4;
+ iVar3--;
+ }
+
+ return local_1bc[iVar2];*/
}
unk32 MapManager::func_ov00_020847e0() {
@@ -1671,15 +1696,16 @@ ARM unk32 MapManager::func_ov00_020847f0(unk32 type) {
if (triggerBase == NULL) {
return this->func_ov00_02084700();
}
+
if ((triggerBase->mUnk_0c != -1) && ((int) triggerBase->mUnk_0c < 0x6c)) {
return triggerBase->mUnk_0c;
}
+
return this->func_ov00_02084700();
}
bool MapManager::func_ov00_02084838() {
- unk32 uVar1 = this->GetMapData_Unk_38();
- switch (uVar1) {
+ switch (this->GetMapData_Unk_38()) {
case 1:
case 2:
case 3:
@@ -1695,20 +1721,24 @@ bool MapManager::func_ov00_02084838() {
case 0x16:
return true;
default:
- return false;
+ break;
}
+
+ return false;
}
bool MapManager::func_ov00_020848b8() {
- unk32 uVar1 = this->func_ov00_020846a4();
- switch (uVar1) {
+ switch (this->func_ov00_020846a4()) {
case 6:
case 0xc:
case 0xd:
case 0xf:
case 0x11:
return true;
+ default:
+ break;
}
+
return false;
}
@@ -1737,10 +1767,10 @@ u8 MapManager::GetMapData_Unk_07() {
}
bool MapManager::func_ov00_0208499c() {
- s32 iVar2 = this->func_ov00_020849c0();
- if (iVar2 == 0) {
+ if (!this->func_ov00_020849c0()) {
return this->mCourse->IsCurrentMapInMainGrid();
}
+
return false;
}
@@ -1762,6 +1792,7 @@ ARM bool MapManager::func_ov00_020849f8() {
}
break;
}
+
return false;
}
@@ -1780,10 +1811,8 @@ void MapManager::SpawnNPC(Vec3p *pos, unk32 param_3, unk32 param_4) {
}
ARM bool MapManager::func_ov00_02084ac4(u32 actorId) {
- Actor *iVar1;
- bool bVar1;
+ Actor *iVar1 = gActorManager->FindActorById(actorId);
- iVar1 = gActorManager->FindActorById(actorId);
if (iVar1 == NULL) {
return false;
}
@@ -1791,6 +1820,7 @@ ARM bool MapManager::func_ov00_02084ac4(u32 actorId) {
if (iVar1->mType != ActorTypeId_EVIC) {
return false;
}
+
iVar1->mAlive = false;
return true;
}
@@ -1813,9 +1843,11 @@ bool MapManager::GetBlueWarpOpen() {
ARM void MapManager::func_ov00_02084b38(u32 param_2, unk32 param_3, bool param_4) {
MapBase *pMVar1;
+
if (param_2 == 0) {
return;
}
+
switch (param_3) {
case 0:
pMVar1 = this->mMap;
@@ -1840,26 +1872,24 @@ ARM void MapManager::func_ov00_02084b38(u32 param_2, unk32 param_3, bool param_4
}
bool MapManager::func_ov00_02084be0(u32 param_2, unk32 param_3) {
- bool bVar1;
-
if (param_2 == 0) {
return false;
}
+
switch (param_3) {
case 0:
return (this->mMap->mUnk_180[param_2 >> 5].mUnk_0 & 1 << (param_2 & 0x1f)) != 0;
case 1:
- bVar1 = this->mCourse->GetMapDataFlag0(param_2);
- return bVar1;
+ return this->mCourse->GetMapDataFlag0(param_2);
case 2:
- bVar1 = this->mCourse->GetFlag0(param_2);
- return bVar1;
+ return this->mCourse->GetFlag0(param_2);
case 3:
- bVar1 = this->mCourse->SetFlag1(param_2);
- return bVar1;
+ return this->mCourse->SetFlag1(param_2);
default:
- return false;
+ break;
}
+
+ return false;
}
void MapManager::SetMapDataFlag1(unk32 param_2, bool param_3) {
@@ -1874,16 +1904,15 @@ void MapManager::func_ov00_02084c7c(unk32 param_2, bool param_3) {
if (param_2 < 0) {
return;
}
+
this->mCourse->SetMapDataFlag2(param_2, param_3);
}
bool MapManager::func_ov00_02084c94(unk32 param_2) {
- bool bVar1;
-
- if (0 <= param_2) {
- bVar1 = this->mCourse->GetMapDataFlag2(param_2);
- return bVar1;
+ if (param_2 >= 0) {
+ return this->mCourse->GetMapDataFlag2(param_2);
}
+
return false;
}
@@ -1891,16 +1920,15 @@ void MapManager::func_ov00_02084cb0(unk32 param_2, bool param_3) {
if (param_2 < 0) {
return;
}
+
this->mCourse->SetMapDataFlag3(param_2, param_3);
}
bool MapManager::func_ov00_02084cc8(unk32 param_2) {
- bool bVar1;
-
- if (0 <= param_2) {
- bVar1 = this->mCourse->GetMapDataFlag3(param_2);
- return bVar1;
+ if (param_2 >= 0) {
+ return this->mCourse->GetMapDataFlag3(param_2);
}
+
return false;
}
@@ -1908,16 +1936,15 @@ void MapManager::func_ov00_02084ce4(unk32 param_2, bool param_3) {
if (param_2 < 0) {
return;
}
+
this->mCourse->SetMapDataFlag4(param_2, param_3);
}
bool MapManager::func_ov00_02084cfc(unk32 param_2) {
- bool bVar1;
-
- if (0 <= param_2) {
- bVar1 = this->mCourse->GetMapDataFlag4(param_2);
- return bVar1;
+ if (param_2 >= 0) {
+ return this->mCourse->GetMapDataFlag4(param_2);
}
+
return false;
}
@@ -1948,7 +1975,7 @@ s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4)
int iStack_18;
Vec3p VStack_14;
- iVar1 = func_ov000_0208df78((s32 *) data_027e0f64 + 1, param_2, param_3, &VStack_14, &iStack_20);
+ iVar1 = func_ov000_0208df78((s32 *) data_027e0f64->mUnk_4, param_2, param_3, &VStack_14, &iStack_20);
// object = PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8;
if (iVar1 == -1) {
return -1;
@@ -2070,7 +2097,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) {
}
// dVar3 = this->MapData_vfunc_70(); // Missing param.
if (dVar3 != 0xffff) {
- func_ov000_02093a1c(&uStack_14, data_027e0f6c, dVar3);
+ func_ov000_02093a1c(&uStack_14, (unk32 *) data_027e0f6c, dVar3);
if ((uStack_14 >> 5 & 3) != 1) {
return 0;
}
@@ -2136,7 +2163,7 @@ s32 MapManager::func_ov00_02085108(Vec3p *param_2) {
return 0;
}
-s32 MapManager::func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *param_3) {
+s32 MapManager::func_ov00_0208527c(MapManager *param_1, unk32 param_2, Vec3p *param_3) {
u32 uVar1;
MapManager *puVar2;
unk32 uVar3;
@@ -2186,13 +2213,11 @@ s32 MapManager::func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *pa
return 0;
}
for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) {
- // iVar4 = puVar2->MapData_vfunc_78(0);
- if (((iVar4 != 0) && ((*(u32 *) (iVar4 + 4) & 4) != 0)) &&
+ UnkStruct_0208210c_param3 *var = (UnkStruct_0208210c_param3 *) puVar2->MapData_vfunc_78(0);
+ if (((var != NULL) && ((*(u32 *) var->mUnk_04 & 4) != 0)) &&
(iVar5 = func_ov000_0208b73c(iVar4, param_2), iVar5 != 0)) {
- *param_3 = *(unk32 *) (iVar4 + 0x18);
- param_3[1] = *(unk32 *) (iVar4 + 0x1c);
- param_3[2] = *(unk32 *) (iVar4 + 0x20);
- return (int) *(char *) (iVar4 + 0x12);
+ *param_3 = var->mUnk_18;
+ return var->mUnk_12;
}
}
uVar7 = uVar7 + 1;
@@ -2245,8 +2270,8 @@ s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *par
}
local_30 = 0;
for (; uVar1 = local_50, (int) local_48 <= (int) (u32) local_3b; local_48 = local_48 + 1) {
- for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) {
- // iVar3 = gMapManager->MapData_vfunc_78(0);
+ for (; (int) uVar1 <= (int) uVar6; uVar1++) {
+ // iVar3 = gMapManager->MapData_vfunc_78();
if ((((iVar3 != 0) && ((*(u32 *) (iVar3 + 4) & 4) != 0)) &&
(iVar4 = Vec3p_Distance((Vec3p *) (iVar3 + 0x18), param_2), iVar4 < *param_3)) &&
(iVar5 = func_ov000_0208b7d0(iVar3, param_2), iVar5 != 0)) {
@@ -2258,160 +2283,128 @@ s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *par
return iVar7;
}
-unk32 MapManager::func_ov00_02085594(Vec3p *param_2) {
- int *piVar1;
- int iVar2;
- unk32 dVar3; // dword
+ARM unk32 MapManager::func_ov00_02085594(Vec3p *param_2) {
+ UnkStruct_02085594 *piVar1;
+ unk32 dVar3;
unk32 uVar4;
bool bVar5;
- Vec2b uStack_2c;
Vec2b local_28;
u32 uStack_24;
Vec3p VStack_20;
this->func_ov00_02083a1c(&local_28, this, param_2);
- piVar1 = (int *) this->MapData_vfunc_78(&local_28);
+ piVar1 = (UnkStruct_02085594 *) this->MapData_vfunc_78(&local_28);
bVar5 = true;
- if (piVar1 != (int *) 0x0) {
- param_2->x = piVar1[6];
- param_2->y = piVar1[7];
- param_2->z = piVar1[8];
- // iVar2 = (**(code **) (*piVar1 + 0x1c))();
- if (iVar2 < 0x43) {
- if (0x41 < iVar2) {
- return 2;
- }
- if (iVar2 < 2) {
- if (iVar2 != 1) {
- return 0;
+ if (piVar1 != NULL) {
+ *param_2 = piVar1->mUnk_14;
+ switch (piVar1->vfunc_1c()) {
+ case 0x61:
+ if (piVar1->mUnk_04.x != 2) {
+ break;
}
- } else if (iVar2 != 0x38) {
- return 0;
- }
- } else if (iVar2 < 0x5a) {
- if (iVar2 != 0x59) {
- return 0;
- }
- bVar5 = piVar1[2] == 4;
- } else {
- if (iVar2 != 0x61) {
return 0;
- }
- if (piVar1[2] == 2) {
+ case 0x59:
+ bVar5 = piVar1->mUnk_04.x == 4;
+ break;
+ case 0x42:
+ return 2;
+ case 0x1:
+ case 0x38:
+ break;
+ default:
return 0;
- }
}
}
- iVar2 = this->func_ov00_020840a0(local_28.x, local_28.y);
- if (iVar2 < 0x46) {
- if (iVar2 < 0x2a) {
- switch (iVar2) {
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 8:
- case 9:
- case 0x14:
- case 0x16:
- case 0x17:
- case 0x19:
- case 0x1d:
- case 0x1e:
- case 0x1f:
- case 0x27:
- case 0x28:
- case 0x29:
- return 0;
- }
- } else if (iVar2 == 0x37) {
- return 0;
- }
- } else if (iVar2 < 0x48) {
- if (0x47 < iVar2) {
- return 0;
- }
- if (iVar2 == 0x47) {
+ switch (this->func_ov00_020840a0(local_28.x, local_28.y)) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 8:
+ case 9:
+ case 0x14:
+ case 0x16:
+ case 0x17:
+ case 0x19:
+ case 0x1d:
+ case 0x1e:
+ case 0x1f:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x37:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x50:
return 0;
- }
- } else if (iVar2 == 0x50) {
- return 0;
}
- iVar2 = this->mMap->vfunc_58(&local_28, 5);
- if (iVar2 != 0) {
+ if (this->mMap->vfunc_58(&local_28, 5) != 0) {
return 0;
}
- uStack_2c.y = local_28.y;
- uStack_2c.x = local_28.x;
- this->func_ov00_02083c7c(&VStack_20, uStack_2c);
+ this->func_ov00_02083c7c(&VStack_20, local_28);
dVar3 = this->MapData_vfunc_70(&VStack_20);
- if (dVar3 != 0xffff) {
- func_ov000_02093a1c(&uStack_24, data_027e0f6c, dVar3);
- if ((uStack_24 >> 5 & 3) != 1) {
- return 0;
- }
- if (bVar5) {
- uVar4 = 1;
- } else {
- uVar4 = 2;
- }
- return uVar4;
+ if (dVar3 == 0xffff) {
+ return 0;
}
+ func_ov000_02093a1c(&uStack_24, (unk32 *) data_027e0f6c, dVar3);
+ if ((uStack_24 >> 5 & 3) == 1) {
+ return bVar5 ? 1 : 2;
+ }
+
return 0;
}
-void MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3) {
- void *piVar1;
+ARM unk32 MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3) {
+ UnkStruct_02085594 *piVar1;
Vec2b auStack_10;
param_1->func_ov00_02083a1c(&auStack_10, param_1, param_2);
- piVar1 = (unk32 *) param_1->MapData_vfunc_78(&auStack_10);
+ piVar1 = (UnkStruct_02085594 *) param_1->MapData_vfunc_78(&auStack_10);
if (piVar1 == NULL) {
- return;
+ return -1;
}
- if (data_027e077c.mUnk_0 == 1) {
- if (data_027e077c.mUnk_4 == 1) {
- //(**(code **) (*piVar1 + 0x30))(piVar1, param_3);
- return;
- }
- return;
+ if (data_027e077c.mUnk_0 != 1) {
+ return -1;
+ }
+ if (data_027e077c.mUnk_0 == data_027e077c.mUnk_4) {
+ return piVar1->vfunc_30(param_3);
}
+ return -1;
}
-unk32 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3) {
- int iVar1;
- int iVar2;
- int iVar3;
+unk32 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, unk32 param_3) {
+ int mapWidth;
+ int mapHeight;
int iVar4;
- int *piVar5;
- int iVar6;
- int iVar7;
+ UnkStruct_02085594 *piVar5;
+ int playerPosY;
unk32 local_38;
- Vec2b local_28; // x = originally 'local_28' ; y = originally 'local_27'
+ Vec2b local_28;
if (param_3 == 1) {
- func_ov000_02088000(*(unk32 *) (*(int *) data_027e0f64 + 4), 7);
+ func_ov000_02088000(data_027e0f64->mUnk_4, 7);
} else {
- func_ov000_02088000(*(unk32 *) (*(int *) data_027e0f64 + 4), 6);
+ func_ov000_02088000(data_027e0f64->mUnk_4, 6);
}
- iVar2 = param_1->GetMapWidth();
- iVar3 = param_1->GetMapHeight();
- local_38 = 0xffffffff;
+ mapWidth = param_1->GetMapWidth();
+ mapHeight = param_1->GetMapHeight();
+ local_38 = -1;
param_1->func_ov00_02083a1c(&local_28, param_1, param_2);
- 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) {
- if ((-1 < iVar1) && (iVar1 < iVar3)) {
- iVar4 = param_1->MapData_vfunc_60(0);
- iVar4 = iVar4 - iVar6;
+ playerPosY = gPlayerPos.y;
+ for (u8 x = local_28.x - 1; x <= (int) (local_28.x + 1); x++) {
+ if ((x > -1) && (x < mapWidth)) {
+ for (u8 y = local_28.y - 1; y <= (int) (local_28.y + 1); y++) {
+ if ((y > -1) && (y < mapHeight)) {
+ iVar4 = param_1->MapData_vfunc_60(&local_28) - playerPosY;
if (iVar4 < 0) {
iVar4 = -iVar4;
}
- if ((iVar4 < 0xce) && (piVar5 = (int *) param_1->MapData_vfunc_78(&local_28), piVar5 != (int *) 0x0)) {
- // local_38 = (**(code **) (*piVar5 + 0x38))(piVar5, param_3);
+ if ((iVar4 <= 0xcd) &&
+ (piVar5 = (UnkStruct_02085594 *) param_1->MapData_vfunc_78(&local_28), piVar5 != NULL)) {
+ local_38 = piVar5->vfunc_38(param_3);
}
}
}
@@ -2421,14 +2414,13 @@ unk32 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 pa
}
s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) {
- int *piVar1;
+ UnkStruct_02085594 *piVar1;
int iVar2;
unk16 *puVar3;
u32 uVar4;
u32 uVar5;
u32 uVar6;
- unk32 uStack_2c;
- unk32 uStack_2b;
+ Vec2b uStack_2c;
Vec2b auStack_2a[2];
Vec2b aVStack_28[2];
unk16 auStack_24[4];
@@ -2442,17 +2434,18 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) {
return -1;
}
this->func_ov00_02083a1c(auStack_2a, this, param_2);
- piVar1 = (int *) this->MapData_vfunc_78(auStack_2a);
- if (piVar1 == (int *) 0x0) {
+ piVar1 = (UnkStruct_02085594 *) this->MapData_vfunc_78(auStack_2a);
+ if (piVar1 == NULL) {
return -1;
}
- // iVar2 = (**(code **) (*piVar1 + 0x1c))();
+
+ iVar2 = piVar1->vfunc_1c();
if (iVar2 == 0x42) {
- // uStack_2b = *(undefined *) ((int) piVar1 + 0x15);
- // uStack_2c = *(undefined *) (piVar1 + 5);
- // this->mMap->func_ov00_02080d08(&uStack_2c);
+ uStack_2c.y = piVar1->mUnk_14.y;
+ uStack_2c.x = piVar1->mUnk_04.y;
+ this->mMap->func_ov00_02080d08(&uStack_2c);
}
- // iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, param_3);
+ iVar2 = piVar1->vfunc_38(param_3);
return iVar2;
}
this->func_ov00_02083a1c(aVStack_28, this, param_2);
@@ -2460,14 +2453,14 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) {
if (iVar2 == 0) {
return -1;
}
- piVar1 = (int *) this->MapData_vfunc_78(aVStack_28);
- if (piVar1 != (int *) 0x0) {
- // iVar2 = (**(code **) (*piVar1 + 0x1c))();
+ piVar1 = (UnkStruct_02085594 *) this->MapData_vfunc_78(aVStack_28);
+ if (piVar1 != NULL) {
+ iVar2 = piVar1->vfunc_1c();
if (0x38 < iVar2) {
if (iVar2 < 0x5a) {
if (iVar2 == 0x59) {
LAB_overlay_d_0__02085afc:
- // iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, 1); // What is this?
+ iVar2 = piVar1->vfunc_3c(1);
return iVar2;
}
} else if (iVar2 == 0x61) {
@@ -2478,8 +2471,8 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) {
if ((iVar2 < 0x38) && (iVar2 != 1)) {
return -1;
}
- piVar1[1] = piVar1[1] & 0xfffffffe;
- this->func_ov00_020828f8(piVar1);
+ piVar1->mUnk_04.x &= -2;
+ this->func_ov00_020828f8((s32 *) piVar1);
}
this->mMap->func_ov00_02080b24(aVStack_28);
uStack_14 = 0xffff;
@@ -2499,11 +2492,11 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) {
*(unk32 *) (puVar3 + 5) = 0; // Same here.
puVar3 = (unk16 *) ((int) puVar3 + 1);
} while (uVar6 < 2);
- // iVar2 = this->MapData_vfunc_7c(); <- This needs to return some value (not void).
+ // iVar2 = this->MapData_vfunc_7c();
if (iVar2 == 0) {
return -1;
}
- // iVar2 = MapData_vfunc_78(0); // Same here.
+ // iVar2 = MapData_vfunc_78();
if ((iVar2 != 0) && (0 < *(s16 *) (iVar2 + 0xe))) {
return 1;
}
@@ -2520,8 +2513,7 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param
u32 uVar7;
int iStack_10c;
int iStack_108;
- int iStack_104;
- int iStack_100;
+ Vec2p iStack_104;
Vec3p VStack_f0;
Vec3p VStack_e4;
Vec4p VStack_d8;
@@ -2536,16 +2528,16 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param
unk16 uStack_64;
unk16 uStack_62;
unk16 uStack_60;
- unk32 uStack_3e;
- unk32 uStack_3d;
- unk32 uStack_3c;
- unk32 uStack_3b;
- unk32 uStack_34;
- unk32 uStack_33;
- unk32 uStack_32;
- unk32 uStack_31;
- unk32 uStack_30;
- unk32 uStack_2f;
+ unk8 uStack_3e;
+ unk8 uStack_3d;
+ unk8 uStack_3c;
+ unk8 uStack_3b;
+ unk8 uStack_34;
+ unk8 uStack_33;
+ unk8 uStack_32;
+ unk8 uStack_31;
+ unk8 uStack_30;
+ unk8 uStack_2f;
unk32 uStack_2c;
unk32 uStack_28;
@@ -2554,16 +2546,10 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param
}
func_ov000_020792a0(data_027e0d3c, 0, *param_3, param_3[1]);
func_ov000_020792a0(data_027e0d3c, 0, *param_4, param_4[1]);
- VStack_b0.x = VStack_98.x;
- VStack_b0.y = VStack_98.y;
- VStack_b0.z = VStack_98.z;
- VStack_bc.x = VStack_a4.x;
- VStack_bc.y = VStack_a4.y;
- VStack_bc.z = VStack_a4.z;
- VStack_c8.x = VStack_98.x;
- VStack_c8.y = VStack_98.y;
- VStack_c8.z = VStack_98.z;
- Vec3p_Sub(&VStack_c8, &VStack_bc, &VStack_c8);
+ VStack_b0 = VStack_98;
+ VStack_bc = VStack_a4;
+ VStack_c8 = VStack_98;
+ Vec3p_Sub(&VStack_98, &VStack_a4, &VStack_c8);
lVar1 = (u64) param_5 * 0xc000 + 0x800;
uVar7 = (u32) lVar1 >> 0xc | (int) ((u64) lVar1 >> 0x20) * 0x100000;
iVar6 = Vec3p_Length(&VStack_c8);
@@ -2637,9 +2623,9 @@ unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param
VStack_e4.y = aVStack_8c[0].y;
VStack_e4.z = aVStack_8c[0].z;
}
- func_ov000_0207920c(data_027e0d3c, &VStack_e4, &iStack_104, 0);
- param_2[8].x = iStack_104;
- param_2[8].y = iStack_100;
+ func_ov000_0207920c(data_027e0d3c, &VStack_e4, (unk32 *) &iStack_104, 0);
+ param_2[8].x = iStack_104.x;
+ param_2[8].y = iStack_104.y;
return 1;
}
VStack_bc.x = VStack_b0.x;