From 3cca73e1c1c0c0beba6f4864126220c478643ffc Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Mon, 13 Jan 2025 22:13:47 +0100 Subject: [PATCH] Decompile MapManager::IsMapInMainGrid Decompile MapManager::GetCourseDungeonProgress Decompile MapManager::func_ov00_020820fc Decompile MapManager::func_ov00_0208230c (93%) Decompile MapManager::func_ov00_020823a4 Decompile MapManager::func_ov00_020823b4 Decompile MapManager::func_ov00_020823c4 Decompile MapManager::func_ov00_020823d4 Decompile MapManager::func_ov00_020823e4 Decompile MapManager::MapData_vfunc_b4 Decompile MapManager::MapData_vfunc_9c Decompile MapManager::func_ov00_02082424 (41%) Decompile MapManager::func_ov00_02082454 (25%) Decompile MapManager::func_ov00_02082494 (28%) --- config/eur/arm9/overlays/ov000/symbols.txt | 10 +- config/usa/arm9/overlays/ov000/symbols.txt | 10 +- include/Map/Course.hpp | 2 +- include/Map/MapBase.hpp | 8 +- include/Map/MapManager.hpp | 22 ++--- src/00_Core/Map/MapBase.cpp | 6 +- src/00_Core/Map/MapManager.cpp | 103 +++++++++++++++++---- 7 files changed, 115 insertions(+), 46 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index c3b0b05f..976a411b 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -330,7 +330,7 @@ _ZN7MapBase18func_ov00_0207de68Ei kind:function(arm,size=0x20) addr:0x207de68 _ZN7MapBase18func_ov00_0207de88Ev kind:function(arm,size=0x18) addr:0x207de88 _ZN7MapBase18func_ov00_0207dea0Eb kind:function(arm,size=0x1c0) addr:0x207dea0 _ZN7MapBase8vfunc_b0Eii kind:function(arm,size=0x2c) addr:0x207e060 -_ZN7MapBase18func_ov00_0207e08cEii kind:function(arm,size=0x64) addr:0x207e08c +_ZN7MapBase18func_ov00_0207e08cEPii kind:function(arm,size=0x64) addr:0x207e08c _ZN7MapBase18func_ov00_0207e0f0Ei kind:function(arm,size=0x19c) addr:0x207e0f0 _ZN7MapBase18func_ov00_0207e28cEi kind:function(arm,size=0x1b8) addr:0x207e28c _ZN7MapBase8vfunc_b4Ev kind:function(arm,size=0x28) addr:0x207e444 @@ -488,10 +488,10 @@ func_ov000_0208208c kind:function(arm,size=0x14) addr:0x208208c func_ov000_020820a0 kind:function(arm,size=0x1c) addr:0x20820a0 func_ov000_020820bc kind:function(arm,size=0x14) addr:0x20820bc func_ov000_020820d0 kind:function(arm,size=0x1c) addr:0x20820d0 -_ZN10MapManager18func_ov00_020820ecEPi kind:function(arm,size=0x10) addr:0x20820ec +_ZN10MapManager24GetCourseDungeonProgressEP14CourseProgress kind:function(arm,size=0x10) addr:0x20820ec _ZN10MapManager18func_ov00_020820fcEiii kind:function(arm,size=0x10) addr:0x20820fc _ZN10MapManager18func_ov00_0208210cEii kind:function(arm,size=0x200) addr:0x208210c -_ZN10MapManager18func_ov00_0208230cEi kind:function(arm,size=0x3c) addr:0x208230c +_ZN10MapManager18func_ov00_0208230cEPi kind:function(arm,size=0x3c) addr:0x208230c _ZN10MapManager18func_ov00_02082348Ei kind:function(arm,size=0x5c) addr:0x2082348 _ZN10MapManager18func_ov00_020823a4Ei kind:function(arm,size=0x10) addr:0x20823a4 _ZN10MapManager18func_ov00_020823b4Ev kind:function(arm,size=0x10) addr:0x20823b4 @@ -501,7 +501,7 @@ _ZN10MapManager18func_ov00_020823e4Ei kind:function(arm,size=0x10) addr:0x20823e _ZN10MapManager16MapData_vfunc_b4Ev kind:function(arm,size=0x18) addr:0x20823f4 _ZN10MapManager16MapData_vfunc_9cEv kind:function(arm,size=0x18) addr:0x208240c _ZN10MapManager18func_ov00_02082424Ev kind:function(arm,size=0x30) addr:0x2082424 -_ZN10MapManager18func_ov00_02082454Eii kind:function(arm,size=0x40) addr:0x2082454 +_ZN10MapManager18func_ov00_02082454EP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x2082454 _ZN10MapManager18func_ov00_02082494Ei kind:function(arm,size=0x38) addr:0x2082494 _ZN10MapManager18func_ov00_020824ccEi kind:function(arm,size=0x38) addr:0x20824cc _ZN10MapManager18func_ov00_02082504Ev kind:function(arm,size=0x34) addr:0x2082504 @@ -542,7 +542,7 @@ _ZN10MapManager18func_ov00_0208315cEPiS0_ kind:function(arm,size=0xe8) addr:0x20 _ZN10MapManager18func_ov00_02083244EjPiS0_S0_ kind:function(arm,size=0x54) addr:0x2083244 _ZN10MapManager18func_ov00_02083298EjPiS0_S0_ kind:function(arm,size=0x74) addr:0x2083298 _ZN10MapManager21GetCourseData_Unk_25cEv kind:function(arm,size=0xc) addr:0x208330c -_ZN10MapManager18func_ov00_02083318Ei kind:function(arm,size=0x10) addr:0x2083318 +_ZN10MapManager15IsMapInMainGridEj kind:function(arm,size=0x10) addr:0x2083318 _ZN10MapManager18func_ov00_02083328Ev kind:function(arm,size=0x1c) addr:0x2083328 _ZN10MapManager22GetCourseMainGridSizeXEv kind:function(arm,size=0xc) addr:0x2083344 _ZN10MapManager22GetCourseMainGridSizeYEv kind:function(arm,size=0xc) addr:0x2083350 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index de8a07cf..aaa34807 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -330,7 +330,7 @@ _ZN7MapBase18func_ov00_0207de68Ei kind:function(arm,size=0x20) addr:0x207de08 _ZN7MapBase18func_ov00_0207de88Ev kind:function(arm,size=0x18) addr:0x207de28 _ZN7MapBase18func_ov00_0207dea0Eb kind:function(arm,size=0x1c0) addr:0x207de40 _ZN7MapBase8vfunc_b0Eii kind:function(arm,size=0x2c) addr:0x207e000 -_ZN7MapBase18func_ov00_0207e08cEii kind:function(arm,size=0x64) addr:0x207e02c +_ZN7MapBase18func_ov00_0207e08cEPii kind:function(arm,size=0x64) addr:0x207e02c _ZN7MapBase18func_ov00_0207e0f0Ei kind:function(arm,size=0x19c) addr:0x207e090 _ZN7MapBase18func_ov00_0207e28cEi kind:function(arm,size=0x1b8) addr:0x207e22c _ZN7MapBase8vfunc_b4Ev kind:function(arm,size=0x28) addr:0x207e3e4 @@ -488,10 +488,10 @@ func_ov000_0208208c kind:function(arm,size=0x14) addr:0x208202c func_ov000_020820a0 kind:function(arm,size=0x1c) addr:0x2082040 func_ov000_020820bc kind:function(arm,size=0x14) addr:0x208205c func_ov000_020820d0 kind:function(arm,size=0x1c) addr:0x2082070 -_ZN10MapManager18func_ov00_020820ecEPi kind:function(arm,size=0x10) addr:0x208208c +_ZN10MapManager24GetCourseDungeonProgressEP14CourseProgress kind:function(arm,size=0x10) addr:0x208208c _ZN10MapManager18func_ov00_020820fcEiii kind:function(arm,size=0x10) addr:0x208209c _ZN10MapManager18func_ov00_0208210cEii kind:function(arm,size=0x200) addr:0x20820ac -_ZN10MapManager18func_ov00_0208230cEi kind:function(arm,size=0x3c) addr:0x20822ac +_ZN10MapManager18func_ov00_0208230cEPi kind:function(arm,size=0x3c) addr:0x20822ac _ZN10MapManager18func_ov00_02082348Ei kind:function(arm,size=0x5c) addr:0x20822e8 _ZN10MapManager18func_ov00_020823a4Ei kind:function(arm,size=0x10) addr:0x2082344 _ZN10MapManager18func_ov00_020823b4Ev kind:function(arm,size=0x10) addr:0x2082354 @@ -501,7 +501,7 @@ _ZN10MapManager18func_ov00_020823e4Ei kind:function(arm,size=0x10) addr:0x208238 _ZN10MapManager16MapData_vfunc_b4Ev kind:function(arm,size=0x18) addr:0x2082394 _ZN10MapManager16MapData_vfunc_9cEv kind:function(arm,size=0x18) addr:0x20823ac _ZN10MapManager18func_ov00_02082424Ev kind:function(arm,size=0x30) addr:0x20823c4 -_ZN10MapManager18func_ov00_02082454Eii kind:function(arm,size=0x40) addr:0x20823f4 +_ZN10MapManager18func_ov00_02082454EP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x20823f4 _ZN10MapManager18func_ov00_02082494Ei kind:function(arm,size=0x38) addr:0x2082434 _ZN10MapManager18func_ov00_020824ccEi kind:function(arm,size=0x38) addr:0x208246c _ZN10MapManager18func_ov00_02082504Ev kind:function(arm,size=0x34) addr:0x20824a4 @@ -542,7 +542,7 @@ _ZN10MapManager18func_ov00_0208315cEPiS0_ kind:function(arm,size=0xe8) addr:0x20 _ZN10MapManager18func_ov00_02083244EjPiS0_S0_ kind:function(arm,size=0x54) addr:0x20831e4 _ZN10MapManager18func_ov00_02083298EjPiS0_S0_ kind:function(arm,size=0x74) addr:0x2083238 _ZN10MapManager21GetCourseData_Unk_25cEv kind:function(arm,size=0xc) addr:0x20832ac -_ZN10MapManager18func_ov00_02083318Ei kind:function(arm,size=0x10) addr:0x20832b8 +_ZN10MapManager15IsMapInMainGridEj kind:function(arm,size=0x10) addr:0x20832b8 _ZN10MapManager18func_ov00_02083328Ev kind:function(arm,size=0x1c) addr:0x20832c8 _ZN10MapManager22GetCourseMainGridSizeXEv kind:function(arm,size=0xc) addr:0x20832e4 _ZN10MapManager22GetCourseMainGridSizeYEv kind:function(arm,size=0xc) addr:0x20832f0 diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index 8366fb99..5d2017f8 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -28,7 +28,7 @@ struct CourseProgress { class Course : public SysObject { public: - /* 000 */ unk32 mIndex; + /* 000 */ s32 mIndex; /* 004 */ CourseType mType; /* 008 */ unk32 mUnk_008; /* 00c */ char mName[0x10]; diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 1ed55f8f..c94081d9 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -133,7 +133,7 @@ public: /* 40 */ virtual void vfunc_40(); /* 44 */ virtual void vfunc_44(); /* 48 */ virtual void vfunc_48(); - /* 4c */ virtual void vfunc_4c() = 0; + /* 4c */ virtual s32 vfunc_4c() = 0; /* 50 */ virtual unk32 vfunc_50(); /* 54 */ virtual unk32 vfunc_54(); /* 58 */ virtual unk32 vfunc_58(); @@ -171,9 +171,9 @@ public: void func_ov00_0207de68(unk32 param_2); void func_ov00_0207de88(); void func_ov00_0207dea0(bool param_2); - bool func_ov00_0207e08c(unk32 param_2, unk32 param_3); - s32 func_ov00_0207e0f0(unk32 param_2); - s32 func_ov00_0207e28c(unk32 param_2); + bool func_ov00_0207e08c(s32 *param_2, s32 param_3); + s32 func_ov00_0207e0f0(s32 param_2); + s32 func_ov00_0207e28c(s32 param_2); static unk8 func_ov00_0207e940(unk8 *param_1); static unk8 func_ov00_0207e968(); static unk8 func_ov00_0207e96c(); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index d95417c1..dc286644 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -34,27 +34,27 @@ public: /* 09 */ unk8 mUnk_09; /* 0a */ unk8 mUnk_0a; /* 0b */ unk8 mUnk_0b; - /* 0c */ unk8 mUnk_0c; + /* 0c */ u8 mUnk_0c; /* 0d */ unk8 mUnk_0d; /* 0e */ unk8 mUnk_0e; /* 0f */ unk8 mUnk_0f; /* 10 */ - void func_ov00_020820ec(unk32 *param_2); + void GetCourseDungeonProgress(CourseProgress *param_2); void func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_4); unk8 func_ov00_0208210c(unk32 param_2, unk32 param_3); - unk8 func_ov00_0208230c(unk32 param_2); - unk8 func_ov00_02082348(unk32 param_2); + void func_ov00_0208230c(s32 *param_2); + void func_ov00_02082348(unk32 param_2); void func_ov00_020823a4(unk32 param_2); - unk8 func_ov00_020823b4(); + void func_ov00_020823b4(); bool func_ov00_020823c4(unk32 *param_2, s32 param_3); s32 func_ov00_020823d4(s32 param_2); s32 func_ov00_020823e4(s32 param_2); - unk8 MapData_vfunc_b4(); - unk8 MapData_vfunc_9c(); + void MapData_vfunc_b4(); + void MapData_vfunc_9c(); s32 func_ov00_02082424(); - unk8 func_ov00_02082454(unk32 param_2, unk32 param_3); - unk8 func_ov00_02082494(unk32 param_2); + 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(); unk8 *func_ov00_02082538(); @@ -87,14 +87,14 @@ public: unk8 GetCourseData_Unk_1d(); unk8 func_ov00_02082d40(); u32 func_ov00_02082d74(unk32 param_2); - static unk8 func_ov00_02082d84(); + void func_ov00_02082d84(); bool func_ov00_02082e1c(s32 *param_2, s32 *param_3); static unk8 func_ov00_0208306c(); void func_ov00_0208315c(s32 *param_2, s32 *param_3); void func_ov00_02083244(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5); void func_ov00_02083298(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5); bool GetCourseData_Unk_25c(); - bool func_ov00_02083318(unk32 param_2); + bool IsMapInMainGrid(u32 map); bool func_ov00_02083328(); u8 GetCourseMainGridSizeX(); u8 GetCourseMainGridSizeY(); diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 99fdb7c6..e4de4c74 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -12,9 +12,9 @@ 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) {} -bool MapBase::func_ov00_0207e08c(unk32 param_2, unk32 param_3) {} -s32 MapBase::func_ov00_0207e0f0(unk32 param_2) {} -s32 MapBase::func_ov00_0207e28c(unk32 param_2) {} +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) {} void MapBase::vfunc_b4() {} void MapBase::vfunc_48() {} unk32 MapBase::vfunc_50() {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 656be1c8..efc01b3e 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -3,21 +3,88 @@ #include "Actor/ActorManager.hpp" #include "Player/PlayerBase.hpp" -void MapManager::func_ov00_020820ec(unk32 *param_2) {} -void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_4) {} +ARM void MapManager::GetCourseDungeonProgress(CourseProgress *param_2) { + this->mCourse->GetDungeonProgress(param_2); +} + +ARM void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_4) { + this->mCourse->func_ov00_0207ca28(param_2, param_3, param_4); +} + unk8 MapManager::func_ov00_0208210c(unk32 param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_0208230c(unk32 param_2) {} -unk8 MapManager::func_ov00_02082348(unk32 param_2) {} -void MapManager::func_ov00_020823a4(unk32 param_2) {} -unk8 MapManager::func_ov00_020823b4() {} -bool MapManager::func_ov00_020823c4(unk32 *param_2, s32 param_3) {} -s32 MapManager::func_ov00_020823d4(s32 param_2) {} -s32 MapManager::func_ov00_020823e4(s32 param_2) {} -unk8 MapManager::MapData_vfunc_b4() {} -unk8 MapManager::MapData_vfunc_9c() {} -s32 MapManager::func_ov00_02082424() {} -unk8 MapManager::func_ov00_02082454(unk32 param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_02082494(unk32 param_2) {} + +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_02082348(unk32 param_2) { + // s32 var[4]; + // var[0] = 0x47; + // var[1] = 0; + // var[2] = 0; + // var[3] = 0xfffffffe; + // this->func_ov00_0208230c(var); + // func_ov00_02078bf0(var, param2) ??? +} + +ARM void MapManager::func_ov00_020823a4(unk32 param_2) { + this->mMap->func_ov00_0207de68(param_2); +} + +ARM void MapManager::func_ov00_020823b4() { + this->mMap->func_ov00_0207de88(); +} + +ARM bool MapManager::func_ov00_020823c4(s32 *param_2, s32 param_3) { + return this->mMap->func_ov00_0207e08c(param_2, param_3); +} + +ARM s32 MapManager::func_ov00_020823d4(s32 param_2) { + return this->mMap->func_ov00_0207e0f0(param_2); +} + +ARM s32 MapManager::func_ov00_020823e4(s32 param_2) { + return this->mMap->func_ov00_0207e28c(param_2); +} + +ARM void MapManager::MapData_vfunc_b4() { + this->mMap->vfunc_b4(); +} + +ARM void MapManager::MapData_vfunc_9c() { + this->mMap->vfunc_9c(); +} + +ARM s32 MapManager::func_ov00_02082424() { + s32 var = this->mMap->vfunc_4c(); + if (var == 2) { + // var = this->mMap->func_ov015_02129c14(); // Does not exist. + return var; + } + 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;// = this->mMap->func_ov015_02129c24(param_2, param_3); // Does not exist. + return state; + } + return false; +} + +ARM bool MapManager::func_ov00_02082494(s32 param_2) { + s32 var = this->mMap->vfunc_4c(); + if (var == 2) { + bool state;// = this->mMap->func_ov015_02129c34(param_2); // Does not exist. + return state; + } + return false; +} + unk8 MapManager::func_ov00_020824cc(unk32 param_2) {} unk8 MapManager::func_ov00_02082504() {} unk8 *MapManager::func_ov00_02082538() {} @@ -55,7 +122,7 @@ unk8 MapManager::GetCourseData_Unk_1c() {} unk8 MapManager::GetCourseData_Unk_1d() {} unk8 MapManager::func_ov00_02082d40() {} u32 MapManager::func_ov00_02082d74(unk32 param_2) {} -unk8 MapManager::func_ov00_02082d84() {} +ARM void MapManager::func_ov00_02082d84() {} bool MapManager::func_ov00_02082e1c(s32 *param_2, s32 *param_3) {} unk8 MapManager::func_ov00_0208306c() {} void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) {} @@ -66,7 +133,9 @@ ARM bool MapManager::GetCourseData_Unk_25c() { return this->mCourse->mUnk_25c; } -ARM bool MapManager::func_ov00_02083318(unk32 param_2) {} +ARM bool MapManager::IsMapInMainGrid(u32 map) { + return this->mCourse->IsMapInMainGrid(map); +} ARM bool MapManager::func_ov00_02083328() { u32 map = (u32) this->func_ov00_02082d08(); @@ -186,7 +255,7 @@ ARM void MapManager::func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 par param_2->z = mapCenter->z; } -void MapManager::func_ov00_02083560(Vec2b *param_1, MapManager *param_2, u32 param_3) { +ARM void MapManager::func_ov00_02083560(Vec2b *param_1, MapManager *param_2, u32 param_3) { param_2->mCourse->FindMapGridPos(param_1, param_2->mCourse, param_3); }