From 5b3bc3313eb9d424657e6eb888ad741494484d03 Mon Sep 17 00:00:00 2001 From: SammygoodTunes Date: Tue, 4 Feb 2025 16:06:04 +0100 Subject: [PATCH] Decomp update --- config/eur/arm9/overlays/ov000/symbols.txt | 4 +- config/eur/arm9/overlays/ov015/symbols.txt | 2 +- config/usa/arm9/overlays/ov000/symbols.txt | 4 +- config/usa/arm9/overlays/ov015/symbols.txt | 2 +- include/Map/MapBase.hpp | 2 +- include/Map/MapManager.hpp | 6 +- src/00_Core/Map/MapBase.cpp | 2 +- src/00_Core/Map/MapManager.cpp | 68 +++++++++++----------- 8 files changed, 46 insertions(+), 44 deletions(-) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 9c7f5c87..687ff58d 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -576,7 +576,7 @@ _ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x20 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x20835f4 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x2083604 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x2083614 -_ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x2083624 +_ZN10MapManager14GetEntrancePosEP8Entrancei kind:function(arm,size=0x40) addr:0x2083624 _ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083664 _ZN10MapManager21GetTriggerBoundingBoxEiP4AABB kind:function(arm,size=0x10) addr:0x20836bc _ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x20836cc @@ -614,7 +614,7 @@ _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr: _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083e34 _ZN10MapManager16MapData_vfunc_60EPc kind:function(arm,size=0x18) addr:0x2083e58 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e70 -_ZN10MapManager16MapData_vfunc_68EP5Vec3pPb kind:function(arm,size=0x18) addr:0x2083ee0 +_ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x2083ee0 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083ef8 _ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083f44 _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f80 diff --git a/config/eur/arm9/overlays/ov015/symbols.txt b/config/eur/arm9/overlays/ov015/symbols.txt index 6d74b107..fa382d8d 100644 --- a/config/eur/arm9/overlays/ov015/symbols.txt +++ b/config/eur/arm9/overlays/ov015/symbols.txt @@ -290,7 +290,7 @@ func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129c04 _Z19func_ov015_02129c14P7MapBase kind:function(arm,size=0x10) addr:0x2129c14 _Z19func_ov015_02129c24P7MapBaseP5Vec3pS2_ kind:function(arm,size=0x10) addr:0x2129c24 _Z19func_ov015_02129c34P7MapBasei kind:function(arm,size=0x10) addr:0x2129c34 -_Z19func_ov015_02129c44i kind:function(arm,size=0x10) addr:0x2129c44 +_Z19func_ov015_02129c44P7MapBasei kind:function(arm,size=0x10) addr:0x2129c44 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129c54 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129ca4 func_ov015_02129ce8 kind:function(arm,size=0xac) addr:0x2129ce8 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 6416c7c0..cc3b1e16 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -576,7 +576,7 @@ _ZN10MapManager18func_ov00_020835e4EiPiPc kind:function(arm,size=0x10) addr:0x20 _ZN10MapManager18func_ov00_020835f4Ei kind:function(arm,size=0x10) addr:0x2083594 _ZN10MapManager18func_ov00_02083604Ei kind:function(arm,size=0x10) addr:0x20835a4 _ZN10MapManager18func_ov00_02083614Ei kind:function(arm,size=0x10) addr:0x20835b4 -_ZN10MapManager14GetEntrancePosEP5Vec3pi kind:function(arm,size=0x40) addr:0x20835c4 +_ZN10MapManager14GetEntrancePosEP8Entrancei kind:function(arm,size=0x40) addr:0x20835c4 _ZN10MapManager18func_ov00_02083664EP5Vec3pi kind:function(arm,size=0x58) addr:0x2083604 _ZN10MapManager21GetTriggerBoundingBoxEiP4AABB kind:function(arm,size=0x10) addr:0x208365c _ZN10MapManager23GetTriggerBoundingBoxesEiP4AABBi kind:function(arm,size=0x10) addr:0x208366c @@ -614,7 +614,7 @@ _ZN10MapManager18func_ov00_02083ce8EPS_Pijij kind:function(arm,size=0x14c) addr: _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x2083dd4 _ZN10MapManager16MapData_vfunc_60EPc kind:function(arm,size=0x18) addr:0x2083df8 _ZN10MapManager18func_ov00_02083e70Ev kind:function(arm,size=0x70) addr:0x2083e10 -_ZN10MapManager16MapData_vfunc_68EP5Vec3pPb kind:function(arm,size=0x18) addr:0x2083e80 +_ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x2083e80 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_ kind:function(arm,size=0x4c) addr:0x2083e98 _ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083ee4 _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x2083f20 diff --git a/config/usa/arm9/overlays/ov015/symbols.txt b/config/usa/arm9/overlays/ov015/symbols.txt index 695075e4..3d985aa5 100644 --- a/config/usa/arm9/overlays/ov015/symbols.txt +++ b/config/usa/arm9/overlays/ov015/symbols.txt @@ -290,7 +290,7 @@ func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x2129b84 _Z19func_ov015_02129c14P7MapBase kind:function(arm,size=0x10) addr:0x2129b94 _Z19func_ov015_02129c24P7MapBaseP5Vec3pS2_ kind:function(arm,size=0x10) addr:0x2129ba4 _Z19func_ov015_02129c34P7MapBasei kind:function(arm,size=0x10) addr:0x2129bb4 -_Z19func_ov015_02129c44i kind:function(arm,size=0x10) addr:0x2129bc4 +_Z19func_ov015_02129c44P7MapBasei kind:function(arm,size=0x10) addr:0x2129bc4 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x2129bd4 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x2129c24 func_ov015_02129ce8 kind:function(arm,size=0xac) addr:0x2129c68 diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index 254212bd..7a242891 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -140,7 +140,7 @@ public: /* 5c */ virtual unk32 vfunc_5c(); /* 60 */ virtual unk32 vfunc_60(unk8 *param_1); /* 64 */ virtual unk32 vfunc_64(); - /* 68 */ virtual unk8 vfunc_68(Vec3p *param_1, bool *param_2); + /* 68 */ virtual unk8 vfunc_68(Vec3p *param_1, bool param_2); /* 6c */ virtual unk8 vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2); /* 74 */ virtual s32 vfunc_74(Vec3p *param_2); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index 513c4cc4..5dfcbf93 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -128,8 +128,8 @@ public: unk32 func_ov00_020835f4(s32 param_2); void func_ov00_02083604(s32 param_2); unk8 func_ov00_02083614(s32 param_2); - bool GetEntrancePos(Vec3p *param_2, unk32 entranceId); - bool func_ov00_02083664(Vec3p *param_2, unk32 entranceId); + bool GetEntrancePos(Entrance *param_2, unk32 entranceId); + bool func_ov00_02083664(Entrance *param_2, unk32 entranceId); s32 GetTriggerBoundingBox(s32 param_2, AABB *param_3); s32 GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 param_4); bool func_ov00_020836dc(u32 param_2, u32 actorId); @@ -166,7 +166,7 @@ public: void func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4); unk32 MapData_vfunc_60(unk8 *param_1); bool func_ov00_02083e70(); - unk32 MapData_vfunc_68(Vec3p *param_1, bool *param_2); + unk32 MapData_vfunc_68(Vec3p *param_1, bool param_2); s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3); void func_ov00_02083f44(Vec3p *param_2); unk8 MapData_vfunc_6c(unk32 param_2, unk32 param_3, unk32 param_4); diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 6e9de875..d7cac5ad 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -23,7 +23,7 @@ unk32 MapBase::vfunc_58(Vec2b *param_1, int param_2) {} unk32 MapBase::vfunc_5c() {} unk32 MapBase::vfunc_60(unk8 *param_1) {} unk32 MapBase::vfunc_64() {} -unk8 MapBase::vfunc_68(Vec3p *param_1, bool *param_2) {} +unk8 MapBase::vfunc_68(Vec3p *param_1, bool param_2) {} unk8 MapBase::func_ov00_0207e940(unk8 *param_1) {} unk8 MapBase::func_ov00_0207e968() {} unk8 MapBase::func_ov00_0207e96c() {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 6dff6ace..c1f70e90 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -45,7 +45,7 @@ extern void func_ov004_02105608(ActorManager *param_1, unk32 param_2, unk32 para extern s32 func_ov015_02129c14(MapBase *param_1); extern bool func_ov015_02129c24(MapBase *param_1, Vec3p *param_2, Vec3p *param_3); extern bool func_ov015_02129c34(MapBase *param_1, s32 param_2); -extern bool func_ov015_02129c44(s32 param_1); +extern bool func_ov015_02129c44(MapBase *param_1, s32 param_2); extern s32 *data_027e0c68; extern s32 *data_027e0d38; @@ -229,7 +229,7 @@ ARM bool MapManager::func_ov00_02082494(s32 param_2) { ARM bool MapManager::func_ov00_020824cc(s32 param_2) { s32 var = this->mMap->vfunc_4c(); if (var == 2) { - bool state = func_ov015_02129c44(param_2); + bool state = func_ov015_02129c44(this->mMap, param_2); return state; } return false; @@ -545,10 +545,11 @@ ARM u8 MapManager::GetCurrentMapPosY() { } ARM u8 MapManager::func_ov00_02082d40() { - if (this->mCourse->mType == CourseType_Sea) { - return this->mCourse->mMapGrid[(u8) this->mCourse->mCurrMapPos.x][(u8) this->mCourse->mCurrMapPos.y]; + switch (this->mCourse->mType) { + case CourseType_Sea: + return this->mCourse->mMapGrid[(u8) this->mCourse->mCurrMapPos.x][(u8) this->mCourse->mCurrMapPos.y]; + default: return this->mCourse->mUnk_0b1; } - return this->mCourse->mUnk_0b1; } ARM u32 MapManager::func_ov00_02082d74(unk32 param_2) { @@ -906,25 +907,27 @@ ARM unk8 MapManager::func_ov00_02083614(s32 param_2) { return this->mCourse->func_ov00_0207cc24(param_2); } -ARM bool MapManager::GetEntrancePos(Vec3p *pos, unk32 entranceId) { - Vec3p *entrancePos = (Vec3p *) this->mMap->FindEntrance(entranceId); - s32 y = entrancePos->y; - s32 z = entrancePos->z; - pos->x = entrancePos->x; - pos->y = y; - pos->z = z; - //*&pos[1].x = *&entrancePos[1].x; - //*(&pos[1].x + 2) = *(&entrancePos[1].x + 2); - // pos[1].y = entrancePos[1].y; +ARM bool MapManager::GetEntrancePos(Entrance *param_1, unk32 entranceId) { + Entrance *entrance = this->mMap->FindEntrance(entranceId); + q20 y = entrance->mPos.y; + q20 z = entrance->mPos.z; + param_1->mPos.x = entrance->mPos.x; + param_1->mPos.y = y; + param_1->mPos.z = z; + param_1->mAngle = entrance->mAngle; + param_1->mId = entrance->mId; // mId needs to be u8 according to objdiff + param_1->mUnk_10 = entrance->mUnk_10; return true; } -ARM bool MapManager::func_ov00_02083664(Vec3p *param_2, unk32 entranceId) { - Vec3p entrancePos; - if (this->GetEntrancePos(&entrancePos, entranceId)) { - param_2->x = entrancePos.x; - param_2->y = entrancePos.y; - param_2->z = entrancePos.z; +ARM bool MapManager::func_ov00_02083664(Entrance *param_2, unk32 entranceId) { + Entrance entrance; + entrance.mId = (u8) 0xff; // mId needs to be u8 + entrance.mUnk_10 = 0; + if (this->GetEntrancePos(&entrance, entranceId)) { + param_2->mPos.x = entrance.mPos.x; + param_2->mPos.y = entrance.mPos.y; + param_2->mPos.z = entrance.mPos.z; return true; } return false; @@ -939,11 +942,10 @@ ARM s32 MapManager::GetTriggerBoundingBoxes(s32 param_2, AABB *param_3, s32 para } ARM bool MapManager::func_ov00_020836dc(u32 type, u32 actorId) { - bool state; Actor *actor; Vec3p playerPos; - if (actorId < 2) { + if (!(actorId != 0 && actorId != 1)) { // what an awkward statement (as opposed to actorId < 2) playerPos.x = gPlayerPos->x; playerPos.y = gPlayerPos->y; playerPos.z = gPlayerPos->z; @@ -952,9 +954,9 @@ ARM bool MapManager::func_ov00_020836dc(u32 type, u32 actorId) { if (actor == NULL) { return false; } - playerPos.x = *(s32 *) (actor + 0x48); - playerPos.y = *(s32 *) (actor + 0x4c); - playerPos.z = *(s32 *) (actor + 0x50); + playerPos.x = actor->mPos.x; + playerPos.y = actor->mPos.y; + playerPos.z = actor->mPos.z; } return this->IsTriggerTypeOverlapped(type, &playerPos); } @@ -1164,7 +1166,7 @@ ARM void MapManager::func_ov00_02083c7c(Vec3p *param_2, u32 param_3) { Vec3p local_28; param_2->x = this->func_ov00_02083c24(param_3 & 0xff); param_2->z = this->func_ov00_02083c50(param_3 >> 8 & 0xff); - param_2->y = this->MapData_vfunc_68(&local_28, 0); // please tell me this is correct + param_2->y = this->MapData_vfunc_68(&local_28, true); // please tell me this is correct } ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 param_3, s32 param_4, u32 param_5) { @@ -1203,7 +1205,7 @@ ARM void MapManager::func_ov00_02083ce8(MapManager *param_1, s32 *param_2, u32 p param_2[2] = iVar2 + 0x800; } } - iVar2 = param_1->MapData_vfunc_68(&local_2c, 0); // I really do hope this is right + iVar2 = param_1->MapData_vfunc_68(&local_2c, true); // I really do hope this is right param_2[1] = iVar2; } @@ -1238,7 +1240,7 @@ ARM bool MapManager::func_ov00_02083e70() { return iVar2 <= iVar1; } -ARM unk32 MapManager::MapData_vfunc_68(Vec3p *param_1, bool *param_2) { // not sure about the bool* here. +ARM unk32 MapManager::MapData_vfunc_68(Vec3p *param_1, bool param_2) { return this->mMap->vfunc_68(param_1, param_2); } @@ -1493,7 +1495,7 @@ unk8 MapManager::func_ov00_0208439c(Vec2s *param_2, Vec3p *param_3) { this->mMap->func_ov00_0207f630(param_2, param_3); this->GetMapMinBounds(&VStack_18); Vec3p_Add(param_3, &VStack_18, param_3); - iVar1 = this->MapData_vfunc_68(param_3, 0); // is this correct? + iVar1 = this->MapData_vfunc_68(param_3, true); // is this correct? param_3->y = iVar1; } @@ -1913,7 +1915,7 @@ void MapManager::func_ov00_02084c7c(unk32 param_2) { bool MapManager::func_ov00_02084c94(unk32 param_2) { bool bVar1; - if (-1 < param_2) { + if (0 <= param_2) { bVar1 = this->mCourse->GetMapDataFlag2(param_2); return bVar1; } @@ -1932,7 +1934,7 @@ void MapManager::func_ov00_02084cb0(unk32 param_2) { bool MapManager::func_ov00_02084cc8(unk32 param_2) { bool bVar1; - if (-1 < param_2) { + if (0 <= param_2) { bVar1 = this->mCourse->GetMapDataFlag3(param_2); return bVar1; } @@ -1951,7 +1953,7 @@ void MapManager::func_ov00_02084ce4(unk32 param_2) { bool MapManager::func_ov00_02084cfc(unk32 param_2) { bool bVar1; - if (-1 < param_2) { + if (0 <= param_2) { bVar1 = this->mCourse->GetMapDataFlag4(param_2); return bVar1; }