From d11cc4a573b12d17206de6632178cd7e3b5ae857 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 11 Jan 2025 22:08:00 +0100 Subject: [PATCH] Decompile MapManager::GetMapWidth Decompile MapManager::GetMapHeight Decompile MapManager::func_ov00_02083374 Decompile MapManager::func_ov00_02083384 Decompile MapManager::func_ov00_020834bc --- config/eur/arm9/overlays/ov000/symbols.txt | 4 +- config/usa/arm9/overlays/ov000/symbols.txt | 4 +- include/Map/Course.hpp | 5 +-- include/Map/MapBase.hpp | 4 +- include/Map/MapManager.hpp | 12 +++--- src/00_Core/Map/MapManager.cpp | 46 +++++++++++++++++----- 6 files changed, 50 insertions(+), 25 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index a577522c..765e31ff 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -546,8 +546,8 @@ _ZN10MapManager18func_ov00_02083318Ei kind:function(arm,size=0x10) addr:0x208331 _ZN10MapManager18func_ov00_02083328Ev kind:function(arm,size=0x1c) addr:0x2083328 _ZN10MapManager20GetCourseData_Unk_86Ev kind:function(arm,size=0xc) addr:0x2083344 _ZN10MapManager20GetCourseData_Unk_87Ev kind:function(arm,size=0xc) addr:0x2083350 -_ZN10MapManager17Get_MapData_Unk28Ev kind:function(arm,size=0xc) addr:0x208335c -_ZN10MapManager17Get_MapData_Unk2aEv kind:function(arm,size=0xc) addr:0x2083368 +_ZN10MapManager11GetMapWidthEv kind:function(arm,size=0xc) addr:0x208335c +_ZN10MapManager12GetMapHeightEv kind:function(arm,size=0xc) addr:0x2083368 _ZN10MapManager18func_ov00_02083374Ev kind:function(arm,size=0x10) addr:0x2083374 _ZN10MapManager18func_ov00_02083384Ev kind:function(arm,size=0x10) addr:0x2083384 _ZN10MapManager13GetCourseMinXEv kind:function(arm,size=0xc) addr:0x2083394 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 82b5aefa..cded5ddf 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -546,8 +546,8 @@ _ZN10MapManager18func_ov00_02083318Ei kind:function(arm,size=0x10) addr:0x20832b _ZN10MapManager18func_ov00_02083328Ev kind:function(arm,size=0x1c) addr:0x20832c8 _ZN10MapManager20GetCourseData_Unk_86Ev kind:function(arm,size=0xc) addr:0x20832e4 _ZN10MapManager20GetCourseData_Unk_87Ev kind:function(arm,size=0xc) addr:0x20832f0 -_ZN10MapManager17Get_MapData_Unk28Ev kind:function(arm,size=0xc) addr:0x20832fc -_ZN10MapManager17Get_MapData_Unk2aEv kind:function(arm,size=0xc) addr:0x2083308 +_ZN10MapManager11GetMapWidthEv kind:function(arm,size=0xc) addr:0x20832fc +_ZN10MapManager12GetMapHeightEv kind:function(arm,size=0xc) addr:0x2083308 _ZN10MapManager18func_ov00_02083374Ev kind:function(arm,size=0x10) addr:0x2083314 _ZN10MapManager18func_ov00_02083384Ev kind:function(arm,size=0x10) addr:0x2083324 _ZN10MapManager13GetCourseMinXEv kind:function(arm,size=0xc) addr:0x2083334 diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index 4cc3835f..8366fb99 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -27,6 +27,7 @@ struct CourseProgress { }; class Course : public SysObject { +public: /* 000 */ unk32 mIndex; /* 004 */ CourseType mType; /* 008 */ unk32 mUnk_008; @@ -41,11 +42,7 @@ class Course : public SysObject { /* 08c */ s32 mScreenMapOffsetY; /* 090 */ unk32 mUnk_090; /* 094 */ unk32 mUnk_094; - -public: /* 098 */ AABB mBounds; - -private: /* 0b0 */ s8 mNumMaps; /* 0b1 */ unk8 mUnk_0b1; /* 0b2 */ unk8 mUnk_0b2; diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 037b7749..18161780 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -75,8 +75,8 @@ public: /* 01f */ unk8 mUnk_01f; /* 020 */ unk32 mUnk_020; /* 024 */ unk32 mUnk_024; - /* 028 */ s16 mUnk_028; - /* 02a */ s16 mUnk_02a; + /* 028 */ s16 mWidth; + /* 02a */ s16 mHeight; /* 02c */ unk16 mUnk_02c; /* 02e */ unk16 mUnk_02e; /* 030 */ s16 mUnk_030; diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 74f18a51..fca6cef7 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -98,10 +98,10 @@ public: static unk8 func_ov00_02083328(); unk8 GetCourseData_Unk_86(); unk8 GetCourseData_Unk_87(); - unk8 Get_MapData_Unk28(); - unk8 Get_MapData_Unk2a(); - static unk8 func_ov00_02083374(); - static unk8 func_ov00_02083384(); + u16 GetMapWidth(); + u16 GetMapHeight(); + s32 func_ov00_02083374(); + s32 func_ov00_02083384(); q20 GetCourseMinX(); q20 GetCourseMinZ(); q20 GetCourseMaxX(); @@ -115,8 +115,8 @@ public: void GetMapMinBounds(Vec3p *param_2); void GetMapMaxBounds(Vec3p *param_2); void GetMapCenter(Vec3p *param_2); - unk8 func_ov00_0208346c(AABB *param_2); - unk8 func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4); + void func_ov00_0208346c(AABB *param_2); + void func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4); unk8 func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4); static void func_ov00_02083560(unk32 param_1, MapManager *param_2, u32 param_3); unk8 func_ov00_02083570(unk32 param_2, unk32 param_3); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 3945e8c8..7e0e4f4b 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -58,10 +58,22 @@ bool MapManager::func_ov00_02083318(unk32 param_2) {} unk8 MapManager::func_ov00_02083328() {} unk8 MapManager::GetCourseData_Unk_86() {} unk8 MapManager::GetCourseData_Unk_87() {} -unk8 MapManager::Get_MapData_Unk28() {} -unk8 MapManager::Get_MapData_Unk2a() {} -unk8 MapManager::func_ov00_02083374() {} -unk8 MapManager::func_ov00_02083384() {} + +ARM u16 MapManager::GetMapWidth() { + return this->mMap->mWidth; +} + +ARM u16 MapManager::GetMapHeight() { + return this->mMap->mHeight; +} + +ARM s32 MapManager::func_ov00_02083374() { + return this->GetMapWidth() << 0xc; +} + +ARM s32 MapManager::func_ov00_02083384() { + return this->GetMapHeight() << 0xc; +} ARM q20 MapManager::GetCourseMinX() { return (this->mCourse->mBounds).min.x; @@ -108,7 +120,6 @@ ARM void MapManager::GetMapMinBounds(Vec3p *param_2) { param_2->x = (mapBase->mBounds).min.x; param_2->y = (mapBase->mBounds).min.y; param_2->z = (mapBase->mBounds).min.z; - return; } ARM void MapManager::GetMapMaxBounds(Vec3p *param_2) { @@ -116,7 +127,6 @@ ARM void MapManager::GetMapMaxBounds(Vec3p *param_2) { param_2->x = (mapBase->mBounds).max.x; param_2->y = (mapBase->mBounds).max.y; param_2->z = (mapBase->mBounds).max.z; - return; } ARM void MapManager::GetMapCenter(Vec3p *param_2) { @@ -124,11 +134,29 @@ ARM void MapManager::GetMapCenter(Vec3p *param_2) { param_2->x = (mapBase->mCenter).x; param_2->y = (mapBase->mCenter).y; param_2->z = (mapBase->mCenter).z; - return; } -unk8 MapManager::func_ov00_0208346c(AABB *param_2) {} -unk8 MapManager::func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4) {} +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; +} + +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; + 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); +} + unk8 MapManager::func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4) {} void MapManager::func_ov00_02083560(unk32 param_1, MapManager *param_2, u32 param_3) {} unk8 MapManager::func_ov00_02083570(unk32 param_2, unk32 param_3) {}