summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSammygoodTunes <sygamerz@gmail.com>2025-01-14 15:27:50 +0100
committerSammygoodTunes <sygamerz@gmail.com>2025-01-14 15:27:50 +0100
commitb7be672733b79c460d3f72bc13fd181f3652d8a8 (patch)
treeb8e230e5455b82e44a057d88bddd17248e5fca9e /src
parent3cca73e1c1c0c0beba6f4864126220c478643ffc (diff)
Decompile MapManager::func_ov00_020824cc (28%)
Decompile MapManager::func_ov00_02082504 Decompile MapManager::func_ov00_02082538 (43%) Decompile MapManager::func_ov00_02082614 Decompile MapManager::MapData_vfunc_b0 Decompile MapManager::func_ov00_02082650 Decompile MapManager::func_ov00_02082660 Decompile MapManager::func_ov00_02082670 Decompile MapManager::func_ov00_02082680 Decompile MapManager:: Decompile MapManager::func_ov00_020826a0 (100% but needs verifying) Decompile MapManager::CreateMap (3%) Decompile MapManager::DestroyMap (8%) Decompile MapManager::MapData_vfunc_44 Decompile MapManager::MapData_vfunc_7c (25%) Decompile MapManager::MapData_vfunc_84 Decompile MapManager::func_ov00_020828f8 Decompile MapManager::GetNumMaps Decompile MapManager::func_ov00_02082914 (21%) Decompile MapManager::func_ov00_02082acc Decompile MapManager::func_ov00_02082af4 (55%)
Diffstat (limited to 'src')
-rw-r--r--src/00_Core/Map/MapBase.cpp8
-rw-r--r--src/00_Core/Map/MapManager.cpp290
2 files changed, 268 insertions, 30 deletions
diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp
index e4de4c74..01020023 100644
--- a/src/00_Core/Map/MapBase.cpp
+++ b/src/00_Core/Map/MapBase.cpp
@@ -11,7 +11,7 @@ void MapBase::func_ov00_0207ddf8(bool param_2) {}
void MapBase::func_ov00_0207de68(unk32 param_2) {}
void MapBase::func_ov00_0207de88() {}
void MapBase::func_ov00_0207dea0(bool param_2) {}
-unk8 MapBase::vfunc_b0(unk32 param_2, unk32 param_3) {}
+void MapBase::vfunc_b0(unk32 param_2, unk32 param_3) {}
bool MapBase::func_ov00_0207e08c(s32 *param_2, s32 param_3) {}
s32 MapBase::func_ov00_0207e0f0(s32 param_2) {}
s32 MapBase::func_ov00_0207e28c(s32 param_2) {}
@@ -41,10 +41,10 @@ unk32 MapBase::vfunc_a4() {}
void MapBase::vfunc_a8() {}
void MapBase::vfunc_ac() {}
unk32 MapBase::vfunc_78() {}
-unk32 MapBase::vfunc_7c() {}
+void MapBase::vfunc_7c() {}
unk32 MapBase::vfunc_80() {}
void MapBase::vfunc_84(unk32 param_2) {}
-unk8 MapBase::func_ov00_0207f38c(unk32 param_2) {}
+bool MapBase::func_ov00_0207f38c(s32 *param_2) {}
unk8 MapBase::vfunc_90(unk32 param_2, unk32 param_3, unk32 param_4) {}
void MapBase::vfunc_94() {}
void MapBase::func_ov00_0207f4a4(Vec2s *param_2, unk32 param_3) {}
@@ -103,7 +103,7 @@ void MapBase_Unk2::func_ov00_02080ad0(TriggerBase **param_2, TriggerBase **param
unk8 MapBase::func_ov00_02080b24(Vec2b *param_2) {}
void MapBase::func_ov00_02080d08(unk32 param_2) {}
void MapBase::vfunc_bc() {}
-void MapBase::vfunc_98() {}
+void MapBase::vfunc_98(unk32 param_2, unk32 param_3, unk32 param_4) {}
void MapBase::vfunc_c0() {}
bool MapBase::TriggerOfType_vfunc_10(unk32 type) {}
unk32 TriggerBase::vfunc_10() {}
diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp
index efc01b3e..820191d9 100644
--- a/src/00_Core/Map/MapManager.cpp
+++ b/src/00_Core/Map/MapManager.cpp
@@ -85,32 +85,270 @@ ARM bool MapManager::func_ov00_02082494(s32 param_2) {
return false;
}
-unk8 MapManager::func_ov00_020824cc(unk32 param_2) {}
-unk8 MapManager::func_ov00_02082504() {}
-unk8 *MapManager::func_ov00_02082538() {}
-void MapManager::func_ov00_02082594() {}
-void MapManager::func_ov00_020825ac() {}
-s32 MapManager::GetCourseFilePath(char *courseName, char *buf) {}
-unk8 MapManager::func_ov00_020825e4(unk32 param_2, unk32 param_3) {}
-unk8 MapManager::func_ov00_02082614(unk32 param_2, unk32 param_3) {}
-unk8 MapManager::MapData_vfunc_b0() {}
-void MapManager::func_ov00_02082650(s32 param_2, s32 param_3, unk32 param_4) {}
-void MapManager::func_ov00_02082660(s32 param_2, s32 param_3) {}
-void MapManager::func_ov00_02082670(unk32 param_2, s32 param_3) {}
-void MapManager::func_ov00_02082680(unk32 param_2, unk32 param_3) {}
-unk8 MapManager::func_ov00_020826a0(unk32 param_2, unk32 param_3, unk32 param_4) {}
-unk8 MapManager::CreateMap(unk32 mapType, unk32 param_3, unk32 param_4) {}
-unk8 MapManager::DestroyMap() {}
-unk8 MapManager::MapData_vfunc_44() {}
-unk8 MapManager::func_ov00_02082808() {}
-unk8 MapManager::MapData_vfunc_7c() {}
-unk8 MapManager::MapData_vfunc_84() {}
-bool MapManager::func_ov00_020828f8(s32 *param_2) {}
-unk8 MapManager::GetCourseData_Unk_b0() {}
-s32 MapManager::func_ov00_02082914(unk32 param_2) {}
-unk8 MapManager::func_ov00_02082acc() {}
-unk32 *MapManager::func_ov00_02082adc() {}
-unk8 MapManager::func_ov00_02082af4() {}
+ARM bool MapManager::func_ov00_020824cc(s32 param_2) {
+ s32 var = this->mMap->vfunc_4c();
+ if (var == 2) {
+ bool state;// = this->mMap->func_ov015_02129c44(param_2); // Does not exist.
+ return state;
+ }
+ return false;
+}
+
+ARM s32 MapManager::func_ov00_02082504() {
+ s32 var = this->mMap->vfunc_4c();
+ if (var == 2) {
+ return (s32) this->mMap->mUnk_1ac;
+ }
+ return 0;
+}
+
+ARM unk8 *MapManager::func_ov00_02082538() {
+ unk8 var0[12];
+ s32 var1 = this->mMap->vfunc_4c();
+ if (var1 != 2) {
+ return var0;
+ }
+ return this->mMap->mUnk_1a0;
+ // Reference to gPlayerPos in Ghidra, but not used. (See overlay_d_0::0x2082538)
+}
+
+ARM void MapManager::func_ov00_02082594() {
+ // func_ov000_0208d620(DWORD_027e0f68) does not exist.
+ return;
+}
+
+ARM void MapManager::func_ov00_020825ac() {
+ // func_ov000_0208d680(DWORD_027e0f68) does not exist.
+ return;
+}
+
+ARM s32 MapManager::GetCourseFilePath(char *courseName, char *buf) {
+ // s32 var = sprintf(buf, "Map/%s/course.bin", courseName); // Should we manually define sprintf?
+ // return var;
+}
+
+ARM void MapManager::func_ov00_020825e4(unk32 param_2, char *buf) {
+ // param2 unused.
+ // return value of GetCourseFilePath unused.
+ char *courseName; // = (char *) func_ov000_0209d71c(*(unk32 *) DWORD_027e0f7c) does not exist.
+ this->GetCourseFilePath(courseName, buf);
+}
+
+ARM void MapManager::func_ov00_02082614(char *param_2, unk32 param_3) {
+ this->mCourse->func_ov00_0207ce20(param_3, 0, param_2, 4);
+}
+
+ARM void MapManager::MapData_vfunc_b0(unk32 param_2, unk32 param_3) {
+ this->mMap->vfunc_b0(param_2, param_3);
+}
+
+ARM void MapManager::func_ov00_02082650(s32 param_2, s32 param_3, unk32 param_4) {
+ this->mMap->func_ov00_0208005c(param_2, param_3, param_4);
+}
+
+ARM void MapManager::func_ov00_02082660(s32 param_2, s32 param_3) {
+ this->mMap->func_ov00_0208007c(param_2, param_3);
+}
+
+ARM void MapManager::func_ov00_02082670(unk32 param_2, s32 param_3) {
+ this->mMap->func_ov00_0208006c(param_2, param_3);
+}
+
+ARM void MapManager::func_ov00_02082680(unk32 param_2, unk32 param_3) {
+ this->mMap->vfunc_98(param_2, 5, param_3);
+}
+
+ARM void MapManager::func_ov00_020826a0(unk32 param_2, unk32 param_3, unk32 param_4) {
+ this->mMap->vfunc_98(param_2, 7, param_3 /*, param_4*/);
+ // vfunc_98 takes either three params or four ??? This doesn't make sense
+ // objdiff says 100%
+}
+
+ARM void MapManager::CreateMap(unk32 mapType, unk32 param_3, unk32 param_4) {
+ MapBase *mapBase;
+
+ if (this->mMap == NULL) {
+ switch (mapType) {
+ case 0:
+ // mapBase = (MapBase *) SysObject::operator_new(0x1dc, (astruct_19 **)(DWORD_027e0ce0 + 4), 4);
+ // What is astruct_19 ** ? What is DWORD_027e0ce0 ?
+ if (mapBase != NULL) {
+ // mapBase = (MapBase *)func_ov018_0215b4a0(mapBase, param_3, param_4); // Does not exist.
+ }
+ this->mMap = mapBase;
+ return;
+ case 1: break;
+ case 2:
+ // mapBase = (MapBase *) SysObject::operator_new(0x1b0, (astruct_19 **)(DWORD_027e0ce0 + 4), 4);
+ if (mapBase != NULL) {
+ // mapBase = (MapBase *)func_ov015_02128dd8(mapBase, param_3, param_4); // Does not exist.
+ }
+ this->mMap = mapBase;
+ return;
+ case 3: break;
+ case 4:
+ // mapBase = (MapBase *) SysObject::operator_new(0x790, (astruct_19 **)(DWORD_027e0ce0 + 4), 4);
+ if (mapBase != NULL) {
+ // mapBase = (MapBase *)func_ov012_0212b358(mapBase, param_3, param_4); // Does not exist.
+ }
+ this->mMap = mapBase;
+ return;
+ }
+ // mapBase = (MapBase *) SysObject::operator_new(0x790, (astruct_19 **)(DWORD_027e0ce0 + 4), 4);
+ if (mapBase != NULL) {
+ // mapBase = (MapBase *)func_ov017_0215b4e8(mapBase, param_3, param_4); // Does not exist.
+ }
+ this->mMap = mapBase;
+ }
+ return;
+}
+
+ARM void MapManager::DestroyMap() {
+ if (this->mMap == NULL) {
+ return;
+ } else {
+ // this->mMap->vfunc_04(); Doesn't exist.
+ }
+}
+
+ARM void MapManager::MapData_vfunc_44() {
+ this->mMap->vfunc_44();
+}
+
+ARM void MapManager::func_ov00_02082808(s32 param_2, unk32 param_3, unk32 param_4) {
+ // How to define PTR_027e0d38 ?
+ // if (*(int*)(*(int*)PTR_027e0d38 + 0x14) == 1) {
+ // return;
+ // }
+ s32 var1; // = func_ov00_02084740()
+ s32 var2;
+ if (param_2 == 0) {
+ // var2 = thunk_FUN_0201f91c(DWORD_overlay_d_0_bss__020eec68); // What are these?
+ if (var1 == var2) {
+ return;
+ }
+ // func_ov00_020d70a4(DWORD_overlay_d_0_bss__020eec68, var1, 0, 0x7f, param_4); // And these?
+ } else {
+ // var2 = func_ov00_020a5e9c(*(s32 *) PTR_027e0d38 + 0xc);
+ if (var2 == 0) {
+ // func_ov015_021849a4(DWORD_overlay_d_15_bss__02190458);
+ }
+ // func_ov00_020a5e9c(DWORD_overlay_d_0_bss__020eec68, var1, 0, 0x7f, param_4);
+ }
+ // var1 = func_ov00_020a5e9c(*(s32 *) PTR_027e0d38 + 0xc);
+ if (var1 == 0) {
+ return;
+ }
+ // func_ov00_020d72b8(DWORD_overlay_d_0_bss__020eec68);
+}
+
+ARM void MapManager::MapData_vfunc_7c() {
+ this->mMap->vfunc_7c();
+}
+
+ARM void MapManager::MapData_vfunc_84(unk32 param_2) {
+ this->mMap->vfunc_84(param_2);
+}
+
+ARM bool MapManager::func_ov00_020828f8(s32 *param_2) {
+ return this->mMap->func_ov00_0207f38c(param_2);
+}
+
+ARM u8 MapManager::GetNumMaps() {
+ return this->mCourse->mNumMaps;
+}
+
+ARM s32 MapManager::func_ov00_02082914(unk32 param_2) {
+ int iVar1;
+ int iVar2;
+ int iVar3;
+ int iVar4;
+ int local_50;
+ int local_48;
+ Entrance local_44;
+ Entrance local_30;
+
+ switch (param_2) {
+ case 0xfa:
+ // iVar1 = *(int *)(*(int *) PTR_027e0d38 + 0x28); // define PTR_027e0d38
+ local_30.mPos.x = *(int *) (iVar1 + 0x5c);
+ local_30.mPos.y = *(int *) (iVar1 + 0x60);
+ local_30.mPos.z = *(int *) (iVar1 + 100);
+ local_30.mAngle = *(unk16 *) (iVar1 + 0x68);
+ local_30.mId = *(u8 *) (iVar1 + 0x6a);
+ local_30.mUnk_10 = *(int *) (iVar1 + 0x6c);
+ iVar1 = this->mMap->AddEntrance(&local_30);
+ return iVar1;
+ case 0xfb: break;
+ case 0xfc: break;
+ case 0xfd: break;
+ case 0xfe: break;
+ default: goto switchD_overlay_d_0;
+ }
+ local_44.mId = 0xff;
+ local_44.mUnk_10 = 0;
+ // iVar1 = *(int *) (*(int *) PTR_027e0d38 + 0x28); // define PTR_027e0d38
+ local_50 = *(int *) (iVar1 + 0x38);
+ iVar2 = *(int *) (iVar1 + 0x3c);
+ local_48 = *(int *) (iVar1 + 0x40);
+ iVar1 = 0x2000;
+ iVar3 = 0x2000;
+ iVar4 = 0xfd;
+ if (this->mCourse->mType == 2) {
+ iVar1 = this->mMap->vfunc_88();
+ iVar1 = iVar1 + 0xa000;
+ iVar3 = this->mMap->vfunc_8c();
+ iVar3 = iVar3 + 0xa000;
+ iVar4 = 0xfe;
+ }
+ local_44.mAngle = 0;
+ switch (param_2) {
+ case 0xfb:
+ local_48 = this->GetMapMaxZ();
+ local_48 = local_48 - iVar3;
+ local_44.mAngle = 0x8000;
+ break;
+ case 0xfc:
+ local_48 = this->GetMapMinZ();
+ local_48 = iVar3 + local_48;
+ local_44.mAngle = 0;
+ break;
+ case 0xfd:
+ local_50 = this->GetMapMaxX();
+ local_50 = local_50 - iVar1;
+ local_44.mAngle = 0xc000;
+ break;
+ case 0xfe:
+ local_50 = this->GetMapMinX();
+ local_50 = iVar1 + local_50;
+ local_44.mAngle = 0x4000;
+ }
+ local_44.mId = (u8) param_2;
+ local_44.mPos.x = local_50;
+ local_44.mPos.z = local_48;
+ local_44.mPos.y = iVar2;
+ local_44.mUnk_10 = iVar4;
+ // this = (MapManager *) this->mMap->AddEntrance(&local_44); // huh ????
+switchD_overlay_d_0:
+ return (int) this; // what ???????
+}
+
+ARM void MapManager::func_ov00_02082acc() {
+ this->mCourse->func_ov00_0207d7bc();
+}
+
+ARM unk32 *MapManager::func_ov00_02082adc() {
+ // func_ov000_02096418(DWORD_027e0f70); // Does not exist.
+}
+
+ARM void MapManager::func_ov00_02082af4() {
+ // func_ov00_02082af4(DWORD_027e0f68) // Does not exist.
+ this->mMap->vfunc_48();
+ // this->func_ov00_02082808(0, ?, ?) // Only 1/3 params specified.
+ this->mUnk_0a = 1;
+ this->mUnk_0b = 0;
+}
+
bool MapManager::func_ov00_02082b3c(s32 param_2) {}
ARM u8 MapManager::func_ov00_02082d08() {