From 61f866af9347cd1411ba72b59ac3ce2250b2a5d2 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 11 Jan 2025 18:31:37 +0100 Subject: [PATCH 01/62] Decompile MapManager::GetCourseMinX --- .gitignore | 1 + include/Map/Course.hpp | 4 ++++ include/Map/MapManager.hpp | 2 +- src/00_Core/Map/MapManager.cpp | 6 +++++- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index e2b78543..457e82a8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ build/ .vscode/ +venv/ ph_*/ *.nds *bios.bin diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index 8f87379c..4cc3835f 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -41,7 +41,11 @@ 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/MapManager.hpp b/include/Map/MapManager.hpp index ff3397b9..e2cbcb21 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -102,7 +102,7 @@ public: unk8 Get_MapData_Unk2a(); static unk8 func_ov00_02083374(); static unk8 func_ov00_02083384(); - unk8 GetCourseMinX(); + q20 GetCourseMinX(); unk8 GetCourseMinZ(); unk8 GetCourseMaxX(); unk8 GetCourseMaxZ(); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 69be3117..6ee1310b 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -62,7 +62,11 @@ unk8 MapManager::Get_MapData_Unk28() {} unk8 MapManager::Get_MapData_Unk2a() {} unk8 MapManager::func_ov00_02083374() {} unk8 MapManager::func_ov00_02083384() {} -unk8 MapManager::GetCourseMinX() {} + +ARM q20 MapManager::GetCourseMinX() { + return (this->mCourse->mBounds).min.x; +} + unk8 MapManager::GetCourseMinZ() {} unk8 MapManager::GetCourseMaxX() {} unk8 MapManager::GetCourseMaxZ() {} From 090b1ae50ee4c3c13f7b4bd0734d8be22491fe76 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 11 Jan 2025 18:51:09 +0100 Subject: [PATCH 02/62] Decompile MapManager::GetCourseMinZ Decompile MapManager::GetCourseMaxX Decompile MapManager::GetCourseMaxZ --- include/Map/MapManager.hpp | 6 +++--- src/00_Core/Map/MapManager.cpp | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index e2cbcb21..10c57c40 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -103,9 +103,9 @@ public: static unk8 func_ov00_02083374(); static unk8 func_ov00_02083384(); q20 GetCourseMinX(); - unk8 GetCourseMinZ(); - unk8 GetCourseMaxX(); - unk8 GetCourseMaxZ(); + q20 GetCourseMinZ(); + q20 GetCourseMaxX(); + q20 GetCourseMaxZ(); unk8 func_ov00_020833c4(); unk8 func_ov00_020833d0(); unk8 func_ov00_020833dc(); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 6ee1310b..161b7301 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -67,9 +67,18 @@ ARM q20 MapManager::GetCourseMinX() { return (this->mCourse->mBounds).min.x; } -unk8 MapManager::GetCourseMinZ() {} -unk8 MapManager::GetCourseMaxX() {} -unk8 MapManager::GetCourseMaxZ() {} +ARM q20 MapManager::GetCourseMinZ() { + return (this->mCourse->mBounds).min.z; +} + +ARM q20 MapManager::GetCourseMaxX() { + return (this->mCourse->mBounds).max.x; +} + +ARM q20 MapManager::GetCourseMaxZ() { + return (this->mCourse->mBounds).max.z; +} + unk8 MapManager::func_ov00_020833c4() {} unk8 MapManager::func_ov00_020833d0() {} unk8 MapManager::func_ov00_020833dc() {} From c09ea66d5c9c2555eb1d56650ec38a69a25a28a6 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 11 Jan 2025 20:23:35 +0100 Subject: [PATCH 03/62] Decompile MapManager::GetMapMinX Decompile MapManager::GetMapMinZ Decompile MapManager::GetMapMaxX Decompile MapManager::GetMapMaxZ --- config/eur/arm9/overlays/ov000/symbols.txt | 8 ++++---- config/usa/arm9/overlays/ov000/symbols.txt | 8 ++++---- include/Map/MapBase.hpp | 3 +-- include/Map/MapManager.hpp | 8 ++++---- src/00_Core/Map/MapManager.cpp | 20 ++++++++++++++++---- 5 files changed, 29 insertions(+), 18 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 63208160..41784a1e 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -554,10 +554,10 @@ _ZN10MapManager13GetCourseMinXEv kind:function(arm,size=0xc) addr:0x2083394 _ZN10MapManager13GetCourseMinZEv kind:function(arm,size=0xc) addr:0x20833a0 _ZN10MapManager13GetCourseMaxXEv kind:function(arm,size=0xc) addr:0x20833ac _ZN10MapManager13GetCourseMaxZEv kind:function(arm,size=0xc) addr:0x20833b8 -_ZN10MapManager18func_ov00_020833c4Ev kind:function(arm,size=0xc) addr:0x20833c4 -_ZN10MapManager18func_ov00_020833d0Ev kind:function(arm,size=0xc) addr:0x20833d0 -_ZN10MapManager18func_ov00_020833dcEv kind:function(arm,size=0xc) addr:0x20833dc -_ZN10MapManager18func_ov00_020833e8Ev kind:function(arm,size=0xc) addr:0x20833e8 +_ZN10MapManager10GetMapMinXEv kind:function(arm,size=0xc) addr:0x20833c4 +_ZN10MapManager10GetMapMinZEv kind:function(arm,size=0xc) addr:0x20833d0 +_ZN10MapManager10GetMapMaxXEv kind:function(arm,size=0xc) addr:0x20833dc +_ZN10MapManager10GetMapMaxZEv kind:function(arm,size=0xc) addr:0x20833e8 _ZN10MapManager18Get_MapData_Unk_d0Ev kind:function(arm,size=0xc) addr:0x20833f4 _ZN10MapManager18Get_MapData_Unk_d8Ev kind:function(arm,size=0xc) addr:0x2083400 _ZN10MapManager17GetMapData_Unk_dcEP5Vec3p kind:function(arm,size=0x20) addr:0x208340c diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index b8a5116b..ca02bf44 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -554,10 +554,10 @@ _ZN10MapManager13GetCourseMinXEv kind:function(arm,size=0xc) addr:0x2083334 _ZN10MapManager13GetCourseMinZEv kind:function(arm,size=0xc) addr:0x2083340 _ZN10MapManager13GetCourseMaxXEv kind:function(arm,size=0xc) addr:0x208334c _ZN10MapManager13GetCourseMaxZEv kind:function(arm,size=0xc) addr:0x2083358 -_ZN10MapManager18func_ov00_020833c4Ev kind:function(arm,size=0xc) addr:0x2083364 -_ZN10MapManager18func_ov00_020833d0Ev kind:function(arm,size=0xc) addr:0x2083370 -_ZN10MapManager18func_ov00_020833dcEv kind:function(arm,size=0xc) addr:0x208337c -_ZN10MapManager18func_ov00_020833e8Ev kind:function(arm,size=0xc) addr:0x2083388 +_ZN10MapManager10GetMapMinXEv kind:function(arm,size=0xc) addr:0x2083364 +_ZN10MapManager10GetMapMinZEv kind:function(arm,size=0xc) addr:0x2083370 +_ZN10MapManager10GetMapMaxXEv kind:function(arm,size=0xc) addr:0x208337c +_ZN10MapManager10GetMapMaxZEv kind:function(arm,size=0xc) addr:0x2083388 _ZN10MapManager18Get_MapData_Unk_d0Ev kind:function(arm,size=0xc) addr:0x2083394 _ZN10MapManager18Get_MapData_Unk_d8Ev kind:function(arm,size=0xc) addr:0x20833a0 _ZN10MapManager17GetMapData_Unk_dcEP5Vec3p kind:function(arm,size=0x20) addr:0x20833ac diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index f9d08cac..f7d1b8e1 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -90,8 +90,7 @@ public: /* 04c */ unk32 mUnk_04c; /* 050 */ unk8 mUnk_050[0x80]; /* 0d0 */ Vec3p mUnk_0d0; - /* 0dc */ Vec3p mUnk_0dc; - /* 0e8 */ Vec3p mUnk_0e8; + /* 0dc */ AABB mBounds; /* 0f4 */ Vec3p mUnk_0f4; /* 100 */ std::vector mEntrances; /* 10c */ std::vector mTriggers; diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 10c57c40..818df21b 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -106,10 +106,10 @@ public: q20 GetCourseMinZ(); q20 GetCourseMaxX(); q20 GetCourseMaxZ(); - unk8 func_ov00_020833c4(); - unk8 func_ov00_020833d0(); - unk8 func_ov00_020833dc(); - unk8 func_ov00_020833e8(); + q20 GetMapMinX(); + q20 GetMapMinZ(); + q20 GetMapMaxX(); + q20 GetMapMaxZ(); unk8 Get_MapData_Unk_d0(); unk8 Get_MapData_Unk_d8(); unk8 GetMapData_Unk_dc(Vec3p *param_2); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 161b7301..7dd4f73f 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -79,10 +79,22 @@ ARM q20 MapManager::GetCourseMaxZ() { return (this->mCourse->mBounds).max.z; } -unk8 MapManager::func_ov00_020833c4() {} -unk8 MapManager::func_ov00_020833d0() {} -unk8 MapManager::func_ov00_020833dc() {} -unk8 MapManager::func_ov00_020833e8() {} +ARM q20 MapManager::GetMapMinX() { + return (this->mMap->mBounds).min.x; +} + +ARM q20 MapManager::GetMapMinZ() { + return (this->mMap->mBounds).min.z; +} + +ARM q20 MapManager::GetMapMaxX() { + return (this->mMap->mBounds).max.x; +} + +ARM q20 MapManager::GetMapMaxZ() { + return (this->mMap->mBounds).max.z; +} + unk8 MapManager::Get_MapData_Unk_d0() {} unk8 MapManager::Get_MapData_Unk_d8() {} unk8 MapManager::GetMapData_Unk_dc(Vec3p *param_2) {} From 4ee5b2a23b409ce02dbcf27b89aa9190cfdf8b89 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 11 Jan 2025 20:39:26 +0100 Subject: [PATCH 04/62] Decompile MapManager::GetMapCenterX Decompile MapManager:GetMapCenterZ --- config/eur/arm9/overlays/ov000/symbols.txt | 4 ++-- config/usa/arm9/overlays/ov000/symbols.txt | 4 ++-- include/Map/MapBase.hpp | 2 +- include/Map/MapManager.hpp | 4 ++-- src/00_Core/Map/MapManager.cpp | 10 ++++++++-- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 41784a1e..61d9ed0d 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -558,8 +558,8 @@ _ZN10MapManager10GetMapMinXEv kind:function(arm,size=0xc) addr:0x20833c4 _ZN10MapManager10GetMapMinZEv kind:function(arm,size=0xc) addr:0x20833d0 _ZN10MapManager10GetMapMaxXEv kind:function(arm,size=0xc) addr:0x20833dc _ZN10MapManager10GetMapMaxZEv kind:function(arm,size=0xc) addr:0x20833e8 -_ZN10MapManager18Get_MapData_Unk_d0Ev kind:function(arm,size=0xc) addr:0x20833f4 -_ZN10MapManager18Get_MapData_Unk_d8Ev kind:function(arm,size=0xc) addr:0x2083400 +_ZN10MapManager13GetMapCenterXEv kind:function(arm,size=0xc) addr:0x20833f4 +_ZN10MapManager13GetMapCenterZEv kind:function(arm,size=0xc) addr:0x2083400 _ZN10MapManager17GetMapData_Unk_dcEP5Vec3p kind:function(arm,size=0x20) addr:0x208340c _ZN10MapManager17GetMapData_Unk_e8EP5Vec3p kind:function(arm,size=0x20) addr:0x208342c _ZN10MapManager17GetMapData_Unk_d0EP5Vec3p kind:function(arm,size=0x20) addr:0x208344c diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index ca02bf44..7542a15b 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -558,8 +558,8 @@ _ZN10MapManager10GetMapMinXEv kind:function(arm,size=0xc) addr:0x2083364 _ZN10MapManager10GetMapMinZEv kind:function(arm,size=0xc) addr:0x2083370 _ZN10MapManager10GetMapMaxXEv kind:function(arm,size=0xc) addr:0x208337c _ZN10MapManager10GetMapMaxZEv kind:function(arm,size=0xc) addr:0x2083388 -_ZN10MapManager18Get_MapData_Unk_d0Ev kind:function(arm,size=0xc) addr:0x2083394 -_ZN10MapManager18Get_MapData_Unk_d8Ev kind:function(arm,size=0xc) addr:0x20833a0 +_ZN10MapManager13GetMapCenterXEv kind:function(arm,size=0xc) addr:0x2083394 +_ZN10MapManager13GetMapCenterZEv kind:function(arm,size=0xc) addr:0x20833a0 _ZN10MapManager17GetMapData_Unk_dcEP5Vec3p kind:function(arm,size=0x20) addr:0x20833ac _ZN10MapManager17GetMapData_Unk_e8EP5Vec3p kind:function(arm,size=0x20) addr:0x20833cc _ZN10MapManager17GetMapData_Unk_d0EP5Vec3p kind:function(arm,size=0x20) addr:0x20833ec diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index f7d1b8e1..037b7749 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -89,7 +89,7 @@ public: /* 048 */ u32 mUnk_048; /* 04c */ unk32 mUnk_04c; /* 050 */ unk8 mUnk_050[0x80]; - /* 0d0 */ Vec3p mUnk_0d0; + /* 0d0 */ Vec3p mCenter; /* 0dc */ AABB mBounds; /* 0f4 */ Vec3p mUnk_0f4; /* 100 */ std::vector mEntrances; diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 818df21b..890d62f3 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -110,8 +110,8 @@ public: q20 GetMapMinZ(); q20 GetMapMaxX(); q20 GetMapMaxZ(); - unk8 Get_MapData_Unk_d0(); - unk8 Get_MapData_Unk_d8(); + q20 GetMapCenterX(); + q20 GetMapCenterZ(); unk8 GetMapData_Unk_dc(Vec3p *param_2); unk8 GetMapData_Unk_e8(Vec3p *param_2); unk8 GetMapData_Unk_d0(Vec3p *param_2); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 7dd4f73f..614ae320 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -95,8 +95,14 @@ ARM q20 MapManager::GetMapMaxZ() { return (this->mMap->mBounds).max.z; } -unk8 MapManager::Get_MapData_Unk_d0() {} -unk8 MapManager::Get_MapData_Unk_d8() {} +ARM q20 MapManager::GetMapCenterX() { + return (this->mMap->mCenter).x; +} + +ARM q20 MapManager::GetMapCenterZ() { + return (this->mMap->mCenter).z; +} + unk8 MapManager::GetMapData_Unk_dc(Vec3p *param_2) {} unk8 MapManager::GetMapData_Unk_e8(Vec3p *param_2) {} unk8 MapManager::GetMapData_Unk_d0(Vec3p *param_2) {} From ff9c4e6a6758d23767ac1d8c6148b6d44f7ef4e2 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 11 Jan 2025 20:56:41 +0100 Subject: [PATCH 05/62] Decompile MapManager::GetMapMinBounds Decompile MapManager::GetMapMaxBounds Decompile MapManager::GetMapCenter --- config/eur/arm9/overlays/ov000/symbols.txt | 10 +++--- config/usa/arm9/overlays/ov000/symbols.txt | 10 +++--- include/Map/MapBase.hpp | 2 +- include/Map/MapManager.hpp | 10 +++--- src/00_Core/Map/MapManager.cpp | 37 +++++++++++++++++++--- 5 files changed, 48 insertions(+), 21 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 41784a1e..a577522c 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -558,11 +558,11 @@ _ZN10MapManager10GetMapMinXEv kind:function(arm,size=0xc) addr:0x20833c4 _ZN10MapManager10GetMapMinZEv kind:function(arm,size=0xc) addr:0x20833d0 _ZN10MapManager10GetMapMaxXEv kind:function(arm,size=0xc) addr:0x20833dc _ZN10MapManager10GetMapMaxZEv kind:function(arm,size=0xc) addr:0x20833e8 -_ZN10MapManager18Get_MapData_Unk_d0Ev kind:function(arm,size=0xc) addr:0x20833f4 -_ZN10MapManager18Get_MapData_Unk_d8Ev kind:function(arm,size=0xc) addr:0x2083400 -_ZN10MapManager17GetMapData_Unk_dcEP5Vec3p kind:function(arm,size=0x20) addr:0x208340c -_ZN10MapManager17GetMapData_Unk_e8EP5Vec3p kind:function(arm,size=0x20) addr:0x208342c -_ZN10MapManager17GetMapData_Unk_d0EP5Vec3p kind:function(arm,size=0x20) addr:0x208344c +_ZN10MapManager13GetMapCenterXEv kind:function(arm,size=0xc) addr:0x20833f4 +_ZN10MapManager13GetMapCenterZEv kind:function(arm,size=0xc) addr:0x2083400 +_ZN10MapManager15GetMapMinBoundsEP5Vec3p kind:function(arm,size=0x20) addr:0x208340c +_ZN10MapManager15GetMapMaxBoundsEP5Vec3p kind:function(arm,size=0x20) addr:0x208342c +_ZN10MapManager12GetMapCenterEP5Vec3p kind:function(arm,size=0x20) addr:0x208344c _ZN10MapManager18func_ov00_0208346cEP4AABB kind:function(arm,size=0x50) addr:0x208346c _ZN10MapManager18func_ov00_020834bcEP5Vec3pii kind:function(arm,size=0x68) addr:0x20834bc _ZN10MapManager18func_ov00_02083524EP5Vec3pii kind:function(arm,size=0x3c) addr:0x2083524 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index ca02bf44..82b5aefa 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -558,11 +558,11 @@ _ZN10MapManager10GetMapMinXEv kind:function(arm,size=0xc) addr:0x2083364 _ZN10MapManager10GetMapMinZEv kind:function(arm,size=0xc) addr:0x2083370 _ZN10MapManager10GetMapMaxXEv kind:function(arm,size=0xc) addr:0x208337c _ZN10MapManager10GetMapMaxZEv kind:function(arm,size=0xc) addr:0x2083388 -_ZN10MapManager18Get_MapData_Unk_d0Ev kind:function(arm,size=0xc) addr:0x2083394 -_ZN10MapManager18Get_MapData_Unk_d8Ev kind:function(arm,size=0xc) addr:0x20833a0 -_ZN10MapManager17GetMapData_Unk_dcEP5Vec3p kind:function(arm,size=0x20) addr:0x20833ac -_ZN10MapManager17GetMapData_Unk_e8EP5Vec3p kind:function(arm,size=0x20) addr:0x20833cc -_ZN10MapManager17GetMapData_Unk_d0EP5Vec3p kind:function(arm,size=0x20) addr:0x20833ec +_ZN10MapManager13GetMapCenterXEv kind:function(arm,size=0xc) addr:0x2083394 +_ZN10MapManager13GetMapCenterZEv kind:function(arm,size=0xc) addr:0x20833a0 +_ZN10MapManager15GetMapMinBoundsEP5Vec3p kind:function(arm,size=0x20) addr:0x20833ac +_ZN10MapManager15GetMapMaxBoundsEP5Vec3p kind:function(arm,size=0x20) addr:0x20833cc +_ZN10MapManager12GetMapCenterEP5Vec3p kind:function(arm,size=0x20) addr:0x20833ec _ZN10MapManager18func_ov00_0208346cEP4AABB kind:function(arm,size=0x50) addr:0x208340c _ZN10MapManager18func_ov00_020834bcEP5Vec3pii kind:function(arm,size=0x68) addr:0x208345c _ZN10MapManager18func_ov00_02083524EP5Vec3pii kind:function(arm,size=0x3c) addr:0x20834c4 diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index f7d1b8e1..037b7749 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -89,7 +89,7 @@ public: /* 048 */ u32 mUnk_048; /* 04c */ unk32 mUnk_04c; /* 050 */ unk8 mUnk_050[0x80]; - /* 0d0 */ Vec3p mUnk_0d0; + /* 0d0 */ Vec3p mCenter; /* 0dc */ AABB mBounds; /* 0f4 */ Vec3p mUnk_0f4; /* 100 */ std::vector mEntrances; diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 818df21b..74f18a51 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -110,11 +110,11 @@ public: q20 GetMapMinZ(); q20 GetMapMaxX(); q20 GetMapMaxZ(); - unk8 Get_MapData_Unk_d0(); - unk8 Get_MapData_Unk_d8(); - unk8 GetMapData_Unk_dc(Vec3p *param_2); - unk8 GetMapData_Unk_e8(Vec3p *param_2); - unk8 GetMapData_Unk_d0(Vec3p *param_2); + q20 GetMapCenterX(); + q20 GetMapCenterZ(); + 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); unk8 func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 7dd4f73f..3945e8c8 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -95,11 +95,38 @@ ARM q20 MapManager::GetMapMaxZ() { return (this->mMap->mBounds).max.z; } -unk8 MapManager::Get_MapData_Unk_d0() {} -unk8 MapManager::Get_MapData_Unk_d8() {} -unk8 MapManager::GetMapData_Unk_dc(Vec3p *param_2) {} -unk8 MapManager::GetMapData_Unk_e8(Vec3p *param_2) {} -unk8 MapManager::GetMapData_Unk_d0(Vec3p *param_2) {} +ARM q20 MapManager::GetMapCenterX() { + return (this->mMap->mCenter).x; +} + +ARM q20 MapManager::GetMapCenterZ() { + return (this->mMap->mCenter).z; +} + +ARM void MapManager::GetMapMinBounds(Vec3p *param_2) { + MapBase *mapBase = this->mMap; + 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) { + MapBase *mapBase = this->mMap; + 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) { + MapBase *mapBase = this->mMap; + 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) {} unk8 MapManager::func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4) {} From d11cc4a573b12d17206de6632178cd7e3b5ae857 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 11 Jan 2025 22:08:00 +0100 Subject: [PATCH 06/62] 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) {} From 1d2124ce9d2465568ee6a51d91b22d1cd11e0e74 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 12 Jan 2025 00:27:33 +0100 Subject: [PATCH 07/62] Decompile MapManager::GetCourseData_Unk_25c Decompile MapManager::func_ov00_02083328 Decompile MapManager::GetCourseMainGridSizeX Decompile MapManager::GetCourseMainGridSizeY Decompile MapManager::func_ov00_02083524 --- config/eur/arm9/overlays/ov000/symbols.txt | 6 +- config/usa/arm9/overlays/ov000/symbols.txt | 6 +- include/Map/MapManager.hpp | 12 ++-- src/00_Core/Map/MapManager.cpp | 79 ++++++++++++++-------- 4 files changed, 64 insertions(+), 39 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 765e31ff..c5eb98c0 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -530,7 +530,7 @@ _ZN10MapManager18func_ov00_02082accEv kind:function(arm,size=0x10) addr:0x2082ac _ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082adc _ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x2082af4 _ZN10MapManager18func_ov00_02082b3cEi kind:function(arm,size=0x1cc) addr:0x2082b3c -_ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x2082d08 +_ZN10MapManager13UpdateMapGridEv kind:function(arm,size=0x20) addr:0x2082d08 _ZN10MapManager20GetCourseData_Unk_1cEv kind:function(arm,size=0xc) addr:0x2082d28 _ZN10MapManager20GetCourseData_Unk_1dEv kind:function(arm,size=0xc) addr:0x2082d34 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x2082d40 @@ -544,8 +544,8 @@ _ZN10MapManager18func_ov00_02083298EjPiS0_S0_ kind:function(arm,size=0x74) addr: _ZN10MapManager21GetCourseData_Unk_25cEv kind:function(arm,size=0xc) addr:0x208330c _ZN10MapManager18func_ov00_02083318Ei kind:function(arm,size=0x10) addr:0x2083318 _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 +_ZN10MapManager22GetCourseMainGridSizeXEv kind:function(arm,size=0xc) addr:0x2083344 +_ZN10MapManager22GetCourseMainGridSizeYEv kind:function(arm,size=0xc) addr:0x2083350 _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 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index cded5ddf..0092c0b0 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -530,7 +530,7 @@ _ZN10MapManager18func_ov00_02082accEv kind:function(arm,size=0x10) addr:0x2082a6 _ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082a7c _ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x2082a94 _ZN10MapManager18func_ov00_02082b3cEi kind:function(arm,size=0x1cc) addr:0x2082adc -_ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x2082ca8 +_ZN10MapManager13UpdateMapGridEv kind:function(arm,size=0x20) addr:0x2082ca8 _ZN10MapManager20GetCourseData_Unk_1cEv kind:function(arm,size=0xc) addr:0x2082cc8 _ZN10MapManager20GetCourseData_Unk_1dEv kind:function(arm,size=0xc) addr:0x2082cd4 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x2082ce0 @@ -544,8 +544,8 @@ _ZN10MapManager18func_ov00_02083298EjPiS0_S0_ kind:function(arm,size=0x74) addr: _ZN10MapManager21GetCourseData_Unk_25cEv kind:function(arm,size=0xc) addr:0x20832ac _ZN10MapManager18func_ov00_02083318Ei kind:function(arm,size=0x10) addr:0x20832b8 _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 +_ZN10MapManager22GetCourseMainGridSizeXEv kind:function(arm,size=0xc) addr:0x20832e4 +_ZN10MapManager22GetCourseMainGridSizeYEv kind:function(arm,size=0xc) addr:0x20832f0 _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 diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index fca6cef7..ea4049ca 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -82,7 +82,7 @@ public: unk32 *func_ov00_02082adc(); unk8 func_ov00_02082af4(); bool func_ov00_02082b3c(s32 param_2); - unk8 func_ov00_02082d08(); + u8 UpdateMapGrid(); unk8 GetCourseData_Unk_1c(); unk8 GetCourseData_Unk_1d(); unk8 func_ov00_02082d40(); @@ -93,11 +93,11 @@ public: 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); - unk8 GetCourseData_Unk_25c(); + bool GetCourseData_Unk_25c(); bool func_ov00_02083318(unk32 param_2); - static unk8 func_ov00_02083328(); - unk8 GetCourseData_Unk_86(); - unk8 GetCourseData_Unk_87(); + bool func_ov00_02083328(); + u8 GetCourseMainGridSizeX(); + u8 GetCourseMainGridSizeY(); u16 GetMapWidth(); u16 GetMapHeight(); s32 func_ov00_02083374(); @@ -117,7 +117,7 @@ public: void GetMapCenter(Vec3p *param_2); 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); + void 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); unk32 func_ov00_02083588(); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 7e0e4f4b..ed7bc6dc 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -42,7 +42,12 @@ unk8 MapManager::func_ov00_02082acc() {} unk32 *MapManager::func_ov00_02082adc() {} unk8 MapManager::func_ov00_02082af4() {} bool MapManager::func_ov00_02082b3c(s32 param_2) {} -unk8 MapManager::func_ov00_02082d08() {} + +ARM u8 MapManager::UpdateMapGrid() { + Course *course = this->mCourse; + return course->mMapGrid[(u8) course->mCurrMapPos.x][(u8) course->mCurrMapPos.y]; +} + unk8 MapManager::GetCourseData_Unk_1c() {} unk8 MapManager::GetCourseData_Unk_1d() {} unk8 MapManager::func_ov00_02082d40() {} @@ -53,11 +58,25 @@ unk8 MapManager::func_ov00_0208306c() {} void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) {} void MapManager::func_ov00_02083244(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5) {} void MapManager::func_ov00_02083298(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5) {} -unk8 MapManager::GetCourseData_Unk_25c() {} -bool MapManager::func_ov00_02083318(unk32 param_2) {} -unk8 MapManager::func_ov00_02083328() {} -unk8 MapManager::GetCourseData_Unk_86() {} -unk8 MapManager::GetCourseData_Unk_87() {} + +ARM bool MapManager::GetCourseData_Unk_25c() { + return this->mCourse->mUnk_25c; +} + +ARM bool MapManager::func_ov00_02083318(unk32 param_2) {} + +ARM bool MapManager::func_ov00_02083328() { + u32 map = (u32) this->UpdateMapGrid(); + return this->mCourse->IsMapInMainGrid(map); +} + +ARM u8 MapManager::GetCourseMainGridSizeX() { + return (u8) this->mCourse->mMainGridSize.x; +} + +ARM u8 MapManager::GetCourseMainGridSizeY() { + return (u8) this->mCourse->mMainGridSize.y; +} ARM u16 MapManager::GetMapWidth() { return this->mMap->mWidth; @@ -76,64 +95,64 @@ ARM s32 MapManager::func_ov00_02083384() { } ARM q20 MapManager::GetCourseMinX() { - return (this->mCourse->mBounds).min.x; + return this->mCourse->mBounds.min.x; } ARM q20 MapManager::GetCourseMinZ() { - return (this->mCourse->mBounds).min.z; + return this->mCourse->mBounds.min.z; } ARM q20 MapManager::GetCourseMaxX() { - return (this->mCourse->mBounds).max.x; + return this->mCourse->mBounds.max.x; } ARM q20 MapManager::GetCourseMaxZ() { - return (this->mCourse->mBounds).max.z; + return this->mCourse->mBounds.max.z; } ARM q20 MapManager::GetMapMinX() { - return (this->mMap->mBounds).min.x; + return this->mMap->mBounds.min.x; } ARM q20 MapManager::GetMapMinZ() { - return (this->mMap->mBounds).min.z; + return this->mMap->mBounds.min.z; } ARM q20 MapManager::GetMapMaxX() { - return (this->mMap->mBounds).max.x; + return this->mMap->mBounds.max.x; } ARM q20 MapManager::GetMapMaxZ() { - return (this->mMap->mBounds).max.z; + return this->mMap->mBounds.max.z; } ARM q20 MapManager::GetMapCenterX() { - return (this->mMap->mCenter).x; + return this->mMap->mCenter.x; } ARM q20 MapManager::GetMapCenterZ() { - return (this->mMap->mCenter).z; + return this->mMap->mCenter.z; } ARM void MapManager::GetMapMinBounds(Vec3p *param_2) { MapBase *mapBase = this->mMap; - param_2->x = (mapBase->mBounds).min.x; - param_2->y = (mapBase->mBounds).min.y; - param_2->z = (mapBase->mBounds).min.z; + param_2->x = mapBase->mBounds.min.x; + param_2->y = mapBase->mBounds.min.y; + param_2->z = mapBase->mBounds.min.z; } ARM void MapManager::GetMapMaxBounds(Vec3p *param_2) { MapBase *mapBase = this->mMap; - param_2->x = (mapBase->mBounds).max.x; - param_2->y = (mapBase->mBounds).max.y; - param_2->z = (mapBase->mBounds).max.z; + param_2->x = mapBase->mBounds.max.x; + param_2->y = mapBase->mBounds.max.y; + param_2->z = mapBase->mBounds.max.z; } ARM void MapManager::GetMapCenter(Vec3p *param_2) { MapBase *mapBase = this->mMap; - param_2->x = (mapBase->mCenter).x; - param_2->y = (mapBase->mCenter).y; - param_2->z = (mapBase->mCenter).z; + param_2->x = mapBase->mCenter.x; + param_2->y = mapBase->mCenter.y; + param_2->z = mapBase->mCenter.z; } ARM void MapManager::func_ov00_0208346c(AABB *param_2) { @@ -157,8 +176,14 @@ ARM void MapManager::func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 par 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) {} +ARM void MapManager::func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4) { + Vec3p *mapCenter = this->mCourse->FindMapCenter((u32) (u8) this->mCourse->mMapGrid[param_3][param_4]); + param_2->x = mapCenter->x; + param_2->y = mapCenter->y; + param_2->z = mapCenter->z; +} + +void MapManager::func_ov00_02083560(Vec2b pos, MapManager *param_2, u32 param_3) {} unk8 MapManager::func_ov00_02083570(unk32 param_2, unk32 param_3) {} unk32 MapManager::func_ov00_02083588() {} unk32 MapManager::func_ov00_020835a4() {} From ba1821d07b7c8420d9751ca7d7f8f2fb2bc72183 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 12 Jan 2025 00:29:45 +0100 Subject: [PATCH 08/62] Build fix --- src/00_Core/Map/MapManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index ed7bc6dc..879cba2d 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -183,7 +183,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 pos, MapManager *param_2, u32 param_3) {} +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) {} unk32 MapManager::func_ov00_02083588() {} unk32 MapManager::func_ov00_020835a4() {} From e96f66ceb83ffaf329f6098a5b0f847d58c5e117 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 12 Jan 2025 14:18:34 +0100 Subject: [PATCH 09/62] Decompile MapManager::func_ov00_02083570 Decompile MapManager::func_ov00_02083588 Decompile MapManager::func_ov00_020835a4 Decompile MapManager::func_ov00_020835b4 Decompile MapManager::func_ov00_020835c4 (50%) --- config/eur/arm9/overlays/ov000/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/symbols.txt | 2 +- include/Map/MapManager.hpp | 6 ++--- src/00_Core/Map/MapManager.cpp | 30 +++++++++++++++++----- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index c5eb98c0..e773e16d 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -530,7 +530,7 @@ _ZN10MapManager18func_ov00_02082accEv kind:function(arm,size=0x10) addr:0x2082ac _ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082adc _ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x2082af4 _ZN10MapManager18func_ov00_02082b3cEi kind:function(arm,size=0x1cc) addr:0x2082b3c -_ZN10MapManager13UpdateMapGridEv kind:function(arm,size=0x20) addr:0x2082d08 +_ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x2082d08 _ZN10MapManager20GetCourseData_Unk_1cEv kind:function(arm,size=0xc) addr:0x2082d28 _ZN10MapManager20GetCourseData_Unk_1dEv kind:function(arm,size=0xc) addr:0x2082d34 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x2082d40 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 0092c0b0..6debf1e9 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -530,7 +530,7 @@ _ZN10MapManager18func_ov00_02082accEv kind:function(arm,size=0x10) addr:0x2082a6 _ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082a7c _ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x2082a94 _ZN10MapManager18func_ov00_02082b3cEi kind:function(arm,size=0x1cc) addr:0x2082adc -_ZN10MapManager13UpdateMapGridEv kind:function(arm,size=0x20) addr:0x2082ca8 +_ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x2082ca8 _ZN10MapManager20GetCourseData_Unk_1cEv kind:function(arm,size=0xc) addr:0x2082cc8 _ZN10MapManager20GetCourseData_Unk_1dEv kind:function(arm,size=0xc) addr:0x2082cd4 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x2082ce0 diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index ea4049ca..7c00e1aa 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -82,7 +82,7 @@ public: unk32 *func_ov00_02082adc(); unk8 func_ov00_02082af4(); bool func_ov00_02082b3c(s32 param_2); - u8 UpdateMapGrid(); + u8 func_ov00_02082d08(); unk8 GetCourseData_Unk_1c(); unk8 GetCourseData_Unk_1d(); unk8 func_ov00_02082d40(); @@ -119,11 +119,11 @@ public: void func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4); void 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); + u8 func_ov00_02083570(unk32 param_2, unk32 param_3); unk32 func_ov00_02083588(); unk32 func_ov00_020835a4(); unk32 func_ov00_020835b4(); - unk8 func_ov00_020835c4(unk32 param_2, unk32 param_3); + s8 func_ov00_020835c4(s32 param_2, unk32 param_3); bool func_ov00_020835e4(s32 param_2, unk32 *param_3, unk32 *param_4); unk32 func_ov00_020835f4(s32 param_2); void func_ov00_02083604(s32 param_2); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 879cba2d..35671c7d 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -43,7 +43,7 @@ unk32 *MapManager::func_ov00_02082adc() {} unk8 MapManager::func_ov00_02082af4() {} bool MapManager::func_ov00_02082b3c(s32 param_2) {} -ARM u8 MapManager::UpdateMapGrid() { +ARM u8 MapManager::func_ov00_02082d08() { Course *course = this->mCourse; return course->mMapGrid[(u8) course->mCurrMapPos.x][(u8) course->mCurrMapPos.y]; } @@ -66,7 +66,7 @@ ARM bool MapManager::GetCourseData_Unk_25c() { ARM bool MapManager::func_ov00_02083318(unk32 param_2) {} ARM bool MapManager::func_ov00_02083328() { - u32 map = (u32) this->UpdateMapGrid(); + u32 map = (u32) this->func_ov00_02082d08(); return this->mCourse->IsMapInMainGrid(map); } @@ -184,11 +184,27 @@ ARM void MapManager::func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 par } 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) {} -unk32 MapManager::func_ov00_02083588() {} -unk32 MapManager::func_ov00_020835a4() {} -unk32 MapManager::func_ov00_020835b4() {} -unk8 MapManager::func_ov00_020835c4(unk32 param_2, unk32 param_3) {} + +ARM u8 MapManager::func_ov00_02083570(unk32 param_2, unk32 param_3) { + return this->mCourse->mMapGrid[param_2][param_3]; +} + +ARM unk32 MapManager::func_ov00_02083588() { + return this->mCourse->FindMapData_Unk_08(this->func_ov00_02082d08()); +} + +ARM unk32 MapManager::func_ov00_020835a4() { + return this->mCourse->Get_Unk_c8_00(); +} + +ARM unk32 MapManager::func_ov00_020835b4() { + return this->mCourse->Get_Unk_c8_04(); +} + +ARM s8 MapManager::func_ov00_020835c4(s32 param_2, unk32 param_3) { + return this->mCourse->func_ov00_0207d404(param_2, 0, param_3); +} + bool MapManager::func_ov00_020835e4(s32 param_2, unk32 *param_3, unk32 *param_4) {} unk32 MapManager::func_ov00_020835f4(s32 param_2) {} void MapManager::func_ov00_02083604(s32 param_2) {} From acc72371ed17936435d9da11b32eef383b13f8b7 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 12 Jan 2025 15:15:38 +0100 Subject: [PATCH 10/62] Decompile MapManager::func_ov00_020835e4 Decompile MapManager::func_ov00_020835f4 Decompile MapManager::func_ov00_02083604 Decompile MapManager::func_ov00_02083614 Decompile MapManager::GetEntrancePos (43%) Decompile MapManager::func_ov00_02083664 (68%) --- include/Map/MapBase.hpp | 2 +- include/Map/MapManager.hpp | 4 +-- src/00_Core/Map/MapBase.cpp | 2 +- src/00_Core/Map/MapManager.cpp | 48 +++++++++++++++++++++++++++++----- 4 files changed, 45 insertions(+), 11 deletions(-) diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 18161780..2ca7a8ef 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -196,7 +196,7 @@ public: unk8 GetTileY(unk32 worldZ); bool IsInBounds(Vec3p *tileWorldPos); s32 AddEntrance(Entrance *param_2); - unk8 FindEntrance(unk32 id); + Entrance *FindEntrance(unk32 id); unk8 func_ov00_0207f924(unk32 param_2); unk8 func_ov00_0207f934(); unk8 func_ov00_0207f948(unk32 param_2); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 7c00e1aa..cd3a3187 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -123,8 +123,8 @@ public: unk32 func_ov00_02083588(); unk32 func_ov00_020835a4(); unk32 func_ov00_020835b4(); - s8 func_ov00_020835c4(s32 param_2, unk32 param_3); - bool func_ov00_020835e4(s32 param_2, unk32 *param_3, unk32 *param_4); + unk8 func_ov00_020835c4(s32 param_2, unk32 param_3); + bool func_ov00_020835e4(s32 param_2, unk32 *param_3, unk8 *param_4); unk32 func_ov00_020835f4(s32 param_2); void func_ov00_02083604(s32 param_2); unk8 func_ov00_02083614(s32 param_2); diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 8d6d3c96..50ba0ab8 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -62,7 +62,7 @@ unk8 MapBase::GetTileX(unk32 worldX) {} unk8 MapBase::GetTileY(unk32 worldZ) {} bool MapBase::IsInBounds(Vec3p *tileWorldPos) {} s32 MapBase::AddEntrance(Entrance *param_2) {} -unk8 MapBase::FindEntrance(unk32 id) {} +Entrance *MapBase::FindEntrance(unk32 id) {} unk8 MapBase::func_ov00_0207f924(unk32 param_2) {} unk8 MapBase::func_ov00_0207f934() {} unk8 MapBase::func_ov00_0207f948(unk32 param_2) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 35671c7d..81c13c35 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -201,16 +201,50 @@ ARM unk32 MapManager::func_ov00_020835b4() { return this->mCourse->Get_Unk_c8_04(); } -ARM s8 MapManager::func_ov00_020835c4(s32 param_2, unk32 param_3) { +ARM unk8 MapManager::func_ov00_020835c4(s32 param_2, unk32 param_3) { return this->mCourse->func_ov00_0207d404(param_2, 0, param_3); } -bool MapManager::func_ov00_020835e4(s32 param_2, unk32 *param_3, unk32 *param_4) {} -unk32 MapManager::func_ov00_020835f4(s32 param_2) {} -void MapManager::func_ov00_02083604(s32 param_2) {} -unk8 MapManager::func_ov00_02083614(s32 param_2) {} -bool MapManager::GetEntrancePos(Vec3p *param_2, unk32 entranceId) {} -bool MapManager::func_ov00_02083664(Vec3p *param_2, unk32 entranceId) {} +ARM bool MapManager::func_ov00_020835e4(s32 param_2, unk32 *param_3, unk8 *param_4) { + return this->mCourse->func_ov00_0207caa8(param_2, param_3, param_4); +} + +ARM unk32 MapManager::func_ov00_020835f4(s32 param_2) { + return this->mCourse->func_ov00_0207cb30(param_2); +} + +ARM void MapManager::func_ov00_02083604(s32 param_2) { + this->mCourse->func_ov00_0207cbe8(param_2); +} + +ARM unk8 MapManager::func_ov00_02083614(s32 param_2) { + return this->mCourse->func_ov00_0207cc24(param_2); +} + +ARM bool MapManager::GetEntrancePos(Vec3p *pos, unk32 entranceId) { + Vec3p *entrancePos = (Vec3p *) this->mMap->FindEntrance(entranceId); + int y = entrancePos->y; + int z = entrancePos->z; + pos->x = entrancePos->x; + pos->y = y; + pos->z = z; + //*&pos[1].x = *&entrancePos[1].x; + //*(&pos[1].x + 2) = *(&entrancePos[1].x + 2); + // pos[1].y = entrancePos[1].y; + return true; +} + +ARM bool MapManager::func_ov00_02083664(Vec3p *param_2, unk32 entranceId) { + Vec3p entrancePos; + if (this->GetEntrancePos(&entrancePos, entranceId)) { + param_2->x = entrancePos.x; + param_2->y = entrancePos.y; + param_2->z = entrancePos.z; + return true; + } + return false; +} + s32 MapManager::func_ov00_020836bc(u32 param_2, unk32 *param_3) {} s32 MapManager::GetTriggerBoundingBoxes(u32 param_2, AABB *param_3, u32 param_4) {} unk8 MapManager::func_ov00_020836dc(unk32 param_2, unk32 param_3) {} From a4a9bb5dfdc9d1b3c4e024f631ced1d5d22097d1 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 12 Jan 2025 19:50:41 +0100 Subject: [PATCH 11/62] Decompile MapManager::func_ov00_020836bc Decompile MapManager::GetTriggerBoundingBoxes Decompile MapManager::func_ov00_020836dc (60%) Decompile MapManager::IsTriggerTypeOverlapped Decompile MapManager::GetOverlappingTrigger Decompile MapManager::func_ov00_02083560 gPlayerPos type Vec3p* from Vec3p --- config/eur/arm9/overlays/ov000/symbols.txt | 14 +++--- config/usa/arm9/overlays/ov000/symbols.txt | 14 +++--- include/Map/MapBase.hpp | 6 +-- include/Map/MapManager.hpp | 12 ++--- include/Player/PlayerBase.hpp | 2 +- src/00_Core/Map/MapBase.cpp | 6 +-- src/00_Core/Map/MapManager.cpp | 53 ++++++++++++++++++---- 7 files changed, 72 insertions(+), 35 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index e773e16d..c3b0b05f 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -566,23 +566,23 @@ _ZN10MapManager12GetMapCenterEP5Vec3p kind:function(arm,size=0x20) addr:0x208344 _ZN10MapManager18func_ov00_0208346cEP4AABB kind:function(arm,size=0x50) addr:0x208346c _ZN10MapManager18func_ov00_020834bcEP5Vec3pii kind:function(arm,size=0x68) addr:0x20834bc _ZN10MapManager18func_ov00_02083524EP5Vec3pii kind:function(arm,size=0x3c) addr:0x2083524 -_ZN10MapManager18func_ov00_02083560EiPS_j kind:function(arm,size=0x10) addr:0x2083560 +_ZN10MapManager18func_ov00_02083560EP5Vec2bPS_j kind:function(arm,size=0x10) addr:0x2083560 _ZN10MapManager18func_ov00_02083570Eii kind:function(arm,size=0x18) addr:0x2083570 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x2083588 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x20835a4 _ZN10MapManager18func_ov00_020835b4Ev kind:function(arm,size=0x10) addr:0x20835b4 _ZN10MapManager18func_ov00_020835c4Eii kind:function(arm,size=0x20) addr:0x20835c4 -_ZN10MapManager18func_ov00_020835e4EiPiS0_ kind:function(arm,size=0x10) addr:0x20835e4 +_ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x20835e4 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x20835f4 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x2083604 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x2083614 _ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x2083624 _ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083664 -_ZN10MapManager18func_ov00_020836bcEjPi kind:function(arm,size=0x10) addr:0x20836bc -_ZN10MapManager23GetTriggerBoundingBoxesEjP4AABBj kind:function(arm,size=0x10) addr:0x20836cc -_ZN10MapManager18func_ov00_020836dcEii kind:function(arm,size=0x94) addr:0x20836dc -_ZN10MapManager18func_ov00_02083770Eji kind:function(arm,size=0x10) addr:0x2083770 -_ZN10MapManager18func_ov00_02083780Ei kind:function(arm,size=0x10) addr:0x2083780 +_ZN10MapManager18func_ov00_020836bcEiP4AABB kind:function(arm,size=0x10) addr:0x20836bc +_ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x20836cc +_ZN10MapManager18func_ov00_020836dcEjj kind:function(arm,size=0x94) addr:0x20836dc +_ZN10MapManager23IsTriggerTypeOverlappedEjP5Vec3p kind:function(arm,size=0x10) addr:0x2083770 +_ZN10MapManager21GetOverlappingTriggerEP5Vec3p kind:function(arm,size=0x10) addr:0x2083780 _ZN10MapManager18func_ov00_02083790Ei kind:function(arm,size=0xb0) addr:0x2083790 _ZN10MapManager18func_ov00_02083840Ei kind:function(arm,size=0x88) addr:0x2083840 _ZN10MapManager18func_ov00_020838c8Ei kind:function(arm,size=0x10) addr:0x20838c8 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 6debf1e9..de8a07cf 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -566,23 +566,23 @@ _ZN10MapManager12GetMapCenterEP5Vec3p kind:function(arm,size=0x20) addr:0x20833e _ZN10MapManager18func_ov00_0208346cEP4AABB kind:function(arm,size=0x50) addr:0x208340c _ZN10MapManager18func_ov00_020834bcEP5Vec3pii kind:function(arm,size=0x68) addr:0x208345c _ZN10MapManager18func_ov00_02083524EP5Vec3pii kind:function(arm,size=0x3c) addr:0x20834c4 -_ZN10MapManager18func_ov00_02083560EiPS_j kind:function(arm,size=0x10) addr:0x2083500 +_ZN10MapManager18func_ov00_02083560EP5Vec2bPS_j kind:function(arm,size=0x10) addr:0x2083500 _ZN10MapManager18func_ov00_02083570Eii kind:function(arm,size=0x18) addr:0x2083510 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x2083528 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x2083544 _ZN10MapManager18func_ov00_020835b4Ev kind:function(arm,size=0x10) addr:0x2083554 _ZN10MapManager18func_ov00_020835c4Eii kind:function(arm,size=0x20) addr:0x2083564 -_ZN10MapManager18func_ov00_020835e4EiPiS0_ kind:function(arm,size=0x10) addr:0x2083584 +_ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x2083584 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x2083594 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x20835a4 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x20835b4 _ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x20835c4 _ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083604 -_ZN10MapManager18func_ov00_020836bcEjPi kind:function(arm,size=0x10) addr:0x208365c -_ZN10MapManager23GetTriggerBoundingBoxesEjP4AABBj kind:function(arm,size=0x10) addr:0x208366c -_ZN10MapManager18func_ov00_020836dcEii kind:function(arm,size=0x94) addr:0x208367c -_ZN10MapManager18func_ov00_02083770Eji kind:function(arm,size=0x10) addr:0x2083710 -_ZN10MapManager18func_ov00_02083780Ei kind:function(arm,size=0x10) addr:0x2083720 +_ZN10MapManager18func_ov00_020836bcEiP4AABB kind:function(arm,size=0x10) addr:0x208365c +_ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x208366c +_ZN10MapManager18func_ov00_020836dcEjj kind:function(arm,size=0x94) addr:0x208367c +_ZN10MapManager23IsTriggerTypeOverlappedEjP5Vec3p kind:function(arm,size=0x10) addr:0x2083710 +_ZN10MapManager21GetOverlappingTriggerEP5Vec3p kind:function(arm,size=0x10) addr:0x2083720 _ZN10MapManager18func_ov00_02083790Ei kind:function(arm,size=0xb0) addr:0x2083730 _ZN10MapManager18func_ov00_02083840Ei kind:function(arm,size=0x88) addr:0x20837e0 _ZN10MapManager18func_ov00_020838c8Ei kind:function(arm,size=0x10) addr:0x2083868 diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 2ca7a8ef..1ed55f8f 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -201,9 +201,9 @@ public: unk8 func_ov00_0207f934(); unk8 func_ov00_0207f948(unk32 param_2); void AddTrigger(TriggerParams *param_2); - s32 GetTriggerBoundingBox(unk32 param_2, AABB *param_3); - unk8 GetTriggerBoundingBoxes(unk32 param_2, AABB *param_3, unk32 param_4); - unk32 GetOverlappingTrigger(Vec3p *param_2); + s32 GetTriggerBoundingBox(s32 param_2, AABB *param_3); + s32 GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4); + bool GetOverlappingTrigger(Vec3p *param_2); unk8 FindTrigger(unk32 type); unk8 GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity); bool IsTriggerTypeOverlapped(unk32 type, Vec3p *param_3); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index cd3a3187..d95417c1 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -118,7 +118,7 @@ public: void func_ov00_0208346c(AABB *param_2); void func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4); void 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); + static void func_ov00_02083560(Vec2b *param_1, MapManager *param_2, u32 param_3); u8 func_ov00_02083570(unk32 param_2, unk32 param_3); unk32 func_ov00_02083588(); unk32 func_ov00_020835a4(); @@ -130,11 +130,11 @@ public: unk8 func_ov00_02083614(s32 param_2); bool GetEntrancePos(Vec3p *param_2, unk32 entranceId); bool func_ov00_02083664(Vec3p *param_2, unk32 entranceId); - s32 func_ov00_020836bc(u32 param_2, unk32 *param_3); - s32 GetTriggerBoundingBoxes(u32 param_2, AABB *param_3, u32 param_4); - unk8 func_ov00_020836dc(unk32 param_2, unk32 param_3); - bool func_ov00_02083770(u32 param_2, unk32 param_3); - bool func_ov00_02083780(unk32 param_2); + s32 func_ov00_020836bc(s32 param_2, AABB *param_3); + s32 GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4); + bool func_ov00_020836dc(u32 param_2, u32 actorId); + bool IsTriggerTypeOverlapped(u32 param_2, Vec3p *param_3); + bool GetOverlappingTrigger(Vec3p *param_2); bool func_ov00_02083790(unk32 param_2); unk8 func_ov00_02083840(unk32 param_2); bool func_ov00_020838c8(s32 param_2); diff --git a/include/Player/PlayerBase.hpp b/include/Player/PlayerBase.hpp index 578f3e27..84a7040b 100644 --- a/include/Player/PlayerBase.hpp +++ b/include/Player/PlayerBase.hpp @@ -60,6 +60,6 @@ public: }; extern PlayerBase *gPlayer; -extern Vec3p gPlayerPos; +extern Vec3p *gPlayerPos; extern Vec3p gPlayerVel; extern s16 gPlayerAngle; diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 50ba0ab8..99fdb7c6 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -68,10 +68,10 @@ unk8 MapBase::func_ov00_0207f934() {} unk8 MapBase::func_ov00_0207f948(unk32 param_2) {} void MapBase::AddTrigger(TriggerParams *param_2) {} void TriggerBase::vfunc_08() {} -s32 MapBase::GetTriggerBoundingBox(unk32 param_2, AABB *param_3) {} +s32 MapBase::GetTriggerBoundingBox(s32 param_2, AABB *param_3) {} bool TriggerBase::GetBoundingBox() {} -unk8 MapBase::GetTriggerBoundingBoxes(unk32 param_2, AABB *param_3, unk32 param_4) {} -unk32 MapBase::GetOverlappingTrigger(Vec3p *param_2) {} +s32 MapBase::GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4) {} +bool MapBase::GetOverlappingTrigger(Vec3p *param_2) {} bool TriggerBase::Overlaps() {} unk8 MapBase::FindTrigger(unk32 type) {} unk8 MapBase::GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 81c13c35..656be1c8 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1,4 +1,7 @@ #include "Map/MapManager.hpp" +#include "Actor/Actor.hpp" +#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) {} @@ -183,7 +186,9 @@ ARM void MapManager::func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 par param_2->z = mapCenter->z; } -void MapManager::func_ov00_02083560(unk32 param_1, MapManager *param_2, u32 param_3) {} +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); +} ARM u8 MapManager::func_ov00_02083570(unk32 param_2, unk32 param_3) { return this->mCourse->mMapGrid[param_2][param_3]; @@ -223,8 +228,8 @@ ARM unk8 MapManager::func_ov00_02083614(s32 param_2) { ARM bool MapManager::GetEntrancePos(Vec3p *pos, unk32 entranceId) { Vec3p *entrancePos = (Vec3p *) this->mMap->FindEntrance(entranceId); - int y = entrancePos->y; - int z = entrancePos->z; + s32 y = entrancePos->y; + s32 z = entrancePos->z; pos->x = entrancePos->x; pos->y = y; pos->z = z; @@ -245,11 +250,43 @@ ARM bool MapManager::func_ov00_02083664(Vec3p *param_2, unk32 entranceId) { return false; } -s32 MapManager::func_ov00_020836bc(u32 param_2, unk32 *param_3) {} -s32 MapManager::GetTriggerBoundingBoxes(u32 param_2, AABB *param_3, u32 param_4) {} -unk8 MapManager::func_ov00_020836dc(unk32 param_2, unk32 param_3) {} -bool MapManager::func_ov00_02083770(u32 param_2, unk32 param_3) {} -bool MapManager::func_ov00_02083780(unk32 param_2) {} +ARM s32 MapManager::func_ov00_020836bc(s32 param_2, AABB *param_3) { + return this->mMap->GetTriggerBoundingBox(param_2, param_3); +} + +ARM s32 MapManager::GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4) { + return this->mMap->GetTriggerBoundingBoxes(param_2, param_3, param_4); +} + +ARM bool MapManager::func_ov00_020836dc(u32 type, u32 actorId) { + bool state; + Actor *actor; + Vec3p playerPos; + + if (actorId < 2) { + playerPos.x = gPlayerPos->x; + playerPos.y = gPlayerPos->y; + playerPos.z = gPlayerPos->z; + } else { + actor = gActorManager->FindActorById(actorId); + if (actor == NULL) { + return false; + } + playerPos.x = *(s32 *) (actor + 0x48); + playerPos.y = *(s32 *) (actor + 0x4c); + playerPos.z = *(s32 *) (actor + 0x50); + } + return this->IsTriggerTypeOverlapped(type, &playerPos); +} + +ARM bool MapManager::IsTriggerTypeOverlapped(u32 type, Vec3p *pos) { + return this->mMap->IsTriggerTypeOverlapped(type, pos); +} + +ARM bool MapManager::GetOverlappingTrigger(Vec3p *param_2) { + return this->mMap->GetOverlappingTrigger(param_2); +} + bool MapManager::func_ov00_02083790(unk32 param_2) {} unk8 MapManager::func_ov00_02083840(unk32 param_2) {} bool MapManager::func_ov00_020838c8(s32 param_2) {} From 3cca73e1c1c0c0beba6f4864126220c478643ffc Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Mon, 13 Jan 2025 22:13:47 +0100 Subject: [PATCH 12/62] 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); } From b7be672733b79c460d3f72bc13fd181f3652d8a8 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Tue, 14 Jan 2025 15:27:50 +0100 Subject: [PATCH 13/62] 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%) --- config/eur/arm9/overlays/ov000/symbols.txt | 14 +- config/usa/arm9/overlays/ov000/symbols.txt | 14 +- include/Map/Course.hpp | 2 +- include/Map/Entrance.hpp | 3 +- include/Map/MapBase.hpp | 8 +- include/Map/MapManager.hpp | 30 +-- src/00_Core/Map/MapBase.cpp | 8 +- src/00_Core/Map/MapManager.cpp | 290 +++++++++++++++++++-- 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() { From 036b2d982f9cadd46f21f8403b8cd0de64afb8e4 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Wed, 15 Jan 2025 15:05:37 +0100 Subject: [PATCH 14/62] Decompile MapManager::GetCurrentMapPosX Decompile MapManager::GetCurrentMapPosY Decompile MapManager::func_ov00_02082d40 (61%) Decompile MapManager::func_ov00_02082d84 (21%) Decompile MapManager::func_ov00_02082e1c (11%) Partially decompile other methods --- config/eur/arm9/overlays/ov000/symbols.txt | 14 +- config/usa/arm9/overlays/ov000/symbols.txt | 14 +- include/Map/MapManager.hpp | 14 +- src/00_Core/Map/MapManager.cpp | 218 +++++++++++++++++++-- 4 files changed, 226 insertions(+), 34 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 57aa4acf..d5cc163f 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -531,16 +531,16 @@ _ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082ad _ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x2082af4 _ZN10MapManager18func_ov00_02082b3cEi kind:function(arm,size=0x1cc) addr:0x2082b3c _ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x2082d08 -_ZN10MapManager20GetCourseData_Unk_1cEv kind:function(arm,size=0xc) addr:0x2082d28 -_ZN10MapManager20GetCourseData_Unk_1dEv kind:function(arm,size=0xc) addr:0x2082d34 +_ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x2082d28 +_ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x2082d34 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x2082d40 _ZN10MapManager18func_ov00_02082d74Ei kind:function(arm,size=0x10) addr:0x2082d74 -_ZN10MapManager18func_ov00_02082d84Ev kind:function(arm,size=0x98) addr:0x2082d84 +_ZN10MapManager18func_ov00_02082d84EPcPiS1_ kind:function(arm,size=0x98) addr:0x2082d84 _ZN10MapManager18func_ov00_02082e1cEPiS0_ kind:function(arm,size=0x250) addr:0x2082e1c -_ZN10MapManager18func_ov00_0208306cEv kind:function(arm,size=0xf0) addr:0x208306c +_ZN10MapManager18func_ov00_0208306cEPiS0_ kind:function(arm,size=0xf0) addr:0x208306c _ZN10MapManager18func_ov00_0208315cEPiS0_ kind:function(arm,size=0xe8) addr:0x208315c _ZN10MapManager18func_ov00_02083244EjPiS0_S0_ kind:function(arm,size=0x54) addr:0x2083244 -_ZN10MapManager18func_ov00_02083298EjPiS0_S0_ kind:function(arm,size=0x74) addr:0x2083298 +_ZN10MapManager18func_ov00_02083298EjP5Vec3pPiS2_ kind:function(arm,size=0x74) addr:0x2083298 _ZN10MapManager21GetCourseData_Unk_25cEv kind:function(arm,size=0xc) addr:0x208330c _ZN10MapManager15IsMapInMainGridEj kind:function(arm,size=0x10) addr:0x2083318 _ZN10MapManager18func_ov00_02083328Ev kind:function(arm,size=0x1c) addr:0x2083328 @@ -601,8 +601,8 @@ _ZN10MapManager18func_ov00_020839b4Ei kind:function(arm,size=0x10) addr:0x20839b _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x20839c4 _ZN10MapManager18func_ov00_020839d4Ev kind:function(arm,size=0x24) addr:0x20839d4 _ZN10MapManager18func_ov00_020839f8Ev kind:function(arm,size=0x24) addr:0x20839f8 -_ZN10MapManager18func_ov00_02083a1cEiPS_P5Vec3p kind:function(arm,size=0x38) addr:0x2083a1c -_ZN10MapManager18func_ov00_02083a54EiPS_iii kind:function(arm,size=0x130) addr:0x2083a54 +_ZN10MapManager18func_ov00_02083a1cEPcPS_P5Vec3p kind:function(arm,size=0x38) addr:0x2083a1c +_ZN10MapManager18func_ov00_02083a54EPhPS_Pihh kind:function(arm,size=0x130) addr:0x2083a54 _ZN10MapManager18func_ov00_02083b84Ev kind:function(arm,size=0x28) addr:0x2083b84 _ZN10MapManager18func_ov00_02083bacEv kind:function(arm,size=0x28) addr:0x2083bac _ZN10MapManager18func_ov00_02083bd4Ev kind:function(arm,size=0x28) addr:0x2083bd4 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 08a4a3f1..b62b90c3 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -531,16 +531,16 @@ _ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082a7 _ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x2082a94 _ZN10MapManager18func_ov00_02082b3cEi kind:function(arm,size=0x1cc) addr:0x2082adc _ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x2082ca8 -_ZN10MapManager20GetCourseData_Unk_1cEv kind:function(arm,size=0xc) addr:0x2082cc8 -_ZN10MapManager20GetCourseData_Unk_1dEv kind:function(arm,size=0xc) addr:0x2082cd4 +_ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x2082cc8 +_ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x2082cd4 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x2082ce0 _ZN10MapManager18func_ov00_02082d74Ei kind:function(arm,size=0x10) addr:0x2082d14 -_ZN10MapManager18func_ov00_02082d84Ev kind:function(arm,size=0x98) addr:0x2082d24 +_ZN10MapManager18func_ov00_02082d84EPcPiS1_ kind:function(arm,size=0x98) addr:0x2082d24 _ZN10MapManager18func_ov00_02082e1cEPiS0_ kind:function(arm,size=0x250) addr:0x2082dbc -_ZN10MapManager18func_ov00_0208306cEv kind:function(arm,size=0xf0) addr:0x208300c +_ZN10MapManager18func_ov00_0208306cEPiS0_ kind:function(arm,size=0xf0) addr:0x208300c _ZN10MapManager18func_ov00_0208315cEPiS0_ kind:function(arm,size=0xe8) addr:0x20830fc _ZN10MapManager18func_ov00_02083244EjPiS0_S0_ kind:function(arm,size=0x54) addr:0x20831e4 -_ZN10MapManager18func_ov00_02083298EjPiS0_S0_ kind:function(arm,size=0x74) addr:0x2083238 +_ZN10MapManager18func_ov00_02083298EjP5Vec3pPiS2_ kind:function(arm,size=0x74) addr:0x2083238 _ZN10MapManager21GetCourseData_Unk_25cEv kind:function(arm,size=0xc) addr:0x20832ac _ZN10MapManager15IsMapInMainGridEj kind:function(arm,size=0x10) addr:0x20832b8 _ZN10MapManager18func_ov00_02083328Ev kind:function(arm,size=0x1c) addr:0x20832c8 @@ -601,8 +601,8 @@ _ZN10MapManager18func_ov00_020839b4Ei kind:function(arm,size=0x10) addr:0x208395 _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x2083964 _ZN10MapManager18func_ov00_020839d4Ev kind:function(arm,size=0x24) addr:0x2083974 _ZN10MapManager18func_ov00_020839f8Ev kind:function(arm,size=0x24) addr:0x2083998 -_ZN10MapManager18func_ov00_02083a1cEiPS_P5Vec3p kind:function(arm,size=0x38) addr:0x20839bc -_ZN10MapManager18func_ov00_02083a54EiPS_iii kind:function(arm,size=0x130) addr:0x20839f4 +_ZN10MapManager18func_ov00_02083a1cEPcPS_P5Vec3p kind:function(arm,size=0x38) addr:0x20839bc +_ZN10MapManager18func_ov00_02083a54EPhPS_Pihh kind:function(arm,size=0x130) addr:0x20839f4 _ZN10MapManager18func_ov00_02083b84Ev kind:function(arm,size=0x28) addr:0x2083b24 _ZN10MapManager18func_ov00_02083bacEv kind:function(arm,size=0x28) addr:0x2083b4c _ZN10MapManager18func_ov00_02083bd4Ev kind:function(arm,size=0x28) addr:0x2083b74 diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 94f4254b..ea8854c0 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -83,16 +83,16 @@ public: void func_ov00_02082af4(); bool func_ov00_02082b3c(s32 param_2); u8 func_ov00_02082d08(); - unk8 GetCourseData_Unk_1c(); - unk8 GetCourseData_Unk_1d(); + u8 GetCurrentMapPosX(); + u8 GetCurrentMapPosY(); unk8 func_ov00_02082d40(); u32 func_ov00_02082d74(unk32 param_2); - void func_ov00_02082d84(); + void func_ov00_02082d84(unk8 *param_2, s32 *param_3, s32 *param_4); bool func_ov00_02082e1c(s32 *param_2, s32 *param_3); - static unk8 func_ov00_0208306c(); + void func_ov00_0208306c(s32 *param_2, s32 *param_3); 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); + void func_ov00_02083298(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5); bool GetCourseData_Unk_25c(); bool IsMapInMainGrid(u32 map); bool func_ov00_02083328(); @@ -153,8 +153,8 @@ public: bool func_ov00_020839c4(s32 param_2); static unk8 func_ov00_020839d4(); static unk8 func_ov00_020839f8(); - static void func_ov00_02083a1c(unk32 param_1, MapManager *param_2, Vec3p *param_3); - static unk8 func_ov00_02083a54(unk32 param_1, MapManager *param_2, unk32 param_3, unk32 param_4, unk32 param_5); + static void func_ov00_02083a1c(unk8 *param_1, MapManager *param_2, Vec3p *param_3); + static unk8 func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, u8 param_4, u8 param_5); static unk8 func_ov00_02083b84(); static unk8 func_ov00_02083bac(); static unk8 func_ov00_02083bd4(); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 820191d9..613f7cb9 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -294,7 +294,7 @@ ARM s32 MapManager::func_ov00_02082914(unk32 param_2) { iVar1 = 0x2000; iVar3 = 0x2000; iVar4 = 0xfd; - if (this->mCourse->mType == 2) { + if (this->mCourse->mType == CourseType_Sea) { iVar1 = this->mMap->vfunc_88(); iVar1 = iVar1 + 0xa000; iVar3 = this->mMap->vfunc_8c(); @@ -356,16 +356,208 @@ ARM u8 MapManager::func_ov00_02082d08() { return course->mMapGrid[(u8) course->mCurrMapPos.x][(u8) course->mCurrMapPos.y]; } -unk8 MapManager::GetCourseData_Unk_1c() {} -unk8 MapManager::GetCourseData_Unk_1d() {} -unk8 MapManager::func_ov00_02082d40() {} -u32 MapManager::func_ov00_02082d74(unk32 param_2) {} -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) {} -void MapManager::func_ov00_02083244(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5) {} -void MapManager::func_ov00_02083298(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5) {} +ARM u8 MapManager::GetCurrentMapPosX() { + return this->mCourse->mCurrMapPos.x; +} + +ARM u8 MapManager::GetCurrentMapPosY() { + return this->mCourse->mCurrMapPos.y; +} + +ARM unk8 MapManager::func_ov00_02082d40() { + if (this->mCourse->mType == CourseType_Sea) { + return this->mCourse->mMapGrid[(u8) this->mCourse->mCurrMapPos.x][(u8) this->mCourse->mCurrMapPos.y]; + } + return this->mCourse->mUnk_0b1; +} + +ARM u32 MapManager::func_ov00_02082d74(unk32 param_2) { + // return func_ov00_02082d80(param_2); // Does not exist. +} + +ARM void MapManager::func_ov00_02082d84(unk8 *param_2, s32 *param_3, s32 *param_4) { + s32 mapWidth = this->GetMapWidth(); + u32 uVar3; // = CoDivide64By32(0x100000, mapWidth << 0xc); Not defined ? + s32 mapHeight = this->GetMapHeight(); + u32 uVar4; // = CoDivide64By32(0xc0000, mapHeight << 0xc); Not defined ? + s64 lVar1 = (s64) (s32) ((u32) *param_2 << 0xc); + *param_3 = (s32) (((u32) lVar1 >> 0xc | (s32) ((u64) lVar1 >> 0x20) * 0x100000) + ((s32) uVar4 >> 1) + 0x800) >> 0xc; + lVar1 = (s64) (s32) ((u32) param_2[1] << 0xc) * (s64) (s32) uVar4 + 0x800; + *param_4 = (s32) (((u32) lVar1 >> 0xc | (s32) ((u64) lVar1 >> 0x20) * 0x100000) + ((s32) uVar4 >> 1) + 0x800) >> 0xc; +} + +ARM bool MapManager::func_ov00_02082e1c(s32 *param_2, s32 *param_3) { + unk32 local_20; // Unused. What could this be for? + unk32 local_24; // Unused. What could this be for? + unk32 local_28; // Vec3p instead ??? + s32 local_44[11]; // not [6] apparently + s32 local_48; + Vec2b local_4a; + u8 local_4b; + u8 local_4c; + u8 bVar1; + u8 bVar2; + s64 lVar3; + s32 iVar5; + u32 uVar7; + if (!this->mCourse->mUnk_25c) { + *param_2 = 0xc0; + *param_3 = 0xc0; + return false; + } + if (!this->mCourse->IsCurrentMapInMainGrid()) { + local_44[0] = -0x100; + local_48 = -0x100; + bVar1 = this->mMap->mUnk_01a; + // iVar5 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__02083068); + if (iVar5 == 0) { + // bVar2 = *(u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28) + 0x9a); + } else { + // bVar2 = *(u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28) + 0x2e); + } + uVar7 = (u32) bVar2; + if (uVar7 == 0xff) { + uVar7 = (u32) (u8) this->mCourse->mMapGrid[(u8) this->mCourse->mUnk_01e][(u8) this->mCourse->mUnk_01f]; + } + // iVar5 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__02083068); + if (iVar5 == 0) { + // iVar5 = *(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28); + local_24 = *(unk32 *) (iVar5 + 0xa4); + local_20 = *(unk32 *) (iVar5 + 0xa8); + local_28 = *(unk32 *) (iVar5 + 0xa0); + } else { + // iVar5 = *(int *) (*(int *) PTR_PTR_overlay_d_0__02083068 + 0x28); + local_24 = *(unk32 *) (iVar5 + 0x3c); + local_20 = *(unk32 *) (iVar5 + 0x40); + local_28 = *(unk32 *) (iVar5 + 0x38); + } + if (this->mCourse->GetMapScreenPos((u32) bVar1, local_44, &local_48)) { + uVar7 = this->mCourse->GetScreenMapCellSizeX(); + lVar3 = (s64) (s32) ((u32) (u8) this->mMap->mUnk_01b << 0xc) * (s64) (s32) uVar7 + 0x800; + *param_2 = local_44[0] + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc); + uVar7 = this->mCourse->GetScreenMapCellSizeY(); + local_4b = this->mMap->mUnk_01c; + } else { + this->mCourse->GetMapScreenPos(uVar7, local_44, &local_48); + this->mCourse->FindMapGridPos(&local_4a, this->mCourse, uVar7); + // this->func_ov00_02083a54(&local_4c, this, &local_28, (u32) local_4a.x, (u32) local_4a.y); + uVar7 = this->mCourse->GetScreenMapCellSizeX(); + lVar3 = (s64) (s32) ((u32) local_4c << 0xc) * (s64) (s32) uVar7 + 0x800; + *param_2 = local_44[0] + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc); + uVar7 = this->mCourse->GetScreenMapCellSizeY(); + } + lVar3 = (s64) (s32) ((u32) local_4b << 0xc) * (s64) (s32) uVar7 + 0x800; + *param_3 = local_48 + ((s32) (((u32) lVar3 >> 0xc | (s32) ((u64) lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc); + return true; + } +} + +ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { + MapManager *pMVar1; + s32 iVar2; + MapManager *pMVar3; + unk8 auStack_2c[18]; + s32 local_28; // This has to be a Vec3p, but uncertain as of now. + unk32 local_24; // Unused. + unk32 local_20; // Unused. + Vec3p local_1c; + + pMVar3 = (MapManager *) this->mCourse->mUnk_008; + pMVar1 = this; // why + if (pMVar3 != (MapManager *) 0xfffffffd) { + pMVar1 = (MapManager *) 0xfffffffe; // I really don't get this + } + if (pMVar3 == (MapManager *) 0xfffffffd || pMVar3 == pMVar1) { + // iVar2 = *(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083158 + 0x28); + local_28 = *(int *) (iVar2 + 0x5c); + local_24 = *(unk32 *) (iVar2 + 0x60); + local_20 = *(unk32 *) (iVar2 + 100); + /*this->func_ov00_02083244((u32) * (u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083158 + 0x28) + 0x56), &local_28, + param_2, param_3);*/ + return; + } + if (pMVar3 != (MapManager *) 0xffffffff) { + *param_2 = this->mCourse->mUnk_0b4; + *param_3 = this->mCourse->mUnk_0b8; + return; + } + local_1c.y = gPlayerPos->y; + local_1c.x = gPlayerPos->x; + local_1c.z = gPlayerPos->z; + this->func_ov00_02083a1c(auStack_2c, this, &local_1c); + this->func_ov00_02082d84(auStack_2c, param_2, param_3); +} + +ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) { + u32 uVar1; + s32 *piVar2; + s32 iVar3; + s32 *piVar4; + s32 local_2c; // This has to be a Vec3p, but uncertain as of now. + unk32 local_28; // Unused. + unk32 local_24; // Unused. + Vec3p local_20; + + piVar4 = (s32 *) this->mCourse->mUnk_008; + piVar2 = param_2; + if (piVar4 != (s32 *) 0xfffffffd) { + piVar2 = (s32 *) 0xfffffffe; + } + if (piVar4 == (s32 *) 0xfffffffd || piVar4 == piVar2) { + // iVar3 = *(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083240 + 0x28); + local_2c = *(s32 *) (iVar3 + 0x5c); + local_28 = *(unk32 *) (iVar3 + 0x60); + local_24 = *(unk32 *) (iVar3 + 100); + /*this->func_ov00_02083298((u32) * (u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083240 + 0x28) + 0x56), + &local_2c, param_2, param_3);*/ + return; + } + if (piVar4 != (s32 *) 0xffffffff) { + *param_2 = this->mCourse->mUnk_0bc; + *param_3 = this->mCourse->mUnk_0c0; + return; + } + local_20.x = *(s32 *) gPlayerPos->x; + local_20.y = *(s32 *) gPlayerPos->y; + local_20.z = *(s32 *) gPlayerPos->z; + uVar1 = this->func_ov00_02082d08(); + this->func_ov00_02083298(uVar1, &local_20, param_2, param_3); +} + +ARM void MapManager::func_ov00_02083244(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5) { + unk8 *puVar1; + + // puVar1 = PTR_MapManager_Unk2_overlay_d_0__020e24e8.field1_0x4_overlay_d_0__02083294; // What is this? mMap? + if (3 < param_2) { // Objdiff wants (4 < param_2), why is that? + param_2 = 0; + } + /* *param_4 = + (*param_3 - *(s32 *) (PTR_MapManager_Unk2_overlay_d_0__020e24e8_overlay_d_0__02083290 + param_2 * 8)) + 0x800 >> 0xc;*/ + *param_5 = (param_3[2] - *(s32 *) (puVar1 + param_2 * 8)) + 0x800 >> 0xc; +} + +ARM void MapManager::func_ov00_02083298(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5) { + if (3 < param_2) { // Objdiff wants (4 < param_2), why is that? + param_2 = 0; + } + /* *param_4 = + *(s32 *) (PTR_MapManager_Unk1_overlay_d_0__020e24c8_overlay_d_0__02083300 + param_2 * 8) + + ((*param_3 - *(s32 *) (PTR_MapManager_Unk2_overlay_d_0__020e24e8_overlay_d_0__020832fc + param_2 * 8) >> 1) + 0x800 >> + 0xc); + *param_5 = + *(s32 *) (PTR_MapManager_Unk1_overlay_d_0__020e24c8.field1_0x4_overlay_d_0__02083308 + param_2 * 8) + + ((param_3[2] - *(s32 *) (PTR_MapManager_Unk2_overlay_d_0__020e24e8.field1_0x4_overlay_d_0__02083304 + param_2 * 8) >> + 1) + + 0x800 >> + 0xc); */ + + // PTR_MapManager_Unk1_overlay_d_0__020e24c8_overlay_d_0__02083300 + // PTR_MapManager_Unk2_overlay_d_0__020e24e8_overlay_d_0__020832fc + // PTR_MapManager_Unk1_overlay_d_0__020e24c8.field1_0x4_overlay_d_0__02083308 + // PTR_MapManager_Unk2_overlay_d_0__020e24e8.field1_0x4_overlay_d_0__02083304 + // + // What are these pointers and fields? How should they be defined? +} ARM bool MapManager::GetCourseData_Unk_25c() { return this->mCourse->mUnk_25c; @@ -612,8 +804,8 @@ bool MapManager::func_ov00_020839b4(s32 param_2) {} bool MapManager::func_ov00_020839c4(s32 param_2) {} unk8 MapManager::func_ov00_020839d4() {} unk8 MapManager::func_ov00_020839f8() {} -void MapManager::func_ov00_02083a1c(unk32 param_1, MapManager *param_2, Vec3p *param_3) {} -unk8 MapManager::func_ov00_02083a54(unk32 param_1, MapManager *param_2, unk32 param_3, unk32 param_4, unk32 param_5) {} +void MapManager::func_ov00_02083a1c(unk8 *param_1, MapManager *param_2, Vec3p *param_3) {} +unk8 MapManager::func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, u8 param_4, u8 param_5) {} unk8 MapManager::func_ov00_02083b84() {} unk8 MapManager::func_ov00_02083bac() {} unk8 MapManager::func_ov00_02083bd4() {} From a19e993db6ba2962661fbc58736a547499aff6c5 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Wed, 15 Jan 2025 23:31:10 +0100 Subject: [PATCH 15/62] Ignore ninja lock --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 457e82a8..49bf2b01 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ objdiff.json /dsd.pdb build.ninja .ninja_log +.ninja_lock \ No newline at end of file From a025951d6722598082b15700c13ae96bccb38201 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Wed, 15 Jan 2025 23:31:21 +0100 Subject: [PATCH 16/62] Decompile MapManager::func_ov00_02083790 (13%) Decompile MapManager::func_ov00_02083840 (20%) Decompile MapManager::AddTrigger Decompile MapManager::func_ov00_020838d8 Decompile MapManager::func_ov00_020838e8 Decompile MapManager::func_ov00_020838f8 Decompile MapManager::func_ov00_02083908 Decompile MapManager::func_ov00_02083918 Decompile MapManager::func_ov00_02083928 Decompile MapManager::SetCurrentViewpointId Decompile MapManager::func_ov00_02083958 Decompile MapManager::func_ov00_02083968 Decompile MapManager::func_ov00_02083978 Decompile MapManager::func_ov00_020839b4 Decompile MapManager::func_ov00_020839c4 Decompile MapManager::func_ov00_020839d4 Decompile MapManager::func_ov00_020839f8 Decompile MapManager::func_ov00_02083a1c (14%) Decompile MapManager::GetTileStartX Decompile MapManager::GetTileStartZ Decompile MapManager::GetTileEndX Decompile MapManager::GetTileEndZ Decompile MapManager::func_ov00_02083c24 Decompile MapManager::func_ov00_02083c50 --- config/eur/arm9/overlays/ov000/symbols.txt | 42 ++-- config/usa/arm9/overlays/ov000/symbols.txt | 42 ++-- include/Map/MapBase.hpp | 30 +-- include/Map/MapManager.hpp | 44 ++-- src/00_Core/Map/MapBase.cpp | 30 +-- src/00_Core/Map/MapManager.cpp | 272 ++++++++++++++++++--- 6 files changed, 336 insertions(+), 124 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index d5cc163f..5954466c 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -406,14 +406,14 @@ _ZN7MapBase18func_ov00_0208008cEj kind:function(arm,size=0x10) addr:0x208008c _ZN7MapBase7AddExitEP4Exit kind:function(arm,size=0xa4) addr:0x208009c _ZN7MapBase18func_ov00_02080140EP4Exit kind:function(arm,size=0x1e4) addr:0x2080140 _ZN12MapBase_Unk118func_ov00_02080324Eiii kind:function(arm,size=0x78) addr:0x2080324 -_ZN7MapBase8FindExitEiP4Exit kind:function(arm,size=0xd0) addr:0x208039c +_ZN7MapBase8FindExitEjP4Exit kind:function(arm,size=0xd0) addr:0x208039c _ZN7MapBase18AddCameraViewpointEP15CameraViewpoint kind:function(arm,size=0xa4) addr:0x208046c _ZN7MapBase19FindViewpoint_Unk_4EcP15CameraViewpoint kind:function(arm,size=0xc0) addr:0x2080510 _ZN7MapBase19FindViewpoint_Unk_0EiP15CameraViewpoint kind:function(arm,size=0xb8) addr:0x20805d0 _ZN7MapBase19GetCurrentViewpointEP15CameraViewpointi kind:function(arm,size=0xf8) addr:0x2080688 _ZN7MapBase26GetCurrentViewpoint_Unk_00Ei kind:function(arm,size=0x54) addr:0x2080780 _ZN7MapBase8vfunc_b8Ev kind:function(arm,size=0x50) addr:0x20807d4 -_ZN7MapBase18func_ov00_02080824Eii kind:function(arm,size=0xac) addr:0x2080824 +_ZN7MapBase18func_ov00_02080824EjPc kind:function(arm,size=0xac) addr:0x2080824 _ZN7MapBase10AddUnk_130Ei kind:function(arm,size=0xe8) addr:0x20808d0 _ZN7MapBase18func_ov00_020809b8Ei kind:function(arm,size=0xc0) addr:0x20809b8 _ZN7MapBase18func_ov00_02080a78EP5Vec3p kind:function(arm,size=0x58) addr:0x2080a78 @@ -421,7 +421,7 @@ _ZN12MapBase_Unk218func_ov00_02080ad0EPP11TriggerBaseS2_ kind:function(arm,size= _ZN7MapBase18func_ov00_02080b24EP5Vec2b kind:function(arm,size=0x1e4) addr:0x2080b24 _ZN7MapBase18func_ov00_02080d08Ei kind:function(arm,size=0x6c) addr:0x2080d08 _ZN7MapBase8vfunc_bcEv kind:function(arm,size=0x4) addr:0x2080d74 -_ZN7MapBase8vfunc_98Ev kind:function(arm,size=0x4) addr:0x2080d78 +_ZN7MapBase8vfunc_98Eiii kind:function(arm,size=0x4) addr:0x2080d78 _ZN7MapBase8vfunc_c0Ev kind:function(arm,size=0x4) addr:0x2080d7c _ZN7MapBase22TriggerOfType_vfunc_10Ei kind:function(arm,size=0x5c) addr:0x2080d80 _ZN11TriggerBase8vfunc_10Ev kind:function(arm,size=0x8) addr:0x2080ddc @@ -585,32 +585,32 @@ _ZN10MapManager23IsTriggerTypeOverlappedEjP5Vec3p kind:function(arm,size=0x10) a _ZN10MapManager21GetOverlappingTriggerEP5Vec3p kind:function(arm,size=0x10) addr:0x2083780 _ZN10MapManager18func_ov00_02083790Ei kind:function(arm,size=0xb0) addr:0x2083790 _ZN10MapManager18func_ov00_02083840Ei kind:function(arm,size=0x88) addr:0x2083840 -_ZN10MapManager18func_ov00_020838c8Ei kind:function(arm,size=0x10) addr:0x20838c8 +_ZN10MapManager10AddTriggerEi kind:function(arm,size=0x10) addr:0x20838c8 _ZN10MapManager18func_ov00_020838d8Ei kind:function(arm,size=0x10) addr:0x20838d8 -_ZN10MapManager18func_ov00_020838e8EjPi kind:function(arm,size=0x10) addr:0x20838e8 -_ZN10MapManager18func_ov00_020838f8EPi kind:function(arm,size=0x10) addr:0x20838f8 -_ZN10MapManager18func_ov00_02083908EcPi kind:function(arm,size=0x10) addr:0x2083908 -_ZN10MapManager18func_ov00_02083918EiPi kind:function(arm,size=0x10) addr:0x2083918 -_ZN10MapManager18func_ov00_02083928EPci kind:function(arm,size=0x10) addr:0x2083928 +_ZN10MapManager8FindExitEjP4Exit kind:function(arm,size=0x10) addr:0x20838e8 +_ZN10MapManager18func_ov00_020838f8EP4Exit kind:function(arm,size=0x10) addr:0x20838f8 +_ZN10MapManager18func_ov00_02083908EcP15CameraViewpoint kind:function(arm,size=0x10) addr:0x2083908 +_ZN10MapManager18func_ov00_02083918EiP15CameraViewpoint kind:function(arm,size=0x10) addr:0x2083918 +_ZN10MapManager19GetCurrentViewpointEP15CameraViewpointi kind:function(arm,size=0x10) addr:0x2083928 _ZN10MapManager18func_ov00_02083938Ei kind:function(arm,size=0x10) addr:0x2083938 -_ZN10MapManager18Set_MapData_Unk_16Eci kind:function(arm,size=0x10) addr:0x2083948 +_ZN10MapManager21SetCurrentViewpointIdEci kind:function(arm,size=0x10) addr:0x2083948 _ZN10MapManager18func_ov00_02083958Ei kind:function(arm,size=0x10) addr:0x2083958 _ZN10MapManager18func_ov00_02083968EjPc kind:function(arm,size=0x10) addr:0x2083968 -_ZN10MapManager18func_ov00_02083978EiP5Vec3p kind:function(arm,size=0x3c) addr:0x2083978 +_ZN10MapManager18func_ov00_02083978EP5Vec3pS1_ kind:function(arm,size=0x3c) addr:0x2083978 _ZN10MapManager18func_ov00_020839b4Ei kind:function(arm,size=0x10) addr:0x20839b4 _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x20839c4 -_ZN10MapManager18func_ov00_020839d4Ev kind:function(arm,size=0x24) addr:0x20839d4 -_ZN10MapManager18func_ov00_020839f8Ev kind:function(arm,size=0x24) addr:0x20839f8 -_ZN10MapManager18func_ov00_02083a1cEPcPS_P5Vec3p kind:function(arm,size=0x38) addr:0x2083a1c -_ZN10MapManager18func_ov00_02083a54EPhPS_Pihh kind:function(arm,size=0x130) addr:0x2083a54 -_ZN10MapManager18func_ov00_02083b84Ev kind:function(arm,size=0x28) addr:0x2083b84 -_ZN10MapManager18func_ov00_02083bacEv kind:function(arm,size=0x28) addr:0x2083bac -_ZN10MapManager18func_ov00_02083bd4Ev kind:function(arm,size=0x28) addr:0x2083bd4 -_ZN10MapManager18func_ov00_02083bfcEv kind:function(arm,size=0x28) addr:0x2083bfc +_ZN10MapManager18func_ov00_020839d4Ei kind:function(arm,size=0x24) addr:0x20839d4 +_ZN10MapManager18func_ov00_020839f8Ei kind:function(arm,size=0x24) addr:0x20839f8 +_ZN10MapManager18func_ov00_02083a1cEPiPS_P5Vec3p kind:function(arm,size=0x38) addr:0x2083a1c +_ZN10MapManager18func_ov00_02083a54EPhPS_PiiS2_ kind:function(arm,size=0x130) addr:0x2083a54 +_ZN10MapManager13GetTileStartXEi kind:function(arm,size=0x28) addr:0x2083b84 +_ZN10MapManager13GetTileStartZEi kind:function(arm,size=0x28) addr:0x2083bac +_ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x2083bd4 +_ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x2083bfc _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083c24 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083c50 -_ZN10MapManager18func_ov00_02083c7cEP5Vec3pi kind:function(arm,size=0x6c) addr:0x2083c7c -_ZN10MapManager18func_ov00_02083ce8Ecccci kind:function(arm,size=0x14c) addr:0x2083ce8 +_ZN10MapManager18func_ov00_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c7c +_ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083ce8 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 _ZN10MapManager16MapData_vfunc_60Ev kind:function(arm,size=0x18) addr:0x2083e58 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e70 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index b62b90c3..5aa4da4f 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -406,14 +406,14 @@ _ZN7MapBase18func_ov00_0208008cEj kind:function(arm,size=0x10) addr:0x208002c _ZN7MapBase7AddExitEP4Exit kind:function(arm,size=0xa4) addr:0x208003c _ZN7MapBase18func_ov00_02080140EP4Exit kind:function(arm,size=0x1e4) addr:0x20800e0 _ZN12MapBase_Unk118func_ov00_02080324Eiii kind:function(arm,size=0x78) addr:0x20802c4 -_ZN7MapBase8FindExitEiP4Exit kind:function(arm,size=0xd0) addr:0x208033c +_ZN7MapBase8FindExitEjP4Exit kind:function(arm,size=0xd0) addr:0x208033c _ZN7MapBase18AddCameraViewpointEP15CameraViewpoint kind:function(arm,size=0xa4) addr:0x208040c _ZN7MapBase19FindViewpoint_Unk_4EcP15CameraViewpoint kind:function(arm,size=0xc0) addr:0x20804b0 _ZN7MapBase19FindViewpoint_Unk_0EiP15CameraViewpoint kind:function(arm,size=0xb8) addr:0x2080570 _ZN7MapBase19GetCurrentViewpointEP15CameraViewpointi kind:function(arm,size=0xf8) addr:0x2080628 _ZN7MapBase26GetCurrentViewpoint_Unk_00Ei kind:function(arm,size=0x54) addr:0x2080720 _ZN7MapBase8vfunc_b8Ev kind:function(arm,size=0x50) addr:0x2080774 -_ZN7MapBase18func_ov00_02080824Eii kind:function(arm,size=0xac) addr:0x20807c4 +_ZN7MapBase18func_ov00_02080824EjPc kind:function(arm,size=0xac) addr:0x20807c4 _ZN7MapBase10AddUnk_130Ei kind:function(arm,size=0xe8) addr:0x2080870 _ZN7MapBase18func_ov00_020809b8Ei kind:function(arm,size=0xc0) addr:0x2080958 _ZN7MapBase18func_ov00_02080a78EP5Vec3p kind:function(arm,size=0x58) addr:0x2080a18 @@ -421,7 +421,7 @@ _ZN12MapBase_Unk218func_ov00_02080ad0EPP11TriggerBaseS2_ kind:function(arm,size= _ZN7MapBase18func_ov00_02080b24EP5Vec2b kind:function(arm,size=0x1e4) addr:0x2080ac4 _ZN7MapBase18func_ov00_02080d08Ei kind:function(arm,size=0x6c) addr:0x2080ca8 _ZN7MapBase8vfunc_bcEv kind:function(arm,size=0x4) addr:0x2080d14 -_ZN7MapBase8vfunc_98Ev kind:function(arm,size=0x4) addr:0x2080d18 +_ZN7MapBase8vfunc_98Eiii kind:function(arm,size=0x4) addr:0x2080d18 _ZN7MapBase8vfunc_c0Ev kind:function(arm,size=0x4) addr:0x2080d1c _ZN7MapBase22TriggerOfType_vfunc_10Ei kind:function(arm,size=0x5c) addr:0x2080d20 _ZN11TriggerBase8vfunc_10Ev kind:function(arm,size=0x8) addr:0x2080d7c @@ -585,32 +585,32 @@ _ZN10MapManager23IsTriggerTypeOverlappedEjP5Vec3p kind:function(arm,size=0x10) a _ZN10MapManager21GetOverlappingTriggerEP5Vec3p kind:function(arm,size=0x10) addr:0x2083720 _ZN10MapManager18func_ov00_02083790Ei kind:function(arm,size=0xb0) addr:0x2083730 _ZN10MapManager18func_ov00_02083840Ei kind:function(arm,size=0x88) addr:0x20837e0 -_ZN10MapManager18func_ov00_020838c8Ei kind:function(arm,size=0x10) addr:0x2083868 +_ZN10MapManager10AddTriggerEi kind:function(arm,size=0x10) addr:0x2083868 _ZN10MapManager18func_ov00_020838d8Ei kind:function(arm,size=0x10) addr:0x2083878 -_ZN10MapManager18func_ov00_020838e8EjPi kind:function(arm,size=0x10) addr:0x2083888 -_ZN10MapManager18func_ov00_020838f8EPi kind:function(arm,size=0x10) addr:0x2083898 -_ZN10MapManager18func_ov00_02083908EcPi kind:function(arm,size=0x10) addr:0x20838a8 -_ZN10MapManager18func_ov00_02083918EiPi kind:function(arm,size=0x10) addr:0x20838b8 -_ZN10MapManager18func_ov00_02083928EPci kind:function(arm,size=0x10) addr:0x20838c8 +_ZN10MapManager8FindExitEjP4Exit kind:function(arm,size=0x10) addr:0x2083888 +_ZN10MapManager18func_ov00_020838f8EP4Exit kind:function(arm,size=0x10) addr:0x2083898 +_ZN10MapManager18func_ov00_02083908EcP15CameraViewpoint kind:function(arm,size=0x10) addr:0x20838a8 +_ZN10MapManager18func_ov00_02083918EiP15CameraViewpoint kind:function(arm,size=0x10) addr:0x20838b8 +_ZN10MapManager19GetCurrentViewpointEP15CameraViewpointi kind:function(arm,size=0x10) addr:0x20838c8 _ZN10MapManager18func_ov00_02083938Ei kind:function(arm,size=0x10) addr:0x20838d8 -_ZN10MapManager18Set_MapData_Unk_16Eci kind:function(arm,size=0x10) addr:0x20838e8 +_ZN10MapManager21SetCurrentViewpointIdEci kind:function(arm,size=0x10) addr:0x20838e8 _ZN10MapManager18func_ov00_02083958Ei kind:function(arm,size=0x10) addr:0x20838f8 _ZN10MapManager18func_ov00_02083968EjPc kind:function(arm,size=0x10) addr:0x2083908 -_ZN10MapManager18func_ov00_02083978EiP5Vec3p kind:function(arm,size=0x3c) addr:0x2083918 +_ZN10MapManager18func_ov00_02083978EP5Vec3pS1_ kind:function(arm,size=0x3c) addr:0x2083918 _ZN10MapManager18func_ov00_020839b4Ei kind:function(arm,size=0x10) addr:0x2083954 _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x2083964 -_ZN10MapManager18func_ov00_020839d4Ev kind:function(arm,size=0x24) addr:0x2083974 -_ZN10MapManager18func_ov00_020839f8Ev kind:function(arm,size=0x24) addr:0x2083998 -_ZN10MapManager18func_ov00_02083a1cEPcPS_P5Vec3p kind:function(arm,size=0x38) addr:0x20839bc -_ZN10MapManager18func_ov00_02083a54EPhPS_Pihh kind:function(arm,size=0x130) addr:0x20839f4 -_ZN10MapManager18func_ov00_02083b84Ev kind:function(arm,size=0x28) addr:0x2083b24 -_ZN10MapManager18func_ov00_02083bacEv kind:function(arm,size=0x28) addr:0x2083b4c -_ZN10MapManager18func_ov00_02083bd4Ev kind:function(arm,size=0x28) addr:0x2083b74 -_ZN10MapManager18func_ov00_02083bfcEv kind:function(arm,size=0x28) addr:0x2083b9c +_ZN10MapManager18func_ov00_020839d4Ei kind:function(arm,size=0x24) addr:0x2083974 +_ZN10MapManager18func_ov00_020839f8Ei kind:function(arm,size=0x24) addr:0x2083998 +_ZN10MapManager18func_ov00_02083a1cEPiPS_P5Vec3p kind:function(arm,size=0x38) addr:0x20839bc +_ZN10MapManager18func_ov00_02083a54EPhPS_PiiS2_ kind:function(arm,size=0x130) addr:0x20839f4 +_ZN10MapManager13GetTileStartXEi kind:function(arm,size=0x28) addr:0x2083b24 +_ZN10MapManager13GetTileStartZEi kind:function(arm,size=0x28) addr:0x2083b4c +_ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x2083b74 +_ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x2083b9c _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083bc4 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083bf0 -_ZN10MapManager18func_ov00_02083c7cEP5Vec3pi kind:function(arm,size=0x6c) addr:0x2083c1c -_ZN10MapManager18func_ov00_02083ce8Ecccci kind:function(arm,size=0x14c) addr:0x2083c88 +_ZN10MapManager18func_ov00_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c1c +_ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083c88 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083dd4 _ZN10MapManager16MapData_vfunc_60Ev kind:function(arm,size=0x18) addr:0x2083df8 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e10 diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index f668956f..2d62a670 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -65,7 +65,7 @@ public: /* 013 */ unk8 mUnk_013; /* 014 */ unk8 mUnk_014; /* 015 */ unk8 mUnk_015; - /* 016 */ unk8 mUnk_016[2]; + /* 016 */ unk8 mCurrViewpointId[2]; /* 018 */ unk8 mUnk_018[2]; /* 01a */ unk8 mUnk_01a; /* 01b */ unk8 mUnk_01b; @@ -190,14 +190,14 @@ public: s32 GetTileEndX(unk32 x); s32 GetTileEndZ(unk32 z); void GetTileBounds(Vec2b *tilePos, AABB *bounds); - unk8 GetClampedTileX(unk32 worldX); - unk8 GetClampedTileY(unk32 worldZ); - unk8 GetTileX(unk32 worldX); - unk8 GetTileY(unk32 worldZ); + s32 GetClampedTileX(s32 worldX); + s32 GetClampedTileY(s32 worldZ); + unk8 GetTileX(s32 worldX); + unk8 GetTileY(s32 worldZ); bool IsInBounds(Vec3p *tileWorldPos); s32 AddEntrance(Entrance *param_2); Entrance *FindEntrance(unk32 id); - unk8 func_ov00_0207f924(unk32 param_2); + void func_ov00_0207f924(s32 param_2); unk8 func_ov00_0207f934(); unk8 func_ov00_0207f948(unk32 param_2); void AddTrigger(TriggerParams *param_2); @@ -210,22 +210,22 @@ public: bool AnyTrigger_func_0c(unk32 type); unk8 Trigger_vfunc_08(); bool AddTrigger(unk32 param_2); - bool func_ov00_0207ff88(unk32 param_2); + bool func_ov00_0207ff88(s32 param_2); void func_ov00_0208005c(s32 param_2, s32 param_3, unk32 param_4); void func_ov00_0208006c(unk32 param_2, s32 param_3); void func_ov00_0208007c(s32 param_2, s32 param_3); void func_ov00_0208008c(u32 param_2); unk8 AddExit(Exit *param_2); - unk8 func_ov00_02080140(Exit *param_2); - bool FindExit(unk32 param_2, Exit *param_3); + char func_ov00_02080140(Exit *param_2); + bool FindExit(u32 param_2, Exit *param_3); unk8 AddCameraViewpoint(CameraViewpoint *param_2); bool FindViewpoint_Unk_4(unk8 id, CameraViewpoint *param_3); - bool FindViewpoint_Unk_0(unk32 param_2, CameraViewpoint *param_3); - void GetCurrentViewpoint(CameraViewpoint *param_2, unk32 param_3); - unk8 GetCurrentViewpoint_Unk_00(s32 param_2); - bool func_ov00_02080824(unk32 param_2, unk32 param_3); - bool AddUnk_130(unk32 param_2); - bool func_ov00_020809b8(unk32 param_2); + bool FindViewpoint_Unk_0(s32 param_2, CameraViewpoint *param_3); + void GetCurrentViewpoint(CameraViewpoint *param_2, s32 param_3); + unk32 GetCurrentViewpoint_Unk_00(s32 param_2); + bool func_ov00_02080824(u32 param_2, unk8 *param_3); + bool AddUnk_130(s32 param_2); + bool func_ov00_020809b8(s32 param_2); unk8 func_ov00_02080a78(Vec3p *param_2); unk8 func_ov00_02080b24(Vec2b *param_2); void func_ov00_02080d08(unk32 param_2); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index ea8854c0..7c3bd859 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -135,34 +135,34 @@ public: bool func_ov00_020836dc(u32 param_2, u32 actorId); bool IsTriggerTypeOverlapped(u32 param_2, Vec3p *param_3); bool GetOverlappingTrigger(Vec3p *param_2); - bool func_ov00_02083790(unk32 param_2); - unk8 func_ov00_02083840(unk32 param_2); - bool func_ov00_020838c8(s32 param_2); + bool func_ov00_02083790(s32 param_2); + bool func_ov00_02083840(s32 param_2); + bool AddTrigger(s32 param_2); bool func_ov00_020838d8(s32 param_2); - bool func_ov00_020838e8(u32 param_2, unk32 *param_3); - char func_ov00_020838f8(unk32 *param_2); - bool func_ov00_02083908(char param_2, unk32 *param_3); - void func_ov00_02083918(s32 param_2, s32 *param_3); - void func_ov00_02083928(unk8 *param_2, s32 param_3); + bool FindExit(u32 param_2, Exit *param_3); + char func_ov00_020838f8(Exit *param_2); + bool func_ov00_02083908(char param_2, CameraViewpoint *param_3); + void func_ov00_02083918(s32 param_2, CameraViewpoint *param_3); + void GetCurrentViewpoint(CameraViewpoint *param_2, s32 param_3); unk32 func_ov00_02083938(s32 param_2); - unk8 Set_MapData_Unk_16(unk8 value, unk32 index); + void SetCurrentViewpointId(unk8 value, s32 index); void func_ov00_02083958(s32 param_2); void func_ov00_02083968(u32 param_2, unk8 *param_3); - bool func_ov00_02083978(unk32 param_2, Vec3p *param_3); + bool func_ov00_02083978(Vec3p *param_2, Vec3p *param_3); bool func_ov00_020839b4(s32 param_2); bool func_ov00_020839c4(s32 param_2); - static unk8 func_ov00_020839d4(); - static unk8 func_ov00_020839f8(); - static void func_ov00_02083a1c(unk8 *param_1, MapManager *param_2, Vec3p *param_3); - static unk8 func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, u8 param_4, u8 param_5); - static unk8 func_ov00_02083b84(); - static unk8 func_ov00_02083bac(); - static unk8 func_ov00_02083bd4(); - static unk8 func_ov00_02083bfc(); - unk8 func_ov00_02083c24(unk32 param_2); - unk8 func_ov00_02083c50(unk32 param_2); - unk8 func_ov00_02083c7c(Vec3p *param_2, unk32 param_3); - static unk8 func_ov00_02083ce8(unk8 param_1, unk8 param_2, unk8 param_3, unk8 param_4, unk32 param_5); + s32 func_ov00_020839d4(s32 param_2); + s32 func_ov00_020839f8(s32 param_2); + static void func_ov00_02083a1c(s32 *param_1, MapManager *param_2, Vec3p *param_3); + static void func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, s32 param_4, s32 *param_5); + s32 GetTileStartX(unk32 x); + s32 GetTileStartZ(unk32 z); + s32 GetTileEndX(unk32 x); + s32 GetTileEndZ(unk32 z); + s32 func_ov00_02083c24(unk32 x); + s32 func_ov00_02083c50(unk32 z); + void func_ov00_02083c7c(Vec3p *param_2, u32 param_3); + static void func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5); unk8 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); unk8 MapData_vfunc_60(); static unk8 func_ov00_02083e70(); diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 01020023..76703c4f 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -56,14 +56,14 @@ unk8 MapBase::GetTileStartZ(unk32 z) {} s32 MapBase::GetTileEndX(unk32 x) {} s32 MapBase::GetTileEndZ(unk32 z) {} void MapBase::GetTileBounds(Vec2b *tilePos, AABB *bounds) {} -unk8 MapBase::GetClampedTileX(unk32 worldX) {} -unk8 MapBase::GetClampedTileY(unk32 worldZ) {} -unk8 MapBase::GetTileX(unk32 worldX) {} -unk8 MapBase::GetTileY(unk32 worldZ) {} +s32 MapBase::GetClampedTileX(s32 worldX) {} +s32 MapBase::GetClampedTileY(s32 worldZ) {} +unk8 MapBase::GetTileX(s32 worldX) {} +unk8 MapBase::GetTileY(s32 worldZ) {} bool MapBase::IsInBounds(Vec3p *tileWorldPos) {} s32 MapBase::AddEntrance(Entrance *param_2) {} Entrance *MapBase::FindEntrance(unk32 id) {} -unk8 MapBase::func_ov00_0207f924(unk32 param_2) {} +void MapBase::func_ov00_0207f924(s32 param_2) {} unk8 MapBase::func_ov00_0207f934() {} unk8 MapBase::func_ov00_0207f948(unk32 param_2) {} void MapBase::AddTrigger(TriggerParams *param_2) {} @@ -80,24 +80,24 @@ bool MapBase::AnyTrigger_func_0c(unk32 type) {} unk32 TriggerBase::vfunc_0c() {} unk8 MapBase::Trigger_vfunc_08() {} bool MapBase::AddTrigger(unk32 param_2) {} -bool MapBase::func_ov00_0207ff88(unk32 param_2) {} +bool MapBase::func_ov00_0207ff88(s32 param_2) {} void MapBase::func_ov00_0208005c(s32 param_2, s32 param_3, unk32 param_4) {} void MapBase::func_ov00_0208006c(unk32 param_2, s32 param_3) {} void MapBase::func_ov00_0208007c(s32 param_2, s32 param_3) {} void MapBase::func_ov00_0208008c(u32 param_2) {} unk8 MapBase::AddExit(Exit *param_2) {} -unk8 MapBase::func_ov00_02080140(Exit *param_2) {} +char MapBase::func_ov00_02080140(Exit *param_2) {} void MapBase_Unk1::func_ov00_02080324(s32 param_2, s32 param_3, s32 param_4) {} -bool MapBase::FindExit(unk32 param_2, Exit *param_3) {} +bool MapBase::FindExit(u32 param_2, Exit *param_3) {} unk8 MapBase::AddCameraViewpoint(CameraViewpoint *param_2) {} -bool MapBase::FindViewpoint_Unk_4(unk8 id, CameraViewpoint *param_3) {} -bool MapBase::FindViewpoint_Unk_0(unk32 param_2, CameraViewpoint *param_3) {} -void MapBase::GetCurrentViewpoint(CameraViewpoint *param_2, unk32 param_3) {} -unk8 MapBase::GetCurrentViewpoint_Unk_00(s32 param_2) {} +bool MapBase::FindViewpoint_Unk_4(char id, CameraViewpoint *param_3) {} +bool MapBase::FindViewpoint_Unk_0(s32 param_2, CameraViewpoint *param_3) {} +void MapBase::GetCurrentViewpoint(CameraViewpoint *param_2, s32 param_3) {} +unk32 MapBase::GetCurrentViewpoint_Unk_00(s32 param_2) {} unk32 MapBase::vfunc_b8() {} -bool MapBase::func_ov00_02080824(unk32 param_2, unk32 param_3) {} -bool MapBase::AddUnk_130(unk32 param_2) {} -bool MapBase::func_ov00_020809b8(unk32 param_2) {} +bool MapBase::func_ov00_02080824(u32 param_2, unk8 *param_3) {} +bool MapBase::AddUnk_130(s32 param_2) {} +bool MapBase::func_ov00_020809b8(s32 param_2) {} unk8 MapBase::func_ov00_02080a78(Vec3p *param_2) {} void MapBase_Unk2::func_ov00_02080ad0(TriggerBase **param_2, TriggerBase **param_3) {} unk8 MapBase::func_ov00_02080b24(Vec2b *param_2) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 613f7cb9..07d22009 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -200,7 +200,6 @@ ARM void MapManager::CreateMap(unk32 mapType, unk32 param_3, unk32 param_4) { } this->mMap = mapBase; } - return; } ARM void MapManager::DestroyMap() { @@ -484,7 +483,7 @@ ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { local_1c.y = gPlayerPos->y; local_1c.x = gPlayerPos->x; local_1c.z = gPlayerPos->z; - this->func_ov00_02083a1c(auStack_2c, this, &local_1c); + this->func_ov00_02083a1c((s32 *) auStack_2c, this, &local_1c); this->func_ov00_02082d84(auStack_2c, param_2, param_3); } @@ -551,6 +550,7 @@ ARM void MapManager::func_ov00_02083298(u32 param_2, Vec3p *param_3, s32 *param_ 0x800 >> 0xc); */ + // [!] BELOW IS NOT CODE: // PTR_MapManager_Unk1_overlay_d_0__020e24c8_overlay_d_0__02083300 // PTR_MapManager_Unk2_overlay_d_0__020e24e8_overlay_d_0__020832fc // PTR_MapManager_Unk1_overlay_d_0__020e24c8.field1_0x4_overlay_d_0__02083308 @@ -786,34 +786,246 @@ ARM bool MapManager::GetOverlappingTrigger(Vec3p *param_2) { return this->mMap->GetOverlappingTrigger(param_2); } -bool MapManager::func_ov00_02083790(unk32 param_2) {} -unk8 MapManager::func_ov00_02083840(unk32 param_2) {} -bool MapManager::func_ov00_020838c8(s32 param_2) {} -bool MapManager::func_ov00_020838d8(s32 param_2) {} -bool MapManager::func_ov00_020838e8(u32 param_2, unk32 *param_3) {} -char MapManager::func_ov00_020838f8(unk32 *param_2) {} -bool MapManager::func_ov00_02083908(char param_2, unk32 *param_3) {} -void MapManager::func_ov00_02083918(s32 param_2, s32 *param_3) {} -void MapManager::func_ov00_02083928(unk8 *param_2, s32 param_3) {} -unk32 MapManager::func_ov00_02083938(s32 param_2) {} -unk8 MapManager::Set_MapData_Unk_16(unk8 value, unk32 index) {} -void MapManager::func_ov00_02083958(s32 param_2) {} -void MapManager::func_ov00_02083968(u32 param_2, unk8 *param_3) {} -bool MapManager::func_ov00_02083978(unk32 param_2, Vec3p *param_3) {} -bool MapManager::func_ov00_020839b4(s32 param_2) {} -bool MapManager::func_ov00_020839c4(s32 param_2) {} -unk8 MapManager::func_ov00_020839d4() {} -unk8 MapManager::func_ov00_020839f8() {} -void MapManager::func_ov00_02083a1c(unk8 *param_1, MapManager *param_2, Vec3p *param_3) {} -unk8 MapManager::func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, u8 param_4, u8 param_5) {} -unk8 MapManager::func_ov00_02083b84() {} -unk8 MapManager::func_ov00_02083bac() {} -unk8 MapManager::func_ov00_02083bd4() {} -unk8 MapManager::func_ov00_02083bfc() {} -unk8 MapManager::func_ov00_02083c24(unk32 param_2) {} -unk8 MapManager::func_ov00_02083c50(unk32 param_2) {} -unk8 MapManager::func_ov00_02083c7c(Vec3p *param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_02083ce8(unk8 param_1, unk8 param_2, unk8 param_3, unk8 param_4, unk32 param_5) {} +ARM bool MapManager::func_ov00_02083790(s32 param_2) { + unk8 *puVar1; + unk8 *puVar2; + bool bVar3; + s32 iVar4; + s32 iStack_18; + s32 aiStack_14[2]; + + // puVar2 = PTR_PTR_overlay_d_0__02083834; + // puVar1 = PTR_DWORD_overlay_d_0__02083830; + if (param_2 != 0) { + // *(s32 *) (*(s32 *) (*(s32 *) PTR_DWORD_overlay_d_0__02083830 + 8) + 0x1b4) = param_2; + *(s32 *) (*(s32 *) (*(s32 *) puVar1 + 4) + 0x1b4) = param_2; + // iVar4 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) puVar2); + if ((iVar4 != 0) && (bVar3 = this->func_ov00_02082e1c(aiStack_14, &iStack_18), !bVar3)) { + // FUN_overlay_d_0__02079898(*(undefined4 *) PTR_DWORD_overlay_d_0__02083838, param_2, 0x10); + gActorManager->func_ov00_020c3ce8(param_2, true); + } + bVar3 = this->mMap->AnyTrigger_func_0c(param_2); + return bVar3; + } + return true; +} + +ARM bool MapManager::func_ov00_02083840(s32 param_2) { + unk8 *puVar1; + unk8 *puVar2; + bool bVar3; + s32 iVar4; + + // puVar2 = PTR_DWORD_overlay_d_0__020838c0; + // puVar1 = PTR_DWORD_overlay_d_0__020838bc; + if (param_2 != 0) { + // *(unk32 *) (*(int *) (*(int *) PTR_DWORD_overlay_d_0__020838bc + 8) + 0x1b4) = 0xffffffff; + // *(unk32 *) (*(int *) (*(int *) puVar1 + 4) + 0x1b4) = 0xffffffff; + // iVar4 = FUN_overlay_d_0__02078fe8(*(unk32 *) puVar2); + if (-1 < iVar4) { + // FUN_overlay_d_0__020798bc(*(unk32 *) PTR_DWORD_overlay_d_0__020838c0, 0x10); + gActorManager->func_ov00_020c3ce8(param_2, false); + } + bVar3 = this->mMap->TriggerOfType_vfunc_10(param_2); + return bVar3; + } + return true; +} + +ARM bool MapManager::AddTrigger(s32 param_2) { + return this->mMap->AddTrigger(param_2); +} + +ARM bool MapManager::func_ov00_020838d8(s32 param_2) { + return this->mMap->func_ov00_0207ff88(param_2); +} + +ARM bool MapManager::FindExit(u32 param_2, Exit *param_3) { + return this->mMap->FindExit(param_2, param_3); +} + +ARM char MapManager::func_ov00_020838f8(Exit *param_2) { + return this->mMap->func_ov00_02080140(param_2); +} + +ARM bool MapManager::func_ov00_02083908(char id, CameraViewpoint *param_3) { + return this->mMap->FindViewpoint_Unk_4(id, param_3); +} + +ARM void MapManager::func_ov00_02083918(s32 param_2, CameraViewpoint *param_3) { + this->mMap->FindViewpoint_Unk_0(param_2, param_3); +} + +ARM void MapManager::GetCurrentViewpoint(CameraViewpoint *param_2, s32 param_3) { + this->mMap->GetCurrentViewpoint(param_2, param_3); +} + +ARM unk32 MapManager::func_ov00_02083938(s32 param_2) { + return this->mMap->GetCurrentViewpoint_Unk_00(param_2); +} + +ARM void MapManager::SetCurrentViewpointId(unk8 value, s32 index) { + this->mMap->mCurrViewpointId[index] = value; +} + +ARM void MapManager::func_ov00_02083958(s32 param_2) { + this->mMap->func_ov00_0207f924(param_2); +} + +ARM void MapManager::func_ov00_02083968(u32 param_2, unk8 *param_3) { + this->mMap->func_ov00_02080824(param_2, param_3); +} + +ARM bool MapManager::func_ov00_02083978(Vec3p *param_2, Vec3p *param_3) { + s32 iVar1 = this->mMap->func_ov00_02080a78(param_2); + if (iVar1 != 0) { + param_3->x = *(s32 *) (iVar1 + 0x8); + param_3->y = *(s32 *) (iVar1 + 0xc); + param_3->z = *(s32 *) (iVar1 + 0x10); + return true; + } + return false; +} + +ARM bool MapManager::func_ov00_020839b4(s32 param_2) { + return this->mMap->AddUnk_130(param_2); +} + +ARM bool MapManager::func_ov00_020839c4(s32 param_2) { + return this->mMap->func_ov00_020809b8(param_2); +} + +ARM s32 MapManager::func_ov00_020839d4(s32 param_2) { + return this->mMap->GetClampedTileX(param_2 - this->GetMapCenterX()); +} + +ARM s32 MapManager::func_ov00_020839f8(s32 param_2) { + return this->mMap->GetClampedTileY(param_2 - this->GetMapCenterZ()); +} + +ARM void MapManager::func_ov00_02083a1c(s32 *param_1, MapManager *param_2, Vec3p *param_3) { + *param_1 = param_2->func_ov00_020839f8(param_3->z); + param_1[1] = param_2->func_ov00_020839d4(param_3->x); +} + +ARM void MapManager::func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, s32 param_4, s32 *param_5) { + bool bVar1; + unk8 uVar2; + unk8 uVar3; + s32 iVar4; + u32 uVar5; + s32 *piVar6; + Vec3p local_38; + Vec3p local_2c; + Vec3p VStack_20; + + piVar6 = param_3; + iVar4 = param_2->GetCourseData_Unk_25c(); + if (iVar4 == 0) { + uVar2 = param_2->func_ov00_020839f8(param_3[2]); + uVar3 = param_2->func_ov00_020839d4(*param_3); + *param_1 = uVar3; + param_1[1] = uVar2; + return; + } + if (param_4 != -1) { + piVar6 = param_5; + } + if (param_4 != -1 && piVar6 != (int *) 0xffffffff) { + uVar5 = (u32) * (u8 *) ((s32) piVar6 + (s32) (param_2->mCourse->mMapGrid + param_4)); + } else { + uVar5 = param_2->func_ov00_02082d08(); + } + bVar1 = param_2->IsMapInMainGrid(uVar5); + if (!bVar1) { + uVar2 = param_2->func_ov00_020839f8(param_3[2]); + uVar3 = param_2->func_ov00_020839d4(*param_3); + *param_1 = uVar3; + param_1[1] = uVar2; + return; + } + param_2->func_ov00_02083524(&VStack_20, param_4, *param_5); + local_38.x = *param_3; + local_38.y = param_3[1]; + local_38.z = param_3[2]; + Vec3p_Sub(&local_38, &VStack_20, &local_2c); + uVar2 = param_2->mMap->GetClampedTileY(local_2c.z); + uVar3 = param_2->mMap->GetClampedTileX(local_2c.x); + *param_1 = uVar3; + param_1[1] = uVar2; +} + +ARM s32 MapManager::GetTileStartX(unk32 x) { + return this->GetMapCenterX() + this->mMap->GetTileStartX(x); +} + +ARM s32 MapManager::GetTileStartZ(unk32 z) { + return this->GetMapCenterZ() + this->mMap->GetTileStartZ(z); +} + +ARM s32 MapManager::GetTileEndX(unk32 x) { + return this->GetMapCenterX() + this->mMap->GetTileEndX(x); +} + +ARM s32 MapManager::GetTileEndZ(unk32 z) { + return this->GetMapCenterZ() + this->mMap->GetTileEndZ(z); +} + +ARM s32 MapManager::func_ov00_02083c24(unk32 x) { + return this->GetMapCenterX() + this->mMap->GetTileStartX(x) + 0x800; +} + +ARM s32 MapManager::func_ov00_02083c50(unk32 z) { + return this->GetMapCenterZ() + this->mMap->GetTileStartZ(z) + 0x800; +} + +ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, u32 param_3) { + Vec3p local_28; // Unused. So why, ghidra? Why? Tell me why. + param_2->x = this->func_ov00_02083c24(param_3 & 0xff); + param_2->z = this->func_ov00_02083c50(param_3 >> 8 & 0xff); + param_2->y = this->MapData_vfunc_68(); +} + +ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5) { + bool bVar1; + s32 iVar2; + u32 uVar3; + Vec3p local_2c; + + uVar3 = param_3; + iVar2 = param_1->GetCourseData_Unk_25c(); + if (iVar2 == 0) { + iVar2 = param_1->mMap->GetTileStartX(param_3 & 0xff); + *param_2 = iVar2 + 0x800; + iVar2 = param_1->mMap->GetTileStartZ(param_3 >> 8 & 0xff); + param_2[2] = iVar2 + 0x800; + } else { + if (param_4 != -1) { + uVar3 = param_5; + } + if (param_4 != -1 && uVar3 != 0xffffffff) { + uVar3 = (u32) (u8) param_1->mCourse->mMapGrid[param_4][uVar3]; + } else { + uVar3 = param_1->func_ov00_02082d08(); + } + bVar1 = param_1->IsMapInMainGrid(uVar3); + if (bVar1) { + param_1->func_ov00_02083524(&local_2c, param_4, param_5); + iVar2 = param_1->mMap->GetTileStartX(param_3 & 0xff); + *param_2 = local_2c.x + iVar2 + 0x800; + iVar2 = param_1->mMap->GetTileStartZ(param_3 >> 8 & 0xff); + param_2[2] = local_2c.z + iVar2 + 0x800; + } else { + iVar2 = param_1->mMap->GetTileStartX(param_3 & 0xff); + *param_2 = iVar2 + 0x800; + iVar2 = param_1->mMap->GetTileStartZ(param_3 >> 8 & 0xff); + param_2[2] = iVar2 + 0x800; + } + } + iVar2 = param_1->MapData_vfunc_68(); + param_2[1] = iVar2; +} + unk8 MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) {} unk8 MapManager::MapData_vfunc_60() {} unk8 MapManager::func_ov00_02083e70() {} From 0672d06a7f3b639666bbda545ab49452e0539278 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Thu, 16 Jan 2025 13:55:44 +0100 Subject: [PATCH 17/62] Decompile MapManager::MapData_vfunc_60 (33%) Decompile MapManager::MapData_vfunc_60 (50%) Decompile MapManager::func_ov00_02083e70 (21%) Decompile MapManager::MapData_vfunc_68 (50%) Decompile MapManager::func_ov00_02083f44 (20%) Decompile MapManager::MapData_vfunc_6c Decompile MapManager::MapData_vfunc_70 Decompile MapManager::func_ov00_02083fb0 (24%) Decompile MapManager::func_ov00_02084024 Decompile MapManager::MapData_vfunc_54 (50%) Decompile MapManager::MapData_vfunc_78 (50%) Decompile MapManager::func_ov00_02084100 Decompile MapManager::GetMapData_Unk_48 Decompile MapManager::GetMapData_Unk_4c Decompile MapManager::func_ov00_0208412c Decompile MapManager::func_ov00_0208413c Decompile MapManager::MapData_vfunc_58 (50%) Decompile MapManager::func_ov00_02084164 (1% lol) Decompile MapManager::GetMapData_Unk_0a Decompile MapManager::GetMapData_Unk_0b Decompile MapManager::MapData_vfunc_a4 (50%) Decompile MapManager::func_ov00_0208433c (38%) Decompile MapManager::func_ov00_0208439c (90%) Decompile MapManager::func_ov00_020843ec (7%) Decompile MapManager::GetMapData_Unk_38 Decompile MapManager::func_ov00_020846a4 (61%) Decompile MapManager::func_ov00_02084700 (82%) Decompile MapManager::func_ov00_020847e0 Decompile MapManager::func_ov00_020847f0 (11%) Decompile MapManager::func_ov00_02084838 (15%) Decompile MapManager::func_ov00_020848b8 (22%) Decompile MapManager::func_ov00_02084924 Decompile MapManager::func_ov00_02084934 (18%) Decompile MapManager::GetMapData_Unk_06 Decompile MapManager::GetMapData_Unk_07 --- config/eur/arm9/overlays/ov000/symbols.txt | 18 +- config/usa/arm9/overlays/ov000/symbols.txt | 18 +- include/Map/MapBase.hpp | 4 +- include/Map/MapManager.hpp | 44 +- src/00_Core/Map/MapBase.cpp | 4 +- src/00_Core/Map/MapManager.cpp | 610 +++++++++++++++++++-- 6 files changed, 615 insertions(+), 83 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 5954466c..f2f7de0e 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -615,17 +615,17 @@ _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083 _ZN10MapManager16MapData_vfunc_60Ev kind:function(arm,size=0x18) addr:0x2083e58 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e70 _ZN10MapManager16MapData_vfunc_68Ev kind:function(arm,size=0x18) addr:0x2083ee0 -_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_i kind:function(arm,size=0x4c) addr:0x2083ef8 +_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083ef8 _ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083f44 -_ZN10MapManager16MapData_vfunc_6cEv kind:function(arm,size=0x18) addr:0x2083f80 -_ZN10MapManager16MapData_vfunc_70Ev kind:function(arm,size=0x18) addr:0x2083f98 +_ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f80 +_ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f98 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083fb0 -_ZN10MapManager18func_ov00_02084024EiP4AABB kind:function(arm,size=0x64) addr:0x2084024 +_ZN10MapManager18func_ov00_02084024EP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2084024 _ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084088 _ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x20840a0 _ZN10MapManager16MapData_vfunc_78Ev kind:function(arm,size=0x18) addr:0x20840c4 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x20840dc -_ZN10MapManager18func_ov00_02084100EiPS_ kind:function(arm,size=0x14) addr:0x2084100 +_ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x2084100 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x2084114 _ZN10MapManager17GetMapData_Unk_4cEv kind:function(arm,size=0xc) addr:0x2084120 _ZN10MapManager18func_ov00_0208412cEv kind:function(arm,size=0x10) addr:0x208412c @@ -635,19 +635,19 @@ _ZN10MapManager18func_ov00_02084164Ev kind:function(arm,size=0x1a8) addr:0x20841 _ZN10MapManager17GetMapData_Unk_0aEv kind:function(arm,size=0xc) addr:0x208430c _ZN10MapManager17GetMapData_Unk_0bEv kind:function(arm,size=0xc) addr:0x2084318 _ZN10MapManager16MapData_vfunc_a4Ev kind:function(arm,size=0x18) addr:0x2084324 -_ZN10MapManager18func_ov00_0208433cEP5Vec3pi kind:function(arm,size=0x60) addr:0x208433c -_ZN10MapManager18func_ov00_0208439cEv kind:function(arm,size=0x50) addr:0x208439c +_ZN10MapManager18func_ov00_0208433cEP5Vec3pS1_ kind:function(arm,size=0x60) addr:0x208433c +_ZN10MapManager18func_ov00_0208439cEP5Vec2sP5Vec3p kind:function(arm,size=0x50) addr:0x208439c _ZN10MapManager18func_ov00_020843ecEPi kind:function(arm,size=0x2ac) addr:0x20843ec _ZN10MapManager17GetMapData_Unk_38Ev kind:function(arm,size=0xc) addr:0x2084698 _ZN10MapManager18func_ov00_020846a4Ev kind:function(arm,size=0x5c) addr:0x20846a4 -_ZN10MapManager18func_ov00_02084700Ev kind:function(arm,size=0x40) addr:0x2084700 +_ZN10MapManager18func_ov00_02084700EPi kind:function(arm,size=0x40) addr:0x2084700 _ZN10MapManager18func_ov00_02084740Ev kind:function(arm,size=0xa0) addr:0x2084740 _ZN10MapManager18func_ov00_020847e0Ev kind:function(arm,size=0x10) addr:0x20847e0 _ZN10MapManager18func_ov00_020847f0Ev kind:function(arm,size=0x48) addr:0x20847f0 _ZN10MapManager18func_ov00_02084838Ev kind:function(arm,size=0x80) addr:0x2084838 _ZN10MapManager18func_ov00_020848b8Ev kind:function(arm,size=0x6c) addr:0x20848b8 _ZN10MapManager18func_ov00_02084924Ej kind:function(arm,size=0x10) addr:0x2084924 -_ZN10MapManager18func_ov00_02084934Ev kind:function(arm,size=0x50) addr:0x2084934 +_ZN10MapManager18func_ov00_02084934EPi kind:function(arm,size=0x50) addr:0x2084934 _ZN10MapManager17GetMapData_Unk_06Ev kind:function(arm,size=0xc) addr:0x2084984 _ZN10MapManager17GetMapData_Unk_07Ev kind:function(arm,size=0xc) addr:0x2084990 _ZN10MapManager18func_ov00_0208499cEv kind:function(arm,size=0x24) addr:0x208499c diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 5aa4da4f..68f84fbf 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -615,17 +615,17 @@ _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083 _ZN10MapManager16MapData_vfunc_60Ev kind:function(arm,size=0x18) addr:0x2083df8 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e10 _ZN10MapManager16MapData_vfunc_68Ev kind:function(arm,size=0x18) addr:0x2083e80 -_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_i kind:function(arm,size=0x4c) addr:0x2083e98 +_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083e98 _ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083ee4 -_ZN10MapManager16MapData_vfunc_6cEv kind:function(arm,size=0x18) addr:0x2083f20 -_ZN10MapManager16MapData_vfunc_70Ev kind:function(arm,size=0x18) addr:0x2083f38 +_ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f20 +_ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f38 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083f50 -_ZN10MapManager18func_ov00_02084024EiP4AABB kind:function(arm,size=0x64) addr:0x2083fc4 +_ZN10MapManager18func_ov00_02084024EP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2083fc4 _ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084028 _ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x2084040 _ZN10MapManager16MapData_vfunc_78Ev kind:function(arm,size=0x18) addr:0x2084064 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x208407c -_ZN10MapManager18func_ov00_02084100EiPS_ kind:function(arm,size=0x14) addr:0x20840a0 +_ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x20840a0 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x20840b4 _ZN10MapManager17GetMapData_Unk_4cEv kind:function(arm,size=0xc) addr:0x20840c0 _ZN10MapManager18func_ov00_0208412cEv kind:function(arm,size=0x10) addr:0x20840cc @@ -635,19 +635,19 @@ _ZN10MapManager18func_ov00_02084164Ev kind:function(arm,size=0x1a8) addr:0x20841 _ZN10MapManager17GetMapData_Unk_0aEv kind:function(arm,size=0xc) addr:0x20842ac _ZN10MapManager17GetMapData_Unk_0bEv kind:function(arm,size=0xc) addr:0x20842b8 _ZN10MapManager16MapData_vfunc_a4Ev kind:function(arm,size=0x18) addr:0x20842c4 -_ZN10MapManager18func_ov00_0208433cEP5Vec3pi kind:function(arm,size=0x60) addr:0x20842dc -_ZN10MapManager18func_ov00_0208439cEv kind:function(arm,size=0x50) addr:0x208433c +_ZN10MapManager18func_ov00_0208433cEP5Vec3pS1_ kind:function(arm,size=0x60) addr:0x20842dc +_ZN10MapManager18func_ov00_0208439cEP5Vec2sP5Vec3p kind:function(arm,size=0x50) addr:0x208433c _ZN10MapManager18func_ov00_020843ecEPi kind:function(arm,size=0x2ac) addr:0x208438c _ZN10MapManager17GetMapData_Unk_38Ev kind:function(arm,size=0xc) addr:0x2084638 _ZN10MapManager18func_ov00_020846a4Ev kind:function(arm,size=0x5c) addr:0x2084644 -_ZN10MapManager18func_ov00_02084700Ev kind:function(arm,size=0x40) addr:0x20846a0 +_ZN10MapManager18func_ov00_02084700EPi kind:function(arm,size=0x40) addr:0x20846a0 _ZN10MapManager18func_ov00_02084740Ev kind:function(arm,size=0xa0) addr:0x20846e0 _ZN10MapManager18func_ov00_020847e0Ev kind:function(arm,size=0x10) addr:0x2084780 _ZN10MapManager18func_ov00_020847f0Ev kind:function(arm,size=0x48) addr:0x2084790 _ZN10MapManager18func_ov00_02084838Ev kind:function(arm,size=0x80) addr:0x20847d8 _ZN10MapManager18func_ov00_020848b8Ev kind:function(arm,size=0x6c) addr:0x2084858 _ZN10MapManager18func_ov00_02084924Ej kind:function(arm,size=0x10) addr:0x20848c4 -_ZN10MapManager18func_ov00_02084934Ev kind:function(arm,size=0x50) addr:0x20848d4 +_ZN10MapManager18func_ov00_02084934EPi kind:function(arm,size=0x50) addr:0x20848d4 _ZN10MapManager17GetMapData_Unk_06Ev kind:function(arm,size=0xc) addr:0x2084924 _ZN10MapManager17GetMapData_Unk_07Ev kind:function(arm,size=0xc) addr:0x2084930 _ZN10MapManager18func_ov00_0208499cEv kind:function(arm,size=0x24) addr:0x208493c diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 2d62a670..b71f2b06 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -140,10 +140,10 @@ public: /* 5c */ virtual unk32 vfunc_5c(); /* 60 */ virtual unk32 vfunc_60(); /* 64 */ virtual unk32 vfunc_64(); - /* 68 */ virtual unk8 vfunc_68(unk32 param_2, unk32 param_3); + /* 68 */ virtual unk8 vfunc_68(); /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); - /* 74 */ virtual s32 *vfunc_74(Vec3p *param_2); + /* 74 */ virtual s32 vfunc_74(Vec3p *param_2); /* 78 */ virtual unk32 vfunc_78(); /* 7c */ virtual void vfunc_7c(); /* 80 */ virtual unk32 vfunc_80(); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 7c3bd859..b9c7ae10 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -163,45 +163,45 @@ public: s32 func_ov00_02083c50(unk32 z); void func_ov00_02083c7c(Vec3p *param_2, u32 param_3); static void func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5); - unk8 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); - unk8 MapData_vfunc_60(); - static unk8 func_ov00_02083e70(); + void func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); + unk32 MapData_vfunc_60(); + bool func_ov00_02083e70(); unk8 MapData_vfunc_68(); - s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, unk32 param_4); + s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3); void func_ov00_02083f44(Vec3p *param_2); - unk8 MapData_vfunc_6c(); - unk8 MapData_vfunc_70(); + unk8 MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); + unk8 MapData_vfunc_70(Vec3p *param_2); static unk8 func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); - void func_ov00_02084024(unk32 param_2, AABB *param_3); + void func_ov00_02084024(Vec2b *param_2, AABB *param_3); unk8 MapData_vfunc_54(); unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4); unk8 MapData_vfunc_78(); - static unk8 func_ov00_020840dc(); - static unk8 func_ov00_02084100(unk32 param_1, MapManager *param_2); - unk8 GetMapData_Unk_48(); - unk8 GetMapData_Unk_4c(); + unk8 func_ov00_020840dc(); + static unk8 func_ov00_02084100(unk32 *param_1, MapManager *param_2); + u32 GetMapData_Unk_48(); + unk32 GetMapData_Unk_4c(); unk32 func_ov00_0208412c(); void func_ov00_0208413c(unk32 param_2); unk8 MapData_vfunc_58(); - static unk8 func_ov00_02084164(); - unk8 GetMapData_Unk_0a(); - unk8 GetMapData_Unk_0b(); + unk8 func_ov00_02084164(); + u8 GetMapData_Unk_0a(); + u8 GetMapData_Unk_0b(); unk8 MapData_vfunc_a4(); - unk8 func_ov00_0208433c(Vec3p *param_2, unk32 param_3); - static unk8 func_ov00_0208439c(); + unk8 func_ov00_0208433c(Vec3p *param_2, Vec3p *param_3); + unk8 func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3); void func_ov00_020843ec(s32 *param_2); - unk8 GetMapData_Unk_38(); + unk32 GetMapData_Unk_38(); unk8 func_ov00_020846a4(); - static unk8 func_ov00_02084700(); + static unk8 func_ov00_02084700(s32 *param_1); unk8 func_ov00_02084740(); - unk8 func_ov00_020847e0(); + unk32 func_ov00_020847e0(); unk8 func_ov00_020847f0(); bool func_ov00_02084838(); bool func_ov00_020848b8(); void func_ov00_02084924(u32 param_2); - static unk8 func_ov00_02084934(); - unk8 GetMapData_Unk_06(); - unk8 GetMapData_Unk_07(); + bool func_ov00_02084934(s32 *param_2); + u8 GetMapData_Unk_06(); + u8 GetMapData_Unk_07(); unk8 func_ov00_0208499c(); unk8 func_ov00_020849c0(); unk8 func_ov00_020849dc(); diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 76703c4f..2d9ca7d9 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -23,13 +23,13 @@ unk32 MapBase::vfunc_58() {} unk32 MapBase::vfunc_5c() {} unk32 MapBase::vfunc_60() {} unk32 MapBase::vfunc_64() {} -unk8 MapBase::vfunc_68(unk32 param_2, unk32 param_3) {} +unk8 MapBase::vfunc_68() {} unk8 MapBase::func_ov00_0207e940(unk8 *param_1) {} unk8 MapBase::func_ov00_0207e968() {} unk8 MapBase::func_ov00_0207e96c() {} unk8 MapBase::vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) {} unk32 MapBase::vfunc_70(Vec3p *param_2) {} -s32 *MapBase::vfunc_74(Vec3p *param_2) {} +s32 MapBase::vfunc_74(Vec3p *param_2) {} unk8 MapBase::func_ov00_0207f100() {} bool MapBase::func_ov00_0207f104(unk32 param_2, unk32 param_3) {} unk32 MapBase::func_ov00_0207f1f4(Vec3p *param_2, unk32 *param_3) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 07d22009..5d738880 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1026,45 +1026,577 @@ ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 p param_2[1] = iVar2; } -unk8 MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) {} -unk8 MapManager::MapData_vfunc_60() {} -unk8 MapManager::func_ov00_02083e70() {} -unk8 MapManager::MapData_vfunc_68() {} -s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, unk32 param_4) {} -void MapManager::func_ov00_02083f44(Vec3p *param_2) {} -unk8 MapManager::MapData_vfunc_6c() {} -unk8 MapManager::MapData_vfunc_70() {} -unk8 MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) {} -void MapManager::func_ov00_02084024(unk32 param_2, AABB *param_3) {} -unk8 MapManager::MapData_vfunc_54() {} -unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) {} -unk8 MapManager::MapData_vfunc_78() {} -unk8 MapManager::func_ov00_020840dc() {} -unk8 MapManager::func_ov00_02084100(unk32 param_1, MapManager *param_2) {} -unk8 MapManager::GetMapData_Unk_48() {} -unk8 MapManager::GetMapData_Unk_4c() {} -unk32 MapManager::func_ov00_0208412c() {} -void MapManager::func_ov00_0208413c(unk32 param_2) {} -unk8 MapManager::MapData_vfunc_58() {} -unk8 MapManager::func_ov00_02084164() {} -unk8 MapManager::GetMapData_Unk_0a() {} -unk8 MapManager::GetMapData_Unk_0b() {} -unk8 MapManager::MapData_vfunc_a4() {} -unk8 MapManager::func_ov00_0208433c(Vec3p *param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_0208439c() {} -void MapManager::func_ov00_020843ec(s32 *param_2) {} -unk8 MapManager::GetMapData_Unk_38() {} -unk8 MapManager::func_ov00_020846a4() {} -unk8 MapManager::func_ov00_02084700() {} -unk8 MapManager::func_ov00_02084740() {} -unk8 MapManager::func_ov00_020847e0() {} -unk8 MapManager::func_ov00_020847f0() {} -bool MapManager::func_ov00_02084838() {} -bool MapManager::func_ov00_020848b8() {} -void MapManager::func_ov00_02084924(u32 param_2) {} -unk8 MapManager::func_ov00_02084934() {} -unk8 MapManager::GetMapData_Unk_06() {} -unk8 MapManager::GetMapData_Unk_07() {} +ARM void MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) { + unk8 local_8; + unk8 local_7; // Unused. + unk16 uStack_6; + + uStack_6 = (unk16) ((u32) param_4 >> 0x10); + // _local_8 = CONCAT11(param_3, param_2); What is this? + this->mMap->vfunc_60(/*&local_8*/); // Doesn't take any params, so why? +} + +ARM unk32 MapManager::MapData_vfunc_60() { + return this->mMap->vfunc_60(); +} + +ARM bool MapManager::func_ov00_02083e70() { + int iVar1; + int iVar2; + + iVar1 = this->MapData_vfunc_54(); + if (iVar1 < 0x2c) { + if ((0x2a < iVar1) || (iVar1 == 0x1b)) { + return true; + } + } else if (((iVar1 < 0x50) && (0x4d < iVar1)) && (iVar1 == 0x4e || iVar1 == 0x4f)) { + return true; + } + iVar1 = this->MapData_vfunc_60(); + iVar2 = this->GetMapData_Unk_48(); + return iVar2 <= iVar1; +} + +ARM unk8 MapManager::MapData_vfunc_68() { + return this->mMap->vfunc_68(); +} + +ARM s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3) { + int iVar1; + Vec3p local_18; + + local_18.x = param_2->x; + local_18.z = param_2->z; + local_18.y = param_2->y; + if (param_2->y < param_3->y) { + local_18.y = param_3->y; + } + iVar1 = this->mMap->vfunc_68(/*&local_18*/); // takes no args. + return iVar1; +} + +ARM void MapManager::func_ov00_02083f44(Vec3p *param_2) { + Vec3p local_18; + + local_18.z = param_2->z; + local_18.x = param_2->x; + /*local_18.y = *(int *)( + PTR_PTR_s_anc_overlay_d_0__020e24a0_overlay_d_0__020e24a4_overlay_d_0__02083f7c + + 0x20);*/ + this->func_ov00_02083ef8(param_2, &local_18); +} + +unk8 MapManager::MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) { + this->mMap->vfunc_6c(param_2, param_3, param_4); +} + +unk8 MapManager::MapData_vfunc_70(Vec3p *param_2) { + this->mMap->vfunc_70(param_2); +} + +unk8 MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) { + s32 iVar1; + unk32 dVar2; + + iVar1 = param_2->mMap->vfunc_74(param_3); + if (iVar1 != 0) { + *param_1 = *(unk32 *) (iVar1 + 0xc); + return; + } + dVar2 = param_2->MapData_vfunc_70(param_3); + if (dVar2 != 0xffff) { + // FUN_overlay_d_0__02093a1c(param_1, *(unk32 *) PTR_DWORD_overlay_d_0__02084020); + return; + } + *param_1 = 0; +} + +void MapManager::func_ov00_02084024(Vec2b *param_2, AABB *param_3) { + int iVar1; + Vec3p local_20; + + this->mMap->GetTileBounds(param_2, param_3); + iVar1 = this->GetMapCenterZ(); + local_20.x = this->GetMapCenterX(); + local_20.y = 0; + local_20.z = iVar1; + Vec3p_Add(¶m_3->min, &local_20, ¶m_3->min); + Vec3p_Add(¶m_3->max, &local_20, ¶m_3->max); +} + +unk8 MapManager::MapData_vfunc_54() { + this->mMap->vfunc_54(); +} + +unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { + unk8 local_8; + unk8 local_7; + unk16 uStack_6; + + uStack_6 = (unk16) ((u32) param_4 >> 0x10); + // _local_8 = CONCAT11(param_3, param_2); + this->MapData_vfunc_54(/*&local_8*/); // Doesn't take any params. + // No calls to functions according to objdiff, why??? +} + +unk8 MapManager::MapData_vfunc_78() { + this->mMap->vfunc_78(); +} + +unk8 MapManager::func_ov00_020840dc() { + int *piVar1; + + piVar1 = (int *) this->MapData_vfunc_78(); + if (piVar1 != (int *) 0x0) { + // (**(code **) (*piVar1 + 0x1c))(); // MapBase::func_ov00_0207f934() ?? + } +} + +unk8 MapManager::func_ov00_02084100(unk32 *param_1, MapManager *param_2) { + unk32 uVar1 = param_2->mMap->mUnk_040; + *param_1 = param_2->mMap->mUnk_044; + param_1[1] = uVar1; +} + +u32 MapManager::GetMapData_Unk_48() { + return this->mMap->mUnk_048; +} + +unk32 MapManager::GetMapData_Unk_4c() { + return this->mMap->mUnk_04c; +} + +unk32 MapManager::func_ov00_0208412c() { + return this->mMap->func_ov00_0207f934(); +} + +void MapManager::func_ov00_0208413c(unk32 param_2) { + this->mMap->func_ov00_0207f948(param_2); +} + +unk8 MapManager::MapData_vfunc_58() { + this->mMap->vfunc_58(); +} + +unk8 MapManager::func_ov00_02084164() { + int iVar1; + unk32 uVar2; + + iVar1 = this->mMap->vfunc_58(/*param_2, 7, pcVar3, param_4*/); // Params? + if (iVar1 == 0) { + uVar2 = this->MapData_vfunc_54(); + switch (uVar2) { + case 0: break; + case 1: return 0; + case 2: return 0; + case 3: return 0; + case 4: return 0; + case 5: return 0; + case 6: return 0; + case 7: return 0; + case 8: break; + case 9: break; + case 10: return 0; + case 0xb: break; + case 0xc: break; + case 0xd: break; + case 0xe: break; // I mean, honestly Ghidra. + case 0xf: break; // What are we going to do with you? + case 0x10: break; + case 0x11: break; + case 0x12: break; + case 0x13: break; + case 0x14: return 0; + case 0x15: break; + case 0x16: break; + case 0x17: return 0; + case 0x18: break; + case 0x19: return 0; + case 0x1a: break; + case 0x1b: return 0; + case 0x1c: return 0; + case 0x1d: return 0; + case 0x1e: return 0; + case 0x1f: return 0; + case 0x20: break; + case 0x21: break; + case 0x22: break; + case 0x23: break; + case 0x24: return 0; + case 0x25: break; + case 0x26: break; + case 0x27: break; + case 0x28: break; + case 0x29: break; + case 0x2a: break; + case 0x2b: return 0; + case 0x2c: break; + case 0x2d: break; + case 0x2e: break; + case 0x2f: break; + case 0x30: return 0; + case 0x31: break; + case 0x32: break; + case 0x33: return 0; + case 0x34: return 0; + case 0x35: break; + case 0x36: break; + case 0x37: return 0; + case 0x38: break; + case 0x39: break; + case 0x3a: break; + case 0x3b: break; + case 0x3c: break; + case 0x3d: break; + case 0x3e: break; + case 0x3f: break; + case 0x40: return 0; + case 0x41: break; + case 0x42: break; + case 0x43: break; + case 0x44: break; + case 0x45: break; + case 0x46: return 0; + case 0x47: return 0; + case 0x48: return 0; + case 0x49: return 0; + case 0x4a: return 0; + case 0x4b: return 0; + case 0x4c: return 0; + case 0x4d: break; + case 0x4e: return 0; + case 0x4f: return 0; + case 0x50: return 0; + case 0x51: break; + case 0x52: break; + case 0x53: break; + case 0x54: break; + default: return 0; + } + return 1; + } + return 0; +} + +u8 MapManager::GetMapData_Unk_0a() { + return this->mMap->mUnk_00a; +} + +u8 MapManager::GetMapData_Unk_0b() { + return this->mMap->mUnk_00b; +} + +unk8 MapManager::MapData_vfunc_a4() { + this->mMap->vfunc_a4(); +} + +unk8 MapManager::func_ov00_0208433c(Vec3p *param_2, Vec3p *param_3) { + Vec2s local_28; + Vec3p VStack_24; + Vec3p local_18; + + local_18.x = param_2->x; + local_18.y = param_2->y; + local_18.z = param_2->z; + this->GetMapMinBounds(&VStack_24); + Vec3p_Sub(&local_18, &VStack_24, &local_18); + this->mMap->func_ov00_0207f53c(&local_28, this->mMap, &local_18); + param_3->x = local_28.x; + param_3->y = local_28.y; +} + +unk8 MapManager::func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3) { + s32 iVar1; + Vec3p VStack_18; + + this->mMap->func_ov00_0207f630(param_2, param_3); + this->GetMapMinBounds(&VStack_18); + Vec3p_Add(param_3, &VStack_18, param_3); + iVar1 = this->MapData_vfunc_68(); + param_3->y = iVar1; +} + +void MapManager::func_ov00_020843ec(s32 *param_2) { + u32 uVar1; + s32 iVar2; + s32 iVar3; + unk16 uStack_88; + unk16 uStack_86; + unk16 uStack_84; + unk16 uStack_82; + Vec2s local_80; + Vec2s local_7c; + Vec2s local_78; + Vec2s local_74; + Vec3p local_70; + Vec3p local_64; + s32 local_58; + s32 iStack_54; + s32 iStack_50; + s32 local_4c; + s32 iStack_48; + s32 iStack_44; + Vec3p local_40; + Vec3p local_34; + s32 local_28; + s32 local_24; + s32 local_20; + + // uVar1 = (**(code **) (*param_2 + 8))(); // Which function is this? + if (uVar1 < 2) { + // (**(code **) (*param_2 + 0x3c))(param_2, &local_28); // And this? + // local_40.z = (**(code **) (*param_2 + 0x40))(); // What about this? + local_34.x = local_28 - local_40.z; + local_34.z = local_20 - local_40.z; + local_40.x = local_28 + local_40.z; + local_40.z = local_20 + local_40.z; + local_34.y = local_24; + local_40.y = local_24; + iVar2 = this->GetMapMinX(); + local_34.x = local_34.x - iVar2; + iVar2 = this->GetMapMinZ(); + local_34.z = local_34.z - iVar2; + iVar2 = this->GetMapMinX(); + local_40.x = local_40.x - iVar2; + iVar2 = this->GetMapMinZ(); + local_40.z = local_40.z - iVar2; + this->mMap->func_ov00_0207f53c(&local_74, this->mMap, &local_34); + this->mMap->func_ov00_0207f53c(&local_78, this->mMap, &local_40); + iVar2 = (int) local_74.x; + if (iVar2 <= local_78.x) { + do { + iVar3 = (int) local_74.y; + if (iVar3 <= local_78.y) { + do { + uStack_84 = (unk16) iVar2; + uStack_82 = (unk16) iVar3; + this->mMap->vfunc_ac(/*&uStack_84*/); // No args? + iVar3 = (iVar3 + 1) * 0x10000 >> 0x10; + } while (iVar3 <= local_78.y); + } + iVar2 = (iVar2 + 1) * 0x10000 >> 0x10; + } while (iVar2 <= local_78.x); + return; + } + return; + } + if (uVar1 == 2) { + this->mMap->vfunc_2c(/*&local_58*/); // No args? + local_64.x = local_58; + local_64.y = iStack_54; + local_64.z = iStack_50; + local_70.x = local_4c; + local_70.y = iStack_48; + local_70.z = iStack_44; + iVar2 = this->GetMapMinX(); + local_64.x = local_64.x - iVar2; + iVar2 = this->GetMapMinZ(); + local_64.z = local_64.z - iVar2; + iVar2 = this->GetMapMinX(); + local_70.x = local_70.x - iVar2; + iVar2 = this->GetMapMinZ(); + local_70.z = local_70.z - iVar2; + this->mMap->func_ov00_0207f53c(&local_7c, this->mMap, &local_64); + this->mMap->func_ov00_0207f53c(&local_80, this->mMap, &local_70); + iVar2 = (int) local_7c.x; + if (iVar2 <= local_80.x) { + do { + iVar3 = (int) local_7c.y; + if (iVar3 <= local_80.y) { + do { + uStack_88 = (unk16) iVar2; + uStack_86 = (unk16) iVar3; + this->mMap->vfunc_ac(/*&uStack_88*/); // No args? + iVar3 = (iVar3 + 1) * 0x10000 >> 0x10; + } while (iVar3 <= local_80.y); + } + iVar2 = (iVar2 + 1) * 0x10000 >> 0x10; + } while (iVar2 <= local_80.x); + } + } +} + +unk32 MapManager::GetMapData_Unk_38() { + return this->mMap->mUnk_038; +} + +unk8 MapManager::func_ov00_020846a4() { + s32 iVar1 = *(s32 *) ((s32) this->mMap->mUnk_144 + 4); + if (iVar1 == 0xff) { + switch (this->mCourse->mType) { + case CourseType_Normal: return 0; + case CourseType_Dungeon: break; + case CourseType_Sea: return 2; + case CourseType_TempleOfTheOceanKing: break; + case CourseType_Battle: break; + default: return 0; + } + return 1; + } + return iVar1; +} + +unk8 MapManager::func_ov00_02084700(s32 *param_1) { + int iVar1; + + iVar1 = *(int *) (param_1[1] + 0x34); + if (iVar1 == -1) { + iVar1 = *(int *) (*param_1 + 0xc4); + } + if ((iVar1 == 0x1b) && (gActorManager->mUnk_29 != false)) { + iVar1 = 0x1c; + } + return iVar1; +} + +unk8 MapManager::func_ov00_02084740() { + bool bVar1; + int iVar2; + int iVar3; + unk32 uVar4; + unk32 uVar5; + unk32 uVar6; + unk32 uVar7; + unk32 *puVar8; + unk32 *puVar9; + unk32 local_1c8; + unk32 local_1c4; + unk32 local_1c0; + unk32 local_1bc[108]; + + // iVar2 = this->func_ov00_02084700(?); // what param? + // iVar3 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__020847d4); + if (iVar3 != 2) { + local_1c8 = *(unk32 *) gPlayerPos->x; + local_1c4 = *(unk32 *) gPlayerPos->y; + local_1c0 = *(unk32 *) gPlayerPos->z; + // bVar1 = FUN_overlay_d_0__02083780(&local_1c8); // MapManager method? + if (bVar1) { + iVar2 = this->func_ov00_020847f0(); + } + } + puVar9 = local_1bc; + iVar3 = 0x1b; + // puVar8 = (unk32 *) PTR_DWORD_overlay_d_0__020d88f0_overlay_d_0__020847dc; + do { + uVar4 = *puVar8; + uVar5 = puVar8[1]; + uVar6 = puVar8[2]; + uVar7 = puVar8[3]; + puVar8 = puVar8 + 4; + *puVar9 = uVar4; + puVar9[1] = uVar5; + puVar9[2] = uVar6; + puVar9[3] = uVar7; + puVar9 = puVar9 + 4; + iVar3 = iVar3 + -1; + } while (iVar3 != 0); + return local_1bc[iVar2]; +} + +unk32 MapManager::func_ov00_020847e0() { + return *(s32 *) ((s32) this->mMap->mUnk_144 + 0xc); +} + +unk8 MapManager::func_ov00_020847f0() { + s32 iVar1; + unk32 in_r1; + + iVar1 = this->mMap->FindTrigger(in_r1); + if (iVar1 == 0) { + // this->func_ov00_02084700(?); + return; + } + if ((*(int *) (iVar1 + 0xc) != -1) && (*(int *) (iVar1 + 0xc) < 0x6c)) { + return; + } + // this->func_ov00_02084700(?); +} + +bool MapManager::func_ov00_02084838() { + unk32 uVar1 = this->GetMapData_Unk_38(); + switch (uVar1) { + case 0: return false; + case 1: break; + case 2: break; + case 3: break; + case 4: break; + case 5: break; + case 6: return false; + case 7: return false; + case 8: return false; + case 9: return false; + case 10: break; + case 0xb: break; + case 0xc: break; + case 0xd: return false; + case 0xe: return false; + case 0xf: return false; + case 0x10: return false; + case 0x11: break; + case 0x12: return false; + case 0x13: break; + case 0x14: break; + case 0x15: break; + case 0x16: break; + default: return false; + } + return true; +} + +bool MapManager::func_ov00_020848b8() { + unk32 uVar1 = this->func_ov00_020846a4(); + switch (uVar1) { + case 0: break; + case 1: break; + case 2: break; + case 3: break; + case 4: break; + case 5: break; + case 6: return true; + case 7: break; + case 8: break; + case 9: break; + case 10: break; + case 0xb: break; + case 0xc: return true; + case 0xd: return true; + case 0xe: break; + case 0xf: return true; + case 0x10: break; + case 0x11: return true; + } + return false; +} + +void MapManager::func_ov00_02084924(u32 param_2) { + this->mMap->func_ov00_0208008c(param_2); +} + +bool MapManager::func_ov00_02084934(s32 *param_2) { + int iVar2; + int iVar3; + int iVar4; + Vec3p local_20; + + iVar2 = this->GetMapCenterZ(); + iVar3 = param_2[2]; + iVar4 = param_2[1]; + local_20.x = this->GetMapCenterX(); + local_20.x = *param_2 - local_20.x; + local_20.y = iVar4; + local_20.z = iVar3 - iVar2; + return this->mMap->IsInBounds(&local_20); +} + +u8 MapManager::GetMapData_Unk_06() { + return this->mMap->mUnk_006; +} + +u8 MapManager::GetMapData_Unk_07() { + return this->mMap->mUnk_007; +} + unk8 MapManager::func_ov00_0208499c() {} unk8 MapManager::func_ov00_020849c0() {} unk8 MapManager::func_ov00_020849dc() {} From b375db94e8ba9c9bb76a6c39cc7e4b7e9622199c Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Thu, 16 Jan 2025 16:57:04 +0100 Subject: [PATCH 18/62] Decompile MapManager::func_ov00_0208499c Decompile MapManager::func_ov00_020849c0 Decompile MapManager::func_ov00_020849dc Decompile MapManager::func_ov00_020849f8 (59%) Decompile MapManager::func_ov00_02084a50 Decompile MapManager::func_ov00_02084ac4 (52%) Decompile MapManager::SetNumKeys Decompile MapManager::GetNumKeys Decompile MapManager::SetBlueWarpOpen Decompile MapManager::GetBlueWarpOpen Decompile MapManager::func_ov00_02084be0 (96%) Decompile MapManager::SetMapDataFlag1 Decompile MapManager::GetMapDataFlag1 Decompile MapManager::func_ov00_02084c7c Decompile MapManager::func_ov00_02084c94 (50%) Decompile MapManager::func_ov00_02084cb0 Decompile MapManager::func_ov00_02084cc8 (50%) Decompile MapManager::func_ov00_02084ce4 Decompile MapManager::func_ov00_02084cfc (50%) Decompile MapManager::GetMapData_Unk_09 Decompile MapManager::func_ov00_0208583c (3%) Decompile and comment out rest of functions --- config/eur/arm9/overlays/ov000/symbols.txt | 14 +- config/usa/arm9/overlays/ov000/symbols.txt | 14 +- include/Map/MapManager.hpp | 38 +- src/00_Core/Map/MapManager.cpp | 1597 +++++++++++++++++++- 4 files changed, 1592 insertions(+), 71 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index f2f7de0e..398a48be 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -341,7 +341,7 @@ _ZN7MapBase8vfunc_58Ev kind:function(arm,size=0x8) addr:0x207e498 _ZN7MapBase8vfunc_5cEv kind:function(arm,size=0x8) addr:0x207e4a0 _ZN7MapBase8vfunc_60Ev kind:function(arm,size=0x8) addr:0x207e4a8 _ZN7MapBase8vfunc_64Ev kind:function(arm,size=0x8) addr:0x207e4b0 -_ZN7MapBase8vfunc_68Eii kind:function(arm,size=0x488) addr:0x207e4b8 +_ZN7MapBase8vfunc_68Ev kind:function(arm,size=0x488) addr:0x207e4b8 _ZN7MapBase18func_ov00_0207e940EPc kind:function(arm,size=0x28) addr:0x207e940 _ZN7MapBase18func_ov00_0207e968Ev kind:function(arm,size=0x4) addr:0x207e968 _ZN7MapBase18func_ov00_0207e96cEv kind:function(arm,size=0x4) addr:0x207e96c @@ -653,18 +653,18 @@ _ZN10MapManager17GetMapData_Unk_07Ev kind:function(arm,size=0xc) addr:0x2084990 _ZN10MapManager18func_ov00_0208499cEv kind:function(arm,size=0x24) addr:0x208499c _ZN10MapManager18func_ov00_020849c0Ev kind:function(arm,size=0x1c) addr:0x20849c0 _ZN10MapManager18func_ov00_020849dcEv kind:function(arm,size=0x1c) addr:0x20849dc -_ZN10MapManager18func_ov00_020849f8Ei kind:function(arm,size=0x58) addr:0x20849f8 +_ZN10MapManager18func_ov00_020849f8Ev kind:function(arm,size=0x58) addr:0x20849f8 _ZN10MapManager18func_ov00_02084a50Ev kind:function(arm,size=0xc) addr:0x2084a50 _ZN10MapManager8SpawnNPCEP5Vec3pii kind:function(arm,size=0x68) addr:0x2084a5c _ZN10MapManager18func_ov00_02084ac4Ej kind:function(arm,size=0x44) addr:0x2084ac4 _ZN10MapManager10SetNumKeysEi kind:function(arm,size=0xc) addr:0x2084b08 _ZN10MapManager10GetNumKeysEv kind:function(arm,size=0xc) addr:0x2084b14 -_ZN10MapManager21SetCourseData_Unk_25cEc kind:function(arm,size=0xc) addr:0x2084b20 -_ZN10MapManager21GetCourseData_Unk_25dEv kind:function(arm,size=0xc) addr:0x2084b2c +_ZN10MapManager15SetBlueWarpOpenEb kind:function(arm,size=0xc) addr:0x2084b20 +_ZN10MapManager15GetBlueWarpOpenEv kind:function(arm,size=0xc) addr:0x2084b2c _ZN10MapManager18func_ov00_02084b38Eiii kind:function(arm,size=0xa8) addr:0x2084b38 _ZN10MapManager18func_ov00_02084be0Eii kind:function(arm,size=0x7c) addr:0x2084be0 -_ZN10MapManager18func_ov00_02084c5cEii kind:function(arm,size=0x10) addr:0x2084c5c -_ZN10MapManager18func_ov00_02084c6cEi kind:function(arm,size=0x10) addr:0x2084c6c +_ZN10MapManager15SetMapDataFlag1Eib kind:function(arm,size=0x10) addr:0x2084c5c +_ZN10MapManager15GetMapDataFlag1Ei kind:function(arm,size=0x10) addr:0x2084c6c _ZN10MapManager18func_ov00_02084c7cEi kind:function(arm,size=0x18) addr:0x2084c7c _ZN10MapManager18func_ov00_02084c94Ei kind:function(arm,size=0x1c) addr:0x2084c94 _ZN10MapManager18func_ov00_02084cb0Ei kind:function(arm,size=0x18) addr:0x2084cb0 @@ -679,7 +679,7 @@ _ZN10MapManager18func_ov00_02085108EPi kind:function(arm,size=0x174) addr:0x2085 _ZN10MapManager18func_ov00_0208527cEv kind:function(arm,size=0x180) addr:0x208527c _ZN10MapManager18func_ov00_020853fcEv kind:function(arm,size=0x198) addr:0x20853fc _ZN10MapManager18func_ov00_02085594Ev kind:function(arm,size=0x2a8) addr:0x2085594 -_ZN10MapManager18func_ov00_0208583cEiP5Vec3pi kind:function(arm,size=0x74) addr:0x208583c +_ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) addr:0x208583c _ZN10MapManager18func_ov00_020858b0Ev kind:function(arm,size=0x184) addr:0x20858b0 _ZN10MapManager18func_ov00_02085a34Eii kind:function(arm,size=0x22c) addr:0x2085a34 _ZN10MapManager18func_ov00_02085c60Eiiii kind:function(arm,size=0x3e4) addr:0x2085c60 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 68f84fbf..eb21ced8 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -341,7 +341,7 @@ _ZN7MapBase8vfunc_58Ev kind:function(arm,size=0x8) addr:0x207e438 _ZN7MapBase8vfunc_5cEv kind:function(arm,size=0x8) addr:0x207e440 _ZN7MapBase8vfunc_60Ev kind:function(arm,size=0x8) addr:0x207e448 _ZN7MapBase8vfunc_64Ev kind:function(arm,size=0x8) addr:0x207e450 -_ZN7MapBase8vfunc_68Eii kind:function(arm,size=0x488) addr:0x207e458 +_ZN7MapBase8vfunc_68Ev kind:function(arm,size=0x488) addr:0x207e458 _ZN7MapBase18func_ov00_0207e940EPc kind:function(arm,size=0x28) addr:0x207e8e0 _ZN7MapBase18func_ov00_0207e968Ev kind:function(arm,size=0x4) addr:0x207e908 _ZN7MapBase18func_ov00_0207e96cEv kind:function(arm,size=0x4) addr:0x207e90c @@ -653,18 +653,18 @@ _ZN10MapManager17GetMapData_Unk_07Ev kind:function(arm,size=0xc) addr:0x2084930 _ZN10MapManager18func_ov00_0208499cEv kind:function(arm,size=0x24) addr:0x208493c _ZN10MapManager18func_ov00_020849c0Ev kind:function(arm,size=0x1c) addr:0x2084960 _ZN10MapManager18func_ov00_020849dcEv kind:function(arm,size=0x1c) addr:0x208497c -_ZN10MapManager18func_ov00_020849f8Ei kind:function(arm,size=0x58) addr:0x2084998 +_ZN10MapManager18func_ov00_020849f8Ev kind:function(arm,size=0x58) addr:0x2084998 _ZN10MapManager18func_ov00_02084a50Ev kind:function(arm,size=0xc) addr:0x20849f0 _ZN10MapManager8SpawnNPCEP5Vec3pii kind:function(arm,size=0x68) addr:0x20849fc _ZN10MapManager18func_ov00_02084ac4Ej kind:function(arm,size=0x44) addr:0x2084a64 _ZN10MapManager10SetNumKeysEi kind:function(arm,size=0xc) addr:0x2084aa8 _ZN10MapManager10GetNumKeysEv kind:function(arm,size=0xc) addr:0x2084ab4 -_ZN10MapManager21SetCourseData_Unk_25cEc kind:function(arm,size=0xc) addr:0x2084ac0 -_ZN10MapManager21GetCourseData_Unk_25dEv kind:function(arm,size=0xc) addr:0x2084acc +_ZN10MapManager15SetBlueWarpOpenEb kind:function(arm,size=0xc) addr:0x2084ac0 +_ZN10MapManager15GetBlueWarpOpenEv kind:function(arm,size=0xc) addr:0x2084acc _ZN10MapManager18func_ov00_02084b38Eiii kind:function(arm,size=0xa8) addr:0x2084ad8 _ZN10MapManager18func_ov00_02084be0Eii kind:function(arm,size=0x7c) addr:0x2084b80 -_ZN10MapManager18func_ov00_02084c5cEii kind:function(arm,size=0x10) addr:0x2084bfc -_ZN10MapManager18func_ov00_02084c6cEi kind:function(arm,size=0x10) addr:0x2084c0c +_ZN10MapManager15SetMapDataFlag1Eib kind:function(arm,size=0x10) addr:0x2084bfc +_ZN10MapManager15GetMapDataFlag1Ei kind:function(arm,size=0x10) addr:0x2084c0c _ZN10MapManager18func_ov00_02084c7cEi kind:function(arm,size=0x18) addr:0x2084c1c _ZN10MapManager18func_ov00_02084c94Ei kind:function(arm,size=0x1c) addr:0x2084c34 _ZN10MapManager18func_ov00_02084cb0Ei kind:function(arm,size=0x18) addr:0x2084c50 @@ -679,7 +679,7 @@ _ZN10MapManager18func_ov00_02085108EPi kind:function(arm,size=0x174) addr:0x2085 _ZN10MapManager18func_ov00_0208527cEv kind:function(arm,size=0x180) addr:0x208521c _ZN10MapManager18func_ov00_020853fcEv kind:function(arm,size=0x198) addr:0x208539c _ZN10MapManager18func_ov00_02085594Ev kind:function(arm,size=0x2a8) addr:0x2085534 -_ZN10MapManager18func_ov00_0208583cEiP5Vec3pi kind:function(arm,size=0x74) addr:0x20857dc +_ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) addr:0x20857dc _ZN10MapManager18func_ov00_020858b0Ev kind:function(arm,size=0x184) addr:0x2085850 _ZN10MapManager18func_ov00_02085a34Eii kind:function(arm,size=0x22c) addr:0x20859d4 _ZN10MapManager18func_ov00_02085c60Eiiii kind:function(arm,size=0x3e4) addr:0x2085c00 diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index b9c7ae10..ac0168eb 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -202,28 +202,28 @@ public: bool func_ov00_02084934(s32 *param_2); u8 GetMapData_Unk_06(); u8 GetMapData_Unk_07(); - unk8 func_ov00_0208499c(); - unk8 func_ov00_020849c0(); - unk8 func_ov00_020849dc(); - static bool func_ov00_020849f8(unk32 param_1); - unk8 func_ov00_02084a50(); + bool func_ov00_0208499c(); + bool func_ov00_020849c0(); + bool func_ov00_020849dc(); + bool func_ov00_020849f8(); + u8 func_ov00_02084a50(); void SpawnNPC(Vec3p *param_2, unk32 param_3, unk32 param_4); bool func_ov00_02084ac4(u32 actorId); - unk8 SetNumKeys(unk32 keys); - unk8 GetNumKeys(); - unk8 SetCourseData_Unk_25c(unk8 param_2); - unk8 GetCourseData_Unk_25d(); + void SetNumKeys(unk32 keys); + unk32 GetNumKeys(); + void SetBlueWarpOpen(bool state); + bool GetBlueWarpOpen(); unk8 func_ov00_02084b38(unk32 param_2, unk32 param_3, unk32 param_4); bool func_ov00_02084be0(unk32 param_2, unk32 param_3); - void func_ov00_02084c5c(unk32 param_2, unk32 param_3); - bool func_ov00_02084c6c(unk32 param_2); - unk8 func_ov00_02084c7c(unk32 param_2); - unk8 func_ov00_02084c94(unk32 param_2); - unk8 func_ov00_02084cb0(unk32 param_2); - unk8 func_ov00_02084cc8(unk32 param_2); - unk8 func_ov00_02084ce4(unk32 param_2); - unk8 func_ov00_02084cfc(unk32 param_2); - unk8 GetMapData_Unk_09(); + void SetMapDataFlag1(unk32 param_2, bool param_3); + bool GetMapDataFlag1(unk32 param_2); + void func_ov00_02084c7c(unk32 param_2); + bool func_ov00_02084c94(unk32 param_2); + void func_ov00_02084cb0(unk32 param_2); + bool func_ov00_02084cc8(unk32 param_2); + void func_ov00_02084ce4(unk32 param_2); + bool func_ov00_02084cfc(unk32 param_2); + u8 GetMapData_Unk_09(); unk8 func_ov00_02084d24(unk8 param_2, unk8 param_3, unk32 param_4); s32 func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4); unk8 func_ov00_02084ebc(unk32 param_2); @@ -231,7 +231,7 @@ public: static unk8 func_ov00_0208527c(); static unk8 func_ov00_020853fc(); static unk8 func_ov00_02085594(); - static void func_ov00_0208583c(unk32 param_1, Vec3p *param_2, unk32 param_3); + static void func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3); static unk8 func_ov00_020858b0(); s32 func_ov00_02085a34(unk32 param_2, unk32 param_3); unk8 func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 5d738880..683c37a3 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -11,7 +11,93 @@ ARM void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_ 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_0208210c(unk32 param_2, unk32 param_3) { + /* undefined *puVar1; + undefined uVar2; + undefined4 uVar3; + int iVar4; + undefined4 local_40; + undefined4 local_3c; + undefined4 local_38; + undefined4 local_34; + undefined2 local_30; + undefined local_2e; + undefined local_2d; + undefined local_2c; + undefined local_2b; + undefined4 local_28; + undefined4 local_24; + undefined4 local_20; + undefined4 local_1c; + undefined2 local_18; + undefined local_16; + undefined local_15; + undefined local_14; + undefined local_13; + + local_28 = 0x47; + local_24 = 0; + local_20 = 0; + local_1c = 0xfffffffe; + local_18 = 0; + local_16 = 0xff; + local_15 = 0; + local_14 = 0; + local_13 = 0; + if (param_2 == 0) { + FUN_overlay_d_0__02082348(param_1, &local_28); + uVar3 = FUN_overlay_d_0__020a5e9c(&local_28); + *param_3 = uVar3; + *(undefined *) (param_3 + 1) = local_16; + uVar2 = local_15; + } else { + *param_3 = 0xb; + *(undefined *) (param_3 + 1) = 2; + uVar2 = 4; + } + *(undefined *) ((int) param_3 + 5) = uVar2; + uVar3 = FUN_overlay_d_0__020a5e9c(*(int *) (*(int *) PTR_PTR_overlay_d_0__02082300 + 0x28) + 0x1c); + puVar1 = PTR_PTR_overlay_d_0__02082300; + param_3[2] = uVar3; + *(undefined *) (param_3 + 4) = *(undefined *) (*(int *) (*(int *) puVar1 + 0x28) + 0x2e); + *(undefined2 *) (param_3 + 5) = *(undefined2 *) (*(int *) (*(int *) puVar1 + 0x28) + 0x36); + iVar4 = *(int *) (*(int *) puVar1 + 0x28); + param_3[6] = *(undefined4 *) (iVar4 + 0x38); + param_3[7] = *(undefined4 *) (iVar4 + 0x3c); + param_3[8] = *(undefined4 *) (iVar4 + 0x40); + uVar3 = FUN_overlay_d_0__020a5e9c(*(int *) (*(int *) puVar1 + 0x28) + 0x44); + param_3[3] = uVar3; + puVar1 = PTR_PTR_overlay_d_0__02082300; + *(undefined *) ((int) param_3 + 0x11) = *(undefined *) (*(int *) (*(int *) PTR_PTR_overlay_d_0__02082300 + 0x28) + 0x56); + iVar4 = *(int *) (*(int *) puVar1 + 0x28); + param_3[9] = *(undefined4 *) (iVar4 + 0x5c); + param_3[10] = *(undefined4 *) (iVar4 + 0x60); + param_3[0xb] = *(undefined4 *) (iVar4 + 100); + *(undefined2 *) ((int) param_3 + 0x16) = *(undefined2 *) (*(int *) (*(int *) puVar1 + 0x28) + 0x68); + iVar4 = *(int *) (*(int *) puVar1 + 0x28); + local_40 = *(undefined4 *) (iVar4 + 0x70); + local_3c = *(undefined4 *) (iVar4 + 0x74); + local_38 = *(undefined4 *) (iVar4 + 0x78); + local_34 = *(undefined4 *) (iVar4 + 0x7c); + local_30 = *(undefined2 *) (iVar4 + 0x80); + local_2e = *(undefined *) (iVar4 + 0x82); + local_2d = *(undefined *) (iVar4 + 0x83); + local_2c = *(undefined *) (iVar4 + 0x84); + local_2b = *(undefined *) (iVar4 + 0x85); + uVar3 = FUN_overlay_d_0__020a5e9c(&local_40); + param_3[0x70] = uVar3; + puVar1 = PTR_DWORD_overlay_d_0__02082304; + *(undefined *) ((int) param_3 + 0x1be) = local_2e; + *(undefined *) ((int) param_3 + 0x1bf) = local_2d; + FUN_overlay_d_0__02096324(*(undefined4 *) puVar1, param_3); + FUN_overlay_d_0__0209d6e8(*(undefined4 *) PTR_DWORD_overlay_d_0__02082308, param_3); + if (param_1->mCourse->mType != 3) { + *(undefined1 *) ((int) param_3 + 7) = param_1->field2_0x8; + *(undefined1 *) (param_3 + 0x6f) = param_1->field3_0x9; + return; + } + return; */ +} ARM void MapManager::func_ov00_0208230c(s32 *param_2) { *param_2 = this->mCourse->mIndex; @@ -348,7 +434,50 @@ ARM void MapManager::func_ov00_02082af4() { this->mUnk_0b = 0; } -bool MapManager::func_ov00_02082b3c(s32 param_2) {} +bool MapManager::func_ov00_02082b3c(s32 param_2) { + /* byte bVar1; + undefined *puVar2; + ushort uVar3; + uint uVar4; + undefined4 uVar5; + uint in_r3; + ActorManager *pAVar6; + undefined4 local_18; + + local_18 = in_r3; + Course::FindMapGridPos((Vec2b *) &local_18, param_1->mCourse, (uint) * (byte *) (param_2 + 0x12)); + uVar4 = GetCourseData_Unk_1c(param_1); + if (((((local_18 & 0xff) == uVar4) && (uVar4 = GetCourseData_Unk_1d(param_1), (local_18 >> 8 & 0xff) == uVar4)) && + ((*(int *) (param_2 + 8) != 1 || (*(int *) (*(int *) PTR_PTR_overlay_d_0__02082ce0 + 0x14) != 1)))) && + (*(char *) (param_2 + 0x15) == '\0')) + { + AdventureFlags::FUN_overlay_d_0__020976c8(*(AdventureFlags **) PTR_gAdventureFlags_overlay_d_0__02082ce4); + puVar2 = PTR_gPlayer_overlay_d_0__02082d00; + param_1->field6_0xc = *(undefined *) (param_2 + 0x13); + (**(code **) (**(int **) puVar2 + 0x38))(*(int **) puVar2, *(undefined *) (param_2 + 0x13), 0); + UnkStruct_027e0c68::FUN_overlay_d_4__02106db8((UnkStruct_027e0c68 *) PTR_DWORD_overlay_d_0__02082d04); + (**(code **) (param_1->mMap->vtable + 0x18))(); + } else { + AdventureFlags::FUN_overlay_d_0__020976c8(*(AdventureFlags **) PTR_gAdventureFlags_overlay_d_0__02082ce4); + FUN_overlay_d_0__0208b13c(*(undefined4 *) PTR_DWORD_overlay_d_0__02082ce8); + pAVar6 = *PTR_gActorManager_overlay_d_0__02082cec; + uVar5 = FUN_overlay_d_0__02082d08(param_1); + FUN_overlay_d_4__02105608(pAVar6, local_18 & 0xff, local_18 >> 8 & 0xff, uVar5); + (**(code **) (param_1->mMap->vtable + 0x2c))(); + FUN_overlay_d_4__02102b28(*(undefined4 *) PTR_DWORD_overlay_d_0__02082cf0); + FUN_overlay_d_4__02102770(*(undefined4 *) PTR_DWORD_overlay_d_0__02082cf4); + FUN_overlay_d_4__02102e3c(*(undefined4 *) PTR_DWORD_overlay_d_0__02082cf8); + bVar1 = *(byte *) (param_2 + 0x12); + uVar3 = Course::FindCurrentMapData_Unk_04(param_1->mCourse); + uVar4 = Course::FindMapData_Unk_04(param_1->mCourse, (uint) bVar1); + (param_1->mCourse->mCurrMapPos).x = (byte) local_18; + (param_1->mCourse->mCurrMapPos).y = local_18._1_1_; + FUN_overlay_d_4__021024c4(param_1, param_2, uVar3 != uVar4, 0); + FUN_overlay_d_4__02105578(*PTR_gActorManager_overlay_d_0__02082cec, (uint) * (byte *) (param_2 + 0x12)); + UnkStruct_027e0103c::thunk_FUN_overlay_d_0__020cf7e8(*PTR_PTR_overlay_d_0__02082cfc); + } + return true; */ +} ARM u8 MapManager::func_ov00_02082d08() { Course *course = this->mCourse; @@ -1597,41 +1726,1433 @@ u8 MapManager::GetMapData_Unk_07() { return this->mMap->mUnk_007; } -unk8 MapManager::func_ov00_0208499c() {} -unk8 MapManager::func_ov00_020849c0() {} -unk8 MapManager::func_ov00_020849dc() {} -bool MapManager::func_ov00_020849f8(unk32 param_1) {} -unk8 MapManager::func_ov00_02084a50() {} -void MapManager::SpawnNPC(Vec3p *param_2, unk32 param_3, unk32 param_4) {} -bool MapManager::func_ov00_02084ac4(u32 actorId) {} -unk8 MapManager::SetNumKeys(unk32 keys) {} -unk8 MapManager::GetNumKeys() {} -unk8 MapManager::SetCourseData_Unk_25c(unk8 param_2) {} -unk8 MapManager::GetCourseData_Unk_25d() {} -unk8 MapManager::func_ov00_02084b38(unk32 param_2, unk32 param_3, unk32 param_4) {} -bool MapManager::func_ov00_02084be0(unk32 param_2, unk32 param_3) {} -void MapManager::func_ov00_02084c5c(unk32 param_2, unk32 param_3) {} -bool MapManager::func_ov00_02084c6c(unk32 param_2) {} -unk8 MapManager::func_ov00_02084c7c(unk32 param_2) {} -unk8 MapManager::func_ov00_02084c94(unk32 param_2) {} -unk8 MapManager::func_ov00_02084cb0(unk32 param_2) {} -unk8 MapManager::func_ov00_02084cc8(unk32 param_2) {} -unk8 MapManager::func_ov00_02084ce4(unk32 param_2) {} -unk8 MapManager::func_ov00_02084cfc(unk32 param_2) {} -unk8 MapManager::GetMapData_Unk_09() {} -unk8 MapManager::func_ov00_02084d24(unk8 param_2, unk8 param_3, unk32 param_4) {} -s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4) {} -unk8 MapManager::func_ov00_02084ebc(unk32 param_2) {} -s32 MapManager::func_ov00_02085108(s32 *param_2) {} -unk8 MapManager::func_ov00_0208527c() {} -unk8 MapManager::func_ov00_020853fc() {} -unk8 MapManager::func_ov00_02085594() {} -void MapManager::func_ov00_0208583c(unk32 param_1, Vec3p *param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_020858b0() {} -s32 MapManager::func_ov00_02085a34(unk32 param_2, unk32 param_3) {} -unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5) {} -unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) {} +bool MapManager::func_ov00_0208499c() { + s32 iVar2 = this->func_ov00_020849c0(); + if (iVar2 == 0) { + return this->mCourse->IsCurrentMapInMainGrid(); + } + return false; +} + +bool MapManager::func_ov00_020849c0() { + return this->mCourse->mUnk_008 == -2; +} + +bool MapManager::func_ov00_020849dc() { + return this->mCourse->mUnk_008 == -3; +} + +bool MapManager::func_ov00_020849f8() { + s32 iVar1; // = FUN_overlay_d_0__020a5e9c(*(s32 *) PTR_PTR_overlay_d_0__02084a4c + 0xc); + if (iVar1 == 5) { + return true; + } + iVar1 = this->GetMapData_Unk_06(); + if ((iVar1 != 0) && (iVar1 = this->func_ov00_020849c0(), iVar1 == 0)) { + return true; + } + return false; +} + +u8 MapManager::func_ov00_02084a50() { + return this->mMap->mUnk_011; +} + +void MapManager::SpawnNPC(Vec3p *param_2, unk32 param_3, unk32 param_4) { + // astruct_16 aStack_3c; + // Actor_UnkStruct_020((Actor_UnkStruct_020 *) &aStack_3c); + // aStack_3c.field24_0x1c = 0xffffffff; + // aStack_3c.field25_0x20 = 0xffffffff; + // astruct_16::astruct_16(&aStack_3c); + // aStack_3c.field26_0x24 = param_3; + // aStack_3c.field27_0x28 = param_4; + // spawnNpc(*(undefined4 *) PTR_DWORD_overlay_d_0__02084abc, s_CIVE_overlay_d_0__02084ac0, param_2, &aStack_3c, + // (ActorRef *) 0x0); +} + +bool MapManager::func_ov00_02084ac4(u32 actorId) { + Actor *iVar1; + bool bVar1; + + iVar1 = gActorManager->FindActorById(actorId); + if (iVar1 == (Actor *) 0x0) { + return false; + } + bVar1 = (char *) iVar1->mType == "CIVE"; // s_CIVE_overlay_d_0__02084b04 + if (bVar1) { + iVar1->mAlive = false; + } + return bVar1; +} + +void MapManager::SetNumKeys(unk32 keys) { + this->mCourse->mNumKeys = keys; +} + +unk32 MapManager::GetNumKeys() { + return this->mCourse->mNumKeys; +} + +void MapManager::SetBlueWarpOpen(bool state) { + this->mCourse->mBlueWarpOpen = state; +} + +bool MapManager::GetBlueWarpOpen() { + return this->mCourse->mBlueWarpOpen; +} + +unk8 MapManager::func_ov00_02084b38(unk32 param_2, unk32 param_3, unk32 param_4) { + MapBase *pMVar1; + bool value; + + if (param_2 != 0) { + // value = SUB41(param_4, 0); // What is SUB41 and where is it defined? + switch (param_3) { + case 0: goto LAB_overlay_d_0__02084b60; + case 1: this->mCourse->SetMapDataFlag0(param_2, value); return; + case 2: this->mCourse->SetFlag0(param_2, value); return; + case 3: this->mCourse->SetFlag1(param_2, value); return; + default: return; + } + } + return; +LAB_overlay_d_0__02084b60: + pMVar1 = this->mMap; + if (param_4 == 0) { + pMVar1->mUnk_180[param_2 >> 5].mUnk_0 = pMVar1->mUnk_180[param_2 >> 5].mUnk_0 & ~(1 << (param_2 & 0x1f)); + return; + } + pMVar1->mUnk_180[param_2 >> 5].mUnk_0 = pMVar1->mUnk_180[param_2 >> 5].mUnk_0 | 1 << (param_2 & 0x1f); + return; +} + +bool MapManager::func_ov00_02084be0(unk32 param_2, unk32 param_3) { + bool bVar1; + + if (param_2 == 0) { + return false; + } + switch (param_3) { + case 0: return (this->mMap->mUnk_180[param_2 >> 5].mUnk_0 & 1 << (param_2 & 0x1f)) != 0; + case 1: bVar1 = this->mCourse->GetMapDataFlag0(param_2); return bVar1; + case 2: bVar1 = this->mCourse->GetFlag0(param_2); return bVar1; + case 3: bVar1 = this->mCourse->SetFlag1(param_2); return bVar1; + default: return false; + } +} + +void MapManager::SetMapDataFlag1(unk32 param_2, bool param_3) { + this->mCourse->SetMapDataFlag1(param_2, param_3); +} + +bool MapManager::GetMapDataFlag1(unk32 param_2) { + return this->mCourse->GetMapDataFlag1(param_2); +} + +void MapManager::func_ov00_02084c7c(unk32 param_2) { + bool in_r2; // not defined. + + if (param_2 < 0) { + return; + } + this->mCourse->SetMapDataFlag2(param_2, in_r2); +} + +bool MapManager::func_ov00_02084c94(unk32 param_2) { + bool bVar1; + + if (-1 < param_2) { + bVar1 = this->mCourse->GetMapDataFlag2(param_2); + return bVar1; + } + return false; +} + +void MapManager::func_ov00_02084cb0(unk32 param_2) { + bool in_r2; // not defined. + + if (param_2 < 0) { + return; + } + this->mCourse->SetMapDataFlag3(param_2, in_r2); +} + +bool MapManager::func_ov00_02084cc8(unk32 param_2) { + bool bVar1; + + if (-1 < param_2) { + bVar1 = this->mCourse->GetMapDataFlag3(param_2); + return bVar1; + } + return false; +} + +void MapManager::func_ov00_02084ce4(unk32 param_2) { + unk32 in_r2; // not defined. + + if (param_2 < 0) { + return; + } + this->mCourse->SetMapDataFlag4(param_2, in_r2); +} + +bool MapManager::func_ov00_02084cfc(unk32 param_2) { + bool bVar1; + + if (-1 < param_2) { + bVar1 = this->mCourse->GetMapDataFlag4(param_2); + return bVar1; + } + return false; +} + +u8 MapManager::GetMapData_Unk_09() { + return this->mMap->mUnk_009; +} + +unk8 MapManager::func_ov00_02084d24(unk8 param_2, unk8 param_3, unk32 param_4) { + unk8 local_8; + unk8 local_7; + unk16 uStack_6; + + uStack_6 = (unk16) ((u32) param_4 >> 0x10); + // _local_8 = CONCAT11(param_3, param_2); // What is CONCAT11 ? + // this->mMap->vfunc_90(&local_8, param_4); // Missing parameter ? +} + +s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4) { + /* undefined *object; + undefined *dtor; + undefined *obj; + dword a; + int iVar1; + int aiStack_3c[4]; + Vec3p VStack_2c; + int iStack_20; + int iStack_1c; + int iStack_18; + Vec3p VStack_14; + + iVar1 = FUN_overlay_d_0__0208df78(*(undefined4 *) (*(int *) PTR_DWORD_overlay_d_0__02084ea0 + 4), param_2, param_3, + &VStack_14, &iStack_20); + object = PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8; + if (iVar1 == -1) { + return -1; + } + if ((*(uint *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) & 1) == 0) { + aiStack_3c[1] = 0; + aiStack_3c[3] = 0; + aiStack_3c[2] = 0x1000; + *(undefined4 *) PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8 = 0; + *(undefined4 *) (object + 4) = 0x1000; + *(undefined4 *) (object + 8) = 0; + obj = PTR_DestructorChain_overlay_d_0_bss__020ec9c8_overlay_d_0__02084eb4; + dtor = PTR_FUN_overlay_d_0__0207e968_overlay_d_0__02084eb0; + *(undefined4 *) (PTR_PTR_s_anc_overlay_d_0__020e24a0_overlay_d_0__020e24a4_overlay_d_0__02084eac + 0x78) = 0; + __register_global_object(object, dtor, (DestructorChain *) obj); + *(uint *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) = + *(uint *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) | 1; + } + VStack_2c.x = iStack_20; + VStack_2c.y = iStack_1c; + VStack_2c.z = iStack_18; + Vec3p::Sub(&VStack_2c, &VStack_14, &VStack_2c); + iVar1 = FUN_01ffe61c(PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8, &VStack_14, &VStack_2c, aiStack_3c); + if (iVar1 != 0) { + param_4->x = VStack_14.x; + param_4->y = VStack_14.y; + param_4->z = VStack_14.z; + Vec3p::Axpy(aiStack_3c[0], &VStack_2c, param_4, param_4); + a = DWORD_overlay_d_0__02084eb8; + if (aiStack_3c[0] < 0) { + param_4->x = VStack_14.x; + param_4->y = VStack_14.y; + param_4->z = VStack_14.z; + Vec3p::Axpy(a, &VStack_2c, param_4, param_4); + return 1; + } + return 0; + } + return -1; */ +} + +unk8 MapManager::func_ov00_02084ebc(unk32 param_2) { + /* int *piVar1; + int iVar2; + dword dVar3; + undefined auStack_18[4]; + uint uStack_14; + + FUN_overlay_d_0__02083a1c(auStack_18, param_1, param_2); + piVar1 = (int *) MapData_vfunc_78(param_1); + if (piVar1 != (int *) 0x0) { + iVar2 = (**(code **) (*piVar1 + 0x1c))(); + if (iVar2 < 0x39) { + if ((iVar2 < 0x38) && (iVar2 != 1)) { + return 0; + } + } else if (iVar2 < 0x5a) { + if (iVar2 != 0x59) { + return 0; + } + } else { + if (iVar2 != 0x61) { + return 0; + } + if (piVar1[2] == 2) { + return 0; + } + } + } + iVar2 = FUN_overlay_d_0__02083e70(param_1, auStack_18); + if (iVar2 != 0) { + return 0; + } + iVar2 = MapData_vfunc_54(param_1); + if (iVar2 < 0x47) { + if (0x45 < iVar2) { + return 0; + } + if (iVar2 < 0x2a) { + switch (iVar2) { + case 0: break; + case 1: return 0; + case 2: return 0; + case 3: return 0; + case 4: return 0; + case 5: return 0; + case 6: return 0; + case 7: break; + case 8: return 0; + case 9: return 0; + case 10: break; + case 0xb: break; + case 0xc: break; + case 0xd: break; + case 0xe: break; + case 0xf: break; + case 0x10: break; + case 0x11: break; + case 0x12: break; + case 0x13: break; + case 0x14: return 0; + case 0x15: break; + case 0x16: return 0; + case 0x17: return 0; + case 0x18: break; + case 0x19: return 0; + case 0x1a: break; + case 0x1b: break; + case 0x1c: break; + case 0x1d: return 0; + case 0x1e: return 0; + case 0x1f: return 0; + case 0x20: break; + case 0x21: break; + case 0x22: break; + case 0x23: break; + case 0x24: break; + case 0x25: break; + case 0x26: break; + case 0x27: return 0; + case 0x28: return 0; + case 0x29: return 0; + } + } else if (iVar2 == 0x37) { + return 0; + } + } else if (iVar2 < 0x49) { + if (0x47 < iVar2) { + return 0; + } + if (iVar2 == 0x47) { + return 0; + } + } else if (iVar2 == 0x50) { + return 0; + } + iVar2 = (**(code **) (param_1->mMap->vtable + 0x58))(param_1->mMap, auStack_18, 5); + if (iVar2 != 0) { + return 0; + } + dVar3 = MapData_vfunc_70(param_1); + if (dVar3 != DWORD_overlay_d_0__02085100) { + FUN_overlay_d_0__02093a1c(&uStack_14, *(undefined4 *) PTR_DWORD_overlay_d_0__02085104); + if ((uStack_14 >> 5 & 3) != 1) { + return 0; + } + return 1; + } + return 0; */ +} + +s32 MapManager::func_ov00_02085108(s32 *param_2) { + /* undefined *puVar1; + undefined4 uVar2; + int *piVar3; + int iVar4; + uint uVar5; + int iVar6; + int iVar7; + int iVar8; + uint local_44; + byte local_3a; + byte local_39; + byte local_38; + byte local_37; + int local_34; + int local_30; + int local_2c; + undefined4 local_28; + + uVar2 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__02085274); + FUN_overlay_d_0__02088130(&local_38, uVar2); + local_44 = (uint) local_38; + uVar2 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__02085274); + FUN_overlay_d_0__02088144(&local_3a, uVar2); + if (local_44 <= local_37) { + do { + puVar1 = PTR_gMapManager_overlay_d_0__02085278; + uVar5 = (uint) local_39; + if ((uint) local_3a <= (uint) local_39) { + do { + piVar3 = (int *) MapData_vfunc_78(*(MapManager **) puVar1); + if ((piVar3 != (int *) 0x0) && ((piVar3[1] & 4U) != 0)) { + iVar7 = piVar3[7]; + iVar6 = piVar3[6]; + iVar8 = piVar3[8]; + iVar4 = (**(code **) (*piVar3 + 0x60))(); + local_28 = (**(code **) (*piVar3 + 0x5c))(); + local_34 = iVar6; + local_30 = iVar7 + iVar4; + local_2c = iVar8; + iVar4 = FUN_0202b8e4(&local_34, 2); + if (iVar4 != 0) { + *param_2 = piVar3[6]; + param_2[1] = piVar3[7]; + param_2[2] = piVar3[8]; + return (int) *(char *) ((int) piVar3 + 0x12); + } + } + uVar5 = uVar5 - 1; + } while ((int) (uint) local_3a <= (int) uVar5); + } + local_44 = local_44 + 1; + } while ((int) local_44 <= (int) (uint) local_37); + } + return 0; */ +} + +unk8 MapManager::func_ov00_0208527c() { + /* uint uVar1; + undefined *puVar2; + undefined4 uVar3; + int iVar4; + int iVar5; + uint uVar6; + uint uVar7; + uint local_4c; + byte local_3e; + byte local_3d; + byte local_3c; + byte local_3b; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + + uVar3 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__020853f4); + FUN_overlay_d_0__02088130(&local_3c, uVar3); + uVar7 = (uint) local_3c; + uVar3 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__020853f4); + FUN_overlay_d_0__02088144(&local_3e, uVar3); + local_4c = (uint) local_3e; + uVar6 = (uint) local_3d; + iVar4 = Get_MapData_Unk28(param_1); + iVar5 = Get_MapData_Unk2a(param_1); + puVar2 = PTR_gMapManager_overlay_d_0__020853f8; + if (uVar7 == 0) { + uVar7 = 0; + } + if (iVar4 <= (int) (uint) local_3b) { + uVar7 = iVar4 - 1; + } + if (local_4c == 0) { + local_4c = 0; + } + if (iVar5 <= (int) uVar6) { + uVar6 = iVar5 - 1; + } + local_2c = 0; + local_38 = 0; + local_34 = 0; + local_30 = 0; + do { + uVar1 = local_4c; + if ((int) (uint) local_3b < (int) uVar7) { + return 0; + } + for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) { + iVar4 = MapData_vfunc_78(*(MapManager **) puVar2); + if (((iVar4 != 0) && ((*(uint *) (iVar4 + 4) & 4) != 0)) && + (iVar5 = FUN_overlay_d_0__0208b73c(iVar4, param_2), iVar5 != 0)) + { + *param_3 = *(undefined4 *) (iVar4 + 0x18); + param_3[1] = *(undefined4 *) (iVar4 + 0x1c); + param_3[2] = *(undefined4 *) (iVar4 + 0x20); + return (int) *(char *) (iVar4 + 0x12); + } + } + uVar7 = uVar7 + 1; + } while (true); */ +} + +unk8 MapManager::func_ov00_020853fc() { + /* uint uVar1; + undefined4 uVar2; + int iVar3; + int iVar4; + int iVar5; + uint uVar6; + int iVar7; + uint local_50; + uint local_48; + byte local_3e; + byte local_3d; + byte local_3c; + byte local_3b; + undefined4 local_38; + undefined4 local_34; + undefined4 local_30; + undefined4 local_2c; + + uVar2 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__0208558c); + FUN_overlay_d_0__02088130(&local_3c, uVar2); + local_48 = (uint) local_3c; + uVar2 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__0208558c); + FUN_overlay_d_0__02088144(&local_3e, uVar2); + local_50 = (uint) local_3e; + uVar6 = (uint) local_3d; + iVar3 = Get_MapData_Unk28(param_1); + iVar4 = Get_MapData_Unk2a(param_1); + iVar7 = 0; + local_2c = 0; + if (local_48 == 0) { + local_48 = 0; + } + local_38 = 0; + if (iVar3 <= (int) (uint) local_3b) { + local_48 = iVar3 - 1; + } + local_34 = 0; + if (local_50 == 0) { + local_50 = 0; + } + if (iVar4 <= (int) uVar6) { + uVar6 = iVar4 - 1; + } + local_30 = 0; + for (; uVar1 = local_50, (int) local_48 <= (int) (uint) local_3b; local_48 = local_48 + 1) { + for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) { + iVar3 = MapData_vfunc_78(*(MapManager **) PTR_gMapManager_overlay_d_0__02085590); + if ((((iVar3 != 0) && ((*(uint *) (iVar3 + 4) & 4) != 0)) && + (iVar4 = Vec3p::Distance((Vec3p *) (iVar3 + 0x18), param_2), iVar4 < *param_3)) && + (iVar5 = FUN_overlay_d_0__0208b7d0(iVar3, param_2), iVar5 != 0)) + { + *param_3 = iVar4; + iVar7 = iVar3; + } + } + } + return iVar7; */ +} + +unk8 MapManager::func_ov00_02085594() { + /* int *piVar1; + int iVar2; + dword dVar3; + undefined4 uVar4; + bool bVar5; + undefined4 uStack_2c; + undefined local_28; + undefined local_27; + uint uStack_24; + Vec3p VStack_20; + + FUN_overlay_d_0__02083a1c(&local_28, param_1, param_2); + piVar1 = (int *) MapData_vfunc_78(param_1); + bVar5 = true; + if (piVar1 != (int *) 0x0) { + param_2->x = piVar1[6]; + param_2->y = piVar1[7]; + param_2->z = piVar1[8]; + iVar2 = (**(code **) (*piVar1 + 0x1c))(); + if (iVar2 < 0x43) { + if (0x41 < iVar2) { + return 2; + } + if (iVar2 < 2) { + if (iVar2 != 1) { + return 0; + } + } else if (iVar2 != 0x38) { + return 0; + } + } else if (iVar2 < 0x5a) { + if (iVar2 != 0x59) { + return 0; + } + bVar5 = piVar1[2] == 4; + } else { + if (iVar2 != 0x61) { + return 0; + } + if (piVar1[2] == 2) { + return 0; + } + } + } + iVar2 = FUN_overlay_d_0__020840a0(param_1, local_28, local_27, param_4); + if (iVar2 < 0x47) { + if (0x45 < iVar2) { + return 0; + } + if (iVar2 < 0x2a) { + switch (iVar2) { + case 0: break; + case 1: return 0; + case 2: return 0; + case 3: return 0; + case 4: return 0; + case 5: return 0; + case 6: return 0; + case 7: break; + case 8: return 0; + case 9: return 0; + case 10: break; + case 0xb: break; + case 0xc: break; + case 0xd: break; + case 0xe: break; + case 0xf: break; + case 0x10: break; + case 0x11: break; + case 0x12: break; + case 0x13: break; + case 0x14: return 0; + case 0x15: break; + case 0x16: return 0; + case 0x17: return 0; + case 0x18: break; + case 0x19: return 0; + case 0x1a: break; + case 0x1b: break; + case 0x1c: break; + case 0x1d: return 0; + case 0x1e: return 0; + case 0x1f: return 0; + case 0x20: break; + case 0x21: break; + case 0x22: break; + case 0x23: break; + case 0x24: break; + case 0x25: break; + case 0x26: break; + case 0x27: return 0; + case 0x28: return 0; + case 0x29: return 0; + } + } else if (iVar2 == 0x37) { + return 0; + } + } else if (iVar2 < 0x49) { + if (0x47 < iVar2) { + return 0; + } + if (iVar2 == 0x47) { + return 0; + } + } else if (iVar2 == 0x50) { + return 0; + } + iVar2 = (**(code **) (param_1->mMap->vtable + 0x58))(param_1->mMap, &local_28, 5); + if (iVar2 != 0) { + return 0; + } + uStack_2c._0_2_ = CONCAT11(local_27, local_28); + FUN_overlay_d_0__02083c7c(param_1, &VStack_20, uStack_2c); + dVar3 = MapData_vfunc_70(param_1); + if (dVar3 != DWORD_overlay_d_0__02085834) { + FUN_overlay_d_0__02093a1c(&uStack_24, *(undefined4 *) PTR_DWORD_overlay_d_0__02085838); + if ((uStack_24 >> 5 & 3) != 1) { + return 0; + } + if (bVar5) { + uVar4 = 1; + } else { + uVar4 = 2; + } + return uVar4; + } + return 0; */ +} + +void MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3) { + s32 *piVar1; + unk8 auStack_10[4]; + + // param_1->func_ov00_02083a1c(auStack_10, param_1, param_2); // Should auStack_10 be pointer type or not ? + piVar1 = (s32 *) param_1->MapData_vfunc_78(); + if (piVar1 == (s32 *) 0x0) { + return; + } + // if (*(s32 *) PTR_UnkStruct_027e077c_overlay_d_0__020858ac == 1) { + // if (*(s32 *) (PTR_UnkStruct_027e077c_overlay_d_0__020858ac + 4) == 1) { + // (**(code **) (*piVar1 + 0x30))(piVar1, param_3); + // return; + // } + // return; + //} +} + +unk8 MapManager::func_ov00_020858b0() { + /* int iVar1; + int iVar2; + int iVar3; + int iVar4; + int *piVar5; + int iVar6; + int iVar7; + undefined4 local_38; + byte local_28; + byte local_27; + + if (param_3 == 1) { + FUN_overlay_d_0__02088000(*(undefined4 *) (*(int *) PTR_DWORD_overlay_d_0__02085a2c + 4), 7); + } else { + FUN_overlay_d_0__02088000(*(undefined4 *) (*(int *) PTR_DWORD_overlay_d_0__02085a2c + 4), 6); + } + iVar2 = Get_MapData_Unk28(param_1); + iVar3 = Get_MapData_Unk2a(param_1); + local_38 = 0xffffffff; + FUN_overlay_d_0__02083a1c(&local_28, param_1, param_2); + iVar6 = *(int *) (PTR_gPlayerPos_overlay_d_0__02085a30 + 4); + for (iVar7 = local_28 - 1; iVar7 <= (int) (local_28 + 1); iVar7 = iVar7 + 1) { + if ((-1 < iVar7) && (iVar1 = local_27 - 1, iVar7 < iVar2)) { + for (; iVar1 <= (int) (local_27 + 1); iVar1 = iVar1 + 1) { + if ((-1 < iVar1) && (iVar1 < iVar3)) { + iVar4 = MapData_vfunc_60(param_1); + iVar4 = iVar4 - iVar6; + if (iVar4 < 0) { + iVar4 = -iVar4; + } + if ((iVar4 < 0xce) && (piVar5 = (int *) MapData_vfunc_78(param_1), piVar5 != (int *) 0x0)) { + local_38 = (**(code **) (*piVar5 + 0x38))(piVar5, param_3); + } + } + } + } + } + return local_38; */ +} + +s32 MapManager::func_ov00_02085a34(unk32 param_2, unk32 param_3) { + /* int *piVar1; + int iVar2; + undefined2 *puVar3; + uint uVar4; + uint uVar5; + uint uVar6; + undefined uStack_2c; + undefined uStack_2b; + undefined auStack_2a[2]; + Vec2b aVStack_28[2]; + undefined2 auStack_24[4]; + undefined auStack_1c[4]; + undefined4 uStack_18; + undefined2 uStack_14; + undefined uStack_12; + + if (param_3 != 1) { + if (param_3 != 2 && param_3 != 3) { + return -1; + } + FUN_overlay_d_0__02083a1c(auStack_2a, param_1, param_2); + piVar1 = (int *) MapData_vfunc_78(param_1); + if (piVar1 == (int *) 0x0) { + return -1; + } + iVar2 = (**(code **) (*piVar1 + 0x1c))(); + if (iVar2 == 0x42) { + uStack_2b = *(undefined *) ((int) piVar1 + 0x15); + uStack_2c = *(undefined *) (piVar1 + 5); + MapBase::FUN_overlay_d_0__02080d08(param_1->mMap, &uStack_2c); + } + iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, param_3); + return iVar2; + } + FUN_overlay_d_0__02083a1c(aVStack_28, param_1, param_2); + iVar2 = FUN_overlay_d_0__02084ebc(param_1, param_2); + if (iVar2 == 0) { + return -1; + } + piVar1 = (int *) MapData_vfunc_78(param_1); + if (piVar1 != (int *) 0x0) { + iVar2 = (**(code **) (*piVar1 + 0x1c))(); + if (0x38 < iVar2) { + if (iVar2 < 0x5a) { + if (iVar2 == 0x59) { + LAB_overlay_d_0__02085afc: + iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, 1); + return iVar2; + } + } else if (iVar2 == 0x61) + goto LAB_overlay_d_0__02085afc; + return -1; + } + if ((iVar2 < 0x38) && (iVar2 != 1)) { + return -1; + } + piVar1[1] = piVar1[1] & 0xfffffffe; + FUN_overlay_d_0__020828f8(param_1, piVar1); + } + MapBase::FUN_overlay_d_0__02080b24(param_1->mMap, aVStack_28); + uStack_14 = 0xffff; + uStack_18 = 0; + uStack_12 = 1; + uVar6 = 0; + puVar3 = auStack_24; + uVar4 = 0; + do { + uVar5 = uVar4 + 1; + puVar3[uVar4] = 0; + uVar4 = uVar5; + } while (uVar5 < 4); + do { + *(undefined *) (puVar3 + 4) = 0; + uVar6 = uVar6 + 1; + *(undefined *) (puVar3 + 5) = 0; + puVar3 = (undefined2 *) ((int) puVar3 + 1); + } while (uVar6 < 2); + iVar2 = Map_vfunc_7c(param_1); + if (iVar2 == 0) { + return -1; + } + iVar2 = MapData_vfunc_78(param_1); + if ((iVar2 != 0) && (0 < *(short *) (iVar2 + 0xe))) { + return 1; + } + return 0; */ +} + +unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5) { + /* longlong lVar1; + undefined *puVar2; + dword dVar3; + bool bVar4; + bool bVar5; + int iVar6; + uint uVar7; + int iStack_10c; + int iStack_108; + int iStack_104; + int iStack_100; + Vec3p VStack_f0; + Vec3p VStack_e4; + Vec4p VStack_d8; + Vec3p VStack_c8; + Vec3p VStack_bc; + Vec3p VStack_b0; + Vec3p VStack_a4; + Vec3p VStack_98; + Vec3p aVStack_8c[3]; + undefined2 uStack_68; + undefined2 uStack_66; + undefined2 uStack_64; + undefined2 uStack_62; + undefined2 uStack_60; + undefined uStack_3e; + undefined uStack_3d; + undefined uStack_3c; + undefined uStack_3b; + undefined uStack_34; + undefined uStack_33; + undefined uStack_32; + undefined uStack_31; + undefined uStack_30; + undefined uStack_2f; + undefined4 uStack_2c; + undefined4 uStack_28; + + if (param_5 == 0) { + return 0; + } + FUN_overlay_d_0__020792a0(*(undefined4 *) PTR_DWORD_overlay_d_0__0208603c, 0, *param_3, param_3[1]); + FUN_overlay_d_0__020792a0(*(undefined4 *) PTR_DWORD_overlay_d_0__0208603c, 0, *param_4, param_4[1]); + VStack_b0.x = VStack_98.x; + VStack_b0.y = VStack_98.y; + VStack_b0.z = VStack_98.z; + VStack_bc.x = VStack_a4.x; + VStack_bc.y = VStack_a4.y; + VStack_bc.z = VStack_a4.z; + VStack_c8.x = VStack_98.x; + VStack_c8.y = VStack_98.y; + VStack_c8.z = VStack_98.z; + Vec3p::Sub(&VStack_c8, &VStack_bc, &VStack_c8); + lVar1 = (ulonglong) param_5 * 0xc000 + 0x800; + uVar7 = (uint) lVar1 >> 0xc | (int) ((ulonglong) lVar1 >> 0x20) * 0x100000; + iVar6 = Vec3p::Length(&VStack_c8); + if ((int) uVar7 < iVar6) { + Vec3p::Normalize(&VStack_c8, &VStack_c8); + Vec3p::Scale(&VStack_c8, uVar7); + VStack_98.x = VStack_a4.x; + VStack_98.y = VStack_a4.y; + VStack_98.z = VStack_a4.z; + Vec3p::Add(&VStack_98, &VStack_c8, &VStack_98); + VStack_b0.y = VStack_98.y; + VStack_b0.x = VStack_98.x; + VStack_b0.z = VStack_98.z; + } + VStack_c8.x = VStack_98.x; + VStack_c8.y = VStack_98.y; + VStack_c8.z = VStack_98.z; + Vec3p::Sub(&VStack_c8, &VStack_a4, &VStack_c8); + uVar7 = param_5 * 0x800 + 0x800 >> 0xc | + ((((int) param_5 >> 0x1f) << 0xb | param_5 >> 0x15) + (uint) (0xfffff7ff < param_5 * 0x800)) * 0x100000; + iVar6 = Vec3p::Length(&VStack_c8); + if ((int) param_5 <= iVar6) { + Vec3p::Normalize(&VStack_c8, &VStack_c8); + Vec3p::Scale(&VStack_c8, uVar7); + VStack_b0.x = VStack_bc.x; + VStack_b0.y = VStack_bc.y; + VStack_b0.z = VStack_bc.z; + Vec3p::Add(&VStack_b0, &VStack_c8, &VStack_b0); + } + bVar5 = false; + VStack_d8.xyz.y = param_5 << 1; + VStack_d8.xyz.x = 0; + VStack_d8.xyz.z = 0; + VStack_d8.w = param_5; + do { + bVar4 = FUN_01ffbe78(param_1, param_2, &VStack_b0, &VStack_bc, &VStack_d8); + if (bVar4) { + VStack_e4.x = param_2->x; + VStack_e4.y = param_2->y; + VStack_e4.z = param_2->z; + VStack_f0.x = param_2[1].x; + VStack_f0.y = param_2[1].y; + VStack_f0.z = param_2[1].z; + Vec3p::Normalize(&VStack_f0, &VStack_f0); + Vec3p::Scale(&VStack_f0, param_5); + Vec3p::Add(&VStack_e4, &VStack_f0, &VStack_e4); + dVar3 = DWORD_overlay_d_0__02086040; + param_2->x = VStack_e4.x; + param_2->y = VStack_e4.y; + param_2->z = VStack_e4.z; + uStack_68 = (undefined2) dVar3; + uStack_60 = 0; + uStack_3e = 0; + uStack_3d = 0; + uStack_3c = 0; + uStack_3b = 0; + uStack_34 = 0; + uStack_33 = 0; + uStack_32 = 0; + uStack_31 = 0; + uStack_30 = 0; + uStack_2f = 0; + uStack_2c = 0xffffffff; + uStack_28 = 0xffffffff; + uStack_66 = uStack_68; + uStack_64 = uStack_68; + uStack_62 = uStack_68; + bVar5 = FUN_01ffbe78(param_1, aVStack_8c, &VStack_e4, &VStack_e4, &VStack_d8); + if (bVar5) { + VStack_e4.x = aVStack_8c[0].x; + VStack_e4.y = aVStack_8c[0].y; + VStack_e4.z = aVStack_8c[0].z; + } + FUN_overlay_d_0__0207920c(*(undefined4 *) PTR_DWORD_overlay_d_0__0208603c, &VStack_e4, &iStack_104, 0); + param_2[8].x = iStack_104; + param_2[8].y = iStack_100; + return 1; + } + VStack_bc.x = VStack_b0.x; + VStack_bc.y = VStack_b0.y; + VStack_bc.z = VStack_b0.z; + iVar6 = FUN_0202b2e8(&VStack_b0, &VStack_98, uVar7); + puVar2 = PTR_DWORD_overlay_d_0__0208603c; + if (iVar6 != 0) { + bVar5 = true; + } + } while (!bVar5); + param_2->x = VStack_98.x; + param_2->y = VStack_98.y; + param_2->z = VStack_98.z; + FUN_overlay_d_0__0207920c(*(undefined4 *) puVar2, &VStack_98, &iStack_10c, 0); + param_2[8].x = iStack_10c; + param_2[8].y = iStack_108; + return 0; */ +} + +unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) { + /* undefined uVar1; + undefined uVar2; + int iVar3; + int iVar4; + int iVar5; + int iVar6; + int iVar7; + int iVar8; + int *piVar9; + Vec3p *pVVar10; + int iVar11; + undefined local_c6; + undefined local_c5; + undefined auStack_c4[4]; + Vec3p iStack_c0; + Vec3p local_b0; + Vec3p local_a0; + Vec3p local_94; + Vec3p local_88; + Vec3p VStack_7c; + AABB AStack_70; + Vec3p VStack_58; + Vec3p local_4c; + AABB local_40; + + local_40.min.x = param_3->x; + local_40.min.y = param_3->y; + local_40.min.z = param_3->z; + local_40.max.x = param_3->x; + local_40.max.y = param_3->y; + local_40.max.z = param_3->z; + local_88.x = param_2->x; + local_88.y = param_2->y; + local_88.z = param_2->z; + FUN_overlay_d_0__0208ed74(&local_40, &local_88); + AABB::Grow(&local_40, param_4); + iVar3 = FUN_overlay_d_0__020839d4(param_1, local_40.min.x); + iVar4 = FUN_overlay_d_0__020839f8(param_1, local_40.min.z); + iVar5 = FUN_overlay_d_0__020839d4(param_1, local_40.max.x); + iVar6 = FUN_overlay_d_0__020839f8(param_1, local_40.max.z); + local_4c.x = param_3->x; + local_4c.y = param_3->y; + local_4c.z = param_3->z; + local_94.x = param_2->x; + local_94.y = param_2->y; + local_94.z = param_2->z; + pVVar10 = &local_a0; + local_a0.x = param_3->x; + local_a0.y = param_3->y; + local_a0.z = param_3->z; + Vec3p::Sub(&local_94, pVVar10, &VStack_58); + uVar1 = FUN_overlay_d_0__020839d4(param_1, param_3->x); + uVar2 = FUN_overlay_d_0__020839f8(param_1, param_3->z); + iVar7 = FUN_overlay_d_0__02083e34(param_1, uVar1, uVar2, pVVar10); + do { + if (iVar5 < iVar3) { + return 0; + } + if (iVar4 <= iVar6) { + iVar11 = iVar4; + do { + iVar8 = FUN_overlay_d_0__02083e34(param_1, (char) iVar3, (char) iVar11, pVVar10); + if (iVar7 < iVar8) { + local_c6 = (char) iVar3; + local_c5 = (char) iVar11; + FUN_overlay_d_0__02084024(*(MapManager **) PTR_gMapManager_overlay_d_0__02086280, &local_c6, &AStack_70); + Vec3p::Sub(param_2, param_3, &VStack_7c); + pVVar10 = (Vec3p *) auStack_c4; + iVar8 = FUN_overlay_d_0__0208e87c(&AStack_70, &local_b0, &VStack_7c); + if (iVar8 != 0) { + return 1; + } + } + piVar9 = (int *) MapData_vfunc_78(param_1); + if ((piVar9 != (int *) 0x0) && (iVar8 = (**(code **) (*piVar9 + 0x58))(), iVar8 != 0)) { + iStack_c0.x = param_3->x; + iStack_c0.y = param_3->y; + pVVar10 = (Vec3p *) param_3->z; + iStack_c0.z = (int) pVVar10; + iVar8 = FUN_overlay_d_0__0208b804(piVar9, &iStack_c0, &VStack_58); + if (iVar8 != 0) { + return 1; + } + } + iVar11 = iVar11 + 1; + } while (iVar11 <= iVar6); + } + iVar3 = iVar3 + 1; + } while (true); */ +} + bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, u16 param_6, Vec3p *param_7, - Vec3p *param_8) {} + Vec3p *param_8) { + /* bool bVar1; + int iVar2; + int iVar3; + int local_d0[2]; + int local_c8; + Vec3p local_c4; + Vec3p local_b8; + int local_ac[2]; + int local_a4; + int local_a0[2]; + int local_98; + int local_94; + int local_90; + int local_8c; + Vec3p local_88; + Vec3p local_7c; + Vec3p local_70; + int local_64; + int local_60; + int local_5c; + int local_58; + int local_54; + Vec3p local_50; + Vec3p local_44; + Vec3p local_38; + int local_2c; + int iStack_28; + int iStack_24; + int local_20; + + iVar2 = (**(code **) (*param_2 + 8))(); + if (iVar2 == 0) { + (**(code **) (*param_2 + 0x24))(param_2, &local_2c); + local_38.x = local_2c; + local_38.y = iStack_28; + local_38.z = iStack_24; + iVar2 = Vec3p::Distance(param_3, &local_38); + Vec3p::Sub(param_3, &local_38, &local_38); + bVar1 = Vec3p::Normalize(&local_38); + if (!bVar1) { + local_38.x = 0; + local_38.y = 0; + local_38.z = 0x1000; + } + Vec3p::Scale(&local_38, (local_20 + param_5) - iVar2); + Vec3p::Add(param_3, &local_38, param_7); + local_50.x = local_2c; + local_50.y = iStack_28; + local_50.z = iStack_24; + Vec3p::Sub(param_4, &local_50, &local_44); + Vec3p::Normalize(&local_44); + param_8->x = local_44.x; + param_8->y = local_44.y; + param_8->z = local_44.z; + return false; + } + if (iVar2 == 1) { + local_58 = 0; + local_64 = 0; + local_60 = 0; + local_5c = 0; + (**(code **) (*param_2 + 0x28))(param_2, &local_64); + local_70.y = param_3->y; + local_70.x = local_64; + local_70.z = local_5c; + if ((((*(char *) ((int) param_2 + 5) != '\0') && ((param_6 & 0x80) != 0)) && + (iVar2 = Vec3p::Distance(&local_70, param_3), iVar2 <= local_58)) && + ((local_60 + local_54 <= param_4->y && (iVar2 = param_5 + local_60 + local_54, param_3->y <= iVar2)))) + { + param_7->y = iVar2; + param_8->x = 0; + param_8->y = 0x1000; + param_8->z = 0; + return true; + } + iVar2 = Vec3p::Distance(param_3, &local_70); + iVar3 = local_58 + param_5; + Vec3p::Sub(param_3, &local_70, &local_70); + bVar1 = Vec3p::Normalize(&local_70); + if (!bVar1) { + local_70.x = 0; + local_70.y = 0; + local_70.z = 0x1000; + } + Vec3p::Scale(&local_70, iVar3 - iVar2); + Vec3p::Add(param_3, &local_70, param_7); + local_88.x = local_64; + local_88.z = local_5c; + local_88.y = param_4->y; + Vec3p::Sub(param_4, &local_88, &local_7c); + Vec3p::Normalize(&local_7c); + param_8->x = local_7c.x; + param_8->y = local_7c.y; + param_8->z = local_7c.z; + return false; + } + if (iVar2 != 2) { + return false; + } + (**(code **) (*param_2 + 0x2c))(param_2, local_a0); + FUN_overlay_d_0__0208e6b0(local_a0, local_ac); + local_b8.y = param_3->y; + local_b8.x = local_ac[0]; + local_b8.z = local_a4; + Vec3p::Sub(param_3, &local_b8, &local_b8); + local_c4.x = local_b8.x; + local_c4.y = local_b8.y; + local_c4.z = local_b8.z; + bVar1 = Vec3p::Normalize(&local_c4); + if (!bVar1) { + local_c4.x = 0; + local_c4.y = 0; + local_c4.z = 0x1000; + } + if (((*(char *) ((int) param_2 + 5) != '\0') && ((param_6 & 0x80) != 0)) && + (((param_3->x < local_94 && (((local_a0[0] <= param_3->x && (param_3->z < local_8c)) && (local_98 <= param_3->z)))) || + (local_90 + param_5 <= param_4->y)))) + { + param_7->y = local_90 + param_5; + param_8->x = 0; + param_8->y = 0x1000; + param_8->z = 0; + return true; + } + FUN_overlay_d_0__0208e6b0(local_a0, local_d0); + iVar2 = param_3->z; + if (((iVar2 < local_8c) && (local_98 <= iVar2)) && ((param_3->x < local_94 && (local_a0[0] <= param_3->x)))) { + iVar2 = FUN_overlay_d_0__0208e6f0(local_a0); + iVar3 = FUN_overlay_d_0__0208e704(local_a0); + if (iVar2 == iVar3) { + local_c8 = local_c8 - param_3->z; + if (local_c8 < 0) { + local_c8 = -local_c8; + } + local_d0[0] = local_d0[0] - param_3->x; + if (local_d0[0] < 0) { + local_d0[0] = -local_d0[0]; + } + bVar1 = local_c8 < local_d0[0]; + } else { + iVar2 = FUN_overlay_d_0__0208e6f0(local_a0); + iVar3 = FUN_overlay_d_0__0208e704(local_a0); + if (iVar2 < iVar3) { + bVar1 = true; + } else { + bVar1 = false; + } + } + if (bVar1) { + if (local_c4.x < 0) { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + param_7->x = param_7->x - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = -0x1000; + param_8->y = 0; + param_8->z = 0; + } else { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + param_7->x = param_7->x + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0x1000; + param_8->y = 0; + param_8->z = 0; + } + } else if (local_c4.z < 0) { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = FUN_overlay_d_0__0208e704(local_a0); + param_7->z = param_7->z - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = -0x1000; + } else { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = FUN_overlay_d_0__0208e704(local_a0); + param_7->z = param_7->z + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = 0x1000; + } + } else { + iVar3 = param_3->x; + if ((iVar3 < local_94) && (local_a0[0] <= iVar3)) { + if (local_c4.z < 0) { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = FUN_overlay_d_0__0208e704(local_a0); + param_7->z = param_7->z - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = -0x1000; + } else { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = FUN_overlay_d_0__0208e704(local_a0); + param_7->z = param_7->z + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = 0x1000; + } + } else if ((iVar2 < local_8c) && (local_98 <= iVar2)) { + if (local_c4.x < 0) { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + param_7->x = param_7->x - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = -0x1000; + param_8->y = 0; + param_8->z = 0; + } else { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + param_7->x = param_7->x + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0x1000; + param_8->y = 0; + param_8->z = 0; + } + } else { + local_c8 = local_c8 - iVar2; + if (local_c8 < 0) { + local_c8 = -local_c8; + } + local_d0[0] = local_d0[0] - iVar3; + if (local_d0[0] < 0) { + local_d0[0] = -local_d0[0]; + } + if (local_c8 < local_d0[0]) { + if (local_c4.x < 0) { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + param_7->x = param_7->x - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = -0x1000; + param_8->y = 0; + param_8->z = 0; + } else { + iVar2 = local_b8.x; + if (local_b8.x < 0) { + iVar2 = -local_b8.x; + } + iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + param_7->x = param_7->x + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0x1000; + param_8->y = 0; + param_8->z = 0; + } + } else if (local_c4.z < 0) { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = FUN_overlay_d_0__0208e704(local_a0); + param_7->z = param_7->z - ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = -0x1000; + } else { + iVar2 = local_b8.z; + if (local_b8.z < 0) { + iVar2 = -local_b8.z; + } + iVar3 = FUN_overlay_d_0__0208e704(local_a0); + param_7->z = param_7->z + ((param_5 + (iVar3 >> 1)) - iVar2); + param_8->x = 0; + param_8->y = 0; + param_8->z = 0x1000; + } + } + } + return false; */ +} + bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, s32 param_6, unk32 param_7, - Vec3p *param_8, Vec3p *param_9) {} + Vec3p *param_8, Vec3p *param_9) { + /* bool bVar1; + int iVar2; + Vec3p VStack_a0; + undefined auStack_94[24]; + Vec3p local_7c; + int local_70[5]; + Vec3p local_5c; + Vec3p local_50; + Vec3p local_44; + Vec3p local_38; + int local_2c; + Vec3p VStack_28; + + Vec3p::Sub(param_3, param_4, &VStack_28); + iVar2 = (**(code **) (*param_2 + 8))(); + if (iVar2 == 0) { + (**(code **) (*param_2 + 0x24))(param_2, &local_38); + if (param_6 == 0) { + local_44.x = local_38.x; + local_44.y = local_38.y; + local_44.z = local_38.z; + iVar2 = Vec3p::Distance(param_3, &local_44); + Vec3p::Sub(param_3, &local_38, &local_44); + bVar1 = Vec3p::Normalize(&local_44); + if (!bVar1) { + local_44.x = 0; + local_44.y = 0; + local_44.z = 0x1000; + } + Vec3p::Scale(&local_44, (local_2c + param_5) - iVar2); + Vec3p::Add(param_3, &local_44, param_8); + } else { + Vec3p::Scale(&VStack_28, param_6); + Vec3p::Add(param_4, &VStack_28, param_8); + } + local_5c.x = local_38.x; + local_5c.y = local_38.y; + local_5c.z = local_38.z; + Vec3p::Sub(param_4, &local_5c, &local_50); + Vec3p::Normalize(&local_50); + param_9->x = local_50.x; + param_9->y = local_50.y; + param_9->z = local_50.z; + return false; + } + if (iVar2 != 1) { + if (iVar2 != 2) { + return false; + } + (**(code **) (*param_2 + 0x2c))(param_2, auStack_94); + FUN_overlay_d_0__0208e6b0(auStack_94, &VStack_a0); + Vec3p::Scale(&VStack_28, param_6); + Vec3p::Add(param_4, &VStack_28, param_8); + Vec3p::Sub(param_4, &VStack_a0, param_9); + Vec3p::Normalize(param_9); + return false; + } + local_70[3] = 0; + local_70[0] = 0; + local_70[1] = 0; + local_70[2] = 0; + (**(code **) (*param_2 + 0x28))(param_2, local_70); + Vec3p::Scale(&VStack_28, param_6); + Vec3p::Add(param_4, &VStack_28, param_8); + local_7c.x = local_70[0]; + local_7c.z = local_70[2]; + local_7c.y = param_4->y; + Vec3p::Sub(param_4, &local_7c, param_9); + Vec3p::Normalize(param_9); + return false; */ +} From 03be711e960fe91413a005c26ae0e9046b65f811 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Thu, 16 Jan 2025 23:56:10 +0100 Subject: [PATCH 19/62] Match MapManager::func_ov00_02082af4 --- config/eur/arm9/overlays/ov000/symbols.txt | 4 ++-- config/usa/arm9/overlays/ov000/symbols.txt | 4 ++-- include/Map/Course.hpp | 4 ++-- include/Map/MapManager.hpp | 4 ++-- src/00_Core/Map/MapManager.cpp | 16 ++++++++++------ 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 398a48be..3323a223 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -520,7 +520,7 @@ _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_02082808Eiii kind:function(arm,size=0xb8) addr:0x2082808 +_ZN10MapManager18func_ov00_02082808Ei kind:function(arm,size=0xb8) addr:0x2082808 _ZN10MapManager16MapData_vfunc_7cEv kind:function(arm,size=0x20) addr:0x20828c0 _ZN10MapManager16MapData_vfunc_84Ei kind:function(arm,size=0x18) addr:0x20828e0 _ZN10MapManager18func_ov00_020828f8EPi kind:function(arm,size=0x10) addr:0x20828f8 @@ -861,7 +861,7 @@ func_ov000_0208cb84 kind:function(arm,size=0x4c) addr:0x208cb84 func_ov000_0208cbd0 kind:function(arm,size=0x84) addr:0x208cbd0 func_ov000_0208cc54 kind:function(arm,size=0x10) addr:0x208cc54 func_ov000_0208cc64 kind:function(arm,size=0x24) addr:0x208cc64 -func_ov000_0208cc88 kind:function(arm,size=0x54) addr:0x208cc88 +_Z19func_ov000_0208cc88Pi kind:function(arm,size=0x54) addr:0x208cc88 func_ov000_0208ccdc kind:function(arm,size=0x10) addr:0x208ccdc func_ov000_0208ccec kind:function(arm,size=0x10) addr:0x208ccec func_ov000_0208ccfc kind:function(arm,size=0x10) addr:0x208ccfc diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index eb21ced8..45d10fa7 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -520,7 +520,7 @@ _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_02082808Eiii kind:function(arm,size=0xb8) addr:0x20827a8 +_ZN10MapManager18func_ov00_02082808Ei kind:function(arm,size=0xb8) addr:0x20827a8 _ZN10MapManager16MapData_vfunc_7cEv kind:function(arm,size=0x20) addr:0x2082860 _ZN10MapManager16MapData_vfunc_84Ei kind:function(arm,size=0x18) addr:0x2082880 _ZN10MapManager18func_ov00_020828f8EPi kind:function(arm,size=0x10) addr:0x2082898 @@ -861,7 +861,7 @@ func_ov000_0208cb84 kind:function(arm,size=0x4c) addr:0x208cb24 func_ov000_0208cbd0 kind:function(arm,size=0x84) addr:0x208cb70 func_ov000_0208cc54 kind:function(arm,size=0x10) addr:0x208cbf4 func_ov000_0208cc64 kind:function(arm,size=0x24) addr:0x208cc04 -func_ov000_0208cc88 kind:function(arm,size=0x54) addr:0x208cc28 +_Z19func_ov000_0208cc88Pi kind:function(arm,size=0x54) addr:0x208cc28 func_ov000_0208ccdc kind:function(arm,size=0x10) addr:0x208cc7c func_ov000_0208ccec kind:function(arm,size=0x10) addr:0x208cc8c func_ov000_0208ccfc kind:function(arm,size=0x10) addr:0x208cc9c diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index e1aa4210..9ca6c5b5 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -35,7 +35,7 @@ public: /* 01c */ Vec2b mCurrMapPos; // position in the map grid /* 01e */ unk8 mUnk_01e; /* 01f */ unk8 mUnk_01f; - /* 020 */ unk8 mMapGrid[10][10]; + /* 020 */ u8 mMapGrid[10][10]; /* 084 */ Vec2b mMainGrid; // part of the grid where you can walk off screen to another map /* 086 */ Vec2b mMainGridSize; /* 088 */ s32 mScreenMapOffsetX; @@ -44,7 +44,7 @@ public: /* 094 */ unk32 mUnk_094; /* 098 */ AABB mBounds; /* 0b0 */ u8 mNumMaps; - /* 0b1 */ unk8 mUnk_0b1; + /* 0b1 */ u8 mUnk_0b1; /* 0b2 */ unk8 mUnk_0b2; /* 0b3 */ unk8 mUnk_0b3; /* 0b4 */ unk32 mUnk_0b4; diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index ac0168eb..fa468d1e 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -72,7 +72,7 @@ public: 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 func_ov00_02082808(s32 param_2); void MapData_vfunc_7c(); void MapData_vfunc_84(unk32 param_2); bool func_ov00_020828f8(s32 *param_2); @@ -85,7 +85,7 @@ public: u8 func_ov00_02082d08(); u8 GetCurrentMapPosX(); u8 GetCurrentMapPosY(); - unk8 func_ov00_02082d40(); + u8 func_ov00_02082d40(); u32 func_ov00_02082d74(unk32 param_2); void func_ov00_02082d84(unk8 *param_2, s32 *param_3, s32 *param_4); bool func_ov00_02082e1c(s32 *param_2, s32 *param_3); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 683c37a3..feb89ddf 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -3,6 +3,10 @@ #include "Actor/ActorManager.hpp" #include "Player/PlayerBase.hpp" +extern void func_ov000_0208cc88(s32 *param1); + +extern s32 *data_027e0f68; + ARM void MapManager::GetCourseDungeonProgress(CourseProgress *param_2) { this->mCourse->GetDungeonProgress(param_2); } @@ -300,7 +304,7 @@ 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) { +ARM void MapManager::func_ov00_02082808(s32 param_2) { // How to define PTR_027e0d38 ? // if (*(int*)(*(int*)PTR_027e0d38 + 0x14) == 1) { // return; @@ -312,13 +316,13 @@ ARM void MapManager::func_ov00_02082808(s32 param_2, unk32 param_3, unk32 param_ if (var1 == var2) { return; } - // func_ov00_020d70a4(DWORD_overlay_d_0_bss__020eec68, var1, 0, 0x7f, param_4); // And these? + // func_ov00_020d70a4(DWORD_overlay_d_0_bss__020eec68, var1, 0, 0x7f, param_3); // 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); + // func_ov00_020a5e9c(DWORD_overlay_d_0_bss__020eec68, var1, 0, 0x7f, param_3); } // var1 = func_ov00_020a5e9c(*(s32 *) PTR_027e0d38 + 0xc); if (var1 == 0) { @@ -427,9 +431,9 @@ ARM unk32 *MapManager::func_ov00_02082adc() { } ARM void MapManager::func_ov00_02082af4() { - // func_ov00_02082af4(DWORD_027e0f68) // Does not exist. + func_ov000_0208cc88(data_027e0f68); this->mMap->vfunc_48(); - // this->func_ov00_02082808(0, ?, ?) // Only 1/3 params specified. + this->func_ov00_02082808(0); this->mUnk_0a = 1; this->mUnk_0b = 0; } @@ -492,7 +496,7 @@ ARM u8 MapManager::GetCurrentMapPosY() { return this->mCourse->mCurrMapPos.y; } -ARM unk8 MapManager::func_ov00_02082d40() { +ARM u8 MapManager::func_ov00_02082d40() { if (this->mCourse->mType == CourseType_Sea) { return this->mCourse->mMapGrid[(u8) this->mCourse->mCurrMapPos.x][(u8) this->mCourse->mCurrMapPos.y]; } From 93e1c583010c1d6b094fb659d8fab7dcb9dd9665 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Fri, 17 Jan 2025 20:07:13 +0100 Subject: [PATCH 20/62] Match MapManager::func_ov00_02082adc Match MapManager::func_ov00_02082d74 --- config/eur/arm9/overlays/ov000/symbols.txt | 4 ++-- config/usa/arm9/overlays/ov000/symbols.txt | 4 ++-- src/00_Core/Map/MapManager.cpp | 9 ++++++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 3323a223..2e2a34c6 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -82,7 +82,7 @@ func_ov000_02078b0c kind:function(thumb,size=0x34) addr:0x2078b0c func_ov000_02078b40 kind:function(arm,size=0x24) addr:0x2078b40 func_ov000_02078b64 kind:function(arm,size=0x24) addr:0x2078b64 func_ov000_02078b88 kind:function(arm,size=0x3c) addr:0x2078b88 -func_ov000_02078bc4 kind:function(thumb,size=0x2c) addr:0x2078bc4 +_Z19func_ov000_02078bc4i kind:function(thumb,size=0x2c) addr:0x2078bc4 func_ov000_02078bf0 kind:function(thumb,size=0x11c) addr:0x2078bf0 func_ov000_02078d0c kind:function(thumb,size=0x24) addr:0x2078d0c func_ov000_02078d30 kind:function(thumb,size=0x24) addr:0x2078d30 @@ -1236,7 +1236,7 @@ func_ov000_02096160 kind:function(arm,size=0x98) addr:0x2096160 func_ov000_020961f8 kind:function(arm,size=0x24) addr:0x20961f8 func_ov000_0209621c kind:function(arm,size=0x108) addr:0x209621c func_ov000_02096324 kind:function(arm,size=0xf4) addr:0x2096324 -func_ov000_02096418 kind:function(arm,size=0xb4) addr:0x2096418 +_Z19func_ov000_02096418Pi kind:function(arm,size=0xb4) addr:0x2096418 func_ov000_020964cc kind:function(arm,size=0xf4) addr:0x20964cc func_ov000_020965c0 kind:function(arm,size=0x1ec) addr:0x20965c0 func_ov000_020967ac kind:function(arm,size=0x250) addr:0x20967ac diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 45d10fa7..09aba1f6 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -82,7 +82,7 @@ func_ov000_02078b0c kind:function(thumb,size=0x34) addr:0x2078aac func_ov000_02078b40 kind:function(arm,size=0x24) addr:0x2078ae0 func_ov000_02078b64 kind:function(arm,size=0x24) addr:0x2078b04 func_ov000_02078b88 kind:function(arm,size=0x3c) addr:0x2078b28 -func_ov000_02078bc4 kind:function(thumb,size=0x2c) addr:0x2078b64 +_Z19func_ov000_02078bc4i kind:function(thumb,size=0x2c) addr:0x2078b64 func_ov000_02078bf0 kind:function(thumb,size=0x11c) addr:0x2078b90 func_ov000_02078d0c kind:function(thumb,size=0x24) addr:0x2078cac func_ov000_02078d30 kind:function(thumb,size=0x24) addr:0x2078cd0 @@ -1236,7 +1236,7 @@ func_ov000_02096160 kind:function(arm,size=0x98) addr:0x2096100 func_ov000_020961f8 kind:function(arm,size=0x24) addr:0x2096198 func_ov000_0209621c kind:function(arm,size=0x108) addr:0x20961bc func_ov000_02096324 kind:function(arm,size=0xf4) addr:0x20962c4 -func_ov000_02096418 kind:function(arm,size=0xb4) addr:0x20963b8 +_Z19func_ov000_02096418Pi kind:function(arm,size=0xb4) addr:0x20963b8 func_ov000_020964cc kind:function(arm,size=0xf4) addr:0x209646c func_ov000_020965c0 kind:function(arm,size=0x1ec) addr:0x2096560 func_ov000_020967ac kind:function(arm,size=0x250) addr:0x209674c diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index feb89ddf..750476b5 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -3,9 +3,12 @@ #include "Actor/ActorManager.hpp" #include "Player/PlayerBase.hpp" +extern u32 func_ov000_02078bc4(unk32 param_1); extern void func_ov000_0208cc88(s32 *param1); +extern s32 *func_ov000_02096418(s32 *param_1); extern s32 *data_027e0f68; +extern s32 *data_027e0f70; ARM void MapManager::GetCourseDungeonProgress(CourseProgress *param_2) { this->mCourse->GetDungeonProgress(param_2); @@ -426,8 +429,8 @@ 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 s32 *MapManager::func_ov00_02082adc() { + return func_ov000_02096418(data_027e0f70); } ARM void MapManager::func_ov00_02082af4() { @@ -504,7 +507,7 @@ ARM u8 MapManager::func_ov00_02082d40() { } ARM u32 MapManager::func_ov00_02082d74(unk32 param_2) { - // return func_ov00_02082d80(param_2); // Does not exist. + return func_ov000_02078bc4(param_2); } ARM void MapManager::func_ov00_02082d84(unk8 *param_2, s32 *param_3, s32 *param_4) { From 11fcd1e4ea30212728c5646bec060c57fb0e0678 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 18 Jan 2025 00:07:56 +0100 Subject: [PATCH 21/62] Match MapManager::func_ov00_02082594 Match MapManager::func_ov00_020825ac Refactor MapManager::func_ov00_020836bc to MapManager::GetTriggerBoundingBox --- config/eur/arm9/overlays/ov000/symbols.txt | 6 ++--- config/usa/arm9/overlays/ov000/symbols.txt | 6 ++--- include/Map/MapManager.hpp | 2 +- src/00_Core/Map/MapManager.cpp | 28 ++++++++++++---------- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 2e2a34c6..722e70e4 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -578,7 +578,7 @@ _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x208360 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x2083614 _ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x2083624 _ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083664 -_ZN10MapManager18func_ov00_020836bcEiP4AABB kind:function(arm,size=0x10) addr:0x20836bc +_ZN10MapManager21GetTriggerBoundingBoxEiP4AABB kind:function(arm,size=0x10) addr:0x20836bc _ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x20836cc _ZN10MapManager18func_ov00_020836dcEjj kind:function(arm,size=0x94) addr:0x20836dc _ZN10MapManager23IsTriggerTypeOverlappedEjP5Vec3p kind:function(arm,size=0x10) addr:0x2083770 @@ -878,8 +878,8 @@ func_ov000_0208d310 kind:function(arm,size=0xec) addr:0x208d310 func_ov000_0208d3fc kind:function(arm,size=0x98) addr:0x208d3fc func_ov000_0208d494 kind:function(arm,size=0x14c) addr:0x208d494 func_ov000_0208d5e0 kind:function(arm,size=0x40) addr:0x208d5e0 -func_ov000_0208d620 kind:function(arm,size=0x60) addr:0x208d620 -func_ov000_0208d680 kind:function(arm,size=0x60) addr:0x208d680 +_Z19func_ov000_0208d620Pi kind:function(arm,size=0x60) addr:0x208d620 +_Z19func_ov000_0208d680Pi kind:function(arm,size=0x60) addr:0x208d680 func_ov000_0208d6e0 kind:function(arm,size=0x140) addr:0x208d6e0 func_ov000_0208d820 kind:function(arm,size=0x110) addr:0x208d820 func_ov000_0208d930 kind:function(arm,size=0xb0) addr:0x208d930 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 09aba1f6..7d58318a 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -578,7 +578,7 @@ _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x20835a _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x20835b4 _ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x20835c4 _ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083604 -_ZN10MapManager18func_ov00_020836bcEiP4AABB kind:function(arm,size=0x10) addr:0x208365c +_ZN10MapManager21GetTriggerBoundingBoxEiP4AABB kind:function(arm,size=0x10) addr:0x208365c _ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x208366c _ZN10MapManager18func_ov00_020836dcEjj kind:function(arm,size=0x94) addr:0x208367c _ZN10MapManager23IsTriggerTypeOverlappedEjP5Vec3p kind:function(arm,size=0x10) addr:0x2083710 @@ -878,8 +878,8 @@ func_ov000_0208d310 kind:function(arm,size=0xec) addr:0x208d2b0 func_ov000_0208d3fc kind:function(arm,size=0x98) addr:0x208d39c func_ov000_0208d494 kind:function(arm,size=0x14c) addr:0x208d434 func_ov000_0208d5e0 kind:function(arm,size=0x40) addr:0x208d580 -func_ov000_0208d620 kind:function(arm,size=0x60) addr:0x208d5c0 -func_ov000_0208d680 kind:function(arm,size=0x60) addr:0x208d620 +_Z19func_ov000_0208d620Pi kind:function(arm,size=0x60) addr:0x208d5c0 +_Z19func_ov000_0208d680Pi kind:function(arm,size=0x60) addr:0x208d620 func_ov000_0208d6e0 kind:function(arm,size=0x140) addr:0x208d680 func_ov000_0208d820 kind:function(arm,size=0x110) addr:0x208d7c0 func_ov000_0208d930 kind:function(arm,size=0xb0) addr:0x208d8d0 diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index fa468d1e..b1e42cd0 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -130,7 +130,7 @@ public: unk8 func_ov00_02083614(s32 param_2); bool GetEntrancePos(Vec3p *param_2, unk32 entranceId); bool func_ov00_02083664(Vec3p *param_2, unk32 entranceId); - s32 func_ov00_020836bc(s32 param_2, AABB *param_3); + s32 GetTriggerBoundingBox(s32 param_2, AABB *param_3); s32 GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4); bool func_ov00_020836dc(u32 param_2, u32 actorId); bool IsTriggerTypeOverlapped(u32 param_2, Vec3p *param_3); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 750476b5..1993c556 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -4,8 +4,12 @@ #include "Player/PlayerBase.hpp" extern u32 func_ov000_02078bc4(unk32 param_1); +extern void func_ov00_02078bf0(s32 *param_1, unk32 param_2); extern void func_ov000_0208cc88(s32 *param1); +extern void func_ov000_0208d620(s32 *param_1); +extern void func_ov000_0208d680(s32 *param_1); extern s32 *func_ov000_02096418(s32 *param_1); +extern bool func_ov015_02129c44(s32 param_1); extern s32 *data_027e0f68; extern s32 *data_027e0f70; @@ -114,13 +118,13 @@ ARM void MapManager::func_ov00_0208230c(s32 *param_2) { } 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) ??? + s32 var[4]; + var[0] = 0x47; + var[1] = 0; + var[2] = 0; + var[3] = 0xfffffffe; + this->func_ov00_0208230c(var); + func_ov00_02078bf0(var, param_2); } ARM void MapManager::func_ov00_020823a4(unk32 param_2) { @@ -181,7 +185,7 @@ ARM bool MapManager::func_ov00_02082494(s32 param_2) { 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. + bool state = func_ov015_02129c44(param_2); return state; } return false; @@ -206,13 +210,11 @@ ARM unk8 *MapManager::func_ov00_02082538() { } ARM void MapManager::func_ov00_02082594() { - // func_ov000_0208d620(DWORD_027e0f68) does not exist. - return; + func_ov000_0208d620(data_027e0f68); } ARM void MapManager::func_ov00_020825ac() { - // func_ov000_0208d680(DWORD_027e0f68) does not exist. - return; + func_ov000_0208d680(data_027e0f68); } ARM s32 MapManager::GetCourseFilePath(char *courseName, char *buf) { @@ -885,7 +887,7 @@ ARM bool MapManager::func_ov00_02083664(Vec3p *param_2, unk32 entranceId) { return false; } -ARM s32 MapManager::func_ov00_020836bc(s32 param_2, AABB *param_3) { +ARM s32 MapManager::GetTriggerBoundingBox(s32 param_2, AABB *param_3) { return this->mMap->GetTriggerBoundingBox(param_2, param_3); } From 2450e474eae8aaf4d814b49a380c0cb8c8d2fdf1 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 19 Jan 2025 00:02:20 +0100 Subject: [PATCH 22/62] Uncomment MapManager::func_ov00_0208210c Uncomment most of MapManager::func_ov00_02082b3c Improve MapManager::func_ov00_02083840 Improve MapManager::func_ov00_02083fb0 Uncomment most of MapManager::func_ov00_02086a84 Add Vec3p_Scale --- config/eur/arm9/itcm/symbols.txt | 2 +- config/eur/arm9/overlays/ov000/symbols.txt | 16 +- config/eur/arm9/overlays/ov004/symbols.txt | 12 +- config/eur/arm9/overlays/ov015/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/symbols.txt | 16 +- config/usa/arm9/overlays/ov004/symbols.txt | 12 +- config/usa/arm9/overlays/ov015/symbols.txt | 2 +- include/Map/MapManager.hpp | 4 +- include/lib/math.h | 4 +- src/00_Core/Map/MapManager.cpp | 317 +++++++++++---------- 10 files changed, 207 insertions(+), 180 deletions(-) diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index b8aab999..56efdbe2 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -103,7 +103,7 @@ func_01fff4c8 kind:function(arm,size=0x48) addr:0x1fff4c8 func_01fff510 kind:function(arm,size=0x63c) addr:0x1fff510 func_01fffb4c kind:function(arm,size=0x34) addr:0x1fffb4c func_01fffb80 kind:function(arm,size=0x6c) addr:0x1fffb80 -func_01fffbec kind:function(arm,size=0x58) addr:0x1fffbec +Vec3p_Scale kind:function(arm,size=0x58) addr:0x1fffbec func_01fffc44 kind:function(arm,size=0x50) addr:0x1fffc44 func_01fffc94 kind:function(arm,size=0x44) addr:0x1fffc94 _Z12GetLinkStatei kind:function(arm,size=0x14) addr:0x1fffcd8 diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 722e70e4..a1fb651c 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -95,7 +95,7 @@ func_ov000_02078f80 kind:function(arm,size=0x2c) addr:0x2078f80 func_ov000_02078fac kind:function(arm,size=0x14) addr:0x2078fac func_ov000_02078fc0 kind:function(arm,size=0x14) addr:0x2078fc0 func_ov000_02078fd4 kind:function(arm,size=0x14) addr:0x2078fd4 -func_ov000_02078fe8 kind:function(arm,size=0x14) addr:0x2078fe8 +_Z19func_ov000_02078fe8Pi kind:function(arm,size=0x14) addr:0x2078fe8 func_ov000_02078ffc kind:function(arm,size=0xc) addr:0x2078ffc func_ov000_02079008 kind:function(arm,size=0x1c) addr:0x2079008 func_ov000_02079024 kind:function(arm,size=0x128) addr:0x2079024 @@ -110,7 +110,7 @@ func_ov000_02079680 kind:function(arm,size=0xfc) addr:0x2079680 func_ov000_0207977c kind:function(arm,size=0xfc) addr:0x207977c func_ov000_02079878 kind:function(arm,size=0x20) addr:0x2079878 func_ov000_02079898 kind:function(arm,size=0x24) addr:0x2079898 -func_ov000_020798bc kind:function(arm,size=0x2c) addr:0x20798bc +_Z19func_ov000_020798bcPii kind:function(arm,size=0x2c) addr:0x20798bc func_ov000_020798e8 kind:function(arm,size=0x40) addr:0x20798e8 func_ov000_02079928 kind:function(arm,size=0x124) addr:0x2079928 func_ov000_02079a4c kind:function(arm,size=0x44) addr:0x2079a4c @@ -490,9 +490,9 @@ func_ov000_020820bc kind:function(arm,size=0x14) addr:0x20820bc func_ov000_020820d0 kind:function(arm,size=0x1c) addr:0x20820d0 _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_0208210cEiPi kind:function(arm,size=0x200) addr:0x208210c _ZN10MapManager18func_ov00_0208230cEPi kind:function(arm,size=0x3c) addr:0x208230c -_ZN10MapManager18func_ov00_02082348Ei kind:function(arm,size=0x5c) addr:0x2082348 +_ZN10MapManager18func_ov00_02082348EPi 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 _ZN10MapManager18func_ov00_020823c4EPii kind:function(arm,size=0x10) addr:0x20823c4 @@ -1091,7 +1091,7 @@ func_ov000_0209394c kind:function(arm,size=0xc) addr:0x209394c func_ov000_02093958 kind:function(arm,size=0x10) addr:0x2093958 func_ov000_02093968 kind:function(arm,size=0x78) addr:0x2093968 func_ov000_020939e0 kind:function(arm,size=0x3c) addr:0x20939e0 -func_ov000_02093a1c kind:function(arm,size=0x20) addr:0x2093a1c +_Z19func_ov000_02093a1cPjPi kind:function(arm,size=0x20) addr:0x2093a1c func_ov000_02093a3c kind:function(arm,size=0x10) addr:0x2093a3c func_ov000_02093a4c kind:function(arm,size=0x10) addr:0x2093a4c func_ov000_02093a5c kind:function(arm,size=0x94) addr:0x2093a5c @@ -1235,7 +1235,7 @@ func_ov000_02095fe0 kind:function(arm,size=0x180) addr:0x2095fe0 func_ov000_02096160 kind:function(arm,size=0x98) addr:0x2096160 func_ov000_020961f8 kind:function(arm,size=0x24) addr:0x20961f8 func_ov000_0209621c kind:function(arm,size=0x108) addr:0x209621c -func_ov000_02096324 kind:function(arm,size=0xf4) addr:0x2096324 +_Z19func_ov000_02096324Pii kind:function(arm,size=0xf4) addr:0x2096324 _Z19func_ov000_02096418Pi kind:function(arm,size=0xb4) addr:0x2096418 func_ov000_020964cc kind:function(arm,size=0xf4) addr:0x20964cc func_ov000_020965c0 kind:function(arm,size=0x1ec) addr:0x20965c0 @@ -1457,7 +1457,7 @@ func_ov000_0209d550 kind:function(arm,size=0x14) addr:0x209d550 func_ov000_0209d564 kind:function(arm,size=0x16c) addr:0x209d564 func_ov000_0209d6d0 kind:function(arm,size=0x4) addr:0x209d6d0 func_ov000_0209d6d4 kind:function(arm,size=0x14) addr:0x209d6d4 -func_ov000_0209d6e8 kind:function(arm,size=0x28) addr:0x209d6e8 +_Z19func_ov000_0209d6e8ii kind:function(arm,size=0x28) addr:0x209d6e8 func_ov000_0209d710 kind:function(arm,size=0xc) addr:0x209d710 func_ov000_0209d71c kind:function(arm,size=0xc) addr:0x209d71c func_ov000_0209d728 kind:function(arm,size=0x10) addr:0x209d728 @@ -1783,7 +1783,7 @@ func_ov000_020a5d50 kind:function(arm,size=0xc) addr:0x20a5d50 func_ov000_020a5d5c kind:function(arm,size=0x18) addr:0x20a5d5c func_ov000_020a5d74 kind:function(arm,size=0x94) addr:0x20a5d74 func_ov000_020a5e08 kind:function(arm,size=0x94) addr:0x20a5e08 -func_ov000_020a5e9c kind:function(arm,size=0x5c) addr:0x20a5e9c +_Z19func_ov000_020a5e9cPi kind:function(arm,size=0x5c) addr:0x20a5e9c func_ov000_020a5ef8 kind:function(arm,size=0x30) addr:0x20a5ef8 func_ov000_020a5f28 kind:function(arm,size=0x30) addr:0x20a5f28 func_ov000_020a5f58 kind:function(arm,size=0x14) addr:0x20a5f58 diff --git a/config/eur/arm9/overlays/ov004/symbols.txt b/config/eur/arm9/overlays/ov004/symbols.txt index 0fd913c5..5990a755 100644 --- a/config/eur/arm9/overlays/ov004/symbols.txt +++ b/config/eur/arm9/overlays/ov004/symbols.txt @@ -41,7 +41,7 @@ func_ov004_02101fe8 kind:function(thumb,size=0x24) addr:0x2101fe8 func_ov004_0210200c kind:function(thumb,size=0x254) addr:0x210200c func_ov004_02102260 kind:function(thumb,size=0x4) addr:0x2102260 func_ov004_02102264 kind:function(thumb,size=0x260) addr:0x2102264 -func_ov004_021024c4 kind:function(thumb,size=0x114) addr:0x21024c4 +_Z19func_ov004_021024c4P10MapManageribi kind:function(thumb,size=0x114) addr:0x21024c4 func_ov004_021025d8 kind:function(thumb,size=0x10) addr:0x21025d8 func_ov004_021025e8 kind:function(thumb,size=0x34) addr:0x21025e8 func_ov004_0210261c kind:function(arm,size=0x4) addr:0x210261c @@ -51,7 +51,7 @@ func_ov004_021026cc kind:function(thumb,size=0x24) addr:0x21026cc func_ov004_021026f0 kind:function(thumb,size=0x4c) addr:0x21026f0 func_ov004_0210273c kind:function(thumb,size=0xc) addr:0x210273c func_ov004_02102748 kind:function(thumb,size=0x28) addr:0x2102748 -func_ov004_02102770 kind:function(thumb,size=0x44) addr:0x2102770 +_Z19func_ov004_02102770Pi kind:function(thumb,size=0x44) addr:0x2102770 func_ov004_021027b4 kind:function(arm,size=0x28) addr:0x21027b4 func_ov004_021027dc kind:function(arm,size=0x4) addr:0x21027dc func_ov004_021027e0 kind:function(arm,size=0x14) addr:0x21027e0 @@ -72,7 +72,7 @@ func_ov004_02102aa0 kind:function(thumb,size=0x38) addr:0x2102aa0 func_ov004_02102ad8 kind:function(thumb,size=0x20) addr:0x2102ad8 func_ov004_02102af8 kind:function(thumb,size=0x8) addr:0x2102af8 func_ov004_02102b00 kind:function(thumb,size=0x28) addr:0x2102b00 -func_ov004_02102b28 kind:function(thumb,size=0x54) addr:0x2102b28 +_Z19func_ov004_02102b28Pi kind:function(thumb,size=0x54) addr:0x2102b28 func_ov004_02102b7c kind:function(arm,size=0x14) addr:0x2102b7c func_ov004_02102b90 kind:function(arm,size=0x14) addr:0x2102b90 func_ov004_02102ba4 kind:function(arm,size=0x44) addr:0x2102ba4 @@ -86,7 +86,7 @@ func_ov004_02102da4 kind:function(thumb,size=0x44) addr:0x2102da4 func_ov004_02102de8 kind:function(thumb,size=0x4) addr:0x2102de8 func_ov004_02102dec kind:function(thumb,size=0x2c) addr:0x2102dec func_ov004_02102e18 kind:function(thumb,size=0x24) addr:0x2102e18 -func_ov004_02102e3c kind:function(thumb,size=0x1c) addr:0x2102e3c +_Z19func_ov004_02102e3cPi kind:function(thumb,size=0x1c) addr:0x2102e3c func_ov004_02102e58 kind:function(thumb,size=0x5ec) addr:0x2102e58 func_ov004_02103444 kind:function(thumb,size=0xb8) addr:0x2103444 func_ov004_021034fc kind:function(thumb,size=0xbc) addr:0x21034fc @@ -137,8 +137,8 @@ func_ov004_0210532c kind:function(thumb,size=0xb0) addr:0x210532c func_ov004_021053dc kind:function(thumb,size=0xc8) addr:0x21053dc func_ov004_021054a4 kind:function(thumb,size=0xa8) addr:0x21054a4 func_ov004_0210554c kind:function(thumb,size=0x2c) addr:0x210554c -func_ov004_02105578 kind:function(thumb,size=0x90) addr:0x2105578 -func_ov004_02105608 kind:function(thumb,size=0xb0) addr:0x2105608 +_Z19func_ov004_02105578P12ActorManagerj kind:function(thumb,size=0x90) addr:0x2105578 +_Z19func_ov004_02105608P12ActorManageriii kind:function(thumb,size=0xb0) addr:0x2105608 func_ov004_021056b8 kind:function(thumb,size=0x10) addr:0x21056b8 func_ov004_021056c8 kind:function(thumb,size=0x28) addr:0x21056c8 func_ov004_021056f0 kind:function(thumb,size=0x24) addr:0x21056f0 diff --git a/config/eur/arm9/overlays/ov015/symbols.txt b/config/eur/arm9/overlays/ov015/symbols.txt index bd5bfb75..2ffe3b33 100644 --- a/config/eur/arm9/overlays/ov015/symbols.txt +++ b/config/eur/arm9/overlays/ov015/symbols.txt @@ -287,7 +287,7 @@ func_ov015_02129b30 kind:function(arm,size=0x8) addr:0x2129b30 func_ov015_02129b38 kind:function(arm,size=0x18) addr:0x2129b38 func_ov015_02129b50 kind:function(arm,size=0xb4) addr:0x2129b50 func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129c04 -func_ov015_02129c14 kind:function(arm,size=0x10) addr:0x2129c14 +_Z19func_ov015_02129c14v kind:function(arm,size=0x10) addr:0x2129c14 func_ov015_02129c24 kind:function(arm,size=0x10) addr:0x2129c24 func_ov015_02129c34 kind:function(arm,size=0x10) addr:0x2129c34 func_ov015_02129c44 kind:function(arm,size=0x10) addr:0x2129c44 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 7d58318a..b09a0ea0 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -95,7 +95,7 @@ func_ov000_02078f80 kind:function(arm,size=0x2c) addr:0x2078f20 func_ov000_02078fac kind:function(arm,size=0x14) addr:0x2078f4c func_ov000_02078fc0 kind:function(arm,size=0x14) addr:0x2078f60 func_ov000_02078fd4 kind:function(arm,size=0x14) addr:0x2078f74 -func_ov000_02078fe8 kind:function(arm,size=0x14) addr:0x2078f88 +_Z19func_ov000_02078fe8Pi kind:function(arm,size=0x14) addr:0x2078f88 func_ov000_02078ffc kind:function(arm,size=0xc) addr:0x2078f9c func_ov000_02079008 kind:function(arm,size=0x1c) addr:0x2078fa8 func_ov000_02079024 kind:function(arm,size=0x128) addr:0x2078fc4 @@ -110,7 +110,7 @@ func_ov000_02079680 kind:function(arm,size=0xfc) addr:0x2079620 func_ov000_0207977c kind:function(arm,size=0xfc) addr:0x207971c func_ov000_02079878 kind:function(arm,size=0x20) addr:0x2079818 func_ov000_02079898 kind:function(arm,size=0x24) addr:0x2079838 -func_ov000_020798bc kind:function(arm,size=0x2c) addr:0x207985c +_Z19func_ov000_020798bcPii kind:function(arm,size=0x2c) addr:0x207985c func_ov000_020798e8 kind:function(arm,size=0x40) addr:0x2079888 func_ov000_02079928 kind:function(arm,size=0x124) addr:0x20798c8 func_ov000_02079a4c kind:function(arm,size=0x44) addr:0x20799ec @@ -490,9 +490,9 @@ func_ov000_020820bc kind:function(arm,size=0x14) addr:0x208205c func_ov000_020820d0 kind:function(arm,size=0x1c) addr:0x2082070 _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_0208210cEiPi kind:function(arm,size=0x200) addr:0x20820ac _ZN10MapManager18func_ov00_0208230cEPi kind:function(arm,size=0x3c) addr:0x20822ac -_ZN10MapManager18func_ov00_02082348Ei kind:function(arm,size=0x5c) addr:0x20822e8 +_ZN10MapManager18func_ov00_02082348EPi 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 _ZN10MapManager18func_ov00_020823c4EPii kind:function(arm,size=0x10) addr:0x2082364 @@ -1091,7 +1091,7 @@ func_ov000_0209394c kind:function(arm,size=0xc) addr:0x20938ec func_ov000_02093958 kind:function(arm,size=0x10) addr:0x20938f8 func_ov000_02093968 kind:function(arm,size=0x78) addr:0x2093908 func_ov000_020939e0 kind:function(arm,size=0x3c) addr:0x2093980 -func_ov000_02093a1c kind:function(arm,size=0x20) addr:0x20939bc +_Z19func_ov000_02093a1cPjPi kind:function(arm,size=0x20) addr:0x20939bc func_ov000_02093a3c kind:function(arm,size=0x10) addr:0x20939dc func_ov000_02093a4c kind:function(arm,size=0x10) addr:0x20939ec func_ov000_02093a5c kind:function(arm,size=0x94) addr:0x20939fc @@ -1235,7 +1235,7 @@ func_ov000_02095fe0 kind:function(arm,size=0x180) addr:0x2095f80 func_ov000_02096160 kind:function(arm,size=0x98) addr:0x2096100 func_ov000_020961f8 kind:function(arm,size=0x24) addr:0x2096198 func_ov000_0209621c kind:function(arm,size=0x108) addr:0x20961bc -func_ov000_02096324 kind:function(arm,size=0xf4) addr:0x20962c4 +_Z19func_ov000_02096324Pii kind:function(arm,size=0xf4) addr:0x20962c4 _Z19func_ov000_02096418Pi kind:function(arm,size=0xb4) addr:0x20963b8 func_ov000_020964cc kind:function(arm,size=0xf4) addr:0x209646c func_ov000_020965c0 kind:function(arm,size=0x1ec) addr:0x2096560 @@ -1457,7 +1457,7 @@ func_ov000_0209d550 kind:function(arm,size=0x14) addr:0x209d4f0 func_ov000_0209d564 kind:function(arm,size=0x16c) addr:0x209d504 func_ov000_0209d6d0 kind:function(arm,size=0x4) addr:0x209d670 func_ov000_0209d6d4 kind:function(arm,size=0x14) addr:0x209d674 -func_ov000_0209d6e8 kind:function(arm,size=0x28) addr:0x209d688 +_Z19func_ov000_0209d6e8ii kind:function(arm,size=0x28) addr:0x209d688 func_ov000_0209d710 kind:function(arm,size=0xc) addr:0x209d6b0 func_ov000_0209d71c kind:function(arm,size=0xc) addr:0x209d6bc func_ov000_0209d728 kind:function(arm,size=0x10) addr:0x209d6c8 @@ -1783,7 +1783,7 @@ func_ov000_020a5d50 kind:function(arm,size=0xc) addr:0x20a5cf0 func_ov000_020a5d5c kind:function(arm,size=0x18) addr:0x20a5cfc func_ov000_020a5d74 kind:function(arm,size=0x94) addr:0x20a5d14 func_ov000_020a5e08 kind:function(arm,size=0x94) addr:0x20a5da8 -func_ov000_020a5e9c kind:function(arm,size=0x5c) addr:0x20a5e3c +_Z19func_ov000_020a5e9cPi kind:function(arm,size=0x5c) addr:0x20a5e3c func_ov000_020a5ef8 kind:function(arm,size=0x30) addr:0x20a5e98 func_ov000_020a5f28 kind:function(arm,size=0x30) addr:0x20a5ec8 func_ov000_020a5f58 kind:function(arm,size=0x14) addr:0x20a5ef8 diff --git a/config/usa/arm9/overlays/ov004/symbols.txt b/config/usa/arm9/overlays/ov004/symbols.txt index 1728bd3a..764c01a8 100644 --- a/config/usa/arm9/overlays/ov004/symbols.txt +++ b/config/usa/arm9/overlays/ov004/symbols.txt @@ -41,7 +41,7 @@ func_ov004_02101fe8 kind:function(thumb,size=0x24) addr:0x2101f68 func_ov004_0210200c kind:function(thumb,size=0x254) addr:0x2101f8c func_ov004_02102260 kind:function(thumb,size=0x4) addr:0x21021e0 func_ov004_02102264 kind:function(thumb,size=0x260) addr:0x21021e4 -func_ov004_021024c4 kind:function(thumb,size=0x114) addr:0x2102444 +_Z19func_ov004_021024c4P10MapManageribi kind:function(thumb,size=0x114) addr:0x2102444 func_ov004_021025d8 kind:function(thumb,size=0x10) addr:0x2102558 func_ov004_021025e8 kind:function(thumb,size=0x34) addr:0x2102568 func_ov004_0210261c kind:function(arm,size=0x4) addr:0x210259c @@ -51,7 +51,7 @@ func_ov004_021026cc kind:function(thumb,size=0x24) addr:0x210264c func_ov004_021026f0 kind:function(thumb,size=0x4c) addr:0x2102670 func_ov004_0210273c kind:function(thumb,size=0xc) addr:0x21026bc func_ov004_02102748 kind:function(thumb,size=0x28) addr:0x21026c8 -func_ov004_02102770 kind:function(thumb,size=0x44) addr:0x21026f0 +_Z19func_ov004_02102770Pi kind:function(thumb,size=0x44) addr:0x21026f0 func_ov004_021027b4 kind:function(arm,size=0x28) addr:0x2102734 func_ov004_021027dc kind:function(arm,size=0x4) addr:0x210275c func_ov004_021027e0 kind:function(arm,size=0x14) addr:0x2102760 @@ -72,7 +72,7 @@ func_ov004_02102aa0 kind:function(thumb,size=0x38) addr:0x2102a20 func_ov004_02102ad8 kind:function(thumb,size=0x20) addr:0x2102a58 func_ov004_02102af8 kind:function(thumb,size=0x8) addr:0x2102a78 func_ov004_02102b00 kind:function(thumb,size=0x28) addr:0x2102a80 -func_ov004_02102b28 kind:function(thumb,size=0x54) addr:0x2102aa8 +_Z19func_ov004_02102b28Pi kind:function(thumb,size=0x54) addr:0x2102aa8 func_ov004_02102b7c kind:function(arm,size=0x14) addr:0x2102afc func_ov004_02102b90 kind:function(arm,size=0x14) addr:0x2102b10 func_ov004_02102ba4 kind:function(arm,size=0x44) addr:0x2102b24 @@ -86,7 +86,7 @@ func_ov004_02102da4 kind:function(thumb,size=0x44) addr:0x2102d24 func_ov004_02102de8 kind:function(thumb,size=0x4) addr:0x2102d68 func_ov004_02102dec kind:function(thumb,size=0x2c) addr:0x2102d6c func_ov004_02102e18 kind:function(thumb,size=0x24) addr:0x2102d98 -func_ov004_02102e3c kind:function(thumb,size=0x1c) addr:0x2102dbc +_Z19func_ov004_02102e3cPi kind:function(thumb,size=0x1c) addr:0x2102dbc func_ov004_02102e58 kind:function(thumb,size=0x5ec) addr:0x2102dd8 func_ov004_02103444 kind:function(thumb,size=0xb8) addr:0x21033c4 func_ov004_021034fc kind:function(thumb,size=0xbc) addr:0x210347c @@ -137,8 +137,8 @@ func_ov004_0210532c kind:function(thumb,size=0xb0) addr:0x21052ac func_ov004_021053dc kind:function(thumb,size=0xc8) addr:0x210535c func_ov004_021054a4 kind:function(thumb,size=0xa8) addr:0x2105424 func_ov004_0210554c kind:function(thumb,size=0x2c) addr:0x21054cc -func_ov004_02105578 kind:function(thumb,size=0x90) addr:0x21054f8 -func_ov004_02105608 kind:function(thumb,size=0xb0) addr:0x2105588 +_Z19func_ov004_02105578P12ActorManagerj kind:function(thumb,size=0x90) addr:0x21054f8 +_Z19func_ov004_02105608P12ActorManageriii kind:function(thumb,size=0xb0) addr:0x2105588 func_ov004_021056b8 kind:function(thumb,size=0x10) addr:0x2105638 func_ov004_021056c8 kind:function(thumb,size=0x28) addr:0x2105648 func_ov004_021056f0 kind:function(thumb,size=0x24) addr:0x2105670 diff --git a/config/usa/arm9/overlays/ov015/symbols.txt b/config/usa/arm9/overlays/ov015/symbols.txt index a0c36c29..65f56727 100644 --- a/config/usa/arm9/overlays/ov015/symbols.txt +++ b/config/usa/arm9/overlays/ov015/symbols.txt @@ -287,7 +287,7 @@ func_ov015_02129b30 kind:function(arm,size=0x8) addr:0x2129ab0 func_ov015_02129b38 kind:function(arm,size=0x18) addr:0x2129ab8 func_ov015_02129b50 kind:function(arm,size=0xb4) addr:0x2129ad0 func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129b84 -func_ov015_02129c14 kind:function(arm,size=0x10) addr:0x2129b94 +_Z19func_ov015_02129c14v kind:function(arm,size=0x10) addr:0x2129b94 func_ov015_02129c24 kind:function(arm,size=0x10) addr:0x2129ba4 func_ov015_02129c34 kind:function(arm,size=0x10) addr:0x2129bb4 func_ov015_02129c44 kind:function(arm,size=0x10) addr:0x2129bc4 diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index b1e42cd0..f67ac7bc 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -42,9 +42,9 @@ public: 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_0208210c(unk32 param_2, unk32 *param_3); void func_ov00_0208230c(s32 *param_2); - void func_ov00_02082348(unk32 param_2); + void func_ov00_02082348(unk32 *param_2); void func_ov00_020823a4(unk32 param_2); void func_ov00_020823b4(); bool func_ov00_020823c4(unk32 *param_2, s32 param_3); diff --git a/include/lib/math.h b/include/lib/math.h index f7204acc..b5a64150 100644 --- a/include/lib/math.h +++ b/include/lib/math.h @@ -48,9 +48,11 @@ extern "C" void Vec3p_Sub(Vec3p *a, Vec3p *b, Vec3p *out); extern "C" q20 Vec3p_Dot(Vec3p *a, Vec3p *b); extern "C" void Vec3p_Cross(Vec3p *a, Vec3p *b, Vec3p *out); extern "C" q20 Vec3p_Length(Vec3p *a); -extern "C" void Vec3p_Normalize(Vec3p *vec, Vec3p *out); +// extern "C" bool Vec3p_Normalize(Vec3p *vec); // 0x1fffb4c (this calls Vec3p_Normalize at 0x1ff9d4c) +extern "C" void Vec3p_Normalize(Vec3p *vec, Vec3p *out); // 0x1ff9d4c extern "C" void Vec3p_Axpy(q20 a, Vec3p *x, Vec3p *y, Vec3p *out); extern "C" q20 Vec3p_Distance(Vec3p *a, Vec3p *b); +extern "C" void Vec3p_Scale(Vec3p *vec, q20 scale); inline void Vec3p_Rotate(Vec3p *vec, q20 sin, q20 cos, Vec3p *out) { out->x += MUL_Q20(vec->z, sin); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 1993c556..f934cbfe 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -2,17 +2,41 @@ #include "Actor/Actor.hpp" #include "Actor/ActorManager.hpp" #include "Player/PlayerBase.hpp" +#include "Save/AdventureFlags.hpp" extern u32 func_ov000_02078bc4(unk32 param_1); -extern void func_ov00_02078bf0(s32 *param_1, unk32 param_2); +extern void func_ov000_02078bf0(s32 *param_1, unk32 param_2); +extern s32 func_ov000_02078fe8(s32 *param_1); +extern void func_ov000_020798bc(s32 *param_1, s32 param_2); +extern void func_ov000_0208b13c(s32 *param_1); extern void func_ov000_0208cc88(s32 *param1); extern void func_ov000_0208d620(s32 *param_1); extern void func_ov000_0208d680(s32 *param_1); +extern void func_ov000_0208e6b0(s32 *param_1, Vec3p *param_2); +extern void func_ov000_02093a1c(u32 *param_1, s32 *param_2); +extern void func_ov000_02096324(s32 *param_1, s32 param_2); extern s32 *func_ov000_02096418(s32 *param_1); +extern void func_ov000_0209d6e8(s32 param_1, s32 param_2); +extern unk32 func_ov000_020a5e9c(unk32 *param_1); +extern void func_ov004_021024c4(MapManager *param_1, s32 param_2, bool param_3, s32 param_4); +extern void func_ov004_02102770(s32 *param_1); +extern void func_ov004_02102b28(s32 *param_1); +extern void func_ov004_02102e3c(s32 *param_1); +extern void func_ov004_02105578(ActorManager *param_1, u32 param_2); +extern void func_ov004_02105608(ActorManager *param_1, unk32 param_2, unk32 param_3, unk32 param_4); +extern s32 func_ov015_02129c14(); extern bool func_ov015_02129c44(s32 param_1); +extern s32 *data_027e0c68; +extern s32 *data_027e0d38; +extern s32 *data_027e0d3c; +extern s32 *data_027e0f64; extern s32 *data_027e0f68; +extern s32 *data_027e0f6c; extern s32 *data_027e0f70; +extern s32 *data_027e0f78; +extern s32 *data_027e0f7c; +extern s32 *data_027e103c; ARM void MapManager::GetCourseDungeonProgress(CourseProgress *param_2) { this->mCourse->GetDungeonProgress(param_2); @@ -22,29 +46,29 @@ ARM void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_ this->mCourse->func_ov00_0207ca28(param_2, param_3, param_4); } -unk8 MapManager::func_ov00_0208210c(unk32 param_2, unk32 param_3) { - /* undefined *puVar1; - undefined uVar2; - undefined4 uVar3; - int iVar4; - undefined4 local_40; - undefined4 local_3c; - undefined4 local_38; - undefined4 local_34; - undefined2 local_30; - undefined local_2e; - undefined local_2d; - undefined local_2c; - undefined local_2b; - undefined4 local_28; - undefined4 local_24; - undefined4 local_20; - undefined4 local_1c; - undefined2 local_18; - undefined local_16; - undefined local_15; - undefined local_14; - undefined local_13; +unk8 MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { + unk32 *puVar1; + unk8 uVar2; + unk32 uVar3; + s32 iVar4; + unk32 local_40; + unk32 local_3c; + unk32 local_38; + unk32 local_34; + unk16 local_30; + unk8 local_2e; + unk8 local_2d; + unk8 local_2c; + unk8 local_2b; + unk32 local_28; + unk32 local_24; + unk32 local_20; + unk32 local_1c; + unk16 local_18; + unk8 local_16; + unk8 local_15; + unk8 local_14; + unk8 local_13; local_28 = 0x47; local_24 = 0; @@ -56,58 +80,58 @@ unk8 MapManager::func_ov00_0208210c(unk32 param_2, unk32 param_3) { local_14 = 0; local_13 = 0; if (param_2 == 0) { - FUN_overlay_d_0__02082348(param_1, &local_28); - uVar3 = FUN_overlay_d_0__020a5e9c(&local_28); - *param_3 = uVar3; - *(undefined *) (param_3 + 1) = local_16; - uVar2 = local_15; + this->func_ov00_02082348(&local_28); + uVar3 = func_ov000_020a5e9c(&local_28); + *param_3 = uVar3; + *(unk8 *) (param_3 + 1) = local_16; + uVar2 = local_15; } else { - *param_3 = 0xb; - *(undefined *) (param_3 + 1) = 2; - uVar2 = 4; + *param_3 = 0xb; + *(unk8 *) (param_3 + 1) = 2; + uVar2 = 4; } - *(undefined *) ((int) param_3 + 5) = uVar2; - uVar3 = FUN_overlay_d_0__020a5e9c(*(int *) (*(int *) PTR_PTR_overlay_d_0__02082300 + 0x28) + 0x1c); - puVar1 = PTR_PTR_overlay_d_0__02082300; - param_3[2] = uVar3; - *(undefined *) (param_3 + 4) = *(undefined *) (*(int *) (*(int *) puVar1 + 0x28) + 0x2e); - *(undefined2 *) (param_3 + 5) = *(undefined2 *) (*(int *) (*(int *) puVar1 + 0x28) + 0x36); - iVar4 = *(int *) (*(int *) puVar1 + 0x28); - param_3[6] = *(undefined4 *) (iVar4 + 0x38); - param_3[7] = *(undefined4 *) (iVar4 + 0x3c); - param_3[8] = *(undefined4 *) (iVar4 + 0x40); - uVar3 = FUN_overlay_d_0__020a5e9c(*(int *) (*(int *) puVar1 + 0x28) + 0x44); - param_3[3] = uVar3; - puVar1 = PTR_PTR_overlay_d_0__02082300; - *(undefined *) ((int) param_3 + 0x11) = *(undefined *) (*(int *) (*(int *) PTR_PTR_overlay_d_0__02082300 + 0x28) + 0x56); - iVar4 = *(int *) (*(int *) puVar1 + 0x28); - param_3[9] = *(undefined4 *) (iVar4 + 0x5c); - param_3[10] = *(undefined4 *) (iVar4 + 0x60); - param_3[0xb] = *(undefined4 *) (iVar4 + 100); - *(undefined2 *) ((int) param_3 + 0x16) = *(undefined2 *) (*(int *) (*(int *) puVar1 + 0x28) + 0x68); - iVar4 = *(int *) (*(int *) puVar1 + 0x28); - local_40 = *(undefined4 *) (iVar4 + 0x70); - local_3c = *(undefined4 *) (iVar4 + 0x74); - local_38 = *(undefined4 *) (iVar4 + 0x78); - local_34 = *(undefined4 *) (iVar4 + 0x7c); - local_30 = *(undefined2 *) (iVar4 + 0x80); - local_2e = *(undefined *) (iVar4 + 0x82); - local_2d = *(undefined *) (iVar4 + 0x83); - local_2c = *(undefined *) (iVar4 + 0x84); - local_2b = *(undefined *) (iVar4 + 0x85); - uVar3 = FUN_overlay_d_0__020a5e9c(&local_40); - param_3[0x70] = uVar3; - puVar1 = PTR_DWORD_overlay_d_0__02082304; - *(undefined *) ((int) param_3 + 0x1be) = local_2e; - *(undefined *) ((int) param_3 + 0x1bf) = local_2d; - FUN_overlay_d_0__02096324(*(undefined4 *) puVar1, param_3); - FUN_overlay_d_0__0209d6e8(*(undefined4 *) PTR_DWORD_overlay_d_0__02082308, param_3); - if (param_1->mCourse->mType != 3) { - *(undefined1 *) ((int) param_3 + 7) = param_1->field2_0x8; - *(undefined1 *) (param_3 + 0x6f) = param_1->field3_0x9; + *(unk8 *) ((int) param_3 + 5) = uVar2; + uVar3 = func_ov000_020a5e9c(data_027e0d38 + 0x28) + 0x1c; + puVar1 = data_027e0d38; + param_3[2] = uVar3; + *(unk8 *) (param_3 + 4) = *(unk8 *) (*(s32 *) (*(s32 *) puVar1 + 0x28) + 0x2e); + *(unk16 *) (param_3 + 5) = *(unk16 *) (*(s32 *) (*(s32 *) puVar1 + 0x28) + 0x36); + iVar4 = *(s32 *) (*(int *) puVar1 + 0x28); + param_3[6] = *(unk32 *) (iVar4 + 0x38); + param_3[7] = *(unk32 *) (iVar4 + 0x3c); + param_3[8] = *(unk32 *) (iVar4 + 0x40); + uVar3 = func_ov000_020a5e9c(puVar1 + 0x28) + 0x44; + param_3[3] = uVar3; + puVar1 = data_027e0d38; + *(unk8 *) ((int) param_3 + 0x11) = *(unk8 *) (*(s32 *) (*(s32 *) data_027e0d38 + 0x28) + 0x56); + iVar4 = *(s32 *) (*(s32 *) puVar1 + 0x28); + param_3[9] = *(unk32 *) (iVar4 + 0x5c); + param_3[10] = *(unk32 *) (iVar4 + 0x60); + param_3[0xb] = *(unk32 *) (iVar4 + 100); + *(unk16 *) ((int) param_3 + 0x16) = *(unk16 *) (*(s32 *) (*(s32 *) puVar1 + 0x28) + 0x68); + iVar4 = *(s32 *) (*(s32 *) puVar1 + 0x28); + local_40 = *(unk32 *) (iVar4 + 0x70); + local_3c = *(unk32 *) (iVar4 + 0x74); + local_38 = *(unk32 *) (iVar4 + 0x78); + local_34 = *(unk32 *) (iVar4 + 0x7c); + local_30 = *(unk16 *) (iVar4 + 0x80); + local_2e = *(unk8 *) (iVar4 + 0x82); + local_2d = *(unk8 *) (iVar4 + 0x83); + local_2c = *(unk8 *) (iVar4 + 0x84); + local_2b = *(unk8 *) (iVar4 + 0x85); + uVar3 = func_ov000_020a5e9c(&local_40); + param_3[0x70] = uVar3; + puVar1 = data_027e0f70; + *(unk8 *) ((int) param_3 + 0x1be) = local_2e; + *(unk8 *) ((int) param_3 + 0x1bf) = local_2d; + func_ov000_02096324(puVar1, *param_3); // unsure if (s32 *param_1, s32 param_2) or (s32 param_1, s32 *param_2) + func_ov000_0209d6e8(*data_027e0f7c, *param_3); + if (this->mCourse->mType != CourseType_TempleOfTheOceanKing) { + *(unk8 *) ((int) param_3 + 7) = this->mUnk_08; + *(unk8 *) (param_3 + 0x6f) = this->mUnk_09; return; } - return; */ + return; } ARM void MapManager::func_ov00_0208230c(s32 *param_2) { @@ -117,14 +141,14 @@ ARM void MapManager::func_ov00_0208230c(s32 *param_2) { *(unk8 *) ((u32) param_2 + 0x13) = this->mUnk_0c; } -ARM void MapManager::func_ov00_02082348(unk32 param_2) { +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, param_2); + func_ov000_02078bf0(var, *param_2); } ARM void MapManager::func_ov00_020823a4(unk32 param_2) { @@ -158,7 +182,7 @@ ARM void MapManager::MapData_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. + var = func_ov015_02129c14(); // MapBase::GetUnk_19c_Unk_28 according to Ghidra return var; } return 0; @@ -444,48 +468,48 @@ ARM void MapManager::func_ov00_02082af4() { } bool MapManager::func_ov00_02082b3c(s32 param_2) { - /* byte bVar1; - undefined *puVar2; - ushort uVar3; - uint uVar4; - undefined4 uVar5; - uint in_r3; + u8 bVar1; + PlayerBase *puVar2; + u16 uVar3; + u32 uVar4; + unk32 uVar5; + u32 in_r3; ActorManager *pAVar6; - undefined4 local_18; + unk32 local_18; - local_18 = in_r3; - Course::FindMapGridPos((Vec2b *) &local_18, param_1->mCourse, (uint) * (byte *) (param_2 + 0x12)); - uVar4 = GetCourseData_Unk_1c(param_1); - if (((((local_18 & 0xff) == uVar4) && (uVar4 = GetCourseData_Unk_1d(param_1), (local_18 >> 8 & 0xff) == uVar4)) && - ((*(int *) (param_2 + 8) != 1 || (*(int *) (*(int *) PTR_PTR_overlay_d_0__02082ce0 + 0x14) != 1)))) && + local_18 = in_r3; // what's the point of that? + this->mCourse->FindMapGridPos((Vec2b *) &local_18, this->mCourse, (u32) * (u8 *) (param_2 + 0x12)); + uVar4 = this->GetCurrentMapPosX(); + if (((((local_18 & 0xff) == uVar4) && (uVar4 = this->GetCurrentMapPosY(), (local_18 >> 8 & 0xff) == uVar4)) && + ((*(s32 *) (param_2 + 8) != 1 || (*(s32 *) (*(s32 *) data_027e0d38 + 0x14) != 1)))) && (*(char *) (param_2 + 0x15) == '\0')) { - AdventureFlags::FUN_overlay_d_0__020976c8(*(AdventureFlags **) PTR_gAdventureFlags_overlay_d_0__02082ce4); - puVar2 = PTR_gPlayer_overlay_d_0__02082d00; - param_1->field6_0xc = *(undefined *) (param_2 + 0x13); - (**(code **) (**(int **) puVar2 + 0x38))(*(int **) puVar2, *(undefined *) (param_2 + 0x13), 0); - UnkStruct_027e0c68::FUN_overlay_d_4__02106db8((UnkStruct_027e0c68 *) PTR_DWORD_overlay_d_0__02082d04); - (**(code **) (param_1->mMap->vtable + 0x18))(); + gAdventureFlags->func_ov00_020976c8(); + puVar2 = gPlayer; + this->mUnk_0c = *(unk32 *) (param_2 + 0x13); + // (**(code **) (**(int **) puVar2 + 0x38))(*(int **) puVar2, *(unk32 *) (param_2 + 0x13), 0); + // UnkStruct_027e0c68::FUN_overlay_d_4__02106db8((UnkStruct_027e0c68 *) PTR_DWORD_overlay_d_0__02082d04); + this->mMap->vfunc_18(); } else { - AdventureFlags::FUN_overlay_d_0__020976c8(*(AdventureFlags **) PTR_gAdventureFlags_overlay_d_0__02082ce4); - FUN_overlay_d_0__0208b13c(*(undefined4 *) PTR_DWORD_overlay_d_0__02082ce8); - pAVar6 = *PTR_gActorManager_overlay_d_0__02082cec; - uVar5 = FUN_overlay_d_0__02082d08(param_1); - FUN_overlay_d_4__02105608(pAVar6, local_18 & 0xff, local_18 >> 8 & 0xff, uVar5); - (**(code **) (param_1->mMap->vtable + 0x2c))(); - FUN_overlay_d_4__02102b28(*(undefined4 *) PTR_DWORD_overlay_d_0__02082cf0); - FUN_overlay_d_4__02102770(*(undefined4 *) PTR_DWORD_overlay_d_0__02082cf4); - FUN_overlay_d_4__02102e3c(*(undefined4 *) PTR_DWORD_overlay_d_0__02082cf8); - bVar1 = *(byte *) (param_2 + 0x12); - uVar3 = Course::FindCurrentMapData_Unk_04(param_1->mCourse); - uVar4 = Course::FindMapData_Unk_04(param_1->mCourse, (uint) bVar1); - (param_1->mCourse->mCurrMapPos).x = (byte) local_18; - (param_1->mCourse->mCurrMapPos).y = local_18._1_1_; - FUN_overlay_d_4__021024c4(param_1, param_2, uVar3 != uVar4, 0); - FUN_overlay_d_4__02105578(*PTR_gActorManager_overlay_d_0__02082cec, (uint) * (byte *) (param_2 + 0x12)); - UnkStruct_027e0103c::thunk_FUN_overlay_d_0__020cf7e8(*PTR_PTR_overlay_d_0__02082cfc); + gAdventureFlags->func_ov00_020976c8(); + func_ov000_0208b13c(data_027e0f64); + pAVar6 = gActorManager; + uVar5 = this->func_ov00_02082d08(); + func_ov004_02105608(pAVar6, local_18 & 0xff, local_18 >> 8 & 0xff, uVar5); + this->mMap->vfunc_2c(); + func_ov004_02102b28(data_027e0f68); + func_ov004_02102770(data_027e0f6c); + func_ov004_02102e3c(data_027e0f78); + bVar1 = *(u8 *) (param_2 + 0x12); + uVar3 = this->mCourse->FindCurrentMapData_Unk_04(); + uVar4 = this->mCourse->FindMapData_Unk_04((u32) bVar1); + (this->mCourse->mCurrMapPos).x = (u8) local_18; + (this->mCourse->mCurrMapPos).y = (u8) * (&local_18 + 0x4); // I assume this is what Ghidra means by "local_18._1_1_" + func_ov004_021024c4(this, param_2, uVar3 != uVar4, 0); + func_ov004_02105578(gActorManager, (u32) * (u8 *) (param_2 + 0x12)); + // UnkStruct_027e0103c::thunk_FUN_overlay_d_0__020cf7e8(*PTR_PTR_overlay_d_0__02082cfc); } - return true; */ + return true; } ARM u8 MapManager::func_ov00_02082d08() { @@ -949,19 +973,19 @@ ARM bool MapManager::func_ov00_02083790(s32 param_2) { } ARM bool MapManager::func_ov00_02083840(s32 param_2) { - unk8 *puVar1; - unk8 *puVar2; + s32 *puVar1; + s32 *puVar2; bool bVar3; s32 iVar4; - // puVar2 = PTR_DWORD_overlay_d_0__020838c0; - // puVar1 = PTR_DWORD_overlay_d_0__020838bc; + puVar2 = data_027e0d3c; + puVar1 = data_027e0f64; if (param_2 != 0) { - // *(unk32 *) (*(int *) (*(int *) PTR_DWORD_overlay_d_0__020838bc + 8) + 0x1b4) = 0xffffffff; - // *(unk32 *) (*(int *) (*(int *) puVar1 + 4) + 0x1b4) = 0xffffffff; - // iVar4 = FUN_overlay_d_0__02078fe8(*(unk32 *) puVar2); + *(unk32 *) (*(int *) (*(int *) data_027e0f64 + 8) + 0x1b4) = 0xffffffff; + *(unk32 *) (*(int *) (*(int *) puVar1 + 4) + 0x1b4) = 0xffffffff; + iVar4 = func_ov000_02078fe8(puVar2); if (-1 < iVar4) { - // FUN_overlay_d_0__020798bc(*(unk32 *) PTR_DWORD_overlay_d_0__020838c0, 0x10); + func_ov000_020798bc(data_027e0d3c, 0x10); gActorManager->func_ov00_020c3ce8(param_2, false); } bVar3 = this->mMap->TriggerOfType_vfunc_10(param_2); @@ -1243,7 +1267,7 @@ unk8 MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *pa } dVar2 = param_2->MapData_vfunc_70(param_3); if (dVar2 != 0xffff) { - // FUN_overlay_d_0__02093a1c(param_1, *(unk32 *) PTR_DWORD_overlay_d_0__02084020); + func_ov000_02093a1c(param_1, data_027e0f6c); return; } *param_1 = 0; @@ -3094,10 +3118,10 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, s32 param_6, unk32 param_7, Vec3p *param_8, Vec3p *param_9) { - /* bool bVar1; + bool bVar1; int iVar2; Vec3p VStack_a0; - undefined auStack_94[24]; + unk32 auStack_94[24]; Vec3p local_7c; int local_70[5]; Vec3p local_5c; @@ -3107,33 +3131,34 @@ bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4 int local_2c; Vec3p VStack_28; - Vec3p::Sub(param_3, param_4, &VStack_28); - iVar2 = (**(code **) (*param_2 + 8))(); + Vec3p_Sub(param_3, param_4, &VStack_28); + // iVar2 = (**(code **) (*param_2 + 8))(); if (iVar2 == 0) { - (**(code **) (*param_2 + 0x24))(param_2, &local_38); + //(**(code **) (*param_2 + 0x24))(param_2, &local_38); if (param_6 == 0) { local_44.x = local_38.x; local_44.y = local_38.y; local_44.z = local_38.z; - iVar2 = Vec3p::Distance(param_3, &local_44); - Vec3p::Sub(param_3, &local_38, &local_44); - bVar1 = Vec3p::Normalize(&local_44); + iVar2 = Vec3p_Distance(param_3, &local_44); + Vec3p_Sub(param_3, &local_38, &local_44); + // bVar1 = Vec3p_Normalize(&local_44); // This function needs to be declared and defined separately to the other + // Vec3p_Normalize with the return type as bool. if (!bVar1) { local_44.x = 0; local_44.y = 0; local_44.z = 0x1000; } - Vec3p::Scale(&local_44, (local_2c + param_5) - iVar2); - Vec3p::Add(param_3, &local_44, param_8); + Vec3p_Scale(&local_44, (local_2c + param_5) - iVar2); + Vec3p_Add(param_3, &local_44, param_8); } else { - Vec3p::Scale(&VStack_28, param_6); - Vec3p::Add(param_4, &VStack_28, param_8); + Vec3p_Scale(&VStack_28, param_6); + Vec3p_Add(param_4, &VStack_28, param_8); } local_5c.x = local_38.x; local_5c.y = local_38.y; local_5c.z = local_38.z; - Vec3p::Sub(param_4, &local_5c, &local_50); - Vec3p::Normalize(&local_50); + Vec3p_Sub(param_4, &local_5c, &local_50); + // Vec3p_Normalize(&local_50); param_9->x = local_50.x; param_9->y = local_50.y; param_9->z = local_50.z; @@ -3143,25 +3168,25 @@ bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (iVar2 != 2) { return false; } - (**(code **) (*param_2 + 0x2c))(param_2, auStack_94); - FUN_overlay_d_0__0208e6b0(auStack_94, &VStack_a0); - Vec3p::Scale(&VStack_28, param_6); - Vec3p::Add(param_4, &VStack_28, param_8); - Vec3p::Sub(param_4, &VStack_a0, param_9); - Vec3p::Normalize(param_9); + //(**(code **) (*param_2 + 0x2c))(param_2, auStack_94); + func_ov000_0208e6b0(auStack_94, &VStack_a0); + Vec3p_Scale(&VStack_28, param_6); // Doesn't exist. + Vec3p_Add(param_4, &VStack_28, param_8); + Vec3p_Sub(param_4, &VStack_a0, param_9); + // Vec3p_Normalize(param_9); return false; } local_70[3] = 0; local_70[0] = 0; local_70[1] = 0; local_70[2] = 0; - (**(code **) (*param_2 + 0x28))(param_2, local_70); - Vec3p::Scale(&VStack_28, param_6); - Vec3p::Add(param_4, &VStack_28, param_8); + // (**(code **) (*param_2 + 0x28))(param_2, local_70); + // Vec3p_Scale(&VStack_28, param_6); // Doesn't exist. + Vec3p_Add(param_4, &VStack_28, param_8); local_7c.x = local_70[0]; local_7c.z = local_70[2]; local_7c.y = param_4->y; - Vec3p::Sub(param_4, &local_7c, param_9); - Vec3p::Normalize(param_9); - return false; */ + Vec3p_Sub(param_4, &local_7c, param_9); + // Vec3p_Normalize(param_9); + return false; } From ec1bda51131ca45bc904cb5bb879a2acceea9ca0 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 19 Jan 2025 22:53:58 +0100 Subject: [PATCH 23/62] Improve MapManager::func_ov00_02082454 Improve MapManager::func_ov00_02082494 Improve MapManager::DestroyMap Uncomment MapManager::func_ov00_02086284 --- config/eur/arm9/overlays/ov000/symbols.txt | 6 +- config/eur/arm9/overlays/ov015/symbols.txt | 4 +- config/usa/arm9/overlays/ov000/symbols.txt | 6 +- config/usa/arm9/overlays/ov015/symbols.txt | 4 +- src/00_Core/Map/MapManager.cpp | 165 +++++++++++---------- 5 files changed, 94 insertions(+), 91 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index a1fb651c..455cc76c 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -910,9 +910,9 @@ func_ov000_0208e4f4 kind:function(arm,size=0x4) addr:0x208e4f4 func_ov000_0208e4f8 kind:function(arm,size=0x1c) addr:0x208e4f8 func_ov000_0208e514 kind:function(arm,size=0x16c) addr:0x208e514 func_ov000_0208e680 kind:function(arm,size=0x30) addr:0x208e680 -func_ov000_0208e6b0 kind:function(arm,size=0x40) addr:0x208e6b0 -func_ov000_0208e6f0 kind:function(arm,size=0x14) addr:0x208e6f0 -func_ov000_0208e704 kind:function(arm,size=0x14) addr:0x208e704 +_Z19func_ov000_0208e6b0P5Vec3pS0_ kind:function(arm,size=0x40) addr:0x208e6b0 +_Z19func_ov000_0208e6f0P5Vec3p kind:function(arm,size=0x14) addr:0x208e6f0 +_Z19func_ov000_0208e704P5Vec3p kind:function(arm,size=0x14) addr:0x208e704 func_ov000_0208e718 kind:function(arm,size=0x14) addr:0x208e718 _ZN4AABB8ContainsEP5Vec3p kind:function(arm,size=0x78) addr:0x208e72c _ZN4AABB12ContainsInXZEP5Vec3p kind:function(arm,size=0x44) addr:0x208e7a4 diff --git a/config/eur/arm9/overlays/ov015/symbols.txt b/config/eur/arm9/overlays/ov015/symbols.txt index 2ffe3b33..be20978e 100644 --- a/config/eur/arm9/overlays/ov015/symbols.txt +++ b/config/eur/arm9/overlays/ov015/symbols.txt @@ -288,8 +288,8 @@ func_ov015_02129b38 kind:function(arm,size=0x18) addr:0x2129b38 func_ov015_02129b50 kind:function(arm,size=0xb4) addr:0x2129b50 func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129c04 _Z19func_ov015_02129c14v kind:function(arm,size=0x10) addr:0x2129c14 -func_ov015_02129c24 kind:function(arm,size=0x10) addr:0x2129c24 -func_ov015_02129c34 kind:function(arm,size=0x10) addr:0x2129c34 +_Z19func_ov015_02129c24P5Vec3pS0_ kind:function(arm,size=0x10) addr:0x2129c24 +_Z19func_ov015_02129c34i kind:function(arm,size=0x10) addr:0x2129c34 func_ov015_02129c44 kind:function(arm,size=0x10) addr:0x2129c44 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129c54 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129ca4 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index b09a0ea0..65ce9bc4 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -910,9 +910,9 @@ func_ov000_0208e4f4 kind:function(arm,size=0x4) addr:0x208e494 func_ov000_0208e4f8 kind:function(arm,size=0x1c) addr:0x208e498 func_ov000_0208e514 kind:function(arm,size=0x16c) addr:0x208e4b4 func_ov000_0208e680 kind:function(arm,size=0x30) addr:0x208e620 -func_ov000_0208e6b0 kind:function(arm,size=0x40) addr:0x208e650 -func_ov000_0208e6f0 kind:function(arm,size=0x14) addr:0x208e690 -func_ov000_0208e704 kind:function(arm,size=0x14) addr:0x208e6a4 +_Z19func_ov000_0208e6b0P5Vec3pS0_ kind:function(arm,size=0x40) addr:0x208e650 +_Z19func_ov000_0208e6f0P5Vec3p kind:function(arm,size=0x14) addr:0x208e690 +_Z19func_ov000_0208e704P5Vec3p kind:function(arm,size=0x14) addr:0x208e6a4 func_ov000_0208e718 kind:function(arm,size=0x14) addr:0x208e6b8 _ZN4AABB8ContainsEP5Vec3p kind:function(arm,size=0x78) addr:0x208e6cc _ZN4AABB12ContainsInXZEP5Vec3p kind:function(arm,size=0x44) addr:0x208e744 diff --git a/config/usa/arm9/overlays/ov015/symbols.txt b/config/usa/arm9/overlays/ov015/symbols.txt index 65f56727..14ec755f 100644 --- a/config/usa/arm9/overlays/ov015/symbols.txt +++ b/config/usa/arm9/overlays/ov015/symbols.txt @@ -288,8 +288,8 @@ func_ov015_02129b38 kind:function(arm,size=0x18) addr:0x2129ab8 func_ov015_02129b50 kind:function(arm,size=0xb4) addr:0x2129ad0 func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129b84 _Z19func_ov015_02129c14v kind:function(arm,size=0x10) addr:0x2129b94 -func_ov015_02129c24 kind:function(arm,size=0x10) addr:0x2129ba4 -func_ov015_02129c34 kind:function(arm,size=0x10) addr:0x2129bb4 +_Z19func_ov015_02129c24P5Vec3pS0_ kind:function(arm,size=0x10) addr:0x2129ba4 +_Z19func_ov015_02129c34i kind:function(arm,size=0x10) addr:0x2129bb4 func_ov015_02129c44 kind:function(arm,size=0x10) addr:0x2129bc4 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129bd4 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129c24 diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index f934cbfe..a2fd77ff 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -12,7 +12,9 @@ extern void func_ov000_0208b13c(s32 *param_1); extern void func_ov000_0208cc88(s32 *param1); extern void func_ov000_0208d620(s32 *param_1); extern void func_ov000_0208d680(s32 *param_1); -extern void func_ov000_0208e6b0(s32 *param_1, Vec3p *param_2); +extern void func_ov000_0208e6b0(Vec3p *param_1, Vec3p *param_2); +extern s32 func_ov000_0208e6f0(Vec3p *param_1); +extern s32 func_ov000_0208e704(Vec3p *param_1); extern void func_ov000_02093a1c(u32 *param_1, s32 *param_2); extern void func_ov000_02096324(s32 *param_1, s32 param_2); extern s32 *func_ov000_02096418(s32 *param_1); @@ -25,6 +27,8 @@ extern void func_ov004_02102e3c(s32 *param_1); extern void func_ov004_02105578(ActorManager *param_1, u32 param_2); extern void func_ov004_02105608(ActorManager *param_1, unk32 param_2, unk32 param_3, unk32 param_4); extern s32 func_ov015_02129c14(); +extern bool func_ov015_02129c24(Vec3p *param_1, Vec3p *param_2); +extern bool func_ov015_02129c34(s32 param_1); extern bool func_ov015_02129c44(s32 param_1); extern s32 *data_027e0c68; @@ -191,7 +195,7 @@ ARM s32 MapManager::func_ov00_02082424() { 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. + bool state = func_ov015_02129c24(param_2, param_3); return state; } return false; @@ -200,7 +204,7 @@ ARM bool MapManager::func_ov00_02082454(Vec3p *param_2, Vec3p *param_3) { 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. + bool state = func_ov015_02129c34(param_2); return state; } return false; @@ -324,9 +328,8 @@ ARM void MapManager::CreateMap(unk32 mapType, unk32 param_3, unk32 param_4) { ARM void MapManager::DestroyMap() { if (this->mMap == NULL) { return; - } else { - // this->mMap->vfunc_04(); Doesn't exist. } + this->mMap->~MapBase(); } ARM void MapManager::MapData_vfunc_44() { @@ -2822,57 +2825,57 @@ unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, u16 param_6, Vec3p *param_7, Vec3p *param_8) { - /* bool bVar1; - int iVar2; - int iVar3; - int local_d0[2]; - int local_c8; + bool bVar1; + s32 iVar2; + s32 iVar3; + Vec3p local_d0; + s32 local_c8; Vec3p local_c4; Vec3p local_b8; - int local_ac[2]; - int local_a4; - int local_a0[2]; - int local_98; - int local_94; - int local_90; - int local_8c; + Vec3p local_ac; + s32 local_a4; + Vec3p local_a0; + s32 local_98; + s32 local_94; + s32 local_90; + s32 local_8c; Vec3p local_88; Vec3p local_7c; Vec3p local_70; - int local_64; - int local_60; - int local_5c; - int local_58; - int local_54; + s32 local_64; + s32 local_60; + s32 local_5c; + s32 local_58; + s32 local_54; Vec3p local_50; Vec3p local_44; Vec3p local_38; - int local_2c; - int iStack_28; - int iStack_24; - int local_20; + s32 local_2c; + s32 iStack_28; + s32 iStack_24; + s32 local_20; - iVar2 = (**(code **) (*param_2 + 8))(); + // iVar2 = (**(code **) (*param_2 + 8))(); // What pointer address is contained in param_2? if (iVar2 == 0) { - (**(code **) (*param_2 + 0x24))(param_2, &local_2c); + // (**(code **) (*param_2 + 0x24))(param_2, &local_2c); local_38.x = local_2c; local_38.y = iStack_28; local_38.z = iStack_24; - iVar2 = Vec3p::Distance(param_3, &local_38); - Vec3p::Sub(param_3, &local_38, &local_38); - bVar1 = Vec3p::Normalize(&local_38); + iVar2 = Vec3p_Distance(param_3, &local_38); + Vec3p_Sub(param_3, &local_38, &local_38); + // bVar1 = Vec3p_Normalize(&local_38); if (!bVar1) { local_38.x = 0; local_38.y = 0; local_38.z = 0x1000; } - Vec3p::Scale(&local_38, (local_20 + param_5) - iVar2); - Vec3p::Add(param_3, &local_38, param_7); + Vec3p_Scale(&local_38, (local_20 + param_5) - iVar2); + Vec3p_Add(param_3, &local_38, param_7); local_50.x = local_2c; local_50.y = iStack_28; local_50.z = iStack_24; - Vec3p::Sub(param_4, &local_50, &local_44); - Vec3p::Normalize(&local_44); + Vec3p_Sub(param_4, &local_50, &local_44); + // Vec3p_Normalize(&local_44); param_8->x = local_44.x; param_8->y = local_44.y; param_8->z = local_44.z; @@ -2883,12 +2886,12 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 local_64 = 0; local_60 = 0; local_5c = 0; - (**(code **) (*param_2 + 0x28))(param_2, &local_64); + // (**(code **) (*param_2 + 0x28))(param_2, &local_64); local_70.y = param_3->y; local_70.x = local_64; local_70.z = local_5c; if ((((*(char *) ((int) param_2 + 5) != '\0') && ((param_6 & 0x80) != 0)) && - (iVar2 = Vec3p::Distance(&local_70, param_3), iVar2 <= local_58)) && + (iVar2 = Vec3p_Distance(&local_70, param_3), iVar2 <= local_58)) && ((local_60 + local_54 <= param_4->y && (iVar2 = param_5 + local_60 + local_54, param_3->y <= iVar2)))) { param_7->y = iVar2; @@ -2897,22 +2900,22 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 param_8->z = 0; return true; } - iVar2 = Vec3p::Distance(param_3, &local_70); + iVar2 = Vec3p_Distance(param_3, &local_70); iVar3 = local_58 + param_5; - Vec3p::Sub(param_3, &local_70, &local_70); - bVar1 = Vec3p::Normalize(&local_70); + Vec3p_Sub(param_3, &local_70, &local_70); + // bVar1 = Vec3p_Normalize(&local_70); if (!bVar1) { local_70.x = 0; local_70.y = 0; local_70.z = 0x1000; } - Vec3p::Scale(&local_70, iVar3 - iVar2); - Vec3p::Add(param_3, &local_70, param_7); + Vec3p_Scale(&local_70, iVar3 - iVar2); + Vec3p_Add(param_3, &local_70, param_7); local_88.x = local_64; local_88.z = local_5c; local_88.y = param_4->y; - Vec3p::Sub(param_4, &local_88, &local_7c); - Vec3p::Normalize(&local_7c); + Vec3p_Sub(param_4, &local_88, &local_7c); + // Vec3p_Normalize(&local_7c); param_8->x = local_7c.x; param_8->y = local_7c.y; param_8->z = local_7c.z; @@ -2921,23 +2924,23 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (iVar2 != 2) { return false; } - (**(code **) (*param_2 + 0x2c))(param_2, local_a0); - FUN_overlay_d_0__0208e6b0(local_a0, local_ac); + // (**(code **) (*param_2 + 0x2c))(param_2, local_a0); + func_ov000_0208e6b0(&local_a0, &local_ac); local_b8.y = param_3->y; - local_b8.x = local_ac[0]; + local_b8.x = local_ac.x; // previously = local_ac[0] (of type s32) local_b8.z = local_a4; - Vec3p::Sub(param_3, &local_b8, &local_b8); + Vec3p_Sub(param_3, &local_b8, &local_b8); local_c4.x = local_b8.x; local_c4.y = local_b8.y; local_c4.z = local_b8.z; - bVar1 = Vec3p::Normalize(&local_c4); + // bVar1 = Vec3p_Normalize(&local_c4); if (!bVar1) { local_c4.x = 0; local_c4.y = 0; local_c4.z = 0x1000; } if (((*(char *) ((int) param_2 + 5) != '\0') && ((param_6 & 0x80) != 0)) && - (((param_3->x < local_94 && (((local_a0[0] <= param_3->x && (param_3->z < local_8c)) && (local_98 <= param_3->z)))) || + (((param_3->x < local_94 && (((local_a0.x <= param_3->x && (param_3->z < local_8c)) && (local_98 <= param_3->z)))) || (local_90 + param_5 <= param_4->y)))) { param_7->y = local_90 + param_5; @@ -2946,24 +2949,24 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 param_8->z = 0; return true; } - FUN_overlay_d_0__0208e6b0(local_a0, local_d0); + func_ov000_0208e6b0(&local_a0, &local_d0); iVar2 = param_3->z; - if (((iVar2 < local_8c) && (local_98 <= iVar2)) && ((param_3->x < local_94 && (local_a0[0] <= param_3->x)))) { - iVar2 = FUN_overlay_d_0__0208e6f0(local_a0); - iVar3 = FUN_overlay_d_0__0208e704(local_a0); + if (((iVar2 < local_8c) && (local_98 <= iVar2)) && ((param_3->x < local_94 && (local_a0.x <= param_3->x)))) { + iVar2 = func_ov000_0208e6f0(&local_a0); + iVar3 = func_ov000_0208e704(&local_a0); if (iVar2 == iVar3) { local_c8 = local_c8 - param_3->z; if (local_c8 < 0) { local_c8 = -local_c8; } - local_d0[0] = local_d0[0] - param_3->x; - if (local_d0[0] < 0) { - local_d0[0] = -local_d0[0]; + local_d0.x = local_d0.x - param_3->x; + if (local_d0.x < 0) { + local_d0.x = -local_d0.x; } - bVar1 = local_c8 < local_d0[0]; + bVar1 = local_c8 < local_d0.x; } else { - iVar2 = FUN_overlay_d_0__0208e6f0(local_a0); - iVar3 = FUN_overlay_d_0__0208e704(local_a0); + iVar2 = func_ov000_0208e6f0(&local_a0); + iVar3 = func_ov000_0208e704(&local_a0); if (iVar2 < iVar3) { bVar1 = true; } else { @@ -2976,7 +2979,7 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (local_b8.x < 0) { iVar2 = -local_b8.x; } - iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + iVar3 = func_ov000_0208e6f0(&local_a0); param_7->x = param_7->x - ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = -0x1000; param_8->y = 0; @@ -2986,7 +2989,7 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (local_b8.x < 0) { iVar2 = -local_b8.x; } - iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + iVar3 = func_ov000_0208e6f0(&local_a0); param_7->x = param_7->x + ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = 0x1000; param_8->y = 0; @@ -2997,7 +3000,7 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (local_b8.z < 0) { iVar2 = -local_b8.z; } - iVar3 = FUN_overlay_d_0__0208e704(local_a0); + iVar3 = func_ov000_0208e704(&local_a0); param_7->z = param_7->z - ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = 0; param_8->y = 0; @@ -3007,7 +3010,7 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (local_b8.z < 0) { iVar2 = -local_b8.z; } - iVar3 = FUN_overlay_d_0__0208e704(local_a0); + iVar3 = func_ov000_0208e704(&local_a0); param_7->z = param_7->z + ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = 0; param_8->y = 0; @@ -3015,13 +3018,13 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 } } else { iVar3 = param_3->x; - if ((iVar3 < local_94) && (local_a0[0] <= iVar3)) { + if ((iVar3 < local_94) && (local_a0.x <= iVar3)) { if (local_c4.z < 0) { iVar2 = local_b8.z; if (local_b8.z < 0) { iVar2 = -local_b8.z; } - iVar3 = FUN_overlay_d_0__0208e704(local_a0); + iVar3 = func_ov000_0208e704(&local_a0); param_7->z = param_7->z - ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = 0; param_8->y = 0; @@ -3031,7 +3034,7 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (local_b8.z < 0) { iVar2 = -local_b8.z; } - iVar3 = FUN_overlay_d_0__0208e704(local_a0); + iVar3 = func_ov000_0208e704(&local_a0); param_7->z = param_7->z + ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = 0; param_8->y = 0; @@ -3043,7 +3046,7 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (local_b8.x < 0) { iVar2 = -local_b8.x; } - iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + iVar3 = func_ov000_0208e6f0(&local_a0); param_7->x = param_7->x - ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = -0x1000; param_8->y = 0; @@ -3053,7 +3056,7 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (local_b8.x < 0) { iVar2 = -local_b8.x; } - iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + iVar3 = func_ov000_0208e6f0(&local_a0); param_7->x = param_7->x + ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = 0x1000; param_8->y = 0; @@ -3064,17 +3067,17 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (local_c8 < 0) { local_c8 = -local_c8; } - local_d0[0] = local_d0[0] - iVar3; - if (local_d0[0] < 0) { - local_d0[0] = -local_d0[0]; + local_d0.x = local_d0.x - iVar3; + if (local_d0.x < 0) { + local_d0.x = -local_d0.x; // local_d0.x previously local_d0[0] } - if (local_c8 < local_d0[0]) { + if (local_c8 < local_d0.x) { if (local_c4.x < 0) { iVar2 = local_b8.x; if (local_b8.x < 0) { iVar2 = -local_b8.x; } - iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + iVar3 = func_ov000_0208e6f0(&local_a0); param_7->x = param_7->x - ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = -0x1000; param_8->y = 0; @@ -3084,7 +3087,7 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (local_b8.x < 0) { iVar2 = -local_b8.x; } - iVar3 = FUN_overlay_d_0__0208e6f0(local_a0); + iVar3 = func_ov000_0208e6f0(&local_a0); param_7->x = param_7->x + ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = 0x1000; param_8->y = 0; @@ -3095,7 +3098,7 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (local_b8.z < 0) { iVar2 = -local_b8.z; } - iVar3 = FUN_overlay_d_0__0208e704(local_a0); + iVar3 = func_ov000_0208e704(&local_a0); param_7->z = param_7->z - ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = 0; param_8->y = 0; @@ -3105,7 +3108,7 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 if (local_b8.z < 0) { iVar2 = -local_b8.z; } - iVar3 = FUN_overlay_d_0__0208e704(local_a0); + iVar3 = func_ov000_0208e704(&local_a0); param_7->z = param_7->z + ((param_5 + (iVar3 >> 1)) - iVar2); param_8->x = 0; param_8->y = 0; @@ -3113,7 +3116,7 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 } } } - return false; */ + return false; } bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, s32 param_6, unk32 param_7, @@ -3169,8 +3172,8 @@ bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4 return false; } //(**(code **) (*param_2 + 0x2c))(param_2, auStack_94); - func_ov000_0208e6b0(auStack_94, &VStack_a0); - Vec3p_Scale(&VStack_28, param_6); // Doesn't exist. + // func_ov000_0208e6b0(auStack_94, &VStack_a0); + Vec3p_Scale(&VStack_28, param_6); Vec3p_Add(param_4, &VStack_28, param_8); Vec3p_Sub(param_4, &VStack_a0, param_9); // Vec3p_Normalize(param_9); @@ -3181,7 +3184,7 @@ bool MapManager::func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4 local_70[1] = 0; local_70[2] = 0; // (**(code **) (*param_2 + 0x28))(param_2, local_70); - // Vec3p_Scale(&VStack_28, param_6); // Doesn't exist. + Vec3p_Scale(&VStack_28, param_6); Vec3p_Add(param_4, &VStack_28, param_8); local_7c.x = local_70[0]; local_7c.z = local_70[2]; From ecaa34e7e1055b22f6d0352b5710dfbea461ebad Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Mon, 20 Jan 2025 19:39:52 +0100 Subject: [PATCH 24/62] Decomp progress 24% --- config/eur/arm9/overlays/ov000/symbols.txt | 8 +-- config/eur/arm9/overlays/ov015/symbols.txt | 6 +- config/usa/arm9/overlays/ov000/symbols.txt | 8 +-- config/usa/arm9/overlays/ov015/symbols.txt | 6 +- include/Map/MapManager.hpp | 4 +- include/lib/math.h | 3 +- src/00_Core/Map/MapManager.cpp | 70 +++++++++++----------- 7 files changed, 53 insertions(+), 52 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 455cc76c..0a8e3b4e 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -683,7 +683,7 @@ _ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) add _ZN10MapManager18func_ov00_020858b0Ev kind:function(arm,size=0x184) addr:0x20858b0 _ZN10MapManager18func_ov00_02085a34Eii kind:function(arm,size=0x22c) addr:0x2085a34 _ZN10MapManager18func_ov00_02085c60Eiiii kind:function(arm,size=0x3e4) addr:0x2085c60 -_ZN10MapManager18func_ov00_02086044Eiii kind:function(arm,size=0x240) addr:0x2086044 +_ZN10MapManager18func_ov00_02086044EP5Vec3pS1_i kind:function(arm,size=0x240) addr:0x2086044 _ZN10MapManager18func_ov00_02086284EPiP5Vec3pS2_itS2_S2_ kind:function(arm,size=0x800) addr:0x2086284 _ZN10MapManager18func_ov00_02086a84EPiP5Vec3pS2_iiiS2_S2_ kind:function(arm,size=0x24c) addr:0x2086a84 func_ov000_02086cd0 kind:function(arm,size=0x4) addr:0x2086cd0 @@ -814,7 +814,7 @@ func_ov000_0208b71c kind:function(arm,size=0x20) addr:0x208b71c func_ov000_0208b73c kind:function(arm,size=0x60) addr:0x208b73c func_ov000_0208b79c kind:function(arm,size=0x34) addr:0x208b79c func_ov000_0208b7d0 kind:function(arm,size=0x34) addr:0x208b7d0 -func_ov000_0208b804 kind:function(arm,size=0x40) addr:0x208b804 +_Z19func_ov000_0208b804PiP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x208b804 func_ov000_0208b844 kind:function(arm,size=0x2c) addr:0x208b844 func_ov000_0208b870 kind:function(arm,size=0x2c) addr:0x208b870 func_ov000_0208b89c kind:function(arm,size=0x44) addr:0x208b89c @@ -918,8 +918,8 @@ _ZN4AABB8ContainsEP5Vec3p kind:function(arm,size=0x78) addr:0x208e72c _ZN4AABB12ContainsInXZEP5Vec3p kind:function(arm,size=0x44) addr:0x208e7a4 func_ov000_0208e7e8 kind:function(arm,size=0x44) addr:0x208e7e8 func_ov000_0208e82c kind:function(arm,size=0x50) addr:0x208e82c -func_ov000_0208e87c kind:function(arm,size=0x4f8) addr:0x208e87c -func_ov000_0208ed74 kind:function(arm,size=0x64) addr:0x208ed74 +_Z19func_ov000_0208e87cP4AABBP5Vec3pS2_ kind:function(arm,size=0x4f8) addr:0x208e87c +_Z19func_ov000_0208ed74P4AABBP5Vec3p kind:function(arm,size=0x64) addr:0x208ed74 func_ov000_0208edd8 kind:function(arm,size=0x28) addr:0x208edd8 func_ov000_0208ee00 kind:function(arm,size=0x4c) addr:0x208ee00 func_ov000_0208ee4c kind:function(arm,size=0x44) addr:0x208ee4c diff --git a/config/eur/arm9/overlays/ov015/symbols.txt b/config/eur/arm9/overlays/ov015/symbols.txt index be20978e..dc62d8fb 100644 --- a/config/eur/arm9/overlays/ov015/symbols.txt +++ b/config/eur/arm9/overlays/ov015/symbols.txt @@ -287,9 +287,9 @@ func_ov015_02129b30 kind:function(arm,size=0x8) addr:0x2129b30 func_ov015_02129b38 kind:function(arm,size=0x18) addr:0x2129b38 func_ov015_02129b50 kind:function(arm,size=0xb4) addr:0x2129b50 func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129c04 -_Z19func_ov015_02129c14v kind:function(arm,size=0x10) addr:0x2129c14 -_Z19func_ov015_02129c24P5Vec3pS0_ kind:function(arm,size=0x10) addr:0x2129c24 -_Z19func_ov015_02129c34i kind:function(arm,size=0x10) addr:0x2129c34 +_Z19func_ov015_02129c14P7MapBase kind:function(arm,size=0x10) addr:0x2129c14 +_Z19func_ov015_02129c24P7MapBaseP5Vec3pS2_ kind:function(arm,size=0x10) addr:0x2129c24 +_Z19func_ov015_02129c34P7MapBasei kind:function(arm,size=0x10) addr:0x2129c34 func_ov015_02129c44 kind:function(arm,size=0x10) addr:0x2129c44 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129c54 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129ca4 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 65ce9bc4..ef0aa3b2 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -683,7 +683,7 @@ _ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) add _ZN10MapManager18func_ov00_020858b0Ev kind:function(arm,size=0x184) addr:0x2085850 _ZN10MapManager18func_ov00_02085a34Eii kind:function(arm,size=0x22c) addr:0x20859d4 _ZN10MapManager18func_ov00_02085c60Eiiii kind:function(arm,size=0x3e4) addr:0x2085c00 -_ZN10MapManager18func_ov00_02086044Eiii kind:function(arm,size=0x240) addr:0x2085fe4 +_ZN10MapManager18func_ov00_02086044EP5Vec3pS1_i kind:function(arm,size=0x240) addr:0x2085fe4 _ZN10MapManager18func_ov00_02086284EPiP5Vec3pS2_itS2_S2_ kind:function(arm,size=0x800) addr:0x2086224 _ZN10MapManager18func_ov00_02086a84EPiP5Vec3pS2_iiiS2_S2_ kind:function(arm,size=0x24c) addr:0x2086a24 func_ov000_02086cd0 kind:function(arm,size=0x4) addr:0x2086c70 @@ -814,7 +814,7 @@ func_ov000_0208b71c kind:function(arm,size=0x20) addr:0x208b6bc func_ov000_0208b73c kind:function(arm,size=0x60) addr:0x208b6dc func_ov000_0208b79c kind:function(arm,size=0x34) addr:0x208b73c func_ov000_0208b7d0 kind:function(arm,size=0x34) addr:0x208b770 -func_ov000_0208b804 kind:function(arm,size=0x40) addr:0x208b7a4 +_Z19func_ov000_0208b804PiP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x208b7a4 func_ov000_0208b844 kind:function(arm,size=0x2c) addr:0x208b7e4 func_ov000_0208b870 kind:function(arm,size=0x2c) addr:0x208b810 func_ov000_0208b89c kind:function(arm,size=0x44) addr:0x208b83c @@ -918,8 +918,8 @@ _ZN4AABB8ContainsEP5Vec3p kind:function(arm,size=0x78) addr:0x208e6cc _ZN4AABB12ContainsInXZEP5Vec3p kind:function(arm,size=0x44) addr:0x208e744 func_ov000_0208e7e8 kind:function(arm,size=0x44) addr:0x208e788 func_ov000_0208e82c kind:function(arm,size=0x50) addr:0x208e7cc -func_ov000_0208e87c kind:function(arm,size=0x4f8) addr:0x208e81c -func_ov000_0208ed74 kind:function(arm,size=0x64) addr:0x208ed14 +_Z19func_ov000_0208e87cP4AABBP5Vec3pS2_ kind:function(arm,size=0x4f8) addr:0x208e81c +_Z19func_ov000_0208ed74P4AABBP5Vec3p kind:function(arm,size=0x64) addr:0x208ed14 func_ov000_0208edd8 kind:function(arm,size=0x28) addr:0x208ed78 func_ov000_0208ee00 kind:function(arm,size=0x4c) addr:0x208eda0 func_ov000_0208ee4c kind:function(arm,size=0x44) addr:0x208edec diff --git a/config/usa/arm9/overlays/ov015/symbols.txt b/config/usa/arm9/overlays/ov015/symbols.txt index 14ec755f..aa63867c 100644 --- a/config/usa/arm9/overlays/ov015/symbols.txt +++ b/config/usa/arm9/overlays/ov015/symbols.txt @@ -287,9 +287,9 @@ func_ov015_02129b30 kind:function(arm,size=0x8) addr:0x2129ab0 func_ov015_02129b38 kind:function(arm,size=0x18) addr:0x2129ab8 func_ov015_02129b50 kind:function(arm,size=0xb4) addr:0x2129ad0 func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129b84 -_Z19func_ov015_02129c14v kind:function(arm,size=0x10) addr:0x2129b94 -_Z19func_ov015_02129c24P5Vec3pS0_ kind:function(arm,size=0x10) addr:0x2129ba4 -_Z19func_ov015_02129c34i kind:function(arm,size=0x10) addr:0x2129bb4 +_Z19func_ov015_02129c14P7MapBase kind:function(arm,size=0x10) addr:0x2129b94 +_Z19func_ov015_02129c24P7MapBaseP5Vec3pS2_ kind:function(arm,size=0x10) addr:0x2129ba4 +_Z19func_ov015_02129c34P7MapBasei kind:function(arm,size=0x10) addr:0x2129bb4 func_ov015_02129c44 kind:function(arm,size=0x10) addr:0x2129bc4 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129bd4 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129c24 diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index f67ac7bc..429d41f2 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -123,7 +123,7 @@ public: unk32 func_ov00_02083588(); unk32 func_ov00_020835a4(); unk32 func_ov00_020835b4(); - unk8 func_ov00_020835c4(s32 param_2, unk32 param_3); + unk8 func_ov00_020835c4(MapManager *param_1, s32 param_2, unk32 param_3); bool func_ov00_020835e4(s32 param_2, unk32 *param_3, unk8 *param_4); unk32 func_ov00_020835f4(s32 param_2); void func_ov00_02083604(s32 param_2); @@ -235,7 +235,7 @@ public: static unk8 func_ov00_020858b0(); s32 func_ov00_02085a34(unk32 param_2, unk32 param_3); unk8 func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5); - unk8 func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4); + unk8 func_ov00_02086044(Vec3p *param_2, Vec3p *param_3, unk32 param_4); bool func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, u16 param_6, Vec3p *param_7, Vec3p *param_8); bool func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, s32 param_6, unk32 param_7, diff --git a/include/lib/math.h b/include/lib/math.h index b5a64150..28e2fd0b 100644 --- a/include/lib/math.h +++ b/include/lib/math.h @@ -48,8 +48,7 @@ extern "C" void Vec3p_Sub(Vec3p *a, Vec3p *b, Vec3p *out); extern "C" q20 Vec3p_Dot(Vec3p *a, Vec3p *b); extern "C" void Vec3p_Cross(Vec3p *a, Vec3p *b, Vec3p *out); extern "C" q20 Vec3p_Length(Vec3p *a); -// extern "C" bool Vec3p_Normalize(Vec3p *vec); // 0x1fffb4c (this calls Vec3p_Normalize at 0x1ff9d4c) -extern "C" void Vec3p_Normalize(Vec3p *vec, Vec3p *out); // 0x1ff9d4c +extern "C" void Vec3p_Normalize(Vec3p *vec, Vec3p *out); extern "C" void Vec3p_Axpy(q20 a, Vec3p *x, Vec3p *y, Vec3p *out); extern "C" q20 Vec3p_Distance(Vec3p *a, Vec3p *b); extern "C" void Vec3p_Scale(Vec3p *vec, q20 scale); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index a2fd77ff..4e4621c9 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -9,12 +9,15 @@ extern void func_ov000_02078bf0(s32 *param_1, unk32 param_2); extern s32 func_ov000_02078fe8(s32 *param_1); extern void func_ov000_020798bc(s32 *param_1, s32 param_2); extern void func_ov000_0208b13c(s32 *param_1); +extern s32 func_ov000_0208b804(s32 *param_1, Vec3p *param_2, Vec3p *param_3); extern void func_ov000_0208cc88(s32 *param1); extern void func_ov000_0208d620(s32 *param_1); extern void func_ov000_0208d680(s32 *param_1); extern void func_ov000_0208e6b0(Vec3p *param_1, Vec3p *param_2); extern s32 func_ov000_0208e6f0(Vec3p *param_1); extern s32 func_ov000_0208e704(Vec3p *param_1); +extern s32 func_ov000_0208e87c(AABB *param_1, Vec3p *param_2, Vec3p *param_3); +extern void func_ov000_0208ed74(AABB *param_1, Vec3p *param_2); extern void func_ov000_02093a1c(u32 *param_1, s32 *param_2); extern void func_ov000_02096324(s32 *param_1, s32 param_2); extern s32 *func_ov000_02096418(s32 *param_1); @@ -26,9 +29,9 @@ extern void func_ov004_02102b28(s32 *param_1); extern void func_ov004_02102e3c(s32 *param_1); extern void func_ov004_02105578(ActorManager *param_1, u32 param_2); extern void func_ov004_02105608(ActorManager *param_1, unk32 param_2, unk32 param_3, unk32 param_4); -extern s32 func_ov015_02129c14(); -extern bool func_ov015_02129c24(Vec3p *param_1, Vec3p *param_2); -extern bool func_ov015_02129c34(s32 param_1); +extern s32 func_ov015_02129c14(MapBase *param_1); +extern bool func_ov015_02129c24(MapBase *param_1, Vec3p *param_2, Vec3p *param_3); +extern bool func_ov015_02129c34(MapBase *param_1, s32 param_2); extern bool func_ov015_02129c44(s32 param_1); extern s32 *data_027e0c68; @@ -186,7 +189,7 @@ ARM void MapManager::MapData_vfunc_9c() { ARM s32 MapManager::func_ov00_02082424() { s32 var = this->mMap->vfunc_4c(); if (var == 2) { - var = func_ov015_02129c14(); // MapBase::GetUnk_19c_Unk_28 according to Ghidra + var = func_ov015_02129c14(this->mMap); // MapBase::GetUnk_19c_Unk_28 according to Ghidra return var; } return 0; @@ -195,7 +198,7 @@ ARM s32 MapManager::func_ov00_02082424() { ARM bool MapManager::func_ov00_02082454(Vec3p *param_2, Vec3p *param_3) { s32 var = this->mMap->vfunc_4c(); if (var == 2) { - bool state = func_ov015_02129c24(param_2, param_3); + bool state = func_ov015_02129c24(this->mMap, param_2, param_3); return state; } return false; @@ -204,7 +207,7 @@ ARM bool MapManager::func_ov00_02082454(Vec3p *param_2, Vec3p *param_3) { ARM bool MapManager::func_ov00_02082494(s32 param_2) { s32 var = this->mMap->vfunc_4c(); if (var == 2) { - bool state = func_ov015_02129c34(param_2); + bool state = func_ov015_02129c34(this->mMap, param_2); return state; } return false; @@ -870,8 +873,8 @@ ARM unk32 MapManager::func_ov00_020835b4() { return this->mCourse->Get_Unk_c8_04(); } -ARM unk8 MapManager::func_ov00_020835c4(s32 param_2, unk32 param_3) { - return this->mCourse->func_ov00_0207d404(param_2, 0, param_3); +ARM unk8 MapManager::func_ov00_020835c4(MapManager *param_1, s32 param_2, unk32 param_3) { + return param_1->mCourse->func_ov00_0207d404(param_2, 0, param_3); } ARM bool MapManager::func_ov00_020835e4(s32 param_2, unk32 *param_3, unk8 *param_4) { @@ -2731,9 +2734,9 @@ unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, return 0; */ } -unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) { - /* undefined uVar1; - undefined uVar2; +unk8 MapManager::func_ov00_02086044(Vec3p *param_2, Vec3p *param_3, unk32 param_4) { + unk32 uVar1; + unk32 uVar2; int iVar3; int iVar4; int iVar5; @@ -2743,9 +2746,8 @@ unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) int *piVar9; Vec3p *pVVar10; int iVar11; - undefined local_c6; - undefined local_c5; - undefined auStack_c4[4]; + Vec2b local_c6; + unk32 auStack_c4[4]; Vec3p iStack_c0; Vec3p local_b0; Vec3p local_a0; @@ -2766,12 +2768,12 @@ unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) local_88.x = param_2->x; local_88.y = param_2->y; local_88.z = param_2->z; - FUN_overlay_d_0__0208ed74(&local_40, &local_88); - AABB::Grow(&local_40, param_4); - iVar3 = FUN_overlay_d_0__020839d4(param_1, local_40.min.x); - iVar4 = FUN_overlay_d_0__020839f8(param_1, local_40.min.z); - iVar5 = FUN_overlay_d_0__020839d4(param_1, local_40.max.x); - iVar6 = FUN_overlay_d_0__020839f8(param_1, local_40.max.z); + func_ov000_0208ed74(&local_40, &local_88); + // AABB_Grow(&local_40, param_4); + iVar3 = this->func_ov00_020839d4(local_40.min.x); + iVar4 = this->func_ov00_020839f8(local_40.min.z); + iVar5 = this->func_ov00_020839d4(local_40.max.x); + iVar6 = this->func_ov00_020839f8(local_40.max.z); local_4c.x = param_3->x; local_4c.y = param_3->y; local_4c.z = param_3->z; @@ -2782,10 +2784,10 @@ unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) local_a0.x = param_3->x; local_a0.y = param_3->y; local_a0.z = param_3->z; - Vec3p::Sub(&local_94, pVVar10, &VStack_58); - uVar1 = FUN_overlay_d_0__020839d4(param_1, param_3->x); - uVar2 = FUN_overlay_d_0__020839f8(param_1, param_3->z); - iVar7 = FUN_overlay_d_0__02083e34(param_1, uVar1, uVar2, pVVar10); + Vec3p_Sub(&local_94, pVVar10, &VStack_58); + uVar1 = this->func_ov00_020839d4(param_3->x); + uVar2 = this->func_ov00_020839f8(param_3->z); + // iVar7 = this->func_ov00_02083e34(uVar1, uVar2, pVVar10); do { if (iVar5 < iVar3) { return 0; @@ -2793,25 +2795,25 @@ unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) if (iVar4 <= iVar6) { iVar11 = iVar4; do { - iVar8 = FUN_overlay_d_0__02083e34(param_1, (char) iVar3, (char) iVar11, pVVar10); + // iVar8 = this->func_ov00_02083e34((char) iVar3, (char) iVar11, pVVar10); if (iVar7 < iVar8) { - local_c6 = (char) iVar3; - local_c5 = (char) iVar11; - FUN_overlay_d_0__02084024(*(MapManager **) PTR_gMapManager_overlay_d_0__02086280, &local_c6, &AStack_70); - Vec3p::Sub(param_2, param_3, &VStack_7c); + local_c6.x = (char) iVar3; + local_c6.y = (char) iVar11; + gMapManager->func_ov00_02084024(&local_c6, &AStack_70); + Vec3p_Sub(param_2, param_3, &VStack_7c); pVVar10 = (Vec3p *) auStack_c4; - iVar8 = FUN_overlay_d_0__0208e87c(&AStack_70, &local_b0, &VStack_7c); + iVar8 = func_ov000_0208e87c(&AStack_70, &local_b0, &VStack_7c); if (iVar8 != 0) { return 1; } } - piVar9 = (int *) MapData_vfunc_78(param_1); - if ((piVar9 != (int *) 0x0) && (iVar8 = (**(code **) (*piVar9 + 0x58))(), iVar8 != 0)) { + piVar9 = (int *) this->MapData_vfunc_78(); + if ((piVar9 != (int *) 0x0) /*&& (iVar8 = (**(code **) (*piVar9 + 0x58))(), iVar8 != 0)*/) { iStack_c0.x = param_3->x; iStack_c0.y = param_3->y; pVVar10 = (Vec3p *) param_3->z; iStack_c0.z = (int) pVVar10; - iVar8 = FUN_overlay_d_0__0208b804(piVar9, &iStack_c0, &VStack_58); + iVar8 = func_ov000_0208b804(piVar9, &iStack_c0, &VStack_58); if (iVar8 != 0) { return 1; } @@ -2820,7 +2822,7 @@ unk8 MapManager::func_ov00_02086044(unk32 param_2, unk32 param_3, unk32 param_4) } while (iVar11 <= iVar6); } iVar3 = iVar3 + 1; - } while (true); */ + } while (true); } bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, u16 param_6, Vec3p *param_7, From 0060b2faac9475c744de44d38cf8ba72f83058d0 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Tue, 21 Jan 2025 13:31:12 +0100 Subject: [PATCH 25/62] Decomp progress 27% --- config/eur/arm9/itcm/symbols.txt | 2 +- config/eur/arm9/overlays/ov000/symbols.txt | 36 +- config/usa/arm9/itcm/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/symbols.txt | 36 +- include/Map/MapManager.hpp | 16 +- src/00_Core/Map/MapManager.cpp | 532 +++++++++++---------- 6 files changed, 317 insertions(+), 307 deletions(-) diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 56efdbe2..1d6c3b5f 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -82,7 +82,7 @@ func_01ffbbcc kind:function(arm,size=0x2c) addr:0x1ffbbcc func_01ffbbf8 kind:function(arm,size=0x1d8) addr:0x1ffbbf8 func_01ffbdd0 kind:function(arm,size=0x64) addr:0x1ffbdd0 func_01ffbe34 kind:function(arm,size=0x44) addr:0x1ffbe34 -func_01ffbe78 kind:function(arm,size=0xe4) addr:0x1ffbe78 +_Z13func_01ffbe78P5Vec3pS0_S0_P5Vec4p kind:function(arm,size=0xe4) addr:0x1ffbe78 func_01ffbf5c kind:function(arm,size=0x1bc) addr:0x1ffbf5c func_01ffc118 kind:function(arm,size=0x10c8) addr:0x1ffc118 func_01ffd1e0 kind:function(arm,size=0xfec) addr:0x1ffd1e0 diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 0a8e3b4e..e8b53bf3 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -101,8 +101,8 @@ func_ov000_02079008 kind:function(arm,size=0x1c) addr:0x2079008 func_ov000_02079024 kind:function(arm,size=0x128) addr:0x2079024 func_ov000_0207914c kind:function(arm,size=0x90) addr:0x207914c func_ov000_020791dc kind:function(arm,size=0x30) addr:0x20791dc -func_ov000_0207920c kind:function(arm,size=0x94) addr:0x207920c -func_ov000_020792a0 kind:function(arm,size=0x118) addr:0x20792a0 +_Z19func_ov000_0207920cPiP5Vec3pS_S_ kind:function(arm,size=0x94) addr:0x207920c +_Z19func_ov000_020792a0Piiii kind:function(arm,size=0x118) addr:0x20792a0 func_ov000_020793b8 kind:function(arm,size=0x18) addr:0x20793b8 func_ov000_020793d0 kind:function(arm,size=0xa0) addr:0x20793d0 func_ov000_02079470 kind:function(arm,size=0x210) addr:0x2079470 @@ -571,7 +571,7 @@ _ZN10MapManager18func_ov00_02083570Eii kind:function(arm,size=0x18) addr:0x20835 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x2083588 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x20835a4 _ZN10MapManager18func_ov00_020835b4Ev kind:function(arm,size=0x10) addr:0x20835b4 -_ZN10MapManager18func_ov00_020835c4Eii kind:function(arm,size=0x20) addr:0x20835c4 +_ZN10MapManager18func_ov00_020835c4EPS_ii kind:function(arm,size=0x20) addr:0x20835c4 _ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x20835e4 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x20835f4 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x2083604 @@ -601,7 +601,7 @@ _ZN10MapManager18func_ov00_020839b4Ei kind:function(arm,size=0x10) addr:0x20839b _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x20839c4 _ZN10MapManager18func_ov00_020839d4Ei kind:function(arm,size=0x24) addr:0x20839d4 _ZN10MapManager18func_ov00_020839f8Ei kind:function(arm,size=0x24) addr:0x20839f8 -_ZN10MapManager18func_ov00_02083a1cEPiPS_P5Vec3p kind:function(arm,size=0x38) addr:0x2083a1c +_ZN10MapManager18func_ov00_02083a1cEP5Vec2bPS_P5Vec3p kind:function(arm,size=0x38) addr:0x2083a1c _ZN10MapManager18func_ov00_02083a54EPhPS_PiiS2_ kind:function(arm,size=0x130) addr:0x2083a54 _ZN10MapManager13GetTileStartXEi kind:function(arm,size=0x28) addr:0x2083b84 _ZN10MapManager13GetTileStartZEi kind:function(arm,size=0x28) addr:0x2083bac @@ -674,15 +674,15 @@ _ZN10MapManager18func_ov00_02084cfcEi kind:function(arm,size=0x1c) addr:0x2084cf _ZN10MapManager17GetMapData_Unk_09Ev kind:function(arm,size=0xc) addr:0x2084d18 _ZN10MapManager18func_ov00_02084d24Ecci kind:function(arm,size=0x28) addr:0x2084d24 _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x2084d4c -_ZN10MapManager18func_ov00_02084ebcEi kind:function(arm,size=0x24c) addr:0x2084ebc +_ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x2084ebc _ZN10MapManager18func_ov00_02085108EPi kind:function(arm,size=0x174) addr:0x2085108 -_ZN10MapManager18func_ov00_0208527cEv kind:function(arm,size=0x180) addr:0x208527c -_ZN10MapManager18func_ov00_020853fcEv kind:function(arm,size=0x198) addr:0x20853fc -_ZN10MapManager18func_ov00_02085594Ev kind:function(arm,size=0x2a8) addr:0x2085594 +_ZN10MapManager18func_ov00_0208527cEPS_iPi kind:function(arm,size=0x180) addr:0x208527c +_ZN10MapManager18func_ov00_020853fcEPS_P5Vec3pPi kind:function(arm,size=0x198) addr:0x20853fc +_ZN10MapManager18func_ov00_02085594EPS_P5Vec3pii kind:function(arm,size=0x2a8) addr:0x2085594 _ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) addr:0x208583c -_ZN10MapManager18func_ov00_020858b0Ev kind:function(arm,size=0x184) addr:0x20858b0 -_ZN10MapManager18func_ov00_02085a34Eii kind:function(arm,size=0x22c) addr:0x2085a34 -_ZN10MapManager18func_ov00_02085c60Eiiii kind:function(arm,size=0x3e4) addr:0x2085c60 +_ZN10MapManager18func_ov00_020858b0EPS_P5Vec3pi kind:function(arm,size=0x184) addr:0x20858b0 +_ZN10MapManager18func_ov00_02085a34EP5Vec3pi kind:function(arm,size=0x22c) addr:0x2085a34 +_ZN10MapManager18func_ov00_02085c60EP5Vec3pPiS2_j kind:function(arm,size=0x3e4) addr:0x2085c60 _ZN10MapManager18func_ov00_02086044EP5Vec3pS1_i kind:function(arm,size=0x240) addr:0x2086044 _ZN10MapManager18func_ov00_02086284EPiP5Vec3pS2_itS2_S2_ kind:function(arm,size=0x800) addr:0x2086284 _ZN10MapManager18func_ov00_02086a84EPiP5Vec3pS2_iiiS2_S2_ kind:function(arm,size=0x24c) addr:0x2086a84 @@ -720,12 +720,12 @@ func_ov000_02087f08 kind:function(arm,size=0x18) addr:0x2087f08 func_ov000_02087f20 kind:function(arm,size=0xa0) addr:0x2087f20 func_ov000_02087fc0 kind:function(arm,size=0x20) addr:0x2087fc0 func_ov000_02087fe0 kind:function(arm,size=0x20) addr:0x2087fe0 -func_ov000_02088000 kind:function(arm,size=0x10) addr:0x2088000 +_Z19func_ov000_02088000ii kind:function(arm,size=0x10) addr:0x2088000 func_ov000_02088010 kind:function(arm,size=0x64) addr:0x2088010 func_ov000_02088074 kind:function(arm,size=0x84) addr:0x2088074 func_ov000_020880f8 kind:function(arm,size=0x38) addr:0x20880f8 -func_ov000_02088130 kind:function(arm,size=0x14) addr:0x2088130 -func_ov000_02088144 kind:function(arm,size=0x14) addr:0x2088144 +_Z19func_ov000_02088130Phi kind:function(arm,size=0x14) addr:0x2088130 +_Z19func_ov000_02088144Phi kind:function(arm,size=0x14) addr:0x2088144 func_ov000_02088158 kind:function(arm,size=0x44) addr:0x2088158 func_ov000_0208819c kind:function(arm,size=0x58) addr:0x208819c func_ov000_020881f4 kind:function(arm,size=0x50) addr:0x20881f4 @@ -779,7 +779,7 @@ func_ov000_0208aed8 kind:function(arm,size=0x244) addr:0x208aed8 func_ov000_0208b11c kind:function(arm,size=0x20) addr:0x208b11c func_ov000_0208b13c kind:function(arm,size=0x1c) addr:0x208b13c func_ov000_0208b158 kind:function(arm,size=0x28) addr:0x208b158 -func_ov000_0208b180 kind:function(arm,size=0x28) addr:0x208b180 +_Z19func_ov000_0208b180Pi kind:function(arm,size=0x28) addr:0x208b180 func_ov000_0208b1a8 kind:function(arm,size=0x28) addr:0x208b1a8 func_ov000_0208b1d0 kind:function(arm,size=0x28) addr:0x208b1d0 func_ov000_0208b1f8 kind:function(arm,size=0x28) addr:0x208b1f8 @@ -811,9 +811,9 @@ func_ov000_0208b70c kind:function(arm,size=0x4) addr:0x208b70c func_ov000_0208b710 kind:function(arm,size=0x4) addr:0x208b710 func_ov000_0208b714 kind:function(arm,size=0x8) addr:0x208b714 func_ov000_0208b71c kind:function(arm,size=0x20) addr:0x208b71c -func_ov000_0208b73c kind:function(arm,size=0x60) addr:0x208b73c +_Z19func_ov000_0208b73cii kind:function(arm,size=0x60) addr:0x208b73c func_ov000_0208b79c kind:function(arm,size=0x34) addr:0x208b79c -func_ov000_0208b7d0 kind:function(arm,size=0x34) addr:0x208b7d0 +_Z19func_ov000_0208b7d0iP5Vec3p kind:function(arm,size=0x34) addr:0x208b7d0 _Z19func_ov000_0208b804PiP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x208b804 func_ov000_0208b844 kind:function(arm,size=0x2c) addr:0x208b844 func_ov000_0208b870 kind:function(arm,size=0x2c) addr:0x208b870 @@ -901,7 +901,7 @@ func_ov000_0208def0 kind:function(arm,size=0x14) addr:0x208def0 func_ov000_0208df04 kind:function(arm,size=0x28) addr:0x208df04 func_ov000_0208df2c kind:function(arm,size=0x48) addr:0x208df2c func_ov000_0208df74 kind:function(arm,size=0x4) addr:0x208df74 -func_ov000_0208df78 kind:function(arm,size=0x250) addr:0x208df78 +_Z19func_ov000_0208df78PiiiP5Vec3pS_ kind:function(arm,size=0x250) addr:0x208df78 func_ov000_0208e1c8 kind:function(arm,size=0x208) addr:0x208e1c8 func_ov000_0208e3d0 kind:function(arm,size=0x4c) addr:0x208e3d0 func_ov000_0208e41c kind:function(arm,size=0x4) addr:0x208e41c diff --git a/config/usa/arm9/itcm/symbols.txt b/config/usa/arm9/itcm/symbols.txt index b8aab999..aca128be 100644 --- a/config/usa/arm9/itcm/symbols.txt +++ b/config/usa/arm9/itcm/symbols.txt @@ -82,7 +82,7 @@ func_01ffbbcc kind:function(arm,size=0x2c) addr:0x1ffbbcc func_01ffbbf8 kind:function(arm,size=0x1d8) addr:0x1ffbbf8 func_01ffbdd0 kind:function(arm,size=0x64) addr:0x1ffbdd0 func_01ffbe34 kind:function(arm,size=0x44) addr:0x1ffbe34 -func_01ffbe78 kind:function(arm,size=0xe4) addr:0x1ffbe78 +_Z13func_01ffbe78P5Vec3pS0_S0_P5Vec4p kind:function(arm,size=0xe4) addr:0x1ffbe78 func_01ffbf5c kind:function(arm,size=0x1bc) addr:0x1ffbf5c func_01ffc118 kind:function(arm,size=0x10c8) addr:0x1ffc118 func_01ffd1e0 kind:function(arm,size=0xfec) addr:0x1ffd1e0 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index ef0aa3b2..2e88e8ca 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -101,8 +101,8 @@ func_ov000_02079008 kind:function(arm,size=0x1c) addr:0x2078fa8 func_ov000_02079024 kind:function(arm,size=0x128) addr:0x2078fc4 func_ov000_0207914c kind:function(arm,size=0x90) addr:0x20790ec func_ov000_020791dc kind:function(arm,size=0x30) addr:0x207917c -func_ov000_0207920c kind:function(arm,size=0x94) addr:0x20791ac -func_ov000_020792a0 kind:function(arm,size=0x118) addr:0x2079240 +_Z19func_ov000_0207920cPiP5Vec3pS_S_ kind:function(arm,size=0x94) addr:0x20791ac +_Z19func_ov000_020792a0Piiii kind:function(arm,size=0x118) addr:0x2079240 func_ov000_020793b8 kind:function(arm,size=0x18) addr:0x2079358 func_ov000_020793d0 kind:function(arm,size=0xa0) addr:0x2079370 func_ov000_02079470 kind:function(arm,size=0x210) addr:0x2079410 @@ -571,7 +571,7 @@ _ZN10MapManager18func_ov00_02083570Eii kind:function(arm,size=0x18) addr:0x20835 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x2083528 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x2083544 _ZN10MapManager18func_ov00_020835b4Ev kind:function(arm,size=0x10) addr:0x2083554 -_ZN10MapManager18func_ov00_020835c4Eii kind:function(arm,size=0x20) addr:0x2083564 +_ZN10MapManager18func_ov00_020835c4EPS_ii kind:function(arm,size=0x20) addr:0x2083564 _ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x2083584 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x2083594 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x20835a4 @@ -601,7 +601,7 @@ _ZN10MapManager18func_ov00_020839b4Ei kind:function(arm,size=0x10) addr:0x208395 _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x2083964 _ZN10MapManager18func_ov00_020839d4Ei kind:function(arm,size=0x24) addr:0x2083974 _ZN10MapManager18func_ov00_020839f8Ei kind:function(arm,size=0x24) addr:0x2083998 -_ZN10MapManager18func_ov00_02083a1cEPiPS_P5Vec3p kind:function(arm,size=0x38) addr:0x20839bc +_ZN10MapManager18fun_ZN10MapManager18func_ov00_02083a1cEP5Vec2bPS_P5Vec3pc_ov00_02083a1cEPiPS_P5Vec3p kind:function(arm,size=0x38) addr:0x20839bc _ZN10MapManager18func_ov00_02083a54EPhPS_PiiS2_ kind:function(arm,size=0x130) addr:0x20839f4 _ZN10MapManager13GetTileStartXEi kind:function(arm,size=0x28) addr:0x2083b24 _ZN10MapManager13GetTileStartZEi kind:function(arm,size=0x28) addr:0x2083b4c @@ -674,15 +674,15 @@ _ZN10MapManager18func_ov00_02084cfcEi kind:function(arm,size=0x1c) addr:0x2084c9 _ZN10MapManager17GetMapData_Unk_09Ev kind:function(arm,size=0xc) addr:0x2084cb8 _ZN10MapManager18func_ov00_02084d24Ecci kind:function(arm,size=0x28) addr:0x2084cc4 _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x2084cec -_ZN10MapManager18func_ov00_02084ebcEi kind:function(arm,size=0x24c) addr:0x2084e5c +_ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x2084e5c _ZN10MapManager18func_ov00_02085108EPi kind:function(arm,size=0x174) addr:0x20850a8 -_ZN10MapManager18func_ov00_0208527cEv kind:function(arm,size=0x180) addr:0x208521c -_ZN10MapManager18func_ov00_020853fcEv kind:function(arm,size=0x198) addr:0x208539c -_ZN10MapManager18func_ov00_02085594Ev kind:function(arm,size=0x2a8) addr:0x2085534 +_ZN10MapManager18func_ov00_0208527cEPS_iPi kind:function(arm,size=0x180) addr:0x208521c +_ZN10MapManager18func_ov00_020853fcEPS_P5Vec3pPi kind:function(arm,size=0x198) addr:0x208539c +_ZN10MapManager18func_ov00_02085594EPS_P5Vec3pii kind:function(arm,size=0x2a8) addr:0x2085534 _ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) addr:0x20857dc -_ZN10MapManager18func_ov00_020858b0Ev kind:function(arm,size=0x184) addr:0x2085850 -_ZN10MapManager18func_ov00_02085a34Eii kind:function(arm,size=0x22c) addr:0x20859d4 -_ZN10MapManager18func_ov00_02085c60Eiiii kind:function(arm,size=0x3e4) addr:0x2085c00 +_ZN10MapManager18func_ov00_020858b0EPS_P5Vec3pi kind:function(arm,size=0x184) addr:0x2085850 +_ZN10MapManager18func_ov00_02085a34EP5Vec3pi kind:function(arm,size=0x22c) addr:0x20859d4 +_ZN10MapManager18func_ov00_02085c60EP5Vec3pPiS2_j kind:function(arm,size=0x3e4) addr:0x2085c00 _ZN10MapManager18func_ov00_02086044EP5Vec3pS1_i kind:function(arm,size=0x240) addr:0x2085fe4 _ZN10MapManager18func_ov00_02086284EPiP5Vec3pS2_itS2_S2_ kind:function(arm,size=0x800) addr:0x2086224 _ZN10MapManager18func_ov00_02086a84EPiP5Vec3pS2_iiiS2_S2_ kind:function(arm,size=0x24c) addr:0x2086a24 @@ -720,12 +720,12 @@ func_ov000_02087f08 kind:function(arm,size=0x18) addr:0x2087ea8 func_ov000_02087f20 kind:function(arm,size=0xa0) addr:0x2087ec0 func_ov000_02087fc0 kind:function(arm,size=0x20) addr:0x2087f60 func_ov000_02087fe0 kind:function(arm,size=0x20) addr:0x2087f80 -func_ov000_02088000 kind:function(arm,size=0x10) addr:0x2087fa0 +_Z19func_ov000_02088000ii kind:function(arm,size=0x10) addr:0x2087fa0 func_ov000_02088010 kind:function(arm,size=0x64) addr:0x2087fb0 func_ov000_02088074 kind:function(arm,size=0x84) addr:0x2088014 func_ov000_020880f8 kind:function(arm,size=0x38) addr:0x2088098 -func_ov000_02088130 kind:function(arm,size=0x14) addr:0x20880d0 -func_ov000_02088144 kind:function(arm,size=0x14) addr:0x20880e4 +_Z19func_ov000_02088130Phi kind:function(arm,size=0x14) addr:0x20880d0 +_Z19func_ov000_02088144Phi kind:function(arm,size=0x14) addr:0x20880e4 func_ov000_02088158 kind:function(arm,size=0x44) addr:0x20880f8 func_ov000_0208819c kind:function(arm,size=0x58) addr:0x208813c func_ov000_020881f4 kind:function(arm,size=0x50) addr:0x2088194 @@ -779,7 +779,7 @@ func_ov000_0208aed8 kind:function(arm,size=0x244) addr:0x208ae78 func_ov000_0208b11c kind:function(arm,size=0x20) addr:0x208b0bc func_ov000_0208b13c kind:function(arm,size=0x1c) addr:0x208b0dc func_ov000_0208b158 kind:function(arm,size=0x28) addr:0x208b0f8 -func_ov000_0208b180 kind:function(arm,size=0x28) addr:0x208b120 +_Z19func_ov000_0208b180Pi kind:function(arm,size=0x28) addr:0x208b120 func_ov000_0208b1a8 kind:function(arm,size=0x28) addr:0x208b148 func_ov000_0208b1d0 kind:function(arm,size=0x28) addr:0x208b170 func_ov000_0208b1f8 kind:function(arm,size=0x28) addr:0x208b198 @@ -811,9 +811,9 @@ func_ov000_0208b70c kind:function(arm,size=0x4) addr:0x208b6ac func_ov000_0208b710 kind:function(arm,size=0x4) addr:0x208b6b0 func_ov000_0208b714 kind:function(arm,size=0x8) addr:0x208b6b4 func_ov000_0208b71c kind:function(arm,size=0x20) addr:0x208b6bc -func_ov000_0208b73c kind:function(arm,size=0x60) addr:0x208b6dc +_Z19func_ov000_0208b73cii kind:function(arm,size=0x60) addr:0x208b6dc func_ov000_0208b79c kind:function(arm,size=0x34) addr:0x208b73c -func_ov000_0208b7d0 kind:function(arm,size=0x34) addr:0x208b770 +_Z19func_ov000_0208b7d0iP5Vec3p kind:function(arm,size=0x34) addr:0x208b770 _Z19func_ov000_0208b804PiP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x208b7a4 func_ov000_0208b844 kind:function(arm,size=0x2c) addr:0x208b7e4 func_ov000_0208b870 kind:function(arm,size=0x2c) addr:0x208b810 @@ -901,7 +901,7 @@ func_ov000_0208def0 kind:function(arm,size=0x14) addr:0x208de90 func_ov000_0208df04 kind:function(arm,size=0x28) addr:0x208dea4 func_ov000_0208df2c kind:function(arm,size=0x48) addr:0x208decc func_ov000_0208df74 kind:function(arm,size=0x4) addr:0x208df14 -func_ov000_0208df78 kind:function(arm,size=0x250) addr:0x208df18 +_Z19func_ov000_0208df78PiiiP5Vec3pS_ kind:function(arm,size=0x250) addr:0x208df18 func_ov000_0208e1c8 kind:function(arm,size=0x208) addr:0x208e168 func_ov000_0208e3d0 kind:function(arm,size=0x4c) addr:0x208e370 func_ov000_0208e41c kind:function(arm,size=0x4) addr:0x208e3bc diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 429d41f2..bd580686 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -153,7 +153,7 @@ public: bool func_ov00_020839c4(s32 param_2); s32 func_ov00_020839d4(s32 param_2); s32 func_ov00_020839f8(s32 param_2); - static void func_ov00_02083a1c(s32 *param_1, MapManager *param_2, Vec3p *param_3); + static void func_ov00_02083a1c(Vec2b *param_1, MapManager *param_2, Vec3p *param_3); static void func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, s32 param_4, s32 *param_5); s32 GetTileStartX(unk32 x); s32 GetTileStartZ(unk32 z); @@ -226,15 +226,15 @@ public: u8 GetMapData_Unk_09(); unk8 func_ov00_02084d24(unk8 param_2, unk8 param_3, unk32 param_4); s32 func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4); - unk8 func_ov00_02084ebc(unk32 param_2); + unk32 func_ov00_02084ebc(Vec3p *param_2); s32 func_ov00_02085108(s32 *param_2); - static unk8 func_ov00_0208527c(); - static unk8 func_ov00_020853fc(); - static unk8 func_ov00_02085594(); + static s32 func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *param_3); + static s32 func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *param_3); + static unk32 func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 param_3, unk32 param_4); static void func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3); - static unk8 func_ov00_020858b0(); - s32 func_ov00_02085a34(unk32 param_2, unk32 param_3); - unk8 func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5); + static unk8 func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3); + s32 func_ov00_02085a34(Vec3p *param_2, unk32 param_3); + unk8 func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param_4, u32 param_5); unk8 func_ov00_02086044(Vec3p *param_2, Vec3p *param_3, unk32 param_4); bool func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, u16 param_6, Vec3p *param_7, Vec3p *param_8); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 4e4621c9..3d5faa7e 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -4,15 +4,26 @@ #include "Player/PlayerBase.hpp" #include "Save/AdventureFlags.hpp" +extern bool func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Vec4p *param4); + extern u32 func_ov000_02078bc4(unk32 param_1); extern void func_ov000_02078bf0(s32 *param_1, unk32 param_2); extern s32 func_ov000_02078fe8(s32 *param_1); +extern void func_ov000_0207920c(s32 *param_1, Vec3p *param_2, s32 *param_3, s32 *param_4); +extern void func_ov000_020792a0(s32 *param_1, s32 param_2, unk32 param_3, unk32 param_4); extern void func_ov000_020798bc(s32 *param_1, s32 param_2); +extern void func_ov000_02088000(unk32 param_1, s32 param_2); +extern void func_ov000_02088130(u8 *param_1, unk32 param_2); +extern void func_ov000_02088144(u8 *param_1, unk32 param_2); extern void func_ov000_0208b13c(s32 *param_1); +extern unk32 func_ov000_0208b180(s32 *param_1); +extern s32 func_ov000_0208b73c(s32 param_1, unk32 param_2); +extern s32 func_ov000_0208b7d0(s32 param_1, Vec3p *param_2); extern s32 func_ov000_0208b804(s32 *param_1, Vec3p *param_2, Vec3p *param_3); extern void func_ov000_0208cc88(s32 *param1); extern void func_ov000_0208d620(s32 *param_1); extern void func_ov000_0208d680(s32 *param_1); +extern s32 func_ov000_0208df78(s32 *param_1, unk32 param_, unk32 param_3, Vec3p *param_4, s32 *param_5); extern void func_ov000_0208e6b0(Vec3p *param_1, Vec3p *param_2); extern s32 func_ov000_0208e6f0(Vec3p *param_1); extern s32 func_ov000_0208e704(Vec3p *param_1); @@ -23,12 +34,14 @@ extern void func_ov000_02096324(s32 *param_1, s32 param_2); extern s32 *func_ov000_02096418(s32 *param_1); extern void func_ov000_0209d6e8(s32 param_1, s32 param_2); extern unk32 func_ov000_020a5e9c(unk32 *param_1); + extern void func_ov004_021024c4(MapManager *param_1, s32 param_2, bool param_3, s32 param_4); extern void func_ov004_02102770(s32 *param_1); extern void func_ov004_02102b28(s32 *param_1); extern void func_ov004_02102e3c(s32 *param_1); extern void func_ov004_02105578(ActorManager *param_1, u32 param_2); extern void func_ov004_02105608(ActorManager *param_1, unk32 param_2, unk32 param_3, unk32 param_4); + extern s32 func_ov015_02129c14(MapBase *param_1); extern bool func_ov015_02129c24(MapBase *param_1, Vec3p *param_2, Vec3p *param_3); extern bool func_ov015_02129c34(MapBase *param_1, s32 param_2); @@ -651,7 +664,7 @@ ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { local_1c.y = gPlayerPos->y; local_1c.x = gPlayerPos->x; local_1c.z = gPlayerPos->z; - this->func_ov00_02083a1c((s32 *) auStack_2c, this, &local_1c); + // this->func_ov00_02083a1c(auStack_2c, this, &local_1c); this->func_ov00_02082d84(auStack_2c, param_2, param_3); } @@ -1071,9 +1084,9 @@ ARM s32 MapManager::func_ov00_020839f8(s32 param_2) { return this->mMap->GetClampedTileY(param_2 - this->GetMapCenterZ()); } -ARM void MapManager::func_ov00_02083a1c(s32 *param_1, MapManager *param_2, Vec3p *param_3) { - *param_1 = param_2->func_ov00_020839f8(param_3->z); - param_1[1] = param_2->func_ov00_020839d4(param_3->x); +ARM void MapManager::func_ov00_02083a1c(Vec2b *param_1, MapManager *param_2, Vec3p *param_3) { + param_1->x /*or y?*/ = param_2->func_ov00_020839f8(param_3->z); + param_1->y /*or x?*/ = param_2->func_ov00_020839d4(param_3->x); } ARM void MapManager::func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, s32 param_4, s32 *param_5) { @@ -1960,10 +1973,10 @@ unk8 MapManager::func_ov00_02084d24(unk8 param_2, unk8 param_3, unk32 param_4) { } s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4) { - /* undefined *object; - undefined *dtor; - undefined *obj; - dword a; + unk32 *object; // undefined type + unk32 *dtor; // undefined type + unk32 *obj; // undefined type + unk32 a; // dword int iVar1; int aiStack_3c[4]; Vec3p VStack_2c; @@ -1972,60 +1985,59 @@ s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4) int iStack_18; Vec3p VStack_14; - iVar1 = FUN_overlay_d_0__0208df78(*(undefined4 *) (*(int *) PTR_DWORD_overlay_d_0__02084ea0 + 4), param_2, param_3, - &VStack_14, &iStack_20); - object = PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8; + iVar1 = func_ov000_0208df78(data_027e0f64 + 4, param_2, param_3, &VStack_14, &iStack_20); + // object = PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8; if (iVar1 == -1) { return -1; } - if ((*(uint *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) & 1) == 0) { - aiStack_3c[1] = 0; - aiStack_3c[3] = 0; - aiStack_3c[2] = 0x1000; - *(undefined4 *) PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8 = 0; - *(undefined4 *) (object + 4) = 0x1000; - *(undefined4 *) (object + 8) = 0; + /*if ((*(u32 *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) & 1) == 0) { + aiStack_3c[1] = 0; + aiStack_3c[3] = 0; + aiStack_3c[2] = 0x1000; + *(unk32 *) PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8 = 0; + *(unk32 *) (object + 4) = 0x1000; + *(unk32 *) (object + 8) = 0; obj = PTR_DestructorChain_overlay_d_0_bss__020ec9c8_overlay_d_0__02084eb4; dtor = PTR_FUN_overlay_d_0__0207e968_overlay_d_0__02084eb0; - *(undefined4 *) (PTR_PTR_s_anc_overlay_d_0__020e24a0_overlay_d_0__020e24a4_overlay_d_0__02084eac + 0x78) = 0; + *(unk32 *) (PTR_PTR_s_anc_overlay_d_0__020e24a0_overlay_d_0__020e24a4_overlay_d_0__02084eac + 0x78) = 0; __register_global_object(object, dtor, (DestructorChain *) obj); - *(uint *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) = - *(uint *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) | 1; - } + *(u32 *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) = + *(u32 *) (PTR_DestructorChain_overlay_d_0_bss__020ec964_overlay_d_0__02084ea4 + 0x60) | 1; + }*/ VStack_2c.x = iStack_20; VStack_2c.y = iStack_1c; VStack_2c.z = iStack_18; - Vec3p::Sub(&VStack_2c, &VStack_14, &VStack_2c); - iVar1 = FUN_01ffe61c(PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8, &VStack_14, &VStack_2c, aiStack_3c); + Vec3p_Sub(&VStack_2c, &VStack_14, &VStack_2c); + // iVar1 = func_01ffe61c(PTR_DWORD_overlay_d_0__020e2510_overlay_d_0__02084ea8, &VStack_14, &VStack_2c, aiStack_3c); if (iVar1 != 0) { param_4->x = VStack_14.x; param_4->y = VStack_14.y; param_4->z = VStack_14.z; - Vec3p::Axpy(aiStack_3c[0], &VStack_2c, param_4, param_4); - a = DWORD_overlay_d_0__02084eb8; + Vec3p_Axpy(aiStack_3c[0], &VStack_2c, param_4, param_4); + a = 0x19a; if (aiStack_3c[0] < 0) { param_4->x = VStack_14.x; param_4->y = VStack_14.y; param_4->z = VStack_14.z; - Vec3p::Axpy(a, &VStack_2c, param_4, param_4); + Vec3p_Axpy(a, &VStack_2c, param_4, param_4); return 1; } return 0; } - return -1; */ + return -1; } -unk8 MapManager::func_ov00_02084ebc(unk32 param_2) { - /* int *piVar1; +unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { + int *piVar1; int iVar2; - dword dVar3; - undefined auStack_18[4]; - uint uStack_14; + unk32 dVar3; // dword + Vec2b auStack_18[4]; // undefined type + u32 uStack_14; - FUN_overlay_d_0__02083a1c(auStack_18, param_1, param_2); - piVar1 = (int *) MapData_vfunc_78(param_1); + this->func_ov00_02083a1c(auStack_18, this, param_2); + piVar1 = (int *) this->MapData_vfunc_78(); if (piVar1 != (int *) 0x0) { - iVar2 = (**(code **) (*piVar1 + 0x1c))(); + // iVar2 = (**(code **) (*piVar1 + 0x1c))(); if (iVar2 < 0x39) { if ((iVar2 < 0x38) && (iVar2 != 1)) { return 0; @@ -2043,11 +2055,11 @@ unk8 MapManager::func_ov00_02084ebc(unk32 param_2) { } } } - iVar2 = FUN_overlay_d_0__02083e70(param_1, auStack_18); + iVar2 = this->func_ov00_02083e70(/*auStack_18*/); if (iVar2 != 0) { return 0; } - iVar2 = MapData_vfunc_54(param_1); + iVar2 = this->MapData_vfunc_54(); if (iVar2 < 0x47) { if (0x45 < iVar2) { return 0; @@ -2110,62 +2122,62 @@ unk8 MapManager::func_ov00_02084ebc(unk32 param_2) { } else if (iVar2 == 0x50) { return 0; } - iVar2 = (**(code **) (param_1->mMap->vtable + 0x58))(param_1->mMap, auStack_18, 5); + iVar2 = this->mMap->vfunc_58(/*auStack_18, 5*/); if (iVar2 != 0) { return 0; } - dVar3 = MapData_vfunc_70(param_1); - if (dVar3 != DWORD_overlay_d_0__02085100) { - FUN_overlay_d_0__02093a1c(&uStack_14, *(undefined4 *) PTR_DWORD_overlay_d_0__02085104); + // dVar3 = this->MapData_vfunc_70(); // Missing param. + if (dVar3 != 0xffff) { + func_ov000_02093a1c(&uStack_14, data_027e0f6c); if ((uStack_14 >> 5 & 3) != 1) { return 0; } return 1; } - return 0; */ + return 0; } s32 MapManager::func_ov00_02085108(s32 *param_2) { - /* undefined *puVar1; - undefined4 uVar2; + MapManager *puVar1; + unk32 uVar2; int *piVar3; int iVar4; - uint uVar5; + u32 uVar5; int iVar6; int iVar7; int iVar8; - uint local_44; - byte local_3a; - byte local_39; - byte local_38; - byte local_37; + u32 local_44; + u8 local_3a; + u8 local_39; + u8 local_38; + u8 local_37; int local_34; int local_30; int local_2c; - undefined4 local_28; + unk32 local_28; - uVar2 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__02085274); - FUN_overlay_d_0__02088130(&local_38, uVar2); - local_44 = (uint) local_38; - uVar2 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__02085274); - FUN_overlay_d_0__02088144(&local_3a, uVar2); + uVar2 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088130(&local_38, uVar2); + local_44 = (u32) local_38; + uVar2 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088144(&local_3a, uVar2); if (local_44 <= local_37) { do { - puVar1 = PTR_gMapManager_overlay_d_0__02085278; - uVar5 = (uint) local_39; - if ((uint) local_3a <= (uint) local_39) { + puVar1 = gMapManager; + uVar5 = (u32) local_39; + if ((u32) local_3a <= (u32) local_39) { do { - piVar3 = (int *) MapData_vfunc_78(*(MapManager **) puVar1); + piVar3 = (int *) puVar1->MapData_vfunc_78(); if ((piVar3 != (int *) 0x0) && ((piVar3[1] & 4U) != 0)) { - iVar7 = piVar3[7]; - iVar6 = piVar3[6]; - iVar8 = piVar3[8]; - iVar4 = (**(code **) (*piVar3 + 0x60))(); - local_28 = (**(code **) (*piVar3 + 0x5c))(); + iVar7 = piVar3[7]; + iVar6 = piVar3[6]; + iVar8 = piVar3[8]; + // iVar4 = (**(code **) (*piVar3 + 0x60))(); + // local_28 = (**(code **) (*piVar3 + 0x5c))(); local_34 = iVar6; local_30 = iVar7 + iVar4; local_2c = iVar8; - iVar4 = FUN_0202b8e4(&local_34, 2); + // iVar4 = func_0202b8e4(&local_34, 2); if (iVar4 != 0) { *param_2 = piVar3[6]; param_2[1] = piVar3[7]; @@ -2174,46 +2186,46 @@ s32 MapManager::func_ov00_02085108(s32 *param_2) { } } uVar5 = uVar5 - 1; - } while ((int) (uint) local_3a <= (int) uVar5); + } while ((int) (u32) local_3a <= (int) uVar5); } local_44 = local_44 + 1; - } while ((int) local_44 <= (int) (uint) local_37); + } while ((int) local_44 <= (int) (u32) local_37); } - return 0; */ + return 0; } -unk8 MapManager::func_ov00_0208527c() { - /* uint uVar1; - undefined *puVar2; - undefined4 uVar3; +s32 MapManager::func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *param_3) { + u32 uVar1; + MapManager *puVar2; + unk32 uVar3; int iVar4; int iVar5; - uint uVar6; - uint uVar7; - uint local_4c; - byte local_3e; - byte local_3d; - byte local_3c; - byte local_3b; - undefined4 local_38; - undefined4 local_34; - undefined4 local_30; - undefined4 local_2c; + u32 uVar6; + u32 uVar7; + u32 local_4c; + u8 local_3e; + u8 local_3d; + u8 local_3c; + u8 local_3b; + unk32 local_38; + unk32 local_34; + unk32 local_30; + unk32 local_2c; - uVar3 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__020853f4); - FUN_overlay_d_0__02088130(&local_3c, uVar3); - uVar7 = (uint) local_3c; - uVar3 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__020853f4); - FUN_overlay_d_0__02088144(&local_3e, uVar3); - local_4c = (uint) local_3e; - uVar6 = (uint) local_3d; - iVar4 = Get_MapData_Unk28(param_1); - iVar5 = Get_MapData_Unk2a(param_1); - puVar2 = PTR_gMapManager_overlay_d_0__020853f8; + uVar3 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088130(&local_3c, uVar3); + uVar7 = (u32) local_3c; + uVar3 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088144(&local_3e, uVar3); + local_4c = (u32) local_3e; + uVar6 = (u32) local_3d; + iVar4 = param_1->GetMapWidth(); + iVar5 = param_1->GetMapHeight(); + puVar2 = gMapManager; if (uVar7 == 0) { uVar7 = 0; } - if (iVar4 <= (int) (uint) local_3b) { + if (iVar4 <= (int) (u32) local_3b) { uVar7 = iVar4 - 1; } if (local_4c == 0) { @@ -2228,59 +2240,59 @@ unk8 MapManager::func_ov00_0208527c() { local_30 = 0; do { uVar1 = local_4c; - if ((int) (uint) local_3b < (int) uVar7) { + if ((int) (u32) local_3b < (int) uVar7) { return 0; } for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) { - iVar4 = MapData_vfunc_78(*(MapManager **) puVar2); - if (((iVar4 != 0) && ((*(uint *) (iVar4 + 4) & 4) != 0)) && - (iVar5 = FUN_overlay_d_0__0208b73c(iVar4, param_2), iVar5 != 0)) + iVar4 = puVar2->MapData_vfunc_78(); + if (((iVar4 != 0) && ((*(u32 *) (iVar4 + 4) & 4) != 0)) && + (iVar5 = func_ov000_0208b73c(iVar4, param_2), iVar5 != 0)) { - *param_3 = *(undefined4 *) (iVar4 + 0x18); - param_3[1] = *(undefined4 *) (iVar4 + 0x1c); - param_3[2] = *(undefined4 *) (iVar4 + 0x20); + *param_3 = *(unk32 *) (iVar4 + 0x18); + param_3[1] = *(unk32 *) (iVar4 + 0x1c); + param_3[2] = *(unk32 *) (iVar4 + 0x20); return (int) *(char *) (iVar4 + 0x12); } } uVar7 = uVar7 + 1; - } while (true); */ + } while (true); } -unk8 MapManager::func_ov00_020853fc() { - /* uint uVar1; - undefined4 uVar2; +s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *param_3) { + u32 uVar1; + unk32 uVar2; int iVar3; int iVar4; int iVar5; - uint uVar6; + u32 uVar6; int iVar7; - uint local_50; - uint local_48; - byte local_3e; - byte local_3d; - byte local_3c; - byte local_3b; - undefined4 local_38; - undefined4 local_34; - undefined4 local_30; - undefined4 local_2c; + u32 local_50; + u32 local_48; + u8 local_3e; + u8 local_3d; + u8 local_3c; + u8 local_3b; + unk32 local_38; + unk32 local_34; + unk32 local_30; + unk32 local_2c; - uVar2 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__0208558c); - FUN_overlay_d_0__02088130(&local_3c, uVar2); - local_48 = (uint) local_3c; - uVar2 = FUN_overlay_d_0__0208b180(*(undefined4 *) PTR_DWORD_overlay_d_0__0208558c); - FUN_overlay_d_0__02088144(&local_3e, uVar2); - local_50 = (uint) local_3e; - uVar6 = (uint) local_3d; - iVar3 = Get_MapData_Unk28(param_1); - iVar4 = Get_MapData_Unk2a(param_1); + uVar2 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088130(&local_3c, uVar2); + local_48 = (u32) local_3c; + uVar2 = func_ov000_0208b180(data_027e0f64); + func_ov000_02088144(&local_3e, uVar2); + local_50 = local_3e; + uVar6 = local_3d; + iVar3 = param_1->GetMapWidth(); + iVar4 = param_1->GetMapHeight(); iVar7 = 0; local_2c = 0; if (local_48 == 0) { local_48 = 0; } local_38 = 0; - if (iVar3 <= (int) (uint) local_3b) { + if (iVar3 <= (int) (u32) local_3b) { local_48 = iVar3 - 1; } local_34 = 0; @@ -2291,41 +2303,40 @@ unk8 MapManager::func_ov00_020853fc() { uVar6 = iVar4 - 1; } local_30 = 0; - for (; uVar1 = local_50, (int) local_48 <= (int) (uint) local_3b; local_48 = local_48 + 1) { + for (; uVar1 = local_50, (int) local_48 <= (int) (u32) local_3b; local_48 = local_48 + 1) { for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) { - iVar3 = MapData_vfunc_78(*(MapManager **) PTR_gMapManager_overlay_d_0__02085590); - if ((((iVar3 != 0) && ((*(uint *) (iVar3 + 4) & 4) != 0)) && - (iVar4 = Vec3p::Distance((Vec3p *) (iVar3 + 0x18), param_2), iVar4 < *param_3)) && - (iVar5 = FUN_overlay_d_0__0208b7d0(iVar3, param_2), iVar5 != 0)) + iVar3 = gMapManager->MapData_vfunc_78(); + if ((((iVar3 != 0) && ((*(u32 *) (iVar3 + 4) & 4) != 0)) && + (iVar4 = Vec3p_Distance((Vec3p *) (iVar3 + 0x18), param_2), iVar4 < *param_3)) && + (iVar5 = func_ov000_0208b7d0(iVar3, param_2), iVar5 != 0)) { *param_3 = iVar4; iVar7 = iVar3; } } } - return iVar7; */ + return iVar7; } -unk8 MapManager::func_ov00_02085594() { - /* int *piVar1; +unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 param_3, unk32 param_4) { + int *piVar1; int iVar2; - dword dVar3; - undefined4 uVar4; + unk32 dVar3; // dword + unk32 uVar4; bool bVar5; - undefined4 uStack_2c; - undefined local_28; - undefined local_27; - uint uStack_24; + unk32 uStack_2c; + Vec2b local_28; + u32 uStack_24; Vec3p VStack_20; - FUN_overlay_d_0__02083a1c(&local_28, param_1, param_2); - piVar1 = (int *) MapData_vfunc_78(param_1); + param_1->func_ov00_02083a1c(&local_28, param_1, param_2); + piVar1 = (int *) param_1->MapData_vfunc_78(); bVar5 = true; if (piVar1 != (int *) 0x0) { param_2->x = piVar1[6]; param_2->y = piVar1[7]; param_2->z = piVar1[8]; - iVar2 = (**(code **) (*piVar1 + 0x1c))(); + // iVar2 = (**(code **) (*piVar1 + 0x1c))(); if (iVar2 < 0x43) { if (0x41 < iVar2) { return 2; @@ -2351,7 +2362,7 @@ unk8 MapManager::func_ov00_02085594() { } } } - iVar2 = FUN_overlay_d_0__020840a0(param_1, local_28, local_27, param_4); + iVar2 = param_1->func_ov00_020840a0(local_28.x, local_28.y, param_4); if (iVar2 < 0x47) { if (0x45 < iVar2) { return 0; @@ -2414,15 +2425,15 @@ unk8 MapManager::func_ov00_02085594() { } else if (iVar2 == 0x50) { return 0; } - iVar2 = (**(code **) (param_1->mMap->vtable + 0x58))(param_1->mMap, &local_28, 5); + iVar2 = param_1->mMap->vfunc_58(/*&local_28, 5*/); // no params if (iVar2 != 0) { return 0; } - uStack_2c._0_2_ = CONCAT11(local_27, local_28); - FUN_overlay_d_0__02083c7c(param_1, &VStack_20, uStack_2c); - dVar3 = MapData_vfunc_70(param_1); - if (dVar3 != DWORD_overlay_d_0__02085834) { - FUN_overlay_d_0__02093a1c(&uStack_24, *(undefined4 *) PTR_DWORD_overlay_d_0__02085838); + // uStack_2c._0_2_ = CONCAT11(local_27, local_28); + param_1->func_ov00_02083c7c(&VStack_20, uStack_2c); + // dVar3 = param_1->MapData_vfunc_70(); + if (dVar3 != 0xffff) { + func_ov000_02093a1c(&uStack_24, data_027e0f6c); if ((uStack_24 >> 5 & 3) != 1) { return 0; } @@ -2433,7 +2444,7 @@ unk8 MapManager::func_ov00_02085594() { } return uVar4; } - return 0; */ + return 0; } void MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3) { @@ -2454,95 +2465,94 @@ void MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 p //} } -unk8 MapManager::func_ov00_020858b0() { - /* int iVar1; +unk8 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3) { + int iVar1; int iVar2; int iVar3; int iVar4; int *piVar5; int iVar6; int iVar7; - undefined4 local_38; - byte local_28; - byte local_27; + unk32 local_38; + Vec2b local_28; // x = originally 'local_28' ; y = originally 'local_27' if (param_3 == 1) { - FUN_overlay_d_0__02088000(*(undefined4 *) (*(int *) PTR_DWORD_overlay_d_0__02085a2c + 4), 7); + func_ov000_02088000(*(unk32 *) (*(int *) data_027e0f64 + 4), 7); } else { - FUN_overlay_d_0__02088000(*(undefined4 *) (*(int *) PTR_DWORD_overlay_d_0__02085a2c + 4), 6); + func_ov000_02088000(*(unk32 *) (*(int *) data_027e0f64 + 4), 6); } - iVar2 = Get_MapData_Unk28(param_1); - iVar3 = Get_MapData_Unk2a(param_1); + iVar2 = param_1->GetMapWidth(); + iVar3 = param_1->GetMapHeight(); local_38 = 0xffffffff; - FUN_overlay_d_0__02083a1c(&local_28, param_1, param_2); - iVar6 = *(int *) (PTR_gPlayerPos_overlay_d_0__02085a30 + 4); - for (iVar7 = local_28 - 1; iVar7 <= (int) (local_28 + 1); iVar7 = iVar7 + 1) { - if ((-1 < iVar7) && (iVar1 = local_27 - 1, iVar7 < iVar2)) { - for (; iVar1 <= (int) (local_27 + 1); iVar1 = iVar1 + 1) { + param_1->func_ov00_02083a1c(&local_28, param_1, param_2); + iVar6 = gPlayerPos->y; // *(int *) (PTR_gPlayerPos_overlay_d_0__02085a30 + 4); + for (iVar7 = local_28.x - 1; iVar7 <= (int) (local_28.x + 1); iVar7 = iVar7 + 1) { + if ((-1 < iVar7) && (iVar1 = local_28.y - 1, iVar7 < iVar2)) { + for (; iVar1 <= (int) (local_28.y + 1); iVar1 = iVar1 + 1) { if ((-1 < iVar1) && (iVar1 < iVar3)) { - iVar4 = MapData_vfunc_60(param_1); + iVar4 = param_1->MapData_vfunc_60(); iVar4 = iVar4 - iVar6; if (iVar4 < 0) { iVar4 = -iVar4; } - if ((iVar4 < 0xce) && (piVar5 = (int *) MapData_vfunc_78(param_1), piVar5 != (int *) 0x0)) { - local_38 = (**(code **) (*piVar5 + 0x38))(piVar5, param_3); + if ((iVar4 < 0xce) && (piVar5 = (int *) param_1->MapData_vfunc_78(), piVar5 != (int *) 0x0)) { + // local_38 = (**(code **) (*piVar5 + 0x38))(piVar5, param_3); } } } } } - return local_38; */ + return local_38; } -s32 MapManager::func_ov00_02085a34(unk32 param_2, unk32 param_3) { - /* int *piVar1; +s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) { + int *piVar1; int iVar2; - undefined2 *puVar3; - uint uVar4; - uint uVar5; - uint uVar6; - undefined uStack_2c; - undefined uStack_2b; - undefined auStack_2a[2]; + unk16 *puVar3; + u32 uVar4; + u32 uVar5; + u32 uVar6; + unk32 uStack_2c; + unk32 uStack_2b; + Vec2b auStack_2a[2]; Vec2b aVStack_28[2]; - undefined2 auStack_24[4]; - undefined auStack_1c[4]; - undefined4 uStack_18; - undefined2 uStack_14; - undefined uStack_12; + unk16 auStack_24[4]; + unk32 auStack_1c[4]; + unk32 uStack_18; + unk16 uStack_14; + unk32 uStack_12; if (param_3 != 1) { if (param_3 != 2 && param_3 != 3) { return -1; } - FUN_overlay_d_0__02083a1c(auStack_2a, param_1, param_2); - piVar1 = (int *) MapData_vfunc_78(param_1); + this->func_ov00_02083a1c(auStack_2a, this, param_2); + piVar1 = (int *) this->MapData_vfunc_78(); if (piVar1 == (int *) 0x0) { return -1; } - iVar2 = (**(code **) (*piVar1 + 0x1c))(); + // iVar2 = (**(code **) (*piVar1 + 0x1c))(); if (iVar2 == 0x42) { - uStack_2b = *(undefined *) ((int) piVar1 + 0x15); - uStack_2c = *(undefined *) (piVar1 + 5); - MapBase::FUN_overlay_d_0__02080d08(param_1->mMap, &uStack_2c); + // uStack_2b = *(undefined *) ((int) piVar1 + 0x15); + // uStack_2c = *(undefined *) (piVar1 + 5); + // this->mMap->func_ov00_02080d08(&uStack_2c); } - iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, param_3); + // iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, param_3); return iVar2; } - FUN_overlay_d_0__02083a1c(aVStack_28, param_1, param_2); - iVar2 = FUN_overlay_d_0__02084ebc(param_1, param_2); + this->func_ov00_02083a1c(aVStack_28, this, param_2); + iVar2 = this->func_ov00_02084ebc(param_2); if (iVar2 == 0) { return -1; } - piVar1 = (int *) MapData_vfunc_78(param_1); + piVar1 = (int *) this->MapData_vfunc_78(); if (piVar1 != (int *) 0x0) { - iVar2 = (**(code **) (*piVar1 + 0x1c))(); + // iVar2 = (**(code **) (*piVar1 + 0x1c))(); if (0x38 < iVar2) { if (iVar2 < 0x5a) { if (iVar2 == 0x59) { LAB_overlay_d_0__02085afc: - iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, 1); + // iVar2 = (**(code **) (*piVar1 + 0x3c))(piVar1, 1); // What is this? return iVar2; } } else if (iVar2 == 0x61) @@ -2553,9 +2563,9 @@ s32 MapManager::func_ov00_02085a34(unk32 param_2, unk32 param_3) { return -1; } piVar1[1] = piVar1[1] & 0xfffffffe; - FUN_overlay_d_0__020828f8(param_1, piVar1); + this->func_ov00_020828f8(piVar1); } - MapBase::FUN_overlay_d_0__02080b24(param_1->mMap, aVStack_28); + this->mMap->func_ov00_02080b24(aVStack_28); uStack_14 = 0xffff; uStack_18 = 0; uStack_12 = 1; @@ -2568,30 +2578,30 @@ s32 MapManager::func_ov00_02085a34(unk32 param_2, unk32 param_3) { uVar4 = uVar5; } while (uVar5 < 4); do { - *(undefined *) (puVar3 + 4) = 0; - uVar6 = uVar6 + 1; - *(undefined *) (puVar3 + 5) = 0; - puVar3 = (undefined2 *) ((int) puVar3 + 1); + *(unk32 *) (puVar3 + 4) = 0; // This is undefined, using unk32 as placeholder. + uVar6 = uVar6 + 1; + *(unk32 *) (puVar3 + 5) = 0; // Same here. + puVar3 = (unk16 *) ((int) puVar3 + 1); } while (uVar6 < 2); - iVar2 = Map_vfunc_7c(param_1); + // iVar2 = this->MapData_vfunc_7c(); <- This needs to return some value (not void). if (iVar2 == 0) { return -1; } - iVar2 = MapData_vfunc_78(param_1); - if ((iVar2 != 0) && (0 < *(short *) (iVar2 + 0xe))) { + iVar2 = MapData_vfunc_78(); // Same here. + if ((iVar2 != 0) && (0 < *(s16 *) (iVar2 + 0xe))) { return 1; } - return 0; */ + return 0; } -unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, unk32 param_5) { - /* longlong lVar1; - undefined *puVar2; - dword dVar3; +unk8 MapManager::func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param_4, u32 param_5) { + s64 lVar1; + s32 *puVar2; + unk32 dVar3; // dword bool bVar4; bool bVar5; int iVar6; - uint uVar7; + u32 uVar7; int iStack_10c; int iStack_108; int iStack_104; @@ -2605,29 +2615,29 @@ unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, Vec3p VStack_a4; Vec3p VStack_98; Vec3p aVStack_8c[3]; - undefined2 uStack_68; - undefined2 uStack_66; - undefined2 uStack_64; - undefined2 uStack_62; - undefined2 uStack_60; - undefined uStack_3e; - undefined uStack_3d; - undefined uStack_3c; - undefined uStack_3b; - undefined uStack_34; - undefined uStack_33; - undefined uStack_32; - undefined uStack_31; - undefined uStack_30; - undefined uStack_2f; - undefined4 uStack_2c; - undefined4 uStack_28; + unk16 uStack_68; + unk16 uStack_66; + unk16 uStack_64; + unk16 uStack_62; + unk16 uStack_60; + unk32 uStack_3e; + unk32 uStack_3d; + unk32 uStack_3c; + unk32 uStack_3b; + unk32 uStack_34; + unk32 uStack_33; + unk32 uStack_32; + unk32 uStack_31; + unk32 uStack_30; + unk32 uStack_2f; + unk32 uStack_2c; + unk32 uStack_28; if (param_5 == 0) { return 0; } - FUN_overlay_d_0__020792a0(*(undefined4 *) PTR_DWORD_overlay_d_0__0208603c, 0, *param_3, param_3[1]); - FUN_overlay_d_0__020792a0(*(undefined4 *) PTR_DWORD_overlay_d_0__0208603c, 0, *param_4, param_4[1]); + func_ov000_020792a0(data_027e0d3c, 0, *param_3, param_3[1]); + func_ov000_020792a0(data_027e0d3c, 0, *param_4, param_4[1]); VStack_b0.x = VStack_98.x; VStack_b0.y = VStack_98.y; VStack_b0.z = VStack_98.z; @@ -2637,17 +2647,17 @@ unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, VStack_c8.x = VStack_98.x; VStack_c8.y = VStack_98.y; VStack_c8.z = VStack_98.z; - Vec3p::Sub(&VStack_c8, &VStack_bc, &VStack_c8); - lVar1 = (ulonglong) param_5 * 0xc000 + 0x800; - uVar7 = (uint) lVar1 >> 0xc | (int) ((ulonglong) lVar1 >> 0x20) * 0x100000; - iVar6 = Vec3p::Length(&VStack_c8); + Vec3p_Sub(&VStack_c8, &VStack_bc, &VStack_c8); + lVar1 = (u64) param_5 * 0xc000 + 0x800; + uVar7 = (u32) lVar1 >> 0xc | (int) ((u64) lVar1 >> 0x20) * 0x100000; + iVar6 = Vec3p_Length(&VStack_c8); if ((int) uVar7 < iVar6) { - Vec3p::Normalize(&VStack_c8, &VStack_c8); - Vec3p::Scale(&VStack_c8, uVar7); + Vec3p_Normalize(&VStack_c8, &VStack_c8); + Vec3p_Scale(&VStack_c8, uVar7); VStack_98.x = VStack_a4.x; VStack_98.y = VStack_a4.y; VStack_98.z = VStack_a4.z; - Vec3p::Add(&VStack_98, &VStack_c8, &VStack_98); + Vec3p_Add(&VStack_98, &VStack_c8, &VStack_98); VStack_b0.y = VStack_98.y; VStack_b0.x = VStack_98.x; VStack_b0.z = VStack_98.z; @@ -2655,25 +2665,25 @@ unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, VStack_c8.x = VStack_98.x; VStack_c8.y = VStack_98.y; VStack_c8.z = VStack_98.z; - Vec3p::Sub(&VStack_c8, &VStack_a4, &VStack_c8); + Vec3p_Sub(&VStack_c8, &VStack_a4, &VStack_c8); uVar7 = param_5 * 0x800 + 0x800 >> 0xc | - ((((int) param_5 >> 0x1f) << 0xb | param_5 >> 0x15) + (uint) (0xfffff7ff < param_5 * 0x800)) * 0x100000; - iVar6 = Vec3p::Length(&VStack_c8); + ((((int) param_5 >> 0x1f) << 0xb | param_5 >> 0x15) + (u32) (0xfffff7ff < param_5 * 0x800)) * 0x100000; + iVar6 = Vec3p_Length(&VStack_c8); if ((int) param_5 <= iVar6) { - Vec3p::Normalize(&VStack_c8, &VStack_c8); - Vec3p::Scale(&VStack_c8, uVar7); + Vec3p_Normalize(&VStack_c8, &VStack_c8); + Vec3p_Scale(&VStack_c8, uVar7); VStack_b0.x = VStack_bc.x; VStack_b0.y = VStack_bc.y; VStack_b0.z = VStack_bc.z; - Vec3p::Add(&VStack_b0, &VStack_c8, &VStack_b0); + Vec3p_Add(&VStack_b0, &VStack_c8, &VStack_b0); } - bVar5 = false; - VStack_d8.xyz.y = param_5 << 1; - VStack_d8.xyz.x = 0; - VStack_d8.xyz.z = 0; - VStack_d8.w = param_5; + bVar5 = false; + VStack_d8.y = param_5 << 1; + VStack_d8.x = 0; + VStack_d8.z = 0; + VStack_d8.w = param_5; do { - bVar4 = FUN_01ffbe78(param_1, param_2, &VStack_b0, &VStack_bc, &VStack_d8); + bVar4 = func_01ffbe78(param_2, &VStack_b0, &VStack_bc, &VStack_d8); if (bVar4) { VStack_e4.x = param_2->x; VStack_e4.y = param_2->y; @@ -2681,14 +2691,14 @@ unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, VStack_f0.x = param_2[1].x; VStack_f0.y = param_2[1].y; VStack_f0.z = param_2[1].z; - Vec3p::Normalize(&VStack_f0, &VStack_f0); - Vec3p::Scale(&VStack_f0, param_5); - Vec3p::Add(&VStack_e4, &VStack_f0, &VStack_e4); - dVar3 = DWORD_overlay_d_0__02086040; + Vec3p_Normalize(&VStack_f0, &VStack_f0); + Vec3p_Scale(&VStack_f0, param_5); + Vec3p_Add(&VStack_e4, &VStack_f0, &VStack_e4); + dVar3 = 0xffff; param_2->x = VStack_e4.x; param_2->y = VStack_e4.y; param_2->z = VStack_e4.z; - uStack_68 = (undefined2) dVar3; + uStack_68 = (u16) dVar3; uStack_60 = 0; uStack_3e = 0; uStack_3d = 0; @@ -2705,13 +2715,13 @@ unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, uStack_66 = uStack_68; uStack_64 = uStack_68; uStack_62 = uStack_68; - bVar5 = FUN_01ffbe78(param_1, aVStack_8c, &VStack_e4, &VStack_e4, &VStack_d8); + bVar5 = func_01ffbe78(aVStack_8c, &VStack_e4, &VStack_e4, &VStack_d8); if (bVar5) { VStack_e4.x = aVStack_8c[0].x; VStack_e4.y = aVStack_8c[0].y; VStack_e4.z = aVStack_8c[0].z; } - FUN_overlay_d_0__0207920c(*(undefined4 *) PTR_DWORD_overlay_d_0__0208603c, &VStack_e4, &iStack_104, 0); + func_ov000_0207920c(data_027e0d3c, &VStack_e4, &iStack_104, 0); param_2[8].x = iStack_104; param_2[8].y = iStack_100; return 1; @@ -2719,8 +2729,8 @@ unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, VStack_bc.x = VStack_b0.x; VStack_bc.y = VStack_b0.y; VStack_bc.z = VStack_b0.z; - iVar6 = FUN_0202b2e8(&VStack_b0, &VStack_98, uVar7); - puVar2 = PTR_DWORD_overlay_d_0__0208603c; + // iVar6 = func_0202b2e8(&VStack_b0, &VStack_98, uVar7); + puVar2 = data_027e0d3c; if (iVar6 != 0) { bVar5 = true; } @@ -2728,10 +2738,10 @@ unk8 MapManager::func_ov00_02085c60(unk32 param_2, unk32 param_3, unk32 param_4, param_2->x = VStack_98.x; param_2->y = VStack_98.y; param_2->z = VStack_98.z; - FUN_overlay_d_0__0207920c(*(undefined4 *) puVar2, &VStack_98, &iStack_10c, 0); + func_ov000_0207920c(puVar2, &VStack_98, &iStack_10c, 0); param_2[8].x = iStack_10c; param_2[8].y = iStack_108; - return 0; */ + return 0; } unk8 MapManager::func_ov00_02086044(Vec3p *param_2, Vec3p *param_3, unk32 param_4) { From a4d82cfa6fe4ef394123bd96331f353b7fc6f9c4 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Thu, 23 Jan 2025 21:09:13 +0100 Subject: [PATCH 26/62] Decomp progress 28% --- config/eur/arm9/overlays/ov000/symbols.txt | 16 ++-- config/eur/arm9/overlays/ov015/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/symbols.txt | 16 ++-- config/usa/arm9/overlays/ov015/symbols.txt | 2 +- include/Actor/ActorType.hpp | 1 + include/Map/MapBase.hpp | 12 +-- include/Map/MapManager.hpp | 16 ++-- src/00_Core/Map/MapBase.cpp | 12 +-- src/00_Core/Map/MapManager.cpp | 90 +++++++++++----------- 9 files changed, 84 insertions(+), 83 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index e8b53bf3..9c7f5c87 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -612,29 +612,29 @@ _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083c5 _ZN10MapManager18func_ov00_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c7c _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083ce8 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 -_ZN10MapManager16MapData_vfunc_60Ev kind:function(arm,size=0x18) addr:0x2083e58 +_ZN10MapManager16MapData_vfunc_60EPc kind:function(arm,size=0x18) addr:0x2083e58 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e70 -_ZN10MapManager16MapData_vfunc_68Ev kind:function(arm,size=0x18) addr:0x2083ee0 +_ZN10MapManager16MapData_vfunc_68EP5Vec3pPb kind:function(arm,size=0x18) addr:0x2083ee0 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083ef8 _ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083f44 _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f80 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f98 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083fb0 _ZN10MapManager18func_ov00_02084024EP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2084024 -_ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084088 +_ZN10MapManager16MapData_vfunc_54EPc kind:function(arm,size=0x18) addr:0x2084088 _ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x20840a0 -_ZN10MapManager16MapData_vfunc_78Ev kind:function(arm,size=0x18) addr:0x20840c4 +_ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x20840c4 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x20840dc _ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x2084100 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x2084114 _ZN10MapManager17GetMapData_Unk_4cEv kind:function(arm,size=0xc) addr:0x2084120 _ZN10MapManager18func_ov00_0208412cEv kind:function(arm,size=0x10) addr:0x208412c _ZN10MapManager18func_ov00_0208413cEi kind:function(arm,size=0x10) addr:0x208413c -_ZN10MapManager16MapData_vfunc_58Ev kind:function(arm,size=0x18) addr:0x208414c -_ZN10MapManager18func_ov00_02084164Ev kind:function(arm,size=0x1a8) addr:0x2084164 +_ZN10MapManager16MapData_vfunc_58EP5Vec2bi kind:function(arm,size=0x18) addr:0x208414c +_ZN10MapManager18func_ov00_02084164EP5Vec2b kind:function(arm,size=0x1a8) addr:0x2084164 _ZN10MapManager17GetMapData_Unk_0aEv kind:function(arm,size=0xc) addr:0x208430c _ZN10MapManager17GetMapData_Unk_0bEv kind:function(arm,size=0xc) addr:0x2084318 -_ZN10MapManager16MapData_vfunc_a4Ev kind:function(arm,size=0x18) addr:0x2084324 +_ZN10MapManager16MapData_vfunc_a4EPc kind:function(arm,size=0x18) addr:0x2084324 _ZN10MapManager18func_ov00_0208433cEP5Vec3pS1_ kind:function(arm,size=0x60) addr:0x208433c _ZN10MapManager18func_ov00_0208439cEP5Vec2sP5Vec3p kind:function(arm,size=0x50) addr:0x208439c _ZN10MapManager18func_ov00_020843ecEPi kind:function(arm,size=0x2ac) addr:0x20843ec @@ -662,7 +662,7 @@ _ZN10MapManager10GetNumKeysEv kind:function(arm,size=0xc) addr:0x2084b14 _ZN10MapManager15SetBlueWarpOpenEb kind:function(arm,size=0xc) addr:0x2084b20 _ZN10MapManager15GetBlueWarpOpenEv kind:function(arm,size=0xc) addr:0x2084b2c _ZN10MapManager18func_ov00_02084b38Eiii kind:function(arm,size=0xa8) addr:0x2084b38 -_ZN10MapManager18func_ov00_02084be0Eii kind:function(arm,size=0x7c) addr:0x2084be0 +_ZN10MapManager18func_ov00_02084be0Eji kind:function(arm,size=0x7c) addr:0x2084be0 _ZN10MapManager15SetMapDataFlag1Eib kind:function(arm,size=0x10) addr:0x2084c5c _ZN10MapManager15GetMapDataFlag1Ei kind:function(arm,size=0x10) addr:0x2084c6c _ZN10MapManager18func_ov00_02084c7cEi kind:function(arm,size=0x18) addr:0x2084c7c diff --git a/config/eur/arm9/overlays/ov015/symbols.txt b/config/eur/arm9/overlays/ov015/symbols.txt index dc62d8fb..6d74b107 100644 --- a/config/eur/arm9/overlays/ov015/symbols.txt +++ b/config/eur/arm9/overlays/ov015/symbols.txt @@ -290,7 +290,7 @@ func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129c04 _Z19func_ov015_02129c14P7MapBase kind:function(arm,size=0x10) addr:0x2129c14 _Z19func_ov015_02129c24P7MapBaseP5Vec3pS2_ kind:function(arm,size=0x10) addr:0x2129c24 _Z19func_ov015_02129c34P7MapBasei kind:function(arm,size=0x10) addr:0x2129c34 -func_ov015_02129c44 kind:function(arm,size=0x10) addr:0x2129c44 +_Z19func_ov015_02129c44i kind:function(arm,size=0x10) addr:0x2129c44 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129c54 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129ca4 func_ov015_02129ce8 kind:function(arm,size=0xac) addr:0x2129ce8 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 2e88e8ca..6416c7c0 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -612,29 +612,29 @@ _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083bf _ZN10MapManager18func_ov00_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c1c _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083c88 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083dd4 -_ZN10MapManager16MapData_vfunc_60Ev kind:function(arm,size=0x18) addr:0x2083df8 +_ZN10MapManager16MapData_vfunc_60EPc kind:function(arm,size=0x18) addr:0x2083df8 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e10 -_ZN10MapManager16MapData_vfunc_68Ev kind:function(arm,size=0x18) addr:0x2083e80 +_ZN10MapManager16MapData_vfunc_68EP5Vec3pPb kind:function(arm,size=0x18) addr:0x2083e80 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083e98 _ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083ee4 _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f20 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f38 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083f50 _ZN10MapManager18func_ov00_02084024EP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2083fc4 -_ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084028 +_ZN10MapManager16MapData_vfunc_54EPc kind:function(arm,size=0x18) addr:0x2084028 _ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x2084040 -_ZN10MapManager16MapData_vfunc_78Ev kind:function(arm,size=0x18) addr:0x2084064 +_ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x2084064 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x208407c _ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x20840a0 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x20840b4 _ZN10MapManager17GetMapData_Unk_4cEv kind:function(arm,size=0xc) addr:0x20840c0 _ZN10MapManager18func_ov00_0208412cEv kind:function(arm,size=0x10) addr:0x20840cc _ZN10MapManager18func_ov00_0208413cEi kind:function(arm,size=0x10) addr:0x20840dc -_ZN10MapManager16MapData_vfunc_58Ev kind:function(arm,size=0x18) addr:0x20840ec -_ZN10MapManager18func_ov00_02084164Ev kind:function(arm,size=0x1a8) addr:0x2084104 +_ZN10MapManager16MapData_vfunc_58EP5Vec2bi kind:function(arm,size=0x18) addr:0x20840ec +_ZN10MapManager18func_ov00_02084164EP5Vec2b kind:function(arm,size=0x1a8) addr:0x2084104 _ZN10MapManager17GetMapData_Unk_0aEv kind:function(arm,size=0xc) addr:0x20842ac _ZN10MapManager17GetMapData_Unk_0bEv kind:function(arm,size=0xc) addr:0x20842b8 -_ZN10MapManager16MapData_vfunc_a4Ev kind:function(arm,size=0x18) addr:0x20842c4 +_ZN10MapManager16MapData_vfunc_a4EPc kind:function(arm,size=0x18) addr:0x20842c4 _ZN10MapManager18func_ov00_0208433cEP5Vec3pS1_ kind:function(arm,size=0x60) addr:0x20842dc _ZN10MapManager18func_ov00_0208439cEP5Vec2sP5Vec3p kind:function(arm,size=0x50) addr:0x208433c _ZN10MapManager18func_ov00_020843ecEPi kind:function(arm,size=0x2ac) addr:0x208438c @@ -662,7 +662,7 @@ _ZN10MapManager10GetNumKeysEv kind:function(arm,size=0xc) addr:0x2084ab4 _ZN10MapManager15SetBlueWarpOpenEb kind:function(arm,size=0xc) addr:0x2084ac0 _ZN10MapManager15GetBlueWarpOpenEv kind:function(arm,size=0xc) addr:0x2084acc _ZN10MapManager18func_ov00_02084b38Eiii kind:function(arm,size=0xa8) addr:0x2084ad8 -_ZN10MapManager18func_ov00_02084be0Eii kind:function(arm,size=0x7c) addr:0x2084b80 +_ZN10MapManager18func_ov00_02084be0Eji kind:function(arm,size=0x7c) addr:0x2084b80 _ZN10MapManager15SetMapDataFlag1Eib kind:function(arm,size=0x10) addr:0x2084bfc _ZN10MapManager15GetMapDataFlag1Ei kind:function(arm,size=0x10) addr:0x2084c0c _ZN10MapManager18func_ov00_02084c7cEi kind:function(arm,size=0x18) addr:0x2084c1c diff --git a/config/usa/arm9/overlays/ov015/symbols.txt b/config/usa/arm9/overlays/ov015/symbols.txt index aa63867c..695075e4 100644 --- a/config/usa/arm9/overlays/ov015/symbols.txt +++ b/config/usa/arm9/overlays/ov015/symbols.txt @@ -290,7 +290,7 @@ func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129b84 _Z19func_ov015_02129c14P7MapBase kind:function(arm,size=0x10) addr:0x2129b94 _Z19func_ov015_02129c24P7MapBaseP5Vec3pS2_ kind:function(arm,size=0x10) addr:0x2129ba4 _Z19func_ov015_02129c34P7MapBasei kind:function(arm,size=0x10) addr:0x2129bb4 -func_ov015_02129c44 kind:function(arm,size=0x10) addr:0x2129bc4 +_Z19func_ov015_02129c44i kind:function(arm,size=0x10) addr:0x2129bc4 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129bd4 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129c24 func_ov015_02129ce8 kind:function(arm,size=0xac) addr:0x2129c68 diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp index 4adc3a7a..e20eaa32 100644 --- a/include/Actor/ActorType.hpp +++ b/include/Actor/ActorType.hpp @@ -111,6 +111,7 @@ enum ActorTypeId_ { ActorTypeId_BMTY = __ACTOR_TYPE_ID(B, M, T, Y), ActorTypeId_BTRF = __ACTOR_TYPE_ID(B, T, R, F), ActorTypeId_CBLS = __ACTOR_TYPE_ID(C, B, L, S), + ActorTypeId_EVIC = __ACTOR_TYPE_ID(E, V, I, C), ActorTypeId_FLAL = __ACTOR_TYPE_ID(F, L, A, L), ActorTypeId_FLBM = __ACTOR_TYPE_ID(F, L, B, M), ActorTypeId_FLBT = __ACTOR_TYPE_ID(F, L, B, T), diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index b71f2b06..254212bd 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -135,16 +135,16 @@ public: /* 48 */ virtual void vfunc_48(); /* 4c */ virtual s32 vfunc_4c() = 0; /* 50 */ virtual unk32 vfunc_50(); - /* 54 */ virtual unk32 vfunc_54(); - /* 58 */ virtual unk32 vfunc_58(); + /* 54 */ virtual unk32 vfunc_54(unk8 *param_1); + /* 58 */ virtual unk32 vfunc_58(Vec2b *param_1, int param_2); /* 5c */ virtual unk32 vfunc_5c(); - /* 60 */ virtual unk32 vfunc_60(); + /* 60 */ virtual unk32 vfunc_60(unk8 *param_1); /* 64 */ virtual unk32 vfunc_64(); - /* 68 */ virtual unk8 vfunc_68(); + /* 68 */ virtual unk8 vfunc_68(Vec3p *param_1, bool *param_2); /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); /* 74 */ virtual s32 vfunc_74(Vec3p *param_2); - /* 78 */ virtual unk32 vfunc_78(); + /* 78 */ virtual unk32 vfunc_78(bool *param_1); /* 7c */ virtual void vfunc_7c(); /* 80 */ virtual unk32 vfunc_80(); /* 84 */ virtual void vfunc_84(unk32 param_2); @@ -155,7 +155,7 @@ public: /* 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(); + /* a4 */ virtual unk32 vfunc_a4(unk8 *param_1); /* a8 */ virtual void vfunc_a8(); /* ac */ virtual void vfunc_ac(); /* b0 */ virtual void vfunc_b0(unk32 param_2, unk32 param_3); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index bd580686..513c4cc4 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -164,29 +164,29 @@ public: void func_ov00_02083c7c(Vec3p *param_2, u32 param_3); static void func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5); void func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); - unk32 MapData_vfunc_60(); + unk32 MapData_vfunc_60(unk8 *param_1); bool func_ov00_02083e70(); - unk8 MapData_vfunc_68(); + unk32 MapData_vfunc_68(Vec3p *param_1, bool *param_2); s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3); void func_ov00_02083f44(Vec3p *param_2); unk8 MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); unk8 MapData_vfunc_70(Vec3p *param_2); static unk8 func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); void func_ov00_02084024(Vec2b *param_2, AABB *param_3); - unk8 MapData_vfunc_54(); + unk32 MapData_vfunc_54(unk8 *param_1); unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4); - unk8 MapData_vfunc_78(); + unk32 MapData_vfunc_78(bool *param_1); unk8 func_ov00_020840dc(); static unk8 func_ov00_02084100(unk32 *param_1, MapManager *param_2); u32 GetMapData_Unk_48(); unk32 GetMapData_Unk_4c(); unk32 func_ov00_0208412c(); void func_ov00_0208413c(unk32 param_2); - unk8 MapData_vfunc_58(); - unk8 func_ov00_02084164(); + unk8 MapData_vfunc_58(Vec2b *param_1, int param_2); + unk8 func_ov00_02084164(Vec2b *param_2); u8 GetMapData_Unk_0a(); u8 GetMapData_Unk_0b(); - unk8 MapData_vfunc_a4(); + unk8 MapData_vfunc_a4(unk8 *param_1); unk8 func_ov00_0208433c(Vec3p *param_2, Vec3p *param_3); unk8 func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3); void func_ov00_020843ec(s32 *param_2); @@ -214,7 +214,7 @@ public: void SetBlueWarpOpen(bool state); bool GetBlueWarpOpen(); unk8 func_ov00_02084b38(unk32 param_2, unk32 param_3, unk32 param_4); - bool func_ov00_02084be0(unk32 param_2, unk32 param_3); + bool func_ov00_02084be0(u32 param_2, unk32 param_3); void SetMapDataFlag1(unk32 param_2, bool param_3); bool GetMapDataFlag1(unk32 param_2); void func_ov00_02084c7c(unk32 param_2); diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 2d9ca7d9..6e9de875 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -18,12 +18,12 @@ s32 MapBase::func_ov00_0207e28c(s32 param_2) {} void MapBase::vfunc_b4() {} void MapBase::vfunc_48() {} unk32 MapBase::vfunc_50() {} -unk32 MapBase::vfunc_54() {} -unk32 MapBase::vfunc_58() {} +unk32 MapBase::vfunc_54(unk8 *param_1) {} +unk32 MapBase::vfunc_58(Vec2b *param_1, int param_2) {} unk32 MapBase::vfunc_5c() {} -unk32 MapBase::vfunc_60() {} +unk32 MapBase::vfunc_60(unk8 *param_1) {} unk32 MapBase::vfunc_64() {} -unk8 MapBase::vfunc_68() {} +unk8 MapBase::vfunc_68(Vec3p *param_1, bool *param_2) {} unk8 MapBase::func_ov00_0207e940(unk8 *param_1) {} unk8 MapBase::func_ov00_0207e968() {} unk8 MapBase::func_ov00_0207e96c() {} @@ -37,10 +37,10 @@ unk32 MapBase::vfunc_88() {} unk32 MapBase::vfunc_8c() {} void MapBase::vfunc_9c() {} void MapBase::vfunc_a0() {} -unk32 MapBase::vfunc_a4() {} +unk32 MapBase::vfunc_a4(unk8 *param_1) {} void MapBase::vfunc_a8() {} void MapBase::vfunc_ac() {} -unk32 MapBase::vfunc_78() {} +unk32 MapBase::vfunc_78(bool *param_1) {} void MapBase::vfunc_7c() {} unk32 MapBase::vfunc_80() {} void MapBase::vfunc_84(unk32 param_2) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 3d5faa7e..6dff6ace 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1161,10 +1161,10 @@ ARM s32 MapManager::func_ov00_02083c50(unk32 z) { } ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, u32 param_3) { - Vec3p local_28; // Unused. So why, ghidra? Why? Tell me why. + Vec3p local_28; param_2->x = this->func_ov00_02083c24(param_3 & 0xff); param_2->z = this->func_ov00_02083c50(param_3 >> 8 & 0xff); - param_2->y = this->MapData_vfunc_68(); + param_2->y = this->MapData_vfunc_68(&local_28, 0); // please tell me this is correct } ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5) { @@ -1203,29 +1203,29 @@ ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 p param_2[2] = iVar2 + 0x800; } } - iVar2 = param_1->MapData_vfunc_68(); + iVar2 = param_1->MapData_vfunc_68(&local_2c, 0); // I really do hope this is right param_2[1] = iVar2; } ARM void MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) { - unk8 local_8; + unk8 local_8; // Should this be a bool or a Vec2p or a Vec3p? unk8 local_7; // Unused. unk16 uStack_6; uStack_6 = (unk16) ((u32) param_4 >> 0x10); // _local_8 = CONCAT11(param_3, param_2); What is this? - this->mMap->vfunc_60(/*&local_8*/); // Doesn't take any params, so why? + this->mMap->vfunc_60(&local_8); } -ARM unk32 MapManager::MapData_vfunc_60() { - return this->mMap->vfunc_60(); +ARM unk32 MapManager::MapData_vfunc_60(unk8 *param_1) { // should the param be bool*? + return this->mMap->vfunc_60(param_1); } ARM bool MapManager::func_ov00_02083e70() { int iVar1; int iVar2; - iVar1 = this->MapData_vfunc_54(); + iVar1 = this->MapData_vfunc_54(0); if (iVar1 < 0x2c) { if ((0x2a < iVar1) || (iVar1 == 0x1b)) { return true; @@ -1233,13 +1233,13 @@ ARM bool MapManager::func_ov00_02083e70() { } else if (((iVar1 < 0x50) && (0x4d < iVar1)) && (iVar1 == 0x4e || iVar1 == 0x4f)) { return true; } - iVar1 = this->MapData_vfunc_60(); + iVar1 = this->MapData_vfunc_60(0); iVar2 = this->GetMapData_Unk_48(); return iVar2 <= iVar1; } -ARM unk8 MapManager::MapData_vfunc_68() { - return this->mMap->vfunc_68(); +ARM unk32 MapManager::MapData_vfunc_68(Vec3p *param_1, bool *param_2) { // not sure about the bool* here. + return this->mMap->vfunc_68(param_1, param_2); } ARM s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3) { @@ -1252,7 +1252,7 @@ ARM s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3) { if (param_2->y < param_3->y) { local_18.y = param_3->y; } - iVar1 = this->mMap->vfunc_68(/*&local_18*/); // takes no args. + iVar1 = this->mMap->vfunc_68(&local_18, 0); // takes no args. return iVar1; } @@ -1305,8 +1305,8 @@ void MapManager::func_ov00_02084024(Vec2b *param_2, AABB *param_3) { Vec3p_Add(¶m_3->max, &local_20, ¶m_3->max); } -unk8 MapManager::MapData_vfunc_54() { - this->mMap->vfunc_54(); +unk32 MapManager::MapData_vfunc_54(unk8 *param_1) { // what type is this param? + return this->mMap->vfunc_54(param_1); } unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { @@ -1316,18 +1316,18 @@ unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { uStack_6 = (unk16) ((u32) param_4 >> 0x10); // _local_8 = CONCAT11(param_3, param_2); - this->MapData_vfunc_54(/*&local_8*/); // Doesn't take any params. + this->MapData_vfunc_54(&local_8); // Doesn't take any params. // No calls to functions according to objdiff, why??? } -unk8 MapManager::MapData_vfunc_78() { - this->mMap->vfunc_78(); +unk32 MapManager::MapData_vfunc_78(bool *param_1) { // bool* param placeholder for now, no way of knowing what the type is. + return this->mMap->vfunc_78(param_1); } unk8 MapManager::func_ov00_020840dc() { int *piVar1; - piVar1 = (int *) this->MapData_vfunc_78(); + piVar1 = (int *) this->MapData_vfunc_78(0); if (piVar1 != (int *) 0x0) { // (**(code **) (*piVar1 + 0x1c))(); // MapBase::func_ov00_0207f934() ?? } @@ -1355,17 +1355,17 @@ void MapManager::func_ov00_0208413c(unk32 param_2) { this->mMap->func_ov00_0207f948(param_2); } -unk8 MapManager::MapData_vfunc_58() { - this->mMap->vfunc_58(); +unk8 MapManager::MapData_vfunc_58(Vec2b *param_1, int param_2) { + this->mMap->vfunc_58(param_1, param_2); } -unk8 MapManager::func_ov00_02084164() { +unk8 MapManager::func_ov00_02084164(Vec2b *param_2) { int iVar1; unk32 uVar2; - iVar1 = this->mMap->vfunc_58(/*param_2, 7, pcVar3, param_4*/); // Params? + iVar1 = this->mMap->vfunc_58(param_2, 7 /*, pcVar3, param_4*/); // Params? if (iVar1 == 0) { - uVar2 = this->MapData_vfunc_54(); + uVar2 = this->MapData_vfunc_54(0); switch (uVar2) { case 0: break; case 1: return 0; @@ -1467,8 +1467,8 @@ u8 MapManager::GetMapData_Unk_0b() { return this->mMap->mUnk_00b; } -unk8 MapManager::MapData_vfunc_a4() { - this->mMap->vfunc_a4(); +unk8 MapManager::MapData_vfunc_a4(unk8 *param_1) { + this->mMap->vfunc_a4(param_1); } unk8 MapManager::func_ov00_0208433c(Vec3p *param_2, Vec3p *param_3) { @@ -1493,7 +1493,7 @@ unk8 MapManager::func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3) { this->mMap->func_ov00_0207f630(param_2, param_3); this->GetMapMinBounds(&VStack_18); Vec3p_Add(param_3, &VStack_18, param_3); - iVar1 = this->MapData_vfunc_68(); + iVar1 = this->MapData_vfunc_68(param_3, 0); // is this correct? param_3->y = iVar1; } @@ -1617,7 +1617,7 @@ unk8 MapManager::func_ov00_020846a4() { return iVar1; } -unk8 MapManager::func_ov00_02084700(s32 *param_1) { +unk8 MapManager::func_ov00_02084700(s32 *param_1) { // param_1 perhaps Vec2b ? int iVar1; iVar1 = *(int *) (param_1[1] + 0x34); @@ -1827,10 +1827,10 @@ bool MapManager::func_ov00_02084ac4(u32 actorId) { bool bVar1; iVar1 = gActorManager->FindActorById(actorId); - if (iVar1 == (Actor *) 0x0) { + if (iVar1 == NULL) { return false; } - bVar1 = (char *) iVar1->mType == "CIVE"; // s_CIVE_overlay_d_0__02084b04 + bVar1 = iVar1->mType == ActorTypeId_EVIC; if (bVar1) { iVar1->mAlive = false; } @@ -1878,7 +1878,7 @@ LAB_overlay_d_0__02084b60: return; } -bool MapManager::func_ov00_02084be0(unk32 param_2, unk32 param_3) { +bool MapManager::func_ov00_02084be0(u32 param_2, unk32 param_3) { bool bVar1; if (param_2 == 0) { @@ -2035,7 +2035,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { u32 uStack_14; this->func_ov00_02083a1c(auStack_18, this, param_2); - piVar1 = (int *) this->MapData_vfunc_78(); + piVar1 = (int *) this->MapData_vfunc_78(0); if (piVar1 != (int *) 0x0) { // iVar2 = (**(code **) (*piVar1 + 0x1c))(); if (iVar2 < 0x39) { @@ -2059,7 +2059,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { if (iVar2 != 0) { return 0; } - iVar2 = this->MapData_vfunc_54(); + iVar2 = this->MapData_vfunc_54(0); if (iVar2 < 0x47) { if (0x45 < iVar2) { return 0; @@ -2122,7 +2122,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { } else if (iVar2 == 0x50) { return 0; } - iVar2 = this->mMap->vfunc_58(/*auStack_18, 5*/); + iVar2 = this->mMap->vfunc_58(auStack_18, 5); if (iVar2 != 0) { return 0; } @@ -2167,7 +2167,7 @@ s32 MapManager::func_ov00_02085108(s32 *param_2) { uVar5 = (u32) local_39; if ((u32) local_3a <= (u32) local_39) { do { - piVar3 = (int *) puVar1->MapData_vfunc_78(); + piVar3 = (int *) puVar1->MapData_vfunc_78(0); if ((piVar3 != (int *) 0x0) && ((piVar3[1] & 4U) != 0)) { iVar7 = piVar3[7]; iVar6 = piVar3[6]; @@ -2244,7 +2244,7 @@ s32 MapManager::func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *pa return 0; } for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) { - iVar4 = puVar2->MapData_vfunc_78(); + iVar4 = puVar2->MapData_vfunc_78(0); if (((iVar4 != 0) && ((*(u32 *) (iVar4 + 4) & 4) != 0)) && (iVar5 = func_ov000_0208b73c(iVar4, param_2), iVar5 != 0)) { @@ -2305,7 +2305,7 @@ s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *par local_30 = 0; for (; uVar1 = local_50, (int) local_48 <= (int) (u32) local_3b; local_48 = local_48 + 1) { for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) { - iVar3 = gMapManager->MapData_vfunc_78(); + iVar3 = gMapManager->MapData_vfunc_78(0); if ((((iVar3 != 0) && ((*(u32 *) (iVar3 + 4) & 4) != 0)) && (iVar4 = Vec3p_Distance((Vec3p *) (iVar3 + 0x18), param_2), iVar4 < *param_3)) && (iVar5 = func_ov000_0208b7d0(iVar3, param_2), iVar5 != 0)) @@ -2330,7 +2330,7 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 Vec3p VStack_20; param_1->func_ov00_02083a1c(&local_28, param_1, param_2); - piVar1 = (int *) param_1->MapData_vfunc_78(); + piVar1 = (int *) param_1->MapData_vfunc_78(0); bVar5 = true; if (piVar1 != (int *) 0x0) { param_2->x = piVar1[6]; @@ -2425,7 +2425,7 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 } else if (iVar2 == 0x50) { return 0; } - iVar2 = param_1->mMap->vfunc_58(/*&local_28, 5*/); // no params + iVar2 = param_1->mMap->vfunc_58(&local_28, 5); // no params if (iVar2 != 0) { return 0; } @@ -2452,7 +2452,7 @@ void MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 p unk8 auStack_10[4]; // param_1->func_ov00_02083a1c(auStack_10, param_1, param_2); // Should auStack_10 be pointer type or not ? - piVar1 = (s32 *) param_1->MapData_vfunc_78(); + piVar1 = (s32 *) param_1->MapData_vfunc_78(0); if (piVar1 == (s32 *) 0x0) { return; } @@ -2490,12 +2490,12 @@ unk8 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 par if ((-1 < iVar7) && (iVar1 = local_28.y - 1, iVar7 < iVar2)) { for (; iVar1 <= (int) (local_28.y + 1); iVar1 = iVar1 + 1) { if ((-1 < iVar1) && (iVar1 < iVar3)) { - iVar4 = param_1->MapData_vfunc_60(); + iVar4 = param_1->MapData_vfunc_60(0); iVar4 = iVar4 - iVar6; if (iVar4 < 0) { iVar4 = -iVar4; } - if ((iVar4 < 0xce) && (piVar5 = (int *) param_1->MapData_vfunc_78(), piVar5 != (int *) 0x0)) { + if ((iVar4 < 0xce) && (piVar5 = (int *) param_1->MapData_vfunc_78(0), piVar5 != (int *) 0x0)) { // local_38 = (**(code **) (*piVar5 + 0x38))(piVar5, param_3); } } @@ -2527,7 +2527,7 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) { return -1; } this->func_ov00_02083a1c(auStack_2a, this, param_2); - piVar1 = (int *) this->MapData_vfunc_78(); + piVar1 = (int *) this->MapData_vfunc_78(0); if (piVar1 == (int *) 0x0) { return -1; } @@ -2545,7 +2545,7 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) { if (iVar2 == 0) { return -1; } - piVar1 = (int *) this->MapData_vfunc_78(); + piVar1 = (int *) this->MapData_vfunc_78(0); if (piVar1 != (int *) 0x0) { // iVar2 = (**(code **) (*piVar1 + 0x1c))(); if (0x38 < iVar2) { @@ -2587,7 +2587,7 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) { if (iVar2 == 0) { return -1; } - iVar2 = MapData_vfunc_78(); // Same here. + iVar2 = MapData_vfunc_78(0); // Same here. if ((iVar2 != 0) && (0 < *(s16 *) (iVar2 + 0xe))) { return 1; } @@ -2817,7 +2817,7 @@ unk8 MapManager::func_ov00_02086044(Vec3p *param_2, Vec3p *param_3, unk32 param_ return 1; } } - piVar9 = (int *) this->MapData_vfunc_78(); + piVar9 = (int *) this->MapData_vfunc_78(0); if ((piVar9 != (int *) 0x0) /*&& (iVar8 = (**(code **) (*piVar9 + 0x58))(), iVar8 != 0)*/) { iStack_c0.x = param_3->x; iStack_c0.y = param_3->y; From 5b3bc3313eb9d424657e6eb888ad741494484d03 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Tue, 4 Feb 2025 16:06:04 +0100 Subject: [PATCH 27/62] Decomp update --- config/eur/arm9/overlays/ov000/symbols.txt | 4 +- config/eur/arm9/overlays/ov015/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/symbols.txt | 4 +- config/usa/arm9/overlays/ov015/symbols.txt | 2 +- include/Map/MapBase.hpp | 2 +- include/Map/MapManager.hpp | 6 +- src/00_Core/Map/MapBase.cpp | 2 +- src/00_Core/Map/MapManager.cpp | 68 +++++++++++----------- 8 files changed, 46 insertions(+), 44 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 9c7f5c87..687ff58d 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -576,7 +576,7 @@ _ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x20 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x20835f4 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x2083604 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x2083614 -_ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x2083624 +_ZN10MapManager14GetEntrancePosEP8Entrancei kind:function(arm,size=0x40) addr:0x2083624 _ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083664 _ZN10MapManager21GetTriggerBoundingBoxEiP4AABB kind:function(arm,size=0x10) addr:0x20836bc _ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x20836cc @@ -614,7 +614,7 @@ _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr: _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 _ZN10MapManager16MapData_vfunc_60EPc kind:function(arm,size=0x18) addr:0x2083e58 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e70 -_ZN10MapManager16MapData_vfunc_68EP5Vec3pPb kind:function(arm,size=0x18) addr:0x2083ee0 +_ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x2083ee0 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083ef8 _ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083f44 _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f80 diff --git a/config/eur/arm9/overlays/ov015/symbols.txt b/config/eur/arm9/overlays/ov015/symbols.txt index 6d74b107..fa382d8d 100644 --- a/config/eur/arm9/overlays/ov015/symbols.txt +++ b/config/eur/arm9/overlays/ov015/symbols.txt @@ -290,7 +290,7 @@ func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129c04 _Z19func_ov015_02129c14P7MapBase kind:function(arm,size=0x10) addr:0x2129c14 _Z19func_ov015_02129c24P7MapBaseP5Vec3pS2_ kind:function(arm,size=0x10) addr:0x2129c24 _Z19func_ov015_02129c34P7MapBasei kind:function(arm,size=0x10) addr:0x2129c34 -_Z19func_ov015_02129c44i kind:function(arm,size=0x10) addr:0x2129c44 +_Z19func_ov015_02129c44P7MapBasei kind:function(arm,size=0x10) addr:0x2129c44 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129c54 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129ca4 func_ov015_02129ce8 kind:function(arm,size=0xac) addr:0x2129ce8 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 6416c7c0..cc3b1e16 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -576,7 +576,7 @@ _ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x20 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x2083594 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x20835a4 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x20835b4 -_ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x20835c4 +_ZN10MapManager14GetEntrancePosEP8Entrancei kind:function(arm,size=0x40) addr:0x20835c4 _ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083604 _ZN10MapManager21GetTriggerBoundingBoxEiP4AABB kind:function(arm,size=0x10) addr:0x208365c _ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x208366c @@ -614,7 +614,7 @@ _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr: _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083dd4 _ZN10MapManager16MapData_vfunc_60EPc kind:function(arm,size=0x18) addr:0x2083df8 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e10 -_ZN10MapManager16MapData_vfunc_68EP5Vec3pPb kind:function(arm,size=0x18) addr:0x2083e80 +_ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x2083e80 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083e98 _ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083ee4 _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f20 diff --git a/config/usa/arm9/overlays/ov015/symbols.txt b/config/usa/arm9/overlays/ov015/symbols.txt index 695075e4..3d985aa5 100644 --- a/config/usa/arm9/overlays/ov015/symbols.txt +++ b/config/usa/arm9/overlays/ov015/symbols.txt @@ -290,7 +290,7 @@ func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129b84 _Z19func_ov015_02129c14P7MapBase kind:function(arm,size=0x10) addr:0x2129b94 _Z19func_ov015_02129c24P7MapBaseP5Vec3pS2_ kind:function(arm,size=0x10) addr:0x2129ba4 _Z19func_ov015_02129c34P7MapBasei kind:function(arm,size=0x10) addr:0x2129bb4 -_Z19func_ov015_02129c44i kind:function(arm,size=0x10) addr:0x2129bc4 +_Z19func_ov015_02129c44P7MapBasei kind:function(arm,size=0x10) addr:0x2129bc4 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129bd4 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129c24 func_ov015_02129ce8 kind:function(arm,size=0xac) addr:0x2129c68 diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 254212bd..7a242891 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -140,7 +140,7 @@ public: /* 5c */ virtual unk32 vfunc_5c(); /* 60 */ virtual unk32 vfunc_60(unk8 *param_1); /* 64 */ virtual unk32 vfunc_64(); - /* 68 */ virtual unk8 vfunc_68(Vec3p *param_1, bool *param_2); + /* 68 */ virtual unk8 vfunc_68(Vec3p *param_1, bool param_2); /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); /* 74 */ virtual s32 vfunc_74(Vec3p *param_2); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 513c4cc4..5dfcbf93 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -128,8 +128,8 @@ public: unk32 func_ov00_020835f4(s32 param_2); void func_ov00_02083604(s32 param_2); unk8 func_ov00_02083614(s32 param_2); - bool GetEntrancePos(Vec3p *param_2, unk32 entranceId); - bool func_ov00_02083664(Vec3p *param_2, unk32 entranceId); + bool GetEntrancePos(Entrance *param_2, unk32 entranceId); + bool func_ov00_02083664(Entrance *param_2, unk32 entranceId); s32 GetTriggerBoundingBox(s32 param_2, AABB *param_3); s32 GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4); bool func_ov00_020836dc(u32 param_2, u32 actorId); @@ -166,7 +166,7 @@ public: void func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); unk32 MapData_vfunc_60(unk8 *param_1); bool func_ov00_02083e70(); - unk32 MapData_vfunc_68(Vec3p *param_1, bool *param_2); + unk32 MapData_vfunc_68(Vec3p *param_1, bool param_2); s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3); void func_ov00_02083f44(Vec3p *param_2); unk8 MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 6e9de875..d7cac5ad 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -23,7 +23,7 @@ unk32 MapBase::vfunc_58(Vec2b *param_1, int param_2) {} unk32 MapBase::vfunc_5c() {} unk32 MapBase::vfunc_60(unk8 *param_1) {} unk32 MapBase::vfunc_64() {} -unk8 MapBase::vfunc_68(Vec3p *param_1, bool *param_2) {} +unk8 MapBase::vfunc_68(Vec3p *param_1, bool param_2) {} unk8 MapBase::func_ov00_0207e940(unk8 *param_1) {} unk8 MapBase::func_ov00_0207e968() {} unk8 MapBase::func_ov00_0207e96c() {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 6dff6ace..c1f70e90 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -45,7 +45,7 @@ extern void func_ov004_02105608(ActorManager *param_1, unk32 param_2, unk32 para extern s32 func_ov015_02129c14(MapBase *param_1); extern bool func_ov015_02129c24(MapBase *param_1, Vec3p *param_2, Vec3p *param_3); extern bool func_ov015_02129c34(MapBase *param_1, s32 param_2); -extern bool func_ov015_02129c44(s32 param_1); +extern bool func_ov015_02129c44(MapBase *param_1, s32 param_2); extern s32 *data_027e0c68; extern s32 *data_027e0d38; @@ -229,7 +229,7 @@ ARM bool MapManager::func_ov00_02082494(s32 param_2) { ARM bool MapManager::func_ov00_020824cc(s32 param_2) { s32 var = this->mMap->vfunc_4c(); if (var == 2) { - bool state = func_ov015_02129c44(param_2); + bool state = func_ov015_02129c44(this->mMap, param_2); return state; } return false; @@ -545,10 +545,11 @@ ARM u8 MapManager::GetCurrentMapPosY() { } ARM u8 MapManager::func_ov00_02082d40() { - if (this->mCourse->mType == CourseType_Sea) { - return this->mCourse->mMapGrid[(u8) this->mCourse->mCurrMapPos.x][(u8) this->mCourse->mCurrMapPos.y]; + switch (this->mCourse->mType) { + case CourseType_Sea: + return this->mCourse->mMapGrid[(u8) this->mCourse->mCurrMapPos.x][(u8) this->mCourse->mCurrMapPos.y]; + default: return this->mCourse->mUnk_0b1; } - return this->mCourse->mUnk_0b1; } ARM u32 MapManager::func_ov00_02082d74(unk32 param_2) { @@ -906,25 +907,27 @@ ARM unk8 MapManager::func_ov00_02083614(s32 param_2) { return this->mCourse->func_ov00_0207cc24(param_2); } -ARM bool MapManager::GetEntrancePos(Vec3p *pos, unk32 entranceId) { - Vec3p *entrancePos = (Vec3p *) this->mMap->FindEntrance(entranceId); - s32 y = entrancePos->y; - s32 z = entrancePos->z; - pos->x = entrancePos->x; - pos->y = y; - pos->z = z; - //*&pos[1].x = *&entrancePos[1].x; - //*(&pos[1].x + 2) = *(&entrancePos[1].x + 2); - // pos[1].y = entrancePos[1].y; +ARM bool MapManager::GetEntrancePos(Entrance *param_1, unk32 entranceId) { + Entrance *entrance = this->mMap->FindEntrance(entranceId); + q20 y = entrance->mPos.y; + q20 z = entrance->mPos.z; + param_1->mPos.x = entrance->mPos.x; + param_1->mPos.y = y; + param_1->mPos.z = z; + param_1->mAngle = entrance->mAngle; + param_1->mId = entrance->mId; // mId needs to be u8 according to objdiff + param_1->mUnk_10 = entrance->mUnk_10; return true; } -ARM bool MapManager::func_ov00_02083664(Vec3p *param_2, unk32 entranceId) { - Vec3p entrancePos; - if (this->GetEntrancePos(&entrancePos, entranceId)) { - param_2->x = entrancePos.x; - param_2->y = entrancePos.y; - param_2->z = entrancePos.z; +ARM bool MapManager::func_ov00_02083664(Entrance *param_2, unk32 entranceId) { + Entrance entrance; + entrance.mId = (u8) 0xff; // mId needs to be u8 + entrance.mUnk_10 = 0; + if (this->GetEntrancePos(&entrance, entranceId)) { + param_2->mPos.x = entrance.mPos.x; + param_2->mPos.y = entrance.mPos.y; + param_2->mPos.z = entrance.mPos.z; return true; } return false; @@ -939,11 +942,10 @@ ARM s32 MapManager::GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 para } ARM bool MapManager::func_ov00_020836dc(u32 type, u32 actorId) { - bool state; Actor *actor; Vec3p playerPos; - if (actorId < 2) { + if (!(actorId != 0 && actorId != 1)) { // what an awkward statement (as opposed to actorId < 2) playerPos.x = gPlayerPos->x; playerPos.y = gPlayerPos->y; playerPos.z = gPlayerPos->z; @@ -952,9 +954,9 @@ ARM bool MapManager::func_ov00_020836dc(u32 type, u32 actorId) { if (actor == NULL) { return false; } - playerPos.x = *(s32 *) (actor + 0x48); - playerPos.y = *(s32 *) (actor + 0x4c); - playerPos.z = *(s32 *) (actor + 0x50); + playerPos.x = actor->mPos.x; + playerPos.y = actor->mPos.y; + playerPos.z = actor->mPos.z; } return this->IsTriggerTypeOverlapped(type, &playerPos); } @@ -1164,7 +1166,7 @@ ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, u32 param_3) { Vec3p local_28; param_2->x = this->func_ov00_02083c24(param_3 & 0xff); param_2->z = this->func_ov00_02083c50(param_3 >> 8 & 0xff); - param_2->y = this->MapData_vfunc_68(&local_28, 0); // please tell me this is correct + param_2->y = this->MapData_vfunc_68(&local_28, true); // please tell me this is correct } ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5) { @@ -1203,7 +1205,7 @@ ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 p param_2[2] = iVar2 + 0x800; } } - iVar2 = param_1->MapData_vfunc_68(&local_2c, 0); // I really do hope this is right + iVar2 = param_1->MapData_vfunc_68(&local_2c, true); // I really do hope this is right param_2[1] = iVar2; } @@ -1238,7 +1240,7 @@ ARM bool MapManager::func_ov00_02083e70() { return iVar2 <= iVar1; } -ARM unk32 MapManager::MapData_vfunc_68(Vec3p *param_1, bool *param_2) { // not sure about the bool* here. +ARM unk32 MapManager::MapData_vfunc_68(Vec3p *param_1, bool param_2) { return this->mMap->vfunc_68(param_1, param_2); } @@ -1493,7 +1495,7 @@ unk8 MapManager::func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3) { this->mMap->func_ov00_0207f630(param_2, param_3); this->GetMapMinBounds(&VStack_18); Vec3p_Add(param_3, &VStack_18, param_3); - iVar1 = this->MapData_vfunc_68(param_3, 0); // is this correct? + iVar1 = this->MapData_vfunc_68(param_3, true); // is this correct? param_3->y = iVar1; } @@ -1913,7 +1915,7 @@ void MapManager::func_ov00_02084c7c(unk32 param_2) { bool MapManager::func_ov00_02084c94(unk32 param_2) { bool bVar1; - if (-1 < param_2) { + if (0 <= param_2) { bVar1 = this->mCourse->GetMapDataFlag2(param_2); return bVar1; } @@ -1932,7 +1934,7 @@ void MapManager::func_ov00_02084cb0(unk32 param_2) { bool MapManager::func_ov00_02084cc8(unk32 param_2) { bool bVar1; - if (-1 < param_2) { + if (0 <= param_2) { bVar1 = this->mCourse->GetMapDataFlag3(param_2); return bVar1; } @@ -1951,7 +1953,7 @@ void MapManager::func_ov00_02084ce4(unk32 param_2) { bool MapManager::func_ov00_02084cfc(unk32 param_2) { bool bVar1; - if (-1 < param_2) { + if (0 <= param_2) { bVar1 = this->mCourse->GetMapDataFlag4(param_2); return bVar1; } From e922eb92ed5152d9aeeb3d6921bd27af62c2b2e7 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Tue, 4 Feb 2025 17:00:51 +0100 Subject: [PATCH 28/62] Update MapManager --- include/Map/MapManager.hpp | 2 +- src/00_Core/Map/MapManager.cpp | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 6ca4e36d..8916d41f 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -178,7 +178,7 @@ public: unk8 MapData_vfunc_70(Vec3p *param_2); static unk8 func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds); - unk8 MapData_vfunc_54(); + unk32 MapData_vfunc_54(); unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4); unk32 MapData_vfunc_78(bool *param_1); unk8 func_ov00_020840dc(); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 19df9b36..22ec6050 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -524,7 +524,7 @@ bool MapManager::func_ov00_02082b3c(s32 param_2) { uVar4 = this->mCourse->FindMapData_Unk_04((u32) bVar1); (this->mCourse->mCurrMapPos).x = (u8) local_18; (this->mCourse->mCurrMapPos).y = (u8) * (&local_18 + 0x4); // I assume this is what Ghidra means by "local_18._1_1_" - func_ov004_021024c4(this, param_2, uVar3 != uVar4, 0); + func_ov004_021024c4(param_2, uVar3 != uVar4, 0); func_ov004_02105578(gActorManager, (u32) * (u8 *) (param_2 + 0x12)); // UnkStruct_027e0103c::thunk_FUN_overlay_d_0__020cf7e8(*PTR_PTR_overlay_d_0__02082cfc); } @@ -1227,7 +1227,7 @@ ARM bool MapManager::func_ov00_02083e70() { int iVar1; int iVar2; - iVar1 = this->MapData_vfunc_54(0); + iVar1 = this->MapData_vfunc_54(); if (iVar1 < 0x2c) { if ((0x2a < iVar1) || (iVar1 == 0x1b)) { return true; @@ -1307,8 +1307,8 @@ void MapManager::GetTileWorldBounds(Vec2b *tile, AABB *tileBounds) { Vec3p_Add(&tileBounds->max, &local_20, &tileBounds->max); } -unk32 MapManager::MapData_vfunc_54(unk8 *param_1) { // what type is this param? - return this->mMap->vfunc_54(param_1); +unk32 MapManager::MapData_vfunc_54() { + return this->mMap->vfunc_54(0); // what to use for this param? } unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { @@ -1318,7 +1318,7 @@ unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { uStack_6 = (unk16) ((u32) param_4 >> 0x10); // _local_8 = CONCAT11(param_3, param_2); - this->MapData_vfunc_54(&local_8); // Doesn't take any params. + this->MapData_vfunc_54(/*&local_8*/); // Doesn't take any params. // No calls to functions according to objdiff, why??? } @@ -1367,7 +1367,7 @@ unk8 MapManager::func_ov00_02084164(Vec2b *param_2) { iVar1 = this->mMap->vfunc_58(param_2, 7 /*, pcVar3, param_4*/); // Params? if (iVar1 == 0) { - uVar2 = this->MapData_vfunc_54(0); + uVar2 = this->MapData_vfunc_54(); switch (uVar2) { case 0: break; case 1: return 0; @@ -2061,7 +2061,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { if (iVar2 != 0) { return 0; } - iVar2 = this->MapData_vfunc_54(0); + iVar2 = this->MapData_vfunc_54(); if (iVar2 < 0x47) { if (0x45 < iVar2) { return 0; @@ -2811,7 +2811,7 @@ unk8 MapManager::func_ov00_02086044(Vec3p *param_2, Vec3p *param_3, unk32 param_ if (iVar7 < iVar8) { local_c6.x = (char) iVar3; local_c6.y = (char) iVar11; - gMapManager->func_ov00_02084024(&local_c6, &AStack_70); + gMapManager->GetTileWorldBounds(&local_c6, &AStack_70); Vec3p_Sub(param_2, param_3, &VStack_7c); pVVar10 = (Vec3p *) auStack_c4; iVar8 = func_ov000_0208e87c(&AStack_70, &local_b0, &VStack_7c); From fdaf2b17909b191ea6694cc93e63aa77c6991079 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Tue, 4 Feb 2025 22:06:24 +0100 Subject: [PATCH 29/62] Fix build errors --- include/Unknown/UnkStruct_ov000_020e2f04.hpp | 2 +- src/00_Core/Actor/Actor.cpp | 28 ++++++++++---------- src/00_Core/Item/ItemManager.cpp | 2 +- src/00_Core/Map/MapBase.cpp | 4 +-- tools/transform_dep.py | 0 5 files changed, 18 insertions(+), 18 deletions(-) mode change 100644 => 100755 tools/transform_dep.py diff --git a/include/Unknown/UnkStruct_ov000_020e2f04.hpp b/include/Unknown/UnkStruct_ov000_020e2f04.hpp index 74739291..b62ae550 100644 --- a/include/Unknown/UnkStruct_ov000_020e2f04.hpp +++ b/include/Unknown/UnkStruct_ov000_020e2f04.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include "Physics/AABB.hpp" #include "global.h" diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index f008064d..d35b77c8 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -342,7 +342,7 @@ ARM bool Actor::vfunc_4c(unk32 *param1) { } ARM bool Actor::IsNearLink() { - Vec3p playerPos = gPlayerPos; + Vec3p playerPos = *gPlayerPos; q20 z = playerPos.z; q20 dx = abs(playerPos.x - mPos.x); @@ -375,7 +375,7 @@ ARM bool Actor::func_ov00_020c1da0(s32 param1, Vec3p *param2) { if (param2) { vec = *param2; } else { - Vec3p_Sub(&gPlayerPos, &mPrevPos, &vec); + Vec3p_Sub(gPlayerPos, &mPrevPos, &vec); } return gPlayer->vfunc_30(mUnk_124, &vec, param1); @@ -389,7 +389,7 @@ ARM bool Actor::func_ov00_020c1e2c(s32 param1, Vec3p *param2) { if (param2) { vec = *param2; } else { - Vec3p_Sub(&gPlayerPos, &mPrevPos, &vec); + Vec3p_Sub(gPlayerPos, &mPrevPos, &vec); } Cylinder hitbox; @@ -421,7 +421,7 @@ ARM bool Actor::func_ov00_020c1fc8(PlayerCollide flags) { bool result = false; if (mHitbox.size >= 0) { Vec3p vecFromPlayer; - Vec3p_Sub(&mPos, &gPlayerPos, &vecFromPlayer); + Vec3p_Sub(&mPos, gPlayerPos, &vecFromPlayer); if (this->CollidesWithPlayer(flags & PlayerCollide_Sword)) { Knockback knockback; knockback.mUnk_00 = gPlayer->EquipItem_vfunc_2c(); @@ -469,7 +469,7 @@ ARM bool Actor::func_ov00_020c1fc8(PlayerCollide flags) { ARM bool Actor::CollidesWithShield(Cylinder *param1) { Vec3p vecFromPlayer; - Vec3p_Sub(&mPos, &gPlayerPos, &vecFromPlayer); + Vec3p_Sub(&mPos, gPlayerPos, &vecFromPlayer); s32 currAngle = gPlayerAngle; s32 angle = Atan2(vecFromPlayer.x, vecFromPlayer.z); s32 angleDiff = (s16) angle - currAngle; @@ -641,13 +641,13 @@ ARM q20 Actor::XzDistanceTo(Vec3p *vec) { } ARM q20 Actor::DistanceToLink() { - return Vec3p_Distance(&mPos, &gPlayerPos); + return Vec3p_Distance(&mPos, gPlayerPos); } ARM q20 Actor::XzDistanceToLink() { Vec3p src; Vec3p_CopyXZ(&mPos, &src); - Vec3p dest = gPlayerPos; + Vec3p dest = *gPlayerPos; dest.y = 0; return Vec3p_Distance(&src, &dest); @@ -665,7 +665,7 @@ ARM s16 Actor::GetAngleTo(Vec3p *vec) { } ARM s32 Actor::GetAngleToLink() { - return this->GetAngleTo(&gPlayerPos); + return this->GetAngleTo(gPlayerPos); } extern "C" void func_0202d95c(Vec3p *param1, q20 param2); @@ -745,7 +745,7 @@ ARM bool Actor::func_ov00_020c2c70() { this->GetLinkPos(&pos); Vec3p_Sub(&pos, &mPos, &vel); } else { - Vec3p_Sub(&gPlayerPos, &mPos, &vel); + Vec3p_Sub(gPlayerPos, &mPos, &vel); } } Vec3p_Add(&mPos, &vel, &mPos); @@ -787,7 +787,7 @@ ARM bool Actor::func_ov00_020c2de4() { func_0202d95c(&vel, FLOAT_TO_Q20(1.0)); } } else { - Vec3p_Sub(&gPlayerPos, &mPos, &vel); + Vec3p_Sub(gPlayerPos, &mPos, &vel); } Vec3p_Add(&mPos, &vel, &mPos); mVel = vel; @@ -870,7 +870,7 @@ ARM bool Actor::func_ov00_020c3094() { Vec3p pos, prevPos; Vec3p_Copy(&mPos, &pos); Vec3p_Copy(&mPrevPos, &prevPos); - s32 unk1 = gMapManager->func_ov00_02083ef8(&pos, &prevPos, 0); + s32 unk1 = gMapManager->func_ov00_02083ef8(&pos, &prevPos); if (mPos.y <= unk1) { result = true; mPos.y = unk1; @@ -896,7 +896,7 @@ ARM bool Actor::func_ov00_020c313c(u32 param1) { ARM void Actor::func_ov00_020c3158() { if (mUnk_03c < 0) return; - gMapManager->func_ov00_02084c5c(mUnk_03c, 1); + gMapManager->SetMapDataFlag1(mUnk_03c, 1); } ARM void Actor::Kill() { @@ -937,7 +937,7 @@ ARM void Actor::GetLinkPos(Vec3p *result) { if (gPlayerLink != NULL && gPlayerLink->GetCurrentCharacter() != PlayerCharacter_Link) { return this->GetLinkDummyPos(result); } - *result = gPlayerPos; + result = gPlayerPos; } ARM void Actor::GetLinkDummyPos(Vec3p *result) { @@ -948,7 +948,7 @@ ARM void Actor::GetLinkDummyPos(Vec3p *result) { *result = dummy->mPos; return; } - *result = gPlayerPos; + result = gPlayerPos; } Actor_UnkStruct_09c::Actor_UnkStruct_09c() { diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp index 96fbad4c..06122703 100644 --- a/src/00_Core/Item/ItemManager.cpp +++ b/src/00_Core/Item/ItemManager.cpp @@ -254,7 +254,7 @@ ARM bool ItemManager::func_ov00_020ad790(unk32 param1) { } ItemFlag equipId = mForcedItem; - bool unk2 = !gMapManager->func_ov00_020849f8(equipId); + bool unk2 = !gMapManager->func_ov00_020849f8(); if (mEquippedItem != ItemFlag_None && (unk2 || (u32) mEquippedItem - 9 <= 1) && (gPlayerLink == 0 || gPlayerLink->func_ov000_020bbd80(param1)) && this->HasItem(mEquippedItem)) { diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index ba2b3c58..629886d2 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -70,8 +70,8 @@ void MapBase::AddTrigger(TriggerParams *param_2) {} void TriggerBase::vfunc_08() {} s32 MapBase::GetTriggerBoundingBox(unk32 param_2, AABB *param_3) {} bool TriggerBase::GetBoundingBox(AABB *bbox) {} -unk8 MapBase::GetTriggerBoundingBoxes(unk32 param_2, AABB *param_3, unk32 param_4) {} -unk32 MapBase::GetOverlappingTrigger(Vec3p *param_2) {} +s32 MapBase::GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4) {} +bool MapBase::GetOverlappingTrigger(Vec3p *param_2) {} bool TriggerBase::Overlaps(Vec3p *point) {} unk8 MapBase::FindTrigger(unk32 type) {} unk8 MapBase::GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity) {} diff --git a/tools/transform_dep.py b/tools/transform_dep.py old mode 100644 new mode 100755 From 4c799ec3f32e5bd06463f88fa036d8208d6bcb02 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Thu, 6 Feb 2025 14:00:27 +0100 Subject: [PATCH 30/62] Decomp progress 29% --- config/eur/arm9/overlays/ov000/symbols.txt | 8 +-- config/usa/arm9/overlays/ov000/symbols.txt | 6 +-- include/Map/Entrance.hpp | 2 +- include/Map/MapManager.hpp | 8 +-- src/00_Core/Map/MapManager.cpp | 57 ++++++++++++---------- 5 files changed, 43 insertions(+), 38 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 132510b3..9c5b3c4c 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -82,7 +82,7 @@ func_ov000_02078b0c kind:function(thumb,size=0x34) addr:0x2078b0c _ZN18UnkStruct_027e0d3819func_ov000_02078b40Ev kind:function(arm,size=0x24) addr:0x2078b40 _ZN18UnkStruct_027e0d3819func_ov000_02078b64Ev kind:function(arm,size=0x24) addr:0x2078b64 _ZN18UnkStruct_027e0d3819func_ov000_02078b88Ev kind:function(arm,size=0x3c) addr:0x2078b88 -func_ov000_02078bc4 kind:function(thumb,size=0x2c) addr:0x2078bc4 +_Z19func_ov000_02078bc4i kind:function(thumb,size=0x2c) addr:0x2078bc4 func_ov000_02078bf0 kind:function(thumb,size=0x11c) addr:0x2078bf0 func_ov000_02078d0c kind:function(thumb,size=0x24) addr:0x2078d0c func_ov000_02078d30 kind:function(thumb,size=0x24) addr:0x2078d30 @@ -577,7 +577,7 @@ _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x20835f _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x2083604 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x2083614 _ZN10MapManager14GetEntrancePosEP8Entrancei kind:function(arm,size=0x40) addr:0x2083624 -_ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083664 +_ZN10MapManager18func_ov00_02083664EP8Entrancei kind:function(arm,size=0x58) addr:0x2083664 _ZN10MapManager21GetTriggerBoundingBoxEiP4AABB kind:function(arm,size=0x10) addr:0x20836bc _ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x20836cc _ZN10MapManager18func_ov00_020836dcEjj kind:function(arm,size=0x94) addr:0x20836dc @@ -621,7 +621,7 @@ _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f8 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f98 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083fb0 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2084024 -_ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084088 +_ZN10MapManager16MapData_vfunc_54EPc kind:function(arm,size=0x18) addr:0x2084088 _ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x20840a0 _ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x20840c4 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x20840dc @@ -640,7 +640,7 @@ _ZN10MapManager18func_ov00_0208439cEP5Vec2sP5Vec3p kind:function(arm,size=0x50) _ZN10MapManager18func_ov00_020843ecEPi kind:function(arm,size=0x2ac) addr:0x20843ec _ZN10MapManager17GetMapData_Unk_38Ev kind:function(arm,size=0xc) addr:0x2084698 _ZN10MapManager18func_ov00_020846a4Ev kind:function(arm,size=0x5c) addr:0x20846a4 -_ZN10MapManager18func_ov00_02084700EPi kind:function(arm,size=0x40) addr:0x2084700 +_ZN10MapManager18func_ov00_02084700EPS_ kind:function(arm,size=0x40) addr:0x2084700 _ZN10MapManager18func_ov00_02084740Ev kind:function(arm,size=0xa0) addr:0x2084740 _ZN10MapManager18func_ov00_020847e0Ev kind:function(arm,size=0x10) addr:0x20847e0 _ZN10MapManager18func_ov00_020847f0Ev kind:function(arm,size=0x48) addr:0x20847f0 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 31ed1103..2589d6f6 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -577,7 +577,7 @@ _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x208359 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x20835a4 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x20835b4 _ZN10MapManager14GetEntrancePosEP8Entrancei kind:function(arm,size=0x40) addr:0x20835c4 -_ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083604 +_ZN10MapManager18func_ov00_02083664EP8Entrancei kind:function(arm,size=0x58) addr:0x2083604 _ZN10MapManager21GetTriggerBoundingBoxEiP4AABB kind:function(arm,size=0x10) addr:0x208365c _ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x208366c _ZN10MapManager18func_ov00_020836dcEjj kind:function(arm,size=0x94) addr:0x208367c @@ -621,7 +621,7 @@ _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f2 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f38 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083f50 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2083fc4 -_ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084028 +_ZN10MapManager16MapData_vfunc_54EPc kind:function(arm,size=0x18) addr:0x2084028 _ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x2084040 _ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x2084064 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x208407c @@ -640,7 +640,7 @@ _ZN10MapManager18func_ov00_0208439cEP5Vec2sP5Vec3p kind:function(arm,size=0x50) _ZN10MapManager18func_ov00_020843ecEPi kind:function(arm,size=0x2ac) addr:0x208438c _ZN10MapManager17GetMapData_Unk_38Ev kind:function(arm,size=0xc) addr:0x2084638 _ZN10MapManager18func_ov00_020846a4Ev kind:function(arm,size=0x5c) addr:0x2084644 -_ZN10MapManager18func_ov00_02084700EPi kind:function(arm,size=0x40) addr:0x20846a0 +_ZN10MapManager18func_ov00_02084700EPS_ kind:function(arm,size=0x40) addr:0x20846a0 _ZN10MapManager18func_ov00_02084740Ev kind:function(arm,size=0xa0) addr:0x20846e0 _ZN10MapManager18func_ov00_020847e0Ev kind:function(arm,size=0x10) addr:0x2084780 _ZN10MapManager18func_ov00_020847f0Ev kind:function(arm,size=0x48) addr:0x2084790 diff --git a/include/Map/Entrance.hpp b/include/Map/Entrance.hpp index 1e09d022..1ff69575 100644 --- a/include/Map/Entrance.hpp +++ b/include/Map/Entrance.hpp @@ -11,7 +11,7 @@ class Entrance : public SysObject { public: /* 00 */ Vec3p mPos; /* 0c */ unk16 mAngle; - /* 0e */ s8 mId; + /* 0e */ u8 mId; /* 0f */ unk8 mUnk_0f; /* 10 */ s32 mUnk_10; /* 14 */ diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 8916d41f..12f873d1 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -176,9 +176,9 @@ public: void func_ov00_02083f44(Vec3p *param_2); unk8 MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); unk8 MapData_vfunc_70(Vec3p *param_2); - static unk8 func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); + static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds); - unk32 MapData_vfunc_54(); + unk32 MapData_vfunc_54(unk8 *a); unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4); unk32 MapData_vfunc_78(bool *param_1); unk8 func_ov00_020840dc(); @@ -196,8 +196,8 @@ public: unk8 func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3); void func_ov00_020843ec(s32 *param_2); unk32 GetMapData_Unk_38(); - unk8 func_ov00_020846a4(); - static unk8 func_ov00_02084700(s32 *param_1); + s32 func_ov00_020846a4(); + static s32 func_ov00_02084700(MapManager *pMapManager); unk8 func_ov00_02084740(); unk32 func_ov00_020847e0(); unk8 func_ov00_020847f0(); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 22ec6050..708652b6 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -945,10 +945,15 @@ ARM bool MapManager::func_ov00_020836dc(u32 type, u32 actorId) { Actor *actor; Vec3p playerPos; - if (!(actorId != 0 && actorId != 1)) { // what an awkward statement (as opposed to actorId < 2) - playerPos.x = gPlayerPos->x; - playerPos.y = gPlayerPos->y; - playerPos.z = gPlayerPos->z; + if (!(actorId != 0 && actorId != 1)) { // what an awkward statement (as opposed to if (actorId < 2)) + // below doesn't match in objdiff + q20 x = gPlayerPos->x; + q20 y = gPlayerPos->y; + playerPos.x = x; + playerPos.y = y; + q20 z = gPlayerPos->z; + playerPos.z = z; + } else { actor = gActorManager->FindActorById(actorId); if (actor == NULL) { @@ -1210,12 +1215,14 @@ ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 p } ARM void MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) { - unk8 local_8; // Should this be a bool or a Vec2p or a Vec3p? + // Missing opcode in objdiff + unk8 local_8; // What type is this? unk8 local_7; // Unused. - unk16 uStack_6; + unk16 uStack_6; // Unused. uStack_6 = (unk16) ((u32) param_4 >> 0x10); - // _local_8 = CONCAT11(param_3, param_2); What is this? + local_8 = param_2; + local_7 = param_3; this->mMap->vfunc_60(&local_8); } @@ -1227,7 +1234,7 @@ ARM bool MapManager::func_ov00_02083e70() { int iVar1; int iVar2; - iVar1 = this->MapData_vfunc_54(); + iVar1 = this->MapData_vfunc_54(0); if (iVar1 < 0x2c) { if ((0x2a < iVar1) || (iVar1 == 0x1b)) { return true; @@ -1277,7 +1284,7 @@ unk8 MapManager::MapData_vfunc_70(Vec3p *param_2) { this->mMap->vfunc_70(param_2); } -unk8 MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) { +ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) { s32 iVar1; unk32 dVar2; @@ -1307,8 +1314,8 @@ void MapManager::GetTileWorldBounds(Vec2b *tile, AABB *tileBounds) { Vec3p_Add(&tileBounds->max, &local_20, &tileBounds->max); } -unk32 MapManager::MapData_vfunc_54() { - return this->mMap->vfunc_54(0); // what to use for this param? +unk32 MapManager::MapData_vfunc_54(unk8 *a) { + return this->mMap->vfunc_54(a); // what to use for this param? } unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { @@ -1318,7 +1325,7 @@ unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { uStack_6 = (unk16) ((u32) param_4 >> 0x10); // _local_8 = CONCAT11(param_3, param_2); - this->MapData_vfunc_54(/*&local_8*/); // Doesn't take any params. + this->MapData_vfunc_54(&local_8); // Doesn't take any params. // No calls to functions according to objdiff, why??? } @@ -1367,7 +1374,7 @@ unk8 MapManager::func_ov00_02084164(Vec2b *param_2) { iVar1 = this->mMap->vfunc_58(param_2, 7 /*, pcVar3, param_4*/); // Params? if (iVar1 == 0) { - uVar2 = this->MapData_vfunc_54(); + uVar2 = this->MapData_vfunc_54(0); switch (uVar2) { case 0: break; case 1: return 0; @@ -1599,32 +1606,30 @@ void MapManager::func_ov00_020843ec(s32 *param_2) { } } -unk32 MapManager::GetMapData_Unk_38() { +ARM unk32 MapManager::GetMapData_Unk_38() { return this->mMap->mUnk_038; } -unk8 MapManager::func_ov00_020846a4() { +ARM s32 MapManager::func_ov00_020846a4() { s32 iVar1 = *(s32 *) ((s32) this->mMap->mUnk_144 + 4); if (iVar1 == 0xff) { switch (this->mCourse->mType) { - case CourseType_Normal: return 0; - case CourseType_Dungeon: break; + case CourseType_Dungeon: + case CourseType_TempleOfTheOceanKing: + case CourseType_Battle: return 1; case CourseType_Sea: return 2; - case CourseType_TempleOfTheOceanKing: break; - case CourseType_Battle: break; + case CourseType_Normal: default: return 0; } - return 1; } return iVar1; } -unk8 MapManager::func_ov00_02084700(s32 *param_1) { // param_1 perhaps Vec2b ? - int iVar1; - - iVar1 = *(int *) (param_1[1] + 0x34); +ARM s32 MapManager::func_ov00_02084700(MapManager *pMapManager) { + s32 iVar1; + iVar1 = pMapManager->mMap->mUnk_034; if (iVar1 == -1) { - iVar1 = *(int *) (*param_1 + 0xc4); + iVar1 = pMapManager->mCourse->mUnk_0c4; } if ((iVar1 == 0x1b) && (gActorManager->mUnk_29 != false)) { iVar1 = 0x1c; @@ -2061,7 +2066,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { if (iVar2 != 0) { return 0; } - iVar2 = this->MapData_vfunc_54(); + iVar2 = this->MapData_vfunc_54(0); if (iVar2 < 0x47) { if (0x45 < iVar2) { return 0; From 6b9df2f4701f6790739bba8b07badcf002c7f72e Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Tue, 1 Apr 2025 21:22:24 +0200 Subject: [PATCH 31/62] Function fixes (still 29%) --- config/eur/arm9/overlays/ov000/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/symbols.txt | 2 +- include/Map/MapBase.hpp | 6 +- include/Map/MapManager.hpp | 10 +- src/00_Core/Map/MapBase.cpp | 4 +- src/00_Core/Map/MapManager.cpp | 137 +++++++++++---------- 6 files changed, 87 insertions(+), 74 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 9c5b3c4c..137aa6ad 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -612,7 +612,7 @@ _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083c5 _ZN10MapManager18func_ov00_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c7c _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083ce8 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 -_ZN10MapManager16MapData_vfunc_60EPc kind:function(arm,size=0x18) addr:0x2083e58 +_ZN10MapManager16MapData_vfunc_60EPh kind:function(arm,size=0x18) addr:0x2083e58 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e70 _ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x2083ee0 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083ef8 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 2589d6f6..f22f0ea2 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -612,7 +612,7 @@ _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083bf _ZN10MapManager18func_ov00_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c1c _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083c88 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083dd4 -_ZN10MapManager16MapData_vfunc_60EPc kind:function(arm,size=0x18) addr:0x2083df8 +_ZN10MapManager16MapData_vfunc_60EPh kind:function(arm,size=0x18) addr:0x2083df8 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e10 _ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x2083e80 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083e98 diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index fc74ed50..0675c1e4 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -111,7 +111,7 @@ public: /* 180 */ MapBase_Unk_180 mUnk_180[2]; /* 188 */ unk8 mUnk_188[0x14]; /* 19c */ unk32 mUnk_19c; - /* 1a0 */ unk8 mUnk_1a0[0xc]; + /* 1a0 */ Vec3p mUnk_1a0; /* 1ac */ s16 mUnk_1ac; /* 1ae */ unk8 mUnk_1ae[2]; /* 1b0 */ @@ -139,14 +139,14 @@ public: /* 54 */ virtual unk32 vfunc_54(unk8 *param_1); /* 58 */ virtual unk32 vfunc_58(Vec2b *param_1, int param_2); /* 5c */ virtual unk32 vfunc_5c(); - /* 60 */ virtual unk32 vfunc_60(unk8 *param_1); + /* 60 */ virtual unk32 vfunc_60(u8 *param_1); /* 64 */ virtual unk32 vfunc_64(); /* 68 */ virtual unk8 vfunc_68(Vec3p *param_1, bool param_2); /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); /* 74 */ virtual s32 vfunc_74(Vec3p *param_2); /* 78 */ virtual unk32 vfunc_78(bool *param_1); - /* 7c */ virtual void vfunc_7c(); + /* 7c */ virtual s32 vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]); /* 80 */ virtual unk32 vfunc_80(); /* 84 */ virtual void vfunc_84(unk32 param_2); /* 88 */ virtual unk32 vfunc_88(); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 12f873d1..d82694db 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -62,7 +62,7 @@ public: bool func_ov00_02082494(s32 param_2); bool func_ov00_020824cc(s32 param_2); s32 func_ov00_02082504(); - unk8 *func_ov00_02082538(); + Vec3p *func_ov00_02082538(); void func_ov00_02082594(); void func_ov00_020825ac(); s32 GetCourseFilePath(char *courseName, char *buf); @@ -78,7 +78,7 @@ public: void DestroyMap(); void MapData_vfunc_44(); void func_ov00_02082808(s32 param_2); - void MapData_vfunc_7c(); + s32 MapData_vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]); void MapData_vfunc_84(unk32 param_2); bool func_ov00_020828f8(s32 *param_2); u8 GetNumMaps(); @@ -168,14 +168,14 @@ public: s32 func_ov00_02083c50(unk32 z); void func_ov00_02083c7c(Vec3p *param_2, u32 param_3); static void func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5); - void func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); - unk32 MapData_vfunc_60(unk8 *param_1); + s32 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); + unk32 MapData_vfunc_60(u8 *param_1); bool func_ov00_02083e70(); unk32 MapData_vfunc_68(Vec3p *param_1, bool param_2); s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3); void func_ov00_02083f44(Vec3p *param_2); unk8 MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); - unk8 MapData_vfunc_70(Vec3p *param_2); + unk32 MapData_vfunc_70(Vec3p *param_2); static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds); unk32 MapData_vfunc_54(unk8 *a); diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 629886d2..f4182b96 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -21,7 +21,7 @@ unk32 MapBase::vfunc_50() {} unk32 MapBase::vfunc_54(unk8 *param_1) {} unk32 MapBase::vfunc_58(Vec2b *param_1, int param_2) {} unk32 MapBase::vfunc_5c() {} -unk32 MapBase::vfunc_60(unk8 *param_1) {} +unk32 MapBase::vfunc_60(u8 *param_1) {} unk32 MapBase::vfunc_64() {} unk8 MapBase::vfunc_68(Vec3p *param_1, bool param_2) {} unk8 MapBase::func_ov00_0207e940(unk8 *param_1) {} @@ -41,7 +41,7 @@ unk32 MapBase::vfunc_a4(unk8 *param_1) {} void MapBase::vfunc_a8() {} void MapBase::vfunc_ac() {} unk32 MapBase::vfunc_78(bool *param_1) {} -void MapBase::vfunc_7c() {} +s32 MapBase::vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]) {} unk32 MapBase::vfunc_80() {} void MapBase::vfunc_84(unk32 param_2) {} bool MapBase::func_ov00_0207f38c(s32 *param_2) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 708652b6..15de64f6 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -47,8 +47,15 @@ extern bool func_ov015_02129c24(MapBase *param_1, Vec3p *param_2, Vec3p *param_3 extern bool func_ov015_02129c34(MapBase *param_1, s32 param_2); extern bool func_ov015_02129c44(MapBase *param_1, s32 param_2); +struct UnkStruct_027e0d38 { + /* 00 */ unk8 mUnk_00[0xc]; + /* 0c */ unk32 mUnk_0c; + /* 10 */ unk8 mUnk_10[0x18]; + /* 28 */ unk32 mUnk_28; +}; + extern s32 *data_027e0c68; -extern s32 *data_027e0d38; +extern UnkStruct_027e0d38 *data_027e0d38; extern s32 *data_027e0d3c; extern s32 *data_027e0f64; extern s32 *data_027e0f68; @@ -111,8 +118,8 @@ unk8 MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { uVar2 = 4; } *(unk8 *) ((int) param_3 + 5) = uVar2; - uVar3 = func_ov000_020a5e9c(data_027e0d38 + 0x28) + 0x1c; - puVar1 = data_027e0d38; + uVar3 = func_ov000_020a5e9c(&data_027e0d38->mUnk_28) + 0x1c; + puVar1 = (s32 *) data_027e0d38; param_3[2] = uVar3; *(unk8 *) (param_3 + 4) = *(unk8 *) (*(s32 *) (*(s32 *) puVar1 + 0x28) + 0x2e); *(unk16 *) (param_3 + 5) = *(unk16 *) (*(s32 *) (*(s32 *) puVar1 + 0x28) + 0x36); @@ -122,7 +129,7 @@ unk8 MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { param_3[8] = *(unk32 *) (iVar4 + 0x40); uVar3 = func_ov000_020a5e9c(puVar1 + 0x28) + 0x44; param_3[3] = uVar3; - puVar1 = data_027e0d38; + puVar1 = (s32 *) data_027e0d38; *(unk8 *) ((int) param_3 + 0x11) = *(unk8 *) (*(s32 *) (*(s32 *) data_027e0d38 + 0x28) + 0x56); iVar4 = *(s32 *) (*(s32 *) puVar1 + 0x28); param_3[9] = *(unk32 *) (iVar4 + 0x5c); @@ -141,7 +148,7 @@ unk8 MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { local_2b = *(unk8 *) (iVar4 + 0x85); uVar3 = func_ov000_020a5e9c(&local_40); param_3[0x70] = uVar3; - puVar1 = data_027e0f70; + puVar1 = (s32 *) data_027e0f70; *(unk8 *) ((int) param_3 + 0x1be) = local_2e; *(unk8 *) ((int) param_3 + 0x1bf) = local_2d; func_ov000_02096324(puVar1, *param_3); // unsure if (s32 *param_1, s32 param_2) or (s32 param_1, s32 *param_2) @@ -243,14 +250,19 @@ ARM s32 MapManager::func_ov00_02082504() { return 0; } -ARM unk8 *MapManager::func_ov00_02082538() { - unk8 var0[12]; +ARM Vec3p *MapManager::func_ov00_02082538() { s32 var1 = this->mMap->vfunc_4c(); + Vec3p var0; if (var1 != 2) { - return var0; + q20 x = gPlayerPos->x; + q20 y = gPlayerPos->y; + var0.x = x; + var0.y = y; + q20 z = gPlayerPos->z; + var0.z = z; + return &var0; } - return this->mMap->mUnk_1a0; - // Reference to gPlayerPos in Ghidra, but not used. (See overlay_d_0::0x2082538) + return &this->mMap->mUnk_1a0; } ARM void MapManager::func_ov00_02082594() { @@ -379,8 +391,8 @@ ARM void MapManager::func_ov00_02082808(s32 param_2) { // func_ov00_020d72b8(DWORD_overlay_d_0_bss__020eec68); } -ARM void MapManager::MapData_vfunc_7c() { - this->mMap->vfunc_7c(); +ARM s32 MapManager::MapData_vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]) { + return this->mMap->vfunc_7c(param_1, param_2, param_3, param_4); } ARM void MapManager::MapData_vfunc_84(unk32 param_2) { @@ -915,14 +927,14 @@ ARM bool MapManager::GetEntrancePos(Entrance *param_1, unk32 entranceId) { param_1->mPos.y = y; param_1->mPos.z = z; param_1->mAngle = entrance->mAngle; - param_1->mId = entrance->mId; // mId needs to be u8 according to objdiff + param_1->mId = entrance->mId; param_1->mUnk_10 = entrance->mUnk_10; return true; } ARM bool MapManager::func_ov00_02083664(Entrance *param_2, unk32 entranceId) { Entrance entrance; - entrance.mId = (u8) 0xff; // mId needs to be u8 + entrance.mId = (u8) 0xff; entrance.mUnk_10 = 0; if (this->GetEntrancePos(&entrance, entranceId)) { param_2->mPos.x = entrance.mPos.x; @@ -945,23 +957,23 @@ ARM bool MapManager::func_ov00_020836dc(u32 type, u32 actorId) { Actor *actor; Vec3p playerPos; - if (!(actorId != 0 && actorId != 1)) { // what an awkward statement (as opposed to if (actorId < 2)) - // below doesn't match in objdiff - q20 x = gPlayerPos->x; - q20 y = gPlayerPos->y; - playerPos.x = x; - playerPos.y = y; - q20 z = gPlayerPos->z; - playerPos.z = z; - - } else { - actor = gActorManager->FindActorById(actorId); - if (actor == NULL) { - return false; - } - playerPos.x = actor->mPos.x; - playerPos.y = actor->mPos.y; - playerPos.z = actor->mPos.z; + switch (actorId) { + case 0: + case 1: + q20 y = gPlayerPos->y; + playerPos.x = gPlayerPos->x; + playerPos.y = y; + playerPos.z = gPlayerPos->z; + break; + default: + actor = gActorManager->FindActorById(actorId); + if (actor == NULL) { + return false; + } + playerPos.x = actor->mPos.x; + playerPos.y = actor->mPos.y; + playerPos.z = actor->mPos.z; + break; } return this->IsTriggerTypeOverlapped(type, &playerPos); } @@ -1169,9 +1181,12 @@ ARM s32 MapManager::func_ov00_02083c50(unk32 z) { ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, u32 param_3) { Vec3p local_28; - param_2->x = this->func_ov00_02083c24(param_3 & 0xff); - param_2->z = this->func_ov00_02083c50(param_3 >> 8 & 0xff); - param_2->y = this->MapData_vfunc_68(&local_28, true); // please tell me this is correct + q20 x = this->func_ov00_02083c24(param_3 & 0xff); + // param_2->x = x; + q20 z = this->func_ov00_02083c50(param_3 >> 8 & 0xff); + // param_2->z = z; + q20 y = this->MapData_vfunc_68(&local_28, true); + // param_2->y = y; } ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5) { @@ -1214,19 +1229,18 @@ ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 p param_2[1] = iVar2; } -ARM void MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) { - // Missing opcode in objdiff - unk8 local_8; // What type is this? - unk8 local_7; // Unused. - unk16 uStack_6; // Unused. +ARM s32 MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) { + u8 local_8; + u8 local_7; + // unk16 uStack_6; // Unused. - uStack_6 = (unk16) ((u32) param_4 >> 0x10); - local_8 = param_2; - local_7 = param_3; - this->mMap->vfunc_60(&local_8); + // uStack_6 = (unk16) ((u32) param_4 >> 0x10); + local_8 = param_2; // Likely a struct + *(&local_8 + 1) = param_3; + return this->mMap->vfunc_60(&local_8); } -ARM unk32 MapManager::MapData_vfunc_60(unk8 *param_1) { // should the param be bool*? +ARM unk32 MapManager::MapData_vfunc_60(u8 *param_1) { // should the param be bool*? return this->mMap->vfunc_60(param_1); } @@ -1280,13 +1294,13 @@ unk8 MapManager::MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) { this->mMap->vfunc_6c(param_2, param_3, param_4); } -unk8 MapManager::MapData_vfunc_70(Vec3p *param_2) { - this->mMap->vfunc_70(param_2); +ARM unk32 MapManager::MapData_vfunc_70(Vec3p *param_2) { + return this->mMap->vfunc_70(param_2); } ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) { s32 iVar1; - unk32 dVar2; + s32 dVar2; iVar1 = param_2->mMap->vfunc_74(param_3); if (iVar1 != 0) { @@ -1294,7 +1308,7 @@ ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p return; } dVar2 = param_2->MapData_vfunc_70(param_3); - if (dVar2 != 0xffff) { + if (iVar1 != 0xffff) { func_ov000_02093a1c(param_1, data_027e0f6c); return; } @@ -1801,14 +1815,14 @@ bool MapManager::func_ov00_020849dc() { return this->mCourse->mUnk_008 == -3; } -bool MapManager::func_ov00_020849f8() { - s32 iVar1; // = FUN_overlay_d_0__020a5e9c(*(s32 *) PTR_PTR_overlay_d_0__02084a4c + 0xc); - if (iVar1 == 5) { - return true; - } - iVar1 = this->GetMapData_Unk_06(); - if ((iVar1 != 0) && (iVar1 = this->func_ov00_020849c0(), iVar1 == 0)) { - return true; +ARM bool MapManager::func_ov00_020849f8() { + switch (func_ov000_020a5e9c(&data_027e0d38->mUnk_0c)) { + case 5: return true; + default: + if (this->GetMapData_Unk_06() != 0 && !this->func_ov00_020849c0()) { + return true; + } + break; } return false; } @@ -1829,7 +1843,7 @@ void MapManager::SpawnNPC(Vec3p *param_2, unk32 param_3, unk32 param_4) { // (ActorRef *) 0x0); } -bool MapManager::func_ov00_02084ac4(u32 actorId) { +ARM bool MapManager::func_ov00_02084ac4(u32 actorId) { Actor *iVar1; bool bVar1; @@ -1837,11 +1851,10 @@ bool MapManager::func_ov00_02084ac4(u32 actorId) { if (iVar1 == NULL) { return false; } - bVar1 = iVar1->mType == ActorTypeId_EVIC; - if (bVar1) { - iVar1->mAlive = false; - } - return bVar1; + + if (iVar1->mType != ActorTypeId_EVIC) return false; + iVar1->mAlive = false; + return true; } void MapManager::SetNumKeys(unk32 keys) { From 7608f9c8086f3978dde9bf285f4fff592f67f085 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Tue, 1 Apr 2025 21:25:04 +0200 Subject: [PATCH 32/62] Resolve conflict --- include/Map/MapBase.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 0675c1e4..9491e968 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -112,8 +112,8 @@ public: /* 188 */ unk8 mUnk_188[0x14]; /* 19c */ unk32 mUnk_19c; /* 1a0 */ Vec3p mUnk_1a0; - /* 1ac */ s16 mUnk_1ac; - /* 1ae */ unk8 mUnk_1ae[2]; + /* 1a0 */ unk8 mUnk_1a0[0xc]; + /* 1ac */ unk32 mUnk_1ac; /* 1b0 */ /* 00 */ virtual ~MapBase(); From 2b45d3fab70aa81c0c2564aa976a70692c3d455d Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Tue, 1 Apr 2025 21:31:48 +0200 Subject: [PATCH 33/62] Fix duplicate field --- include/Map/MapBase.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 9491e968..a99658ac 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -112,7 +112,6 @@ public: /* 188 */ unk8 mUnk_188[0x14]; /* 19c */ unk32 mUnk_19c; /* 1a0 */ Vec3p mUnk_1a0; - /* 1a0 */ unk8 mUnk_1a0[0xc]; /* 1ac */ unk32 mUnk_1ac; /* 1b0 */ From 9e69f5de93e8805bccf69307eb08c8fab8519e8c Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 6 Apr 2025 18:22:42 +0200 Subject: [PATCH 34/62] Fix type mismatch in MapOverworld --- config/eur/arm9/overlays/ov000/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/symbols.txt | 2 +- include/Map/MapOverworld.hpp | 4 ++-- src/18_Overworld/Map/MapOverworld.cpp | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 4a84f67e..528f1d22 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -521,7 +521,7 @@ _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_02082808Ei kind:function(arm,size=0xb8) addr:0x2082808 -_ZN10MapManager16MapData_vfunc_7cEv kind:function(arm,size=0x20) addr:0x20828c0 +_ZN10MapManager16MapData_vfunc_7cEiPiiPs kind:function(arm,size=0x20) addr:0x20828c0 _ZN10MapManager16MapData_vfunc_84Ei kind:function(arm,size=0x18) addr:0x20828e0 _ZN10MapManager18func_ov00_020828f8EPi kind:function(arm,size=0x10) addr:0x20828f8 _ZN10MapManager10GetNumMapsEv kind:function(arm,size=0xc) addr:0x2082908 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 46c2987c..d7e06342 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -521,7 +521,7 @@ _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_02082808Ei kind:function(arm,size=0xb8) addr:0x20827a8 -_ZN10MapManager16MapData_vfunc_7cEv kind:function(arm,size=0x20) addr:0x2082860 +_ZN10MapManager16MapData_vfunc_7cEiPiiPs kind:function(arm,size=0x20) addr:0x2082860 _ZN10MapManager16MapData_vfunc_84Ei kind:function(arm,size=0x18) addr:0x2082880 _ZN10MapManager18func_ov00_020828f8EPi kind:function(arm,size=0x10) addr:0x2082898 _ZN10MapManager10GetNumMapsEv kind:function(arm,size=0xc) addr:0x20828a8 diff --git a/include/Map/MapOverworld.hpp b/include/Map/MapOverworld.hpp index 482b3ad1..4ce6d91a 100644 --- a/include/Map/MapOverworld.hpp +++ b/include/Map/MapOverworld.hpp @@ -46,7 +46,7 @@ public: /* 1c */ virtual void vfunc_1c(bool param_2) override; /* 20 */ virtual void vfunc_20(s32 param_2) override; /* 2c */ virtual void vfunc_2c() override; - /* 4c */ virtual void vfunc_4c() override; + /* 4c */ virtual s32 vfunc_4c() override; /* 54 */ virtual unk32 vfunc_54() override; /* 58 */ virtual unk32 vfunc_58() override; /* 5c */ virtual unk32 vfunc_5c() override; @@ -58,7 +58,7 @@ public: /* 94 */ virtual void vfunc_94() override; /* 98 */ virtual void vfunc_98() override; /* a4 */ virtual unk32 vfunc_a4() override; - /* b0 */ virtual unk8 vfunc_b0(unk32 param_2, unk32 param_3) override; + /* b0 */ virtual void vfunc_b0(unk32 param_2, unk32 param_3) override; /* bc */ virtual void vfunc_bc() override; /* c0 */ virtual void vfunc_c0() override; /* c4 */ diff --git a/src/18_Overworld/Map/MapOverworld.cpp b/src/18_Overworld/Map/MapOverworld.cpp index 5737ea54..e2c73db7 100644 --- a/src/18_Overworld/Map/MapOverworld.cpp +++ b/src/18_Overworld/Map/MapOverworld.cpp @@ -25,7 +25,7 @@ void MapOverworld::vfunc_c0() {} unk32 MapOverworld::vfunc_78() {} unk32 MapOverworld::vfunc_7c() {} unk32 MapOverworld::vfunc_80() {} -unk8 MapOverworld::vfunc_b0(unk32 param_2, unk32 param_3) {} +void MapOverworld::vfunc_b0(unk32 param_2, unk32 param_3) {} void MapOverworld::func_ov018_0215c650() {} void MapOverworld::func_ov018_0215c6ac() {} void MapOverworld::func_ov018_0215c6d0() {} @@ -35,4 +35,4 @@ void MapOverworld::func_ov018_0215c9ac() {} void func_ov018_0215ca24(s32 param1) {} void func_ov018_0215ca3c(s32 param1, s32 param2, unk32 param3, unk32 param4) {} void func_ov018_0215ca8c(s32 param1) {} -void MapOverworld::vfunc_4c() {} +s32 MapOverworld::vfunc_4c() {} From d5a2e0f57e469d780eb0e2ab1183aa40f93cf23c Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 6 Apr 2025 22:32:49 +0200 Subject: [PATCH 35/62] Decomp progress 30% Change gPlayerPos from Vec3p* to Vec3p (thx lago) --- include/Map/MapBase.hpp | 2 +- include/Player/PlayerBase.hpp | 2 +- src/00_Core/Actor/Actor.cpp | 24 ++++++++--------- src/00_Core/Map/MapManager.cpp | 48 ++++++++++++++++------------------ 4 files changed, 36 insertions(+), 40 deletions(-) diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index a99658ac..ecf92c08 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -112,7 +112,7 @@ public: /* 188 */ unk8 mUnk_188[0x14]; /* 19c */ unk32 mUnk_19c; /* 1a0 */ Vec3p mUnk_1a0; - /* 1ac */ unk32 mUnk_1ac; + /* 1ac */ s16 mUnk_1ac; /* 1b0 */ /* 00 */ virtual ~MapBase(); diff --git a/include/Player/PlayerBase.hpp b/include/Player/PlayerBase.hpp index f7caf604..ba4b3deb 100644 --- a/include/Player/PlayerBase.hpp +++ b/include/Player/PlayerBase.hpp @@ -62,6 +62,6 @@ public: }; extern PlayerBase *gPlayer; -extern Vec3p *gPlayerPos; +extern Vec3p gPlayerPos; extern Vec3p gPlayerVel; extern s16 gPlayerAngle; diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index b865c39e..2cbed755 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -342,7 +342,7 @@ ARM bool Actor::vfunc_4c(unk32 *param1) { } ARM bool Actor::IsNearLink() { - Vec3p playerPos = *gPlayerPos; + Vec3p playerPos = gPlayerPos; q20 z = playerPos.z; q20 dx = abs(playerPos.x - mPos.x); @@ -375,7 +375,7 @@ ARM bool Actor::func_ov00_020c1da0(s32 param1, Vec3p *param2) { if (param2) { vec = *param2; } else { - Vec3p_Sub(gPlayerPos, &mPrevPos, &vec); + Vec3p_Sub(&gPlayerPos, &mPrevPos, &vec); } return gPlayer->vfunc_30(mUnk_124, &vec, param1); @@ -389,7 +389,7 @@ ARM bool Actor::func_ov00_020c1e2c(s32 param1, Vec3p *param2) { if (param2) { vec = *param2; } else { - Vec3p_Sub(gPlayerPos, &mPrevPos, &vec); + Vec3p_Sub(&gPlayerPos, &mPrevPos, &vec); } Cylinder hitbox; @@ -421,7 +421,7 @@ ARM bool Actor::func_ov00_020c1fc8(PlayerCollide flags) { bool result = false; if (mHitbox.size >= 0) { Vec3p vecFromPlayer; - Vec3p_Sub(&mPos, gPlayerPos, &vecFromPlayer); + Vec3p_Sub(&mPos, &gPlayerPos, &vecFromPlayer); if (this->CollidesWithPlayer(flags & PlayerCollide_Sword)) { Knockback knockback; knockback.mUnk_00 = gPlayer->EquipItem_vfunc_2c(); @@ -469,7 +469,7 @@ ARM bool Actor::func_ov00_020c1fc8(PlayerCollide flags) { ARM bool Actor::CollidesWithShield(Cylinder *param1) { Vec3p vecFromPlayer; - Vec3p_Sub(&mPos, gPlayerPos, &vecFromPlayer); + Vec3p_Sub(&mPos, &gPlayerPos, &vecFromPlayer); s32 currAngle = gPlayerAngle; s32 angle = Atan2(vecFromPlayer.x, vecFromPlayer.z); s32 angleDiff = (s16) angle - currAngle; @@ -641,13 +641,13 @@ ARM q20 Actor::XzDistanceTo(Vec3p *vec) { } ARM q20 Actor::DistanceToLink() { - return Vec3p_Distance(&mPos, gPlayerPos); + return Vec3p_Distance(&mPos, &gPlayerPos); } ARM q20 Actor::XzDistanceToLink() { Vec3p src; Vec3p_CopyXZ(&mPos, &src); - Vec3p dest = *gPlayerPos; + Vec3p dest = gPlayerPos; dest.y = 0; return Vec3p_Distance(&src, &dest); @@ -665,7 +665,7 @@ ARM s16 Actor::GetAngleTo(Vec3p *vec) { } ARM s32 Actor::GetAngleToLink() { - return this->GetAngleTo(gPlayerPos); + return this->GetAngleTo(&gPlayerPos); } extern "C" void func_0202d95c(Vec3p *param1, q20 param2); @@ -745,7 +745,7 @@ ARM bool Actor::func_ov00_020c2c70() { this->GetLinkPos(&pos); Vec3p_Sub(&pos, &mPos, &vel); } else { - Vec3p_Sub(gPlayerPos, &mPos, &vel); + Vec3p_Sub(&gPlayerPos, &mPos, &vel); } } Vec3p_Add(&mPos, &vel, &mPos); @@ -787,7 +787,7 @@ ARM bool Actor::func_ov00_020c2de4() { func_0202d95c(&vel, FLOAT_TO_Q20(1.0)); } } else { - Vec3p_Sub(gPlayerPos, &mPos, &vel); + Vec3p_Sub(&gPlayerPos, &mPos, &vel); } Vec3p_Add(&mPos, &vel, &mPos); mVel = vel; @@ -937,7 +937,7 @@ ARM void Actor::GetLinkPos(Vec3p *result) { if (gPlayerLink != NULL && gPlayerLink->GetCurrentCharacter() != PlayerCharacter_Link) { return this->GetLinkDummyPos(result); } - result = gPlayerPos; + result = &gPlayerPos; } ARM void Actor::GetLinkDummyPos(Vec3p *result) { @@ -948,7 +948,7 @@ ARM void Actor::GetLinkDummyPos(Vec3p *result) { *result = dummy->mPos; return; } - result = gPlayerPos; + result = &gPlayerPos; } Actor_UnkStruct_09c::Actor_UnkStruct_09c() { diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 15de64f6..e7e826f6 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -244,25 +244,21 @@ ARM bool MapManager::func_ov00_020824cc(s32 param_2) { ARM s32 MapManager::func_ov00_02082504() { s32 var = this->mMap->vfunc_4c(); - if (var == 2) { - return (s32) this->mMap->mUnk_1ac; - } + if (var == 2) return this->mMap->mUnk_1ac; return 0; } ARM Vec3p *MapManager::func_ov00_02082538() { s32 var1 = this->mMap->vfunc_4c(); Vec3p var0; - if (var1 != 2) { - q20 x = gPlayerPos->x; - q20 y = gPlayerPos->y; - var0.x = x; - var0.y = y; - q20 z = gPlayerPos->z; - var0.z = z; - return &var0; - } - return &this->mMap->mUnk_1a0; + if (var1 == 2) return &this->mMap->mUnk_1a0; + q20 x = gPlayerPos.x; + q20 y = gPlayerPos.y; + var0.x = x; + var0.y = y; + q20 z = gPlayerPos.z; + var0.z = z; + return &var0; } ARM void MapManager::func_ov00_02082594() { @@ -674,9 +670,9 @@ ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { *param_3 = this->mCourse->mUnk_0b8; return; } - local_1c.y = gPlayerPos->y; - local_1c.x = gPlayerPos->x; - local_1c.z = gPlayerPos->z; + local_1c.y = gPlayerPos.y; + local_1c.x = gPlayerPos.x; + local_1c.z = gPlayerPos.z; // this->func_ov00_02083a1c(auStack_2c, this, &local_1c); this->func_ov00_02082d84(auStack_2c, param_2, param_3); } @@ -710,9 +706,9 @@ ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) { *param_3 = this->mCourse->mUnk_0c0; return; } - local_20.x = *(s32 *) gPlayerPos->x; - local_20.y = *(s32 *) gPlayerPos->y; - local_20.z = *(s32 *) gPlayerPos->z; + local_20.x = *(s32 *) gPlayerPos.x; + local_20.y = *(s32 *) gPlayerPos.y; + local_20.z = *(s32 *) gPlayerPos.z; uVar1 = this->func_ov00_02082d08(); this->func_ov00_02083298(uVar1, &local_20, param_2, param_3); } @@ -960,10 +956,10 @@ ARM bool MapManager::func_ov00_020836dc(u32 type, u32 actorId) { switch (actorId) { case 0: case 1: - q20 y = gPlayerPos->y; - playerPos.x = gPlayerPos->x; + q20 y = gPlayerPos.y; + playerPos.x = gPlayerPos.x; playerPos.y = y; - playerPos.z = gPlayerPos->z; + playerPos.z = gPlayerPos.z; break; default: actor = gActorManager->FindActorById(actorId); @@ -1669,9 +1665,9 @@ unk8 MapManager::func_ov00_02084740() { // iVar2 = this->func_ov00_02084700(?); // what param? // iVar3 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__020847d4); if (iVar3 != 2) { - local_1c8 = *(unk32 *) gPlayerPos->x; - local_1c4 = *(unk32 *) gPlayerPos->y; - local_1c0 = *(unk32 *) gPlayerPos->z; + local_1c8 = *(unk32 *) gPlayerPos.x; + local_1c4 = *(unk32 *) gPlayerPos.y; + local_1c0 = *(unk32 *) gPlayerPos.z; // bVar1 = FUN_overlay_d_0__02083780(&local_1c8); // MapManager method? if (bVar1) { iVar2 = this->func_ov00_020847f0(); @@ -2505,7 +2501,7 @@ unk8 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 par iVar3 = param_1->GetMapHeight(); local_38 = 0xffffffff; param_1->func_ov00_02083a1c(&local_28, param_1, param_2); - iVar6 = gPlayerPos->y; // *(int *) (PTR_gPlayerPos_overlay_d_0__02085a30 + 4); + iVar6 = gPlayerPos.y; // *(int *) (PTR_gPlayerPos_overlay_d_0__02085a30 + 4); for (iVar7 = local_28.x - 1; iVar7 <= (int) (local_28.x + 1); iVar7 = iVar7 + 1) { if ((-1 < iVar7) && (iVar1 = local_28.y - 1, iVar7 < iVar2)) { for (; iVar1 <= (int) (local_28.y + 1); iVar1 = iVar1 + 1) { From 96e2380df560dd3d9898f41f6caaa08e5eeaa56e Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Mon, 7 Apr 2025 21:06:29 +0200 Subject: [PATCH 36/62] Decomp progress 33% --- config/eur/arm9/overlays/ov000/symbols.txt | 16 +- config/usa/arm9/overlays/ov000/symbols.txt | 16 +- include/Map/MapBase.hpp | 2 +- include/Map/MapManager.hpp | 2 +- src/00_Core/Map/MapBase.cpp | 2 +- src/00_Core/Map/MapManager.cpp | 226 ++++++++------------- 6 files changed, 103 insertions(+), 161 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 528f1d22..04f233bc 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -336,12 +336,12 @@ _ZN7MapBase18func_ov00_0207e28cEi kind:function(arm,size=0x1b8) addr:0x207e28c _ZN7MapBase8vfunc_b4Ev kind:function(arm,size=0x28) addr:0x207e444 _ZN7MapBase8vfunc_48Ev kind:function(arm,size=0x1c) addr:0x207e46c _ZN7MapBase8vfunc_50Ev kind:function(arm,size=0x8) addr:0x207e488 -_ZN7MapBase8vfunc_54Ev kind:function(arm,size=0x8) addr:0x207e490 -_ZN7MapBase8vfunc_58Ev kind:function(arm,size=0x8) addr:0x207e498 +_ZN7MapBase8vfunc_54EP5Vec2b kind:function(arm,size=0x8) addr:0x207e490 +_ZN7MapBase8vfunc_58EP5Vec2bi kind:function(arm,size=0x8) addr:0x207e498 _ZN7MapBase8vfunc_5cEv kind:function(arm,size=0x8) addr:0x207e4a0 -_ZN7MapBase8vfunc_60Ev kind:function(arm,size=0x8) addr:0x207e4a8 +_ZN7MapBase8vfunc_60EPh kind:function(arm,size=0x8) addr:0x207e4a8 _ZN7MapBase8vfunc_64Ev kind:function(arm,size=0x8) addr:0x207e4b0 -_ZN7MapBase8vfunc_68Ev kind:function(arm,size=0x488) addr:0x207e4b8 +_ZN7MapBase8vfunc_68EP5Vec3pb kind:function(arm,size=0x488) addr:0x207e4b8 _ZN7MapBase18func_ov00_0207e940EPc kind:function(arm,size=0x28) addr:0x207e940 _ZN7MapBase18func_ov00_0207e968Ev kind:function(arm,size=0x4) addr:0x207e968 _ZN7MapBase18func_ov00_0207e96cEv kind:function(arm,size=0x4) addr:0x207e96c @@ -355,11 +355,11 @@ _ZN7MapBase8vfunc_88Ev kind:function(arm,size=0x8) addr:0x207f324 _ZN7MapBase8vfunc_8cEv kind:function(arm,size=0x8) addr:0x207f32c _ZN7MapBase8vfunc_9cEv kind:function(arm,size=0x4) addr:0x207f334 _ZN7MapBase8vfunc_a0Ev kind:function(arm,size=0x4) addr:0x207f338 -_ZN7MapBase8vfunc_a4Ev kind:function(arm,size=0x8) addr:0x207f33c +_ZN7MapBase8vfunc_a4EPc kind:function(arm,size=0x8) addr:0x207f33c _ZN7MapBase8vfunc_a8Ev kind:function(arm,size=0x4) addr:0x207f344 _ZN7MapBase8vfunc_acEv kind:function(arm,size=0x4) addr:0x207f348 -_ZN7MapBase8vfunc_78Ev kind:function(arm,size=0x8) addr:0x207f34c -_ZN7MapBase8vfunc_7cEv kind:function(arm,size=0x8) addr:0x207f354 +_ZN7MapBase8vfunc_78EPb kind:function(arm,size=0x8) addr:0x207f34c +_ZN7MapBase8vfunc_7cEiPiiPs 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_0207f38cEPi kind:function(arm,size=0x38) addr:0x207f38c @@ -621,7 +621,7 @@ _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f8 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f98 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083fb0 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2084024 -_ZN10MapManager16MapData_vfunc_54EPc kind:function(arm,size=0x18) addr:0x2084088 +_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084088 _ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x20840a0 _ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x20840c4 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x20840dc diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index d7e06342..4b67f92d 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -336,12 +336,12 @@ _ZN7MapBase18func_ov00_0207e28cEi kind:function(arm,size=0x1b8) addr:0x207e22c _ZN7MapBase8vfunc_b4Ev kind:function(arm,size=0x28) addr:0x207e3e4 _ZN7MapBase8vfunc_48Ev kind:function(arm,size=0x1c) addr:0x207e40c _ZN7MapBase8vfunc_50Ev kind:function(arm,size=0x8) addr:0x207e428 -_ZN7MapBase8vfunc_54Ev kind:function(arm,size=0x8) addr:0x207e430 -_ZN7MapBase8vfunc_58Ev kind:function(arm,size=0x8) addr:0x207e438 +_ZN7MapBase8vfunc_54EP5Vec2b kind:function(arm,size=0x8) addr:0x207e430 +_ZN7MapBase8vfunc_58EP5Vec2bi kind:function(arm,size=0x8) addr:0x207e438 _ZN7MapBase8vfunc_5cEv kind:function(arm,size=0x8) addr:0x207e440 -_ZN7MapBase8vfunc_60Ev kind:function(arm,size=0x8) addr:0x207e448 +_ZN7MapBase8vfunc_60EPh kind:function(arm,size=0x8) addr:0x207e448 _ZN7MapBase8vfunc_64Ev kind:function(arm,size=0x8) addr:0x207e450 -_ZN7MapBase8vfunc_68Ev kind:function(arm,size=0x488) addr:0x207e458 +_ZN7MapBase8vfunc_68EP5Vec3pb kind:function(arm,size=0x488) addr:0x207e458 _ZN7MapBase18func_ov00_0207e940EPc kind:function(arm,size=0x28) addr:0x207e8e0 _ZN7MapBase18func_ov00_0207e968Ev kind:function(arm,size=0x4) addr:0x207e908 _ZN7MapBase18func_ov00_0207e96cEv kind:function(arm,size=0x4) addr:0x207e90c @@ -355,11 +355,11 @@ _ZN7MapBase8vfunc_88Ev kind:function(arm,size=0x8) addr:0x207f2c4 _ZN7MapBase8vfunc_8cEv kind:function(arm,size=0x8) addr:0x207f2cc _ZN7MapBase8vfunc_9cEv kind:function(arm,size=0x4) addr:0x207f2d4 _ZN7MapBase8vfunc_a0Ev kind:function(arm,size=0x4) addr:0x207f2d8 -_ZN7MapBase8vfunc_a4Ev kind:function(arm,size=0x8) addr:0x207f2dc +_ZN7MapBase8vfunc_a4EPc kind:function(arm,size=0x8) addr:0x207f2dc _ZN7MapBase8vfunc_a8Ev kind:function(arm,size=0x4) addr:0x207f2e4 _ZN7MapBase8vfunc_acEv kind:function(arm,size=0x4) addr:0x207f2e8 -_ZN7MapBase8vfunc_78Ev kind:function(arm,size=0x8) addr:0x207f2ec -_ZN7MapBase8vfunc_7cEv kind:function(arm,size=0x8) addr:0x207f2f4 +_ZN7MapBase8vfunc_78EPb kind:function(arm,size=0x8) addr:0x207f2ec +_ZN7MapBase8vfunc_7cEiPiiPs 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_0207f38cEPi kind:function(arm,size=0x38) addr:0x207f32c @@ -621,7 +621,7 @@ _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f2 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f38 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083f50 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2083fc4 -_ZN10MapManager16MapData_vfunc_54EPc kind:function(arm,size=0x18) addr:0x2084028 +_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084028 _ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x2084040 _ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x2084064 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x208407c diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index ecf92c08..1750cc6b 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -135,7 +135,7 @@ public: /* 48 */ virtual void vfunc_48(); /* 4c */ virtual s32 vfunc_4c() = 0; /* 50 */ virtual unk32 vfunc_50(); - /* 54 */ virtual unk32 vfunc_54(unk8 *param_1); + /* 54 */ virtual unk32 vfunc_54(Vec2b *param_1); /* 58 */ virtual unk32 vfunc_58(Vec2b *param_1, int param_2); /* 5c */ virtual unk32 vfunc_5c(); /* 60 */ virtual unk32 vfunc_60(u8 *param_1); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index d82694db..39e15b88 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -178,7 +178,7 @@ public: unk32 MapData_vfunc_70(Vec3p *param_2); static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds); - unk32 MapData_vfunc_54(unk8 *a); + unk32 MapData_vfunc_54(Vec2b *a); unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4); unk32 MapData_vfunc_78(bool *param_1); unk8 func_ov00_020840dc(); diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index f4182b96..8672e0de 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -18,7 +18,7 @@ s32 MapBase::func_ov00_0207e28c(s32 param_2) {} void MapBase::vfunc_b4() {} void MapBase::vfunc_48() {} unk32 MapBase::vfunc_50() {} -unk32 MapBase::vfunc_54(unk8 *param_1) {} +unk32 MapBase::vfunc_54(Vec2b *param_1) {} unk32 MapBase::vfunc_58(Vec2b *param_1, int param_2) {} unk32 MapBase::vfunc_5c() {} unk32 MapBase::vfunc_60(u8 *param_1) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index e7e826f6..c5903854 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -252,12 +252,7 @@ ARM Vec3p *MapManager::func_ov00_02082538() { s32 var1 = this->mMap->vfunc_4c(); Vec3p var0; if (var1 == 2) return &this->mMap->mUnk_1a0; - q20 x = gPlayerPos.x; - q20 y = gPlayerPos.y; - var0.x = x; - var0.y = y; - q20 z = gPlayerPos.z; - var0.z = z; + var0 = gPlayerPos; return &var0; } @@ -353,7 +348,11 @@ ARM void MapManager::DestroyMap() { if (this->mMap == NULL) { return; } - this->mMap->~MapBase(); + if (this->mMap != NULL) { + this->mMap->~MapBase(); // 0x0 offset instead of the expected 0x4. + } + this->mMap = NULL; + return; } ARM void MapManager::MapData_vfunc_44() { @@ -1300,7 +1299,8 @@ ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p iVar1 = param_2->mMap->vfunc_74(param_3); if (iVar1 != 0) { - *param_1 = *(unk32 *) (iVar1 + 0xc); + // iVar1 += 0xc; + *param_1 = iVar1; return; } dVar2 = param_2->MapData_vfunc_70(param_3); @@ -1324,12 +1324,12 @@ void MapManager::GetTileWorldBounds(Vec2b *tile, AABB *tileBounds) { Vec3p_Add(&tileBounds->max, &local_20, &tileBounds->max); } -unk32 MapManager::MapData_vfunc_54(unk8 *a) { +unk32 MapManager::MapData_vfunc_54(Vec2b *a) { return this->mMap->vfunc_54(a); // what to use for this param? } unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { - unk8 local_8; + Vec2b local_8; unk8 local_7; unk16 uStack_6; @@ -1383,97 +1383,63 @@ unk8 MapManager::func_ov00_02084164(Vec2b *param_2) { unk32 uVar2; iVar1 = this->mMap->vfunc_58(param_2, 7 /*, pcVar3, param_4*/); // Params? - if (iVar1 == 0) { - uVar2 = this->MapData_vfunc_54(0); - switch (uVar2) { - case 0: break; - case 1: return 0; - case 2: return 0; - case 3: return 0; - case 4: return 0; - case 5: return 0; - case 6: return 0; - case 7: return 0; - case 8: break; - case 9: break; - case 10: return 0; - case 0xb: break; - case 0xc: break; - case 0xd: break; - case 0xe: break; // I mean, honestly Ghidra. - case 0xf: break; // What are we going to do with you? - case 0x10: break; - case 0x11: break; - case 0x12: break; - case 0x13: break; - case 0x14: return 0; - case 0x15: break; - case 0x16: break; - case 0x17: return 0; - case 0x18: break; - case 0x19: return 0; - case 0x1a: break; - case 0x1b: return 0; - case 0x1c: return 0; - case 0x1d: return 0; - case 0x1e: return 0; - case 0x1f: return 0; - case 0x20: break; - case 0x21: break; - case 0x22: break; - case 0x23: break; - case 0x24: return 0; - case 0x25: break; - case 0x26: break; - case 0x27: break; - case 0x28: break; - case 0x29: break; - case 0x2a: break; - case 0x2b: return 0; - case 0x2c: break; - case 0x2d: break; - case 0x2e: break; - case 0x2f: break; - case 0x30: return 0; - case 0x31: break; - case 0x32: break; - case 0x33: return 0; - case 0x34: return 0; - case 0x35: break; - case 0x36: break; - case 0x37: return 0; - case 0x38: break; - case 0x39: break; - case 0x3a: break; - case 0x3b: break; - case 0x3c: break; - case 0x3d: break; - case 0x3e: break; - case 0x3f: break; - case 0x40: return 0; - case 0x41: break; - case 0x42: break; - case 0x43: break; - case 0x44: break; - case 0x45: break; - case 0x46: return 0; - case 0x47: return 0; - case 0x48: return 0; - case 0x49: return 0; - case 0x4a: return 0; - case 0x4b: return 0; - case 0x4c: return 0; - case 0x4d: break; - case 0x4e: return 0; - case 0x4f: return 0; - case 0x50: return 0; - case 0x51: break; - case 0x52: break; - case 0x53: break; - case 0x54: break; - default: return 0; - } - return 1; + if (iVar1 != 0) { + return 0; + } + uVar2 = this->MapData_vfunc_54(param_2); + switch (uVar2) { + case 0: + case 8: + case 9: + case 0xb: + case 0xc: + case 0xd: + case 0xe: + case 0xf: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x15: + case 0x16: + case 0x18: + case 0x1a: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2a: + case 0x2c: + case 0x2d: + case 0x2e: + case 0x2f: + case 0x31: + case 0x32: + case 0x35: + case 0x36: + case 0x38: + case 0x39: + case 0x3a: + case 0x3b: + case 0x3c: + case 0x3d: + case 0x3e: + case 0x3f: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x4d: + case 0x51: + case 0x52: + case 0x53: + case 0x54: return 1; } return 0; } @@ -1714,54 +1680,30 @@ unk8 MapManager::func_ov00_020847f0() { bool MapManager::func_ov00_02084838() { unk32 uVar1 = this->GetMapData_Unk_38(); switch (uVar1) { - case 0: return false; - case 1: break; - case 2: break; - case 3: break; - case 4: break; - case 5: break; - case 6: return false; - case 7: return false; - case 8: return false; - case 9: return false; - case 10: break; - case 0xb: break; - case 0xc: break; - case 0xd: return false; - case 0xe: return false; - case 0xf: return false; - case 0x10: return false; - case 0x11: break; - case 0x12: return false; - case 0x13: break; - case 0x14: break; - case 0x15: break; - case 0x16: break; + case 1: + case 2: + case 3: + case 4: + case 5: + case 10: + case 0xb: + case 0xc: + case 0x11: + case 0x13: + case 0x14: + case 0x15: + case 0x16: return true; default: return false; } - return true; } bool MapManager::func_ov00_020848b8() { unk32 uVar1 = this->func_ov00_020846a4(); switch (uVar1) { - case 0: break; - case 1: break; - case 2: break; - case 3: break; - case 4: break; - case 5: break; - case 6: return true; - case 7: break; - case 8: break; - case 9: break; - case 10: break; - case 0xb: break; - case 0xc: return true; - case 0xd: return true; - case 0xe: break; - case 0xf: return true; - case 0x10: break; + case 6: + case 0xc: + case 0xd: + case 0xf: case 0x11: return true; } return false; From 1c3cf95937e1cd56c2fb3bcdbe89afaf4bb83626 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Mon, 7 Apr 2025 21:09:10 +0200 Subject: [PATCH 37/62] Clean up comments --- src/00_Core/Map/MapManager.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index c5903854..e7f0397a 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1324,8 +1324,8 @@ void MapManager::GetTileWorldBounds(Vec2b *tile, AABB *tileBounds) { Vec3p_Add(&tileBounds->max, &local_20, &tileBounds->max); } -unk32 MapManager::MapData_vfunc_54(Vec2b *a) { - return this->mMap->vfunc_54(a); // what to use for this param? +unk32 MapManager::MapData_vfunc_54(Vec2b *param_1) { + return this->mMap->vfunc_54(param_1); } unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { @@ -1335,8 +1335,7 @@ unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { uStack_6 = (unk16) ((u32) param_4 >> 0x10); // _local_8 = CONCAT11(param_3, param_2); - this->MapData_vfunc_54(&local_8); // Doesn't take any params. - // No calls to functions according to objdiff, why??? + this->MapData_vfunc_54(&local_8); } unk32 MapManager::MapData_vfunc_78(bool *param_1) { // bool* param placeholder for now, no way of knowing what the type is. @@ -1378,11 +1377,11 @@ unk8 MapManager::MapData_vfunc_58(Vec2b *param_1, int param_2) { this->mMap->vfunc_58(param_1, param_2); } -unk8 MapManager::func_ov00_02084164(Vec2b *param_2) { +ARM s32 MapManager::func_ov00_02084164(Vec2b *param_2) { int iVar1; unk32 uVar2; - iVar1 = this->mMap->vfunc_58(param_2, 7 /*, pcVar3, param_4*/); // Params? + iVar1 = this->mMap->vfunc_58(param_2, 7); if (iVar1 != 0) { return 0; } From 2c6ffc5abc822a1333438ea4e22e0b640bd421c1 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Mon, 7 Apr 2025 23:01:16 +0200 Subject: [PATCH 38/62] Add rodata --- include/Map/MapManager.hpp | 2 +- src/00_Core/Map/MapManager.cpp | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 39e15b88..f40e4eed 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -188,7 +188,7 @@ public: unk32 func_ov00_0208412c(); void func_ov00_0208413c(unk32 param_2); unk8 MapData_vfunc_58(Vec2b *param_1, int param_2); - unk8 func_ov00_02084164(Vec2b *param_2); + s32 func_ov00_02084164(Vec2b *param_2); u8 GetMapData_Unk_0a(); u8 GetMapData_Unk_0b(); unk8 MapData_vfunc_a4(unk8 *param_1); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index e7f0397a..64225e48 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1460,9 +1460,7 @@ unk8 MapManager::func_ov00_0208433c(Vec3p *param_2, Vec3p *param_3) { Vec3p VStack_24; Vec3p local_18; - local_18.x = param_2->x; - local_18.y = param_2->y; - local_18.z = param_2->z; + local_18 = *param_2; this->GetMapMinBounds(&VStack_24); Vec3p_Sub(&local_18, &VStack_24, &local_18); this->mMap->func_ov00_0207f53c(&local_28, this->mMap, &local_18); @@ -1613,6 +1611,13 @@ ARM s32 MapManager::func_ov00_02084700(MapManager *pMapManager) { } unk8 MapManager::func_ov00_02084740() { + static const s32 data_ov000_020d88f0[] = { + 0x51, 0x6e, 0x65, 0x50, 0x30, 0x74, 0x49, 0x50, 0x51, 0x54, 0x52, 0x53, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5f, + 0x60, 0x61, 0x5c, 0x5b, 0x5e, 0x62, 0x63, 0x64, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x5d, 0x31, 0x39, + 0x3a, 0x3b, 0x3c, 0x32, 0x33, 0x34, 0x35, 0x38, 0x3d, 0xd9, 0xdc, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x6f, 0x72, + 0x75, 0x78, 0x79, 0x7a, 0x7b, 0x7f, 0x83, 0x87, 0x7c, 0x80, 0x84, 0x0, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, + 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9d, 0x9e, 0x9f, 0xa0, 0x70, 0x71, + 0x73, 0x76, 0x77, 0x7d, 0x7e, 0x81, 0x82, 0x86, 0x9c, 0x36, 0x37, 0xd0, 0xd1, 0xcd, 0x19a}; bool bVar1; int iVar2; int iVar3; From a76a91ad1374913127446307f48028be1fcd4deb Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 12 Apr 2025 17:36:12 +0200 Subject: [PATCH 39/62] Decomp progress 35% --- config/eur/arm9/overlays/ov000/symbols.txt | 16 +- config/eur/arm9/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/symbols.txt | 10 +- include/Map/Course.hpp | 2 +- include/Map/Entrance.hpp | 2 +- include/Map/MapManager.hpp | 8 +- src/00_Core/Map/Course.cpp | 2 +- src/00_Core/Map/MapManager.cpp | 251 ++++++++++----------- 8 files changed, 143 insertions(+), 150 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 04f233bc..edd936ef 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -83,7 +83,7 @@ _ZN18UnkStruct_027e0d3819func_ov000_02078b40Ev kind:function(arm,size=0x24) addr _ZN18UnkStruct_027e0d3819func_ov000_02078b64Ev kind:function(arm,size=0x24) addr:0x2078b64 _ZN18UnkStruct_027e0d3819func_ov000_02078b88Ev kind:function(arm,size=0x3c) addr:0x2078b88 _Z19func_ov000_02078bc4i kind:function(thumb,size=0x2c) addr:0x2078bc4 -func_ov000_02078bf0 kind:function(thumb,size=0x11c) addr:0x2078bf0 +_Z19func_ov000_02078bf0Pii kind:function(thumb,size=0x11c) addr:0x2078bf0 func_ov000_02078d0c kind:function(thumb,size=0x24) addr:0x2078d0c func_ov000_02078d30 kind:function(thumb,size=0x24) addr:0x2078d30 func_ov000_02078d54 kind:function(thumb,size=0x3c) addr:0x2078d54 @@ -283,7 +283,7 @@ _ZN6Course14GetMCSFilePathEiii kind:function(arm,size=0xf0) addr:0x207cc84 _ZN6Course14GetMRCFilePathEiii kind:function(arm,size=0xac) addr:0x207cd74 _ZN6Course18func_ov00_0207ce20EiiPci kind:function(arm,size=0x2c) addr:0x207ce20 _ZN6Course18func_ov00_0207ce4cEiiiPci kind:function(arm,size=0x5b8) addr:0x207ce4c -_ZN6Course18func_ov00_0207d404Eiii kind:function(arm,size=0x78) addr:0x207d404 +_ZN6Course18func_ov00_0207d404Eiiii kind:function(arm,size=0x78) addr:0x207d404 _ZN6Course22IsCurrentMapInMainGridEv kind:function(arm,size=0x14) addr:0x207d47c _ZN6Course12IsInMainGridEii kind:function(arm,size=0x54) addr:0x207d490 _ZN6Course15IsMapInMainGridEj kind:function(arm,size=0x34) addr:0x207d4e4 @@ -516,7 +516,7 @@ _ZN10MapManager18func_ov00_02082650Eiii kind:function(arm,size=0x10) addr:0x2082 _ZN10MapManager18func_ov00_02082660Eii kind:function(arm,size=0x10) addr:0x2082660 _ZN10MapManager18func_ov00_02082670Eii kind:function(arm,size=0x10) addr:0x2082670 _ZN10MapManager18func_ov00_02082680Eii kind:function(arm,size=0x20) addr:0x2082680 -_ZN10MapManager18func_ov00_020826a0Eiii kind:function(arm,size=0x20) addr:0x20826a0 +_ZN10MapManager18func_ov00_020826a0Eii kind:function(arm,size=0x20) addr:0x20826a0 _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 @@ -571,7 +571,7 @@ _ZN10MapManager18func_ov00_02083570Eii kind:function(arm,size=0x18) addr:0x20835 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x2083588 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x20835a4 _ZN10MapManager18func_ov00_020835b4Ev kind:function(arm,size=0x10) addr:0x20835b4 -_ZN10MapManager18func_ov00_020835c4EPS_ii kind:function(arm,size=0x20) addr:0x20835c4 +_ZN10MapManager18func_ov00_020835c4Eii kind:function(arm,size=0x20) addr:0x20835c4 _ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x20835e4 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x20835f4 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x2083604 @@ -647,7 +647,7 @@ _ZN10MapManager18func_ov00_020847f0Ev kind:function(arm,size=0x48) addr:0x20847f _ZN10MapManager18func_ov00_02084838Ev kind:function(arm,size=0x80) addr:0x2084838 _ZN10MapManager18func_ov00_020848b8Ev kind:function(arm,size=0x6c) addr:0x20848b8 _ZN10MapManager18func_ov00_02084924Ej kind:function(arm,size=0x10) addr:0x2084924 -_ZN10MapManager18func_ov00_02084934EPi kind:function(arm,size=0x50) addr:0x2084934 +_ZN10MapManager18func_ov00_02084934EP5Vec3p kind:function(arm,size=0x50) addr:0x2084934 _ZN10MapManager17GetMapData_Unk_06Ev kind:function(arm,size=0xc) addr:0x2084984 _ZN10MapManager17GetMapData_Unk_07Ev kind:function(arm,size=0xc) addr:0x2084990 _ZN10MapManager18func_ov00_0208499cEv kind:function(arm,size=0x24) addr:0x208499c @@ -672,7 +672,7 @@ _ZN10MapManager18func_ov00_02084cc8Ei kind:function(arm,size=0x1c) addr:0x2084cc _ZN10MapManager18func_ov00_02084ce4Ei kind:function(arm,size=0x18) addr:0x2084ce4 _ZN10MapManager18func_ov00_02084cfcEi kind:function(arm,size=0x1c) addr:0x2084cfc _ZN10MapManager17GetMapData_Unk_09Ev kind:function(arm,size=0xc) addr:0x2084d18 -_ZN10MapManager18func_ov00_02084d24Ecci kind:function(arm,size=0x28) addr:0x2084d24 +_ZN10MapManager18func_ov00_02084d24Eiii kind:function(arm,size=0x28) addr:0x2084d24 _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x2084d4c _ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x2084ebc _ZN10MapManager18func_ov00_02085108EPi kind:function(arm,size=0x174) addr:0x2085108 @@ -1459,7 +1459,7 @@ func_ov000_0209d6d0 kind:function(arm,size=0x4) addr:0x209d6d0 func_ov000_0209d6d4 kind:function(arm,size=0x14) addr:0x209d6d4 _Z19func_ov000_0209d6e8ii kind:function(arm,size=0x28) addr:0x209d6e8 func_ov000_0209d710 kind:function(arm,size=0xc) addr:0x209d710 -func_ov000_0209d71c kind:function(arm,size=0xc) addr:0x209d71c +_Z19func_ov000_0209d71cPii kind:function(arm,size=0xc) addr:0x209d71c func_ov000_0209d728 kind:function(arm,size=0x10) addr:0x209d728 func_ov000_0209d738 kind:function(arm,size=0x10) addr:0x209d738 func_ov000_0209d748 kind:function(arm,size=0x10) addr:0x209d748 @@ -4054,7 +4054,7 @@ data_ov000_020e250c kind:data(any) addr:0x20e250c data_ov000_020e2510 kind:data(any) addr:0x20e2510 data_ov000_020e2520 kind:data(any) addr:0x20e2520 data_ov000_020e2524 kind:data(any) addr:0x20e2524 -data_ov000_020e2528 kind:data(any) addr:0x20e2528 +@1495 kind:data(any) addr:0x20e2528 data_ov000_020e2544 kind:data(any) addr:0x20e2544 data_ov000_020e2568 kind:data(any) addr:0x20e2568 data_ov000_020e2588 kind:data(any) addr:0x20e2588 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 55963541..32cdc0eb 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -478,7 +478,7 @@ func_0200c7c4 kind:function(arm,size=0x30) addr:0x200c7c4 func_0200c7f4 kind:function(arm,size=0x30) addr:0x200c7f4 func_0200c824 kind:function(arm,size=0x54) addr:0x200c824 func_0200c878 kind:function(arm,size=0x58) addr:0x200c878 -sprintf kind:function(arm,size=0x28) addr:0x200c8d0 +_Z7sprintfrPcrPKcz kind:function(arm,size=0x28) addr:0x200c8d0 vsprintf kind:function(arm,size=0x18) addr:0x200c8f8 va_sprintf kind:function(arm,size=0x28) addr:0x200c910 vsnprintf kind:function(arm,size=0x8fc) addr:0x200c938 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 4b67f92d..5ec6f277 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -283,7 +283,7 @@ _ZN6Course14GetMCSFilePathEiii kind:function(arm,size=0xf0) addr:0x207cc24 _ZN6Course14GetMRCFilePathEiii kind:function(arm,size=0xac) addr:0x207cd14 _ZN6Course18func_ov00_0207ce20EiiPci kind:function(arm,size=0x2c) addr:0x207cdc0 _ZN6Course18func_ov00_0207ce4cEiiiPci kind:function(arm,size=0x5b8) addr:0x207cdec -_ZN6Course18func_ov00_0207d404Eiii kind:function(arm,size=0x78) addr:0x207d3a4 +_ZN6Course18func_ov00_0207d404Eiiii kind:function(arm,size=0x78) addr:0x207d3a4 _ZN6Course22IsCurrentMapInMainGridEv kind:function(arm,size=0x14) addr:0x207d41c _ZN6Course12IsInMainGridEii kind:function(arm,size=0x54) addr:0x207d430 _ZN6Course15IsMapInMainGridEj kind:function(arm,size=0x34) addr:0x207d484 @@ -516,7 +516,7 @@ _ZN10MapManager18func_ov00_02082650Eiii kind:function(arm,size=0x10) addr:0x2082 _ZN10MapManager18func_ov00_02082660Eii kind:function(arm,size=0x10) addr:0x2082600 _ZN10MapManager18func_ov00_02082670Eii kind:function(arm,size=0x10) addr:0x2082610 _ZN10MapManager18func_ov00_02082680Eii kind:function(arm,size=0x20) addr:0x2082620 -_ZN10MapManager18func_ov00_020826a0Eiii kind:function(arm,size=0x20) addr:0x2082640 +_ZN10MapManager18func_ov00_020826a0Eii kind:function(arm,size=0x20) addr:0x2082640 _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 @@ -571,7 +571,7 @@ _ZN10MapManager18func_ov00_02083570Eii kind:function(arm,size=0x18) addr:0x20835 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x2083528 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x2083544 _ZN10MapManager18func_ov00_020835b4Ev kind:function(arm,size=0x10) addr:0x2083554 -_ZN10MapManager18func_ov00_020835c4EPS_ii kind:function(arm,size=0x20) addr:0x2083564 +_ZN10MapManager18func_ov00_020835c4Eii kind:function(arm,size=0x20) addr:0x2083564 _ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x2083584 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x2083594 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x20835a4 @@ -647,7 +647,7 @@ _ZN10MapManager18func_ov00_020847f0Ev kind:function(arm,size=0x48) addr:0x208479 _ZN10MapManager18func_ov00_02084838Ev kind:function(arm,size=0x80) addr:0x20847d8 _ZN10MapManager18func_ov00_020848b8Ev kind:function(arm,size=0x6c) addr:0x2084858 _ZN10MapManager18func_ov00_02084924Ej kind:function(arm,size=0x10) addr:0x20848c4 -_ZN10MapManager18func_ov00_02084934EPi kind:function(arm,size=0x50) addr:0x20848d4 +_ZN10MapManager18func_ov00_02084934EP5Vec3p kind:function(arm,size=0x50) addr:0x20848d4 _ZN10MapManager17GetMapData_Unk_06Ev kind:function(arm,size=0xc) addr:0x2084924 _ZN10MapManager17GetMapData_Unk_07Ev kind:function(arm,size=0xc) addr:0x2084930 _ZN10MapManager18func_ov00_0208499cEv kind:function(arm,size=0x24) addr:0x208493c @@ -672,7 +672,7 @@ _ZN10MapManager18func_ov00_02084cc8Ei kind:function(arm,size=0x1c) addr:0x2084c6 _ZN10MapManager18func_ov00_02084ce4Ei kind:function(arm,size=0x18) addr:0x2084c84 _ZN10MapManager18func_ov00_02084cfcEi kind:function(arm,size=0x1c) addr:0x2084c9c _ZN10MapManager17GetMapData_Unk_09Ev kind:function(arm,size=0xc) addr:0x2084cb8 -_ZN10MapManager18func_ov00_02084d24Ecci kind:function(arm,size=0x28) addr:0x2084cc4 +_ZN10MapManager18func_ov00_02084d24Eiii kind:function(arm,size=0x28) addr:0x2084cc4 _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x2084cec _ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x2084e5c _ZN10MapManager18func_ov00_02085108EPi kind:function(arm,size=0x174) addr:0x20850a8 diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index 38ca1a87..b01ff5ea 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -78,7 +78,7 @@ public: void GetMRCFilePath(unk32 param_2, unk32 buf, unk32 param_4); void func_ov00_0207ce20(unk32 param_2, unk32 param_3, char *param_4, unk32 param_5); void func_ov00_0207ce4c(s32 param_2, s32 param_3, unk32 param_4, char *param_5, unk32 param_6); - bool func_ov00_0207d404(s32 param_2, unk32 param_3, unk32 param_4); + bool func_ov00_0207d404(s32 param_2, unk32 param_3, unk32 param_4, unk32 param_5); bool IsCurrentMapInMainGrid(); bool IsInMainGrid(s32 x, s32 y); bool IsMapInMainGrid(u32 map); diff --git a/include/Map/Entrance.hpp b/include/Map/Entrance.hpp index 1ff69575..d8d1b751 100644 --- a/include/Map/Entrance.hpp +++ b/include/Map/Entrance.hpp @@ -12,7 +12,7 @@ public: /* 00 */ Vec3p mPos; /* 0c */ unk16 mAngle; /* 0e */ u8 mId; - /* 0f */ unk8 mUnk_0f; + /* 0f */ // unk8 mUnk_0f; /* 10 */ s32 mUnk_10; /* 14 */ }; diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index f40e4eed..1d9c9dd4 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -73,7 +73,7 @@ public: 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); - void func_ov00_020826a0(unk32 param_2, unk32 param_3, unk32 param_4); + void func_ov00_020826a0(unk32 param_2, unk32 param_3); void CreateMap(unk32 mapType, unk32 param_3, unk32 param_4); void DestroyMap(); void MapData_vfunc_44(); @@ -128,7 +128,7 @@ public: unk32 func_ov00_02083588(); unk32 func_ov00_020835a4(); unk32 func_ov00_020835b4(); - unk8 func_ov00_020835c4(MapManager *param_1, s32 param_2, unk32 param_3); + bool func_ov00_020835c4(s32 param_2, unk32 param_3); bool func_ov00_020835e4(s32 param_2, unk32 *param_3, unk8 *param_4); unk32 func_ov00_020835f4(s32 param_2); void func_ov00_02083604(s32 param_2); @@ -204,7 +204,7 @@ public: bool func_ov00_02084838(); bool func_ov00_020848b8(); void func_ov00_02084924(u32 param_2); - bool func_ov00_02084934(s32 *param_2); + bool func_ov00_02084934(Vec3p *param_2); u8 GetMapData_Unk_06(); u8 GetMapData_Unk_07(); bool func_ov00_0208499c(); @@ -229,7 +229,7 @@ public: void func_ov00_02084ce4(unk32 param_2); bool func_ov00_02084cfc(unk32 param_2); u8 GetMapData_Unk_09(); - unk8 func_ov00_02084d24(unk8 param_2, unk8 param_3, unk32 param_4); + void func_ov00_02084d24(unk32 param_2, unk32 param_3, unk32 param_4); s32 func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4); unk32 func_ov00_02084ebc(Vec3p *param_2); s32 func_ov00_02085108(s32 *param_2); diff --git a/src/00_Core/Map/Course.cpp b/src/00_Core/Map/Course.cpp index 4771048d..f3091530 100644 --- a/src/00_Core/Map/Course.cpp +++ b/src/00_Core/Map/Course.cpp @@ -15,7 +15,7 @@ void Course::GetMCSFilePath(unk32 buf, s32 fileIndex, unk32 fileType) {} void Course::GetMRCFilePath(unk32 param_2, unk32 buf, unk32 param_4) {} void Course::func_ov00_0207ce20(unk32 param_2, unk32 param_3, char *param_4, unk32 param_5) {} void Course::func_ov00_0207ce4c(s32 param_2, s32 param_3, unk32 param_4, char *param_5, unk32 param_6) {} -bool Course::func_ov00_0207d404(s32 param_2, unk32 param_3, unk32 param_4) {} +bool Course::func_ov00_0207d404(s32 param_2, unk32 param_3, unk32 param_4, unk32 param_5) {} bool Course::IsCurrentMapInMainGrid() {} bool Course::IsInMainGrid(s32 x, s32 y) {} bool Course::IsMapInMainGrid(u32 map) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 64225e48..7e3e8399 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1,6 +1,11 @@ +// TODO: Make sure every function has either ARM or THUMB +// TODO: Optimise functions' bodies as much as possible (without affecting asm) +// Clear these comments when done + #include "Map/MapManager.hpp" #include "Actor/Actor.hpp" #include "Actor/ActorManager.hpp" +#include "DTCM/UnkStruct_027e0d38.hpp" #include "Player/PlayerBase.hpp" #include "Save/AdventureFlags.hpp" @@ -33,6 +38,7 @@ extern void func_ov000_02093a1c(u32 *param_1, s32 *param_2); extern void func_ov000_02096324(s32 *param_1, s32 param_2); extern s32 *func_ov000_02096418(s32 *param_1); extern void func_ov000_0209d6e8(s32 param_1, s32 param_2); +extern s32 func_ov000_0209d71c(s32 *param_1, s32 param_2); extern unk32 func_ov000_020a5e9c(unk32 *param_1); extern void func_ov004_021024c4(MapManager *param_1, s32 param_2, bool param_3, s32 param_4); @@ -42,20 +48,32 @@ extern void func_ov004_02102e3c(s32 *param_1); extern void func_ov004_02105578(ActorManager *param_1, u32 param_2); extern void func_ov004_02105608(ActorManager *param_1, unk32 param_2, unk32 param_3, unk32 param_4); +extern MapBase *func_ov012_0212b358(MapBase *param_1, unk32 param_2, unk32 param_3); + +extern MapBase *func_ov015_02128dd8(MapBase *param_1, unk32 param_2, unk32 param_3); extern s32 func_ov015_02129c14(MapBase *param_1); extern bool func_ov015_02129c24(MapBase *param_1, Vec3p *param_2, Vec3p *param_3); extern bool func_ov015_02129c34(MapBase *param_1, s32 param_2); extern bool func_ov015_02129c44(MapBase *param_1, s32 param_2); -struct UnkStruct_027e0d38 { - /* 00 */ unk8 mUnk_00[0xc]; +extern MapBase *func_ov017_0215b4e8(MapBase *param_1, unk32 param_2, unk32 param_3); + +extern MapBase *func_ov018_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3); + +// Should this be defined? +extern int sprintf(char *__restrict s, const char *__restrict format, ...); + +struct UnkStruct_02082348 { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; /* 0c */ unk32 mUnk_0c; - /* 10 */ unk8 mUnk_10[0x18]; - /* 28 */ unk32 mUnk_28; + /* 10 */ unk16 mUnk_10; + /* 12 */ unk8 mUnk_12[0x4]; }; extern s32 *data_027e0c68; -extern UnkStruct_027e0d38 *data_027e0d38; +extern u32 *data_027e0ce4; extern s32 *data_027e0d3c; extern s32 *data_027e0f64; extern s32 *data_027e0f68; @@ -117,8 +135,8 @@ unk8 MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { *(unk8 *) (param_3 + 1) = 2; uVar2 = 4; } - *(unk8 *) ((int) param_3 + 5) = uVar2; - uVar3 = func_ov000_020a5e9c(&data_027e0d38->mUnk_28) + 0x1c; + *(unk8 *) ((int) param_3 + 5) = uVar2; + // uVar3 = func_ov000_020a5e9c(data_027e0d38->mUnk_28) + 0x1c; puVar1 = (s32 *) data_027e0d38; param_3[2] = uVar3; *(unk8 *) (param_3 + 4) = *(unk8 *) (*(s32 *) (*(s32 *) puVar1 + 0x28) + 0x2e); @@ -169,13 +187,18 @@ ARM void MapManager::func_ov00_0208230c(s32 *param_2) { } 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_ov000_02078bf0(var, *param_2); + UnkStruct_02082348 unkStruct; + unkStruct.mUnk_00 = 0x47; + unkStruct.mUnk_04 = 0; + unkStruct.mUnk_08 = 0; + unkStruct.mUnk_0c = 0; + unkStruct.mUnk_10 = 0; + unkStruct.mUnk_12[0] = 0xff; + unkStruct.mUnk_12[1] = 0; + unkStruct.mUnk_12[2] = 0; + unkStruct.mUnk_12[3] = 0; + this->func_ov00_0208230c((s32 *) &unkStruct); + func_ov000_02078bf0((s32 *) &unkStruct, *param_2); } ARM void MapManager::func_ov00_020823a4(unk32 param_2) { @@ -265,14 +288,13 @@ ARM void MapManager::func_ov00_020825ac() { } ARM s32 MapManager::GetCourseFilePath(char *courseName, char *buf) { - // s32 var = sprintf(buf, "Map/%s/course.bin", courseName); // Should we manually define sprintf? - // return var; + s32 var = sprintf(buf, "Map/%s/course.bin", courseName); // Should we manually define sprintf? + return var; + // reference to func_ov000_020e2528 (changed to @1495 in symbols) } 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. + char *courseName = (char *) func_ov000_0209d71c(data_027e0f7c, param_2); this->GetCourseFilePath(courseName, buf); } @@ -300,10 +322,8 @@ 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::func_ov00_020826a0(unk32 param_2, unk32 param_3) { + this->mMap->vfunc_98(param_2, 7, param_3); } ARM void MapManager::CreateMap(unk32 mapType, unk32 param_3, unk32 param_4) { @@ -312,33 +332,33 @@ ARM void MapManager::CreateMap(unk32 mapType, unk32 param_3, unk32 param_4) { 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 ? + // data_027e0ce4 (data_027e0ce0) of type UnkStruct_0202e894 + SysObject::operator new(0x1dc, data_027e0ce4, 4); if (mapBase != NULL) { - // mapBase = (MapBase *)func_ov018_0215b4a0(mapBase, param_3, param_4); // Does not exist. + 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); + mapBase = (MapBase *) SysObject::operator new(0x1b0, data_027e0ce4, 4); if (mapBase != NULL) { - // mapBase = (MapBase *)func_ov015_02128dd8(mapBase, param_3, param_4); // Does not exist. + 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); + mapBase = (MapBase *) SysObject::operator new(0x790, data_027e0ce4, 4); if (mapBase != NULL) { - // mapBase = (MapBase *)func_ov012_0212b358(mapBase, param_3, param_4); // Does not exist. + 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); + mapBase = (MapBase *) SysObject::operator new(0x790, data_027e0ce4, 4); if (mapBase != NULL) { - // mapBase = (MapBase *)func_ov017_0215b4e8(mapBase, param_3, param_4); // Does not exist. + mapBase = (MapBase *) func_ov017_0215b4e8(mapBase, param_3, param_4); // Does not exist. } this->mMap = mapBase; } @@ -360,26 +380,25 @@ ARM void MapManager::MapData_vfunc_44() { } ARM void MapManager::func_ov00_02082808(s32 param_2) { - // How to define PTR_027e0d38 ? - // if (*(int*)(*(int*)PTR_027e0d38 + 0x14) == 1) { - // return; - // } - s32 var1; // = func_ov00_02084740() + if (*(int *) (*(int *) data_027e0d38 + 0x14) == 1) { + return; + } + s32 var1 = this->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_3); // And these? + // func_ov000_020d70a4(DWORD_overlay_d_0_bss__020eec68, var1, 0, 0x7f, param_3); // And these? } else { - // var2 = func_ov00_020a5e9c(*(s32 *) PTR_027e0d38 + 0xc); + var2 = func_ov000_020a5e9c((unk32 *) data_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_3); } - // var1 = func_ov00_020a5e9c(*(s32 *) PTR_027e0d38 + 0xc); + var1 = func_ov000_020a5e9c((unk32 *) data_027e0d38 + 0xc); if (var1 == 0) { return; } @@ -564,14 +583,14 @@ ARM u32 MapManager::func_ov00_02082d74(unk32 param_2) { } ARM void MapManager::func_ov00_02082d84(unk8 *param_2, s32 *param_3, s32 *param_4) { - s32 mapWidth = this->GetMapWidth(); - u32 uVar3; // = CoDivide64By32(0x100000, mapWidth << 0xc); Not defined ? + s32 mapWidth = this->GetMapWidth(); + u32 uVar3 = CoDivide64By32(0x100000, mapWidth << 0xc); s32 mapHeight = this->GetMapHeight(); - u32 uVar4; // = CoDivide64By32(0xc0000, mapHeight << 0xc); Not defined ? - s64 lVar1 = (s64) (s32) ((u32) *param_2 << 0xc); - *param_3 = (s32) (((u32) lVar1 >> 0xc | (s32) ((u64) lVar1 >> 0x20) * 0x100000) + ((s32) uVar4 >> 1) + 0x800) >> 0xc; - lVar1 = (s64) (s32) ((u32) param_2[1] << 0xc) * (s64) (s32) uVar4 + 0x800; - *param_4 = (s32) (((u32) lVar1 >> 0xc | (s32) ((u64) lVar1 >> 0x20) * 0x100000) + ((s32) uVar4 >> 1) + 0x800) >> 0xc; + u32 uVar4 = CoDivide64By32(0xc0000, mapHeight << 0xc); + s64 lVar1 = (s64) (s32) ((u32) *param_2 << 0xc); + *param_3 = (s32) (((u32) lVar1 >> 0xc | (s32) ((u64) lVar1 >> 0x20) * 0x100000) + ((s32) uVar4 >> 1) + 0x800) >> 0xc; + lVar1 = (s64) (s32) ((u32) param_2[1] << 0xc) * (s64) (s32) uVar4 + 0x800; + *param_4 = (s32) (((u32) lVar1 >> 0xc | (s32) ((u64) lVar1 >> 0x20) * 0x100000) + ((s32) uVar4 >> 1) + 0x800) >> 0xc; } ARM bool MapManager::func_ov00_02082e1c(s32 *param_2, s32 *param_3) { @@ -597,7 +616,7 @@ ARM bool MapManager::func_ov00_02082e1c(s32 *param_2, s32 *param_3) { local_44[0] = -0x100; local_48 = -0x100; bVar1 = this->mMap->mUnk_01a; - // iVar5 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__02083068); + iVar5 = data_027e0d38->func_ov000_02078b40(); if (iVar5 == 0) { // bVar2 = *(u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083068 + 0x28) + 0x9a); } else { @@ -894,8 +913,8 @@ ARM unk32 MapManager::func_ov00_020835b4() { return this->mCourse->Get_Unk_c8_04(); } -ARM unk8 MapManager::func_ov00_020835c4(MapManager *param_1, s32 param_2, unk32 param_3) { - return param_1->mCourse->func_ov00_0207d404(param_2, 0, param_3); +ARM bool MapManager::func_ov00_020835c4(s32 param_1, unk32 param_2) { + return this->mCourse->func_ov00_0207d404(param_1, 0, param_2, 3); } ARM bool MapManager::func_ov00_020835e4(s32 param_2, unk32 *param_3, unk8 *param_4) { @@ -916,14 +935,7 @@ ARM unk8 MapManager::func_ov00_02083614(s32 param_2) { ARM bool MapManager::GetEntrancePos(Entrance *param_1, unk32 entranceId) { Entrance *entrance = this->mMap->FindEntrance(entranceId); - q20 y = entrance->mPos.y; - q20 z = entrance->mPos.z; - param_1->mPos.x = entrance->mPos.x; - param_1->mPos.y = y; - param_1->mPos.z = z; - param_1->mAngle = entrance->mAngle; - param_1->mId = entrance->mId; - param_1->mUnk_10 = entrance->mUnk_10; + *param_1 = *entrance; return true; } @@ -1099,8 +1111,10 @@ ARM s32 MapManager::func_ov00_020839f8(s32 param_2) { } ARM void MapManager::func_ov00_02083a1c(Vec2b *param_1, MapManager *param_2, Vec3p *param_3) { - param_1->x /*or y?*/ = param_2->func_ov00_020839f8(param_3->z); - param_1->y /*or x?*/ = param_2->func_ov00_020839d4(param_3->x); + s8 x = param_2->func_ov00_020839f8(param_3->z); + s8 y = param_2->func_ov00_020839d4(param_3->x); + param_1->x = y; + param_1->y = x; } ARM void MapManager::func_ov00_02083a54(u8 *param_1, MapManager *param_2, s32 *param_3, s32 param_4, s32 *param_5) { @@ -1175,13 +1189,16 @@ ARM s32 MapManager::func_ov00_02083c50(unk32 z) { } ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, u32 param_3) { + q20 x; + q20 z; + q20 y; Vec3p local_28; - q20 x = this->func_ov00_02083c24(param_3 & 0xff); - // param_2->x = x; - q20 z = this->func_ov00_02083c50(param_3 >> 8 & 0xff); - // param_2->z = z; - q20 y = this->MapData_vfunc_68(&local_28, true); - // param_2->y = y; + x = this->func_ov00_02083c24(param_3 & 0xff); + param_2->x = x; + z = this->func_ov00_02083c50(param_3 >> 8 & 0xff); + param_2->z = z; + y = this->MapData_vfunc_68(&local_28, true); + param_2->y = y; } ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5) { @@ -1612,6 +1629,7 @@ ARM s32 MapManager::func_ov00_02084700(MapManager *pMapManager) { unk8 MapManager::func_ov00_02084740() { static const s32 data_ov000_020d88f0[] = { + // Map IDs? 0x51, 0x6e, 0x65, 0x50, 0x30, 0x74, 0x49, 0x50, 0x51, 0x54, 0x52, 0x53, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5f, 0x60, 0x61, 0x5c, 0x5b, 0x5e, 0x62, 0x63, 0x64, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x5d, 0x31, 0x39, 0x3a, 0x3b, 0x3c, 0x32, 0x33, 0x34, 0x35, 0x38, 0x3d, 0xd9, 0xdc, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0x6f, 0x72, @@ -1625,7 +1643,7 @@ unk8 MapManager::func_ov00_02084740() { unk32 uVar5; unk32 uVar6; unk32 uVar7; - unk32 *puVar8; + s32 *puVar8; unk32 *puVar9; unk32 local_1c8; unk32 local_1c4; @@ -1645,7 +1663,7 @@ unk8 MapManager::func_ov00_02084740() { } puVar9 = local_1bc; iVar3 = 0x1b; - // puVar8 = (unk32 *) PTR_DWORD_overlay_d_0__020d88f0_overlay_d_0__020847dc; + puVar8 = (s32 *) data_ov000_020d88f0; do { uVar4 = *puVar8; uVar5 = puVar8[1]; @@ -1717,17 +1735,17 @@ void MapManager::func_ov00_02084924(u32 param_2) { this->mMap->func_ov00_0208008c(param_2); } -bool MapManager::func_ov00_02084934(s32 *param_2) { - int iVar2; - int iVar3; - int iVar4; +bool MapManager::func_ov00_02084934(Vec3p *param_2) { + q20 iVar2; + q20 iVar3; + q20 iVar4; Vec3p local_20; iVar2 = this->GetMapCenterZ(); - iVar3 = param_2[2]; - iVar4 = param_2[1]; + iVar3 = param_2->z; + iVar4 = param_2->y; local_20.x = this->GetMapCenterX(); - local_20.x = *param_2 - local_20.x; + local_20.x = param_2->x - local_20.x; local_20.y = iVar4; local_20.z = iVar3 - iVar2; return this->mMap->IsInBounds(&local_20); @@ -1822,22 +1840,20 @@ unk8 MapManager::func_ov00_02084b38(unk32 param_2, unk32 param_3, unk32 param_4) if (param_2 != 0) { // value = SUB41(param_4, 0); // What is SUB41 and where is it defined? switch (param_3) { - case 0: goto LAB_overlay_d_0__02084b60; + case 0: + pMVar1 = this->mMap; + if (param_4 == 0) { + pMVar1->mUnk_180[param_2 >> 5].mUnk_0 = pMVar1->mUnk_180[param_2 >> 5].mUnk_0 & ~(1 << (param_2 & 0x1f)); + return; + } + pMVar1->mUnk_180[param_2 >> 5].mUnk_0 = pMVar1->mUnk_180[param_2 >> 5].mUnk_0 | 1 << (param_2 & 0x1f); + return; case 1: this->mCourse->SetMapDataFlag0(param_2, value); return; case 2: this->mCourse->SetFlag0(param_2, value); return; case 3: this->mCourse->SetFlag1(param_2, value); return; default: return; } } - return; -LAB_overlay_d_0__02084b60: - pMVar1 = this->mMap; - if (param_4 == 0) { - pMVar1->mUnk_180[param_2 >> 5].mUnk_0 = pMVar1->mUnk_180[param_2 >> 5].mUnk_0 & ~(1 << (param_2 & 0x1f)); - return; - } - pMVar1->mUnk_180[param_2 >> 5].mUnk_0 = pMVar1->mUnk_180[param_2 >> 5].mUnk_0 | 1 << (param_2 & 0x1f); - return; } bool MapManager::func_ov00_02084be0(u32 param_2, unk32 param_3) { @@ -1924,14 +1940,14 @@ u8 MapManager::GetMapData_Unk_09() { return this->mMap->mUnk_009; } -unk8 MapManager::func_ov00_02084d24(unk8 param_2, unk8 param_3, unk32 param_4) { +ARM void MapManager::func_ov00_02084d24(unk32 param_2, unk32 param_3, unk32 param_4) { unk8 local_8; unk8 local_7; unk16 uStack_6; uStack_6 = (unk16) ((u32) param_4 >> 0x10); - // _local_8 = CONCAT11(param_3, param_2); // What is CONCAT11 ? - // this->mMap->vfunc_90(&local_8, param_4); // Missing parameter ? + // _local_8 = CONCAT11(param_3, param_2); // What is CONCAT11 ? + this->mMap->vfunc_90(param_2, param_3, param_4); // Missing parameter ? } s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4) { @@ -2028,48 +2044,25 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { } if (iVar2 < 0x2a) { switch (iVar2) { - case 0: break; - case 1: return 0; - case 2: return 0; - case 3: return 0; - case 4: return 0; - case 5: return 0; - case 6: return 0; - case 7: break; - case 8: return 0; - case 9: return 0; - case 10: break; - case 0xb: break; - case 0xc: break; - case 0xd: break; - case 0xe: break; - case 0xf: break; - case 0x10: break; - case 0x11: break; - case 0x12: break; - case 0x13: break; - case 0x14: return 0; - case 0x15: break; - case 0x16: return 0; - case 0x17: return 0; - case 0x18: break; - case 0x19: return 0; - case 0x1a: break; - case 0x1b: break; - case 0x1c: break; - case 0x1d: return 0; - case 0x1e: return 0; - case 0x1f: return 0; - case 0x20: break; - case 0x21: break; - case 0x22: break; - case 0x23: break; - case 0x24: break; - case 0x25: break; - case 0x26: break; - case 0x27: return 0; - case 0x28: return 0; + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 8: + case 9: + case 0x14: + case 0x16: + case 0x17: + case 0x19: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x27: + case 0x28: case 0x29: return 0; + default: break; } } else if (iVar2 == 0x37) { return 0; From e93fedad570cf09fa0baaaed6789a35b074cbbfa Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 12 Apr 2025 17:53:52 +0200 Subject: [PATCH 40/62] Add stdio.h lib --- libs/c/include/stdio.h | 6 ++++++ src/00_Core/Map/MapManager.cpp | 7 ++----- 2 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 libs/c/include/stdio.h diff --git a/libs/c/include/stdio.h b/libs/c/include/stdio.h new file mode 100644 index 00000000..5835ab24 --- /dev/null +++ b/libs/c/include/stdio.h @@ -0,0 +1,6 @@ +#ifndef _C_STDIO_H +#define _C_STDIO_H + +extern int sprintf(char *__restrict s, const char *__restrict format, ...); + +#endif \ No newline at end of file diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 7e3e8399..d54c7b3b 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -8,6 +8,7 @@ #include "DTCM/UnkStruct_027e0d38.hpp" #include "Player/PlayerBase.hpp" #include "Save/AdventureFlags.hpp" +#include "stdio.h" extern bool func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Vec4p *param4); @@ -60,9 +61,6 @@ extern MapBase *func_ov017_0215b4e8(MapBase *param_1, unk32 param_2, unk32 param extern MapBase *func_ov018_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3); -// Should this be defined? -extern int sprintf(char *__restrict s, const char *__restrict format, ...); - struct UnkStruct_02082348 { /* 00 */ unk32 mUnk_00; /* 04 */ unk32 mUnk_04; @@ -288,9 +286,8 @@ ARM void MapManager::func_ov00_020825ac() { } ARM s32 MapManager::GetCourseFilePath(char *courseName, char *buf) { - s32 var = sprintf(buf, "Map/%s/course.bin", courseName); // Should we manually define sprintf? + s32 var = sprintf(buf, "Map/%s/course.bin", courseName); return var; - // reference to func_ov000_020e2528 (changed to @1495 in symbols) } ARM void MapManager::func_ov00_020825e4(unk32 param_2, char *buf) { From 9cf9e77ff581d27b312505efa2fd11f3383e6ae7 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 12 Apr 2025 18:00:10 +0200 Subject: [PATCH 41/62] Update --- src/00_Core/Map/MapManager.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 7e3e8399..dc440220 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -60,9 +60,6 @@ extern MapBase *func_ov017_0215b4e8(MapBase *param_1, unk32 param_2, unk32 param extern MapBase *func_ov018_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3); -// Should this be defined? -extern int sprintf(char *__restrict s, const char *__restrict format, ...); - struct UnkStruct_02082348 { /* 00 */ unk32 mUnk_00; /* 04 */ unk32 mUnk_04; @@ -288,9 +285,8 @@ ARM void MapManager::func_ov00_020825ac() { } ARM s32 MapManager::GetCourseFilePath(char *courseName, char *buf) { - s32 var = sprintf(buf, "Map/%s/course.bin", courseName); // Should we manually define sprintf? + s32 var = sprintf(buf, "Map/%s/course.bin", courseName); return var; - // reference to func_ov000_020e2528 (changed to @1495 in symbols) } ARM void MapManager::func_ov00_020825e4(unk32 param_2, char *buf) { From 60e6b907127bbd84bd65cd569249cca42edb306c Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 20 Apr 2025 12:12:51 +0200 Subject: [PATCH 42/62] Update --- libs/c/include/stdio.h | 2 +- src/00_Core/Map/MapManager.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libs/c/include/stdio.h b/libs/c/include/stdio.h index 5835ab24..63f34b0c 100644 --- a/libs/c/include/stdio.h +++ b/libs/c/include/stdio.h @@ -1,6 +1,6 @@ #ifndef _C_STDIO_H #define _C_STDIO_H -extern int sprintf(char *__restrict s, const char *__restrict format, ...); +int sprintf(char *__restrict s, const char *__restrict format, ...); #endif \ No newline at end of file diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index d54c7b3b..762bfd99 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1938,13 +1938,13 @@ u8 MapManager::GetMapData_Unk_09() { } ARM void MapManager::func_ov00_02084d24(unk32 param_2, unk32 param_3, unk32 param_4) { - unk8 local_8; - unk8 local_7; + unk8 local_8 = param_2; + unk8 local_7 = param_3; unk16 uStack_6; uStack_6 = (unk16) ((u32) param_4 >> 0x10); - // _local_8 = CONCAT11(param_3, param_2); // What is CONCAT11 ? - this->mMap->vfunc_90(param_2, param_3, param_4); // Missing parameter ? + // _local_8 = CONCAT11(param_3, param_2); + this->mMap->vfunc_90(param_2, param_3, param_4); } s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4) { From 71ef8b58aad0315d839c3b2a4e996028d90952e6 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Mon, 21 Apr 2025 23:07:04 +0200 Subject: [PATCH 43/62] Decomp progress 36% --- config/eur/arm9/overlays/ov000/symbols.txt | 8 +-- config/usa/arm9/overlays/ov000/symbols.txt | 8 +-- include/Map/MapBase.hpp | 6 +- include/Map/MapManager.hpp | 8 +-- include/Map/MapOverworld.hpp | 2 +- src/00_Core/Map/MapBase.cpp | 6 +- src/00_Core/Map/MapManager.cpp | 80 +++++++++++----------- src/18_Overworld/Map/MapOverworld.cpp | 2 +- 8 files changed, 59 insertions(+), 61 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index edd936ef..b1c0fe2b 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -622,9 +622,9 @@ _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x20 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083fb0 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2084024 _ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084088 -_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x20840a0 -_ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x20840c4 -_ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x20840dc +_ZN10MapManager18func_ov00_020840a0Eccs kind:function(arm,size=0x24) addr:0x20840a0 +_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x20840c4 +_ZN10MapManager18func_ov00_020840dcEP5Vec2b kind:function(arm,size=0x24) addr:0x20840dc _ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x2084100 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x2084114 _ZN10MapManager17GetMapData_Unk_4cEv kind:function(arm,size=0xc) addr:0x2084120 @@ -672,7 +672,7 @@ _ZN10MapManager18func_ov00_02084cc8Ei kind:function(arm,size=0x1c) addr:0x2084cc _ZN10MapManager18func_ov00_02084ce4Ei kind:function(arm,size=0x18) addr:0x2084ce4 _ZN10MapManager18func_ov00_02084cfcEi kind:function(arm,size=0x1c) addr:0x2084cfc _ZN10MapManager17GetMapData_Unk_09Ev kind:function(arm,size=0xc) addr:0x2084d18 -_ZN10MapManager18func_ov00_02084d24Eiii kind:function(arm,size=0x28) addr:0x2084d24 +_ZN10MapManager18func_ov00_02084d24Eccs kind:function(arm,size=0x28) addr:0x2084d24 _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x2084d4c _ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x2084ebc _ZN10MapManager18func_ov00_02085108EPi kind:function(arm,size=0x174) addr:0x2085108 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 5ec6f277..6287e650 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -622,9 +622,9 @@ _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x20 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083f50 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2083fc4 _ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084028 -_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x2084040 -_ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x2084064 -_ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x208407c +_ZN10MapManager18func_ov00_020840a0Eccs kind:function(arm,size=0x24) addr:0x2084040 +_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x2084064 +_ZN10MapManager18func_ov00_020840dcEP5Vec2b kind:function(arm,size=0x24) addr:0x208407c _ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x20840a0 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x20840b4 _ZN10MapManager17GetMapData_Unk_4cEv kind:function(arm,size=0xc) addr:0x20840c0 @@ -672,7 +672,7 @@ _ZN10MapManager18func_ov00_02084cc8Ei kind:function(arm,size=0x1c) addr:0x2084c6 _ZN10MapManager18func_ov00_02084ce4Ei kind:function(arm,size=0x18) addr:0x2084c84 _ZN10MapManager18func_ov00_02084cfcEi kind:function(arm,size=0x1c) addr:0x2084c9c _ZN10MapManager17GetMapData_Unk_09Ev kind:function(arm,size=0xc) addr:0x2084cb8 -_ZN10MapManager18func_ov00_02084d24Eiii kind:function(arm,size=0x28) addr:0x2084cc4 +_ZN10MapManager18func_ov00_02084d24Eccs kind:function(arm,size=0x28) addr:0x2084cc4 _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x2084cec _ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x2084e5c _ZN10MapManager18func_ov00_02085108EPi kind:function(arm,size=0x174) addr:0x20850a8 diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 1750cc6b..06efee36 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -143,14 +143,14 @@ public: /* 68 */ virtual unk8 vfunc_68(Vec3p *param_1, bool param_2); /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); - /* 74 */ virtual s32 vfunc_74(Vec3p *param_2); - /* 78 */ virtual unk32 vfunc_78(bool *param_1); + /* 74 */ virtual s32 *vfunc_74(Vec3p *param_2); + /* 78 */ virtual unk32 *vfunc_78(Vec2b *param_1); /* 7c */ virtual s32 vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]); /* 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); + /* 90 */ virtual unk8 vfunc_90(Vec2b *param_2, unk32 param_3); /* 94 */ virtual void vfunc_94(); /* 98 */ virtual void vfunc_98(unk32 param_2, unk32 param_3, unk32 param_4); /* 9c */ virtual void vfunc_9c(); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 1d9c9dd4..870a9696 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -179,9 +179,9 @@ public: static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds); unk32 MapData_vfunc_54(Vec2b *a); - unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4); - unk32 MapData_vfunc_78(bool *param_1); - unk8 func_ov00_020840dc(); + unk32 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk16 param_4); + unk32 *MapData_vfunc_78(Vec2b *param_1); + unk8 func_ov00_020840dc(Vec2b *param_1); static unk8 func_ov00_02084100(unk32 *param_1, MapManager *param_2); u32 GetMapData_Unk_48(); unk32 GetMapData_Unk_4c(); @@ -229,7 +229,7 @@ public: void func_ov00_02084ce4(unk32 param_2); bool func_ov00_02084cfc(unk32 param_2); u8 GetMapData_Unk_09(); - void func_ov00_02084d24(unk32 param_2, unk32 param_3, unk32 param_4); + void func_ov00_02084d24(unk8 param_2, unk8 param_3, unk16 param_4); s32 func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4); unk32 func_ov00_02084ebc(Vec3p *param_2); s32 func_ov00_02085108(s32 *param_2); diff --git a/include/Map/MapOverworld.hpp b/include/Map/MapOverworld.hpp index 4ce6d91a..2fda60af 100644 --- a/include/Map/MapOverworld.hpp +++ b/include/Map/MapOverworld.hpp @@ -52,7 +52,7 @@ public: /* 5c */ virtual unk32 vfunc_5c() override; /* 60 */ virtual unk32 vfunc_60() override; /* 64 */ virtual unk32 vfunc_64() override; - /* 78 */ virtual unk32 vfunc_78() override; + /* 78 */ virtual unk32 *vfunc_78() override; /* 7c */ virtual unk32 vfunc_7c() override; /* 80 */ virtual unk32 vfunc_80() override; /* 94 */ virtual void vfunc_94() override; diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 8672e0de..6821df52 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -29,7 +29,7 @@ unk8 MapBase::func_ov00_0207e968() {} unk8 MapBase::func_ov00_0207e96c() {} unk8 MapBase::vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) {} unk32 MapBase::vfunc_70(Vec3p *param_2) {} -s32 MapBase::vfunc_74(Vec3p *param_2) {} +s32 *MapBase::vfunc_74(Vec3p *param_2) {} unk8 MapBase::func_ov00_0207f100() {} bool MapBase::func_ov00_0207f104(unk32 param_2, unk32 param_3) {} unk32 MapBase::func_ov00_0207f1f4(Vec3p *param_2, unk32 *param_3) {} @@ -40,12 +40,12 @@ void MapBase::vfunc_a0() {} unk32 MapBase::vfunc_a4(unk8 *param_1) {} void MapBase::vfunc_a8() {} void MapBase::vfunc_ac() {} -unk32 MapBase::vfunc_78(bool *param_1) {} +unk32 *MapBase::vfunc_78(Vec2b *param_1) {} s32 MapBase::vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]) {} unk32 MapBase::vfunc_80() {} void MapBase::vfunc_84(unk32 param_2) {} bool MapBase::func_ov00_0207f38c(s32 *param_2) {} -unk8 MapBase::vfunc_90(unk32 param_2, unk32 param_3, unk32 param_4) {} +unk8 MapBase::vfunc_90(Vec2b *param_2, unk32 param_3) {} void MapBase::vfunc_94() {} void MapBase::func_ov00_0207f4a4(Vec2s *param_2, unk32 param_3) {} void MapBase::func_ov00_0207f53c(Vec2s *param_1, MapBase *param_2, Vec3p *param_3) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 762bfd99..8164011e 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -6,6 +6,7 @@ #include "Actor/Actor.hpp" #include "Actor/ActorManager.hpp" #include "DTCM/UnkStruct_027e0d38.hpp" +#include "DTCM/UnkStruct_027e0fd4.hpp" #include "Player/PlayerBase.hpp" #include "Save/AdventureFlags.hpp" #include "stdio.h" @@ -1308,17 +1309,16 @@ ARM unk32 MapManager::MapData_vfunc_70(Vec3p *param_2) { } ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) { - s32 iVar1; + Vec4p *iVar1; s32 dVar2; - iVar1 = param_2->mMap->vfunc_74(param_3); - if (iVar1 != 0) { - // iVar1 += 0xc; - *param_1 = iVar1; + iVar1 = (Vec4p *) param_2->mMap->vfunc_74(param_3); + if (iVar1 != NULL) { + *param_1 = iVar1->w; return; } dVar2 = param_2->MapData_vfunc_70(param_3); - if (iVar1 != 0xffff) { + if (dVar2 != 0xffff) { func_ov000_02093a1c(param_1, data_027e0f6c); return; } @@ -1342,26 +1342,24 @@ unk32 MapManager::MapData_vfunc_54(Vec2b *param_1) { return this->mMap->vfunc_54(param_1); } -unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { - Vec2b local_8; - unk8 local_7; - unk16 uStack_6; - - uStack_6 = (unk16) ((u32) param_4 >> 0x10); - // _local_8 = CONCAT11(param_3, param_2); - this->MapData_vfunc_54(&local_8); +ARM unk32 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk16 param_4) { + // Correct param types? + Vec2b vec; + vec.x = param_2; + vec.y = param_3; + return this->mMap->vfunc_54(&vec); } -unk32 MapManager::MapData_vfunc_78(bool *param_1) { // bool* param placeholder for now, no way of knowing what the type is. +unk32 *MapManager::MapData_vfunc_78(Vec2b *param_1) { return this->mMap->vfunc_78(param_1); } -unk8 MapManager::func_ov00_020840dc() { - int *piVar1; +unk8 MapManager::func_ov00_020840dc(Vec2b *param_1) { + UnkStruct_027e0fd4 *piVar1; - piVar1 = (int *) this->MapData_vfunc_78(0); - if (piVar1 != (int *) 0x0) { - // (**(code **) (*piVar1 + 0x1c))(); // MapBase::func_ov00_0207f934() ?? + piVar1 = (UnkStruct_027e0fd4 *) this->MapData_vfunc_78(param_1); + if (piVar1 != NULL) { + piVar1->vfunc_1c(); } } @@ -1937,14 +1935,14 @@ u8 MapManager::GetMapData_Unk_09() { return this->mMap->mUnk_009; } -ARM void MapManager::func_ov00_02084d24(unk32 param_2, unk32 param_3, unk32 param_4) { - unk8 local_8 = param_2; - unk8 local_7 = param_3; - unk16 uStack_6; - - uStack_6 = (unk16) ((u32) param_4 >> 0x10); - // _local_8 = CONCAT11(param_3, param_2); - this->mMap->vfunc_90(param_2, param_3, param_4); +ARM void MapManager::func_ov00_02084d24(unk8 param_2, unk8 param_3, unk16 param_4) { + // Matches, but param types unsure. + // param_2 and param_3 aren't both part of a Vec2b * + // param_3 short or int? + Vec2b vec; + vec.x = param_2; + vec.y = param_3; + this->mMap->vfunc_90(&vec, param_4); } s32 MapManager::func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4) { @@ -2010,7 +2008,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { u32 uStack_14; this->func_ov00_02083a1c(auStack_18, this, param_2); - piVar1 = (int *) this->MapData_vfunc_78(0); + piVar1 = (int *) this->MapData_vfunc_78(auStack_18); if (piVar1 != (int *) 0x0) { // iVar2 = (**(code **) (*piVar1 + 0x1c))(); if (iVar2 < 0x39) { @@ -2119,7 +2117,7 @@ s32 MapManager::func_ov00_02085108(s32 *param_2) { uVar5 = (u32) local_39; if ((u32) local_3a <= (u32) local_39) { do { - piVar3 = (int *) puVar1->MapData_vfunc_78(0); + // piVar3 = (int *) puVar1->MapData_vfunc_78(); if ((piVar3 != (int *) 0x0) && ((piVar3[1] & 4U) != 0)) { iVar7 = piVar3[7]; iVar6 = piVar3[6]; @@ -2196,7 +2194,7 @@ s32 MapManager::func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *pa return 0; } for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) { - iVar4 = puVar2->MapData_vfunc_78(0); + // iVar4 = puVar2->MapData_vfunc_78(0); if (((iVar4 != 0) && ((*(u32 *) (iVar4 + 4) & 4) != 0)) && (iVar5 = func_ov000_0208b73c(iVar4, param_2), iVar5 != 0)) { @@ -2257,7 +2255,7 @@ s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *par local_30 = 0; for (; uVar1 = local_50, (int) local_48 <= (int) (u32) local_3b; local_48 = local_48 + 1) { for (; (int) uVar1 <= (int) uVar6; uVar1 = uVar1 + 1) { - iVar3 = gMapManager->MapData_vfunc_78(0); + // iVar3 = gMapManager->MapData_vfunc_78(0); if ((((iVar3 != 0) && ((*(u32 *) (iVar3 + 4) & 4) != 0)) && (iVar4 = Vec3p_Distance((Vec3p *) (iVar3 + 0x18), param_2), iVar4 < *param_3)) && (iVar5 = func_ov000_0208b7d0(iVar3, param_2), iVar5 != 0)) @@ -2282,7 +2280,7 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 Vec3p VStack_20; param_1->func_ov00_02083a1c(&local_28, param_1, param_2); - piVar1 = (int *) param_1->MapData_vfunc_78(0); + piVar1 = (int *) param_1->MapData_vfunc_78(&local_28); bVar5 = true; if (piVar1 != (int *) 0x0) { param_2->x = piVar1[6]; @@ -2401,11 +2399,11 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 void MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3) { s32 *piVar1; - unk8 auStack_10[4]; + Vec2b auStack_10[2]; // param_1->func_ov00_02083a1c(auStack_10, param_1, param_2); // Should auStack_10 be pointer type or not ? - piVar1 = (s32 *) param_1->MapData_vfunc_78(0); - if (piVar1 == (s32 *) 0x0) { + piVar1 = (unk32 *) param_1->MapData_vfunc_78(auStack_10); + if (piVar1 == (unk32 *) 0x0) { return; } // if (*(s32 *) PTR_UnkStruct_027e077c_overlay_d_0__020858ac == 1) { @@ -2447,7 +2445,7 @@ unk8 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 par if (iVar4 < 0) { iVar4 = -iVar4; } - if ((iVar4 < 0xce) && (piVar5 = (int *) param_1->MapData_vfunc_78(0), piVar5 != (int *) 0x0)) { + if ((iVar4 < 0xce) && (piVar5 = (int *) param_1->MapData_vfunc_78(&local_28), piVar5 != (int *) 0x0)) { // local_38 = (**(code **) (*piVar5 + 0x38))(piVar5, param_3); } } @@ -2479,7 +2477,7 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) { return -1; } this->func_ov00_02083a1c(auStack_2a, this, param_2); - piVar1 = (int *) this->MapData_vfunc_78(0); + piVar1 = (int *) this->MapData_vfunc_78(auStack_2a); if (piVar1 == (int *) 0x0) { return -1; } @@ -2497,7 +2495,7 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) { if (iVar2 == 0) { return -1; } - piVar1 = (int *) this->MapData_vfunc_78(0); + piVar1 = (int *) this->MapData_vfunc_78(aVStack_28); if (piVar1 != (int *) 0x0) { // iVar2 = (**(code **) (*piVar1 + 0x1c))(); if (0x38 < iVar2) { @@ -2539,7 +2537,7 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) { if (iVar2 == 0) { return -1; } - iVar2 = MapData_vfunc_78(0); // Same here. + // iVar2 = MapData_vfunc_78(0); // Same here. if ((iVar2 != 0) && (0 < *(s16 *) (iVar2 + 0xe))) { return 1; } @@ -2769,7 +2767,7 @@ unk8 MapManager::func_ov00_02086044(Vec3p *param_2, Vec3p *param_3, unk32 param_ return 1; } } - piVar9 = (int *) this->MapData_vfunc_78(0); + piVar9 = (int *) this->MapData_vfunc_78(&local_c6); if ((piVar9 != (int *) 0x0) /*&& (iVar8 = (**(code **) (*piVar9 + 0x58))(), iVar8 != 0)*/) { iStack_c0.x = param_3->x; iStack_c0.y = param_3->y; diff --git a/src/18_Overworld/Map/MapOverworld.cpp b/src/18_Overworld/Map/MapOverworld.cpp index e2c73db7..de9b727e 100644 --- a/src/18_Overworld/Map/MapOverworld.cpp +++ b/src/18_Overworld/Map/MapOverworld.cpp @@ -22,7 +22,7 @@ s32 MapOverworld::func_ov018_0215c380(u8 *param1) {} void MapOverworld::vfunc_bc() {} void MapOverworld::vfunc_98() {} void MapOverworld::vfunc_c0() {} -unk32 MapOverworld::vfunc_78() {} +unk32 *MapOverworld::vfunc_78() {} unk32 MapOverworld::vfunc_7c() {} unk32 MapOverworld::vfunc_80() {} void MapOverworld::vfunc_b0(unk32 param_2, unk32 param_3) {} From 2025fdf4604ba6db6391ab8354352b707c5a9359 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Mon, 21 Apr 2025 23:26:30 +0200 Subject: [PATCH 44/62] Restore usa overlay symbols --- config/eur/arm9/overlays/ov000/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/symbols.txt | 250 ++++++++++----------- config/usa/arm9/overlays/ov004/symbols.txt | 6 +- config/usa/arm9/overlays/ov015/symbols.txt | 8 +- include/Map/MapManager.hpp | 2 +- src/00_Core/Map/MapManager.cpp | 26 +-- 6 files changed, 147 insertions(+), 147 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index b1c0fe2b..638de37c 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -635,7 +635,7 @@ _ZN10MapManager18func_ov00_02084164EP5Vec2b kind:function(arm,size=0x1a8) addr:0 _ZN10MapManager17GetMapData_Unk_0aEv kind:function(arm,size=0xc) addr:0x208430c _ZN10MapManager17GetMapData_Unk_0bEv kind:function(arm,size=0xc) addr:0x2084318 _ZN10MapManager16MapData_vfunc_a4EPc kind:function(arm,size=0x18) addr:0x2084324 -_ZN10MapManager18func_ov00_0208433cEP5Vec3pS1_ kind:function(arm,size=0x60) addr:0x208433c +_ZN10MapManager18func_ov00_0208433cEP5Vec3pP5Vec2s kind:function(arm,size=0x60) addr:0x208433c _ZN10MapManager18func_ov00_0208439cEP5Vec2sP5Vec3p kind:function(arm,size=0x50) addr:0x208439c _ZN10MapManager18func_ov00_020843ecEPi kind:function(arm,size=0x2ac) addr:0x20843ec _ZN10MapManager17GetMapData_Unk_38Ev kind:function(arm,size=0xc) addr:0x2084698 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 6287e650..84b9f721 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -95,14 +95,14 @@ func_ov000_02078f80 kind:function(arm,size=0x2c) addr:0x2078f20 func_ov000_02078fac kind:function(arm,size=0x14) addr:0x2078f4c func_ov000_02078fc0 kind:function(arm,size=0x14) addr:0x2078f60 func_ov000_02078fd4 kind:function(arm,size=0x14) addr:0x2078f74 -_Z19func_ov000_02078fe8Pi kind:function(arm,size=0x14) addr:0x2078f88 +func_ov000_02078fe8 kind:function(arm,size=0x14) addr:0x2078f88 func_ov000_02078ffc kind:function(arm,size=0xc) addr:0x2078f9c func_ov000_02079008 kind:function(arm,size=0x1c) addr:0x2078fa8 func_ov000_02079024 kind:function(arm,size=0x128) addr:0x2078fc4 func_ov000_0207914c kind:function(arm,size=0x90) addr:0x20790ec func_ov000_020791dc kind:function(arm,size=0x30) addr:0x207917c -_Z19func_ov000_0207920cPiP5Vec3pS_S_ kind:function(arm,size=0x94) addr:0x20791ac -_Z19func_ov000_020792a0Piiii kind:function(arm,size=0x118) addr:0x2079240 +func_ov000_0207920c kind:function(arm,size=0x94) addr:0x20791ac +func_ov000_020792a0 kind:function(arm,size=0x118) addr:0x2079240 func_ov000_020793b8 kind:function(arm,size=0x18) addr:0x2079358 func_ov000_020793d0 kind:function(arm,size=0xa0) addr:0x2079370 func_ov000_02079470 kind:function(arm,size=0x210) addr:0x2079410 @@ -110,7 +110,7 @@ func_ov000_02079680 kind:function(arm,size=0xfc) addr:0x2079620 func_ov000_0207977c kind:function(arm,size=0xfc) addr:0x207971c func_ov000_02079878 kind:function(arm,size=0x20) addr:0x2079818 func_ov000_02079898 kind:function(arm,size=0x24) addr:0x2079838 -_Z19func_ov000_020798bcPii kind:function(arm,size=0x2c) addr:0x207985c +func_ov000_020798bc kind:function(arm,size=0x2c) addr:0x207985c func_ov000_020798e8 kind:function(arm,size=0x40) addr:0x2079888 func_ov000_02079928 kind:function(arm,size=0x124) addr:0x20798c8 func_ov000_02079a4c kind:function(arm,size=0x44) addr:0x20799ec @@ -283,7 +283,7 @@ _ZN6Course14GetMCSFilePathEiii kind:function(arm,size=0xf0) addr:0x207cc24 _ZN6Course14GetMRCFilePathEiii kind:function(arm,size=0xac) addr:0x207cd14 _ZN6Course18func_ov00_0207ce20EiiPci kind:function(arm,size=0x2c) addr:0x207cdc0 _ZN6Course18func_ov00_0207ce4cEiiiPci kind:function(arm,size=0x5b8) addr:0x207cdec -_ZN6Course18func_ov00_0207d404Eiiii kind:function(arm,size=0x78) addr:0x207d3a4 +_ZN6Course18func_ov00_0207d404Eiii kind:function(arm,size=0x78) addr:0x207d3a4 _ZN6Course22IsCurrentMapInMainGridEv kind:function(arm,size=0x14) addr:0x207d41c _ZN6Course12IsInMainGridEii kind:function(arm,size=0x54) addr:0x207d430 _ZN6Course15IsMapInMainGridEj kind:function(arm,size=0x34) addr:0x207d484 @@ -330,18 +330,18 @@ _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_0207e08cEPii kind:function(arm,size=0x64) addr:0x207e02c +_ZN7MapBase18func_ov00_0207e08cEii 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 _ZN7MapBase8vfunc_48Ev kind:function(arm,size=0x1c) addr:0x207e40c _ZN7MapBase8vfunc_50Ev kind:function(arm,size=0x8) addr:0x207e428 -_ZN7MapBase8vfunc_54EP5Vec2b kind:function(arm,size=0x8) addr:0x207e430 -_ZN7MapBase8vfunc_58EP5Vec2bi kind:function(arm,size=0x8) addr:0x207e438 +_ZN7MapBase8vfunc_54Ev kind:function(arm,size=0x8) addr:0x207e430 +_ZN7MapBase8vfunc_58Ev kind:function(arm,size=0x8) addr:0x207e438 _ZN7MapBase8vfunc_5cEv kind:function(arm,size=0x8) addr:0x207e440 -_ZN7MapBase8vfunc_60EPh kind:function(arm,size=0x8) addr:0x207e448 +_ZN7MapBase8vfunc_60Ev kind:function(arm,size=0x8) addr:0x207e448 _ZN7MapBase8vfunc_64Ev kind:function(arm,size=0x8) addr:0x207e450 -_ZN7MapBase8vfunc_68EP5Vec3pb kind:function(arm,size=0x488) addr:0x207e458 +_ZN7MapBase8vfunc_68Eii kind:function(arm,size=0x488) addr:0x207e458 _ZN7MapBase18func_ov00_0207e940EPc kind:function(arm,size=0x28) addr:0x207e8e0 _ZN7MapBase18func_ov00_0207e968Ev kind:function(arm,size=0x4) addr:0x207e908 _ZN7MapBase18func_ov00_0207e96cEv kind:function(arm,size=0x4) addr:0x207e90c @@ -355,14 +355,14 @@ _ZN7MapBase8vfunc_88Ev kind:function(arm,size=0x8) addr:0x207f2c4 _ZN7MapBase8vfunc_8cEv kind:function(arm,size=0x8) addr:0x207f2cc _ZN7MapBase8vfunc_9cEv kind:function(arm,size=0x4) addr:0x207f2d4 _ZN7MapBase8vfunc_a0Ev kind:function(arm,size=0x4) addr:0x207f2d8 -_ZN7MapBase8vfunc_a4EPc kind:function(arm,size=0x8) addr:0x207f2dc +_ZN7MapBase8vfunc_a4Ev kind:function(arm,size=0x8) addr:0x207f2dc _ZN7MapBase8vfunc_a8Ev kind:function(arm,size=0x4) addr:0x207f2e4 _ZN7MapBase8vfunc_acEv kind:function(arm,size=0x4) addr:0x207f2e8 -_ZN7MapBase8vfunc_78EPb kind:function(arm,size=0x8) addr:0x207f2ec -_ZN7MapBase8vfunc_7cEiPiiPs kind:function(arm,size=0x8) addr:0x207f2f4 +_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_0207f38cEPi kind:function(arm,size=0x38) addr:0x207f32c +_ZN7MapBase18func_ov00_0207f38cEi 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 @@ -406,14 +406,14 @@ _ZN7MapBase18func_ov00_0208008cEj kind:function(arm,size=0x10) addr:0x208002c _ZN7MapBase7AddExitEP4Exit kind:function(arm,size=0xa4) addr:0x208003c _ZN7MapBase18func_ov00_02080140EP4Exit kind:function(arm,size=0x1e4) addr:0x20800e0 _ZN12MapBase_Unk118func_ov00_02080324Eiii kind:function(arm,size=0x78) addr:0x20802c4 -_ZN7MapBase8FindExitEjP4Exit kind:function(arm,size=0xd0) addr:0x208033c +_ZN7MapBase8FindExitEiP4Exit kind:function(arm,size=0xd0) addr:0x208033c _ZN7MapBase18AddCameraViewpointEP15CameraViewpoint kind:function(arm,size=0xa4) addr:0x208040c _ZN7MapBase19FindViewpoint_Unk_4EcP15CameraViewpoint kind:function(arm,size=0xc0) addr:0x20804b0 _ZN7MapBase19FindViewpoint_Unk_0EiP15CameraViewpoint kind:function(arm,size=0xb8) addr:0x2080570 _ZN7MapBase19GetCurrentViewpointEP15CameraViewpointi kind:function(arm,size=0xf8) addr:0x2080628 _ZN7MapBase26GetCurrentViewpoint_Unk_00Ei kind:function(arm,size=0x54) addr:0x2080720 _ZN7MapBase8vfunc_b8Ev kind:function(arm,size=0x50) addr:0x2080774 -_ZN7MapBase18func_ov00_02080824EjPc kind:function(arm,size=0xac) addr:0x20807c4 +_ZN7MapBase18func_ov00_02080824Eii kind:function(arm,size=0xac) addr:0x20807c4 _ZN7MapBase10AddUnk_130Ei kind:function(arm,size=0xe8) addr:0x2080870 _ZN7MapBase18func_ov00_020809b8Ei kind:function(arm,size=0xc0) addr:0x2080958 _ZN7MapBase18func_ov00_02080a78EP5Vec3p kind:function(arm,size=0x58) addr:0x2080a18 @@ -421,7 +421,7 @@ _ZN12MapBase_Unk218func_ov00_02080ad0EPP11TriggerBaseS2_ kind:function(arm,size= _ZN7MapBase18func_ov00_02080b24EP5Vec2b kind:function(arm,size=0x1e4) addr:0x2080ac4 _ZN7MapBase18func_ov00_02080d08Ei kind:function(arm,size=0x6c) addr:0x2080ca8 _ZN7MapBase8vfunc_bcEv kind:function(arm,size=0x4) addr:0x2080d14 -_ZN7MapBase8vfunc_98Eiii kind:function(arm,size=0x4) addr:0x2080d18 +_ZN7MapBase8vfunc_98Ev kind:function(arm,size=0x4) addr:0x2080d18 _ZN7MapBase8vfunc_c0Ev kind:function(arm,size=0x4) addr:0x2080d1c _ZN7MapBase22TriggerOfType_vfunc_10Ei kind:function(arm,size=0x5c) addr:0x2080d20 _ZN11TriggerBase8vfunc_10Ev kind:function(arm,size=0x8) addr:0x2080d7c @@ -488,11 +488,11 @@ 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 -_ZN10MapManager24GetCourseDungeonProgressEP14CourseProgress kind:function(arm,size=0x10) addr:0x208208c +_ZN10MapManager18func_ov00_020820ecEPi kind:function(arm,size=0x10) addr:0x208208c _ZN10MapManager18func_ov00_020820fcEiii kind:function(arm,size=0x10) addr:0x208209c -_ZN10MapManager18func_ov00_0208210cEiPi kind:function(arm,size=0x200) addr:0x20820ac -_ZN10MapManager18func_ov00_0208230cEPi kind:function(arm,size=0x3c) addr:0x20822ac -_ZN10MapManager18func_ov00_02082348EPi kind:function(arm,size=0x5c) addr:0x20822e8 +_ZN10MapManager18func_ov00_0208210cEii kind:function(arm,size=0x200) addr:0x20820ac +_ZN10MapManager18func_ov00_0208230cEi 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 _ZN10MapManager18func_ov00_020823c4EPii kind:function(arm,size=0x10) addr:0x2082364 @@ -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_02082454EP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x20823f4 +_ZN10MapManager18func_ov00_02082454Eii 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 @@ -509,162 +509,162 @@ _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_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_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_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 _ZN10MapManager18func_ov00_02082680Eii kind:function(arm,size=0x20) addr:0x2082620 -_ZN10MapManager18func_ov00_020826a0Eii kind:function(arm,size=0x20) addr:0x2082640 +_ZN10MapManager18func_ov00_020826a0Eiii kind:function(arm,size=0x20) addr:0x2082640 _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_02082808Ei kind:function(arm,size=0xb8) addr:0x20827a8 -_ZN10MapManager16MapData_vfunc_7cEiPiiPs kind:function(arm,size=0x20) addr:0x2082860 -_ZN10MapManager16MapData_vfunc_84Ei kind:function(arm,size=0x18) addr:0x2082880 +_ZN10MapManager18func_ov00_02082808Ev 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 _ZN10MapManager18func_ov00_020828f8EPi kind:function(arm,size=0x10) addr:0x2082898 -_ZN10MapManager10GetNumMapsEv kind:function(arm,size=0xc) addr:0x20828a8 +_ZN10MapManager20GetCourseData_Unk_b0Ev 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 _ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x2082a94 _ZN10MapManager18func_ov00_02082b3cEi kind:function(arm,size=0x1cc) addr:0x2082adc _ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x2082ca8 -_ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x2082cc8 -_ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x2082cd4 +_ZN10MapManager20GetCourseData_Unk_1cEv kind:function(arm,size=0xc) addr:0x2082cc8 +_ZN10MapManager20GetCourseData_Unk_1dEv kind:function(arm,size=0xc) addr:0x2082cd4 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x2082ce0 _ZN10MapManager18func_ov00_02082d74Ei kind:function(arm,size=0x10) addr:0x2082d14 -_ZN10MapManager18func_ov00_02082d84EPcPiS1_ kind:function(arm,size=0x98) addr:0x2082d24 +_ZN10MapManager18func_ov00_02082d84Ev kind:function(arm,size=0x98) addr:0x2082d24 _ZN10MapManager18func_ov00_02082e1cEPiS0_ kind:function(arm,size=0x250) addr:0x2082dbc -_ZN10MapManager18func_ov00_0208306cEPiS0_ kind:function(arm,size=0xf0) addr:0x208300c +_ZN10MapManager18func_ov00_0208306cEv kind:function(arm,size=0xf0) addr:0x208300c _ZN10MapManager18func_ov00_0208315cEPiS0_ kind:function(arm,size=0xe8) addr:0x20830fc _ZN10MapManager18func_ov00_02083244EjPiS0_S0_ kind:function(arm,size=0x54) addr:0x20831e4 -_ZN10MapManager18func_ov00_02083298EjP5Vec3pPiS2_ kind:function(arm,size=0x74) addr:0x2083238 +_ZN10MapManager18func_ov00_02083298EjPiS0_S0_ kind:function(arm,size=0x74) addr:0x2083238 _ZN10MapManager21GetCourseData_Unk_25cEv kind:function(arm,size=0xc) addr:0x20832ac -_ZN10MapManager15IsMapInMainGridEj kind:function(arm,size=0x10) addr:0x20832b8 +_ZN10MapManager18func_ov00_02083318Ei 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 -_ZN10MapManager11GetMapWidthEv kind:function(arm,size=0xc) addr:0x20832fc -_ZN10MapManager12GetMapHeightEv kind:function(arm,size=0xc) addr:0x2083308 +_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 _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 _ZN10MapManager13GetCourseMinZEv kind:function(arm,size=0xc) addr:0x2083340 _ZN10MapManager13GetCourseMaxXEv kind:function(arm,size=0xc) addr:0x208334c _ZN10MapManager13GetCourseMaxZEv kind:function(arm,size=0xc) addr:0x2083358 -_ZN10MapManager10GetMapMinXEv kind:function(arm,size=0xc) addr:0x2083364 -_ZN10MapManager10GetMapMinZEv kind:function(arm,size=0xc) addr:0x2083370 -_ZN10MapManager10GetMapMaxXEv kind:function(arm,size=0xc) addr:0x208337c -_ZN10MapManager10GetMapMaxZEv kind:function(arm,size=0xc) addr:0x2083388 -_ZN10MapManager13GetMapCenterXEv kind:function(arm,size=0xc) addr:0x2083394 -_ZN10MapManager13GetMapCenterZEv kind:function(arm,size=0xc) addr:0x20833a0 -_ZN10MapManager15GetMapMinBoundsEP5Vec3p kind:function(arm,size=0x20) addr:0x20833ac -_ZN10MapManager15GetMapMaxBoundsEP5Vec3p kind:function(arm,size=0x20) addr:0x20833cc -_ZN10MapManager12GetMapCenterEP5Vec3p kind:function(arm,size=0x20) addr:0x20833ec +_ZN10MapManager18func_ov00_020833c4Ev kind:function(arm,size=0xc) addr:0x2083364 +_ZN10MapManager18func_ov00_020833d0Ev kind:function(arm,size=0xc) addr:0x2083370 +_ZN10MapManager18func_ov00_020833dcEv kind:function(arm,size=0xc) addr:0x208337c +_ZN10MapManager18func_ov00_020833e8Ev kind:function(arm,size=0xc) addr:0x2083388 +_ZN10MapManager18Get_MapData_Unk_d0Ev kind:function(arm,size=0xc) addr:0x2083394 +_ZN10MapManager18Get_MapData_Unk_d8Ev kind:function(arm,size=0xc) addr:0x20833a0 +_ZN10MapManager17GetMapData_Unk_dcEP5Vec3p kind:function(arm,size=0x20) addr:0x20833ac +_ZN10MapManager17GetMapData_Unk_e8EP5Vec3p kind:function(arm,size=0x20) addr:0x20833cc +_ZN10MapManager17GetMapData_Unk_d0EP5Vec3p kind:function(arm,size=0x20) addr:0x20833ec _ZN10MapManager18func_ov00_0208346cEP4AABB kind:function(arm,size=0x50) addr:0x208340c _ZN10MapManager18func_ov00_020834bcEP5Vec3pii kind:function(arm,size=0x68) addr:0x208345c _ZN10MapManager18func_ov00_02083524EP5Vec3pii kind:function(arm,size=0x3c) addr:0x20834c4 -_ZN10MapManager18func_ov00_02083560EP5Vec2bPS_j kind:function(arm,size=0x10) addr:0x2083500 +_ZN10MapManager18func_ov00_02083560EiPS_j kind:function(arm,size=0x10) addr:0x2083500 _ZN10MapManager18func_ov00_02083570Eii kind:function(arm,size=0x18) addr:0x2083510 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x2083528 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x2083544 _ZN10MapManager18func_ov00_020835b4Ev kind:function(arm,size=0x10) addr:0x2083554 _ZN10MapManager18func_ov00_020835c4Eii kind:function(arm,size=0x20) addr:0x2083564 -_ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x2083584 +_ZN10MapManager18func_ov00_020835e4EiPiS0_ kind:function(arm,size=0x10) addr:0x2083584 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x2083594 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x20835a4 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x20835b4 -_ZN10MapManager14GetEntrancePosEP8Entrancei kind:function(arm,size=0x40) addr:0x20835c4 -_ZN10MapManager18func_ov00_02083664EP8Entrancei kind:function(arm,size=0x58) addr:0x2083604 -_ZN10MapManager21GetTriggerBoundingBoxEiP4AABB kind:function(arm,size=0x10) addr:0x208365c -_ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x208366c -_ZN10MapManager18func_ov00_020836dcEjj kind:function(arm,size=0x94) addr:0x208367c -_ZN10MapManager23IsTriggerTypeOverlappedEjP5Vec3p kind:function(arm,size=0x10) addr:0x2083710 -_ZN10MapManager21GetOverlappingTriggerEP5Vec3p kind:function(arm,size=0x10) addr:0x2083720 +_ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x20835c4 +_ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083604 +_ZN10MapManager18func_ov00_020836bcEjPi kind:function(arm,size=0x10) addr:0x208365c +_ZN10MapManager23GetTriggerBoundingBoxesEjP4AABBj kind:function(arm,size=0x10) addr:0x208366c +_ZN10MapManager18func_ov00_020836dcEii kind:function(arm,size=0x94) addr:0x208367c +_ZN10MapManager18func_ov00_02083770Eji kind:function(arm,size=0x10) addr:0x2083710 +_ZN10MapManager18func_ov00_02083780Ei kind:function(arm,size=0x10) addr:0x2083720 _ZN10MapManager18func_ov00_02083790Ei kind:function(arm,size=0xb0) addr:0x2083730 _ZN10MapManager18func_ov00_02083840Ei kind:function(arm,size=0x88) addr:0x20837e0 -_ZN10MapManager10AddTriggerEi kind:function(arm,size=0x10) addr:0x2083868 +_ZN10MapManager18func_ov00_020838c8Ei kind:function(arm,size=0x10) addr:0x2083868 _ZN10MapManager18func_ov00_020838d8Ei kind:function(arm,size=0x10) addr:0x2083878 -_ZN10MapManager8FindExitEjP4Exit kind:function(arm,size=0x10) addr:0x2083888 -_ZN10MapManager18func_ov00_020838f8EP4Exit kind:function(arm,size=0x10) addr:0x2083898 -_ZN10MapManager18func_ov00_02083908EcP15CameraViewpoint kind:function(arm,size=0x10) addr:0x20838a8 -_ZN10MapManager18func_ov00_02083918EiP15CameraViewpoint kind:function(arm,size=0x10) addr:0x20838b8 -_ZN10MapManager19GetCurrentViewpointEP15CameraViewpointi kind:function(arm,size=0x10) addr:0x20838c8 +_ZN10MapManager18func_ov00_020838e8EjPi kind:function(arm,size=0x10) addr:0x2083888 +_ZN10MapManager18func_ov00_020838f8EPi kind:function(arm,size=0x10) addr:0x2083898 +_ZN10MapManager18func_ov00_02083908EcPi kind:function(arm,size=0x10) addr:0x20838a8 +_ZN10MapManager18func_ov00_02083918EiPi kind:function(arm,size=0x10) addr:0x20838b8 +_ZN10MapManager18func_ov00_02083928EPci kind:function(arm,size=0x10) addr:0x20838c8 _ZN10MapManager18func_ov00_02083938Ei kind:function(arm,size=0x10) addr:0x20838d8 -_ZN10MapManager21SetCurrentViewpointIdEci kind:function(arm,size=0x10) addr:0x20838e8 +_ZN10MapManager18Set_MapData_Unk_16Eci kind:function(arm,size=0x10) addr:0x20838e8 _ZN10MapManager18func_ov00_02083958Ei kind:function(arm,size=0x10) addr:0x20838f8 _ZN10MapManager18func_ov00_02083968EjPc kind:function(arm,size=0x10) addr:0x2083908 -_ZN10MapManager18func_ov00_02083978EP5Vec3pS1_ kind:function(arm,size=0x3c) addr:0x2083918 +_ZN10MapManager18func_ov00_02083978EiP5Vec3p kind:function(arm,size=0x3c) addr:0x2083918 _ZN10MapManager18func_ov00_020839b4Ei kind:function(arm,size=0x10) addr:0x2083954 _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x2083964 -_ZN10MapManager18func_ov00_020839d4Ei kind:function(arm,size=0x24) addr:0x2083974 -_ZN10MapManager18func_ov00_020839f8Ei kind:function(arm,size=0x24) addr:0x2083998 -_ZN10MapManager18fun_ZN10MapManager18func_ov00_02083a1cEP5Vec2bPS_P5Vec3pc_ov00_02083a1cEPiPS_P5Vec3p kind:function(arm,size=0x38) addr:0x20839bc -_ZN10MapManager18func_ov00_02083a54EPhPS_PiiS2_ kind:function(arm,size=0x130) addr:0x20839f4 -_ZN10MapManager13GetTileStartXEi kind:function(arm,size=0x28) addr:0x2083b24 -_ZN10MapManager13GetTileStartZEi kind:function(arm,size=0x28) addr:0x2083b4c -_ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x2083b74 -_ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x2083b9c +_ZN10MapManager18func_ov00_020839d4Ev kind:function(arm,size=0x24) addr:0x2083974 +_ZN10MapManager18func_ov00_020839f8Ev kind:function(arm,size=0x24) addr:0x2083998 +_ZN10MapManager18func_ov00_02083a1cEiPS_P5Vec3p kind:function(arm,size=0x38) addr:0x20839bc +_ZN10MapManager18func_ov00_02083a54EiPS_iii kind:function(arm,size=0x130) addr:0x20839f4 +_ZN10MapManager18func_ov00_02083b84Ev kind:function(arm,size=0x28) addr:0x2083b24 +_ZN10MapManager18func_ov00_02083bacEv kind:function(arm,size=0x28) addr:0x2083b4c +_ZN10MapManager18func_ov00_02083bd4Ev kind:function(arm,size=0x28) addr:0x2083b74 +_ZN10MapManager18func_ov00_02083bfcEv kind:function(arm,size=0x28) addr:0x2083b9c _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083bc4 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083bf0 -_ZN10MapManager18func_ov00_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c1c -_ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083c88 +_ZN10MapManager18func_ov00_02083c7cEP5Vec3pi kind:function(arm,size=0x6c) addr:0x2083c1c +_ZN10MapManager18func_ov00_02083ce8Ecccci kind:function(arm,size=0x14c) addr:0x2083c88 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083dd4 -_ZN10MapManager16MapData_vfunc_60EPh kind:function(arm,size=0x18) addr:0x2083df8 +_ZN10MapManager16MapData_vfunc_60Ev kind:function(arm,size=0x18) addr:0x2083df8 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e10 -_ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x2083e80 -_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083e98 +_ZN10MapManager16MapData_vfunc_68Ev kind:function(arm,size=0x18) addr:0x2083e80 +_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_i kind:function(arm,size=0x4c) addr:0x2083e98 _ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083ee4 -_ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f20 -_ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f38 +_ZN10MapManager16MapData_vfunc_6cEv kind:function(arm,size=0x18) addr:0x2083f20 +_ZN10MapManager16MapData_vfunc_70Ev kind:function(arm,size=0x18) addr:0x2083f38 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083f50 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2083fc4 -_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084028 -_ZN10MapManager18func_ov00_020840a0Eccs kind:function(arm,size=0x24) addr:0x2084040 -_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x2084064 -_ZN10MapManager18func_ov00_020840dcEP5Vec2b kind:function(arm,size=0x24) addr:0x208407c -_ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x20840a0 +_ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084028 +_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x2084040 +_ZN10MapManager16MapData_vfunc_78Ev kind:function(arm,size=0x18) addr:0x2084064 +_ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x208407c +_ZN10MapManager18func_ov00_02084100EiPS_ kind:function(arm,size=0x14) addr:0x20840a0 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x20840b4 _ZN10MapManager17GetMapData_Unk_4cEv kind:function(arm,size=0xc) addr:0x20840c0 _ZN10MapManager18func_ov00_0208412cEv kind:function(arm,size=0x10) addr:0x20840cc _ZN10MapManager18func_ov00_0208413cEi kind:function(arm,size=0x10) addr:0x20840dc -_ZN10MapManager16MapData_vfunc_58EP5Vec2bi kind:function(arm,size=0x18) addr:0x20840ec -_ZN10MapManager18func_ov00_02084164EP5Vec2b kind:function(arm,size=0x1a8) addr:0x2084104 +_ZN10MapManager16MapData_vfunc_58Ev kind:function(arm,size=0x18) addr:0x20840ec +_ZN10MapManager18func_ov00_02084164Ev kind:function(arm,size=0x1a8) addr:0x2084104 _ZN10MapManager17GetMapData_Unk_0aEv kind:function(arm,size=0xc) addr:0x20842ac _ZN10MapManager17GetMapData_Unk_0bEv kind:function(arm,size=0xc) addr:0x20842b8 -_ZN10MapManager16MapData_vfunc_a4EPc kind:function(arm,size=0x18) addr:0x20842c4 -_ZN10MapManager18func_ov00_0208433cEP5Vec3pS1_ kind:function(arm,size=0x60) addr:0x20842dc -_ZN10MapManager18func_ov00_0208439cEP5Vec2sP5Vec3p kind:function(arm,size=0x50) addr:0x208433c +_ZN10MapManager16MapData_vfunc_a4Ev kind:function(arm,size=0x18) addr:0x20842c4 +_ZN10MapManager18func_ov00_0208433cEP5Vec3pi kind:function(arm,size=0x60) addr:0x20842dc +_ZN10MapManager18func_ov00_0208439cEv kind:function(arm,size=0x50) addr:0x208433c _ZN10MapManager18func_ov00_020843ecEPi kind:function(arm,size=0x2ac) addr:0x208438c _ZN10MapManager17GetMapData_Unk_38Ev kind:function(arm,size=0xc) addr:0x2084638 _ZN10MapManager18func_ov00_020846a4Ev kind:function(arm,size=0x5c) addr:0x2084644 -_ZN10MapManager18func_ov00_02084700EPS_ kind:function(arm,size=0x40) addr:0x20846a0 +_ZN10MapManager18func_ov00_02084700Ev kind:function(arm,size=0x40) addr:0x20846a0 _ZN10MapManager18func_ov00_02084740Ev kind:function(arm,size=0xa0) addr:0x20846e0 _ZN10MapManager18func_ov00_020847e0Ev kind:function(arm,size=0x10) addr:0x2084780 _ZN10MapManager18func_ov00_020847f0Ev kind:function(arm,size=0x48) addr:0x2084790 _ZN10MapManager18func_ov00_02084838Ev kind:function(arm,size=0x80) addr:0x20847d8 _ZN10MapManager18func_ov00_020848b8Ev kind:function(arm,size=0x6c) addr:0x2084858 _ZN10MapManager18func_ov00_02084924Ej kind:function(arm,size=0x10) addr:0x20848c4 -_ZN10MapManager18func_ov00_02084934EP5Vec3p kind:function(arm,size=0x50) addr:0x20848d4 +_ZN10MapManager18func_ov00_02084934Ev kind:function(arm,size=0x50) addr:0x20848d4 _ZN10MapManager17GetMapData_Unk_06Ev kind:function(arm,size=0xc) addr:0x2084924 _ZN10MapManager17GetMapData_Unk_07Ev kind:function(arm,size=0xc) addr:0x2084930 _ZN10MapManager18func_ov00_0208499cEv kind:function(arm,size=0x24) addr:0x208493c _ZN10MapManager18func_ov00_020849c0Ev kind:function(arm,size=0x1c) addr:0x2084960 _ZN10MapManager18func_ov00_020849dcEv kind:function(arm,size=0x1c) addr:0x208497c -_ZN10MapManager18func_ov00_020849f8Ev kind:function(arm,size=0x58) addr:0x2084998 +_ZN10MapManager18func_ov00_020849f8Ei kind:function(arm,size=0x58) addr:0x2084998 _ZN10MapManager18func_ov00_02084a50Ev kind:function(arm,size=0xc) addr:0x20849f0 _ZN10MapManager8SpawnNPCEP5Vec3pii kind:function(arm,size=0x68) addr:0x20849fc _ZN10MapManager18func_ov00_02084ac4Ej kind:function(arm,size=0x44) addr:0x2084a64 _ZN10MapManager10SetNumKeysEi kind:function(arm,size=0xc) addr:0x2084aa8 _ZN10MapManager10GetNumKeysEv kind:function(arm,size=0xc) addr:0x2084ab4 -_ZN10MapManager15SetBlueWarpOpenEb kind:function(arm,size=0xc) addr:0x2084ac0 -_ZN10MapManager15GetBlueWarpOpenEv kind:function(arm,size=0xc) addr:0x2084acc +_ZN10MapManager21SetCourseData_Unk_25cEc kind:function(arm,size=0xc) addr:0x2084ac0 +_ZN10MapManager21GetCourseData_Unk_25dEv kind:function(arm,size=0xc) addr:0x2084acc _ZN10MapManager18func_ov00_02084b38Eiii kind:function(arm,size=0xa8) addr:0x2084ad8 -_ZN10MapManager18func_ov00_02084be0Eji kind:function(arm,size=0x7c) addr:0x2084b80 -_ZN10MapManager15SetMapDataFlag1Eib kind:function(arm,size=0x10) addr:0x2084bfc -_ZN10MapManager15GetMapDataFlag1Ei kind:function(arm,size=0x10) addr:0x2084c0c +_ZN10MapManager18func_ov00_02084be0Eii kind:function(arm,size=0x7c) addr:0x2084b80 +_ZN10MapManager18func_ov00_02084c5cEii kind:function(arm,size=0x10) addr:0x2084bfc +_ZN10MapManager18func_ov00_02084c6cEi kind:function(arm,size=0x10) addr:0x2084c0c _ZN10MapManager18func_ov00_02084c7cEi kind:function(arm,size=0x18) addr:0x2084c1c _ZN10MapManager18func_ov00_02084c94Ei kind:function(arm,size=0x1c) addr:0x2084c34 _ZN10MapManager18func_ov00_02084cb0Ei kind:function(arm,size=0x18) addr:0x2084c50 @@ -672,18 +672,18 @@ _ZN10MapManager18func_ov00_02084cc8Ei kind:function(arm,size=0x1c) addr:0x2084c6 _ZN10MapManager18func_ov00_02084ce4Ei kind:function(arm,size=0x18) addr:0x2084c84 _ZN10MapManager18func_ov00_02084cfcEi kind:function(arm,size=0x1c) addr:0x2084c9c _ZN10MapManager17GetMapData_Unk_09Ev kind:function(arm,size=0xc) addr:0x2084cb8 -_ZN10MapManager18func_ov00_02084d24Eccs kind:function(arm,size=0x28) addr:0x2084cc4 +_ZN10MapManager18func_ov00_02084d24Ecci kind:function(arm,size=0x28) addr:0x2084cc4 _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x2084cec -_ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x2084e5c +_ZN10MapManager18func_ov00_02084ebcEi kind:function(arm,size=0x24c) addr:0x2084e5c _ZN10MapManager18func_ov00_02085108EPi kind:function(arm,size=0x174) addr:0x20850a8 -_ZN10MapManager18func_ov00_0208527cEPS_iPi kind:function(arm,size=0x180) addr:0x208521c -_ZN10MapManager18func_ov00_020853fcEPS_P5Vec3pPi kind:function(arm,size=0x198) addr:0x208539c -_ZN10MapManager18func_ov00_02085594EPS_P5Vec3pii kind:function(arm,size=0x2a8) addr:0x2085534 -_ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) addr:0x20857dc -_ZN10MapManager18func_ov00_020858b0EPS_P5Vec3pi kind:function(arm,size=0x184) addr:0x2085850 -_ZN10MapManager18func_ov00_02085a34EP5Vec3pi kind:function(arm,size=0x22c) addr:0x20859d4 -_ZN10MapManager18func_ov00_02085c60EP5Vec3pPiS2_j kind:function(arm,size=0x3e4) addr:0x2085c00 -_ZN10MapManager18func_ov00_02086044EP5Vec3pS1_i kind:function(arm,size=0x240) addr:0x2085fe4 +_ZN10MapManager18func_ov00_0208527cEv kind:function(arm,size=0x180) addr:0x208521c +_ZN10MapManager18func_ov00_020853fcEv kind:function(arm,size=0x198) addr:0x208539c +_ZN10MapManager18func_ov00_02085594Ev kind:function(arm,size=0x2a8) addr:0x2085534 +_ZN10MapManager18func_ov00_0208583cEiP5Vec3pi kind:function(arm,size=0x74) addr:0x20857dc +_ZN10MapManager18func_ov00_020858b0Ev kind:function(arm,size=0x184) addr:0x2085850 +_ZN10MapManager18func_ov00_02085a34Eii kind:function(arm,size=0x22c) addr:0x20859d4 +_ZN10MapManager18func_ov00_02085c60Eiiii kind:function(arm,size=0x3e4) addr:0x2085c00 +_ZN10MapManager18func_ov00_02086044Eiii kind:function(arm,size=0x240) addr:0x2085fe4 _ZN10MapManager18func_ov00_02086284EPiP5Vec3pS2_itS2_S2_ kind:function(arm,size=0x800) addr:0x2086224 _ZN10MapManager18func_ov00_02086a84EPiP5Vec3pS2_iiiS2_S2_ kind:function(arm,size=0x24c) addr:0x2086a24 func_ov000_02086cd0 kind:function(arm,size=0x4) addr:0x2086c70 @@ -720,12 +720,12 @@ func_ov000_02087f08 kind:function(arm,size=0x18) addr:0x2087ea8 func_ov000_02087f20 kind:function(arm,size=0xa0) addr:0x2087ec0 func_ov000_02087fc0 kind:function(arm,size=0x20) addr:0x2087f60 func_ov000_02087fe0 kind:function(arm,size=0x20) addr:0x2087f80 -_Z19func_ov000_02088000ii kind:function(arm,size=0x10) addr:0x2087fa0 +func_ov000_02088000 kind:function(arm,size=0x10) addr:0x2087fa0 func_ov000_02088010 kind:function(arm,size=0x64) addr:0x2087fb0 func_ov000_02088074 kind:function(arm,size=0x84) addr:0x2088014 func_ov000_020880f8 kind:function(arm,size=0x38) addr:0x2088098 -_Z19func_ov000_02088130Phi kind:function(arm,size=0x14) addr:0x20880d0 -_Z19func_ov000_02088144Phi kind:function(arm,size=0x14) addr:0x20880e4 +func_ov000_02088130 kind:function(arm,size=0x14) addr:0x20880d0 +func_ov000_02088144 kind:function(arm,size=0x14) addr:0x20880e4 func_ov000_02088158 kind:function(arm,size=0x44) addr:0x20880f8 func_ov000_0208819c kind:function(arm,size=0x58) addr:0x208813c func_ov000_020881f4 kind:function(arm,size=0x50) addr:0x2088194 @@ -779,7 +779,7 @@ func_ov000_0208aed8 kind:function(arm,size=0x244) addr:0x208ae78 func_ov000_0208b11c kind:function(arm,size=0x20) addr:0x208b0bc func_ov000_0208b13c kind:function(arm,size=0x1c) addr:0x208b0dc func_ov000_0208b158 kind:function(arm,size=0x28) addr:0x208b0f8 -_Z19func_ov000_0208b180Pi kind:function(arm,size=0x28) addr:0x208b120 +func_ov000_0208b180 kind:function(arm,size=0x28) addr:0x208b120 func_ov000_0208b1a8 kind:function(arm,size=0x28) addr:0x208b148 func_ov000_0208b1d0 kind:function(arm,size=0x28) addr:0x208b170 func_ov000_0208b1f8 kind:function(arm,size=0x28) addr:0x208b198 @@ -811,10 +811,10 @@ func_ov000_0208b70c kind:function(arm,size=0x4) addr:0x208b6ac func_ov000_0208b710 kind:function(arm,size=0x4) addr:0x208b6b0 func_ov000_0208b714 kind:function(arm,size=0x8) addr:0x208b6b4 func_ov000_0208b71c kind:function(arm,size=0x20) addr:0x208b6bc -_Z19func_ov000_0208b73cii kind:function(arm,size=0x60) addr:0x208b6dc +func_ov000_0208b73c kind:function(arm,size=0x60) addr:0x208b6dc func_ov000_0208b79c kind:function(arm,size=0x34) addr:0x208b73c -_Z19func_ov000_0208b7d0iP5Vec3p kind:function(arm,size=0x34) addr:0x208b770 -_Z19func_ov000_0208b804PiP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x208b7a4 +func_ov000_0208b7d0 kind:function(arm,size=0x34) addr:0x208b770 +func_ov000_0208b804 kind:function(arm,size=0x40) addr:0x208b7a4 func_ov000_0208b844 kind:function(arm,size=0x2c) addr:0x208b7e4 func_ov000_0208b870 kind:function(arm,size=0x2c) addr:0x208b810 func_ov000_0208b89c kind:function(arm,size=0x44) addr:0x208b83c @@ -861,7 +861,7 @@ func_ov000_0208cb84 kind:function(arm,size=0x4c) addr:0x208cb24 func_ov000_0208cbd0 kind:function(arm,size=0x84) addr:0x208cb70 func_ov000_0208cc54 kind:function(arm,size=0x10) addr:0x208cbf4 func_ov000_0208cc64 kind:function(arm,size=0x24) addr:0x208cc04 -_Z19func_ov000_0208cc88Pi kind:function(arm,size=0x54) addr:0x208cc28 +func_ov000_0208cc88 kind:function(arm,size=0x54) addr:0x208cc28 func_ov000_0208ccdc kind:function(arm,size=0x10) addr:0x208cc7c func_ov000_0208ccec kind:function(arm,size=0x10) addr:0x208cc8c func_ov000_0208ccfc kind:function(arm,size=0x10) addr:0x208cc9c @@ -878,8 +878,8 @@ func_ov000_0208d310 kind:function(arm,size=0xec) addr:0x208d2b0 func_ov000_0208d3fc kind:function(arm,size=0x98) addr:0x208d39c func_ov000_0208d494 kind:function(arm,size=0x14c) addr:0x208d434 func_ov000_0208d5e0 kind:function(arm,size=0x40) addr:0x208d580 -_Z19func_ov000_0208d620Pi kind:function(arm,size=0x60) addr:0x208d5c0 -_Z19func_ov000_0208d680Pi kind:function(arm,size=0x60) addr:0x208d620 +func_ov000_0208d620 kind:function(arm,size=0x60) addr:0x208d5c0 +func_ov000_0208d680 kind:function(arm,size=0x60) addr:0x208d620 func_ov000_0208d6e0 kind:function(arm,size=0x140) addr:0x208d680 func_ov000_0208d820 kind:function(arm,size=0x110) addr:0x208d7c0 func_ov000_0208d930 kind:function(arm,size=0xb0) addr:0x208d8d0 @@ -901,7 +901,7 @@ func_ov000_0208def0 kind:function(arm,size=0x14) addr:0x208de90 func_ov000_0208df04 kind:function(arm,size=0x28) addr:0x208dea4 func_ov000_0208df2c kind:function(arm,size=0x48) addr:0x208decc func_ov000_0208df74 kind:function(arm,size=0x4) addr:0x208df14 -_Z19func_ov000_0208df78PiiiP5Vec3pS_ kind:function(arm,size=0x250) addr:0x208df18 +func_ov000_0208df78 kind:function(arm,size=0x250) addr:0x208df18 func_ov000_0208e1c8 kind:function(arm,size=0x208) addr:0x208e168 func_ov000_0208e3d0 kind:function(arm,size=0x4c) addr:0x208e370 func_ov000_0208e41c kind:function(arm,size=0x4) addr:0x208e3bc @@ -1091,7 +1091,7 @@ func_ov000_0209394c kind:function(arm,size=0xc) addr:0x20938ec func_ov000_02093958 kind:function(arm,size=0x10) addr:0x20938f8 func_ov000_02093968 kind:function(arm,size=0x78) addr:0x2093908 func_ov000_020939e0 kind:function(arm,size=0x3c) addr:0x2093980 -_Z19func_ov000_02093a1cPjPi kind:function(arm,size=0x20) addr:0x20939bc +func_ov000_02093a1c kind:function(arm,size=0x20) addr:0x20939bc func_ov000_02093a3c kind:function(arm,size=0x10) addr:0x20939dc func_ov000_02093a4c kind:function(arm,size=0x10) addr:0x20939ec func_ov000_02093a5c kind:function(arm,size=0x94) addr:0x20939fc @@ -1235,8 +1235,8 @@ func_ov000_02095fe0 kind:function(arm,size=0x180) addr:0x2095f80 func_ov000_02096160 kind:function(arm,size=0x98) addr:0x2096100 func_ov000_020961f8 kind:function(arm,size=0x24) addr:0x2096198 func_ov000_0209621c kind:function(arm,size=0x108) addr:0x20961bc -_Z19func_ov000_02096324Pii kind:function(arm,size=0xf4) addr:0x20962c4 -_Z19func_ov000_02096418Pi kind:function(arm,size=0xb4) addr:0x20963b8 +func_ov000_02096324 kind:function(arm,size=0xf4) addr:0x20962c4 +func_ov000_02096418 kind:function(arm,size=0xb4) addr:0x20963b8 func_ov000_020964cc kind:function(arm,size=0xf4) addr:0x209646c func_ov000_020965c0 kind:function(arm,size=0x1ec) addr:0x2096560 func_ov000_020967ac kind:function(arm,size=0x250) addr:0x209674c @@ -1457,7 +1457,7 @@ func_ov000_0209d550 kind:function(arm,size=0x14) addr:0x209d4f0 func_ov000_0209d564 kind:function(arm,size=0x16c) addr:0x209d504 func_ov000_0209d6d0 kind:function(arm,size=0x4) addr:0x209d670 func_ov000_0209d6d4 kind:function(arm,size=0x14) addr:0x209d674 -_Z19func_ov000_0209d6e8ii kind:function(arm,size=0x28) addr:0x209d688 +func_ov000_0209d6e8 kind:function(arm,size=0x28) addr:0x209d688 func_ov000_0209d710 kind:function(arm,size=0xc) addr:0x209d6b0 func_ov000_0209d71c kind:function(arm,size=0xc) addr:0x209d6bc func_ov000_0209d728 kind:function(arm,size=0x10) addr:0x209d6c8 @@ -1783,7 +1783,7 @@ func_ov000_020a5d50 kind:function(arm,size=0xc) addr:0x20a5cf0 func_ov000_020a5d5c kind:function(arm,size=0x18) addr:0x20a5cfc func_ov000_020a5d74 kind:function(arm,size=0x94) addr:0x20a5d14 func_ov000_020a5e08 kind:function(arm,size=0x94) addr:0x20a5da8 -_Z19func_ov000_020a5e9cPi kind:function(arm,size=0x5c) addr:0x20a5e3c +func_ov000_020a5e9c kind:function(arm,size=0x5c) addr:0x20a5e3c func_ov000_020a5ef8 kind:function(arm,size=0x30) addr:0x20a5e98 func_ov000_020a5f28 kind:function(arm,size=0x30) addr:0x20a5ec8 func_ov000_020a5f58 kind:function(arm,size=0x14) addr:0x20a5ef8 diff --git a/config/usa/arm9/overlays/ov004/symbols.txt b/config/usa/arm9/overlays/ov004/symbols.txt index 8b40db5f..0f7cd422 100644 --- a/config/usa/arm9/overlays/ov004/symbols.txt +++ b/config/usa/arm9/overlays/ov004/symbols.txt @@ -51,7 +51,7 @@ func_ov004_021026cc kind:function(thumb,size=0x24) addr:0x210264c func_ov004_021026f0 kind:function(thumb,size=0x4c) addr:0x2102670 func_ov004_0210273c kind:function(thumb,size=0xc) addr:0x21026bc func_ov004_02102748 kind:function(thumb,size=0x28) addr:0x21026c8 -_Z19func_ov004_02102770Pi kind:function(thumb,size=0x44) addr:0x21026f0 +func_ov004_02102770 kind:function(thumb,size=0x44) addr:0x21026f0 func_ov004_021027b4 kind:function(arm,size=0x28) addr:0x2102734 func_ov004_021027dc kind:function(arm,size=0x4) addr:0x210275c func_ov004_021027e0 kind:function(arm,size=0x14) addr:0x2102760 @@ -72,7 +72,7 @@ func_ov004_02102aa0 kind:function(thumb,size=0x38) addr:0x2102a20 func_ov004_02102ad8 kind:function(thumb,size=0x20) addr:0x2102a58 func_ov004_02102af8 kind:function(thumb,size=0x8) addr:0x2102a78 func_ov004_02102b00 kind:function(thumb,size=0x28) addr:0x2102a80 -_Z19func_ov004_02102b28Pi kind:function(thumb,size=0x54) addr:0x2102aa8 +func_ov004_02102b28 kind:function(thumb,size=0x54) addr:0x2102aa8 func_ov004_02102b7c kind:function(arm,size=0x14) addr:0x2102afc func_ov004_02102b90 kind:function(arm,size=0x14) addr:0x2102b10 func_ov004_02102ba4 kind:function(arm,size=0x44) addr:0x2102b24 @@ -86,7 +86,7 @@ func_ov004_02102da4 kind:function(thumb,size=0x44) addr:0x2102d24 func_ov004_02102de8 kind:function(thumb,size=0x4) addr:0x2102d68 func_ov004_02102dec kind:function(thumb,size=0x2c) addr:0x2102d6c func_ov004_02102e18 kind:function(thumb,size=0x24) addr:0x2102d98 -_Z19func_ov004_02102e3cPi kind:function(thumb,size=0x1c) addr:0x2102dbc +func_ov004_02102e3c kind:function(thumb,size=0x1c) addr:0x2102dbc func_ov004_02102e58 kind:function(thumb,size=0x5ec) addr:0x2102dd8 func_ov004_02103444 kind:function(thumb,size=0xb8) addr:0x21033c4 func_ov004_021034fc kind:function(thumb,size=0xbc) addr:0x210347c diff --git a/config/usa/arm9/overlays/ov015/symbols.txt b/config/usa/arm9/overlays/ov015/symbols.txt index 848bd45f..c9b2ed11 100644 --- a/config/usa/arm9/overlays/ov015/symbols.txt +++ b/config/usa/arm9/overlays/ov015/symbols.txt @@ -287,10 +287,10 @@ func_ov015_02129b30 kind:function(arm,size=0x8) addr:0x2129ab0 func_ov015_02129b38 kind:function(arm,size=0x18) addr:0x2129ab8 func_ov015_02129b50 kind:function(arm,size=0xb4) addr:0x2129ad0 func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129b84 -_Z19func_ov015_02129c14P7MapBase kind:function(arm,size=0x10) addr:0x2129b94 -_Z19func_ov015_02129c24P7MapBaseP5Vec3pS2_ kind:function(arm,size=0x10) addr:0x2129ba4 -_Z19func_ov015_02129c34P7MapBasei kind:function(arm,size=0x10) addr:0x2129bb4 -_Z19func_ov015_02129c44P7MapBasei kind:function(arm,size=0x10) addr:0x2129bc4 +func_ov015_02129c14 kind:function(arm,size=0x10) addr:0x2129b94 +func_ov015_02129c24 kind:function(arm,size=0x10) addr:0x2129ba4 +func_ov015_02129c34 kind:function(arm,size=0x10) addr:0x2129bb4 +func_ov015_02129c44 kind:function(arm,size=0x10) addr:0x2129bc4 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129bd4 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129c24 func_ov015_02129ce8 kind:function(arm,size=0xac) addr:0x2129c68 diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 870a9696..6e7ea945 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -192,7 +192,7 @@ public: u8 GetMapData_Unk_0a(); u8 GetMapData_Unk_0b(); unk8 MapData_vfunc_a4(unk8 *param_1); - unk8 func_ov00_0208433c(Vec3p *param_2, Vec3p *param_3); + unk8 func_ov00_0208433c(Vec3p *param_2, Vec2s *param_3); unk8 func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3); void func_ov00_020843ec(s32 *param_2); unk32 GetMapData_Unk_38(); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 8164011e..7a96bf04 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -71,16 +71,18 @@ struct UnkStruct_02082348 { /* 12 */ unk8 mUnk_12[0x4]; }; -extern s32 *data_027e0c68; +extern unk32 *data_027e0c68; extern u32 *data_027e0ce4; -extern s32 *data_027e0d3c; -extern s32 *data_027e0f64; -extern s32 *data_027e0f68; -extern s32 *data_027e0f6c; -extern s32 *data_027e0f70; -extern s32 *data_027e0f78; -extern s32 *data_027e0f7c; -extern s32 *data_027e103c; +extern unk32 *data_027e0d3c; +extern unk32 *data_027e0f64; +extern unk32 *data_027e0f68; +extern unk32 *data_027e0f6c; +extern unk32 *data_027e0f70; +extern unk32 *data_027e0f78; +extern unk32 *data_027e0f7c; +extern unk32 *data_027e103c; + +extern unk32 *data_ov000_020e24a4; ARM void MapManager::GetCourseDungeonProgress(CourseProgress *param_2) { this->mCourse->GetDungeonProgress(param_2); @@ -1294,9 +1296,7 @@ ARM void MapManager::func_ov00_02083f44(Vec3p *param_2) { local_18.z = param_2->z; local_18.x = param_2->x; - /*local_18.y = *(int *)( - PTR_PTR_s_anc_overlay_d_0__020e24a0_overlay_d_0__020e24a4_overlay_d_0__02083f7c - + 0x20);*/ + local_18.y = *(data_ov000_020e24a4 + 0x10); this->func_ov00_02083ef8(param_2, &local_18); } @@ -1467,7 +1467,7 @@ unk8 MapManager::MapData_vfunc_a4(unk8 *param_1) { this->mMap->vfunc_a4(param_1); } -unk8 MapManager::func_ov00_0208433c(Vec3p *param_2, Vec3p *param_3) { +unk8 MapManager::func_ov00_0208433c(Vec3p *param_2, Vec2s *param_3) { Vec2s local_28; Vec3p VStack_24; Vec3p local_18; From a9af655856b791d5a6d4bf1b75c123a855e646bb Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Tue, 29 Apr 2025 22:12:35 +0200 Subject: [PATCH 45/62] Decomp progress 38% --- config/eur/arm9/overlays/ov000/symbols.txt | 16 +- config/eur/arm9/overlays/ov012/symbols.txt | 2 +- config/eur/arm9/overlays/ov015/symbols.txt | 2 +- config/eur/arm9/overlays/ov017/symbols.txt | 4 +- include/Map/Course.hpp | 2 +- include/Map/MapBase.hpp | 2 +- include/Map/MapManager.hpp | 16 +- include/System/SysNew.hpp | 3 +- src/00_Core/Map/Course.cpp | 2 +- src/00_Core/Map/MapManager.cpp | 281 +++++++++------------ 10 files changed, 151 insertions(+), 179 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 638de37c..cdecdb59 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -83,7 +83,7 @@ _ZN18UnkStruct_027e0d3819func_ov000_02078b40Ev kind:function(arm,size=0x24) addr _ZN18UnkStruct_027e0d3819func_ov000_02078b64Ev kind:function(arm,size=0x24) addr:0x2078b64 _ZN18UnkStruct_027e0d3819func_ov000_02078b88Ev kind:function(arm,size=0x3c) addr:0x2078b88 _Z19func_ov000_02078bc4i kind:function(thumb,size=0x2c) addr:0x2078bc4 -_Z19func_ov000_02078bf0Pii kind:function(thumb,size=0x11c) addr:0x2078bf0 +_Z19func_ov000_02078bf0PiS_ kind:function(thumb,size=0x11c) addr:0x2078bf0 func_ov000_02078d0c kind:function(thumb,size=0x24) addr:0x2078d0c func_ov000_02078d30 kind:function(thumb,size=0x24) addr:0x2078d30 func_ov000_02078d54 kind:function(thumb,size=0x3c) addr:0x2078d54 @@ -313,7 +313,7 @@ _ZN6Course15SetMapDataFlag2Eib kind:function(arm,size=0x20) addr:0x207d924 _ZN6Course15GetMapDataFlag2Ei kind:function(arm,size=0x18) addr:0x207d944 _ZN6Course15SetMapDataFlag3Eib kind:function(arm,size=0x20) addr:0x207d95c _ZN6Course15GetMapDataFlag3Ei kind:function(arm,size=0x18) addr:0x207d97c -_ZN6Course15SetMapDataFlag4Eii kind:function(arm,size=0x20) addr:0x207d994 +_ZN6Course15SetMapDataFlag4Eib kind:function(arm,size=0x20) addr:0x207d994 _ZN6Course15GetMapDataFlag4Ei kind:function(arm,size=0x18) addr:0x207d9b4 _ZN6Course11FindMapDataEj kind:function(arm,size=0x48) addr:0x207d9cc _ZN6Course18FindCurrentMapDataEv kind:function(arm,size=0x24) addr:0x207da14 @@ -535,7 +535,7 @@ _ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x2082d28 _ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x2082d34 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x2082d40 _ZN10MapManager18func_ov00_02082d74Ei kind:function(arm,size=0x10) addr:0x2082d74 -_ZN10MapManager18func_ov00_02082d84EPcPiS1_ kind:function(arm,size=0x98) addr:0x2082d84 +_ZN10MapManager18func_ov00_02082d84EP5Vec2bPiS2_ kind:function(arm,size=0x98) addr:0x2082d84 _ZN10MapManager18func_ov00_02082e1cEPiS0_ kind:function(arm,size=0x250) addr:0x2082e1c _ZN10MapManager18func_ov00_0208306cEPiS0_ kind:function(arm,size=0xf0) addr:0x208306c _ZN10MapManager18func_ov00_0208315cEPiS0_ kind:function(arm,size=0xe8) addr:0x208315c @@ -609,7 +609,7 @@ _ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x2083bd4 _ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x2083bfc _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083c24 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083c50 -_ZN10MapManager18func_ov00_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c7c +_ZN10MapManager18func_ov00_02083c7cEP5Vec3pP5Vec2b kind:function(arm,size=0x6c) addr:0x2083c7c _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083ce8 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 _ZN10MapManager16MapData_vfunc_60EPh kind:function(arm,size=0x18) addr:0x2083e58 @@ -665,11 +665,11 @@ _ZN10MapManager18func_ov00_02084b38Eiii kind:function(arm,size=0xa8) addr:0x2084 _ZN10MapManager18func_ov00_02084be0Eji kind:function(arm,size=0x7c) addr:0x2084be0 _ZN10MapManager15SetMapDataFlag1Eib kind:function(arm,size=0x10) addr:0x2084c5c _ZN10MapManager15GetMapDataFlag1Ei kind:function(arm,size=0x10) addr:0x2084c6c -_ZN10MapManager18func_ov00_02084c7cEi kind:function(arm,size=0x18) addr:0x2084c7c +_ZN10MapManager18func_ov00_02084c7cEib kind:function(arm,size=0x18) addr:0x2084c7c _ZN10MapManager18func_ov00_02084c94Ei kind:function(arm,size=0x1c) addr:0x2084c94 -_ZN10MapManager18func_ov00_02084cb0Ei kind:function(arm,size=0x18) addr:0x2084cb0 +_ZN10MapManager18func_ov00_02084cb0Eib kind:function(arm,size=0x18) addr:0x2084cb0 _ZN10MapManager18func_ov00_02084cc8Ei kind:function(arm,size=0x1c) addr:0x2084cc8 -_ZN10MapManager18func_ov00_02084ce4Ei kind:function(arm,size=0x18) addr:0x2084ce4 +_ZN10MapManager18func_ov00_02084ce4Eib kind:function(arm,size=0x18) addr:0x2084ce4 _ZN10MapManager18func_ov00_02084cfcEi kind:function(arm,size=0x1c) addr:0x2084cfc _ZN10MapManager17GetMapData_Unk_09Ev kind:function(arm,size=0xc) addr:0x2084d18 _ZN10MapManager18func_ov00_02084d24Eccs kind:function(arm,size=0x28) addr:0x2084d24 @@ -1091,7 +1091,7 @@ func_ov000_0209394c kind:function(arm,size=0xc) addr:0x209394c func_ov000_02093958 kind:function(arm,size=0x10) addr:0x2093958 func_ov000_02093968 kind:function(arm,size=0x78) addr:0x2093968 func_ov000_020939e0 kind:function(arm,size=0x3c) addr:0x20939e0 -_Z19func_ov000_02093a1cPjPi kind:function(arm,size=0x20) addr:0x2093a1c +_Z19func_ov000_02093a1cPjPii kind:function(arm,size=0x20) addr:0x2093a1c func_ov000_02093a3c kind:function(arm,size=0x10) addr:0x2093a3c func_ov000_02093a4c kind:function(arm,size=0x10) addr:0x2093a4c func_ov000_02093a5c kind:function(arm,size=0x94) addr:0x2093a5c diff --git a/config/eur/arm9/overlays/ov012/symbols.txt b/config/eur/arm9/overlays/ov012/symbols.txt index 84b02182..350d7c30 100644 --- a/config/eur/arm9/overlays/ov012/symbols.txt +++ b/config/eur/arm9/overlays/ov012/symbols.txt @@ -665,7 +665,7 @@ func_ov012_0212b31c kind:function(arm,size=0x20) addr:0x212b31c func_ov012_0212b33c kind:function(arm,size=0xc) addr:0x212b33c func_ov012_0212b348 kind:function(arm,size=0x8) addr:0x212b348 func_ov012_0212b350 kind:function(arm,size=0x8) addr:0x212b350 -func_ov012_0212b358 kind:function(arm,size=0xf8) addr:0x212b358 +_Z19func_ov012_0212b358P7MapBaseii kind:function(arm,size=0xf8) addr:0x212b358 func_ov012_0212b450 kind:function(arm,size=0x88) addr:0x212b450 func_ov012_0212b4d8 kind:function(arm,size=0x90) addr:0x212b4d8 func_ov012_0212b568 kind:function(arm,size=0x94) addr:0x212b568 diff --git a/config/eur/arm9/overlays/ov015/symbols.txt b/config/eur/arm9/overlays/ov015/symbols.txt index 452d1d59..b8d15049 100644 --- a/config/eur/arm9/overlays/ov015/symbols.txt +++ b/config/eur/arm9/overlays/ov015/symbols.txt @@ -253,7 +253,7 @@ func_ov015_02128b9c kind:function(arm,size=0x90) addr:0x2128b9c func_ov015_02128c2c kind:function(arm,size=0x140) addr:0x2128c2c func_ov015_02128d6c kind:function(arm,size=0x20) addr:0x2128d6c func_ov015_02128d8c kind:function(arm,size=0x4c) addr:0x2128d8c -func_ov015_02128dd8 kind:function(arm,size=0xac) addr:0x2128dd8 +_Z19func_ov015_02128dd8P7MapBaseii kind:function(arm,size=0xac) addr:0x2128dd8 func_ov015_02128e84 kind:function(arm,size=0xcc) addr:0x2128e84 func_ov015_02128f50 kind:function(arm,size=0xd4) addr:0x2128f50 func_ov015_02129024 kind:function(arm,size=0x220) addr:0x2129024 diff --git a/config/eur/arm9/overlays/ov017/symbols.txt b/config/eur/arm9/overlays/ov017/symbols.txt index 9b7a4935..756ad603 100644 --- a/config/eur/arm9/overlays/ov017/symbols.txt +++ b/config/eur/arm9/overlays/ov017/symbols.txt @@ -1,6 +1,6 @@ -func_ov017_0215b4a0 kind:function(arm,size=0x2c) addr:0x215b4a0 +_Z19func_ov017_0215b4a0P7MapBaseii kind:function(arm,size=0x2c) addr:0x215b4a0 func_ov017_0215b4cc kind:function(arm,size=0x1c) addr:0x215b4cc -func_ov017_0215b4e8 kind:function(thumb,size=0xf0) addr:0x215b4e8 +_Z19func_ov017_0215b4e8P7MapBaseii kind:function(thumb,size=0xf0) addr:0x215b4e8 func_ov017_0215b5d8 kind:function(thumb,size=0x94) addr:0x215b5d8 func_ov017_0215b66c kind:function(thumb,size=0x9c) addr:0x215b66c func_ov017_0215b708 kind:function(thumb,size=0x5c) addr:0x215b708 diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index b01ff5ea..ee8af277 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -108,7 +108,7 @@ public: bool GetMapDataFlag2(unk32 param_2); void SetMapDataFlag3(unk32 param_2, bool param_3); bool GetMapDataFlag3(unk32 param_2); - void SetMapDataFlag4(unk32 param_2, unk32 param_3); + void SetMapDataFlag4(unk32 param_2, bool param_3); bool GetMapDataFlag4(unk32 param_2); MapData *FindMapData(u32 map); MapData *FindCurrentMapData(); diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 06efee36..e3731194 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 s32 vfunc_4c() = 0; + /* 4c */ virtual s32 vfunc_4c(); /* 50 */ virtual unk32 vfunc_50(); /* 54 */ virtual unk32 vfunc_54(Vec2b *param_1); /* 58 */ virtual unk32 vfunc_58(Vec2b *param_1, int param_2); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 6e7ea945..d169614f 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -92,7 +92,7 @@ public: u8 GetCurrentMapPosY(); u8 func_ov00_02082d40(); u32 func_ov00_02082d74(unk32 param_2); - void func_ov00_02082d84(unk8 *param_2, s32 *param_3, s32 *param_4); + void func_ov00_02082d84(Vec2b *param_2, s32 *param_3, s32 *param_4); bool func_ov00_02082e1c(s32 *param_2, s32 *param_3); void func_ov00_0208306c(s32 *param_2, s32 *param_3); void func_ov00_0208315c(s32 *param_2, s32 *param_3); @@ -166,14 +166,14 @@ public: s32 GetTileEndZ(unk32 z); s32 func_ov00_02083c24(unk32 x); s32 func_ov00_02083c50(unk32 z); - void func_ov00_02083c7c(Vec3p *param_2, u32 param_3); + void func_ov00_02083c7c(Vec3p *param_2, Vec2b *param_3); static void func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5); s32 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); unk32 MapData_vfunc_60(u8 *param_1); bool func_ov00_02083e70(); unk32 MapData_vfunc_68(Vec3p *param_1, bool param_2); s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3); - void func_ov00_02083f44(Vec3p *param_2); + unk32 func_ov00_02083f44(Vec3p *param_2); unk8 MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); unk32 MapData_vfunc_70(Vec3p *param_2); static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); @@ -181,7 +181,7 @@ public: unk32 MapData_vfunc_54(Vec2b *a); unk32 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk16 param_4); unk32 *MapData_vfunc_78(Vec2b *param_1); - unk8 func_ov00_020840dc(Vec2b *param_1); + unk32 func_ov00_020840dc(Vec2b *param_1); static unk8 func_ov00_02084100(unk32 *param_1, MapManager *param_2); u32 GetMapData_Unk_48(); unk32 GetMapData_Unk_4c(); @@ -192,7 +192,7 @@ public: u8 GetMapData_Unk_0a(); u8 GetMapData_Unk_0b(); unk8 MapData_vfunc_a4(unk8 *param_1); - unk8 func_ov00_0208433c(Vec3p *param_2, Vec2s *param_3); + void func_ov00_0208433c(Vec3p *param_2, Vec2s *param_3); unk8 func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3); void func_ov00_020843ec(s32 *param_2); unk32 GetMapData_Unk_38(); @@ -222,11 +222,11 @@ public: bool func_ov00_02084be0(u32 param_2, unk32 param_3); void SetMapDataFlag1(unk32 param_2, bool param_3); bool GetMapDataFlag1(unk32 param_2); - void func_ov00_02084c7c(unk32 param_2); + void func_ov00_02084c7c(unk32 param_2, bool param_3); bool func_ov00_02084c94(unk32 param_2); - void func_ov00_02084cb0(unk32 param_2); + void func_ov00_02084cb0(unk32 param_2, bool param_3); bool func_ov00_02084cc8(unk32 param_2); - void func_ov00_02084ce4(unk32 param_2); + void func_ov00_02084ce4(unk32 param_2, bool param_3); bool func_ov00_02084cfc(unk32 param_2); u8 GetMapData_Unk_09(); void func_ov00_02084d24(unk8 param_2, unk8 param_3, unk16 param_4); diff --git a/include/System/SysNew.hpp b/include/System/SysNew.hpp index 7e9b0cd8..4d3c3f7c 100644 --- a/include/System/SysNew.hpp +++ b/include/System/SysNew.hpp @@ -4,7 +4,8 @@ struct UnkStruct_0202e894 { /* 00 */ u32 mId; - /* 04 */ unk8 mUnk_04[0x28]; + /* 04 */ u32 *mUnk_04; + /* 08 */ unk8 mUnk_08[0x24]; /* 2c */ }; diff --git a/src/00_Core/Map/Course.cpp b/src/00_Core/Map/Course.cpp index f3091530..fed9a442 100644 --- a/src/00_Core/Map/Course.cpp +++ b/src/00_Core/Map/Course.cpp @@ -45,7 +45,7 @@ void Course::SetMapDataFlag2(unk32 param_2, bool param_3) {} bool Course::GetMapDataFlag2(unk32 param_2) {} void Course::SetMapDataFlag3(unk32 param_2, bool param_3) {} bool Course::GetMapDataFlag3(unk32 param_2) {} -void Course::SetMapDataFlag4(unk32 param_2, unk32 param_3) {} +void Course::SetMapDataFlag4(unk32 param_2, bool param_3) {} bool Course::GetMapDataFlag4(unk32 param_2) {} MapData *Course::FindMapData(u32 map) {} MapData *Course::FindCurrentMapData() {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 7a96bf04..8fb7c9d4 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -5,16 +5,18 @@ #include "Map/MapManager.hpp" #include "Actor/Actor.hpp" #include "Actor/ActorManager.hpp" +#include "Actor/ActorSpawner.hpp" #include "DTCM/UnkStruct_027e0d38.hpp" #include "DTCM/UnkStruct_027e0fd4.hpp" #include "Player/PlayerBase.hpp" #include "Save/AdventureFlags.hpp" +#include "Unknown/UnkStruct_02037750.hpp" #include "stdio.h" extern bool func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Vec4p *param4); extern u32 func_ov000_02078bc4(unk32 param_1); -extern void func_ov000_02078bf0(s32 *param_1, unk32 param_2); +extern void func_ov000_02078bf0(s32 *param_1, unk32 *param_2); extern s32 func_ov000_02078fe8(s32 *param_1); extern void func_ov000_0207920c(s32 *param_1, Vec3p *param_2, s32 *param_3, s32 *param_4); extern void func_ov000_020792a0(s32 *param_1, s32 param_2, unk32 param_3, unk32 param_4); @@ -36,12 +38,13 @@ extern s32 func_ov000_0208e6f0(Vec3p *param_1); extern s32 func_ov000_0208e704(Vec3p *param_1); extern s32 func_ov000_0208e87c(AABB *param_1, Vec3p *param_2, Vec3p *param_3); extern void func_ov000_0208ed74(AABB *param_1, Vec3p *param_2); -extern void func_ov000_02093a1c(u32 *param_1, s32 *param_2); +extern void func_ov000_02093a1c(u32 *param_1, unk32 *param_2, unk32 param_3); extern void func_ov000_02096324(s32 *param_1, s32 param_2); extern s32 *func_ov000_02096418(s32 *param_1); extern void func_ov000_0209d6e8(s32 param_1, s32 param_2); extern s32 func_ov000_0209d71c(s32 *param_1, s32 param_2); extern unk32 func_ov000_020a5e9c(unk32 *param_1); +extern void func_ov000_020c3348(unk32 *param_1); extern void func_ov004_021024c4(MapManager *param_1, s32 param_2, bool param_3, s32 param_4); extern void func_ov004_02102770(s32 *param_1); @@ -58,9 +61,12 @@ extern bool func_ov015_02129c24(MapBase *param_1, Vec3p *param_2, Vec3p *param_3 extern bool func_ov015_02129c34(MapBase *param_1, s32 param_2); extern bool func_ov015_02129c44(MapBase *param_1, s32 param_2); +extern MapBase *func_ov017_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3); extern MapBase *func_ov017_0215b4e8(MapBase *param_1, unk32 param_2, unk32 param_3); -extern MapBase *func_ov018_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3); +// extern MapBase *func_ov018_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3); + +struct astruct_16 {}; // What is this struct? struct UnkStruct_02082348 { /* 00 */ unk32 mUnk_00; @@ -68,13 +74,35 @@ struct UnkStruct_02082348 { /* 08 */ unk32 mUnk_08; /* 0c */ unk32 mUnk_0c; /* 10 */ unk16 mUnk_10; - /* 12 */ unk8 mUnk_12[0x4]; + /* 12 */ u8 mUnk_12[0x4]; + /* 16 */ +}; + +class Case_0 : public MapBase { +public: + char pad[0x790 - 0x1B0]; + Case_0(u32 param1, u32 param2); + virtual ~Case_0() override; +}; + +class Case_4 : public MapBase { +public: + char pad[0x1DC - 0x1B0]; + Case_4(u32 param1, u32 param2); + virtual ~Case_4() override; +}; + +class Case_Default : public MapBase { +public: + char pad[0x790 - 0x1B0]; + Case_Default(u32 param1, u32 param2); + virtual ~Case_Default() override; }; extern unk32 *data_027e0c68; -extern u32 *data_027e0ce4; +extern u32 *data_027e0ce0[]; extern unk32 *data_027e0d3c; -extern unk32 *data_027e0f64; +extern unk32 data_027e0f64[]; extern unk32 *data_027e0f68; extern unk32 *data_027e0f6c; extern unk32 *data_027e0f70; @@ -84,6 +112,10 @@ extern unk32 *data_027e103c; extern unk32 *data_ov000_020e24a4; +MapManager::MapManager() {} + +MapManager::~MapManager() {} + ARM void MapManager::GetCourseDungeonProgress(CourseProgress *param_2) { this->mCourse->GetDungeonProgress(param_2); } @@ -192,14 +224,14 @@ ARM void MapManager::func_ov00_02082348(unk32 *param_2) { unkStruct.mUnk_00 = 0x47; unkStruct.mUnk_04 = 0; unkStruct.mUnk_08 = 0; - unkStruct.mUnk_0c = 0; + unkStruct.mUnk_0c = -2; unkStruct.mUnk_10 = 0; - unkStruct.mUnk_12[0] = 0xff; + unkStruct.mUnk_12[0] = -1; unkStruct.mUnk_12[1] = 0; unkStruct.mUnk_12[2] = 0; unkStruct.mUnk_12[3] = 0; this->func_ov00_0208230c((s32 *) &unkStruct); - func_ov000_02078bf0((s32 *) &unkStruct, *param_2); + func_ov000_02078bf0((s32 *) &unkStruct, param_2); } ARM void MapManager::func_ov00_020823a4(unk32 param_2) { @@ -289,7 +321,7 @@ ARM void MapManager::func_ov00_020825ac() { } ARM s32 MapManager::GetCourseFilePath(char *courseName, char *buf) { - s32 var = sprintf(buf, "Map/%s/course.bin", courseName); + s32 var = sprintf(buf, "Map/%s/course.bin\0\0", courseName); return var; } @@ -328,39 +360,15 @@ ARM void MapManager::func_ov00_020826a0(unk32 param_2, unk32 param_3) { ARM void MapManager::CreateMap(unk32 mapType, unk32 param_3, unk32 param_4) { MapBase *mapBase; - if (this->mMap == NULL) { switch (mapType) { - case 0: - // data_027e0ce4 (data_027e0ce0) of type UnkStruct_0202e894 - SysObject::operator new(0x1dc, data_027e0ce4, 4); - 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, data_027e0ce4, 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, data_027e0ce4, 4); - if (mapBase != NULL) { - mapBase = (MapBase *) func_ov012_0212b358(mapBase, param_3, param_4); // Does not exist. - } - this->mMap = mapBase; - return; + case 4: this->mMap = new(data_027e0ce0[1], 4) Case_0(param_3, param_4); break; + case 2: this->mMap = new(data_027e0ce0[1], 4) MapBase(param_3, param_4); break; + case 0: this->mMap = new(data_027e0ce0[1], 4) Case_4(param_3, param_4); break; + case 1: + case 3: + default: this->mMap = new(data_027e0ce0[1], 4) Case_Default(param_3, param_4); break; } - mapBase = (MapBase *) SysObject::operator new(0x790, data_027e0ce4, 4); - if (mapBase != NULL) { - mapBase = (MapBase *) func_ov017_0215b4e8(mapBase, param_3, param_4); // Does not exist. - } - this->mMap = mapBase; } } @@ -582,15 +590,17 @@ ARM u32 MapManager::func_ov00_02082d74(unk32 param_2) { return func_ov000_02078bc4(param_2); } -ARM void MapManager::func_ov00_02082d84(unk8 *param_2, s32 *param_3, s32 *param_4) { +ARM void MapManager::func_ov00_02082d84(Vec2b *param_2, s32 *param_3, s32 *param_4) { s32 mapWidth = this->GetMapWidth(); u32 uVar3 = CoDivide64By32(0x100000, mapWidth << 0xc); s32 mapHeight = this->GetMapHeight(); u32 uVar4 = CoDivide64By32(0xc0000, mapHeight << 0xc); - s64 lVar1 = (s64) (s32) ((u32) *param_2 << 0xc); - *param_3 = (s32) (((u32) lVar1 >> 0xc | (s32) ((u64) lVar1 >> 0x20) * 0x100000) + ((s32) uVar4 >> 1) + 0x800) >> 0xc; - lVar1 = (s64) (s32) ((u32) param_2[1] << 0xc) * (s64) (s32) uVar4 + 0x800; - *param_4 = (s32) (((u32) lVar1 >> 0xc | (s32) ((u64) lVar1 >> 0x20) * 0x100000) + ((s32) uVar4 >> 1) + 0x800) >> 0xc; + // something related to x or width + s64 lVar1 = (s64) ((u8) param_2->x << 0xc) * (s32) uVar3 + 0x800; + *param_3 = (s32) (((s32) (lVar1 >> 0xc)) + ((s32) uVar3 >> 1) + 0x800) >> 0xc; + // something related to y or height + lVar1 = (s64) ((u8) param_2->y << 0xc) * (s32) uVar4 + 0x800; + *param_4 = (s32) (((s32) (lVar1 >> 0xc)) + ((s32) uVar4 >> 1) + 0x800) >> 0xc; } ARM bool MapManager::func_ov00_02082e1c(s32 *param_2, s32 *param_3) { @@ -663,7 +673,7 @@ ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { MapManager *pMVar1; s32 iVar2; MapManager *pMVar3; - unk8 auStack_2c[18]; + Vec2b auStack_2c[18]; s32 local_28; // This has to be a Vec3p, but uncertain as of now. unk32 local_24; // Unused. unk32 local_20; // Unused. @@ -1018,25 +1028,21 @@ ARM bool MapManager::func_ov00_02083790(s32 param_2) { } ARM bool MapManager::func_ov00_02083840(s32 param_2) { - s32 *puVar1; - s32 *puVar2; bool bVar3; s32 iVar4; - puVar2 = data_027e0d3c; - puVar1 = data_027e0f64; - if (param_2 != 0) { - *(unk32 *) (*(int *) (*(int *) data_027e0f64 + 8) + 0x1b4) = 0xffffffff; - *(unk32 *) (*(int *) (*(int *) puVar1 + 4) + 0x1b4) = 0xffffffff; - iVar4 = func_ov000_02078fe8(puVar2); - if (-1 < iVar4) { - func_ov000_020798bc(data_027e0d3c, 0x10); - gActorManager->func_ov00_020c3ce8(param_2, false); - } - bVar3 = this->mMap->TriggerOfType_vfunc_10(param_2); - return bVar3; + if (param_2 == 0) { + return true; } - return true; + *(unk32 *) (*(unk32 *) (*(unk32 *) data_027e0f64 + 8) + 0x1b4) = -1; + *(unk32 *) (*(unk32 *) (*(unk32 *) data_027e0f64 + 4) + 0x1b4) = -1; + iVar4 = func_ov000_02078fe8(data_027e0d3c); + if (0 <= iVar4) { + func_ov000_020798bc(data_027e0d3c, 0x10); + gActorManager->func_ov00_020c3ce8(param_2, false); + } + bVar3 = this->mMap->TriggerOfType_vfunc_10(param_2); + return bVar3; } ARM bool MapManager::AddTrigger(s32 param_2) { @@ -1188,14 +1194,14 @@ ARM s32 MapManager::func_ov00_02083c50(unk32 z) { return this->GetMapCenterZ() + this->mMap->GetTileStartZ(z) + 0x800; } -ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, u32 param_3) { +ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2b *param_3) { q20 x; q20 z; q20 y; Vec3p local_28; - x = this->func_ov00_02083c24(param_3 & 0xff); + x = this->func_ov00_02083c24(param_3->x); param_2->x = x; - z = this->func_ov00_02083c50(param_3 >> 8 & 0xff); + z = this->func_ov00_02083c50(param_3->y); param_2->z = z; y = this->MapData_vfunc_68(&local_28, true); param_2->y = y; @@ -1291,13 +1297,12 @@ ARM s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3) { return iVar1; } -ARM void MapManager::func_ov00_02083f44(Vec3p *param_2) { +ARM unk32 MapManager::func_ov00_02083f44(Vec3p *param_2) { Vec3p local_18; - local_18.z = param_2->z; - local_18.x = param_2->x; - local_18.y = *(data_ov000_020e24a4 + 0x10); - this->func_ov00_02083ef8(param_2, &local_18); + local_18 = *param_2; + local_18.y = *(data_ov000_020e24a4 + 0x8); + return this->func_ov00_02083ef8(param_2, &local_18); } unk8 MapManager::MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) { @@ -1309,17 +1314,17 @@ ARM unk32 MapManager::MapData_vfunc_70(Vec3p *param_2) { } ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) { - Vec4p *iVar1; + Vec4p *iVar1; // Unsure s32 dVar2; iVar1 = (Vec4p *) param_2->mMap->vfunc_74(param_3); if (iVar1 != NULL) { - *param_1 = iVar1->w; + *param_1 = iVar1->w; // offset 0xc return; } dVar2 = param_2->MapData_vfunc_70(param_3); if (dVar2 != 0xffff) { - func_ov000_02093a1c(param_1, data_027e0f6c); + func_ov000_02093a1c(param_1, data_027e0f6c, dVar2); return; } *param_1 = 0; @@ -1354,13 +1359,14 @@ unk32 *MapManager::MapData_vfunc_78(Vec2b *param_1) { return this->mMap->vfunc_78(param_1); } -unk8 MapManager::func_ov00_020840dc(Vec2b *param_1) { - UnkStruct_027e0fd4 *piVar1; +unk32 MapManager::func_ov00_020840dc(Vec2b *param_1) { + UnkStruct_02037750 *piVar1; // placeholder struct until I can find the real struct - piVar1 = (UnkStruct_027e0fd4 *) this->MapData_vfunc_78(param_1); + piVar1 = (UnkStruct_02037750 *) this->MapData_vfunc_78(param_1); if (piVar1 != NULL) { - piVar1->vfunc_1c(); + return piVar1->vfunc_1c(); } + return -1; } unk8 MapManager::func_ov00_02084100(unk32 *param_1, MapManager *param_2) { @@ -1467,12 +1473,11 @@ unk8 MapManager::MapData_vfunc_a4(unk8 *param_1) { this->mMap->vfunc_a4(param_1); } -unk8 MapManager::func_ov00_0208433c(Vec3p *param_2, Vec2s *param_3) { - Vec2s local_28; +ARM void MapManager::func_ov00_0208433c(Vec3p *param_2, Vec2s *param_3) { + Vec3p local_18 = *param_2; Vec3p VStack_24; - Vec3p local_18; + Vec2s local_28; - local_18 = *param_2; this->GetMapMinBounds(&VStack_24); Vec3p_Sub(&local_18, &VStack_24, &local_18); this->mMap->func_ov00_0207f53c(&local_28, this->mMap, &local_18); @@ -1787,15 +1792,13 @@ u8 MapManager::func_ov00_02084a50() { } void MapManager::SpawnNPC(Vec3p *param_2, unk32 param_3, unk32 param_4) { - // astruct_16 aStack_3c; - // Actor_UnkStruct_020((Actor_UnkStruct_020 *) &aStack_3c); - // aStack_3c.field24_0x1c = 0xffffffff; - // aStack_3c.field25_0x20 = 0xffffffff; - // astruct_16::astruct_16(&aStack_3c); - // aStack_3c.field26_0x24 = param_3; - // aStack_3c.field27_0x28 = param_4; - // spawnNpc(*(undefined4 *) PTR_DWORD_overlay_d_0__02084abc, s_CIVE_overlay_d_0__02084ac0, param_2, &aStack_3c, - // (ActorRef *) 0x0); + astruct_16 aStack_3c; // = Actor_UnkStruct_020(); + // aStack_3c. = 0xffffffff; + // aStack_3c.field25_0x20 = 0xffffffff; + func_ov000_020c3348((unk32 *) &aStack_3c); + // aStack_3c.field26_0x24 = param_3; + // aStack_3c.field27_0x28 = param_4; + gActorSpawner->Spawn(ActorTypeId_EVIC, param_2, &aStack_3c, NULL); } ARM bool MapManager::func_ov00_02084ac4(u32 actorId) { @@ -1874,13 +1877,11 @@ bool MapManager::GetMapDataFlag1(unk32 param_2) { return this->mCourse->GetMapDataFlag1(param_2); } -void MapManager::func_ov00_02084c7c(unk32 param_2) { - bool in_r2; // not defined. - +void MapManager::func_ov00_02084c7c(unk32 param_2, bool param_3) { if (param_2 < 0) { return; } - this->mCourse->SetMapDataFlag2(param_2, in_r2); + this->mCourse->SetMapDataFlag2(param_2, param_3); } bool MapManager::func_ov00_02084c94(unk32 param_2) { @@ -1893,13 +1894,11 @@ bool MapManager::func_ov00_02084c94(unk32 param_2) { return false; } -void MapManager::func_ov00_02084cb0(unk32 param_2) { - bool in_r2; // not defined. - +void MapManager::func_ov00_02084cb0(unk32 param_2, bool param_3) { if (param_2 < 0) { return; } - this->mCourse->SetMapDataFlag3(param_2, in_r2); + this->mCourse->SetMapDataFlag3(param_2, param_3); } bool MapManager::func_ov00_02084cc8(unk32 param_2) { @@ -1912,13 +1911,11 @@ bool MapManager::func_ov00_02084cc8(unk32 param_2) { return false; } -void MapManager::func_ov00_02084ce4(unk32 param_2) { - unk32 in_r2; // not defined. - +void MapManager::func_ov00_02084ce4(unk32 param_2, bool param_3) { if (param_2 < 0) { return; } - this->mCourse->SetMapDataFlag4(param_2, in_r2); + this->mCourse->SetMapDataFlag4(param_2, param_3); } bool MapManager::func_ov00_02084cfc(unk32 param_2) { @@ -1938,7 +1935,7 @@ u8 MapManager::GetMapData_Unk_09() { ARM void MapManager::func_ov00_02084d24(unk8 param_2, unk8 param_3, unk16 param_4) { // Matches, but param types unsure. // param_2 and param_3 aren't both part of a Vec2b * - // param_3 short or int? + // param_4 short or int? Vec2b vec; vec.x = param_2; vec.y = param_3; @@ -2078,7 +2075,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { } // dVar3 = this->MapData_vfunc_70(); // Missing param. if (dVar3 != 0xffff) { - func_ov000_02093a1c(&uStack_14, data_027e0f6c); + func_ov000_02093a1c(&uStack_14, data_027e0f6c, dVar3); if ((uStack_14 >> 5 & 3) != 1) { return 0; } @@ -2274,7 +2271,7 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 unk32 dVar3; // dword unk32 uVar4; bool bVar5; - unk32 uStack_2c; + Vec2b uStack_2c[2]; Vec2b local_28; u32 uStack_24; Vec3p VStack_20; @@ -2313,59 +2310,32 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 } } iVar2 = param_1->func_ov00_020840a0(local_28.x, local_28.y, param_4); - if (iVar2 < 0x47) { - if (0x45 < iVar2) { - return 0; - } + if (iVar2 < 0x46) { if (iVar2 < 0x2a) { switch (iVar2) { - case 0: break; - case 1: return 0; - case 2: return 0; - case 3: return 0; - case 4: return 0; - case 5: return 0; - case 6: return 0; - case 7: break; - case 8: return 0; - case 9: return 0; - case 10: break; - case 0xb: break; - case 0xc: break; - case 0xd: break; - case 0xe: break; - case 0xf: break; - case 0x10: break; - case 0x11: break; - case 0x12: break; - case 0x13: break; - case 0x14: return 0; - case 0x15: break; - case 0x16: return 0; - case 0x17: return 0; - case 0x18: break; - case 0x19: return 0; - case 0x1a: break; - case 0x1b: break; - case 0x1c: break; - case 0x1d: return 0; - case 0x1e: return 0; - case 0x1f: return 0; - case 0x20: break; - case 0x21: break; - case 0x22: break; - case 0x23: break; - case 0x24: break; - case 0x25: break; - case 0x26: break; - case 0x27: return 0; - case 0x28: return 0; + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 8: + case 9: + case 0x14: + case 0x16: + case 0x17: + case 0x19: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x27: + case 0x28: case 0x29: return 0; } } else if (iVar2 == 0x37) { return 0; } - } else if (iVar2 < 0x49) { + } else if (iVar2 < 0x48) { if (0x47 < iVar2) { return 0; } @@ -2375,15 +2345,16 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 } else if (iVar2 == 0x50) { return 0; } - iVar2 = param_1->mMap->vfunc_58(&local_28, 5); // no params + iVar2 = param_1->mMap->vfunc_58(&local_28, 5); if (iVar2 != 0) { return 0; } - // uStack_2c._0_2_ = CONCAT11(local_27, local_28); + uStack_2c[0].y = local_28.y; + uStack_2c[0].x = local_28.x; param_1->func_ov00_02083c7c(&VStack_20, uStack_2c); - // dVar3 = param_1->MapData_vfunc_70(); + dVar3 = param_1->MapData_vfunc_70(&VStack_20); if (dVar3 != 0xffff) { - func_ov000_02093a1c(&uStack_24, data_027e0f6c); + func_ov000_02093a1c(&uStack_24, data_027e0f6c, dVar3); if ((uStack_24 >> 5 & 3) != 1) { return 0; } @@ -2401,7 +2372,7 @@ void MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 p s32 *piVar1; Vec2b auStack_10[2]; - // param_1->func_ov00_02083a1c(auStack_10, param_1, param_2); // Should auStack_10 be pointer type or not ? + param_1->func_ov00_02083a1c(auStack_10, param_1, param_2); piVar1 = (unk32 *) param_1->MapData_vfunc_78(auStack_10); if (piVar1 == (unk32 *) 0x0) { return; From 780ed17043d22941ce1a8142ffc8683d3a35159b Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 4 May 2025 17:05:56 +0200 Subject: [PATCH 46/62] Decomp progress 42% --- config/eur/arm9/overlays/ov000/symbols.txt | 14 +- config/eur/arm9/overlays/ov015/symbols.txt | 2 +- include/Map/MapManager.hpp | 8 +- src/00_Core/Map/MapManager.cpp | 326 +++++++++------------ 4 files changed, 156 insertions(+), 194 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index cdecdb59..1e8e4fb5 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -109,7 +109,7 @@ func_ov000_02079470 kind:function(arm,size=0x210) addr:0x2079470 func_ov000_02079680 kind:function(arm,size=0xfc) addr:0x2079680 func_ov000_0207977c kind:function(arm,size=0xfc) addr:0x207977c func_ov000_02079878 kind:function(arm,size=0x20) addr:0x2079878 -func_ov000_02079898 kind:function(arm,size=0x24) addr:0x2079898 +_Z19func_ov000_02079898Piii kind:function(arm,size=0x24) addr:0x2079898 _Z19func_ov000_020798bcPii kind:function(arm,size=0x2c) addr:0x20798bc func_ov000_020798e8 kind:function(arm,size=0x40) addr:0x20798e8 func_ov000_02079928 kind:function(arm,size=0x124) addr:0x2079928 @@ -661,7 +661,7 @@ _ZN10MapManager10SetNumKeysEi kind:function(arm,size=0xc) addr:0x2084b08 _ZN10MapManager10GetNumKeysEv kind:function(arm,size=0xc) addr:0x2084b14 _ZN10MapManager15SetBlueWarpOpenEb kind:function(arm,size=0xc) addr:0x2084b20 _ZN10MapManager15GetBlueWarpOpenEv kind:function(arm,size=0xc) addr:0x2084b2c -_ZN10MapManager18func_ov00_02084b38Eiii kind:function(arm,size=0xa8) addr:0x2084b38 +_ZN10MapManager18func_ov00_02084b38Eiib kind:function(arm,size=0xa8) addr:0x2084b38 _ZN10MapManager18func_ov00_02084be0Eji kind:function(arm,size=0x7c) addr:0x2084be0 _ZN10MapManager15SetMapDataFlag1Eib kind:function(arm,size=0x10) addr:0x2084c5c _ZN10MapManager15GetMapDataFlag1Ei kind:function(arm,size=0x10) addr:0x2084c6c @@ -1235,7 +1235,7 @@ func_ov000_02095fe0 kind:function(arm,size=0x180) addr:0x2095fe0 func_ov000_02096160 kind:function(arm,size=0x98) addr:0x2096160 func_ov000_020961f8 kind:function(arm,size=0x24) addr:0x20961f8 func_ov000_0209621c kind:function(arm,size=0x108) addr:0x209621c -_Z19func_ov000_02096324Pii kind:function(arm,size=0xf4) addr:0x2096324 +_Z19func_ov000_02096324PiS_ kind:function(arm,size=0xf4) addr:0x2096324 _Z19func_ov000_02096418Pi kind:function(arm,size=0xb4) addr:0x2096418 func_ov000_020964cc kind:function(arm,size=0xf4) addr:0x20964cc func_ov000_020965c0 kind:function(arm,size=0x1ec) addr:0x20965c0 @@ -1457,7 +1457,7 @@ func_ov000_0209d550 kind:function(arm,size=0x14) addr:0x209d550 func_ov000_0209d564 kind:function(arm,size=0x16c) addr:0x209d564 func_ov000_0209d6d0 kind:function(arm,size=0x4) addr:0x209d6d0 func_ov000_0209d6d4 kind:function(arm,size=0x14) addr:0x209d6d4 -_Z19func_ov000_0209d6e8ii kind:function(arm,size=0x28) addr:0x209d6e8 +_Z19func_ov000_0209d6e8PiS_ kind:function(arm,size=0x28) addr:0x209d6e8 func_ov000_0209d710 kind:function(arm,size=0xc) addr:0x209d710 _Z19func_ov000_0209d71cPii kind:function(arm,size=0xc) addr:0x209d71c func_ov000_0209d728 kind:function(arm,size=0x10) addr:0x209d728 @@ -3588,19 +3588,19 @@ func_ov000_020d6c5c kind:function(arm,size=0xd4) addr:0x20d6c5c func_ov000_020d6d30 kind:function(arm,size=0xe4) addr:0x20d6d30 func_ov000_020d6e14 kind:function(arm,size=0x2c) addr:0x20d6e14 func_ov000_020d6e40 kind:function(arm,size=0x264) addr:0x20d6e40 -func_ov000_020d70a4 kind:function(arm,size=0xc8) addr:0x20d70a4 +_Z19func_ov000_020d70a4Piiii kind:function(arm,size=0xc8) addr:0x20d70a4 func_ov000_020d716c kind:function(arm,size=0x14) addr:0x20d716c func_ov000_020d7180 kind:function(arm,size=0x20) addr:0x20d7180 func_ov000_020d71a0 kind:function(arm,size=0xc8) addr:0x20d71a0 func_ov000_020d7268 kind:function(arm,size=0xc) addr:0x20d7268 func_ov000_020d7274 kind:function(arm,size=0x44) addr:0x20d7274 -func_ov000_020d72b8 kind:function(arm,size=0x70) addr:0x20d72b8 +_Z19func_ov000_020d72b8Pi kind:function(arm,size=0x70) addr:0x20d72b8 func_ov000_020d7328 kind:function(arm,size=0x6c) addr:0x20d7328 func_ov000_020d7394 kind:function(arm,size=0x28) addr:0x20d7394 PlaySoundEffect kind:function(arm,size=0x34) addr:0x20d73bc func_ov000_020d73f0 kind:function(arm,size=0x14) addr:0x20d73f0 func_ov000_020d7404 kind:function(arm,size=0x20) addr:0x20d7404 -func_ov000_020d7424 kind:function(arm,size=0xc) addr:0x20d7424 +_Z19func_ov000_020d7424Pi kind:function(arm,size=0xc) addr:0x20d7424 func_ov000_020d7430 kind:function(arm,size=0x40) addr:0x20d7430 func_ov000_020d7470 kind:function(arm,size=0x1c) addr:0x20d7470 func_ov000_020d748c kind:function(arm,size=0x20) addr:0x20d748c diff --git a/config/eur/arm9/overlays/ov015/symbols.txt b/config/eur/arm9/overlays/ov015/symbols.txt index b8d15049..50c094aa 100644 --- a/config/eur/arm9/overlays/ov015/symbols.txt +++ b/config/eur/arm9/overlays/ov015/symbols.txt @@ -1986,7 +1986,7 @@ func_ov015_021847bc kind:function(arm,size=0x7c) addr:0x21847bc func_ov015_02184838 kind:function(arm,size=0xa4) addr:0x2184838 func_ov015_021848dc kind:function(arm,size=0x8c) addr:0x21848dc func_ov015_02184968 kind:function(arm,size=0x3c) addr:0x2184968 -func_ov015_021849a4 kind:function(arm,size=0x1c) addr:0x21849a4 +_Z19func_ov015_021849a4Pi kind:function(arm,size=0x1c) addr:0x21849a4 func_ov015_021849c0 kind:function(arm,size=0x1c) addr:0x21849c0 func_ov015_021849dc kind:function(arm,size=0x10) addr:0x21849dc func_ov015_021849ec kind:function(arm,size=0x54) addr:0x21849ec diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index d169614f..b1bce31f 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -31,7 +31,7 @@ public: /* 00 */ Course *mCourse; /* 04 */ MapBase *mMap; /* 08 */ unk8 mUnk_08; - /* 09 */ unk8 mUnk_09; + /* 09 */ u8 mUnk_09; /* 0a */ unk8 mUnk_0a; /* 0b */ unk8 mUnk_0b; /* 0c */ u8 mUnk_0c; @@ -47,7 +47,7 @@ public: 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); + void func_ov00_0208210c(unk32 param_2, unk32 *param_3); void func_ov00_0208230c(s32 *param_2); void func_ov00_02082348(unk32 *param_2); void func_ov00_020823a4(unk32 param_2); @@ -198,7 +198,7 @@ public: unk32 GetMapData_Unk_38(); s32 func_ov00_020846a4(); static s32 func_ov00_02084700(MapManager *pMapManager); - unk8 func_ov00_02084740(); + unk32 func_ov00_02084740(); unk32 func_ov00_020847e0(); unk8 func_ov00_020847f0(); bool func_ov00_02084838(); @@ -218,7 +218,7 @@ public: unk32 GetNumKeys(); void SetBlueWarpOpen(bool state); bool GetBlueWarpOpen(); - unk8 func_ov00_02084b38(unk32 param_2, unk32 param_3, unk32 param_4); + unk8 func_ov00_02084b38(unk32 param_2, unk32 param_3, bool param_4); bool func_ov00_02084be0(u32 param_2, unk32 param_3); void SetMapDataFlag1(unk32 param_2, bool param_3); bool GetMapDataFlag1(unk32 param_2); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 8fb7c9d4..81f11a9f 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -20,6 +20,7 @@ extern void func_ov000_02078bf0(s32 *param_1, unk32 *param_2); extern s32 func_ov000_02078fe8(s32 *param_1); extern void func_ov000_0207920c(s32 *param_1, Vec3p *param_2, s32 *param_3, s32 *param_4); extern void func_ov000_020792a0(s32 *param_1, s32 param_2, unk32 param_3, unk32 param_4); +extern void func_ov000_02079898(unk32 *param_1, unk32 param_2, unk32 param_3); extern void func_ov000_020798bc(s32 *param_1, s32 param_2); extern void func_ov000_02088000(unk32 param_1, s32 param_2); extern void func_ov000_02088130(u8 *param_1, unk32 param_2); @@ -39,12 +40,15 @@ extern s32 func_ov000_0208e704(Vec3p *param_1); extern s32 func_ov000_0208e87c(AABB *param_1, Vec3p *param_2, Vec3p *param_3); extern void func_ov000_0208ed74(AABB *param_1, Vec3p *param_2); extern void func_ov000_02093a1c(u32 *param_1, unk32 *param_2, unk32 param_3); -extern void func_ov000_02096324(s32 *param_1, s32 param_2); +extern void func_ov000_02096324(unk32 *param_1, unk32 *param_2); extern s32 *func_ov000_02096418(s32 *param_1); -extern void func_ov000_0209d6e8(s32 param_1, s32 param_2); +extern void func_ov000_0209d6e8(unk32 *param_1, unk32 *param_2); extern s32 func_ov000_0209d71c(s32 *param_1, s32 param_2); extern unk32 func_ov000_020a5e9c(unk32 *param_1); extern void func_ov000_020c3348(unk32 *param_1); +extern void func_ov000_020d70a4(unk32 *param_1, unk32 param_2, unk32 param_3, unk32 param_4); +extern void func_ov000_020d72b8(unk32 *param_1); +extern unk32 func_ov000_020d7424(unk32 *param_1); extern void func_ov004_021024c4(MapManager *param_1, s32 param_2, bool param_3, s32 param_4); extern void func_ov004_02102770(s32 *param_1); @@ -60,6 +64,7 @@ extern s32 func_ov015_02129c14(MapBase *param_1); extern bool func_ov015_02129c24(MapBase *param_1, Vec3p *param_2, Vec3p *param_3); extern bool func_ov015_02129c34(MapBase *param_1, s32 param_2); extern bool func_ov015_02129c44(MapBase *param_1, s32 param_2); +extern void func_ov015_021849a4(unk32 *param_1); extern MapBase *func_ov017_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3); extern MapBase *func_ov017_0215b4e8(MapBase *param_1, unk32 param_2, unk32 param_3); @@ -111,6 +116,8 @@ extern unk32 *data_027e0f7c; extern unk32 *data_027e103c; extern unk32 *data_ov000_020e24a4; +extern unk32 data_ov000_020eec68; +extern unk32 data_ov015_02190458; MapManager::MapManager() {} @@ -124,92 +131,62 @@ ARM void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_ this->mCourse->func_ov00_0207ca28(param_2, param_3, param_4); } -unk8 MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { - unk32 *puVar1; - unk8 uVar2; - unk32 uVar3; - s32 iVar4; - unk32 local_40; - unk32 local_3c; - unk32 local_38; - unk32 local_34; - unk16 local_30; - unk8 local_2e; - unk8 local_2d; - unk8 local_2c; - unk8 local_2b; - unk32 local_28; - unk32 local_24; - unk32 local_20; - unk32 local_1c; - unk16 local_18; - unk8 local_16; - unk8 local_15; - unk8 local_14; - unk8 local_13; +ARM void MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { + void *pvVar3; + UnkStruct_02082348 local_40[2]; - local_28 = 0x47; - local_24 = 0; - local_20 = 0; - local_1c = 0xfffffffe; - local_18 = 0; - local_16 = 0xff; - local_15 = 0; - local_14 = 0; - local_13 = 0; - if (param_2 == 0) { - this->func_ov00_02082348(&local_28); - uVar3 = func_ov000_020a5e9c(&local_28); - *param_3 = uVar3; - *(unk8 *) (param_3 + 1) = local_16; - uVar2 = local_15; + local_40[1].mUnk_00 = 0x47; + local_40[1].mUnk_04 = 0; + local_40[1].mUnk_08 = 0; + local_40[1].mUnk_0c = -2; + local_40[1].mUnk_10 = 0; + local_40[1].mUnk_12[0] = -1; + local_40[1].mUnk_12[1] = 0; + local_40[1].mUnk_12[2] = 0; + local_40[1].mUnk_12[3] = 0; + if (param_2 != 0) { + *param_3 = 0xb; + *(unk8 *) (param_3 + 1) = 2; + *(u8 *) ((int) param_3 + 5) = 4; } else { - *param_3 = 0xb; - *(unk8 *) (param_3 + 1) = 2; - uVar2 = 4; + this->func_ov00_02082348((unk32 *) &local_40[1]); + *param_3 = func_ov000_020a5e9c((unk32 *) &local_40[1]); + *(unk8 *) (param_3 + 1) = local_40[1].mUnk_12[0]; + *(u8 *) ((int) param_3 + 5) = local_40[1].mUnk_12[1]; } - *(unk8 *) ((int) param_3 + 5) = uVar2; - // uVar3 = func_ov000_020a5e9c(data_027e0d38->mUnk_28) + 0x1c; - puVar1 = (s32 *) data_027e0d38; - param_3[2] = uVar3; - *(unk8 *) (param_3 + 4) = *(unk8 *) (*(s32 *) (*(s32 *) puVar1 + 0x28) + 0x2e); - *(unk16 *) (param_3 + 5) = *(unk16 *) (*(s32 *) (*(s32 *) puVar1 + 0x28) + 0x36); - iVar4 = *(s32 *) (*(int *) puVar1 + 0x28); - param_3[6] = *(unk32 *) (iVar4 + 0x38); - param_3[7] = *(unk32 *) (iVar4 + 0x3c); - param_3[8] = *(unk32 *) (iVar4 + 0x40); - uVar3 = func_ov000_020a5e9c(puVar1 + 0x28) + 0x44; - param_3[3] = uVar3; - puVar1 = (s32 *) data_027e0d38; - *(unk8 *) ((int) param_3 + 0x11) = *(unk8 *) (*(s32 *) (*(s32 *) data_027e0d38 + 0x28) + 0x56); - iVar4 = *(s32 *) (*(s32 *) puVar1 + 0x28); - param_3[9] = *(unk32 *) (iVar4 + 0x5c); - param_3[10] = *(unk32 *) (iVar4 + 0x60); - param_3[0xb] = *(unk32 *) (iVar4 + 100); - *(unk16 *) ((int) param_3 + 0x16) = *(unk16 *) (*(s32 *) (*(s32 *) puVar1 + 0x28) + 0x68); - iVar4 = *(s32 *) (*(s32 *) puVar1 + 0x28); - local_40 = *(unk32 *) (iVar4 + 0x70); - local_3c = *(unk32 *) (iVar4 + 0x74); - local_38 = *(unk32 *) (iVar4 + 0x78); - local_34 = *(unk32 *) (iVar4 + 0x7c); - local_30 = *(unk16 *) (iVar4 + 0x80); - local_2e = *(unk8 *) (iVar4 + 0x82); - local_2d = *(unk8 *) (iVar4 + 0x83); - local_2c = *(unk8 *) (iVar4 + 0x84); - local_2b = *(unk8 *) (iVar4 + 0x85); - uVar3 = func_ov000_020a5e9c(&local_40); - param_3[0x70] = uVar3; - puVar1 = (s32 *) data_027e0f70; - *(unk8 *) ((int) param_3 + 0x1be) = local_2e; - *(unk8 *) ((int) param_3 + 0x1bf) = local_2d; - func_ov000_02096324(puVar1, *param_3); // unsure if (s32 *param_1, s32 param_2) or (s32 param_1, s32 *param_2) - func_ov000_0209d6e8(*data_027e0f7c, *param_3); + param_3[2] = func_ov000_020a5e9c((unk32 *) ((unk32) (data_027e0d38->mUnk_28) + 0x1c)); + *(u8 *) (param_3 + 4) = *(u8 *) ((int) data_027e0d38->mUnk_28 + 0x2e); + *(unk16 *) (param_3 + 5) = *(unk16 *) ((int) data_027e0d38->mUnk_28 + 0x36); + pvVar3 = data_027e0d38->mUnk_28; + param_3[6] = *(unk32 *) ((int) pvVar3 + 0x38); // Likely Vec3p + param_3[7] = *(unk32 *) ((int) pvVar3 + 0x3c); + param_3[8] = *(unk32 *) ((int) pvVar3 + 0x40); + param_3[3] = func_ov000_020a5e9c((unk32 *) ((unk32) data_027e0d38->mUnk_28 + 0x44)); + *(u8 *) ((int) param_3 + 0x11) = *(u8 *) ((int) data_027e0d38->mUnk_28 + 0x56); + pvVar3 = data_027e0d38->mUnk_28; + param_3[9] = *(unk32 *) ((int) pvVar3 + 0x5c); // Likely Vec3p + param_3[10] = *(unk32 *) ((int) pvVar3 + 0x60); + param_3[0xb] = *(unk32 *) ((int) pvVar3 + 0x64); + *(unk16 *) ((int) param_3 + 0x16) = *(unk16 *) ((int) data_027e0d38->mUnk_28 + 0x68); + pvVar3 = data_027e0d38->mUnk_28; + local_40[0].mUnk_00 = *(unk32 *) ((int) pvVar3 + 0x70); + local_40[0].mUnk_04 = *(unk32 *) ((int) pvVar3 + 0x74); + local_40[0].mUnk_08 = *(unk32 *) ((int) pvVar3 + 0x78); + local_40[0].mUnk_0c = *(unk32 *) ((int) pvVar3 + 0x7c); + local_40[0].mUnk_10 = *(unk16 *) ((int) pvVar3 + 0x80); + local_40[0].mUnk_12[0] = *(u8 *) ((int) pvVar3 + 0x82); + local_40[0].mUnk_12[1] = *(u8 *) ((int) pvVar3 + 0x83); + local_40[0].mUnk_12[2] = *(u8 *) ((int) pvVar3 + 0x84); + local_40[0].mUnk_12[3] = *(u8 *) ((int) pvVar3 + 0x85); + param_3[0x70] = func_ov000_020a5e9c((unk32 *) &local_40[0]); + *(u8 *) ((int) param_3 + 0x1be) = local_40[0].mUnk_12[0]; + *(u8 *) ((int) param_3 + 0x1bf) = local_40[0].mUnk_12[1]; + func_ov000_02096324(data_027e0f70, param_3); + func_ov000_0209d6e8(data_027e0f7c, param_3); if (this->mCourse->mType != CourseType_TempleOfTheOceanKing) { - *(unk8 *) ((int) param_3 + 7) = this->mUnk_08; + *(unk8 *) ((int) param_3 + 7) = (u8) this->mUnk_08; *(unk8 *) (param_3 + 0x6f) = this->mUnk_09; - return; } - return; } ARM void MapManager::func_ov00_0208230c(s32 *param_2) { @@ -388,29 +365,31 @@ ARM void MapManager::MapData_vfunc_44() { } ARM void MapManager::func_ov00_02082808(s32 param_2) { - if (*(int *) (*(int *) data_027e0d38 + 0x14) == 1) { + int iVar1; + int iVar2; + + if (data_027e0d38->mUnk_14 == 1) { return; } - s32 var1 = this->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) { + iVar1 = this->func_ov00_02084740(); + if (param_2 != 0) { + iVar2 = func_ov000_020a5e9c(&data_027e0d38->mUnk_0c); + if (iVar2 == 0) { + func_ov015_021849a4(&data_ov015_02190458); + } + func_ov000_020d70a4(&data_ov000_020eec68, iVar1, 0, 0x7f); + } else { + iVar2 = func_ov000_020d7424(&data_ov000_020eec68); + if (iVar1 == iVar2) { return; } - // func_ov000_020d70a4(DWORD_overlay_d_0_bss__020eec68, var1, 0, 0x7f, param_3); // And these? - } else { - var2 = func_ov000_020a5e9c((unk32 *) data_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_3); + func_ov000_020d70a4(&data_ov000_020eec68, iVar1, 0, 0x7f); } - var1 = func_ov000_020a5e9c((unk32 *) data_027e0d38 + 0xc); - if (var1 == 0) { + iVar1 = func_ov000_020a5e9c(&data_027e0d38->mUnk_0c); + if (iVar1 == 0) { return; } - // func_ov00_020d72b8(DWORD_overlay_d_0_bss__020eec68); + func_ov000_020d72b8(&data_ov000_020eec68); } ARM s32 MapManager::MapData_vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]) { @@ -430,78 +409,73 @@ ARM u8 MapManager::GetNumMaps() { } ARM s32 MapManager::func_ov00_02082914(unk32 param_2) { - int iVar1; - int iVar2; + void *pvVar1; int iVar3; int iVar4; - int local_50; - int local_48; + int iVar5; + Vec3p pVar1; 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; + pvVar1 = data_027e0d38->mUnk_28; + local_30.mPos.x = *(int *) ((int) pvVar1 + 0x5c); + local_30.mPos.y = *(int *) ((int) pvVar1 + 0x60); + local_30.mPos.z = *(int *) ((int) pvVar1 + 100); + local_30.mAngle = *(unk16 *) ((int) pvVar1 + 0x68); + local_30.mId = *(unk8 *) ((int) pvVar1 + 0x6a); + local_30.mUnk_10 = *(int *) ((int) pvVar1 + 0x6c); + iVar3 = this->mMap->AddEntrance(&local_30); + return iVar3; + case 0xfb: + case 0xfc: + case 0xfd: case 0xfe: break; - default: goto switchD_overlay_d_0; + default: return (int) this; } - local_44.mId = 0xff; + local_44.mId = -1; 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; + pvVar1 = data_027e0d38->mUnk_28; + pVar1 = *(Vec3p *) ((int) pvVar1 + 0x38); + iVar3 = 0x2000; + iVar4 = 0x2000; + iVar5 = 0xfd; if (this->mCourse->mType == CourseType_Sea) { - iVar1 = this->mMap->vfunc_88(); - iVar1 = iVar1 + 0xa000; - iVar3 = this->mMap->vfunc_8c(); + iVar3 = this->mMap->vfunc_88(); iVar3 = iVar3 + 0xa000; - iVar4 = 0xfe; + iVar4 = this->mMap->vfunc_8c(); + iVar4 = iVar4 + 0xa000; + iVar5 = 0xfe; } local_44.mAngle = 0; switch (param_2) { case 0xfb: - local_48 = this->GetMapMaxZ(); - local_48 = local_48 - iVar3; + pVar1.z = this->GetMapMaxZ(); + pVar1.z = pVar1.z - iVar4; local_44.mAngle = 0x8000; break; case 0xfc: - local_48 = this->GetMapMinZ(); - local_48 = iVar3 + local_48; + pVar1.z = this->GetMapMinZ(); + pVar1.z = iVar4 + pVar1.z; local_44.mAngle = 0; break; case 0xfd: - local_50 = this->GetMapMaxX(); - local_50 = local_50 - iVar1; + pVar1.x = GetMapMaxX(); + pVar1.x = pVar1.x - iVar3; local_44.mAngle = 0xc000; break; case 0xfe: - local_50 = this->GetMapMinX(); - local_50 = iVar1 + local_50; + pVar1.x = GetMapMinX(); + pVar1.x = iVar3 + pVar1.x; 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 ??????? + local_44.mId = (unk8) param_2; + local_44.mPos.x = pVar1.x; + local_44.mPos.z = pVar1.z; + local_44.mPos.y = pVar1.y; + local_44.mUnk_10 = iVar5; + return this->mMap->AddEntrance(&local_44); } ARM void MapManager::func_ov00_02082acc() { @@ -1004,27 +978,23 @@ ARM bool MapManager::GetOverlappingTrigger(Vec3p *param_2) { } ARM bool MapManager::func_ov00_02083790(s32 param_2) { - unk8 *puVar1; - unk8 *puVar2; - bool bVar3; - s32 iVar4; - s32 iStack_18; - s32 aiStack_14[2]; + bool bVar1; + int iVar2; + int aiStack_14; + int iStack_18; - // puVar2 = PTR_PTR_overlay_d_0__02083834; - // puVar1 = PTR_DWORD_overlay_d_0__02083830; - if (param_2 != 0) { - // *(s32 *) (*(s32 *) (*(s32 *) PTR_DWORD_overlay_d_0__02083830 + 8) + 0x1b4) = param_2; - *(s32 *) (*(s32 *) (*(s32 *) puVar1 + 4) + 0x1b4) = param_2; - // iVar4 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) puVar2); - if ((iVar4 != 0) && (bVar3 = this->func_ov00_02082e1c(aiStack_14, &iStack_18), !bVar3)) { - // FUN_overlay_d_0__02079898(*(undefined4 *) PTR_DWORD_overlay_d_0__02083838, param_2, 0x10); - gActorManager->func_ov00_020c3ce8(param_2, true); - } - bVar3 = this->mMap->AnyTrigger_func_0c(param_2); - return bVar3; + if (param_2 == 0) { + return true; } - return true; + *(int *) (*(int *) (*(unk32 *) data_027e0f64 + 8) + 0x1b4) = param_2; + *(int *) (*(int *) (*(unk32 *) data_027e0f64 + 4) + 0x1b4) = param_2; + iVar2 = data_027e0d38->func_ov000_02078b40(); + if ((iVar2 != 0) && (bVar1 = this->func_ov00_02082e1c(&aiStack_14, &iStack_18), !bVar1)) { + func_ov000_02079898(data_027e0d3c, param_2, 0x10); + gActorManager->func_ov00_020c3ce8(param_2, true); + } + bVar1 = this->mMap->AnyTrigger_func_0c(param_2); + return bVar1; } ARM bool MapManager::func_ov00_02083840(s32 param_2) { @@ -1195,16 +1165,11 @@ ARM s32 MapManager::func_ov00_02083c50(unk32 z) { } ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2b *param_3) { - q20 x; - q20 z; - q20 y; Vec3p local_28; - x = this->func_ov00_02083c24(param_3->x); - param_2->x = x; - z = this->func_ov00_02083c50(param_3->y); - param_2->z = z; - y = this->MapData_vfunc_68(&local_28, true); - param_2->y = y; + param_2->x = this->func_ov00_02083c24(param_3->x); + param_2->z = this->func_ov00_02083c50(param_3->y); + local_28 = *param_2; + param_2->y = this->MapData_vfunc_68(&local_28, true); } ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5) { @@ -1627,7 +1592,7 @@ ARM s32 MapManager::func_ov00_02084700(MapManager *pMapManager) { return iVar1; } -unk8 MapManager::func_ov00_02084740() { +unk32 MapManager::func_ov00_02084740() { static const s32 data_ov000_020d88f0[] = { // Map IDs? 0x51, 0x6e, 0x65, 0x50, 0x30, 0x74, 0x49, 0x50, 0x51, 0x54, 0x52, 0x53, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5f, @@ -1831,25 +1796,22 @@ bool MapManager::GetBlueWarpOpen() { return this->mCourse->mBlueWarpOpen; } -unk8 MapManager::func_ov00_02084b38(unk32 param_2, unk32 param_3, unk32 param_4) { +unk8 MapManager::func_ov00_02084b38(unk32 param_2, unk32 param_3, bool param_4) { MapBase *pMVar1; - bool value; - if (param_2 != 0) { - // value = SUB41(param_4, 0); // What is SUB41 and where is it defined? switch (param_3) { case 0: pMVar1 = this->mMap; - if (param_4 == 0) { + if (!param_4) { pMVar1->mUnk_180[param_2 >> 5].mUnk_0 = pMVar1->mUnk_180[param_2 >> 5].mUnk_0 & ~(1 << (param_2 & 0x1f)); return; } pMVar1->mUnk_180[param_2 >> 5].mUnk_0 = pMVar1->mUnk_180[param_2 >> 5].mUnk_0 | 1 << (param_2 & 0x1f); - return; - case 1: this->mCourse->SetMapDataFlag0(param_2, value); return; - case 2: this->mCourse->SetFlag0(param_2, value); return; - case 3: this->mCourse->SetFlag1(param_2, value); return; - default: return; + break; + case 1: this->mCourse->SetMapDataFlag0(param_2, param_4); break; + case 2: this->mCourse->SetFlag0(param_2, param_4); break; + case 3: this->mCourse->SetFlag1(param_2, param_4); break; + default: break; } } } From 0d060f1d81066b141bba92578c7f839130dc1b2b Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Thu, 8 May 2025 14:10:16 +0200 Subject: [PATCH 47/62] Decomp progress 43% --- config/eur/arm9/overlays/ov000/symbols.txt | 16 +- include/Map/MapBase.hpp | 4 +- include/Map/MapManager.hpp | 22 +-- src/00_Core/Actor/Actor.cpp | 2 +- src/00_Core/Map/MapBase.cpp | 4 +- src/00_Core/Map/MapManager.cpp | 173 ++++++++++----------- src/04_Load/Map/MapManager.cpp | 2 +- 7 files changed, 104 insertions(+), 119 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 1e8e4fb5..d5000af6 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -520,7 +520,7 @@ _ZN10MapManager18func_ov00_020826a0Eii kind:function(arm,size=0x20) addr:0x20826 _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_02082808Ei kind:function(arm,size=0xb8) addr:0x2082808 +_ZN10MapManager18func_ov00_02082808Eb kind:function(arm,size=0xb8) addr:0x2082808 _ZN10MapManager16MapData_vfunc_7cEiPiiPs kind:function(arm,size=0x20) addr:0x20828c0 _ZN10MapManager16MapData_vfunc_84Ei kind:function(arm,size=0x18) addr:0x20828e0 _ZN10MapManager18func_ov00_020828f8EPi kind:function(arm,size=0x10) addr:0x20828f8 @@ -529,7 +529,7 @@ _ZN10MapManager18func_ov00_02082914Ei kind:function(arm,size=0x1b8) addr:0x20829 _ZN10MapManager18func_ov00_02082accEv kind:function(arm,size=0x10) addr:0x2082acc _ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082adc _ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x2082af4 -_ZN10MapManager18func_ov00_02082b3cEi kind:function(arm,size=0x1cc) addr:0x2082b3c +_ZN10MapManager18func_ov00_02082b3cEPi kind:function(arm,size=0x1cc) addr:0x2082b3c _ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x2082d08 _ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x2082d28 _ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x2082d34 @@ -539,7 +539,7 @@ _ZN10MapManager18func_ov00_02082d84EP5Vec2bPiS2_ kind:function(arm,size=0x98) ad _ZN10MapManager18func_ov00_02082e1cEPiS0_ kind:function(arm,size=0x250) addr:0x2082e1c _ZN10MapManager18func_ov00_0208306cEPiS0_ kind:function(arm,size=0xf0) addr:0x208306c _ZN10MapManager18func_ov00_0208315cEPiS0_ kind:function(arm,size=0xe8) addr:0x208315c -_ZN10MapManager18func_ov00_02083244EjPiS0_S0_ kind:function(arm,size=0x54) addr:0x2083244 +_ZN10MapManager18func_ov00_02083244EjP5Vec3pPiS2_ kind:function(arm,size=0x54) addr:0x2083244 _ZN10MapManager18func_ov00_02083298EjP5Vec3pPiS2_ kind:function(arm,size=0x74) addr:0x2083298 _ZN10MapManager21GetCourseData_Unk_25cEv kind:function(arm,size=0xc) addr:0x208330c _ZN10MapManager15IsMapInMainGridEj kind:function(arm,size=0x10) addr:0x2083318 @@ -567,7 +567,7 @@ _ZN10MapManager18func_ov00_0208346cEP4AABB kind:function(arm,size=0x50) addr:0x2 _ZN10MapManager18func_ov00_020834bcEP5Vec3pii kind:function(arm,size=0x68) addr:0x20834bc _ZN10MapManager18func_ov00_02083524EP5Vec3pii kind:function(arm,size=0x3c) addr:0x2083524 _ZN10MapManager18func_ov00_02083560EP5Vec2bPS_j kind:function(arm,size=0x10) addr:0x2083560 -_ZN10MapManager18func_ov00_02083570Eii kind:function(arm,size=0x18) addr:0x2083570 +_ZN10MapManager18func_ov00_02083570Ehh kind:function(arm,size=0x18) addr:0x2083570 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x2083588 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x20835a4 _ZN10MapManager18func_ov00_020835b4Ev kind:function(arm,size=0x10) addr:0x20835b4 @@ -612,11 +612,11 @@ _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083c5 _ZN10MapManager18func_ov00_02083c7cEP5Vec3pP5Vec2b kind:function(arm,size=0x6c) addr:0x2083c7c _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083ce8 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 -_ZN10MapManager16MapData_vfunc_60EPh kind:function(arm,size=0x18) addr:0x2083e58 -_ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e70 +_ZN10MapManager16MapData_vfunc_60EP5Vec2b kind:function(arm,size=0x18) addr:0x2083e58 +_ZN10MapManager18func_ov00_02083e70EP5Vec2b kind:function(arm,size=0x70) addr:0x2083e70 _ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x2083ee0 -_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083ef8 -_ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083f44 +_ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_b kind:function(arm,size=0x4c) addr:0x2083ef8 +_ZN10MapManager18func_ov00_02083f44EP5Vec3pb kind:function(arm,size=0x3c) addr:0x2083f44 _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f80 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f98 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083fb0 diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index e3731194..e3152676 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -138,9 +138,9 @@ public: /* 54 */ virtual unk32 vfunc_54(Vec2b *param_1); /* 58 */ virtual unk32 vfunc_58(Vec2b *param_1, int param_2); /* 5c */ virtual unk32 vfunc_5c(); - /* 60 */ virtual unk32 vfunc_60(u8 *param_1); + /* 60 */ virtual unk32 vfunc_60(Vec2b *param_1); /* 64 */ virtual unk32 vfunc_64(); - /* 68 */ virtual unk8 vfunc_68(Vec3p *param_1, bool param_2); + /* 68 */ virtual unk32 vfunc_68(Vec3p *param_1, bool param_2); /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); /* 74 */ virtual s32 *vfunc_74(Vec3p *param_2); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index b1bce31f..6a4598d1 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -32,8 +32,8 @@ public: /* 04 */ MapBase *mMap; /* 08 */ unk8 mUnk_08; /* 09 */ u8 mUnk_09; - /* 0a */ unk8 mUnk_0a; - /* 0b */ unk8 mUnk_0b; + /* 0a */ bool mUnk_0a; + /* 0b */ bool mUnk_0b; /* 0c */ u8 mUnk_0c; /* 0d */ unk8 mUnk_0d; /* 0e */ unk8 mUnk_0e; @@ -77,7 +77,7 @@ public: void CreateMap(unk32 mapType, unk32 param_3, unk32 param_4); void DestroyMap(); void MapData_vfunc_44(); - void func_ov00_02082808(s32 param_2); + void func_ov00_02082808(bool param_2); s32 MapData_vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]); void MapData_vfunc_84(unk32 param_2); bool func_ov00_020828f8(s32 *param_2); @@ -86,7 +86,7 @@ public: void func_ov00_02082acc(); unk32 *func_ov00_02082adc(); void func_ov00_02082af4(); - bool func_ov00_02082b3c(s32 param_2); + bool func_ov00_02082b3c(unk32 *param_2); u8 func_ov00_02082d08(); u8 GetCurrentMapPosX(); u8 GetCurrentMapPosY(); @@ -96,7 +96,7 @@ public: bool func_ov00_02082e1c(s32 *param_2, s32 *param_3); void func_ov00_0208306c(s32 *param_2, s32 *param_3); 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_02083244(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5); void func_ov00_02083298(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5); bool GetCourseData_Unk_25c(); bool IsMapInMainGrid(u32 map); @@ -124,7 +124,7 @@ public: void func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4); void func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4); static void func_ov00_02083560(Vec2b *param_1, MapManager *param_2, u32 param_3); - u8 func_ov00_02083570(unk32 param_2, unk32 param_3); + u8 func_ov00_02083570(u8 param_2, u8 param_3); unk32 func_ov00_02083588(); unk32 func_ov00_020835a4(); unk32 func_ov00_020835b4(); @@ -169,11 +169,11 @@ public: void func_ov00_02083c7c(Vec3p *param_2, Vec2b *param_3); static void func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5); s32 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); - unk32 MapData_vfunc_60(u8 *param_1); - bool func_ov00_02083e70(); + unk32 MapData_vfunc_60(Vec2b *param_1); + bool func_ov00_02083e70(Vec2b *param_2); unk32 MapData_vfunc_68(Vec3p *param_1, bool param_2); - s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3); - unk32 func_ov00_02083f44(Vec3p *param_2); + s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, bool param_4); + unk32 func_ov00_02083f44(Vec3p *param_2, bool param_3); unk8 MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); unk32 MapData_vfunc_70(Vec3p *param_2); static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); @@ -253,7 +253,7 @@ public: static void LoadMapTexSprites(s32 param1); void func_ov004_02102260(); void func_ov004_02102264(unk32 *param1, char *param2); - void func_ov004_021024c4(s32 param1, unk32 param2, unk32 param3); + void func_ov004_021024c4(unk32 *param1, unk32 param2, bool param3); void func_ov004_021025d8(); }; diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index 2cbed755..3c699ddc 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -870,7 +870,7 @@ ARM bool Actor::func_ov00_020c3094() { Vec3p pos, prevPos; Vec3p_Copy(&mPos, &pos); Vec3p_Copy(&mPrevPos, &prevPos); - s32 unk1 = gMapManager->func_ov00_02083ef8(&pos, &prevPos); + s32 unk1 = gMapManager->func_ov00_02083ef8(&pos, &prevPos, false); if (mPos.y <= unk1) { result = true; mPos.y = unk1; diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 6821df52..fbf010e9 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -21,9 +21,9 @@ unk32 MapBase::vfunc_50() {} unk32 MapBase::vfunc_54(Vec2b *param_1) {} unk32 MapBase::vfunc_58(Vec2b *param_1, int param_2) {} unk32 MapBase::vfunc_5c() {} -unk32 MapBase::vfunc_60(u8 *param_1) {} +unk32 MapBase::vfunc_60(Vec2b *param_1) {} unk32 MapBase::vfunc_64() {} -unk8 MapBase::vfunc_68(Vec3p *param_1, bool param_2) {} +unk32 MapBase::vfunc_68(Vec3p *param_1, bool param_2) {} unk8 MapBase::func_ov00_0207e940(unk8 *param_1) {} unk8 MapBase::func_ov00_0207e968() {} unk8 MapBase::func_ov00_0207e96c() {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 81f11a9f..1ec099d4 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -56,6 +56,7 @@ extern void func_ov004_02102b28(s32 *param_1); extern void func_ov004_02102e3c(s32 *param_1); extern void func_ov004_02105578(ActorManager *param_1, u32 param_2); extern void func_ov004_02105608(ActorManager *param_1, unk32 param_2, unk32 param_3, unk32 param_4); +extern void func_ov004_02106db8(unk32 *param_1); // UnkStruct_027e0c68 doesn't exist, so using unk32 extern MapBase *func_ov012_0212b358(MapBase *param_1, unk32 param_2, unk32 param_3); @@ -73,13 +74,17 @@ extern MapBase *func_ov017_0215b4e8(MapBase *param_1, unk32 param_2, unk32 param struct astruct_16 {}; // What is this struct? +// This might be FlagsUnk2 struct UnkStruct_02082348 { /* 00 */ unk32 mUnk_00; /* 04 */ unk32 mUnk_04; /* 08 */ unk32 mUnk_08; /* 0c */ unk32 mUnk_0c; /* 10 */ unk16 mUnk_10; - /* 12 */ u8 mUnk_12[0x4]; + /* 12 */ u8 mUnk_12; + /* 13 */ u8 mUnk_13; + /* 14 */ u8 mUnk_14; + /* 15 */ u8 mUnk_15; /* 16 */ }; @@ -135,15 +140,15 @@ ARM void MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { void *pvVar3; UnkStruct_02082348 local_40[2]; - local_40[1].mUnk_00 = 0x47; - local_40[1].mUnk_04 = 0; - local_40[1].mUnk_08 = 0; - local_40[1].mUnk_0c = -2; - local_40[1].mUnk_10 = 0; - local_40[1].mUnk_12[0] = -1; - local_40[1].mUnk_12[1] = 0; - local_40[1].mUnk_12[2] = 0; - local_40[1].mUnk_12[3] = 0; + local_40[1].mUnk_00 = 0x47; + local_40[1].mUnk_04 = 0; + local_40[1].mUnk_08 = 0; + local_40[1].mUnk_0c = -2; + local_40[1].mUnk_10 = 0; + local_40[1].mUnk_12 = -1; + local_40[1].mUnk_13 = 0; + local_40[1].mUnk_14 = 0; + local_40[1].mUnk_15 = 0; if (param_2 != 0) { *param_3 = 0xb; *(unk8 *) (param_3 + 1) = 2; @@ -151,8 +156,8 @@ ARM void MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { } else { this->func_ov00_02082348((unk32 *) &local_40[1]); *param_3 = func_ov000_020a5e9c((unk32 *) &local_40[1]); - *(unk8 *) (param_3 + 1) = local_40[1].mUnk_12[0]; - *(u8 *) ((int) param_3 + 5) = local_40[1].mUnk_12[1]; + *(unk8 *) (param_3 + 1) = local_40[1].mUnk_12; + *(u8 *) ((int) param_3 + 5) = local_40[1].mUnk_13; } param_3[2] = func_ov000_020a5e9c((unk32 *) ((unk32) (data_027e0d38->mUnk_28) + 0x1c)); *(u8 *) (param_3 + 4) = *(u8 *) ((int) data_027e0d38->mUnk_28 + 0x2e); @@ -174,13 +179,13 @@ ARM void MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { local_40[0].mUnk_08 = *(unk32 *) ((int) pvVar3 + 0x78); local_40[0].mUnk_0c = *(unk32 *) ((int) pvVar3 + 0x7c); local_40[0].mUnk_10 = *(unk16 *) ((int) pvVar3 + 0x80); - local_40[0].mUnk_12[0] = *(u8 *) ((int) pvVar3 + 0x82); - local_40[0].mUnk_12[1] = *(u8 *) ((int) pvVar3 + 0x83); - local_40[0].mUnk_12[2] = *(u8 *) ((int) pvVar3 + 0x84); - local_40[0].mUnk_12[3] = *(u8 *) ((int) pvVar3 + 0x85); + local_40[0].mUnk_12 = *(u8 *) ((int) pvVar3 + 0x82); + local_40[0].mUnk_13 = *(u8 *) ((int) pvVar3 + 0x83); + local_40[0].mUnk_14 = *(u8 *) ((int) pvVar3 + 0x84); + local_40[0].mUnk_15 = *(u8 *) ((int) pvVar3 + 0x85); param_3[0x70] = func_ov000_020a5e9c((unk32 *) &local_40[0]); - *(u8 *) ((int) param_3 + 0x1be) = local_40[0].mUnk_12[0]; - *(u8 *) ((int) param_3 + 0x1bf) = local_40[0].mUnk_12[1]; + *(u8 *) ((int) param_3 + 0x1be) = local_40[0].mUnk_12; + *(u8 *) ((int) param_3 + 0x1bf) = local_40[0].mUnk_13; func_ov000_02096324(data_027e0f70, param_3); func_ov000_0209d6e8(data_027e0f7c, param_3); if (this->mCourse->mType != CourseType_TempleOfTheOceanKing) { @@ -198,15 +203,15 @@ ARM void MapManager::func_ov00_0208230c(s32 *param_2) { ARM void MapManager::func_ov00_02082348(unk32 *param_2) { UnkStruct_02082348 unkStruct; - unkStruct.mUnk_00 = 0x47; - unkStruct.mUnk_04 = 0; - unkStruct.mUnk_08 = 0; - unkStruct.mUnk_0c = -2; - unkStruct.mUnk_10 = 0; - unkStruct.mUnk_12[0] = -1; - unkStruct.mUnk_12[1] = 0; - unkStruct.mUnk_12[2] = 0; - unkStruct.mUnk_12[3] = 0; + unkStruct.mUnk_00 = 0x47; + unkStruct.mUnk_04 = 0; + unkStruct.mUnk_08 = 0; + unkStruct.mUnk_0c = -2; + unkStruct.mUnk_10 = 0; + unkStruct.mUnk_12 = -1; + unkStruct.mUnk_13 = 0; + unkStruct.mUnk_14 = 0; + unkStruct.mUnk_15 = 0; this->func_ov00_0208230c((s32 *) &unkStruct); func_ov000_02078bf0((s32 *) &unkStruct, param_2); } @@ -364,7 +369,7 @@ ARM void MapManager::MapData_vfunc_44() { this->mMap->vfunc_44(); } -ARM void MapManager::func_ov00_02082808(s32 param_2) { +ARM void MapManager::func_ov00_02082808(bool param_2) { int iVar1; int iVar2; @@ -372,7 +377,7 @@ ARM void MapManager::func_ov00_02082808(s32 param_2) { return; } iVar1 = this->func_ov00_02084740(); - if (param_2 != 0) { + if (!param_2) { iVar2 = func_ov000_020a5e9c(&data_027e0d38->mUnk_0c); if (iVar2 == 0) { func_ov015_021849a4(&data_ov015_02190458); @@ -489,12 +494,12 @@ ARM s32 *MapManager::func_ov00_02082adc() { ARM void MapManager::func_ov00_02082af4() { func_ov000_0208cc88(data_027e0f68); this->mMap->vfunc_48(); - this->func_ov00_02082808(0); - this->mUnk_0a = 1; - this->mUnk_0b = 0; + this->func_ov00_02082808(false); + this->mUnk_0a = true; + this->mUnk_0b = false; } -bool MapManager::func_ov00_02082b3c(s32 param_2) { +bool MapManager::func_ov00_02082b3c(unk32 *param_2) { u8 bVar1; PlayerBase *puVar2; u16 uVar3; @@ -514,15 +519,15 @@ bool MapManager::func_ov00_02082b3c(s32 param_2) { gAdventureFlags->func_ov00_020976c8(); puVar2 = gPlayer; this->mUnk_0c = *(unk32 *) (param_2 + 0x13); - // (**(code **) (**(int **) puVar2 + 0x38))(*(int **) puVar2, *(unk32 *) (param_2 + 0x13), 0); - // UnkStruct_027e0c68::FUN_overlay_d_4__02106db8((UnkStruct_027e0c68 *) PTR_DWORD_overlay_d_0__02082d04); + // puVar2->TeleportToEntrance(*(unk32 *) (param_2 + 0x13), false); + // (**(code **) (**(int **) puVar2 + 0x38))(*(int **) puVar2, *(unk32 *) (param_2 + 0x13), 0); + // func_ov004_02106db8(data_027e0c68); this->mMap->vfunc_18(); } else { gAdventureFlags->func_ov00_020976c8(); func_ov000_0208b13c(data_027e0f64); - pAVar6 = gActorManager; - uVar5 = this->func_ov00_02082d08(); - func_ov004_02105608(pAVar6, local_18 & 0xff, local_18 >> 8 & 0xff, uVar5); + uVar5 = this->func_ov00_02082d08(); + gActorManager->func_ov004_02105608(local_18 & 0xff, local_18 >> 8 & 0xff, uVar5); this->mMap->vfunc_2c(); func_ov004_02102b28(data_027e0f68); func_ov004_02102770(data_027e0f6c); @@ -532,8 +537,9 @@ bool MapManager::func_ov00_02082b3c(s32 param_2) { uVar4 = this->mCourse->FindMapData_Unk_04((u32) bVar1); (this->mCourse->mCurrMapPos).x = (u8) local_18; (this->mCourse->mCurrMapPos).y = (u8) * (&local_18 + 0x4); // I assume this is what Ghidra means by "local_18._1_1_" - func_ov004_021024c4(param_2, uVar3 != uVar4, 0); + this->func_ov004_021024c4(param_2, uVar3 != uVar4, 0); func_ov004_02105578(gActorManager, (u32) * (u8 *) (param_2 + 0x12)); + // data_027e0d3c-> // UnkStruct_027e0103c::thunk_FUN_overlay_d_0__020cf7e8(*PTR_PTR_overlay_d_0__02082cfc); } return true; @@ -715,40 +721,24 @@ ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) { this->func_ov00_02083298(uVar1, &local_20, param_2, param_3); } -ARM void MapManager::func_ov00_02083244(u32 param_2, s32 *param_3, s32 *param_4, s32 *param_5) { - unk8 *puVar1; - - // puVar1 = PTR_MapManager_Unk2_overlay_d_0__020e24e8.field1_0x4_overlay_d_0__02083294; // What is this? mMap? - if (3 < param_2) { // Objdiff wants (4 < param_2), why is that? +ARM void MapManager::func_ov00_02083244(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5) { + if (4 <= param_2) { param_2 = 0; } - /* *param_4 = - (*param_3 - *(s32 *) (PTR_MapManager_Unk2_overlay_d_0__020e24e8_overlay_d_0__02083290 + param_2 * 8)) + 0x800 >> 0xc;*/ - *param_5 = (param_3[2] - *(s32 *) (puVar1 + param_2 * 8)) + 0x800 >> 0xc; + // *param_4 = (param_3->x - (&data_ov000_020e24e8)[param_2].mUnk_00) + 0x800 >> 0xc; + // *param_5 = (param_3->z - (&data_ov000_020e24ec)[param_2].mUnk_04) + 0x800 >> 0xc; } ARM void MapManager::func_ov00_02083298(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5) { - if (3 < param_2) { // Objdiff wants (4 < param_2), why is that? + if (3 < param_2) { param_2 = 0; } - /* *param_4 = - *(s32 *) (PTR_MapManager_Unk1_overlay_d_0__020e24c8_overlay_d_0__02083300 + param_2 * 8) + - ((*param_3 - *(s32 *) (PTR_MapManager_Unk2_overlay_d_0__020e24e8_overlay_d_0__020832fc + param_2 * 8) >> 1) + 0x800 >> - 0xc); + /* + *param_4 = + (&data_ov000_020e24c8)[param_2].mUnk_00 + ((param_3->x - (&data_ov000_020e24e8)[param_2].mUnk_00 >> 1) + 0x800 >> 0xc); *param_5 = - *(s32 *) (PTR_MapManager_Unk1_overlay_d_0__020e24c8.field1_0x4_overlay_d_0__02083308 + param_2 * 8) + - ((param_3[2] - *(s32 *) (PTR_MapManager_Unk2_overlay_d_0__020e24e8.field1_0x4_overlay_d_0__02083304 + param_2 * 8) >> - 1) + - 0x800 >> - 0xc); */ - - // [!] BELOW IS NOT CODE: - // PTR_MapManager_Unk1_overlay_d_0__020e24c8_overlay_d_0__02083300 - // PTR_MapManager_Unk2_overlay_d_0__020e24e8_overlay_d_0__020832fc - // PTR_MapManager_Unk1_overlay_d_0__020e24c8.field1_0x4_overlay_d_0__02083308 - // PTR_MapManager_Unk2_overlay_d_0__020e24e8.field1_0x4_overlay_d_0__02083304 - // - // What are these pointers and fields? How should they be defined? + (&data_ov000_020e24c8)[param_2].mUnk_04 + ((param_3->z - (&data_ov000_020e24e8)[param_2].mUnk_04 >> 1) + 0x800 >> 0xc); + */ } ARM bool MapManager::GetCourseData_Unk_25c() { @@ -881,7 +871,7 @@ ARM void MapManager::func_ov00_02083560(Vec2b *param_1, MapManager *param_2, u32 param_2->mCourse->FindMapGridPos(param_1, param_2->mCourse, param_3); } -ARM u8 MapManager::func_ov00_02083570(unk32 param_2, unk32 param_3) { +ARM u8 MapManager::func_ov00_02083570(u8 param_2, u8 param_3) { return this->mCourse->mMapGrid[param_2][param_3]; } @@ -1213,61 +1203,56 @@ ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 p } ARM s32 MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) { - u8 local_8; - u8 local_7; + Vec2b local_8; // unk16 uStack_6; // Unused. // uStack_6 = (unk16) ((u32) param_4 >> 0x10); - local_8 = param_2; // Likely a struct - *(&local_8 + 1) = param_3; + local_8.x = param_2; // Likely a struct + local_8.y = param_3; return this->mMap->vfunc_60(&local_8); } -ARM unk32 MapManager::MapData_vfunc_60(u8 *param_1) { // should the param be bool*? +ARM unk32 MapManager::MapData_vfunc_60(Vec2b *param_1) { // should the param be bool*? return this->mMap->vfunc_60(param_1); } -ARM bool MapManager::func_ov00_02083e70() { +ARM bool MapManager::func_ov00_02083e70(Vec2b *param_2) { int iVar1; int iVar2; - iVar1 = this->MapData_vfunc_54(0); - if (iVar1 < 0x2c) { - if ((0x2a < iVar1) || (iVar1 == 0x1b)) { - return true; - } - } else if (((iVar1 < 0x50) && (0x4d < iVar1)) && (iVar1 == 0x4e || iVar1 == 0x4f)) { - return true; + iVar1 = this->MapData_vfunc_54(param_2); + + switch (iVar1) { + case 0x1b: + case 0x2b: + case 0x4e: + case 0x4f: return true; } - iVar1 = this->MapData_vfunc_60(0); + + iVar1 = this->MapData_vfunc_60(param_2); iVar2 = this->GetMapData_Unk_48(); - return iVar2 <= iVar1; + return iVar1 >= iVar2; } ARM unk32 MapManager::MapData_vfunc_68(Vec3p *param_1, bool param_2) { return this->mMap->vfunc_68(param_1, param_2); } -ARM s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3) { - int iVar1; - Vec3p local_18; +ARM s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, bool param_4) { + Vec3p local_18 = *param_2; - local_18.x = param_2->x; - local_18.z = param_2->z; - local_18.y = param_2->y; - if (param_2->y < param_3->y) { + if (param_3->y > local_18.y) { local_18.y = param_3->y; } - iVar1 = this->mMap->vfunc_68(&local_18, 0); // takes no args. - return iVar1; + return this->mMap->vfunc_68(&local_18, param_4); } -ARM unk32 MapManager::func_ov00_02083f44(Vec3p *param_2) { +ARM unk32 MapManager::func_ov00_02083f44(Vec3p *param_2, bool param_3) { Vec3p local_18; local_18 = *param_2; local_18.y = *(data_ov000_020e24a4 + 0x8); - return this->func_ov00_02083ef8(param_2, &local_18); + return this->func_ov00_02083ef8(param_2, &local_18, param_3); } unk8 MapManager::MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) { @@ -1457,7 +1442,7 @@ unk8 MapManager::func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3) { this->mMap->func_ov00_0207f630(param_2, param_3); this->GetMapMinBounds(&VStack_18); Vec3p_Add(param_3, &VStack_18, param_3); - iVar1 = this->MapData_vfunc_68(param_3, true); // is this correct? + iVar1 = this->MapData_vfunc_68(param_3, true); param_3->y = iVar1; } @@ -1987,7 +1972,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { } } } - iVar2 = this->func_ov00_02083e70(/*auStack_18*/); + iVar2 = this->func_ov00_02083e70(auStack_18); if (iVar2 != 0) { return 0; } diff --git a/src/04_Load/Map/MapManager.cpp b/src/04_Load/Map/MapManager.cpp index 74f9c617..e171f8be 100644 --- a/src/04_Load/Map/MapManager.cpp +++ b/src/04_Load/Map/MapManager.cpp @@ -7,5 +7,5 @@ void MapManager::Destroy() {} void MapManager::LoadMapTexSprites(s32 param1) {} void MapManager::func_ov004_02102260() {} void MapManager::func_ov004_02102264(unk32 *param1, char *param2) {} -void MapManager::func_ov004_021024c4(s32 param1, unk32 param2, unk32 param3) {} +void MapManager::func_ov004_021024c4(unk32 *param1, unk32 param2, bool param3) {} void MapManager::func_ov004_021025d8() {} From ef6c7422a9e33b2870aaec64c45b00c243452b85 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 11 May 2025 12:09:39 +0200 Subject: [PATCH 48/62] Update --- include/Map/MapBase.hpp | 2 +- include/Map/MapManager.hpp | 8 +- src/00_Core/Map/MapBase.cpp | 2 +- src/00_Core/Map/MapManager.cpp | 165 +++++++++++++++++++++------------ 4 files changed, 114 insertions(+), 63 deletions(-) diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index e3152676..4c8fb1b4 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -143,7 +143,7 @@ public: /* 68 */ virtual unk32 vfunc_68(Vec3p *param_1, bool param_2); /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); - /* 74 */ virtual s32 *vfunc_74(Vec3p *param_2); + /* 74 */ virtual unk32 *vfunc_74(Vec3p *param_2); /* 78 */ virtual unk32 *vfunc_78(Vec2b *param_1); /* 7c */ virtual s32 vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]); /* 80 */ virtual unk32 vfunc_80(); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 6a4598d1..a4bd9d6d 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -30,8 +30,8 @@ class MapManager : public SysObject { public: /* 00 */ Course *mCourse; /* 04 */ MapBase *mMap; - /* 08 */ unk8 mUnk_08; - /* 09 */ u8 mUnk_09; + /* 08 */ bool mUnk_08; + /* 09 */ bool mUnk_09; /* 0a */ bool mUnk_0a; /* 0b */ bool mUnk_0b; /* 0c */ u8 mUnk_0c; @@ -166,7 +166,7 @@ public: s32 GetTileEndZ(unk32 z); s32 func_ov00_02083c24(unk32 x); s32 func_ov00_02083c50(unk32 z); - void func_ov00_02083c7c(Vec3p *param_2, Vec2b *param_3); + void func_ov00_02083c7c(Vec3p *param_2, Vec2s *param_3); static void func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5); s32 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); unk32 MapData_vfunc_60(Vec2b *param_1); @@ -237,7 +237,7 @@ public: static s32 func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *param_3); static unk32 func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 param_3, unk32 param_4); static void func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3); - static unk8 func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3); + static unk32 func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3); s32 func_ov00_02085a34(Vec3p *param_2, unk32 param_3); unk8 func_ov00_02085c60(Vec3p *param_2, unk32 *param_3, unk32 *param_4, u32 param_5); unk8 func_ov00_02086044(Vec3p *param_2, Vec3p *param_3, unk32 param_4); diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index fbf010e9..ec6e497f 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -29,7 +29,7 @@ unk8 MapBase::func_ov00_0207e968() {} unk8 MapBase::func_ov00_0207e96c() {} unk8 MapBase::vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4) {} unk32 MapBase::vfunc_70(Vec3p *param_2) {} -s32 *MapBase::vfunc_74(Vec3p *param_2) {} +unk32 *MapBase::vfunc_74(Vec3p *param_2) {} unk8 MapBase::func_ov00_0207f100() {} bool MapBase::func_ov00_0207f104(unk32 param_2, unk32 param_3) {} unk32 MapBase::func_ov00_0207f1f4(Vec3p *param_2, unk32 *param_3) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 1ec099d4..b9a05f49 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -88,6 +88,13 @@ struct UnkStruct_02082348 { /* 16 */ }; +struct UnkStruct_027e077c { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk16 mUnk_08; + /* 0a */ unk8 mUnk_0a; +}; + class Case_0 : public MapBase { public: char pad[0x790 - 0x1B0]; @@ -109,8 +116,10 @@ public: virtual ~Case_Default() override; }; +extern UnkStruct_027e077c *data_027e077c; extern unk32 *data_027e0c68; extern u32 *data_027e0ce0[]; +extern UnkStruct_0202e894 *data_027e0ce4; extern unk32 *data_027e0d3c; extern unk32 data_027e0f64[]; extern unk32 *data_027e0f68; @@ -124,7 +133,50 @@ extern unk32 *data_ov000_020e24a4; extern unk32 data_ov000_020eec68; extern unk32 data_ov015_02190458; -MapManager::MapManager() {} +MapManager::MapManager() { + /*MapManager_Unk1 *object; + undefined *destructor; + undefined *chain; + + DWORD_arm9_ov000__020e24c4 = 0x5fff; + data_ov000_020e24c8.field0_0x0 = 0; + data_ov000_020e24c8.field1_0x4 = 0x60; + __register_global_object + (&data_ov000_020e24c8,func_ov000_02086cd0,(DestructorChain *)(undefined *)0x20ec964); + data_ov000_020e24d0.field0_0x0 = 0; + data_ov000_020e24d0.field1_0x4 = 0; + __register_global_object + (&data_ov000_020e24d0,func_ov000_02086cd0,(DestructorChain *)(undefined *)0x20ec970); + data_ov000_020e24d8.field0_0x0 = 0x80; + data_ov000_020e24d8.field1_0x4 = 0x60; + __register_global_object + (&data_ov000_020e24d8,func_ov000_02086cd0,(DestructorChain *)(undefined *)0x20ec97c); + data_ov000_020e24e0.field0_0x0 = 0x80; + data_ov000_020e24e0.field1_0x4 = 0; + __register_global_object + (&data_ov000_020e24e0,func_ov000_02086cd0,(DestructorChain *)(undefined *)0x20ec988); + data_ov000_020e24e8.field0_0x0 = 0xfff80000; + data_ov000_020e24e8.field1_0x4 = 0xfffa0000; + __register_global_object + (&data_ov000_020e24e8,MapManager_Unk2::~MapManager_Unk2, + (DestructorChain *)(undefined *)0x20ec994); + data_ov000_020e24f0.field0_0x0 = 0xfff80000; + data_ov000_020e24f0.field1_0x4 = 0xfffa0000; + __register_global_object + (&data_ov000_020e24f0,MapManager_Unk2::~MapManager_Unk2, + (DestructorChain *)(undefined *)0x20ec9a0); + data_ov000_020e24f8.field0_0x0 = 0xfff80000; + data_ov000_020e24f8.field1_0x4 = 0xfffa0000; + __register_global_object + (&data_ov000_020e24f8,MapManager_Unk2::~MapManager_Unk2, + (DestructorChain *)(undefined *)0x20ec9ac); + data_ov000_020e2500.field0_0x0 = 0xfff80000; + data_ov000_020e2500.field1_0x4 = 0xfffa0000; + __register_global_object + (&data_ov000_020e2500,MapManager_Unk2::~MapManager_Unk2, + (DestructorChain *)(undefined *)0x20ec9b8); + return;*/ +} MapManager::~MapManager() {} @@ -138,6 +190,7 @@ ARM void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_ ARM void MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { void *pvVar3; + unk32 uVar2; UnkStruct_02082348 local_40[2]; local_40[1].mUnk_00 = 0x47; @@ -183,14 +236,15 @@ ARM void MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) { local_40[0].mUnk_13 = *(u8 *) ((int) pvVar3 + 0x83); local_40[0].mUnk_14 = *(u8 *) ((int) pvVar3 + 0x84); local_40[0].mUnk_15 = *(u8 *) ((int) pvVar3 + 0x85); - param_3[0x70] = func_ov000_020a5e9c((unk32 *) &local_40[0]); + uVar2 = func_ov000_020a5e9c((unk32 *) &local_40[0]); + param_3[0x70] = uVar2; *(u8 *) ((int) param_3 + 0x1be) = local_40[0].mUnk_12; *(u8 *) ((int) param_3 + 0x1bf) = local_40[0].mUnk_13; func_ov000_02096324(data_027e0f70, param_3); func_ov000_0209d6e8(data_027e0f7c, param_3); if (this->mCourse->mType != CourseType_TempleOfTheOceanKing) { - *(unk8 *) ((int) param_3 + 7) = (u8) this->mUnk_08; - *(unk8 *) (param_3 + 0x6f) = this->mUnk_09; + *(bool *) ((int) param_3 + 7) = this->mUnk_08; + *(bool *) (param_3 + 0x6f) = this->mUnk_09; } } @@ -1154,8 +1208,9 @@ ARM s32 MapManager::func_ov00_02083c50(unk32 z) { return this->GetMapCenterZ() + this->mMap->GetTileStartZ(z) + 0x800; } -ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2b *param_3) { +ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2s *param_3) { Vec3p local_28; + param_2->x = this->func_ov00_02083c24(param_3->x); param_2->z = this->func_ov00_02083c50(param_3->y); local_28 = *param_2; @@ -1204,15 +1259,12 @@ ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 p ARM s32 MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) { Vec2b local_8; - // unk16 uStack_6; // Unused. - - // uStack_6 = (unk16) ((u32) param_4 >> 0x10); - local_8.x = param_2; // Likely a struct + local_8.x = param_2; local_8.y = param_3; return this->mMap->vfunc_60(&local_8); } -ARM unk32 MapManager::MapData_vfunc_60(Vec2b *param_1) { // should the param be bool*? +ARM unk32 MapManager::MapData_vfunc_60(Vec2b *param_1) { return this->mMap->vfunc_60(param_1); } @@ -1264,7 +1316,7 @@ ARM unk32 MapManager::MapData_vfunc_70(Vec3p *param_2) { } ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) { - Vec4p *iVar1; // Unsure + Vec4p *iVar1; // Vec4p * unsure, need type with field at offset 0xc s32 dVar2; iVar1 = (Vec4p *) param_2->mMap->vfunc_74(param_3); @@ -1742,13 +1794,13 @@ u8 MapManager::func_ov00_02084a50() { } void MapManager::SpawnNPC(Vec3p *param_2, unk32 param_3, unk32 param_4) { - astruct_16 aStack_3c; // = Actor_UnkStruct_020(); - // aStack_3c. = 0xffffffff; - // aStack_3c.field25_0x20 = 0xffffffff; - func_ov000_020c3348((unk32 *) &aStack_3c); + void *aStack_3c; // = Actor_UnkStruct_020(); + // aStack_3c.field24_0x1c = 0xffffffff; + // aStack_3c.field25_0x20 = 0xffffffff; + func_ov000_020c3348((unk32 *) aStack_3c); // aStack_3c.field26_0x24 = param_3; // aStack_3c.field27_0x28 = param_4; - gActorSpawner->Spawn(ActorTypeId_EVIC, param_2, &aStack_3c, NULL); + gActorSpawner->Spawn(ActorTypeId_EVIC, param_2, aStack_3c, NULL); } ARM bool MapManager::func_ov00_02084ac4(u32 actorId) { @@ -1783,21 +1835,22 @@ bool MapManager::GetBlueWarpOpen() { unk8 MapManager::func_ov00_02084b38(unk32 param_2, unk32 param_3, bool param_4) { MapBase *pMVar1; - if (param_2 != 0) { - switch (param_3) { - case 0: - pMVar1 = this->mMap; - if (!param_4) { - pMVar1->mUnk_180[param_2 >> 5].mUnk_0 = pMVar1->mUnk_180[param_2 >> 5].mUnk_0 & ~(1 << (param_2 & 0x1f)); - return; - } - pMVar1->mUnk_180[param_2 >> 5].mUnk_0 = pMVar1->mUnk_180[param_2 >> 5].mUnk_0 | 1 << (param_2 & 0x1f); + if (param_2 == 0) { + return; + } + switch (param_3) { + case 0: + pMVar1 = this->mMap; + if (param_4) { + pMVar1->mUnk_180[param_2 >> 5].mUnk_0 |= 1 << (param_2 & 0x1f); break; - case 1: this->mCourse->SetMapDataFlag0(param_2, param_4); break; - case 2: this->mCourse->SetFlag0(param_2, param_4); break; - case 3: this->mCourse->SetFlag1(param_2, param_4); break; - default: break; - } + } + pMVar1->mUnk_180[param_2 >> 5].mUnk_0 &= ~(1 << (param_2 & 0x1f)); + break; + case 1: this->mCourse->SetMapDataFlag0(param_2, param_4); break; + case 2: this->mCourse->SetFlag0(param_2, param_4); break; + case 3: this->mCourse->SetFlag1(param_2, param_4); break; + default: break; } } @@ -2218,7 +2271,7 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 unk32 dVar3; // dword unk32 uVar4; bool bVar5; - Vec2b uStack_2c[2]; + Vec2s uStack_2c; Vec2b local_28; u32 uStack_24; Vec3p VStack_20; @@ -2296,9 +2349,9 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 if (iVar2 != 0) { return 0; } - uStack_2c[0].y = local_28.y; - uStack_2c[0].x = local_28.x; - param_1->func_ov00_02083c7c(&VStack_20, uStack_2c); + uStack_2c.y = local_28.y; + uStack_2c.x = local_28.x; + param_1->func_ov00_02083c7c(&VStack_20, &uStack_2c); dVar3 = param_1->MapData_vfunc_70(&VStack_20); if (dVar3 != 0xffff) { func_ov000_02093a1c(&uStack_24, data_027e0f6c, dVar3); @@ -2316,24 +2369,24 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 } void MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3) { - s32 *piVar1; - Vec2b auStack_10[2]; + void *piVar1; + Vec2b auStack_10; - param_1->func_ov00_02083a1c(auStack_10, param_1, param_2); - piVar1 = (unk32 *) param_1->MapData_vfunc_78(auStack_10); - if (piVar1 == (unk32 *) 0x0) { + param_1->func_ov00_02083a1c(&auStack_10, param_1, param_2); + piVar1 = (unk32 *) param_1->MapData_vfunc_78(&auStack_10); + if (piVar1 == NULL) { + return; + } + if (data_027e077c->mUnk_00 == 1) { + if (data_027e077c->mUnk_04 == 1) { + //(**(code **) (*piVar1 + 0x30))(piVar1, param_3); + return; + } return; } - // if (*(s32 *) PTR_UnkStruct_027e077c_overlay_d_0__020858ac == 1) { - // if (*(s32 *) (PTR_UnkStruct_027e077c_overlay_d_0__020858ac + 4) == 1) { - // (**(code **) (*piVar1 + 0x30))(piVar1, param_3); - // return; - // } - // return; - //} } -unk8 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3) { +unk32 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3) { int iVar1; int iVar2; int iVar3; @@ -2730,20 +2783,18 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 Vec3p local_50; Vec3p local_44; Vec3p local_38; - s32 local_2c; - s32 iStack_28; - s32 iStack_24; + Vec3p local_2c; s32 local_20; // iVar2 = (**(code **) (*param_2 + 8))(); // What pointer address is contained in param_2? if (iVar2 == 0) { // (**(code **) (*param_2 + 0x24))(param_2, &local_2c); - local_38.x = local_2c; - local_38.y = iStack_28; - local_38.z = iStack_24; + local_38.x = local_2c.x; + local_38.y = local_2c.y; + local_38.z = local_2c.z; iVar2 = Vec3p_Distance(param_3, &local_38); Vec3p_Sub(param_3, &local_38, &local_38); - // bVar1 = Vec3p_Normalize(&local_38); + Vec3p_Normalize(&local_38, &local_2c); if (!bVar1) { local_38.x = 0; local_38.y = 0; @@ -2751,9 +2802,9 @@ bool MapManager::func_ov00_02086284(s32 *param_2, Vec3p *param_3, Vec3p *param_4 } Vec3p_Scale(&local_38, (local_20 + param_5) - iVar2); Vec3p_Add(param_3, &local_38, param_7); - local_50.x = local_2c; - local_50.y = iStack_28; - local_50.z = iStack_24; + local_50.x = local_2c.x; + local_50.y = local_2c.y; + local_50.z = local_2c.z; Vec3p_Sub(param_4, &local_50, &local_44); // Vec3p_Normalize(&local_44); param_8->x = local_44.x; From 0b755b0bdadcfb2b07da54a0df20d12ab1eec428 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 11 May 2025 12:17:38 +0200 Subject: [PATCH 49/62] Fix overlay include typo --- libs/nds/include/nds/overlay.h | 41 ++++++++++++++++++++++++++++++ src/Main/System/OverlayManager.cpp | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 libs/nds/include/nds/overlay.h diff --git a/libs/nds/include/nds/overlay.h b/libs/nds/include/nds/overlay.h new file mode 100644 index 00000000..254253bd --- /dev/null +++ b/libs/nds/include/nds/overlay.h @@ -0,0 +1,41 @@ +#ifndef _NDS_OVERLAY_H +#define _NDS_OVERLAY_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define EXTERN_OVERLAY_ID(name_or_index) extern u32 OVERLAY_##name_or_index##_ID; +#define OVERLAY_ID(name_or_index) ((u32) & OVERLAY_##name_or_index##_ID) + +typedef struct Overlay { + /* 00 */ unk32 mId; + /* 04 */ void *mBaseAddress; + /* 08 */ u32 mTextSize; + /* 0c */ s32 mBssSize; + /* 10 */ unk32 mCtorStart; + /* 14 */ unk32 mCtorEnd; + /* 18 */ unk32 mFileId; + /* 1c */ u32 mFileSize; + /* 20 */ +} Overlay; + +u32 Overlay_FileSize(Overlay *overlay); +void Overlay_ClearCacheAndBss(Overlay *overlay); +void Overlay_func_02042238(unk32 *param1, Overlay *overlay); +bool Overlay_func_02042250(Overlay *param1, Overlay *param2, s32 param3, unk32 param4, s32 param5, u32 param6, s32 param7, + u32 param8); +bool Overlay_func_020422ec(Overlay *param1, Overlay *param2, s32 param3); +bool Overlay_func_0204238c(Overlay *overlay); +bool Overlay_func_020423e8(s32 param1, unk32 param2, unk32 param3); +void Overlay_Init(Overlay *overlay); +void Overlay_RunGlobalDestructors(Overlay *overlay); +bool Overlay_Destroy(Overlay *overlay); +bool Overlay_Load(Overlay *overlay, unk32 param2); +bool Overlay_Unload(Overlay *overlay, unk32 param2); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/Main/System/OverlayManager.cpp b/src/Main/System/OverlayManager.cpp index 8fff1fc6..5295fa2d 100644 --- a/src/Main/System/OverlayManager.cpp +++ b/src/Main/System/OverlayManager.cpp @@ -1,6 +1,6 @@ #include "System/OverlayManager.hpp" #include "global.h" -#include "nds/Overlay.h" +#include "nds/overlay.h" struct UnkStruct_020ee698 { /* 00 */ unk8 mUnk_00[0x2C]; From c1e2fc2b1321ebf3ab44fe7568efc0e780ac2217 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 11 May 2025 12:20:03 +0200 Subject: [PATCH 50/62] Update --- libs/nds/include/nds/Overlay.h | 41 ---------------------------------- 1 file changed, 41 deletions(-) delete mode 100644 libs/nds/include/nds/Overlay.h diff --git a/libs/nds/include/nds/Overlay.h b/libs/nds/include/nds/Overlay.h deleted file mode 100644 index 254253bd..00000000 --- a/libs/nds/include/nds/Overlay.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef _NDS_OVERLAY_H -#define _NDS_OVERLAY_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define EXTERN_OVERLAY_ID(name_or_index) extern u32 OVERLAY_##name_or_index##_ID; -#define OVERLAY_ID(name_or_index) ((u32) & OVERLAY_##name_or_index##_ID) - -typedef struct Overlay { - /* 00 */ unk32 mId; - /* 04 */ void *mBaseAddress; - /* 08 */ u32 mTextSize; - /* 0c */ s32 mBssSize; - /* 10 */ unk32 mCtorStart; - /* 14 */ unk32 mCtorEnd; - /* 18 */ unk32 mFileId; - /* 1c */ u32 mFileSize; - /* 20 */ -} Overlay; - -u32 Overlay_FileSize(Overlay *overlay); -void Overlay_ClearCacheAndBss(Overlay *overlay); -void Overlay_func_02042238(unk32 *param1, Overlay *overlay); -bool Overlay_func_02042250(Overlay *param1, Overlay *param2, s32 param3, unk32 param4, s32 param5, u32 param6, s32 param7, - u32 param8); -bool Overlay_func_020422ec(Overlay *param1, Overlay *param2, s32 param3); -bool Overlay_func_0204238c(Overlay *overlay); -bool Overlay_func_020423e8(s32 param1, unk32 param2, unk32 param3); -void Overlay_Init(Overlay *overlay); -void Overlay_RunGlobalDestructors(Overlay *overlay); -bool Overlay_Destroy(Overlay *overlay); -bool Overlay_Load(Overlay *overlay, unk32 param2); -bool Overlay_Unload(Overlay *overlay, unk32 param2); - -#ifdef __cplusplus -} -#endif - -#endif From bed4fb43a7796a232731c8226a6eac3cb2c49ba1 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Wed, 4 Jun 2025 00:07:45 +0200 Subject: [PATCH 51/62] Post-conflict update --- include/Map/Course.hpp | 2 +- include/Map/MapManager.hpp | 8 ++++---- src/00_Core/Map/MapManager.cpp | 32 ++++++++++++++++---------------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index ee8af277..c09cbb4d 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -59,7 +59,7 @@ public: /* 25e */ unk8 mUnk_25e; /* 25f */ unk8 mUnk_25f; /* 260 */ unk32 mNumKeys; - /* 260 */ unk32 mFlags0[1]; + /* 264 */ unk32 mFlags0[1]; /* 268 */ unk32 mFlags1[1]; // knows which doors are open in a dungeon /* 26c */ diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index a4bd9d6d..49ec315b 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -166,7 +166,7 @@ public: s32 GetTileEndZ(unk32 z); s32 func_ov00_02083c24(unk32 x); s32 func_ov00_02083c50(unk32 z); - void func_ov00_02083c7c(Vec3p *param_2, Vec2s *param_3); + void func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3); static void func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5); s32 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); unk32 MapData_vfunc_60(Vec2b *param_1); @@ -179,7 +179,7 @@ public: static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds); unk32 MapData_vfunc_54(Vec2b *a); - unk32 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk16 param_4); + unk32 func_ov00_020840a0(unk8 param_2, unk8 param_3); unk32 *MapData_vfunc_78(Vec2b *param_1); unk32 func_ov00_020840dc(Vec2b *param_1); static unk8 func_ov00_02084100(unk32 *param_1, MapManager *param_2); @@ -232,10 +232,10 @@ public: void func_ov00_02084d24(unk8 param_2, unk8 param_3, unk16 param_4); s32 func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4); unk32 func_ov00_02084ebc(Vec3p *param_2); - s32 func_ov00_02085108(s32 *param_2); + s32 func_ov00_02085108(Vec3p *param_2); static s32 func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *param_3); static s32 func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *param_3); - static unk32 func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 param_3, unk32 param_4); + unk32 func_ov00_02085594(Vec3p *param_2); static void func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3); static unk32 func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3); s32 func_ov00_02085a34(Vec3p *param_2, unk32 param_3); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index b9a05f49..efd359bb 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1208,11 +1208,11 @@ ARM s32 MapManager::func_ov00_02083c50(unk32 z) { return this->GetMapCenterZ() + this->mMap->GetTileStartZ(z) + 0x800; } -ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2s *param_3) { +ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3) { Vec3p local_28; - param_2->x = this->func_ov00_02083c24(param_3->x); - param_2->z = this->func_ov00_02083c50(param_3->y); + param_2->x = this->func_ov00_02083c24(param_3.x); + param_2->z = this->func_ov00_02083c50(param_3.y); local_28 = *param_2; param_2->y = this->MapData_vfunc_68(&local_28, true); } @@ -1349,7 +1349,7 @@ unk32 MapManager::MapData_vfunc_54(Vec2b *param_1) { return this->mMap->vfunc_54(param_1); } -ARM unk32 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk16 param_4) { +ARM unk32 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3) { // Correct param types? Vec2b vec; vec.x = param_2; @@ -2084,7 +2084,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { return 0; } -s32 MapManager::func_ov00_02085108(s32 *param_2) { +s32 MapManager::func_ov00_02085108(Vec3p *param_2) { MapManager *puVar1; unk32 uVar2; int *piVar3; @@ -2126,9 +2126,9 @@ s32 MapManager::func_ov00_02085108(s32 *param_2) { local_2c = iVar8; // iVar4 = func_0202b8e4(&local_34, 2); if (iVar4 != 0) { - *param_2 = piVar3[6]; - param_2[1] = piVar3[7]; - param_2[2] = piVar3[8]; + param_2->x = piVar3[6]; + param_2->y = piVar3[7]; + param_2->z = piVar3[8]; return (int) *(char *) ((int) piVar3 + 0x12); } } @@ -2265,19 +2265,19 @@ s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *par return iVar7; } -unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 param_3, unk32 param_4) { +unk32 MapManager::func_ov00_02085594(Vec3p *param_2) { int *piVar1; int iVar2; unk32 dVar3; // dword unk32 uVar4; bool bVar5; - Vec2s uStack_2c; + Vec2b uStack_2c; Vec2b local_28; u32 uStack_24; Vec3p VStack_20; - param_1->func_ov00_02083a1c(&local_28, param_1, param_2); - piVar1 = (int *) param_1->MapData_vfunc_78(&local_28); + this->func_ov00_02083a1c(&local_28, this, param_2); + piVar1 = (int *) this->MapData_vfunc_78(&local_28); bVar5 = true; if (piVar1 != (int *) 0x0) { param_2->x = piVar1[6]; @@ -2309,7 +2309,7 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 } } } - iVar2 = param_1->func_ov00_020840a0(local_28.x, local_28.y, param_4); + iVar2 = this->func_ov00_020840a0(local_28.x, local_28.y); if (iVar2 < 0x46) { if (iVar2 < 0x2a) { switch (iVar2) { @@ -2345,14 +2345,14 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 } else if (iVar2 == 0x50) { return 0; } - iVar2 = param_1->mMap->vfunc_58(&local_28, 5); + iVar2 = this->mMap->vfunc_58(&local_28, 5); if (iVar2 != 0) { return 0; } uStack_2c.y = local_28.y; uStack_2c.x = local_28.x; - param_1->func_ov00_02083c7c(&VStack_20, &uStack_2c); - dVar3 = param_1->MapData_vfunc_70(&VStack_20); + this->func_ov00_02083c7c(&VStack_20, uStack_2c); + dVar3 = this->MapData_vfunc_70(&VStack_20); if (dVar3 != 0xffff) { func_ov000_02093a1c(&uStack_24, data_027e0f6c, dVar3); if ((uStack_24 >> 5 & 3) != 1) { From 6b72481fef44f9232df63e70b1b15aa1db51dcca Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Wed, 4 Jun 2025 00:22:49 +0200 Subject: [PATCH 52/62] Fix symbol --- config/usa/arm9/overlays/ov000/symbols.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index d8d0c8c9..bb16f07c 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -579,7 +579,7 @@ _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x20835b _ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x20835c4 _ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083604 _ZN10MapManager18func_ov00_020836bcEjPi kind:function(arm,size=0x10) addr:0x208365c -_ZN10MapManager23GetTriggerBoundingBoxesEjP4AABBj kind:function(arm,size=0x10) addr:0x208366c +_ZN10MapManager23GetTriggerBoundingBoxesEjP4AABBi kind:function(arm,size=0x10) addr:0x208366c _ZN10MapManager18func_ov00_020836dcEii kind:function(arm,size=0x94) addr:0x208367c _ZN10MapManager18func_ov00_02083770Eji kind:function(arm,size=0x10) addr:0x2083710 _ZN10MapManager18func_ov00_02083780Ei kind:function(arm,size=0x10) addr:0x2083720 From 6f701b2be9f72399a1ea57e1959a7edb1a632ae7 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Wed, 4 Jun 2025 00:28:18 +0200 Subject: [PATCH 53/62] Fix symbol --- config/usa/arm9/overlays/ov000/symbols.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index bb16f07c..de9e73d5 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -579,7 +579,7 @@ _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x20835b _ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x20835c4 _ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083604 _ZN10MapManager18func_ov00_020836bcEjPi kind:function(arm,size=0x10) addr:0x208365c -_ZN10MapManager23GetTriggerBoundingBoxesEjP4AABBi kind:function(arm,size=0x10) addr:0x208366c +_ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x208366c _ZN10MapManager18func_ov00_020836dcEii kind:function(arm,size=0x94) addr:0x208367c _ZN10MapManager18func_ov00_02083770Eji kind:function(arm,size=0x10) addr:0x2083710 _ZN10MapManager18func_ov00_02083780Ei kind:function(arm,size=0x10) addr:0x2083720 From c763d7e281a93fbf5c8d87d53f1ba9edd5ee2b2c Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 28 Jun 2025 12:01:17 +0200 Subject: [PATCH 54/62] Update --- config/eur/arm9/overlays/ov000/symbols.txt | 10 +++++----- include/Map/MapManager.hpp | 2 +- src/00_Core/Map/MapManager.cpp | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 5f8d379d..b13290f1 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -609,7 +609,7 @@ _ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x2083bd4 _ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x2083bfc _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083c24 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083c50 -_ZN10MapManager18func_ov00_02083c7cEP5Vec3pP5Vec2b kind:function(arm,size=0x6c) addr:0x2083c7c +_ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x2083c7c _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083ce8 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 _ZN10MapManager16MapData_vfunc_60EP5Vec2b kind:function(arm,size=0x18) addr:0x2083e58 @@ -622,7 +622,7 @@ _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x20 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083fb0 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2084024 _ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084088 -_ZN10MapManager18func_ov00_020840a0Eccs kind:function(arm,size=0x24) addr:0x20840a0 +_ZN10MapManager18func_ov00_020840a0Ecc kind:function(arm,size=0x24) addr:0x20840a0 _ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x20840c4 _ZN10MapManager18func_ov00_020840dcEP5Vec2b kind:function(arm,size=0x24) addr:0x20840dc _ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x2084100 @@ -661,7 +661,7 @@ _ZN10MapManager10SetNumKeysEi kind:function(arm,size=0xc) addr:0x2084b08 _ZN10MapManager10GetNumKeysEv kind:function(arm,size=0xc) addr:0x2084b14 _ZN10MapManager15SetBlueWarpOpenEb kind:function(arm,size=0xc) addr:0x2084b20 _ZN10MapManager15GetBlueWarpOpenEv kind:function(arm,size=0xc) addr:0x2084b2c -_ZN10MapManager18func_ov00_02084b38Eiib kind:function(arm,size=0xa8) addr:0x2084b38 +_ZN10MapManager18func_ov00_02084b38Ejib kind:function(arm,size=0xa8) addr:0x2084b38 _ZN10MapManager18func_ov00_02084be0Eji kind:function(arm,size=0x7c) addr:0x2084be0 _ZN10MapManager15SetMapDataFlag1Eib kind:function(arm,size=0x10) addr:0x2084c5c _ZN10MapManager15GetMapDataFlag1Ei kind:function(arm,size=0x10) addr:0x2084c6c @@ -675,10 +675,10 @@ _ZN10MapManager17GetMapData_Unk_09Ev kind:function(arm,size=0xc) addr:0x2084d18 _ZN10MapManager18func_ov00_02084d24Eccs kind:function(arm,size=0x28) addr:0x2084d24 _ZN10MapManager18func_ov00_02084d4cEiiP5Vec3p kind:function(arm,size=0x170) addr:0x2084d4c _ZN10MapManager18func_ov00_02084ebcEP5Vec3p kind:function(arm,size=0x24c) addr:0x2084ebc -_ZN10MapManager18func_ov00_02085108EPi kind:function(arm,size=0x174) addr:0x2085108 +_ZN10MapManager18func_ov00_02085108EP5Vec3p kind:function(arm,size=0x174) addr:0x2085108 _ZN10MapManager18func_ov00_0208527cEPS_iPi kind:function(arm,size=0x180) addr:0x208527c _ZN10MapManager18func_ov00_020853fcEPS_P5Vec3pPi kind:function(arm,size=0x198) addr:0x20853fc -_ZN10MapManager18func_ov00_02085594EPS_P5Vec3pii kind:function(arm,size=0x2a8) addr:0x2085594 +_ZN10MapManager18func_ov00_02085594EP5Vec3p kind:function(arm,size=0x2a8) addr:0x2085594 _ZN10MapManager18func_ov00_0208583cEPS_P5Vec3pi kind:function(arm,size=0x74) addr:0x208583c _ZN10MapManager18func_ov00_020858b0EPS_P5Vec3pi kind:function(arm,size=0x184) addr:0x20858b0 _ZN10MapManager18func_ov00_02085a34EP5Vec3pi kind:function(arm,size=0x22c) addr:0x2085a34 diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 49ec315b..3b14687d 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -218,7 +218,7 @@ public: unk32 GetNumKeys(); void SetBlueWarpOpen(bool state); bool GetBlueWarpOpen(); - unk8 func_ov00_02084b38(unk32 param_2, unk32 param_3, bool param_4); + void func_ov00_02084b38(u32 param_2, unk32 param_3, bool param_4); bool func_ov00_02084be0(u32 param_2, unk32 param_3); void SetMapDataFlag1(unk32 param_2, bool param_3); bool GetMapDataFlag1(unk32 param_2); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index efd359bb..21a31b33 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -431,7 +431,7 @@ ARM void MapManager::func_ov00_02082808(bool param_2) { return; } iVar1 = this->func_ov00_02084740(); - if (!param_2) { + if (param_2) { iVar2 = func_ov000_020a5e9c(&data_027e0d38->mUnk_0c); if (iVar2 == 0) { func_ov015_021849a4(&data_ov015_02190458); @@ -1833,7 +1833,7 @@ bool MapManager::GetBlueWarpOpen() { return this->mCourse->mBlueWarpOpen; } -unk8 MapManager::func_ov00_02084b38(unk32 param_2, unk32 param_3, bool param_4) { +ARM void MapManager::func_ov00_02084b38(u32 param_2, unk32 param_3, bool param_4) { MapBase *pMVar1; if (param_2 == 0) { return; From d733ef8b005cc5d8e865c58543d9bb473d08b7e8 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 28 Jun 2025 14:37:36 +0200 Subject: [PATCH 55/62] Decomp progress 44% --- config/eur/arm9/overlays/ov000/symbols.txt | 2 +- include/Map/MapManager.hpp | 2 +- src/00_Core/Map/MapManager.cpp | 50 ++++++++++------------ 3 files changed, 24 insertions(+), 30 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index b13290f1..49daa29f 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -610,7 +610,7 @@ _ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x2083bfc _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083c24 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083c50 _ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x2083c7c -_ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083ce8 +_ZN10MapManager18func_ov00_02083ce8EPS_P5Vec3pjij kind:function(arm,size=0x14c) addr:0x2083ce8 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 _ZN10MapManager16MapData_vfunc_60EP5Vec2b kind:function(arm,size=0x18) addr:0x2083e58 _ZN10MapManager18func_ov00_02083e70EP5Vec2b kind:function(arm,size=0x70) addr:0x2083e70 diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 3b14687d..74526c0a 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -167,7 +167,7 @@ public: s32 func_ov00_02083c24(unk32 x); s32 func_ov00_02083c50(unk32 z); void func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3); - static void func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5); + void func_ov00_02083ce8(Vec3p *param_2, u32 param_3, s32 param_4, u32 param_5); s32 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); unk32 MapData_vfunc_60(Vec2b *param_1); bool func_ov00_02083e70(Vec2b *param_2); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 21a31b33..a6c509ca 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1217,44 +1217,38 @@ ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3) { param_2->y = this->MapData_vfunc_68(&local_28, true); } -ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5) { +ARM void MapManager::func_ov00_02083ce8(Vec3p *param_2, u32 param_3, s32 param_4, u32 param_5) { bool bVar1; - s32 iVar2; - u32 uVar3; + u32 uVar2; + Vec3p local_38; Vec3p local_2c; - uVar3 = param_3; - iVar2 = param_1->GetCourseData_Unk_25c(); - if (iVar2 == 0) { - iVar2 = param_1->mMap->GetTileStartX(param_3 & 0xff); - *param_2 = iVar2 + 0x800; - iVar2 = param_1->mMap->GetTileStartZ(param_3 >> 8 & 0xff); - param_2[2] = iVar2 + 0x800; - } else { + uVar2 = param_3; + bVar1 = GetCourseData_Unk_25c(); + if (bVar1) { if (param_4 != -1) { - uVar3 = param_5; - } - if (param_4 != -1 && uVar3 != 0xffffffff) { - uVar3 = (u32) (u8) param_1->mCourse->mMapGrid[param_4][uVar3]; + uVar2 = param_5; + } else if (param_4 != -1 && uVar2 != -1) { + uVar2 = this->mCourse->mMapGrid[param_4][uVar2]; } else { - uVar3 = param_1->func_ov00_02082d08(); + uVar2 = this->func_ov00_02082d08(); } - bVar1 = param_1->IsMapInMainGrid(uVar3); + bVar1 = this->IsMapInMainGrid(uVar2); if (bVar1) { - param_1->func_ov00_02083524(&local_2c, param_4, param_5); - iVar2 = param_1->mMap->GetTileStartX(param_3 & 0xff); - *param_2 = local_2c.x + iVar2 + 0x800; - iVar2 = param_1->mMap->GetTileStartZ(param_3 >> 8 & 0xff); - param_2[2] = local_2c.z + iVar2 + 0x800; + func_ov00_02083524(&local_2c, param_4, param_5); + param_2->x = local_2c.x + this->mMap->GetTileStartX(param_3 & 0xff) + 0x800; + param_2->z = local_2c.z + this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800; } else { - iVar2 = param_1->mMap->GetTileStartX(param_3 & 0xff); - *param_2 = iVar2 + 0x800; - iVar2 = param_1->mMap->GetTileStartZ(param_3 >> 8 & 0xff); - param_2[2] = iVar2 + 0x800; + param_2->x = this->mMap->GetTileStartX(param_3 & 0xff) + 0x800; + param_2->z = this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800; } + } else { + param_2->x = this->mMap->GetTileStartX(param_3 & 0xff) + 0x800; + param_2->z = this->mMap->GetTileStartZ(param_3 >> 8 & 0xff) + 0x800; } - iVar2 = param_1->MapData_vfunc_68(&local_2c, true); // I really do hope this is right - param_2[1] = iVar2; + local_38 = *param_2; + param_2->y = MapData_vfunc_68(&local_38, true); + ; } ARM s32 MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) { From f446227797e5bc5e338d51e2e23a026360f484a5 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 28 Jun 2025 23:19:29 +0200 Subject: [PATCH 56/62] Decomp progress 46% --- config/eur/arm9/overlays/ov000/symbols.txt | 2 +- include/DTCM/UnkStruct_027e0d38.hpp | 4 +- include/Map/MapBase.hpp | 2 +- include/Map/MapManager.hpp | 4 +- src/00_Core/Map/MapBase.cpp | 2 +- src/00_Core/Map/MapManager.cpp | 112 +++++++++------------ 6 files changed, 58 insertions(+), 68 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 49daa29f..5b628dcf 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -640,7 +640,7 @@ _ZN10MapManager18func_ov00_0208439cEP5Vec2sP5Vec3p kind:function(arm,size=0x50) _ZN10MapManager18func_ov00_020843ecEPi kind:function(arm,size=0x2ac) addr:0x20843ec _ZN10MapManager17GetMapData_Unk_38Ev kind:function(arm,size=0xc) addr:0x2084698 _ZN10MapManager18func_ov00_020846a4Ev kind:function(arm,size=0x5c) addr:0x20846a4 -_ZN10MapManager18func_ov00_02084700EPS_ kind:function(arm,size=0x40) addr:0x2084700 +_ZN10MapManager18func_ov00_02084700Ev kind:function(arm,size=0x40) addr:0x2084700 _ZN10MapManager18func_ov00_02084740Ev kind:function(arm,size=0xa0) addr:0x2084740 _ZN10MapManager18func_ov00_020847e0Ev kind:function(arm,size=0x10) addr:0x20847e0 _ZN10MapManager18func_ov00_020847f0Ev kind:function(arm,size=0x48) addr:0x20847f0 diff --git a/include/DTCM/UnkStruct_027e0d38.hpp b/include/DTCM/UnkStruct_027e0d38.hpp index b2e50a89..5bb21575 100644 --- a/include/DTCM/UnkStruct_027e0d38.hpp +++ b/include/DTCM/UnkStruct_027e0d38.hpp @@ -6,7 +6,9 @@ struct UnkStruct_027e0d38_Unk28 { /* 00 */ unk8 mUnk_00[0x34]; /* 34 */ bool mUnk_34; - /* 35 */ + /* 35 */ unk8 mUnk_35[0x27]; + /* 5c */ Vec3p mUnk_5c; + /* 68 */ }; struct UnkStruct_027e0d38 { diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 4c8fb1b4..f9768a81 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -204,7 +204,7 @@ public: s32 GetTriggerBoundingBox(s32 param_2, AABB *param_3); s32 GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4); bool GetOverlappingTrigger(Vec3p *param_2); - unk8 FindTrigger(unk32 type); + TriggerBase *FindTrigger(unk32 type); unk8 GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity); bool IsTriggerTypeOverlapped(unk32 type, Vec3p *param_3); bool AnyTrigger_func_0c(unk32 type); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 74526c0a..4ef12645 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -197,10 +197,10 @@ public: void func_ov00_020843ec(s32 *param_2); unk32 GetMapData_Unk_38(); s32 func_ov00_020846a4(); - static s32 func_ov00_02084700(MapManager *pMapManager); + s32 func_ov00_02084700(); unk32 func_ov00_02084740(); unk32 func_ov00_020847e0(); - unk8 func_ov00_020847f0(); + unk32 func_ov00_020847f0(unk32 type); bool func_ov00_02084838(); bool func_ov00_020848b8(); void func_ov00_02084924(u32 param_2); diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index ec6e497f..b923de8d 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -73,7 +73,7 @@ bool TriggerBase::GetBoundingBox(AABB *bbox) {} s32 MapBase::GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4) {} bool MapBase::GetOverlappingTrigger(Vec3p *param_2) {} bool TriggerBase::Overlaps(Vec3p *point) {} -unk8 MapBase::FindTrigger(unk32 type) {} +TriggerBase *MapBase::FindTrigger(unk32 type) {} unk8 MapBase::GetOverlappingTriggers(Vec3p *param_2, TriggerBase **triggers, unk32 capacity) {} bool MapBase::IsTriggerTypeOverlapped(unk32 type, Vec3p *param_3) {} bool MapBase::AnyTrigger_func_0c(unk32 type) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index a6c509ca..1af83dab 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -130,6 +130,8 @@ extern unk32 *data_027e0f7c; extern unk32 *data_027e103c; extern unk32 *data_ov000_020e24a4; +extern MapManager_Unk2 data_ov000_020e24c8[]; +extern MapManager_Unk2 data_ov000_020e24e8[]; extern unk32 data_ov000_020eec68; extern unk32 data_ov015_02190458; @@ -742,57 +744,50 @@ ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) { u32 uVar1; s32 *piVar2; - s32 iVar3; + UnkStruct_027e0d38_Unk28 *pvVar3; s32 *piVar4; - s32 local_2c; // This has to be a Vec3p, but uncertain as of now. - unk32 local_28; // Unused. - unk32 local_24; // Unused. Vec3p local_20; + Vec3p local_2c; - piVar4 = (s32 *) this->mCourse->mUnk_008; - piVar2 = param_2; - if (piVar4 != (s32 *) 0xfffffffd) { - piVar2 = (s32 *) 0xfffffffe; + *piVar4 = this->mCourse->mUnk_008; + *piVar2 = *param_2; + + if (*piVar4 != -3) { + *piVar2 = -2; } - if (piVar4 == (s32 *) 0xfffffffd || piVar4 == piVar2) { - // iVar3 = *(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083240 + 0x28); - local_2c = *(s32 *) (iVar3 + 0x5c); - local_28 = *(unk32 *) (iVar3 + 0x60); - local_24 = *(unk32 *) (iVar3 + 100); - /*this->func_ov00_02083298((u32) * (u8 *) (*(s32 *) (*(s32 *) PTR_PTR_overlay_d_0__02083240 + 0x28) + 0x56), - &local_2c, param_2, param_3);*/ - return; - } - if (piVar4 != (s32 *) 0xffffffff) { - *param_2 = this->mCourse->mUnk_0bc; - *param_3 = this->mCourse->mUnk_0c0; - return; - } - local_20.x = *(s32 *) gPlayerPos.x; - local_20.y = *(s32 *) gPlayerPos.y; - local_20.z = *(s32 *) gPlayerPos.z; + local_20.x = gPlayerPos.x; + local_20.y = gPlayerPos.y; + local_20.z = gPlayerPos.z; uVar1 = this->func_ov00_02082d08(); this->func_ov00_02083298(uVar1, &local_20, param_2, param_3); + + if (*piVar4 == -2 || piVar4 == piVar2) { + pvVar3 = data_027e0d38->mUnk_28; + local_2c = pvVar3->mUnk_5c; + this->func_ov00_02083298((u32) * (u8 *) (*(s32 *) data_027e0d38->mUnk_28 + 0x56), &local_2c, param_2, param_3); + return; + } + if (*piVar4 != -1) { + *param_2 = this->mCourse->mUnk_0bc; + *param_3 = this->mCourse->mUnk_0c0; + } } ARM void MapManager::func_ov00_02083244(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5) { if (4 <= param_2) { param_2 = 0; } - // *param_4 = (param_3->x - (&data_ov000_020e24e8)[param_2].mUnk_00) + 0x800 >> 0xc; - // *param_5 = (param_3->z - (&data_ov000_020e24ec)[param_2].mUnk_04) + 0x800 >> 0xc; + *param_4 = (param_3->x - data_ov000_020e24e8[param_2].mUnk_0) + 0x800 >> 0xc; + *param_5 = (param_3->z - data_ov000_020e24e8[param_2].mUnk_4) + 0x800 >> 0xc; } ARM void MapManager::func_ov00_02083298(u32 param_2, Vec3p *param_3, s32 *param_4, s32 *param_5) { - if (3 < param_2) { + if (4 <= param_2) { param_2 = 0; } - /* - *param_4 = - (&data_ov000_020e24c8)[param_2].mUnk_00 + ((param_3->x - (&data_ov000_020e24e8)[param_2].mUnk_00 >> 1) + 0x800 >> 0xc); - *param_5 = - (&data_ov000_020e24c8)[param_2].mUnk_04 + ((param_3->z - (&data_ov000_020e24e8)[param_2].mUnk_04 >> 1) + 0x800 >> 0xc); - */ + + *param_4 = data_ov000_020e24c8[param_2].mUnk_0 + ((param_3->x - data_ov000_020e24e8[param_2].mUnk_0 >> 1) + 0x800 >> 0xc); + *param_5 = data_ov000_020e24c8[param_2].mUnk_4 + ((param_3->z - data_ov000_020e24e8[param_2].mUnk_4 >> 1) + 0x800 >> 0xc); } ARM bool MapManager::GetCourseData_Unk_25c() { @@ -1310,12 +1305,12 @@ ARM unk32 MapManager::MapData_vfunc_70(Vec3p *param_2) { } ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) { - Vec4p *iVar1; // Vec4p * unsure, need type with field at offset 0xc + unk32 *iVar1; // find type with field that exists at offset 0xc s32 dVar2; - iVar1 = (Vec4p *) param_2->mMap->vfunc_74(param_3); + iVar1 = (unk32 *) param_2->mMap->vfunc_74(param_3); if (iVar1 != NULL) { - *param_1 = iVar1->w; // offset 0xc + *param_1 = *(u32 *) ((unk32 *) iVar1 + 0x3); // offset 0xc return; } dVar2 = param_2->MapData_vfunc_70(param_3); @@ -1611,11 +1606,11 @@ ARM s32 MapManager::func_ov00_020846a4() { return iVar1; } -ARM s32 MapManager::func_ov00_02084700(MapManager *pMapManager) { +ARM s32 MapManager::func_ov00_02084700() { s32 iVar1; - iVar1 = pMapManager->mMap->mUnk_034; + iVar1 = this->mMap->mUnk_034; if (iVar1 == -1) { - iVar1 = pMapManager->mCourse->mUnk_0c4; + iVar1 = this->mCourse->mUnk_0c4; } if ((iVar1 == 0x1b) && (gActorManager->mUnk_29 != false)) { iVar1 = 0x1c; @@ -1654,7 +1649,7 @@ unk32 MapManager::func_ov00_02084740() { local_1c0 = *(unk32 *) gPlayerPos.z; // bVar1 = FUN_overlay_d_0__02083780(&local_1c8); // MapManager method? if (bVar1) { - iVar2 = this->func_ov00_020847f0(); + // iVar2 = this->func_ov00_020847f0(); } } puVar9 = local_1bc; @@ -1680,19 +1675,16 @@ unk32 MapManager::func_ov00_020847e0() { return *(s32 *) ((s32) this->mMap->mUnk_144 + 0xc); } -unk8 MapManager::func_ov00_020847f0() { - s32 iVar1; - unk32 in_r1; +ARM unk32 MapManager::func_ov00_020847f0(unk32 type) { + TriggerBase *triggerBase = this->mMap->FindTrigger(type); - iVar1 = this->mMap->FindTrigger(in_r1); - if (iVar1 == 0) { - // this->func_ov00_02084700(?); - return; + if (triggerBase == NULL) { + return this->func_ov00_02084700(); } - if ((*(int *) (iVar1 + 0xc) != -1) && (*(int *) (iVar1 + 0xc) < 0x6c)) { - return; + if ((triggerBase->mUnk_0c != -1) && ((int) triggerBase->mUnk_0c < 0x6c)) { + return triggerBase->mUnk_0c; } - // this->func_ov00_02084700(?); + return this->func_ov00_02084700(); } bool MapManager::func_ov00_02084838() { @@ -1731,19 +1723,15 @@ void MapManager::func_ov00_02084924(u32 param_2) { this->mMap->func_ov00_0208008c(param_2); } -bool MapManager::func_ov00_02084934(Vec3p *param_2) { - q20 iVar2; - q20 iVar3; - q20 iVar4; +ARM bool MapManager::func_ov00_02084934(Vec3p *param_2) { Vec3p local_20; - iVar2 = this->GetMapCenterZ(); - iVar3 = param_2->z; - iVar4 = param_2->y; - local_20.x = this->GetMapCenterX(); - local_20.x = param_2->x - local_20.x; - local_20.y = iVar4; - local_20.z = iVar3 - iVar2; + q20 mapCenterZ = this->GetMapCenterZ(); + q20 y = param_2->y; + q20 zDiff = param_2->z - mapCenterZ; + local_20.x = param_2->x - this->GetMapCenterX(); + local_20.y = y; + local_20.z = zDiff; return this->mMap->IsInBounds(&local_20); } From a02e12a0d9880d66eefbbbc88823ccff98be36d0 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sat, 28 Jun 2025 23:41:07 +0200 Subject: [PATCH 57/62] Fix type non-recognition --- include/DTCM/UnkStruct_027e0d38.hpp | 2 +- src/00_Core/Map/MapManager.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/include/DTCM/UnkStruct_027e0d38.hpp b/include/DTCM/UnkStruct_027e0d38.hpp index 5bb21575..e544c60c 100644 --- a/include/DTCM/UnkStruct_027e0d38.hpp +++ b/include/DTCM/UnkStruct_027e0d38.hpp @@ -7,7 +7,7 @@ struct UnkStruct_027e0d38_Unk28 { /* 00 */ unk8 mUnk_00[0x34]; /* 34 */ bool mUnk_34; /* 35 */ unk8 mUnk_35[0x27]; - /* 5c */ Vec3p mUnk_5c; + /* 5c */ unk32 mUnk_5c[3]; /* 68 */ }; diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 1af83dab..e97985b0 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -762,8 +762,10 @@ ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) { this->func_ov00_02083298(uVar1, &local_20, param_2, param_3); if (*piVar4 == -2 || piVar4 == piVar2) { - pvVar3 = data_027e0d38->mUnk_28; - local_2c = pvVar3->mUnk_5c; + pvVar3 = data_027e0d38->mUnk_28; + local_2c.x = pvVar3->mUnk_5c[0]; + local_2c.y = pvVar3->mUnk_5c[1]; + local_2c.z = pvVar3->mUnk_5c[2]; this->func_ov00_02083298((u32) * (u8 *) (*(s32 *) data_027e0d38->mUnk_28 + 0x56), &local_2c, param_2, param_3); return; } From 91ec8dbe164971d257152dd6c1a9dc2f47f5181e Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 29 Jun 2025 21:13:04 +0200 Subject: [PATCH 58/62] Update for ActorSpawnOptions --- src/00_Core/Actor/ActorSpawner.cpp | 4 ++-- src/00_Core/Map/MapManager.cpp | 33 +++++++++++++++++++++--------- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/00_Core/Actor/ActorSpawner.cpp b/src/00_Core/Actor/ActorSpawner.cpp index 55cf1a57..fcf8b66b 100644 --- a/src/00_Core/Actor/ActorSpawner.cpp +++ b/src/00_Core/Actor/ActorSpawner.cpp @@ -68,8 +68,8 @@ ARM s32 ActorSpawner::Spawn(ActorTypeId type, Vec3p *pos, ActorSpawnOptions *opt Actor *actor2 = *actorSlot; actor2->mPos = *pos; actor2->mPrevPos = *pos; - (*actorSlot)->mUnk_010 = gMapManager->GetCourseData_Unk_1c(); - (*actorSlot)->mUnk_011 = gMapManager->GetCourseData_Unk_1d(); + (*actorSlot)->mUnk_010 = gMapManager->GetCurrentMapPosX(); + (*actorSlot)->mUnk_011 = gMapManager->GetCurrentMapPosY(); u16 nextIndex = index + 1; if (actorManager->mMaxActorIndex < nextIndex) { actorManager->mMaxActorIndex = nextIndex; diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index e97985b0..1ef0336b 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -45,7 +45,7 @@ extern s32 *func_ov000_02096418(s32 *param_1); extern void func_ov000_0209d6e8(unk32 *param_1, unk32 *param_2); extern s32 func_ov000_0209d71c(s32 *param_1, s32 param_2); extern unk32 func_ov000_020a5e9c(unk32 *param_1); -extern void func_ov000_020c3348(unk32 *param_1); +extern void func_ov000_020c3348(ActorSpawnOptions *param_1); extern void func_ov000_020d70a4(unk32 *param_1, unk32 param_2, unk32 param_3, unk32 param_4); extern void func_ov000_020d72b8(unk32 *param_1); extern unk32 func_ov000_020d7424(unk32 *param_1); @@ -72,7 +72,19 @@ extern MapBase *func_ov017_0215b4e8(MapBase *param_1, unk32 param_2, unk32 param // extern MapBase *func_ov018_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3); -struct astruct_16 {}; // What is this struct? +struct astruct_16 { + /* 00 */ Actor_UnkStruct_020 *mUnk_00; + /* 04 */ unk8 mUnk_08[0x10]; + /* 14 */ unk16 mAngle; + /* 16 */ unk8 mUnk_16; + /* 17 */ unk8 mUnk_17; + /* 18 */ unk32 mUnk_18; + /* 1c */ unk32 mUnk_1c; + /* 20 */ unk32 mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ unk32 mUnk_28; + /* 2c */ +}; // What is this struct? // This might be FlagsUnk2 struct UnkStruct_02082348 { @@ -1777,14 +1789,15 @@ u8 MapManager::func_ov00_02084a50() { return this->mMap->mUnk_011; } -void MapManager::SpawnNPC(Vec3p *param_2, unk32 param_3, unk32 param_4) { - void *aStack_3c; // = Actor_UnkStruct_020(); - // aStack_3c.field24_0x1c = 0xffffffff; - // aStack_3c.field25_0x20 = 0xffffffff; - func_ov000_020c3348((unk32 *) aStack_3c); - // aStack_3c.field26_0x24 = param_3; - // aStack_3c.field27_0x28 = param_4; - gActorSpawner->Spawn(ActorTypeId_EVIC, param_2, aStack_3c, NULL); +void MapManager::SpawnNPC(Vec3p *pos, unk32 param_3, unk32 param_4) { + ActorSpawnOptions actorSpawnOptions; + actorSpawnOptions.mUnk_00 = Actor_UnkStruct_020(); + actorSpawnOptions.mUnk_1c.id = -1; + actorSpawnOptions.mUnk_1c.index = -1; + func_ov000_020c3348(&actorSpawnOptions); + actorSpawnOptions.mUnk_24 = param_3; + actorSpawnOptions.mUnk_28 = param_4; + gActorSpawner->Spawn(ActorTypeId_EVIC, pos, &actorSpawnOptions, NULL); } ARM bool MapManager::func_ov00_02084ac4(u32 actorId) { From d022fec16af056fbf7be0e7a3b4f92368fc44c5b Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 29 Jun 2025 21:16:10 +0200 Subject: [PATCH 59/62] Fix usa symbols --- config/usa/arm9/overlays/ov000/symbols.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 7c84ed39..a9704b35 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -531,8 +531,8 @@ _ZN10MapManager18func_ov00_02082adcEv kind:function(arm,size=0x18) addr:0x2082a7 _ZN10MapManager18func_ov00_02082af4Ev kind:function(arm,size=0x48) addr:0x2082a94 _ZN10MapManager18func_ov00_02082b3cEi kind:function(arm,size=0x1cc) addr:0x2082adc _ZN10MapManager18func_ov00_02082d08Ev kind:function(arm,size=0x20) addr:0x2082ca8 -_ZN10MapManager20GetCourseData_Unk_1cEv kind:function(arm,size=0xc) addr:0x2082cc8 -_ZN10MapManager20GetCourseData_Unk_1dEv kind:function(arm,size=0xc) addr:0x2082cd4 +_ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x2082cc8 +_ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x2082cd4 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x2082ce0 _ZN10MapManager18func_ov00_02082d74Ei kind:function(arm,size=0x10) addr:0x2082d14 _ZN10MapManager18func_ov00_02082d84Ev kind:function(arm,size=0x98) addr:0x2082d24 From 52867bf54f57fdbb405b2940c38f13160414a289 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Mon, 30 Jun 2025 22:08:37 +0200 Subject: [PATCH 60/62] Fix SpawnNPC --- config/eur/arm9/overlays/ov000/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/symbols.txt | 2 +- src/00_Core/Map/MapManager.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index e07d7896..dbea5fdf 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -2833,7 +2833,7 @@ _ZN5Actor8vfunc_b0Ev kind:function(arm,size=0x4) addr:0x20c322c _ZN5Actor10GetLinkPosEP5Vec3p kind:function(arm,size=0x60) addr:0x20c3230 _ZN5Actor15GetLinkDummyPosEP5Vec3p kind:function(arm,size=0x98) addr:0x20c3290 _ZN19Actor_UnkStruct_09cC2Ev kind:function(arm,size=0x20) addr:0x20c3328 -func_ov000_020c3348 kind:function(arm,size=0x24) addr:0x20c3348 +_Z19func_ov000_020c3348P17ActorSpawnOptions kind:function(arm,size=0x24) addr:0x20c3348 func_ov000_020c336c kind:function(thumb,size=0x1a) addr:0x20c336c func_ov000_020c3388 kind:function(thumb,size=0x28) addr:0x20c3388 func_ov000_020c33b0 kind:function(thumb,size=0x24) addr:0x20c33b0 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index a9704b35..c49ac7df 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -2833,7 +2833,7 @@ _ZN5Actor8vfunc_b0Ev kind:function(arm,size=0x4) addr:0x20c31cc _ZN5Actor10GetLinkPosEP5Vec3p kind:function(arm,size=0x60) addr:0x20c31d0 _ZN5Actor15GetLinkDummyPosEP5Vec3p kind:function(arm,size=0x98) addr:0x20c3230 _ZN19Actor_UnkStruct_09cC2Ev kind:function(arm,size=0x20) addr:0x20c32c8 -func_ov000_020c3348 kind:function(arm,size=0x24) addr:0x20c32e8 +_Z19func_ov000_020c3348P17ActorSpawnOptions kind:function(arm,size=0x24) addr:0x20c32e8 func_ov000_020c336c kind:function(thumb,size=0x1a) addr:0x20c330c func_ov000_020c3388 kind:function(thumb,size=0x28) addr:0x20c3328 func_ov000_020c33b0 kind:function(thumb,size=0x24) addr:0x20c3350 diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 1ef0336b..6df41ea7 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -1791,7 +1791,7 @@ u8 MapManager::func_ov00_02084a50() { void MapManager::SpawnNPC(Vec3p *pos, unk32 param_3, unk32 param_4) { ActorSpawnOptions actorSpawnOptions; - actorSpawnOptions.mUnk_00 = Actor_UnkStruct_020(); + // actorSpawnOptions.mUnk_00 = Actor_UnkStruct_020(); actorSpawnOptions.mUnk_1c.id = -1; actorSpawnOptions.mUnk_1c.index = -1; func_ov000_020c3348(&actorSpawnOptions); From 18f940fde40ed6263b82c2b7e7f9e3cd348ba750 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Mon, 30 Jun 2025 23:29:42 +0200 Subject: [PATCH 61/62] Update --- include/DTCM/UnkStruct_027e0f64.hpp | 5 +++- include/Map/MapManager.hpp | 2 +- src/00_Core/Map/MapManager.cpp | 36 +++++++++++------------------ 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/include/DTCM/UnkStruct_027e0f64.hpp b/include/DTCM/UnkStruct_027e0f64.hpp index 33728a7e..975c6818 100644 --- a/include/DTCM/UnkStruct_027e0f64.hpp +++ b/include/DTCM/UnkStruct_027e0f64.hpp @@ -3,7 +3,10 @@ #include "global.h" #include "types.h" -struct UnkStruct_027e0f64 { +#include "Debug/DebugHierarchy.hpp" + +class UnkStruct_027e0f64 { +public: /* 0 */ DebugHierarchyBase *mUnk_0; /* 4 */ void *mUnk_4; /* 8 */ void *mUnk_8; diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 4ef12645..b1018279 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -86,7 +86,7 @@ public: void func_ov00_02082acc(); unk32 *func_ov00_02082adc(); void func_ov00_02082af4(); - bool func_ov00_02082b3c(unk32 *param_2); + void func_ov00_02082b3c(unk32 *param_2, Vec2b *param3); u8 func_ov00_02082d08(); u8 GetCurrentMapPosX(); u8 GetCurrentMapPosY(); diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 6df41ea7..e26cc57e 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -8,6 +8,7 @@ #include "Actor/ActorSpawner.hpp" #include "DTCM/UnkStruct_027e0d38.hpp" #include "DTCM/UnkStruct_027e0fd4.hpp" +#include "DTCM/UnkStruct_027e103c.hpp" #include "Player/PlayerBase.hpp" #include "Save/AdventureFlags.hpp" #include "Unknown/UnkStruct_02037750.hpp" @@ -54,8 +55,6 @@ extern void func_ov004_021024c4(MapManager *param_1, s32 param_2, bool param_3, extern void func_ov004_02102770(s32 *param_1); extern void func_ov004_02102b28(s32 *param_1); extern void func_ov004_02102e3c(s32 *param_1); -extern void func_ov004_02105578(ActorManager *param_1, u32 param_2); -extern void func_ov004_02105608(ActorManager *param_1, unk32 param_2, unk32 param_3, unk32 param_4); extern void func_ov004_02106db8(unk32 *param_1); // UnkStruct_027e0c68 doesn't exist, so using unk32 extern MapBase *func_ov012_0212b358(MapBase *param_1, unk32 param_2, unk32 param_3); @@ -139,7 +138,7 @@ extern unk32 *data_027e0f6c; extern unk32 *data_027e0f70; extern unk32 *data_027e0f78; extern unk32 *data_027e0f7c; -extern unk32 *data_027e103c; +extern UnkStruct_027e103c *data_027e103c; extern unk32 *data_ov000_020e24a4; extern MapManager_Unk2 data_ov000_020e24c8[]; @@ -567,35 +566,30 @@ ARM void MapManager::func_ov00_02082af4() { this->mUnk_0b = false; } -bool MapManager::func_ov00_02082b3c(unk32 *param_2) { +void MapManager::func_ov00_02082b3c(unk32 *param_2, Vec2b *param_3) { u8 bVar1; - PlayerBase *puVar2; u16 uVar3; u32 uVar4; unk32 uVar5; - u32 in_r3; ActorManager *pAVar6; - unk32 local_18; + PlayerBase *puVar2; - local_18 = in_r3; // what's the point of that? - this->mCourse->FindMapGridPos((Vec2b *) &local_18, this->mCourse, (u32) * (u8 *) (param_2 + 0x12)); + this->mCourse->FindMapGridPos(param_3, this->mCourse, *(u32 *) ((unk32) param_2 + 0x12)); uVar4 = this->GetCurrentMapPosX(); - if (((((local_18 & 0xff) == uVar4) && (uVar4 = this->GetCurrentMapPosY(), (local_18 >> 8 & 0xff) == uVar4)) && + if (((((param_3->x) == uVar4) && (uVar4 = this->GetCurrentMapPosY(), (param_3->y) == uVar4)) && ((*(s32 *) (param_2 + 8) != 1 || (*(s32 *) (*(s32 *) data_027e0d38 + 0x14) != 1)))) && (*(char *) (param_2 + 0x15) == '\0')) { gAdventureFlags->func_ov00_020976c8(); - puVar2 = gPlayer; this->mUnk_0c = *(unk32 *) (param_2 + 0x13); - // puVar2->TeleportToEntrance(*(unk32 *) (param_2 + 0x13), false); - // (**(code **) (**(int **) puVar2 + 0x38))(*(int **) puVar2, *(unk32 *) (param_2 + 0x13), 0); - // func_ov004_02106db8(data_027e0c68); + gPlayer->TeleportToEntrance(*(unk32 *) (param_2 + 0x13), false); + func_ov004_02106db8(data_027e0c68); this->mMap->vfunc_18(); } else { gAdventureFlags->func_ov00_020976c8(); func_ov000_0208b13c(data_027e0f64); uVar5 = this->func_ov00_02082d08(); - gActorManager->func_ov004_02105608(local_18 & 0xff, local_18 >> 8 & 0xff, uVar5); + gActorManager->func_ov004_02105608(param_3->x, param_3->y, uVar5); this->mMap->vfunc_2c(); func_ov004_02102b28(data_027e0f68); func_ov004_02102770(data_027e0f6c); @@ -603,14 +597,12 @@ bool MapManager::func_ov00_02082b3c(unk32 *param_2) { bVar1 = *(u8 *) (param_2 + 0x12); uVar3 = this->mCourse->FindCurrentMapData_Unk_04(); uVar4 = this->mCourse->FindMapData_Unk_04((u32) bVar1); - (this->mCourse->mCurrMapPos).x = (u8) local_18; - (this->mCourse->mCurrMapPos).y = (u8) * (&local_18 + 0x4); // I assume this is what Ghidra means by "local_18._1_1_" + (this->mCourse->mCurrMapPos).x = (u8) param_3->x; + (this->mCourse->mCurrMapPos).y = (u8) param_3->y; this->func_ov004_021024c4(param_2, uVar3 != uVar4, 0); - func_ov004_02105578(gActorManager, (u32) * (u8 *) (param_2 + 0x12)); - // data_027e0d3c-> - // UnkStruct_027e0103c::thunk_FUN_overlay_d_0__020cf7e8(*PTR_PTR_overlay_d_0__02082cfc); + gActorManager->func_ov004_02105578(*(unk32 *) ((unk32) param_2 + 0x12)); + data_027e103c->func_ov000_020cfcec(); } - return true; } ARM u8 MapManager::func_ov00_02082d08() { @@ -1257,7 +1249,6 @@ ARM void MapManager::func_ov00_02083ce8(Vec3p *param_2, u32 param_3, s32 param_4 } local_38 = *param_2; param_2->y = MapData_vfunc_68(&local_38, true); - ; } ARM s32 MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) { @@ -1791,7 +1782,6 @@ u8 MapManager::func_ov00_02084a50() { void MapManager::SpawnNPC(Vec3p *pos, unk32 param_3, unk32 param_4) { ActorSpawnOptions actorSpawnOptions; - // actorSpawnOptions.mUnk_00 = Actor_UnkStruct_020(); actorSpawnOptions.mUnk_1c.id = -1; actorSpawnOptions.mUnk_1c.index = -1; func_ov000_020c3348(&actorSpawnOptions); From f3b92f5a6c57656f7b20924a6c61dbae07fa506a Mon Sep 17 00:00:00 2001 From: Aetias Date: Tue, 1 Jul 2025 22:04:31 +0200 Subject: [PATCH 62/62] FIx build --- config/eur/arm9/overlays/ov000/symbols.txt | 8 +- config/usa/arm9/overlays/ov000/symbols.txt | 8 +- include/Map/MapBase.hpp | 4 +- include/Map/MapManager.hpp | 12 +-- include/Map/MapOverworld.hpp | 4 +- include/Player/PlayerBase.hpp | 2 +- include/lib/math.h | 96 ---------------------- src/00_Core/Actor/Actor.cpp | 24 +++--- src/00_Core/Actor/ActorSpawner.cpp | 4 +- src/00_Core/Map/MapBase.cpp | 4 +- src/00_Core/Map/MapManager.cpp | 81 ++++++++---------- src/18_Overworld/Map/MapOverworld.cpp | 4 +- 12 files changed, 73 insertions(+), 178 deletions(-) delete mode 100644 include/lib/math.h diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 63c5f6ac..237f2a65 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -609,7 +609,7 @@ _ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x2083bd4 _ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x2083bfc _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083c24 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083c50 -_ZN10MapManager18func_ov00_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c7c +_ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x2083c7c _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083ce8 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 _ZN10MapManager16MapData_vfunc_60EPh kind:function(arm,size=0x18) addr:0x2083e58 @@ -621,9 +621,9 @@ _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f8 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f98 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083fb0 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2084024 -_ZN10MapManager16MapData_vfunc_54EPc kind:function(arm,size=0x18) addr:0x2084088 -_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x20840a0 -_ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x20840c4 +_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084088 +_ZN10MapManager18func_ov00_020840a0Ecc kind:function(arm,size=0x24) addr:0x20840a0 +_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x20840c4 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x20840dc _ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x2084100 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x2084114 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index bf12c8db..293b51c3 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -609,7 +609,7 @@ _ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x2083b74 _ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x2083b9c _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x2083bc4 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x2083bf0 -_ZN10MapManager18func_ov00_02083c7cEP5Vec3pj kind:function(arm,size=0x6c) addr:0x2083c1c +_ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x2083c1c _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr:0x2083c88 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083dd4 _ZN10MapManager16MapData_vfunc_60EPh kind:function(arm,size=0x18) addr:0x2083df8 @@ -621,9 +621,9 @@ _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f2 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x2083f38 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083f50 _ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x2083fc4 -_ZN10MapManager16MapData_vfunc_54EPc kind:function(arm,size=0x18) addr:0x2084028 -_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x2084040 -_ZN10MapManager16MapData_vfunc_78EPb kind:function(arm,size=0x18) addr:0x2084064 +_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x2084028 +_ZN10MapManager18func_ov00_020840a0Ecc kind:function(arm,size=0x24) addr:0x2084040 +_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x2084064 _ZN10MapManager18func_ov00_020840dcEv kind:function(arm,size=0x24) addr:0x208407c _ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x20840a0 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x20840b4 diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index a99658ac..d4602640 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -135,7 +135,7 @@ public: /* 48 */ virtual void vfunc_48(); /* 4c */ virtual s32 vfunc_4c() = 0; /* 50 */ virtual unk32 vfunc_50(); - /* 54 */ virtual unk32 vfunc_54(unk8 *param_1); + /* 54 */ virtual unk32 vfunc_54(Vec2b *param_1); /* 58 */ virtual unk32 vfunc_58(Vec2b *param_1, int param_2); /* 5c */ virtual unk32 vfunc_5c(); /* 60 */ virtual unk32 vfunc_60(u8 *param_1); @@ -144,7 +144,7 @@ public: /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); /* 74 */ virtual s32 vfunc_74(Vec3p *param_2); - /* 78 */ virtual unk32 vfunc_78(bool *param_1); + /* 78 */ virtual unk32 vfunc_78(Vec2b *param_1); /* 7c */ virtual s32 vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]); /* 80 */ virtual unk32 vfunc_80(); /* 84 */ virtual void vfunc_84(unk32 param_2); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index d82694db..52be0786 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -166,7 +166,7 @@ public: s32 GetTileEndZ(unk32 z); s32 func_ov00_02083c24(unk32 x); s32 func_ov00_02083c50(unk32 z); - void func_ov00_02083c7c(Vec3p *param_2, u32 param_3); + void func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3); static void func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5); s32 func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); unk32 MapData_vfunc_60(u8 *param_1); @@ -178,9 +178,9 @@ public: unk32 MapData_vfunc_70(Vec3p *param_2); static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds); - unk32 MapData_vfunc_54(unk8 *a); - unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4); - unk32 MapData_vfunc_78(bool *param_1); + unk32 MapData_vfunc_54(Vec2b *a); + unk32 func_ov00_020840a0(unk8 param_2, unk8 param_3); + unk32 MapData_vfunc_78(Vec2b *param_1); unk8 func_ov00_020840dc(); static unk8 func_ov00_02084100(unk32 *param_1, MapManager *param_2); u32 GetMapData_Unk_48(); @@ -232,10 +232,10 @@ public: unk8 func_ov00_02084d24(unk8 param_2, unk8 param_3, unk32 param_4); s32 func_ov00_02084d4c(unk32 param_2, unk32 param_3, Vec3p *param_4); unk32 func_ov00_02084ebc(Vec3p *param_2); - s32 func_ov00_02085108(s32 *param_2); + s32 func_ov00_02085108(Vec3p *param_2); static s32 func_ov00_0208527c(MapManager *param_1, unk32 param_2, unk32 *param_3); static s32 func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *param_3); - static unk32 func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 param_3, unk32 param_4); + unk32 func_ov00_02085594(Vec3p *param_2); static void func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3); static unk8 func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 param_3); s32 func_ov00_02085a34(Vec3p *param_2, unk32 param_3); diff --git a/include/Map/MapOverworld.hpp b/include/Map/MapOverworld.hpp index 482b3ad1..4ce6d91a 100644 --- a/include/Map/MapOverworld.hpp +++ b/include/Map/MapOverworld.hpp @@ -46,7 +46,7 @@ public: /* 1c */ virtual void vfunc_1c(bool param_2) override; /* 20 */ virtual void vfunc_20(s32 param_2) override; /* 2c */ virtual void vfunc_2c() override; - /* 4c */ virtual void vfunc_4c() override; + /* 4c */ virtual s32 vfunc_4c() override; /* 54 */ virtual unk32 vfunc_54() override; /* 58 */ virtual unk32 vfunc_58() override; /* 5c */ virtual unk32 vfunc_5c() override; @@ -58,7 +58,7 @@ public: /* 94 */ virtual void vfunc_94() override; /* 98 */ virtual void vfunc_98() override; /* a4 */ virtual unk32 vfunc_a4() override; - /* b0 */ virtual unk8 vfunc_b0(unk32 param_2, unk32 param_3) override; + /* b0 */ virtual void vfunc_b0(unk32 param_2, unk32 param_3) override; /* bc */ virtual void vfunc_bc() override; /* c0 */ virtual void vfunc_c0() override; /* c4 */ diff --git a/include/Player/PlayerBase.hpp b/include/Player/PlayerBase.hpp index bb14a81f..744ff464 100644 --- a/include/Player/PlayerBase.hpp +++ b/include/Player/PlayerBase.hpp @@ -62,6 +62,6 @@ public: }; extern PlayerBase *gPlayer; -extern Vec3p *gPlayerPos; +extern Vec3p gPlayerPos; extern Vec3p gPlayerVel; extern u16 gPlayerAngle; diff --git a/include/lib/math.h b/include/lib/math.h deleted file mode 100644 index 28e2fd0b..00000000 --- a/include/lib/math.h +++ /dev/null @@ -1,96 +0,0 @@ -#pragma once - -#include "global.h" -#include "types.h" - -// Q20.12 fixed point number -typedef s32 q20; -// Q4.12 fixed point number -typedef s16 q4; - -#define INT_TO_Q20(n) ((s32) ((n) << 12)) -#define FLOAT_TO_Q21(n) ((s32) (((n) * 8192 + 1) / 4)) -#define FLOAT_TO_Q20(n) ((s32) (((n) * 8192 + 1) / 2)) -#define FLOAT_TO_Q19(n) ((s32) (((n) * 8192 + 1))) -#define ROUND_Q20(n) (((s32) (n) + 0x800) >> 12) -#define MUL_Q20(a, b) (q20)((((s64) (a)) * ((s64) (b)) + 0x800) >> 12) - -#define DEG_TO_ANG(n) ((n) * 0x10000 / 360) -#define SIN(n) (gSinCosTable[2 * ((n) >> 4)]) -#define COS(n) (gSinCosTable[2 * ((n) >> 4) + 1]) - -extern "C" s32 Atan2(s32 x, s32 y); -extern q4 gSinCosTable[]; - -typedef struct { - /* 0 */ s8 x; - /* 1 */ s8 y; - /* 2 */ -} Vec2b; - -typedef struct { - /* 0 */ s16 x; - /* 1 */ s16 y; - /* 2 */ -} Vec2s; - -typedef struct { - /* 0 */ q20 x; - /* 4 */ q20 y; - /* 8 */ q20 z; - /* c */ -} Vec3p; - -extern const Vec3p gVec3p_ZERO; - -extern "C" void Vec3p_Add(Vec3p *a, Vec3p *b, Vec3p *out); -extern "C" void Vec3p_Sub(Vec3p *a, Vec3p *b, Vec3p *out); -extern "C" q20 Vec3p_Dot(Vec3p *a, Vec3p *b); -extern "C" void Vec3p_Cross(Vec3p *a, Vec3p *b, Vec3p *out); -extern "C" q20 Vec3p_Length(Vec3p *a); -extern "C" void Vec3p_Normalize(Vec3p *vec, Vec3p *out); -extern "C" void Vec3p_Axpy(q20 a, Vec3p *x, Vec3p *y, Vec3p *out); -extern "C" q20 Vec3p_Distance(Vec3p *a, Vec3p *b); -extern "C" void Vec3p_Scale(Vec3p *vec, q20 scale); - -inline void Vec3p_Rotate(Vec3p *vec, q20 sin, q20 cos, Vec3p *out) { - out->x += MUL_Q20(vec->z, sin); - out->z += MUL_Q20(vec->z, cos); - out->x += MUL_Q20(vec->x, cos); - out->z += MUL_Q20(vec->x, -sin); -} - -inline void Vec3p_CopyXZ(Vec3p *vec, Vec3p *out) { - q20 z = vec->z; - q20 x = vec->x; - - out->x = x; - out->y = 0; - out->z = z; -} - -inline void Vec3p_Copy(Vec3p *vec, Vec3p *out) { - out->x = vec->x; - out->y = vec->y; - out->z = vec->z; -} - -typedef struct { - /* 00 */ q20 x; - /* 04 */ q20 y; - /* 08 */ q20 z; - /* 0c */ q20 w; - /* 10 */ -} Vec4p; - -typedef struct { - /* 00 */ Vec3p xColumn; - /* 0c */ Vec3p yColumn; - /* 18 */ Vec3p zColumn; - /* 24 */ -} Mat3p; - -extern "C" u32 FastDivide(u32 a, u32 b); -extern "C" u32 Divide(u32 a, u32 b); -extern "C" bool Approach(unk32 *src, unk32 dest, unk32 step); -extern "C" bool Approach_thunk(unk32 *src, unk32 dest, unk32 step); diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index a6af4159..73db38f9 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -332,7 +332,7 @@ ARM bool Actor::vfunc_4c(unk32 *param1) { } ARM bool Actor::IsNearLink() { - Vec3p playerPos = *gPlayerPos; + Vec3p playerPos = gPlayerPos; q20 z = playerPos.z; q20 dx = abs(playerPos.x - mPos.x); @@ -365,7 +365,7 @@ ARM bool Actor::func_ov00_020c1da0(s32 param1, Vec3p *param2) { if (param2) { vec = *param2; } else { - Vec3p_Sub(gPlayerPos, &mPrevPos, &vec); + Vec3p_Sub(&gPlayerPos, &mPrevPos, &vec); } return gPlayer->vfunc_30(mUnk_124, &vec, param1); @@ -379,7 +379,7 @@ ARM bool Actor::func_ov00_020c1e2c(s32 param1, Vec3p *param2) { if (param2) { vec = *param2; } else { - Vec3p_Sub(gPlayerPos, &mPrevPos, &vec); + Vec3p_Sub(&gPlayerPos, &mPrevPos, &vec); } Cylinder hitbox; @@ -411,7 +411,7 @@ ARM bool Actor::func_ov00_020c1fc8(PlayerCollide flags) { bool result = false; if (mHitbox.size >= 0) { Vec3p vecFromPlayer; - Vec3p_Sub(&mPos, gPlayerPos, &vecFromPlayer); + Vec3p_Sub(&mPos, &gPlayerPos, &vecFromPlayer); if (this->CollidesWithPlayer(flags & PlayerCollide_Sword)) { Knockback knockback; knockback.mUnk_00 = gPlayer->EquipItem_vfunc_2c(); @@ -459,7 +459,7 @@ ARM bool Actor::func_ov00_020c1fc8(PlayerCollide flags) { ARM bool Actor::CollidesWithShield(Cylinder *param1) { Vec3p vecFromPlayer; - Vec3p_Sub(&mPos, gPlayerPos, &vecFromPlayer); + Vec3p_Sub(&mPos, &gPlayerPos, &vecFromPlayer); s32 currAngle = gPlayerAngle; s32 angle = Atan2(vecFromPlayer.x, vecFromPlayer.z); s32 angleDiff = (s16) angle - currAngle; @@ -631,13 +631,13 @@ ARM q20 Actor::XzDistanceTo(Vec3p *vec) { } ARM q20 Actor::DistanceToLink() { - return Vec3p_Distance(&mPos, gPlayerPos); + return Vec3p_Distance(&mPos, &gPlayerPos); } ARM q20 Actor::XzDistanceToLink() { Vec3p src; Vec3p_CopyXZ(&mPos, &src); - Vec3p dest = *gPlayerPos; + Vec3p dest = gPlayerPos; dest.y = 0; return Vec3p_Distance(&src, &dest); @@ -655,7 +655,7 @@ ARM s16 Actor::GetAngleTo(Vec3p *vec) { } ARM s32 Actor::GetAngleToLink() { - return this->GetAngleTo(gPlayerPos); + return this->GetAngleTo(&gPlayerPos); } extern "C" void func_0202d95c(Vec3p *param1, q20 param2); @@ -735,7 +735,7 @@ ARM bool Actor::func_ov00_020c2c70() { this->GetLinkPos(&pos); Vec3p_Sub(&pos, &mPos, &vel); } else { - Vec3p_Sub(gPlayerPos, &mPos, &vel); + Vec3p_Sub(&gPlayerPos, &mPos, &vel); } } Vec3p_Add(&mPos, &vel, &mPos); @@ -777,7 +777,7 @@ ARM bool Actor::func_ov00_020c2de4() { func_0202d95c(&vel, FLOAT_TO_Q20(1.0)); } } else { - Vec3p_Sub(gPlayerPos, &mPos, &vel); + Vec3p_Sub(&gPlayerPos, &mPos, &vel); } Vec3p_Add(&mPos, &vel, &mPos); mVel = vel; @@ -927,7 +927,7 @@ ARM void Actor::GetLinkPos(Vec3p *result) { if (gPlayerLink != NULL && gPlayerLink->GetCurrentCharacter() != PlayerCharacter_Link) { return this->GetLinkDummyPos(result); } - result = gPlayerPos; + *result = gPlayerPos; } ARM void Actor::GetLinkDummyPos(Vec3p *result) { @@ -938,7 +938,7 @@ ARM void Actor::GetLinkDummyPos(Vec3p *result) { *result = dummy->mPos; return; } - result = gPlayerPos; + *result = gPlayerPos; } Actor_UnkStruct_09c::Actor_UnkStruct_09c() { diff --git a/src/00_Core/Actor/ActorSpawner.cpp b/src/00_Core/Actor/ActorSpawner.cpp index 55cf1a57..fcf8b66b 100644 --- a/src/00_Core/Actor/ActorSpawner.cpp +++ b/src/00_Core/Actor/ActorSpawner.cpp @@ -68,8 +68,8 @@ ARM s32 ActorSpawner::Spawn(ActorTypeId type, Vec3p *pos, ActorSpawnOptions *opt Actor *actor2 = *actorSlot; actor2->mPos = *pos; actor2->mPrevPos = *pos; - (*actorSlot)->mUnk_010 = gMapManager->GetCourseData_Unk_1c(); - (*actorSlot)->mUnk_011 = gMapManager->GetCourseData_Unk_1d(); + (*actorSlot)->mUnk_010 = gMapManager->GetCurrentMapPosX(); + (*actorSlot)->mUnk_011 = gMapManager->GetCurrentMapPosY(); u16 nextIndex = index + 1; if (actorManager->mMaxActorIndex < nextIndex) { actorManager->mMaxActorIndex = nextIndex; diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index f4182b96..960c9871 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -18,7 +18,7 @@ s32 MapBase::func_ov00_0207e28c(s32 param_2) {} void MapBase::vfunc_b4() {} void MapBase::vfunc_48() {} unk32 MapBase::vfunc_50() {} -unk32 MapBase::vfunc_54(unk8 *param_1) {} +unk32 MapBase::vfunc_54(Vec2b *param_1) {} unk32 MapBase::vfunc_58(Vec2b *param_1, int param_2) {} unk32 MapBase::vfunc_5c() {} unk32 MapBase::vfunc_60(u8 *param_1) {} @@ -40,7 +40,7 @@ void MapBase::vfunc_a0() {} unk32 MapBase::vfunc_a4(unk8 *param_1) {} void MapBase::vfunc_a8() {} void MapBase::vfunc_ac() {} -unk32 MapBase::vfunc_78(bool *param_1) {} +unk32 MapBase::vfunc_78(Vec2b *param_1) {} s32 MapBase::vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]) {} unk32 MapBase::vfunc_80() {} void MapBase::vfunc_84(unk32 param_2) {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 15de64f6..176ed826 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -254,12 +254,7 @@ ARM Vec3p *MapManager::func_ov00_02082538() { s32 var1 = this->mMap->vfunc_4c(); Vec3p var0; if (var1 != 2) { - q20 x = gPlayerPos->x; - q20 y = gPlayerPos->y; - var0.x = x; - var0.y = y; - q20 z = gPlayerPos->z; - var0.z = z; + var0 = gPlayerPos; return &var0; } return &this->mMap->mUnk_1a0; @@ -674,9 +669,9 @@ ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { *param_3 = this->mCourse->mUnk_0b8; return; } - local_1c.y = gPlayerPos->y; - local_1c.x = gPlayerPos->x; - local_1c.z = gPlayerPos->z; + local_1c.y = gPlayerPos.y; + local_1c.x = gPlayerPos.x; + local_1c.z = gPlayerPos.z; // this->func_ov00_02083a1c(auStack_2c, this, &local_1c); this->func_ov00_02082d84(auStack_2c, param_2, param_3); } @@ -710,9 +705,9 @@ ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) { *param_3 = this->mCourse->mUnk_0c0; return; } - local_20.x = *(s32 *) gPlayerPos->x; - local_20.y = *(s32 *) gPlayerPos->y; - local_20.z = *(s32 *) gPlayerPos->z; + local_20.x = *(s32 *) gPlayerPos.x; + local_20.y = *(s32 *) gPlayerPos.y; + local_20.z = *(s32 *) gPlayerPos.z; uVar1 = this->func_ov00_02082d08(); this->func_ov00_02083298(uVar1, &local_20, param_2, param_3); } @@ -960,10 +955,10 @@ ARM bool MapManager::func_ov00_020836dc(u32 type, u32 actorId) { switch (actorId) { case 0: case 1: - q20 y = gPlayerPos->y; - playerPos.x = gPlayerPos->x; + q20 y = gPlayerPos.y; + playerPos.x = gPlayerPos.x; playerPos.y = y; - playerPos.z = gPlayerPos->z; + playerPos.z = gPlayerPos.z; break; default: actor = gActorManager->FindActorById(actorId); @@ -1179,11 +1174,11 @@ ARM s32 MapManager::func_ov00_02083c50(unk32 z) { return this->GetMapCenterZ() + this->mMap->GetTileStartZ(z) + 0x800; } -ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, u32 param_3) { +ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3) { Vec3p local_28; - q20 x = this->func_ov00_02083c24(param_3 & 0xff); + q20 x = this->func_ov00_02083c24(param_3.x); // param_2->x = x; - q20 z = this->func_ov00_02083c50(param_3 >> 8 & 0xff); + q20 z = this->func_ov00_02083c50(param_3.y); // param_2->z = z; q20 y = this->MapData_vfunc_68(&local_28, true); // param_2->y = y; @@ -1328,22 +1323,18 @@ void MapManager::GetTileWorldBounds(Vec2b *tile, AABB *tileBounds) { Vec3p_Add(&tileBounds->max, &local_20, &tileBounds->max); } -unk32 MapManager::MapData_vfunc_54(unk8 *a) { +unk32 MapManager::MapData_vfunc_54(Vec2b *a) { return this->mMap->vfunc_54(a); // what to use for this param? } -unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) { - unk8 local_8; - unk8 local_7; - unk16 uStack_6; - - uStack_6 = (unk16) ((u32) param_4 >> 0x10); - // _local_8 = CONCAT11(param_3, param_2); - this->MapData_vfunc_54(&local_8); // Doesn't take any params. - // No calls to functions according to objdiff, why??? +unk32 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3) { + Vec2b local_8; + local_8.x = param_2; + local_8.y = param_3; + return this->mMap->vfunc_54(&local_8); } -unk32 MapManager::MapData_vfunc_78(bool *param_1) { // bool* param placeholder for now, no way of knowing what the type is. +unk32 MapManager::MapData_vfunc_78(Vec2b *param_1) { return this->mMap->vfunc_78(param_1); } @@ -1669,9 +1660,9 @@ unk8 MapManager::func_ov00_02084740() { // iVar2 = this->func_ov00_02084700(?); // what param? // iVar3 = UnkStruct_027e0d38::FUN_overlay_d_0__02078b40(*(UnkStruct_027e0d38 **) PTR_PTR_overlay_d_0__020847d4); if (iVar3 != 2) { - local_1c8 = *(unk32 *) gPlayerPos->x; - local_1c4 = *(unk32 *) gPlayerPos->y; - local_1c0 = *(unk32 *) gPlayerPos->z; + local_1c8 = *(unk32 *) gPlayerPos.x; + local_1c4 = *(unk32 *) gPlayerPos.y; + local_1c0 = *(unk32 *) gPlayerPos.z; // bVar1 = FUN_overlay_d_0__02083780(&local_1c8); // MapManager method? if (bVar1) { iVar2 = this->func_ov00_020847f0(); @@ -2157,7 +2148,7 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { return 0; } -s32 MapManager::func_ov00_02085108(s32 *param_2) { +s32 MapManager::func_ov00_02085108(Vec3p *param_2) { MapManager *puVar1; unk32 uVar2; int *piVar3; @@ -2199,9 +2190,9 @@ s32 MapManager::func_ov00_02085108(s32 *param_2) { local_2c = iVar8; // iVar4 = func_0202b8e4(&local_34, 2); if (iVar4 != 0) { - *param_2 = piVar3[6]; - param_2[1] = piVar3[7]; - param_2[2] = piVar3[8]; + param_2->x = piVar3[6]; + param_2->y = piVar3[7]; + param_2->z = piVar3[8]; return (int) *(char *) ((int) piVar3 + 0x12); } } @@ -2338,19 +2329,19 @@ s32 MapManager::func_ov00_020853fc(MapManager *param_1, Vec3p *param_2, s32 *par return iVar7; } -unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 param_3, unk32 param_4) { +unk32 MapManager::func_ov00_02085594(Vec3p *param_2) { int *piVar1; int iVar2; unk32 dVar3; // dword unk32 uVar4; bool bVar5; - unk32 uStack_2c; + Vec2b uStack_2c; Vec2b local_28; u32 uStack_24; Vec3p VStack_20; - param_1->func_ov00_02083a1c(&local_28, param_1, param_2); - piVar1 = (int *) param_1->MapData_vfunc_78(0); + MapManager::func_ov00_02083a1c(&local_28, this, param_2); + piVar1 = (int *) this->MapData_vfunc_78(0); bVar5 = true; if (piVar1 != (int *) 0x0) { param_2->x = piVar1[6]; @@ -2382,7 +2373,7 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 } } } - iVar2 = param_1->func_ov00_020840a0(local_28.x, local_28.y, param_4); + iVar2 = this->func_ov00_020840a0(local_28.x, local_28.y); if (iVar2 < 0x47) { if (0x45 < iVar2) { return 0; @@ -2445,13 +2436,13 @@ unk32 MapManager::func_ov00_02085594(MapManager *param_1, Vec3p *param_2, unk32 } else if (iVar2 == 0x50) { return 0; } - iVar2 = param_1->mMap->vfunc_58(&local_28, 5); // no params + iVar2 = this->mMap->vfunc_58(&local_28, 5); // no params if (iVar2 != 0) { return 0; } // uStack_2c._0_2_ = CONCAT11(local_27, local_28); - param_1->func_ov00_02083c7c(&VStack_20, uStack_2c); - // dVar3 = param_1->MapData_vfunc_70(); + this->func_ov00_02083c7c(&VStack_20, uStack_2c); + // dVar3 = this->MapData_vfunc_70(); if (dVar3 != 0xffff) { func_ov000_02093a1c(&uStack_24, data_027e0f6c); if ((uStack_24 >> 5 & 3) != 1) { @@ -2505,7 +2496,7 @@ unk8 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, s32 par iVar3 = param_1->GetMapHeight(); local_38 = 0xffffffff; param_1->func_ov00_02083a1c(&local_28, param_1, param_2); - iVar6 = gPlayerPos->y; // *(int *) (PTR_gPlayerPos_overlay_d_0__02085a30 + 4); + iVar6 = gPlayerPos.y; // *(int *) (PTR_gPlayerPos_overlay_d_0__02085a30 + 4); for (iVar7 = local_28.x - 1; iVar7 <= (int) (local_28.x + 1); iVar7 = iVar7 + 1) { if ((-1 < iVar7) && (iVar1 = local_28.y - 1, iVar7 < iVar2)) { for (; iVar1 <= (int) (local_28.y + 1); iVar1 = iVar1 + 1) { diff --git a/src/18_Overworld/Map/MapOverworld.cpp b/src/18_Overworld/Map/MapOverworld.cpp index 5737ea54..e2c73db7 100644 --- a/src/18_Overworld/Map/MapOverworld.cpp +++ b/src/18_Overworld/Map/MapOverworld.cpp @@ -25,7 +25,7 @@ void MapOverworld::vfunc_c0() {} unk32 MapOverworld::vfunc_78() {} unk32 MapOverworld::vfunc_7c() {} unk32 MapOverworld::vfunc_80() {} -unk8 MapOverworld::vfunc_b0(unk32 param_2, unk32 param_3) {} +void MapOverworld::vfunc_b0(unk32 param_2, unk32 param_3) {} void MapOverworld::func_ov018_0215c650() {} void MapOverworld::func_ov018_0215c6ac() {} void MapOverworld::func_ov018_0215c6d0() {} @@ -35,4 +35,4 @@ void MapOverworld::func_ov018_0215c9ac() {} void func_ov018_0215ca24(s32 param1) {} void func_ov018_0215ca3c(s32 param1, s32 param2, unk32 param3, unk32 param4) {} void func_ov018_0215ca8c(s32 param1) {} -void MapOverworld::vfunc_4c() {} +s32 MapOverworld::vfunc_4c() {}