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() {