From 9e69f5de93e8805bccf69307eb08c8fab8519e8c Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Sun, 6 Apr 2025 18:22:42 +0200 Subject: [PATCH 01/28] 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 02/28] 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 03/28] 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 04/28] 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 05/28] 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 06/28] 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 07/28] 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 08/28] 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 09/28] 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 10/28] 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 11/28] 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 12/28] 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 13/28] 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 14/28] 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 15/28] 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 16/28] 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 17/28] 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 18/28] 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 19/28] 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 20/28] 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 21/28] 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 22/28] 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 23/28] 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 24/28] 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 25/28] 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 26/28] 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 27/28] 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 28/28] 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);