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) {}