From a4a9bb5dfdc9d1b3c4e024f631ced1d5d22097d1 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 12 Jan 2025 19:50:41 +0100 Subject: [PATCH] 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) {}