summaryrefslogtreecommitdiff
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
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%)
-rw-r--r--config/eur/arm9/overlays/ov000/symbols.txt14
-rw-r--r--config/usa/arm9/overlays/ov000/symbols.txt14
-rw-r--r--include/Map/Course.hpp2
-rw-r--r--include/Map/Entrance.hpp3
-rw-r--r--include/Map/MapBase.hpp8
-rw-r--r--include/Map/MapManager.hpp30
-rw-r--r--src/00_Core/Map/MapBase.cpp8
-rw-r--r--src/00_Core/Map/MapManager.cpp290
8 files changed, 304 insertions, 65 deletions
diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt
index 976a411b..57aa4acf 100644
--- a/config/eur/arm9/overlays/ov000/symbols.txt
+++ b/config/eur/arm9/overlays/ov000/symbols.txt
@@ -362,7 +362,7 @@ _ZN7MapBase8vfunc_78Ev kind:function(arm,size=0x8) addr:0x207f34c
_ZN7MapBase8vfunc_7cEv kind:function(arm,size=0x8) addr:0x207f354
_ZN7MapBase8vfunc_80Ev kind:function(arm,size=0x8) addr:0x207f35c
_ZN7MapBase8vfunc_84Ei kind:function(arm,size=0x28) addr:0x207f364
-_ZN7MapBase18func_ov00_0207f38cEi kind:function(arm,size=0x38) addr:0x207f38c
+_ZN7MapBase18func_ov00_0207f38cEPi kind:function(arm,size=0x38) addr:0x207f38c
_ZN7MapBase8vfunc_90Eiii kind:function(arm,size=0xdc) addr:0x207f3c4
_ZN7MapBase8vfunc_94Ev kind:function(arm,size=0x4) addr:0x207f4a0
_ZN7MapBase18func_ov00_0207f4a4EP5Vec2si kind:function(arm,size=0x98) addr:0x207f4a4
@@ -509,9 +509,9 @@ _ZN10MapManager18func_ov00_02082538Ev kind:function(arm,size=0x5c) addr:0x208253
_ZN10MapManager18func_ov00_02082594Ev kind:function(arm,size=0x18) addr:0x2082594
_ZN10MapManager18func_ov00_020825acEv kind:function(arm,size=0x18) addr:0x20825ac
_ZN10MapManager17GetCourseFilePathEPcS0_ kind:function(arm,size=0x20) addr:0x20825c4
-_ZN10MapManager18func_ov00_020825e4Eii kind:function(arm,size=0x30) addr:0x20825e4
-_ZN10MapManager18func_ov00_02082614Eii kind:function(arm,size=0x24) addr:0x2082614
-_ZN10MapManager16MapData_vfunc_b0Ev kind:function(arm,size=0x18) addr:0x2082638
+_ZN10MapManager18func_ov00_020825e4EiPc kind:function(arm,size=0x30) addr:0x20825e4
+_ZN10MapManager18func_ov00_02082614EPci kind:function(arm,size=0x24) addr:0x2082614
+_ZN10MapManager16MapData_vfunc_b0Eii kind:function(arm,size=0x18) addr:0x2082638
_ZN10MapManager18func_ov00_02082650Eiii kind:function(arm,size=0x10) addr:0x2082650
_ZN10MapManager18func_ov00_02082660Eii kind:function(arm,size=0x10) addr:0x2082660
_ZN10MapManager18func_ov00_02082670Eii kind:function(arm,size=0x10) addr:0x2082670
@@ -520,11 +520,11 @@ _ZN10MapManager18func_ov00_020826a0Eiii kind:function(arm,size=0x20) addr:0x2082
_ZN10MapManager9CreateMapEiii kind:function(arm,size=0x100) addr:0x20826c0
_ZN10MapManager10DestroyMapEv kind:function(arm,size=0x30) addr:0x20827c0
_ZN10MapManager16MapData_vfunc_44Ev kind:function(arm,size=0x18) addr:0x20827f0
-_ZN10MapManager18func_ov00_02082808Ev kind:function(arm,size=0xb8) addr:0x2082808
+_ZN10MapManager18func_ov00_02082808Eiii kind:function(arm,size=0xb8) addr:0x2082808
_ZN10MapManager16MapData_vfunc_7cEv kind:function(arm,size=0x20) addr:0x20828c0
-_ZN10MapManager16MapData_vfunc_84Ev kind:function(arm,size=0x18) addr:0x20828e0
+_ZN10MapManager16MapData_vfunc_84Ei kind:function(arm,size=0x18) addr:0x20828e0
_ZN10MapManager18func_ov00_020828f8EPi kind:function(arm,size=0x10) addr:0x20828f8
-_ZN10MapManager20GetCourseData_Unk_b0Ev kind:function(arm,size=0xc) addr:0x2082908
+_ZN10MapManager10GetNumMapsEv kind:function(arm,size=0xc) addr:0x2082908
_ZN10MapManager18func_ov00_02082914Ei kind:function(arm,size=0x1b8) addr:0x2082914
_ZN10MapManager18func_ov00_02082accEv kind:function(arm,size=0x10) addr:0x2082acc
_ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082adc
diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt
index aaa34807..08a4a3f1 100644
--- a/config/usa/arm9/overlays/ov000/symbols.txt
+++ b/config/usa/arm9/overlays/ov000/symbols.txt
@@ -362,7 +362,7 @@ _ZN7MapBase8vfunc_78Ev kind:function(arm,size=0x8) addr:0x207f2ec
_ZN7MapBase8vfunc_7cEv kind:function(arm,size=0x8) addr:0x207f2f4
_ZN7MapBase8vfunc_80Ev kind:function(arm,size=0x8) addr:0x207f2fc
_ZN7MapBase8vfunc_84Ei kind:function(arm,size=0x28) addr:0x207f304
-_ZN7MapBase18func_ov00_0207f38cEi kind:function(arm,size=0x38) addr:0x207f32c
+_ZN7MapBase18func_ov00_0207f38cEPi kind:function(arm,size=0x38) addr:0x207f32c
_ZN7MapBase8vfunc_90Eiii kind:function(arm,size=0xdc) addr:0x207f364
_ZN7MapBase8vfunc_94Ev kind:function(arm,size=0x4) addr:0x207f440
_ZN7MapBase18func_ov00_0207f4a4EP5Vec2si kind:function(arm,size=0x98) addr:0x207f444
@@ -509,9 +509,9 @@ _ZN10MapManager18func_ov00_02082538Ev kind:function(arm,size=0x5c) addr:0x20824d
_ZN10MapManager18func_ov00_02082594Ev kind:function(arm,size=0x18) addr:0x2082534
_ZN10MapManager18func_ov00_020825acEv kind:function(arm,size=0x18) addr:0x208254c
_ZN10MapManager17GetCourseFilePathEPcS0_ kind:function(arm,size=0x20) addr:0x2082564
-_ZN10MapManager18func_ov00_020825e4Eii kind:function(arm,size=0x30) addr:0x2082584
-_ZN10MapManager18func_ov00_02082614Eii kind:function(arm,size=0x24) addr:0x20825b4
-_ZN10MapManager16MapData_vfunc_b0Ev kind:function(arm,size=0x18) addr:0x20825d8
+_ZN10MapManager18func_ov00_020825e4EiPc kind:function(arm,size=0x30) addr:0x2082584
+_ZN10MapManager18func_ov00_02082614EPci kind:function(arm,size=0x24) addr:0x20825b4
+_ZN10MapManager16MapData_vfunc_b0Eii kind:function(arm,size=0x18) addr:0x20825d8
_ZN10MapManager18func_ov00_02082650Eiii kind:function(arm,size=0x10) addr:0x20825f0
_ZN10MapManager18func_ov00_02082660Eii kind:function(arm,size=0x10) addr:0x2082600
_ZN10MapManager18func_ov00_02082670Eii kind:function(arm,size=0x10) addr:0x2082610
@@ -520,11 +520,11 @@ _ZN10MapManager18func_ov00_020826a0Eiii kind:function(arm,size=0x20) addr:0x2082
_ZN10MapManager9CreateMapEiii kind:function(arm,size=0x100) addr:0x2082660
_ZN10MapManager10DestroyMapEv kind:function(arm,size=0x30) addr:0x2082760
_ZN10MapManager16MapData_vfunc_44Ev kind:function(arm,size=0x18) addr:0x2082790
-_ZN10MapManager18func_ov00_02082808Ev kind:function(arm,size=0xb8) addr:0x20827a8
+_ZN10MapManager18func_ov00_02082808Eiii kind:function(arm,size=0xb8) addr:0x20827a8
_ZN10MapManager16MapData_vfunc_7cEv kind:function(arm,size=0x20) addr:0x2082860
-_ZN10MapManager16MapData_vfunc_84Ev kind:function(arm,size=0x18) addr:0x2082880
+_ZN10MapManager16MapData_vfunc_84Ei kind:function(arm,size=0x18) addr:0x2082880
_ZN10MapManager18func_ov00_020828f8EPi kind:function(arm,size=0x10) addr:0x2082898
-_ZN10MapManager20GetCourseData_Unk_b0Ev kind:function(arm,size=0xc) addr:0x20828a8
+_ZN10MapManager10GetNumMapsEv kind:function(arm,size=0xc) addr:0x20828a8
_ZN10MapManager18func_ov00_02082914Ei kind:function(arm,size=0x1b8) addr:0x20828b4
_ZN10MapManager18func_ov00_02082accEv kind:function(arm,size=0x10) addr:0x2082a6c
_ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082a7c
diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp
index 5d2017f8..e1aa4210 100644
--- a/include/Map/Course.hpp
+++ b/include/Map/Course.hpp
@@ -43,7 +43,7 @@ public:
/* 090 */ unk32 mUnk_090;
/* 094 */ unk32 mUnk_094;
/* 098 */ AABB mBounds;
- /* 0b0 */ s8 mNumMaps;
+ /* 0b0 */ u8 mNumMaps;
/* 0b1 */ unk8 mUnk_0b1;
/* 0b2 */ unk8 mUnk_0b2;
/* 0b3 */ unk8 mUnk_0b3;
diff --git a/include/Map/Entrance.hpp b/include/Map/Entrance.hpp
index d9bea6ef..3bc5d8d9 100644
--- a/include/Map/Entrance.hpp
+++ b/include/Map/Entrance.hpp
@@ -8,9 +8,10 @@
#include "System/SysNew.hpp"
class Entrance : public SysObject {
+public:
/* 00 */ Vec3p mPos;
/* 0c */ unk16 mAngle;
- /* 0e */ s8 mUnk_0e;
+ /* 0e */ s8 mId;
/* 0f */ unk8 mUnk_0f;
/* 10 */ s32 mUnk_10;
/* 14 */
diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp
index c94081d9..f668956f 100644
--- a/include/Map/MapBase.hpp
+++ b/include/Map/MapBase.hpp
@@ -145,20 +145,20 @@ public:
/* 70 */ virtual unk32 vfunc_70(Vec3p *param_2);
/* 74 */ virtual s32 *vfunc_74(Vec3p *param_2);
/* 78 */ virtual unk32 vfunc_78();
- /* 7c */ virtual unk32 vfunc_7c();
+ /* 7c */ virtual void vfunc_7c();
/* 80 */ virtual unk32 vfunc_80();
/* 84 */ virtual void vfunc_84(unk32 param_2);
/* 88 */ virtual unk32 vfunc_88();
/* 8c */ virtual unk32 vfunc_8c();
/* 90 */ virtual unk8 vfunc_90(unk32 param_2, unk32 param_3, unk32 param_4);
/* 94 */ virtual void vfunc_94();
- /* 98 */ virtual void vfunc_98();
+ /* 98 */ virtual void vfunc_98(unk32 param_2, unk32 param_3, unk32 param_4);
/* 9c */ virtual void vfunc_9c();
/* a0 */ virtual void vfunc_a0();
/* a4 */ virtual unk32 vfunc_a4();
/* a8 */ virtual void vfunc_a8();
/* ac */ virtual void vfunc_ac();
- /* b0 */ virtual unk8 vfunc_b0(unk32 param_2, unk32 param_3);
+ /* b0 */ virtual void vfunc_b0(unk32 param_2, unk32 param_3);
/* b4 */ virtual void vfunc_b4();
/* b8 */ virtual unk32 vfunc_b8();
/* bc */ virtual void vfunc_bc();
@@ -180,7 +180,7 @@ public:
static unk8 func_ov00_0207f100();
bool func_ov00_0207f104(unk32 param_2, unk32 param_3);
unk32 func_ov00_0207f1f4(Vec3p *param_2, unk32 *param_3);
- unk8 func_ov00_0207f38c(unk32 param_2);
+ bool func_ov00_0207f38c(s32 *param_2);
void func_ov00_0207f4a4(Vec2s *param_2, unk32 param_3);
static void func_ov00_0207f53c(Vec2s *param_1, MapBase *param_2, Vec3p *param_3);
static void func_ov00_0207f588(Vec2s *param_1, MapBase *param_2, Vec2b *param_3, unk32 param_4);
diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp
index dc286644..94f4254b 100644
--- a/include/Map/MapManager.hpp
+++ b/include/Map/MapManager.hpp
@@ -55,32 +55,32 @@ public:
s32 func_ov00_02082424();
bool func_ov00_02082454(Vec3p *param_2, Vec3p *param_3);
bool func_ov00_02082494(s32 param_2);
- unk8 func_ov00_020824cc(unk32 param_2);
- unk8 func_ov00_02082504();
+ bool func_ov00_020824cc(s32 param_2);
+ s32 func_ov00_02082504();
unk8 *func_ov00_02082538();
void func_ov00_02082594();
void func_ov00_020825ac();
s32 GetCourseFilePath(char *courseName, char *buf);
- unk8 func_ov00_020825e4(unk32 param_2, unk32 param_3);
- unk8 func_ov00_02082614(unk32 param_2, unk32 param_3);
- unk8 MapData_vfunc_b0();
+ void func_ov00_020825e4(unk32 param_2, char *buf);
+ void func_ov00_02082614(char *param_2, unk32 param_3);
+ void MapData_vfunc_b0(unk32 param_2, unk32 param_3);
void func_ov00_02082650(s32 param_2, s32 param_3, unk32 param_4);
void func_ov00_02082660(s32 param_2, s32 param_3);
void func_ov00_02082670(unk32 param_2, s32 param_3);
void func_ov00_02082680(unk32 param_2, unk32 param_3);
- unk8 func_ov00_020826a0(unk32 param_2, unk32 param_3, unk32 param_4);
- unk8 CreateMap(unk32 mapType, unk32 param_3, unk32 param_4);
- unk8 DestroyMap();
- unk8 MapData_vfunc_44();
- static unk8 func_ov00_02082808();
- unk8 MapData_vfunc_7c();
- unk8 MapData_vfunc_84();
+ void func_ov00_020826a0(unk32 param_2, unk32 param_3, unk32 param_4);
+ void CreateMap(unk32 mapType, unk32 param_3, unk32 param_4);
+ void DestroyMap();
+ void MapData_vfunc_44();
+ void func_ov00_02082808(s32 param_2, unk32 param_3, unk32 param_4);
+ void MapData_vfunc_7c();
+ void MapData_vfunc_84(unk32 param_2);
bool func_ov00_020828f8(s32 *param_2);
- unk8 GetCourseData_Unk_b0();
+ u8 GetNumMaps();
s32 func_ov00_02082914(unk32 param_2);
- unk8 func_ov00_02082acc();
+ void func_ov00_02082acc();
unk32 *func_ov00_02082adc();
- unk8 func_ov00_02082af4();
+ void func_ov00_02082af4();
bool func_ov00_02082b3c(s32 param_2);
u8 func_ov00_02082d08();
unk8 GetCourseData_Unk_1c();
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() {