From 8ad6359c7d3c7afcbddd7d450b7fa4b9764255b6 Mon Sep 17 00:00:00 2001 From: Aetias <144526980+AetiasHax@users.noreply.github.com> Date: Fri, 25 Jul 2025 15:59:54 +0200 Subject: [PATCH] ActorSwitchObject OK (#130) * Map symbol in Game * ActorSwitchObject OK * Mark ActorSwitchObject as complete * Document `mTrapActors` * Fix FilterActorBase * Fix regressions --- config/eur/arm9/overlays/ov000/delinks.txt | 3 +- config/eur/arm9/overlays/ov000/relocs.txt | 14 +- config/eur/arm9/overlays/ov000/symbols.txt | 90 ++++----- config/usa/arm9/overlays/ov000/delinks.txt | 3 +- config/usa/arm9/overlays/ov000/relocs.txt | 14 +- config/usa/arm9/overlays/ov000/symbols.txt | 124 ++++++------ config/usa/arm9/overlays/ov004/symbols.txt | 10 +- config/usa/arm9/overlays/ov012/symbols.txt | 2 +- config/usa/arm9/overlays/ov015/symbols.txt | 12 +- config/usa/arm9/overlays/ov017/symbols.txt | 4 +- include/Actor/ActorManager.hpp | 6 +- include/Actor/ActorRef.hpp | 4 +- include/Actor/ActorSpawner.hpp | 6 + include/Actor/Dungeon/ActorSwitchObject.hpp | 11 +- include/Actor/FilterActorBase.hpp | 10 - include/Map/Course.hpp | 11 +- include/Map/MapBase.hpp | 18 +- include/Map/MapManager.hpp | 42 +++-- include/Map/TilePos.hpp | 17 ++ include/Player/PlayerControl.hpp | 8 +- include/Unknown/UnkStruct_020eec9c.hpp | 1 + libs/nds/include/nds/math.h | 6 - src/00_Core/Actor/Actor.cpp | 3 +- src/00_Core/Actor/ActorManager.cpp | 38 ++-- .../Actor/Dungeon/ActorSwitchObject.cpp | 178 ++++++++++++++++-- src/00_Core/Map/Course.cpp | 2 +- src/00_Core/Map/MapBase.cpp | 18 +- src/00_Core/Map/MapManager.cpp | 169 ++++++++--------- src/00_Core/Player/LinkStateMove.cpp | 6 +- src/00_Core/Player/PlayerControl.cpp | 21 +-- src/14_Land/Actor/ActorRupee.cpp | 5 +- src/14_Land/Actor/Player/ActorRefill.cpp | 5 +- src/Main/Message/MessageManager.cpp | 5 +- 33 files changed, 519 insertions(+), 347 deletions(-) create mode 100644 include/Map/TilePos.hpp diff --git a/config/eur/arm9/overlays/ov000/delinks.txt b/config/eur/arm9/overlays/ov000/delinks.txt index c0417474..83d6cf72 100644 --- a/config/eur/arm9/overlays/ov000/delinks.txt +++ b/config/eur/arm9/overlays/ov000/delinks.txt @@ -21,6 +21,7 @@ src/00_Core/Actor/ActorSpawner.cpp: .text start:0x020c3f9c end:0x020c42d8 src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp: + complete .text start:0x0208fa70 end:0x020903a8 .init start:0x020df678 end:0x020df6b8 .ctor start:0x020e1ec4 end:0x020e1ec8 @@ -95,7 +96,7 @@ src/00_Core/Map/MapManager.cpp: .rodata start:0x020d88f0 end:0x020d8aa8 .init start:0x020df4cc end:0x020df640 .ctor start:0x020e1ebc end:0x020e1ec0 - .data start:0x020e24c4 end:0x020e253c + .data start:0x020e2484 end:0x020e253c .sbss start:0x020ec964 end:0x020ec9d4 src/00_Core/Player/LinkStateBase.cpp: diff --git a/config/eur/arm9/overlays/ov000/relocs.txt b/config/eur/arm9/overlays/ov000/relocs.txt index ed1624b9..cfd76b1a 100644 --- a/config/eur/arm9/overlays/ov000/relocs.txt +++ b/config/eur/arm9/overlays/ov000/relocs.txt @@ -7513,7 +7513,7 @@ from:0x020c1a2c kind:load to:0x027e0fc8 module:dtcm from:0x020c1ae4 kind:arm_call to:0x020c3180 module:overlay(0) from:0x020c1b58 kind:arm_call to:0x020c37ec module:overlay(0) from:0x020c1b64 kind:load to:0x027e0fe4 module:dtcm -from:0x020c1b68 kind:load to:0x020e71e8 module:overlay(0) +from:0x020c1b68 kind:load to:0x020e71e0 add:8 module:overlay(0) from:0x020c1c18 kind:load to:0x027e0e60 module:dtcm from:0x020c1c1c kind:load to:0x02084be0 module:overlay(0) from:0x020c1c3c kind:arm_call to:0x02084b38 module:overlay(0) @@ -11057,20 +11057,20 @@ from:0x020df5f4 kind:load to:0x020e24a4 module:overlay(0) from:0x020df5f8 kind:load to:0x020e24c8 module:overlay(0) from:0x020df5fc kind:load to:0x02086cd0 module:overlay(0) from:0x020df600 kind:load to:0x020ec964 module:overlay(0) -from:0x020df604 kind:load to:0x020e24d0 module:overlay(0) +from:0x020df604 kind:load to:0x020e24c8 add:0x8 module:overlay(0) from:0x020df608 kind:load to:0x020ec970 module:overlay(0) -from:0x020df60c kind:load to:0x020e24d8 module:overlay(0) +from:0x020df60c kind:load to:0x020e24c8 add:0x10 module:overlay(0) from:0x020df610 kind:load to:0x020ec97c module:overlay(0) -from:0x020df614 kind:load to:0x020e24e0 module:overlay(0) +from:0x020df614 kind:load to:0x020e24c8 add:0x18 module:overlay(0) from:0x020df618 kind:load to:0x020ec988 module:overlay(0) from:0x020df61c kind:load to:0x020e24e8 module:overlay(0) from:0x020df620 kind:load to:0x0207dd9c module:overlay(0) from:0x020df624 kind:load to:0x020ec994 module:overlay(0) -from:0x020df628 kind:load to:0x020e24f0 module:overlay(0) +from:0x020df628 kind:load to:0x020e24e8 add:0x8 module:overlay(0) from:0x020df62c kind:load to:0x020ec9a0 module:overlay(0) -from:0x020df630 kind:load to:0x020e24f8 module:overlay(0) +from:0x020df630 kind:load to:0x020e24e8 add:0x10 module:overlay(0) from:0x020df634 kind:load to:0x020ec9ac module:overlay(0) -from:0x020df638 kind:load to:0x020e2500 module:overlay(0) +from:0x020df638 kind:load to:0x020e24e8 add:0x18 module:overlay(0) from:0x020df63c kind:load to:0x020ec9b8 module:overlay(0) from:0x020df650 kind:arm_call to:0x0203eba8 module:main from:0x020df660 kind:arm_call to:0x0204f8d4 module:main diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 807fbd9a..bc052163 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -274,7 +274,7 @@ _ZN6Course13SetCourseNameEPc kind:function(arm,size=0x10) addr:0x0207ca68 _ZN6Course18func_ov00_0207ca78Eici kind:function(arm,size=0x30) addr:0x0207ca78 _ZN6Course18func_ov00_0207caa8EiPiPc kind:function(arm,size=0x88) addr:0x0207caa8 _ZN6Course18func_ov00_0207cb30Ei kind:function(arm,size=0x4c) addr:0x0207cb30 -_ZN6Course14FindMapGridPosEP5Vec2bPS_j kind:function(arm,size=0x5c) addr:0x0207cb7c +_ZN6Course14FindMapGridPosEj kind:function(arm,size=0x5c) addr:0x0207cb7c _ZN6Course13FindMapCenterEi kind:function(arm,size=0x10) addr:0x0207cbd8 _ZN6Course18func_ov00_0207cbe8Ei kind:function(arm,size=0x3c) addr:0x0207cbe8 _ZN6Course18func_ov00_0207cc24Ei kind:function(arm,size=0x48) addr:0x0207cc24 @@ -336,10 +336,10 @@ _ZN7MapBase18func_ov00_0207e28cEi kind:function(arm,size=0x1b8) addr:0x0207e28c _ZN7MapBase8vfunc_b4Ev kind:function(arm,size=0x28) addr:0x0207e444 _ZN7MapBase8vfunc_48Ev kind:function(arm,size=0x1c) addr:0x0207e46c _ZN7MapBase8vfunc_50Ev kind:function(arm,size=0x8) addr:0x0207e488 -_ZN7MapBase8vfunc_54EP5Vec2b kind:function(arm,size=0x8) addr:0x0207e490 -_ZN7MapBase8vfunc_58EP5Vec2bi kind:function(arm,size=0x8) addr:0x0207e498 +_ZN7MapBase8vfunc_54EP7TilePos kind:function(arm,size=0x8) addr:0x0207e490 +_ZN7MapBase8vfunc_58EP7TilePosi kind:function(arm,size=0x8) addr:0x0207e498 _ZN7MapBase8vfunc_5cEv kind:function(arm,size=0x8) addr:0x0207e4a0 -_ZN7MapBase8vfunc_60EP5Vec2b kind:function(arm,size=0x8) addr:0x0207e4a8 +_ZN7MapBase8vfunc_60EP7TilePos kind:function(arm,size=0x8) addr:0x0207e4a8 _ZN7MapBase8vfunc_64Ev kind:function(arm,size=0x8) addr:0x0207e4b0 _ZN7MapBase8vfunc_68EP5Vec3pb kind:function(arm,size=0x488) addr:0x0207e4b8 _ZN7MapBase18func_ov00_0207e940EPc kind:function(arm,size=0x28) addr:0x0207e940 @@ -358,22 +358,22 @@ _ZN7MapBase8vfunc_a0Ev kind:function(arm,size=0x4) addr:0x0207f338 _ZN7MapBase8vfunc_a4EPc kind:function(arm,size=0x8) addr:0x0207f33c _ZN7MapBase8vfunc_a8Ev kind:function(arm,size=0x4) addr:0x0207f344 _ZN7MapBase8vfunc_acEv kind:function(arm,size=0x4) addr:0x0207f348 -_ZN7MapBase8vfunc_78EP5Vec2b kind:function(arm,size=0x8) addr:0x0207f34c +_ZN7MapBase8vfunc_78EP7TilePos kind:function(arm,size=0x8) addr:0x0207f34c _ZN7MapBase8vfunc_7cEiPiiPs kind:function(arm,size=0x8) addr:0x0207f354 _ZN7MapBase8vfunc_80Ev kind:function(arm,size=0x8) addr:0x0207f35c _ZN7MapBase8vfunc_84Ei kind:function(arm,size=0x28) addr:0x0207f364 _ZN7MapBase18func_ov00_0207f38cEPi kind:function(arm,size=0x38) addr:0x0207f38c -_ZN7MapBase8vfunc_90EP5Vec2bi kind:function(arm,size=0xdc) addr:0x0207f3c4 +_ZN7MapBase8vfunc_90EP7TilePosi kind:function(arm,size=0xdc) addr:0x0207f3c4 _ZN7MapBase8vfunc_94Ev kind:function(arm,size=0x4) addr:0x0207f4a0 _ZN7MapBase18func_ov00_0207f4a4EP5Vec2si kind:function(arm,size=0x98) addr:0x0207f4a4 _ZN7MapBase18func_ov00_0207f53cEP5Vec2sPS_P5Vec3p kind:function(arm,size=0x4c) addr:0x0207f53c -_ZN7MapBase18func_ov00_0207f588EP5Vec2sPS_P5Vec2bi kind:function(arm,size=0xa8) addr:0x0207f588 +_ZN7MapBase18func_ov00_0207f588EP5Vec2sPS_P7TilePosi kind:function(arm,size=0xa8) addr:0x0207f588 _ZN7MapBase18func_ov00_0207f630EP5Vec2sP5Vec3p kind:function(arm,size=0x64) addr:0x0207f630 _ZN7MapBase13GetTileStartXEi kind:function(arm,size=0xc) addr:0x0207f694 _ZN7MapBase13GetTileStartZEi kind:function(arm,size=0xc) addr:0x0207f6a0 _ZN7MapBase11GetTileEndXEi kind:function(arm,size=0x10) addr:0x0207f6ac _ZN7MapBase11GetTileEndZEi kind:function(arm,size=0x10) addr:0x0207f6bc -_ZN7MapBase13GetTileBoundsEP5Vec2bP4AABB kind:function(arm,size=0xac) addr:0x0207f6cc +_ZN7MapBase13GetTileBoundsEP7TilePosP4AABB kind:function(arm,size=0xac) addr:0x0207f6cc _ZN7MapBase15GetClampedTileXEi kind:function(arm,size=0x28) addr:0x0207f778 _ZN7MapBase15GetClampedTileYEi kind:function(arm,size=0x28) addr:0x0207f7a0 _ZN7MapBase8GetTileXEi kind:function(arm,size=0x10) addr:0x0207f7c8 @@ -418,8 +418,8 @@ _ZN7MapBase10AddUnk_130Ei kind:function(arm,size=0xe8) addr:0x020808d0 _ZN7MapBase18func_ov00_020809b8Ei kind:function(arm,size=0xc0) addr:0x020809b8 _ZN7MapBase18func_ov00_02080a78EP5Vec3p kind:function(arm,size=0x58) addr:0x02080a78 _ZN12MapBase_Unk218func_ov00_02080ad0EPP11TriggerBaseS2_ kind:function(arm,size=0x54) addr:0x02080ad0 -_ZN7MapBase18func_ov00_02080b24EP5Vec2b kind:function(arm,size=0x1e4) addr:0x02080b24 -_ZN7MapBase18func_ov00_02080d08Ei kind:function(arm,size=0x6c) addr:0x02080d08 +_ZN7MapBase18func_ov00_02080b24EP7TilePos kind:function(arm,size=0x1e4) addr:0x02080b24 +_ZN7MapBase18func_ov00_02080d08EP7TilePos kind:function(arm,size=0x6c) addr:0x02080d08 _ZN7MapBase8vfunc_bcEv kind:function(arm,size=0x4) addr:0x02080d74 _ZN7MapBase8vfunc_98Eiii kind:function(arm,size=0x4) addr:0x02080d78 _ZN7MapBase8vfunc_c0Ev kind:function(arm,size=0x4) addr:0x02080d7c @@ -535,7 +535,7 @@ _ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x02082d28 _ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x02082d34 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x02082d40 _ZN10MapManager18func_ov00_02082d74Ei kind:function(arm,size=0x10) addr:0x02082d74 -_ZN10MapManager18func_ov00_02082d84EP5Vec2bPiS2_ kind:function(arm,size=0x98) addr:0x02082d84 +_ZN10MapManager18func_ov00_02082d84EP7TilePosPiS2_ kind:function(arm,size=0x98) addr:0x02082d84 _ZN10MapManager18func_ov00_02082e1cEPiS0_ kind:function(arm,size=0x250) addr:0x02082e1c _ZN10MapManager18func_ov00_0208306cEPiS0_ kind:function(arm,size=0xf0) addr:0x0208306c _ZN10MapManager18func_ov00_0208315cEPiS0_ kind:function(arm,size=0xe8) addr:0x0208315c @@ -566,7 +566,7 @@ _ZN10MapManager12GetMapCenterEP5Vec3p kind:function(arm,size=0x20) addr:0x020834 _ZN10MapManager18func_ov00_0208346cEP4AABB kind:function(arm,size=0x50) addr:0x0208346c _ZN10MapManager18func_ov00_020834bcEP5Vec3pii kind:function(arm,size=0x68) addr:0x020834bc _ZN10MapManager18func_ov00_02083524EP5Vec3pii kind:function(arm,size=0x3c) addr:0x02083524 -_ZN10MapManager18func_ov00_02083560EP5Vec2bPS_j kind:function(arm,size=0x10) addr:0x02083560 +_ZN10MapManager18func_ov00_02083560Ej kind:function(arm,size=0x10) addr:0x02083560 _ZN10MapManager18func_ov00_02083570Ehh kind:function(arm,size=0x18) addr:0x02083570 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x02083588 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x020835a4 @@ -601,37 +601,37 @@ _ZN10MapManager18func_ov00_020839b4Ei kind:function(arm,size=0x10) addr:0x020839 _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x020839c4 _ZN10MapManager18func_ov00_020839d4Ei kind:function(arm,size=0x24) addr:0x020839d4 _ZN10MapManager18func_ov00_020839f8Ei kind:function(arm,size=0x24) addr:0x020839f8 -_ZN10MapManager18func_ov00_02083a1cEP5Vec2bPS_P5Vec3p kind:function(arm,size=0x38) addr:0x02083a1c -_ZN10MapManager18func_ov00_02083a54EP5Vec2bPS_P5Vec3pii kind:function(arm,size=0x130) addr:0x02083a54 +_ZN10MapManager18func_ov00_02083a1cEP5Vec3p kind:function(arm,size=0x38) addr:0x02083a1c +_ZN10MapManager18func_ov00_02083a54EP5Vec3pii kind:function(arm,size=0x130) addr:0x02083a54 _ZN10MapManager13GetTileStartXEi kind:function(arm,size=0x28) addr:0x02083b84 _ZN10MapManager13GetTileStartZEi kind:function(arm,size=0x28) addr:0x02083bac _ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x02083bd4 _ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x02083bfc _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x02083c24 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x02083c50 -_ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x02083c7c -_ZN10MapManager18func_ov00_02083ce8EP5Vec3p5Vec2bij kind:function(arm,size=0x14c) addr:0x02083ce8 +_ZN10MapManager18func_ov00_02083c7cEP5Vec3p7TilePos kind:function(arm,size=0x6c) addr:0x02083c7c +_ZN10MapManager18func_ov00_02083ce8EP5Vec3p7TilePosij kind:function(arm,size=0x14c) addr:0x02083ce8 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x02083e34 -_ZN10MapManager16MapData_vfunc_60EP5Vec2b kind:function(arm,size=0x18) addr:0x02083e58 -_ZN10MapManager18func_ov00_02083e70EP5Vec2b kind:function(arm,size=0x70) addr:0x02083e70 +_ZN10MapManager16MapData_vfunc_60EP7TilePos kind:function(arm,size=0x18) addr:0x02083e58 +_ZN10MapManager18func_ov00_02083e70EP7TilePos kind:function(arm,size=0x70) addr:0x02083e70 _ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x02083ee0 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_b kind:function(arm,size=0x4c) addr:0x02083ef8 _ZN10MapManager18func_ov00_02083f44EP5Vec3pb kind:function(arm,size=0x3c) addr:0x02083f44 _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x02083f80 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x02083f98 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x02083fb0 -_ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x02084024 -_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x02084088 +_ZN10MapManager18GetTileWorldBoundsEP7TilePosP4AABB kind:function(arm,size=0x64) addr:0x02084024 +_ZN10MapManager16MapData_vfunc_54EP7TilePos kind:function(arm,size=0x18) addr:0x02084088 _ZN10MapManager18func_ov00_020840a0Ehh kind:function(arm,size=0x24) addr:0x020840a0 -_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x020840c4 -_ZN10MapManager18func_ov00_020840dcEP5Vec2b kind:function(arm,size=0x24) addr:0x020840dc +_ZN10MapManager16MapData_vfunc_78EP7TilePos kind:function(arm,size=0x18) addr:0x020840c4 +_ZN10MapManager18func_ov00_020840dcEP7TilePos kind:function(arm,size=0x24) addr:0x020840dc _ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x02084100 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x02084114 _ZN10MapManager17GetMapData_Unk_4cEv kind:function(arm,size=0xc) addr:0x02084120 _ZN10MapManager18func_ov00_0208412cEv kind:function(arm,size=0x10) addr:0x0208412c _ZN10MapManager18func_ov00_0208413cEi kind:function(arm,size=0x10) addr:0x0208413c -_ZN10MapManager16MapData_vfunc_58EP5Vec2bi kind:function(arm,size=0x18) addr:0x0208414c -_ZN10MapManager18func_ov00_02084164EP5Vec2b kind:function(arm,size=0x1a8) addr:0x02084164 +_ZN10MapManager16MapData_vfunc_58EP7TilePosi kind:function(arm,size=0x18) addr:0x0208414c +_ZN10MapManager18func_ov00_02084164EP7TilePos kind:function(arm,size=0x1a8) addr:0x02084164 _ZN10MapManager17GetMapData_Unk_0aEv kind:function(arm,size=0xc) addr:0x0208430c _ZN10MapManager17GetMapData_Unk_0bEv kind:function(arm,size=0xc) addr:0x02084318 _ZN10MapManager16MapData_vfunc_a4EPc kind:function(arm,size=0x18) addr:0x02084324 @@ -686,7 +686,7 @@ _ZN10MapManager18func_ov00_02085c60EP5Vec3pPiS2_j kind:function(arm,size=0x3e4) _ZN10MapManager18func_ov00_02086044EP5Vec3pS1_i kind:function(arm,size=0x240) addr:0x02086044 _ZN10MapManager18func_ov00_02086284EPiP5Vec3pS2_itS2_S2_ kind:function(arm,size=0x800) addr:0x02086284 _ZN10MapManager18func_ov00_02086a84EPiP5Vec3pS2_iiiS2_S2_ kind:function(arm,size=0x24c) addr:0x02086a84 -func_ov000_02086cd0 kind:function(arm,size=0x4) addr:0x02086cd0 +_ZN15MapManager_Unk1D1Ev kind:function(arm,size=0x4) addr:0x02086cd0 func_ov000_02086cd4 kind:function(arm,size=0xd4) addr:0x02086cd4 func_ov000_02086da8 kind:function(arm,size=0xd8) addr:0x02086da8 func_ov000_02086e80 kind:function(arm,size=0x20) addr:0x02086e80 @@ -2184,7 +2184,7 @@ _ZN13PlayerControl18func_ov00_020aeef8Ev kind:function(arm,size=0x38) addr:0x020 _ZN13PlayerControl18func_ov00_020aef30Ev kind:function(thumb,size=0x38) addr:0x020aef30 _ZN13PlayerControl9UpdateAimEv kind:function(thumb,size=0x94) addr:0x020aef68 _ZN13PlayerControl14GetFollowActorEv kind:function(arm,size=0x20) addr:0x020aeffc -_ZN13PlayerControl18func_ov00_020af01cEP5Vec2b kind:function(arm,size=0x28) addr:0x020af01c +_ZN13PlayerControl18func_ov00_020af01cEP7TilePos kind:function(arm,size=0x28) addr:0x020af01c _ZN13PlayerControl9SetUnk_80Ev kind:function(arm,size=0xc) addr:0x020af044 _ZN13PlayerControl13StopFollowingEv kind:function(arm,size=0x1c) addr:0x020af050 _ZN13PlayerControl18func_ov00_020af06cEv kind:function(arm,size=0x22c) addr:0x020af06c @@ -2833,19 +2833,19 @@ _ZN5Actor8vfunc_b0Ev kind:function(arm,size=0x4) addr:0x020c322c _ZN5Actor10GetLinkPosEP5Vec3p kind:function(arm,size=0x60) addr:0x020c3230 _ZN5Actor15GetLinkDummyPosEP5Vec3p kind:function(arm,size=0x98) addr:0x020c3290 _ZN19Actor_UnkStruct_09cC2Ev kind:function(arm,size=0x20) addr:0x020c3328 -_Z19func_ov000_020c3348P17ActorSpawnOptions kind:function(arm,size=0x24) addr:0x020c3348 +_ZN17ActorSpawnOptions19func_ov000_020c3348Ev kind:function(arm,size=0x24) addr:0x020c3348 func_ov000_020c336c kind:function(thumb,size=0x1a) addr:0x020c336c func_ov000_020c3388 kind:function(thumb,size=0x28) addr:0x020c3388 func_ov000_020c33b0 kind:function(thumb,size=0x24) addr:0x020c33b0 _ZN12ActorManager11DeleteActorEjb kind:function(arm,size=0xb0) addr:0x020c33d4 -_ZN12ActorManager18func_ov00_020c3484EP8ActorRefPS_i kind:function(arm,size=0xf8) addr:0x020c3484 +_ZN12ActorManager18func_ov00_020c3484Ei kind:function(arm,size=0xf8) addr:0x020c3484 _ZN12ActorManager14Actor_vfunc_10Ej kind:function(arm,size=0x5c) addr:0x020c357c _ZN12ActorManager13FindActorByIdEi kind:function(arm,size=0x9c) addr:0x020c35d8 _ZN12ActorManager8GetActorEP8ActorRef kind:function(arm,size=0x40) addr:0x020c3674 _ZN11FilterActor6FilterEP5Actor kind:function(arm,size=0x138) addr:0x020c36b4 _ZN12ActorManager12FilterActorsEP15FilterActorBaseP9ActorList kind:function(arm,size=0xa8) addr:0x020c37ec -_ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j kind:function(arm,size=0x68) addr:0x020c3894 -_ZN12ActorManager22FindNearestActorOfTypeEP8ActorRefPS_jP5Vec3p kind:function(arm,size=0x90) addr:0x020c38fc +_ZN12ActorManager15FindActorByTypeEj kind:function(arm,size=0x68) addr:0x020c3894 +_ZN12ActorManager22FindNearestActorOfTypeEjP5Vec3p kind:function(arm,size=0x90) addr:0x020c38fc _ZN12ActorManager18func_ov00_020c398cEj kind:function(arm,size=0x10) addr:0x020c398c _ZN12ActorManager18func_ov00_020c399cEjP8Cylinder kind:function(arm,size=0x10) addr:0x020c399c _ZN12ActorManager18func_ov00_020c39acEiPKjb kind:function(arm,size=0x180) addr:0x020c39ac @@ -3610,11 +3610,11 @@ func_ov000_020d7524 kind:function(arm,size=0x68) addr:0x020d7524 func_ov000_020d758c kind:function(arm,size=0x3c) addr:0x020d758c func_ov000_020d75c8 kind:function(arm,size=0x14) addr:0x020d75c8 func_ov000_020d75dc kind:function(arm,size=0x208) addr:0x020d75dc -func_ov000_020d77e4 kind:function(arm,size=0x9c) addr:0x020d77e4 +_ZN18UnkStruct_020eec9c19func_ov000_020d77e4Ei kind:function(arm,size=0x9c) addr:0x020d77e4 func_ov000_020d7880 kind:function(arm,size=0x20) addr:0x020d7880 func_ov000_020d78a0 kind:function(arm,size=0x1e4) addr:0x020d78a0 func_ov000_020d7a84 kind:function(arm,size=0x50) addr:0x020d7a84 -func_ov000_020d7ad4 kind:function(arm,size=0x4c) addr:0x020d7ad4 +_ZN18UnkStruct_020eec9c19func_ov000_020d7ad4Ei kind:function(arm,size=0x4c) addr:0x020d7ad4 func_ov000_020d7b20 kind:function(arm,size=0x40) addr:0x020d7b20 func_ov000_020d7b60 kind:function(arm,size=0x20) addr:0x020d7b60 func_ov000_020d7b80 kind:function(arm,size=0xec) addr:0x020d7b80 @@ -3940,7 +3940,7 @@ __sinit_ov000_020df4a4 kind:function(arm,size=0x14) addr:0x020df4a4 __sinit_ov000_020df4b8 kind:function(arm,size=0x14) addr:0x020df4b8 __sinit_ov000_020df4cc kind:function(arm,size=0x174) addr:0x020df4cc __sinit_ov000_020df640 kind:function(arm,size=0x38) addr:0x020df640 -__sinit_ActorSwitchObject.cpp kind:function(arm,size=0x40) addr:0x020df678 +__sinit_ActorSwitchObject.cpp kind:function(arm,size=0x40) addr:0x020df678 local __sinit_ov000_020df6b8 kind:function(arm,size=0x40) addr:0x020df6b8 __sinit_ActorEventIcon.cpp kind:function(arm,size=0x40) addr:0x020df6f8 local __sinit_ov000_020df738 kind:function(arm,size=0x38) addr:0x020df738 @@ -3996,7 +3996,7 @@ __sinit_ov000_020e1e74 kind:function(arm,size=0x14) addr:0x020e1e74 .p__sinit_ov000_020df4b8 kind:data(word) addr:0x020e1eb8 .p__sinit_ov000_020df4cc kind:data(word) addr:0x020e1ebc .p__sinit_ov000_020df640 kind:data(word) addr:0x020e1ec0 -.p__sinit_ov000_020df678 kind:data(word) addr:0x020e1ec4 +.p__sinit_ActorSwitchObject.cpp kind:data(word) addr:0x020e1ec4 local .p__sinit_ov000_020df6b8 kind:data(word) addr:0x020e1ec8 .p__sinit_ActorEventIcon.cpp kind:data(word) addr:0x020e1ecc local .p__sinit_ov000_020df738 kind:data(word) addr:0x020e1ed0 @@ -4096,7 +4096,7 @@ data_ov000_020e2494 kind:data(any) addr:0x020e2494 data_ov000_020e2498 kind:data(any) addr:0x020e2498 data_ov000_020e249c kind:data(any) addr:0x020e249c data_ov000_020e24a0 kind:data(any) addr:0x020e24a0 -data_ov000_020e24a4 kind:data(any) addr:0x020e24a4 +sShipParts kind:data(any) addr:0x020e24a4 local data_ov000_020e24c4 kind:data(any) addr:0x020e24c4 data_ov000_020e24c8 kind:data(any) addr:0x020e24c8 data_ov000_020e24cc kind:data(any) addr:0x020e24cc @@ -5129,7 +5129,7 @@ data_ov000_020e71b4 kind:data(any) addr:0x020e71b4 data_ov000_020e71b8 kind:data(any) addr:0x020e71b8 data_ov000_020e71bc kind:data(any) addr:0x020e71bc sShipTypes kind:data(any) addr:0x020e71c0 -_ZTV17KillPickupsFilter kind:data(any) addr:0x020e71e8 +_ZTV17KillPickupsFilter kind:data(any) addr:0x020e71e0 _ZTV5Actor kind:data(any) addr:0x020e71f4 @1038 kind:data(any) addr:0x020e72a8 local @1037 kind:data(any) addr:0x020e72ac local @@ -5891,21 +5891,21 @@ data_ov000_020ec864 kind:bss addr:0x020ec864 data_ov000_020ec8a4 kind:bss addr:0x020ec8a4 data_ov000_020ec8e4 kind:bss addr:0x020ec8e4 data_ov000_020ec924 kind:bss addr:0x020ec924 -data_ov000_020ec964 kind:bss addr:0x020ec964 -data_ov000_020ec970 kind:bss addr:0x020ec970 -data_ov000_020ec97c kind:bss addr:0x020ec97c -data_ov000_020ec988 kind:bss addr:0x020ec988 -data_ov000_020ec994 kind:bss addr:0x020ec994 -data_ov000_020ec9a0 kind:bss addr:0x020ec9a0 -data_ov000_020ec9ac kind:bss addr:0x020ec9ac -data_ov000_020ec9b8 kind:bss addr:0x020ec9b8 +@2243 kind:bss addr:0x020ec964 local +@2246 kind:bss addr:0x020ec970 local +@2249 kind:bss addr:0x020ec97c local +@2252 kind:bss addr:0x020ec988 local +@2254 kind:bss addr:0x020ec994 local +@2257 kind:bss addr:0x020ec9a0 local +@2260 kind:bss addr:0x020ec9ac local +@2263 kind:bss addr:0x020ec9b8 local data_ov000_020ec9c8 kind:bss addr:0x020ec9c8 data_ov000_020ec9d4 kind:bss addr:0x020ec9d4 data_ov000_020ec9d6 kind:bss addr:0x020ec9d6 data_ov000_020ec9d8 kind:bss addr:0x020ec9d8 data_ov000_020ecd50 kind:bss addr:0x020ecd50 data_ov000_020ecd58 kind:bss addr:0x020ecd58 -data_ov000_020ecd64 kind:bss addr:0x020ecd64 +@1240 kind:bss addr:0x020ecd64 local _ZN17ActorSwitchObject5gTypeE kind:bss addr:0x020ecd70 data_ov000_020ecd84 kind:bss addr:0x020ecd84 data_ov000_020ecd90 kind:bss addr:0x020ecd90 diff --git a/config/usa/arm9/overlays/ov000/delinks.txt b/config/usa/arm9/overlays/ov000/delinks.txt index d9ec0117..3e020e05 100644 --- a/config/usa/arm9/overlays/ov000/delinks.txt +++ b/config/usa/arm9/overlays/ov000/delinks.txt @@ -21,6 +21,7 @@ src/00_Core/Actor/ActorSpawner.cpp: .text start:0x020c3f3c end:0x020c4278 src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp: + complete .text start:0x0208fa10 end:0x02090348 .init start:0x020df618 end:0x020df658 .ctor start:0x020e1e64 end:0x020e1e68 @@ -95,7 +96,7 @@ src/00_Core/Map/MapManager.cpp: .rodata start:0x020d8890 end:0x020d8a48 .init start:0x020df46c end:0x020df5e0 .ctor start:0x020e1e5c end:0x020e1e60 - .data start:0x020e2464 end:0x020e24dc + .data start:0x020e2424 end:0x020e24dc .sbss start:0x020ec904 end:0x020ec974 src/00_Core/Player/LinkStateBase.cpp: diff --git a/config/usa/arm9/overlays/ov000/relocs.txt b/config/usa/arm9/overlays/ov000/relocs.txt index bd652198..c771e6c0 100644 --- a/config/usa/arm9/overlays/ov000/relocs.txt +++ b/config/usa/arm9/overlays/ov000/relocs.txt @@ -7513,7 +7513,7 @@ from:0x020c19cc kind:load to:0x027e0fc8 module:dtcm from:0x020c1a84 kind:arm_call to:0x020c3120 module:overlay(0) from:0x020c1af8 kind:arm_call to:0x020c378c module:overlay(0) from:0x020c1b04 kind:load to:0x027e0fe4 module:dtcm -from:0x020c1b08 kind:load to:0x020e7188 module:overlay(0) +from:0x020c1b08 kind:load to:0x020e7180 add:8 module:overlay(0) from:0x020c1bb8 kind:load to:0x027e0e60 module:dtcm from:0x020c1bbc kind:load to:0x02084b80 module:overlay(0) from:0x020c1bdc kind:arm_call to:0x02084ad8 module:overlay(0) @@ -11057,20 +11057,20 @@ from:0x020df594 kind:load to:0x020e2444 module:overlay(0) from:0x020df598 kind:load to:0x020e2468 module:overlay(0) from:0x020df59c kind:load to:0x02086c70 module:overlay(0) from:0x020df5a0 kind:load to:0x020ec904 module:overlay(0) -from:0x020df5a4 kind:load to:0x020e2470 module:overlay(0) +from:0x020df5a4 kind:load to:0x020e2468 add:0x8 module:overlay(0) from:0x020df5a8 kind:load to:0x020ec910 module:overlay(0) -from:0x020df5ac kind:load to:0x020e2478 module:overlay(0) +from:0x020df5ac kind:load to:0x020e2468 add:0x10 module:overlay(0) from:0x020df5b0 kind:load to:0x020ec91c module:overlay(0) -from:0x020df5b4 kind:load to:0x020e2480 module:overlay(0) +from:0x020df5b4 kind:load to:0x020e2468 add:0x18 module:overlay(0) from:0x020df5b8 kind:load to:0x020ec928 module:overlay(0) from:0x020df5bc kind:load to:0x020e2488 module:overlay(0) from:0x020df5c0 kind:load to:0x0207dd3c module:overlay(0) from:0x020df5c4 kind:load to:0x020ec934 module:overlay(0) -from:0x020df5c8 kind:load to:0x020e2490 module:overlay(0) +from:0x020df5c8 kind:load to:0x020e2488 add:0x8 module:overlay(0) from:0x020df5cc kind:load to:0x020ec940 module:overlay(0) -from:0x020df5d0 kind:load to:0x020e2498 module:overlay(0) +from:0x020df5d0 kind:load to:0x020e2488 add:0x10 module:overlay(0) from:0x020df5d4 kind:load to:0x020ec94c module:overlay(0) -from:0x020df5d8 kind:load to:0x020e24a0 module:overlay(0) +from:0x020df5d8 kind:load to:0x020e2488 add:0x18 module:overlay(0) from:0x020df5dc kind:load to:0x020ec958 module:overlay(0) from:0x020df5f0 kind:arm_call to:0x0203eb64 module:main from:0x020df600 kind:arm_call to:0x0204f890 module:main diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 77d5568b..066e5b8d 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -82,7 +82,7 @@ func_ov000_02078b0c kind:function(thumb,size=0x34) addr:0x02078aac _ZN18UnkStruct_027e0d3819func_ov000_02078b40Ev kind:function(arm,size=0x24) addr:0x02078ae0 _ZN18UnkStruct_027e0d3819func_ov000_02078b64Ev kind:function(arm,size=0x24) addr:0x02078b04 _ZN18UnkStruct_027e0d3819func_ov000_02078b88Ev kind:function(arm,size=0x3c) addr:0x02078b28 -func_ov000_02078bc4 kind:function(thumb,size=0x2c) addr:0x02078b64 +_Z19func_ov000_02078bc4i kind:function(thumb,size=0x2c) addr:0x02078b64 _ZN9FlagsUnk219func_ov000_02078bf0EPS_ kind:function(thumb,size=0x11c) addr:0x02078b90 func_ov000_02078d0c kind:function(thumb,size=0x24) addr:0x02078cac func_ov000_02078d30 kind:function(thumb,size=0x24) addr:0x02078cd0 @@ -95,7 +95,7 @@ func_ov000_02078f80 kind:function(arm,size=0x2c) addr:0x02078f20 func_ov000_02078fac kind:function(arm,size=0x14) addr:0x02078f4c func_ov000_02078fc0 kind:function(arm,size=0x14) addr:0x02078f60 func_ov000_02078fd4 kind:function(arm,size=0x14) addr:0x02078f74 -func_ov000_02078fe8 kind:function(arm,size=0x14) addr:0x02078f88 +_Z19func_ov000_02078fe8Pi kind:function(arm,size=0x14) addr:0x02078f88 func_ov000_02078ffc kind:function(arm,size=0xc) addr:0x02078f9c func_ov000_02079008 kind:function(arm,size=0x1c) addr:0x02078fa8 func_ov000_02079024 kind:function(arm,size=0x128) addr:0x02078fc4 @@ -109,8 +109,8 @@ func_ov000_02079470 kind:function(arm,size=0x210) addr:0x02079410 func_ov000_02079680 kind:function(arm,size=0xfc) addr:0x02079620 func_ov000_0207977c kind:function(arm,size=0xfc) addr:0x0207971c func_ov000_02079878 kind:function(arm,size=0x20) addr:0x02079818 -func_ov000_02079898 kind:function(arm,size=0x24) addr:0x02079838 -func_ov000_020798bc kind:function(arm,size=0x2c) addr:0x0207985c +_Z19func_ov000_02079898Piii kind:function(arm,size=0x24) addr:0x02079838 +_Z19func_ov000_020798bcPii kind:function(arm,size=0x2c) addr:0x0207985c func_ov000_020798e8 kind:function(arm,size=0x40) addr:0x02079888 func_ov000_02079928 kind:function(arm,size=0x124) addr:0x020798c8 func_ov000_02079a4c kind:function(arm,size=0x44) addr:0x020799ec @@ -274,7 +274,7 @@ _ZN6Course13SetCourseNameEPc kind:function(arm,size=0x10) addr:0x0207ca08 _ZN6Course18func_ov00_0207ca78Eici kind:function(arm,size=0x30) addr:0x0207ca18 _ZN6Course18func_ov00_0207caa8EiPiPc kind:function(arm,size=0x88) addr:0x0207ca48 _ZN6Course18func_ov00_0207cb30Ei kind:function(arm,size=0x4c) addr:0x0207cad0 -_ZN6Course14FindMapGridPosEP5Vec2bPS_j kind:function(arm,size=0x5c) addr:0x0207cb1c +_ZN6Course14FindMapGridPosEj kind:function(arm,size=0x5c) addr:0x0207cb1c _ZN6Course13FindMapCenterEi kind:function(arm,size=0x10) addr:0x0207cb78 _ZN6Course18func_ov00_0207cbe8Ei kind:function(arm,size=0x3c) addr:0x0207cb88 _ZN6Course18func_ov00_0207cc24Ei kind:function(arm,size=0x48) addr:0x0207cbc4 @@ -283,7 +283,7 @@ _ZN6Course14GetMCSFilePathEiii kind:function(arm,size=0xf0) addr:0x0207cc24 _ZN6Course14GetMRCFilePathEiii kind:function(arm,size=0xac) addr:0x0207cd14 _ZN6Course18func_ov00_0207ce20EiiPci kind:function(arm,size=0x2c) addr:0x0207cdc0 _ZN6Course18func_ov00_0207ce4cEiiiPci kind:function(arm,size=0x5b8) addr:0x0207cdec -_ZN6Course18func_ov00_0207d404Eiii kind:function(arm,size=0x78) addr:0x0207d3a4 +_ZN6Course18func_ov00_0207d404Eiiii kind:function(arm,size=0x78) addr:0x0207d3a4 _ZN6Course22IsCurrentMapInMainGridEv kind:function(arm,size=0x14) addr:0x0207d41c _ZN6Course12IsInMainGridEii kind:function(arm,size=0x54) addr:0x0207d430 _ZN6Course15IsMapInMainGridEj kind:function(arm,size=0x34) addr:0x0207d484 @@ -313,7 +313,7 @@ _ZN6Course15SetMapDataFlag2Eib kind:function(arm,size=0x20) addr:0x0207d8c4 _ZN6Course15GetMapDataFlag2Ei kind:function(arm,size=0x18) addr:0x0207d8e4 _ZN6Course15SetMapDataFlag3Eib kind:function(arm,size=0x20) addr:0x0207d8fc _ZN6Course15GetMapDataFlag3Ei kind:function(arm,size=0x18) addr:0x0207d91c -_ZN6Course15SetMapDataFlag4Eii kind:function(arm,size=0x20) addr:0x0207d934 +_ZN6Course15SetMapDataFlag4Eib kind:function(arm,size=0x20) addr:0x0207d934 _ZN6Course15GetMapDataFlag4Ei kind:function(arm,size=0x18) addr:0x0207d954 _ZN6Course11FindMapDataEj kind:function(arm,size=0x48) addr:0x0207d96c _ZN6Course18FindCurrentMapDataEv kind:function(arm,size=0x24) addr:0x0207d9b4 @@ -330,18 +330,18 @@ _ZN7MapBase18func_ov00_0207de68Ei kind:function(arm,size=0x20) addr:0x0207de08 _ZN7MapBase18func_ov00_0207de88Ev kind:function(arm,size=0x18) addr:0x0207de28 _ZN7MapBase18func_ov00_0207dea0Eb kind:function(arm,size=0x1c0) addr:0x0207de40 _ZN7MapBase8vfunc_b0Eii kind:function(arm,size=0x2c) addr:0x0207e000 -_ZN7MapBase18func_ov00_0207e08cEii kind:function(arm,size=0x64) addr:0x0207e02c +_ZN7MapBase18func_ov00_0207e08cEPii kind:function(arm,size=0x64) addr:0x0207e02c _ZN7MapBase18func_ov00_0207e0f0Ei kind:function(arm,size=0x19c) addr:0x0207e090 _ZN7MapBase18func_ov00_0207e28cEi kind:function(arm,size=0x1b8) addr:0x0207e22c _ZN7MapBase8vfunc_b4Ev kind:function(arm,size=0x28) addr:0x0207e3e4 _ZN7MapBase8vfunc_48Ev kind:function(arm,size=0x1c) addr:0x0207e40c _ZN7MapBase8vfunc_50Ev kind:function(arm,size=0x8) addr:0x0207e428 -_ZN7MapBase8vfunc_54Ev kind:function(arm,size=0x8) addr:0x0207e430 -_ZN7MapBase8vfunc_58Ev kind:function(arm,size=0x8) addr:0x0207e438 +_ZN7MapBase8vfunc_54EP7TilePos kind:function(arm,size=0x8) addr:0x0207e430 +_ZN7MapBase8vfunc_58EP7TilePosi kind:function(arm,size=0x8) addr:0x0207e438 _ZN7MapBase8vfunc_5cEv kind:function(arm,size=0x8) addr:0x0207e440 -_ZN7MapBase8vfunc_60Ev kind:function(arm,size=0x8) addr:0x0207e448 +_ZN7MapBase8vfunc_60EP7TilePos kind:function(arm,size=0x8) addr:0x0207e448 _ZN7MapBase8vfunc_64Ev kind:function(arm,size=0x8) addr:0x0207e450 -_ZN7MapBase8vfunc_68Eii kind:function(arm,size=0x488) addr:0x0207e458 +_ZN7MapBase8vfunc_68EP5Vec3pb kind:function(arm,size=0x488) addr:0x0207e458 _ZN7MapBase18func_ov00_0207e940EPc kind:function(arm,size=0x28) addr:0x0207e8e0 _ZN7MapBase18func_ov00_0207e968Ev kind:function(arm,size=0x4) addr:0x0207e908 _ZN7MapBase18func_ov00_0207e96cEv kind:function(arm,size=0x4) addr:0x0207e90c @@ -355,25 +355,25 @@ _ZN7MapBase8vfunc_88Ev kind:function(arm,size=0x8) addr:0x0207f2c4 _ZN7MapBase8vfunc_8cEv kind:function(arm,size=0x8) addr:0x0207f2cc _ZN7MapBase8vfunc_9cEv kind:function(arm,size=0x4) addr:0x0207f2d4 _ZN7MapBase8vfunc_a0Ev kind:function(arm,size=0x4) addr:0x0207f2d8 -_ZN7MapBase8vfunc_a4Ev kind:function(arm,size=0x8) addr:0x0207f2dc +_ZN7MapBase8vfunc_a4EPc kind:function(arm,size=0x8) addr:0x0207f2dc _ZN7MapBase8vfunc_a8Ev kind:function(arm,size=0x4) addr:0x0207f2e4 _ZN7MapBase8vfunc_acEv kind:function(arm,size=0x4) addr:0x0207f2e8 -_ZN7MapBase8vfunc_78Ev kind:function(arm,size=0x8) addr:0x0207f2ec -_ZN7MapBase8vfunc_7cEv kind:function(arm,size=0x8) addr:0x0207f2f4 +_ZN7MapBase8vfunc_78EP7TilePos kind:function(arm,size=0x8) addr:0x0207f2ec +_ZN7MapBase8vfunc_7cEiPiiPs kind:function(arm,size=0x8) addr:0x0207f2f4 _ZN7MapBase8vfunc_80Ev kind:function(arm,size=0x8) addr:0x0207f2fc _ZN7MapBase8vfunc_84Ei kind:function(arm,size=0x28) addr:0x0207f304 -_ZN7MapBase18func_ov00_0207f38cEi kind:function(arm,size=0x38) addr:0x0207f32c -_ZN7MapBase8vfunc_90EP5Vec2bi kind:function(arm,size=0xdc) addr:0x0207f364 +_ZN7MapBase18func_ov00_0207f38cEPi kind:function(arm,size=0x38) addr:0x0207f32c +_ZN7MapBase8vfunc_90EP7TilePosi kind:function(arm,size=0xdc) addr:0x0207f364 _ZN7MapBase8vfunc_94Ev kind:function(arm,size=0x4) addr:0x0207f440 _ZN7MapBase18func_ov00_0207f4a4EP5Vec2si kind:function(arm,size=0x98) addr:0x0207f444 _ZN7MapBase18func_ov00_0207f53cEP5Vec2sPS_P5Vec3p kind:function(arm,size=0x4c) addr:0x0207f4dc -_ZN7MapBase18func_ov00_0207f588EP5Vec2sPS_P5Vec2bi kind:function(arm,size=0xa8) addr:0x0207f528 +_ZN7MapBase18func_ov00_0207f588EP5Vec2sPS_P7TilePosi kind:function(arm,size=0xa8) addr:0x0207f528 _ZN7MapBase18func_ov00_0207f630EP5Vec2sP5Vec3p kind:function(arm,size=0x64) addr:0x0207f5d0 _ZN7MapBase13GetTileStartXEi kind:function(arm,size=0xc) addr:0x0207f634 _ZN7MapBase13GetTileStartZEi kind:function(arm,size=0xc) addr:0x0207f640 _ZN7MapBase11GetTileEndXEi kind:function(arm,size=0x10) addr:0x0207f64c _ZN7MapBase11GetTileEndZEi kind:function(arm,size=0x10) addr:0x0207f65c -_ZN7MapBase13GetTileBoundsEP5Vec2bP4AABB kind:function(arm,size=0xac) addr:0x0207f66c +_ZN7MapBase13GetTileBoundsEP7TilePosP4AABB kind:function(arm,size=0xac) addr:0x0207f66c _ZN7MapBase15GetClampedTileXEi kind:function(arm,size=0x28) addr:0x0207f718 _ZN7MapBase15GetClampedTileYEi kind:function(arm,size=0x28) addr:0x0207f740 _ZN7MapBase8GetTileXEi kind:function(arm,size=0x10) addr:0x0207f768 @@ -406,22 +406,22 @@ _ZN7MapBase18func_ov00_0208008cEj kind:function(arm,size=0x10) addr:0x0208002c _ZN7MapBase7AddExitEP4Exit kind:function(arm,size=0xa4) addr:0x0208003c _ZN7MapBase18func_ov00_02080140EP4Exit kind:function(arm,size=0x1e4) addr:0x020800e0 _ZN12MapBase_Unk118func_ov00_02080324Eiii kind:function(arm,size=0x78) addr:0x020802c4 -_ZN7MapBase8FindExitEiP4Exit kind:function(arm,size=0xd0) addr:0x0208033c +_ZN7MapBase8FindExitEjP4Exit kind:function(arm,size=0xd0) addr:0x0208033c _ZN7MapBase18AddCameraViewpointEP15CameraViewpoint kind:function(arm,size=0xa4) addr:0x0208040c _ZN7MapBase19FindViewpoint_Unk_4EcP15CameraViewpoint kind:function(arm,size=0xc0) addr:0x020804b0 _ZN7MapBase19FindViewpoint_Unk_0EiP15CameraViewpoint kind:function(arm,size=0xb8) addr:0x02080570 _ZN7MapBase19GetCurrentViewpointEP15CameraViewpointi kind:function(arm,size=0xf8) addr:0x02080628 _ZN7MapBase26GetCurrentViewpoint_Unk_00Ei kind:function(arm,size=0x54) addr:0x02080720 _ZN7MapBase8vfunc_b8Ev kind:function(arm,size=0x50) addr:0x02080774 -_ZN7MapBase18func_ov00_02080824Eii kind:function(arm,size=0xac) addr:0x020807c4 +_ZN7MapBase18func_ov00_02080824EjPc kind:function(arm,size=0xac) addr:0x020807c4 _ZN7MapBase10AddUnk_130Ei kind:function(arm,size=0xe8) addr:0x02080870 _ZN7MapBase18func_ov00_020809b8Ei kind:function(arm,size=0xc0) addr:0x02080958 _ZN7MapBase18func_ov00_02080a78EP5Vec3p kind:function(arm,size=0x58) addr:0x02080a18 _ZN12MapBase_Unk218func_ov00_02080ad0EPP11TriggerBaseS2_ kind:function(arm,size=0x54) addr:0x02080a70 -_ZN7MapBase18func_ov00_02080b24EP5Vec2b kind:function(arm,size=0x1e4) addr:0x02080ac4 -_ZN7MapBase18func_ov00_02080d08Ei kind:function(arm,size=0x6c) addr:0x02080ca8 +_ZN7MapBase18func_ov00_02080b24EP7TilePos kind:function(arm,size=0x1e4) addr:0x02080ac4 +_ZN7MapBase18func_ov00_02080d08EP7TilePos kind:function(arm,size=0x6c) addr:0x02080ca8 _ZN7MapBase8vfunc_bcEv kind:function(arm,size=0x4) addr:0x02080d14 -_ZN7MapBase8vfunc_98Ev kind:function(arm,size=0x4) addr:0x02080d18 +_ZN7MapBase8vfunc_98Eiii kind:function(arm,size=0x4) addr:0x02080d18 _ZN7MapBase8vfunc_c0Ev kind:function(arm,size=0x4) addr:0x02080d1c _ZN7MapBase22TriggerOfType_vfunc_10Ei kind:function(arm,size=0x5c) addr:0x02080d20 _ZN11TriggerBase8vfunc_10Ev kind:function(arm,size=0x8) addr:0x02080d7c @@ -535,7 +535,7 @@ _ZN10MapManager17GetCurrentMapPosXEv kind:function(arm,size=0xc) addr:0x02082cc8 _ZN10MapManager17GetCurrentMapPosYEv kind:function(arm,size=0xc) addr:0x02082cd4 _ZN10MapManager18func_ov00_02082d40Ev kind:function(arm,size=0x34) addr:0x02082ce0 _ZN10MapManager18func_ov00_02082d74Ei kind:function(arm,size=0x10) addr:0x02082d14 -_ZN10MapManager18func_ov00_02082d84EP5Vec2bPiS2_ kind:function(arm,size=0x98) addr:0x02082d24 +_ZN10MapManager18func_ov00_02082d84EP7TilePosPiS2_ kind:function(arm,size=0x98) addr:0x02082d24 _ZN10MapManager18func_ov00_02082e1cEPiS0_ kind:function(arm,size=0x250) addr:0x02082dbc _ZN10MapManager18func_ov00_0208306cEPiS0_ kind:function(arm,size=0xf0) addr:0x0208300c _ZN10MapManager18func_ov00_0208315cEPiS0_ kind:function(arm,size=0xe8) addr:0x020830fc @@ -566,7 +566,7 @@ _ZN10MapManager12GetMapCenterEP5Vec3p kind:function(arm,size=0x20) addr:0x020833 _ZN10MapManager18func_ov00_0208346cEP4AABB kind:function(arm,size=0x50) addr:0x0208340c _ZN10MapManager18func_ov00_020834bcEP5Vec3pii kind:function(arm,size=0x68) addr:0x0208345c _ZN10MapManager18func_ov00_02083524EP5Vec3pii kind:function(arm,size=0x3c) addr:0x020834c4 -_ZN10MapManager18func_ov00_02083560EP5Vec2bPS_j kind:function(arm,size=0x10) addr:0x02083500 +_ZN10MapManager18func_ov00_02083560Ej kind:function(arm,size=0x10) addr:0x02083500 _ZN10MapManager18func_ov00_02083570Ehh kind:function(arm,size=0x18) addr:0x02083510 _ZN10MapManager18func_ov00_02083588Ev kind:function(arm,size=0x1c) addr:0x02083528 _ZN10MapManager18func_ov00_020835a4Ev kind:function(arm,size=0x10) addr:0x02083544 @@ -601,37 +601,37 @@ _ZN10MapManager18func_ov00_020839b4Ei kind:function(arm,size=0x10) addr:0x020839 _ZN10MapManager18func_ov00_020839c4Ei kind:function(arm,size=0x10) addr:0x02083964 _ZN10MapManager18func_ov00_020839d4Ei kind:function(arm,size=0x24) addr:0x02083974 _ZN10MapManager18func_ov00_020839f8Ei kind:function(arm,size=0x24) addr:0x02083998 -_ZN10MapManager18func_ov00_02083a1cEP5Vec2bPS_P5Vec3p kind:function(arm,size=0x38) addr:0x020839bc -_ZN10MapManager18func_ov00_02083a54EP5Vec2bPS_P5Vec3pii kind:function(arm,size=0x130) addr:0x020839f4 +_ZN10MapManager18func_ov00_02083a1cEP5Vec3p kind:function(arm,size=0x38) addr:0x020839bc +_ZN10MapManager18func_ov00_02083a54EP5Vec3pii kind:function(arm,size=0x130) addr:0x020839f4 _ZN10MapManager13GetTileStartXEi kind:function(arm,size=0x28) addr:0x02083b24 _ZN10MapManager13GetTileStartZEi kind:function(arm,size=0x28) addr:0x02083b4c _ZN10MapManager11GetTileEndXEi kind:function(arm,size=0x28) addr:0x02083b74 _ZN10MapManager11GetTileEndZEi kind:function(arm,size=0x28) addr:0x02083b9c _ZN10MapManager18func_ov00_02083c24Ei kind:function(arm,size=0x2c) addr:0x02083bc4 _ZN10MapManager18func_ov00_02083c50Ei kind:function(arm,size=0x2c) addr:0x02083bf0 -_ZN10MapManager18func_ov00_02083c7cEP5Vec3p5Vec2b kind:function(arm,size=0x6c) addr:0x02083c1c -_ZN10MapManager18func_ov00_02083ce8EP5Vec3p5Vec2bij kind:function(arm,size=0x14c) addr:0x02083c88 +_ZN10MapManager18func_ov00_02083c7cEP5Vec3p7TilePos kind:function(arm,size=0x6c) addr:0x02083c1c +_ZN10MapManager18func_ov00_02083ce8EP5Vec3p7TilePosij kind:function(arm,size=0x14c) addr:0x02083c88 _ZN10MapManager18func_ov00_02083e34Ecci kind:function(arm,size=0x24) addr:0x02083dd4 -_ZN10MapManager16MapData_vfunc_60EP5Vec2b kind:function(arm,size=0x18) addr:0x02083df8 -_ZN10MapManager18func_ov00_02083e70EP5Vec2b kind:function(arm,size=0x70) addr:0x02083e10 +_ZN10MapManager16MapData_vfunc_60EP7TilePos kind:function(arm,size=0x18) addr:0x02083df8 +_ZN10MapManager18func_ov00_02083e70EP7TilePos kind:function(arm,size=0x70) addr:0x02083e10 _ZN10MapManager16MapData_vfunc_68EP5Vec3pb kind:function(arm,size=0x18) addr:0x02083e80 _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_b kind:function(arm,size=0x4c) addr:0x02083e98 _ZN10MapManager18func_ov00_02083f44EP5Vec3pb kind:function(arm,size=0x3c) addr:0x02083ee4 _ZN10MapManager16MapData_vfunc_6cEiii kind:function(arm,size=0x18) addr:0x02083f20 _ZN10MapManager16MapData_vfunc_70EP5Vec3p kind:function(arm,size=0x18) addr:0x02083f38 _ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x02083f50 -_ZN10MapManager18GetTileWorldBoundsEP5Vec2bP4AABB kind:function(arm,size=0x64) addr:0x02083fc4 -_ZN10MapManager16MapData_vfunc_54EP5Vec2b kind:function(arm,size=0x18) addr:0x02084028 +_ZN10MapManager18GetTileWorldBoundsEP7TilePosP4AABB kind:function(arm,size=0x64) addr:0x02083fc4 +_ZN10MapManager16MapData_vfunc_54EP7TilePos kind:function(arm,size=0x18) addr:0x02084028 _ZN10MapManager18func_ov00_020840a0Ehh kind:function(arm,size=0x24) addr:0x02084040 -_ZN10MapManager16MapData_vfunc_78EP5Vec2b kind:function(arm,size=0x18) addr:0x02084064 -_ZN10MapManager18func_ov00_020840dcEP5Vec2b kind:function(arm,size=0x24) addr:0x0208407c +_ZN10MapManager16MapData_vfunc_78EP7TilePos kind:function(arm,size=0x18) addr:0x02084064 +_ZN10MapManager18func_ov00_020840dcEP7TilePos kind:function(arm,size=0x24) addr:0x0208407c _ZN10MapManager18func_ov00_02084100EPiPS_ kind:function(arm,size=0x14) addr:0x020840a0 _ZN10MapManager17GetMapData_Unk_48Ev kind:function(arm,size=0xc) addr:0x020840b4 _ZN10MapManager17GetMapData_Unk_4cEv kind:function(arm,size=0xc) addr:0x020840c0 _ZN10MapManager18func_ov00_0208412cEv kind:function(arm,size=0x10) addr:0x020840cc _ZN10MapManager18func_ov00_0208413cEi kind:function(arm,size=0x10) addr:0x020840dc -_ZN10MapManager16MapData_vfunc_58EP5Vec2bi kind:function(arm,size=0x18) addr:0x020840ec -_ZN10MapManager18func_ov00_02084164EP5Vec2b kind:function(arm,size=0x1a8) addr:0x02084104 +_ZN10MapManager16MapData_vfunc_58EP7TilePosi kind:function(arm,size=0x18) addr:0x020840ec +_ZN10MapManager18func_ov00_02084164EP7TilePos kind:function(arm,size=0x1a8) addr:0x02084104 _ZN10MapManager17GetMapData_Unk_0aEv kind:function(arm,size=0xc) addr:0x020842ac _ZN10MapManager17GetMapData_Unk_0bEv kind:function(arm,size=0xc) addr:0x020842b8 _ZN10MapManager16MapData_vfunc_a4EPc kind:function(arm,size=0x18) addr:0x020842c4 @@ -686,7 +686,7 @@ _ZN10MapManager18func_ov00_02085c60EP5Vec3pPiS2_j kind:function(arm,size=0x3e4) _ZN10MapManager18func_ov00_02086044EP5Vec3pS1_i kind:function(arm,size=0x240) addr:0x02085fe4 _ZN10MapManager18func_ov00_02086284EPiP5Vec3pS2_itS2_S2_ kind:function(arm,size=0x800) addr:0x02086224 _ZN10MapManager18func_ov00_02086a84EPiP5Vec3pS2_iiiS2_S2_ kind:function(arm,size=0x24c) addr:0x02086a24 -func_ov000_02086cd0 kind:function(arm,size=0x4) addr:0x02086c70 +_ZN15MapManager_Unk1D1Ev kind:function(arm,size=0x4) addr:0x02086c70 func_ov000_02086cd4 kind:function(arm,size=0xd4) addr:0x02086c74 func_ov000_02086da8 kind:function(arm,size=0xd8) addr:0x02086d48 func_ov000_02086e80 kind:function(arm,size=0x20) addr:0x02086e20 @@ -1091,7 +1091,7 @@ func_ov000_0209394c kind:function(arm,size=0xc) addr:0x020938ec func_ov000_02093958 kind:function(arm,size=0x10) addr:0x020938f8 func_ov000_02093968 kind:function(arm,size=0x78) addr:0x02093908 func_ov000_020939e0 kind:function(arm,size=0x3c) addr:0x02093980 -func_ov000_02093a1c kind:function(arm,size=0x20) addr:0x020939bc +_Z19func_ov000_02093a1cPjPii kind:function(arm,size=0x20) addr:0x020939bc func_ov000_02093a3c kind:function(arm,size=0x10) addr:0x020939dc func_ov000_02093a4c kind:function(arm,size=0x10) addr:0x020939ec func_ov000_02093a5c kind:function(arm,size=0x94) addr:0x020939fc @@ -1235,8 +1235,8 @@ func_ov000_02095fe0 kind:function(arm,size=0x180) addr:0x02095f80 func_ov000_02096160 kind:function(arm,size=0x98) addr:0x02096100 func_ov000_020961f8 kind:function(arm,size=0x24) addr:0x02096198 func_ov000_0209621c kind:function(arm,size=0x108) addr:0x020961bc -func_ov000_02096324 kind:function(arm,size=0xf4) addr:0x020962c4 -func_ov000_02096418 kind:function(arm,size=0xb4) addr:0x020963b8 +_Z19func_ov000_02096324PiS_ kind:function(arm,size=0xf4) addr:0x020962c4 +_Z19func_ov000_02096418Pi kind:function(arm,size=0xb4) addr:0x020963b8 func_ov000_020964cc kind:function(arm,size=0xf4) addr:0x0209646c func_ov000_020965c0 kind:function(arm,size=0x1ec) addr:0x02096560 func_ov000_020967ac kind:function(arm,size=0x250) addr:0x0209674c @@ -2184,7 +2184,7 @@ _ZN13PlayerControl18func_ov00_020aeef8Ev kind:function(arm,size=0x38) addr:0x020 _ZN13PlayerControl18func_ov00_020aef30Ev kind:function(thumb,size=0x38) addr:0x020aeed0 _ZN13PlayerControl9UpdateAimEv kind:function(thumb,size=0x94) addr:0x020aef08 _ZN13PlayerControl14GetFollowActorEv kind:function(arm,size=0x20) addr:0x020aef9c -_ZN13PlayerControl18func_ov00_020af01cEP5Vec2b kind:function(arm,size=0x28) addr:0x020aefbc +_ZN13PlayerControl18func_ov00_020af01cEP7TilePos kind:function(arm,size=0x28) addr:0x020aefbc _ZN13PlayerControl9SetUnk_80Ev kind:function(arm,size=0xc) addr:0x020aefe4 _ZN13PlayerControl13StopFollowingEv kind:function(arm,size=0x1c) addr:0x020aeff0 _ZN13PlayerControl18func_ov00_020af06cEv kind:function(arm,size=0x22c) addr:0x020af00c @@ -2833,19 +2833,19 @@ _ZN5Actor8vfunc_b0Ev kind:function(arm,size=0x4) addr:0x020c31cc _ZN5Actor10GetLinkPosEP5Vec3p kind:function(arm,size=0x60) addr:0x020c31d0 _ZN5Actor15GetLinkDummyPosEP5Vec3p kind:function(arm,size=0x98) addr:0x020c3230 _ZN19Actor_UnkStruct_09cC2Ev kind:function(arm,size=0x20) addr:0x020c32c8 -_Z19func_ov000_020c3348P17ActorSpawnOptions kind:function(arm,size=0x24) addr:0x020c32e8 +_ZN17ActorSpawnOptions19func_ov000_020c3348Ev kind:function(arm,size=0x24) addr:0x020c32e8 func_ov000_020c336c kind:function(thumb,size=0x1a) addr:0x020c330c func_ov000_020c3388 kind:function(thumb,size=0x28) addr:0x020c3328 func_ov000_020c33b0 kind:function(thumb,size=0x24) addr:0x020c3350 _ZN12ActorManager11DeleteActorEjb kind:function(arm,size=0xb0) addr:0x020c3374 -_ZN12ActorManager18func_ov00_020c3484EP8ActorRefPS_i kind:function(arm,size=0xf8) addr:0x020c3424 +_ZN12ActorManager18func_ov00_020c3484Ei kind:function(arm,size=0xf8) addr:0x020c3424 _ZN12ActorManager14Actor_vfunc_10Ej kind:function(arm,size=0x5c) addr:0x020c351c _ZN12ActorManager13FindActorByIdEi kind:function(arm,size=0x9c) addr:0x020c3578 _ZN12ActorManager8GetActorEP8ActorRef kind:function(arm,size=0x40) addr:0x020c3614 _ZN11FilterActor6FilterEP5Actor kind:function(arm,size=0x138) addr:0x020c3654 _ZN12ActorManager12FilterActorsEP15FilterActorBaseP9ActorList kind:function(arm,size=0xa8) addr:0x020c378c -_ZN12ActorManager15FindActorByTypeEP8ActorRefPS_j kind:function(arm,size=0x68) addr:0x020c3834 -_ZN12ActorManager22FindNearestActorOfTypeEP8ActorRefPS_jP5Vec3p kind:function(arm,size=0x90) addr:0x020c389c +_ZN12ActorManager15FindActorByTypeEj kind:function(arm,size=0x68) addr:0x020c3834 +_ZN12ActorManager22FindNearestActorOfTypeEjP5Vec3p kind:function(arm,size=0x90) addr:0x020c389c _ZN12ActorManager18func_ov00_020c398cEj kind:function(arm,size=0x10) addr:0x020c392c _ZN12ActorManager18func_ov00_020c399cEjP8Cylinder kind:function(arm,size=0x10) addr:0x020c393c _ZN12ActorManager18func_ov00_020c39acEiPKjb kind:function(arm,size=0x180) addr:0x020c394c @@ -3610,11 +3610,11 @@ func_ov000_020d7524 kind:function(arm,size=0x68) addr:0x020d74c4 func_ov000_020d758c kind:function(arm,size=0x3c) addr:0x020d752c func_ov000_020d75c8 kind:function(arm,size=0x14) addr:0x020d7568 func_ov000_020d75dc kind:function(arm,size=0x208) addr:0x020d757c -func_ov000_020d77e4 kind:function(arm,size=0x9c) addr:0x020d7784 +_ZN18UnkStruct_020eec9c19func_ov000_020d77e4Ei kind:function(arm,size=0x9c) addr:0x020d7784 func_ov000_020d7880 kind:function(arm,size=0x20) addr:0x020d7820 func_ov000_020d78a0 kind:function(arm,size=0x1e4) addr:0x020d7840 func_ov000_020d7a84 kind:function(arm,size=0x50) addr:0x020d7a24 -func_ov000_020d7ad4 kind:function(arm,size=0x4c) addr:0x020d7a74 +_ZN18UnkStruct_020eec9c19func_ov000_020d7ad4Ei kind:function(arm,size=0x4c) addr:0x020d7a74 func_ov000_020d7b20 kind:function(arm,size=0x40) addr:0x020d7ac0 func_ov000_020d7b60 kind:function(arm,size=0x20) addr:0x020d7b00 func_ov000_020d7b80 kind:function(arm,size=0xec) addr:0x020d7b20 @@ -3940,7 +3940,7 @@ __sinit_ov000_020df4a4 kind:function(arm,size=0x14) addr:0x020df444 __sinit_ov000_020df4b8 kind:function(arm,size=0x14) addr:0x020df458 __sinit_ov000_020df4cc kind:function(arm,size=0x174) addr:0x020df46c __sinit_ov000_020df640 kind:function(arm,size=0x38) addr:0x020df5e0 -__sinit_ActorSwitchObject.cpp kind:function(arm,size=0x40) addr:0x020df618 +__sinit_ActorSwitchObject.cpp kind:function(arm,size=0x40) addr:0x020df618 local __sinit_ov000_020df6b8 kind:function(arm,size=0x40) addr:0x020df658 __sinit_ActorEventIcon.cpp kind:function(arm,size=0x40) addr:0x020df698 local __sinit_ov000_020df738 kind:function(arm,size=0x38) addr:0x020df6d8 @@ -3996,7 +3996,7 @@ __sinit_ov000_020e1e74 kind:function(arm,size=0x14) addr:0x020e1e14 .p__sinit_ov000_020df4b8 kind:data(word) addr:0x020e1e58 .p__sinit_ov000_020df4cc kind:data(word) addr:0x020e1e5c .p__sinit_ov000_020df640 kind:data(word) addr:0x020e1e60 -.p__sinit_ov000_020df678 kind:data(word) addr:0x020e1e64 +.p__sinit_ActorSwitchObject.cpp kind:data(word) addr:0x020e1e64 local .p__sinit_ov000_020df6b8 kind:data(word) addr:0x020e1e68 .p__sinit_ActorEventIcon.cpp kind:data(word) addr:0x020e1e6c local .p__sinit_ov000_020df738 kind:data(word) addr:0x020e1e70 @@ -4096,7 +4096,7 @@ data_ov000_020e2494 kind:data(any) addr:0x020e2434 data_ov000_020e2498 kind:data(any) addr:0x020e2438 data_ov000_020e249c kind:data(any) addr:0x020e243c data_ov000_020e24a0 kind:data(any) addr:0x020e2440 -data_ov000_020e24a4 kind:data(any) addr:0x020e2444 +sShipParts kind:data(any) addr:0x020e2444 local data_ov000_020e24c4 kind:data(any) addr:0x020e2464 data_ov000_020e24c8 kind:data(any) addr:0x020e2468 data_ov000_020e24cc kind:data(any) addr:0x020e246c @@ -5129,7 +5129,7 @@ data_ov000_020e71b4 kind:data(any) addr:0x020e7154 data_ov000_020e71b8 kind:data(any) addr:0x020e7158 data_ov000_020e71bc kind:data(any) addr:0x020e715c sShipTypes kind:data(any) addr:0x020e7160 -_ZTV17KillPickupsFilter kind:data(any) addr:0x020e7188 +_ZTV17KillPickupsFilter kind:data(any) addr:0x020e7180 _ZTV5Actor kind:data(any) addr:0x020e7194 @1038 kind:data(any) addr:0x020e7248 local @1037 kind:data(any) addr:0x020e724c local @@ -5891,21 +5891,21 @@ data_ov000_020ec864 kind:bss addr:0x020ec804 data_ov000_020ec8a4 kind:bss addr:0x020ec844 data_ov000_020ec8e4 kind:bss addr:0x020ec884 data_ov000_020ec924 kind:bss addr:0x020ec8c4 -data_ov000_020ec964 kind:bss addr:0x020ec904 -data_ov000_020ec970 kind:bss addr:0x020ec910 -data_ov000_020ec97c kind:bss addr:0x020ec91c -data_ov000_020ec988 kind:bss addr:0x020ec928 -data_ov000_020ec994 kind:bss addr:0x020ec934 -data_ov000_020ec9a0 kind:bss addr:0x020ec940 -data_ov000_020ec9ac kind:bss addr:0x020ec94c -data_ov000_020ec9b8 kind:bss addr:0x020ec958 +@2243 kind:bss addr:0x020ec904 local +@2246 kind:bss addr:0x020ec910 local +@2249 kind:bss addr:0x020ec91c local +@2252 kind:bss addr:0x020ec928 local +@2254 kind:bss addr:0x020ec934 local +@2257 kind:bss addr:0x020ec940 local +@2260 kind:bss addr:0x020ec94c local +@2263 kind:bss addr:0x020ec958 local data_ov000_020ec9c8 kind:bss addr:0x020ec968 data_ov000_020ec9d4 kind:bss addr:0x020ec974 data_ov000_020ec9d6 kind:bss addr:0x020ec976 data_ov000_020ec9d8 kind:bss addr:0x020ec978 data_ov000_020ecd50 kind:bss addr:0x020eccf0 data_ov000_020ecd58 kind:bss addr:0x020eccf8 -data_ov000_020ecd64 kind:bss addr:0x020ecd04 +@1240 kind:bss addr:0x020ecd04 local _ZN17ActorSwitchObject5gTypeE kind:bss addr:0x020ecd10 data_ov000_020ecd84 kind:bss addr:0x020ecd24 data_ov000_020ecd90 kind:bss addr:0x020ecd30 diff --git a/config/usa/arm9/overlays/ov004/symbols.txt b/config/usa/arm9/overlays/ov004/symbols.txt index cad402f7..1e2f5bc2 100644 --- a/config/usa/arm9/overlays/ov004/symbols.txt +++ b/config/usa/arm9/overlays/ov004/symbols.txt @@ -41,7 +41,7 @@ _ZN10MapManager7DestroyEv kind:function(thumb,size=0x24) addr:0x02101f68 _ZN10MapManager17LoadMapTexSpritesEi kind:function(thumb,size=0x254) addr:0x02101f8c _ZN10MapManager19func_ov004_02102260Ev kind:function(thumb,size=0x2) addr:0x021021e0 _ZN10MapManager19func_ov004_02102264EPiPc kind:function(thumb,size=0x260) addr:0x021021e4 -_ZN10MapManager19func_ov004_021024c4Eiii kind:function(thumb,size=0x114) addr:0x02102444 +_ZN10MapManager19func_ov004_021024c4EP9FlagsUnk2bb kind:function(thumb,size=0x114) addr:0x02102444 _ZN10MapManager19func_ov004_021025d8Ev kind:function(thumb,size=0x10) addr:0x02102558 func_ov004_021025e8 kind:function(thumb,size=0x34) addr:0x02102568 func_ov004_0210261c kind:function(arm,size=0x4) addr:0x0210259c @@ -51,7 +51,7 @@ func_ov004_021026cc kind:function(thumb,size=0x24) addr:0x0210264c func_ov004_021026f0 kind:function(thumb,size=0x4c) addr:0x02102670 func_ov004_0210273c kind:function(thumb,size=0xc) addr:0x021026bc func_ov004_02102748 kind:function(thumb,size=0x26) addr:0x021026c8 -_Z19func_ov004_02102770Pi kind:function(thumb,size=0x44) addr:0x021026f0 +_ZN18UnkStruct_027e0f6c19func_ov004_02102770Ev kind:function(thumb,size=0x44) addr:0x021026f0 func_ov004_021027b4 kind:function(arm,size=0x28) addr:0x02102734 func_ov004_021027dc kind:function(arm,size=0x4) addr:0x0210275c func_ov004_021027e0 kind:function(arm,size=0x14) addr:0x02102760 @@ -72,7 +72,7 @@ func_ov004_02102aa0 kind:function(thumb,size=0x38) addr:0x02102a20 func_ov004_02102ad8 kind:function(thumb,size=0x1e) addr:0x02102a58 func_ov004_02102af8 kind:function(thumb,size=0x6) addr:0x02102a78 func_ov004_02102b00 kind:function(thumb,size=0x28) addr:0x02102a80 -func_ov004_02102b28 kind:function(thumb,size=0x54) addr:0x02102aa8 +_ZN18UnkStruct_027e0f6819func_ov004_02102b28Ev kind:function(thumb,size=0x54) addr:0x02102aa8 func_ov004_02102b7c kind:function(arm,size=0x14) addr:0x02102afc func_ov004_02102b90 kind:function(arm,size=0x14) addr:0x02102b10 func_ov004_02102ba4 kind:function(arm,size=0x44) addr:0x02102b24 @@ -86,7 +86,7 @@ func_ov004_02102da4 kind:function(thumb,size=0x44) addr:0x02102d24 func_ov004_02102de8 kind:function(thumb,size=0x2) addr:0x02102d68 func_ov004_02102dec kind:function(thumb,size=0x2c) addr:0x02102d6c func_ov004_02102e18 kind:function(thumb,size=0x24) addr:0x02102d98 -func_ov004_02102e3c kind:function(thumb,size=0x1c) addr:0x02102dbc +_ZN18UnkStruct_027e0f7819func_ov004_02102e3cEv kind:function(thumb,size=0x1c) addr:0x02102dbc func_ov004_02102e58 kind:function(thumb,size=0x5ec) addr:0x02102dd8 func_ov004_02103444 kind:function(thumb,size=0xb8) addr:0x021033c4 func_ov004_021034fc kind:function(thumb,size=0xbc) addr:0x0210347c @@ -203,7 +203,7 @@ func_ov004_021069c4 kind:function(thumb,size=0x31c) addr:0x02106944 func_ov004_02106ce0 kind:function(thumb,size=0x80) addr:0x02106c60 func_ov004_02106d60 kind:function(thumb,size=0x44) addr:0x02106ce0 func_ov004_02106da4 kind:function(thumb,size=0x12) addr:0x02106d24 -func_ov004_02106db8 kind:function(thumb,size=0x50) addr:0x02106d38 +_ZN14MessageManager19func_ov004_02106db8Ev kind:function(thumb,size=0x50) addr:0x02106d38 func_ov004_02106e08 kind:function(thumb,size=0x1bc) addr:0x02106d88 func_ov004_02106fc4 kind:function(thumb,size=0xc) addr:0x02106f44 func_ov004_02106fd0 kind:function(thumb,size=0x154) addr:0x02106f50 diff --git a/config/usa/arm9/overlays/ov012/symbols.txt b/config/usa/arm9/overlays/ov012/symbols.txt index 050711f2..29ee20d7 100644 --- a/config/usa/arm9/overlays/ov012/symbols.txt +++ b/config/usa/arm9/overlays/ov012/symbols.txt @@ -665,7 +665,7 @@ func_ov012_0212b31c kind:function(arm,size=0x20) addr:0x0212b29c func_ov012_0212b33c kind:function(arm,size=0xc) addr:0x0212b2bc func_ov012_0212b348 kind:function(arm,size=0x8) addr:0x0212b2c8 func_ov012_0212b350 kind:function(arm,size=0x8) addr:0x0212b2d0 -func_ov012_0212b358 kind:function(arm,size=0xf8) addr:0x0212b2d8 +_ZN18UnkStruct_0212b358C1Ejj kind:function(arm,size=0xf8) addr:0x0212b2d8 func_ov012_0212b450 kind:function(arm,size=0x88) addr:0x0212b3d0 func_ov012_0212b4d8 kind:function(arm,size=0x90) addr:0x0212b458 func_ov012_0212b568 kind:function(arm,size=0x94) addr:0x0212b4e8 diff --git a/config/usa/arm9/overlays/ov015/symbols.txt b/config/usa/arm9/overlays/ov015/symbols.txt index 5f4ef353..363a72ad 100644 --- a/config/usa/arm9/overlays/ov015/symbols.txt +++ b/config/usa/arm9/overlays/ov015/symbols.txt @@ -253,7 +253,7 @@ func_ov015_02128b9c kind:function(arm,size=0x90) addr:0x02128b1c func_ov015_02128c2c kind:function(arm,size=0x140) addr:0x02128bac func_ov015_02128d6c kind:function(arm,size=0x20) addr:0x02128cec func_ov015_02128d8c kind:function(arm,size=0x4c) addr:0x02128d0c -func_ov015_02128dd8 kind:function(arm,size=0xac) addr:0x02128d58 +_ZN18UnkStruct_02128dd8C1Ejj kind:function(arm,size=0xac) addr:0x02128d58 func_ov015_02128e84 kind:function(arm,size=0xcc) addr:0x02128e04 func_ov015_02128f50 kind:function(arm,size=0xd4) addr:0x02128ed0 func_ov015_02129024 kind:function(arm,size=0x220) addr:0x02128fa4 @@ -287,10 +287,10 @@ func_ov015_02129b30 kind:function(arm,size=0x8) addr:0x02129ab0 func_ov015_02129b38 kind:function(arm,size=0x18) addr:0x02129ab8 func_ov015_02129b50 kind:function(arm,size=0xb4) addr:0x02129ad0 func_ov015_02129c04 kind:function(arm,size=0x10) addr:0x02129b84 -func_ov015_02129c14 kind:function(arm,size=0x10) addr:0x02129b94 -func_ov015_02129c24 kind:function(arm,size=0x10) addr:0x02129ba4 -func_ov015_02129c34 kind:function(arm,size=0x10) addr:0x02129bb4 -func_ov015_02129c44 kind:function(arm,size=0x10) addr:0x02129bc4 +_ZN7MapBase19func_ov015_02129c14Ev kind:function(arm,size=0x10) addr:0x02129b94 +_ZN7MapBase19func_ov015_02129c24EP5Vec3pS1_ kind:function(arm,size=0x10) addr:0x02129ba4 +_ZN7MapBase19func_ov015_02129c34Ei kind:function(arm,size=0x10) addr:0x02129bb4 +_ZN7MapBase19func_ov015_02129c44Ei kind:function(arm,size=0x10) addr:0x02129bc4 func_ov015_02129c54 kind:function(arm,size=0x50) addr:0x02129bd4 func_ov015_02129ca4 kind:function(arm,size=0x44) addr:0x02129c24 func_ov015_02129ce8 kind:function(arm,size=0xac) addr:0x02129c68 @@ -1986,7 +1986,7 @@ func_ov015_021847bc kind:function(arm,size=0x7c) addr:0x0218473c func_ov015_02184838 kind:function(arm,size=0xa4) addr:0x021847b8 func_ov015_021848dc kind:function(arm,size=0x8c) addr:0x0218485c func_ov015_02184968 kind:function(arm,size=0x3c) addr:0x021848e8 -func_ov015_021849a4 kind:function(arm,size=0x1c) addr:0x02184924 +_Z19func_ov015_021849a4Pi kind:function(arm,size=0x1c) addr:0x02184924 func_ov015_021849c0 kind:function(arm,size=0x1c) addr:0x02184940 func_ov015_021849dc kind:function(arm,size=0x10) addr:0x0218495c func_ov015_021849ec kind:function(arm,size=0x54) addr:0x0218496c diff --git a/config/usa/arm9/overlays/ov017/symbols.txt b/config/usa/arm9/overlays/ov017/symbols.txt index 2471fa83..16cb4c86 100644 --- a/config/usa/arm9/overlays/ov017/symbols.txt +++ b/config/usa/arm9/overlays/ov017/symbols.txt @@ -1,6 +1,6 @@ -func_ov017_0215b4a0 kind:function(arm,size=0x2c) addr:0x0215b400 +_ZN18UnkStruct_0215b4a0C1Ejj kind:function(arm,size=0x2c) addr:0x0215b400 func_ov017_0215b4cc kind:function(arm,size=0x1c) addr:0x0215b42c -func_ov017_0215b4e8 kind:function(thumb,size=0xf0) addr:0x0215b448 +_ZN18UnkStruct_0215b4e8C1Ejj kind:function(thumb,size=0xf0) addr:0x0215b448 func_ov017_0215b5d8 kind:function(thumb,size=0x94) addr:0x0215b538 func_ov017_0215b66c kind:function(thumb,size=0x9c) addr:0x0215b5cc func_ov017_0215b708 kind:function(thumb,size=0x5c) addr:0x0215b668 diff --git a/include/Actor/ActorManager.hpp b/include/Actor/ActorManager.hpp index fd246f37..08ef7fd2 100644 --- a/include/Actor/ActorManager.hpp +++ b/include/Actor/ActorManager.hpp @@ -78,13 +78,13 @@ public: /* c4 */ void DeleteActor(u32 index, bool param2); - static void func_ov00_020c3484(ActorRef *ref, ActorManager *actorMgr, unk32 param3); + ActorRef func_ov00_020c3484(unk32 param3); void Actor_vfunc_10(u32 param1); Actor *FindActorById(s32 id); Actor *GetActor(ActorRef *ref); s32 FilterActors(FilterActorBase *filter, ActorList *filteredActors); - static void FindActorByType(ActorRef *ref, ActorManager *actorMgr, ActorTypeId type); - static void FindNearestActorOfType(ActorRef *ref, ActorManager *actorMgr, ActorTypeId type, Vec3p *pos); + ActorRef FindActorByType(ActorTypeId type); + ActorRef FindNearestActorOfType(ActorTypeId type, Vec3p *pos); bool func_ov00_020c398c(u32 index); void func_ov00_020c399c(u32 index, Cylinder *cylinder); Actor *func_ov00_020c39ac(s32 index, const ActorTypeId *actorTypes, bool param3); diff --git a/include/Actor/ActorRef.hpp b/include/Actor/ActorRef.hpp index eeace571..5ef03f2c 100644 --- a/include/Actor/ActorRef.hpp +++ b/include/Actor/ActorRef.hpp @@ -8,7 +8,9 @@ struct ActorRef { /* 4 */ s32 index; /* 8 */ - inline ActorRef() {} + inline ActorRef() { + Reset(); + } inline ActorRef(s32 id, s32 index) : id(id), index(index) {} diff --git a/include/Actor/ActorSpawner.hpp b/include/Actor/ActorSpawner.hpp index e99bafb3..05bb46a9 100644 --- a/include/Actor/ActorSpawner.hpp +++ b/include/Actor/ActorSpawner.hpp @@ -19,6 +19,12 @@ struct ActorSpawnOptions { /* 24 */ unk32 mUnk_24; /* 28 */ unk32 mUnk_28; /* 2c */ + + void func_ov000_020c3348(); + inline ActorSpawnOptions() : + mUnk_1c(-1, -1) { + func_ov000_020c3348(); + } }; class ActorSpawner : public SysObject { diff --git a/include/Actor/Dungeon/ActorSwitchObject.hpp b/include/Actor/Dungeon/ActorSwitchObject.hpp index 0658fcb2..12fcc16a 100644 --- a/include/Actor/Dungeon/ActorSwitchObject.hpp +++ b/include/Actor/Dungeon/ActorSwitchObject.hpp @@ -17,7 +17,7 @@ public: /* 164 */ unk32 mUnk_164; /* 168 */ unk32 mUnk_168; /* 16c */ u32 mUnk_16c; - /* 170 */ ActorRef mUnk_170[5]; + /* 170 */ ActorRef mTrapActors[5]; /* 198 */ /* 00 */ virtual ~ActorSwitchObject() override; @@ -27,10 +27,17 @@ public: /* 18 */ virtual void vfunc_18(u32 param1) override; /* b4 */ + inline ActorSwitchObject() : + mUnk_158(0), + mUnk_15c(0), + mUnk_160(0), + mUnk_164(0), + mUnk_168(0) {} + static ActorSwitchObject *Create(); bool func_ov000_0208fc10(s32 param1); void func_ov000_0208fc7c(); - bool func_ov000_0208fcb4(); + unk32 func_ov000_0208fcb4(); void func_ov000_0208fef8(); void func_ov000_0209032c(); }; diff --git a/include/Actor/FilterActorBase.hpp b/include/Actor/FilterActorBase.hpp index 8d721195..1ef32ccb 100644 --- a/include/Actor/FilterActorBase.hpp +++ b/include/Actor/FilterActorBase.hpp @@ -20,14 +20,4 @@ public: class FilterActorReturn { public: /* 00 */ ActorRef refs[20]; - - inline FilterActorReturn() { - ActorRef *ref = refs; - ActorRef *end; - do { - end = &refs[20]; - ref->Reset(); - ref++; - } while (ref < end); - } }; diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index 569f3765..2cbf8387 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -5,6 +5,7 @@ #include "Map/Course_Unk_c8.hpp" #include "Map/MapData.hpp" +#include "Map/TilePos.hpp" #include "Physics/AABB.hpp" #include "System/SysNew.hpp" @@ -32,11 +33,11 @@ public: /* 004 */ CourseType mType; /* 008 */ unk32 mUnk_008; /* 00c */ char mName[0x10]; - /* 01c */ Vec2b mCurrMapPos; // position in the map grid - /* 01e */ Vec2b mUnk_01e; + /* 01c */ TilePos mCurrMapPos; // position in the map grid + /* 01e */ TilePos mUnk_01e; /* 020 */ u8 mMapGrid[10][10]; - /* 084 */ Vec2b mMainGrid; // part of the grid where you can walk off screen to another map - /* 086 */ Vec2b mMainGridSize; + /* 084 */ TilePos mMainGrid; // part of the grid where you can walk off screen to another map + /* 086 */ TilePos mMainGridSize; /* 088 */ s32 mScreenMapOffsetX; /* 08c */ s32 mScreenMapOffsetY; /* 090 */ unk32 mUnk_090; @@ -68,7 +69,7 @@ public: void func_ov00_0207ca78(unk32 param_2, unk8 param_3, unk32 param_4); bool func_ov00_0207caa8(s32 param_2, unk32 *param_3, unk8 *param_4); unk32 func_ov00_0207cb30(s32 param_2); - static void FindMapGridPos(Vec2b *pos, Course *param_2, u32 map); + TilePos FindMapGridPos(u32 map); Vec3p *FindMapCenter(unk32 map); void func_ov00_0207cbe8(s32 param_2); unk8 func_ov00_0207cc24(s32 param_2); diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index f711dbbb..286e6156 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -135,22 +135,22 @@ public: /* 48 */ virtual void vfunc_48(); /* 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); + /* 54 */ virtual unk32 vfunc_54(TilePos *param_1); + /* 58 */ virtual unk32 vfunc_58(TilePos *param_1, int param_2); /* 5c */ virtual unk32 vfunc_5c(); - /* 60 */ virtual unk32 vfunc_60(Vec2b *param_1); + /* 60 */ virtual unk32 vfunc_60(TilePos *param_1); /* 64 */ virtual unk32 vfunc_64(); /* 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 unk32 *vfunc_74(Vec3p *param_2); - /* 78 */ virtual unk32 *vfunc_78(Vec2b *param_1); + /* 78 */ virtual unk32 *vfunc_78(TilePos *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(Vec2b *param_2, unk32 param_3); + /* 90 */ virtual unk8 vfunc_90(TilePos *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(); @@ -183,13 +183,13 @@ public: bool func_ov00_0207f38c(s32 *param_2); void func_ov00_0207f4a4(Vec2s *param_2, unk32 param_3); static void func_ov00_0207f53c(Vec2s *param_1, MapBase *param_2, Vec3p *param_3); - static void func_ov00_0207f588(Vec2s *param_1, MapBase *param_2, Vec2b *param_3, unk32 param_4); + static void func_ov00_0207f588(Vec2s *param_1, MapBase *param_2, TilePos *param_3, unk32 param_4); void func_ov00_0207f630(Vec2s *param_2, Vec3p *param_3); unk8 GetTileStartX(unk32 x); unk8 GetTileStartZ(unk32 z); s32 GetTileEndX(unk32 x); s32 GetTileEndZ(unk32 z); - void GetTileBounds(Vec2b *tilePos, AABB *bounds); + void GetTileBounds(TilePos *tilePos, AABB *bounds); s32 GetClampedTileX(s32 worldX); s32 GetClampedTileY(s32 worldZ); unk8 GetTileX(s32 worldX); @@ -227,8 +227,8 @@ public: bool AddUnk_130(s32 param_2); bool func_ov00_020809b8(s32 param_2); unk8 func_ov00_02080a78(Vec3p *param_2); - unk8 func_ov00_02080b24(Vec2b *param_2); - void func_ov00_02080d08(Vec2b *param_2); + unk8 func_ov00_02080b24(TilePos *param_2); + void func_ov00_02080d08(TilePos *param_2); bool TriggerOfType_vfunc_10(unk32 type); void func_ov00_02080de4(); unk8 func_ov00_02080de8(unk32 param_2); diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index a6fd03fe..9989f31f 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -16,6 +16,9 @@ struct MapManager_Unk1 { /* 4 */ unk32 mUnk_4; /* 8 */ + inline MapManager_Unk1(unk32 unk0, unk32 unk4) : + mUnk_0(unk0), + mUnk_4(unk4) {} ~MapManager_Unk1(); }; @@ -24,9 +27,20 @@ struct MapManager_Unk2 { /* 4 */ unk32 mUnk_4; /* 8 */ + inline MapManager_Unk2(unk32 unk0, unk32 unk4) : + mUnk_0(unk0), + mUnk_4(unk4) {} ~MapManager_Unk2(); }; +struct MapManager_Unk3 { + /* 0 */ unk32 mUnk_0; + /* 4 */ + + inline MapManager_Unk3(unk32 unk0) : + mUnk_0(unk0) {} +}; + struct UnkStruct_0208210c_param3 { /* 000 */ unk32 mUnk_00; /* 004 */ unk8 mUnk_04; @@ -117,7 +131,7 @@ public: u8 GetCurrentMapPosY(); u8 func_ov00_02082d40(); u32 func_ov00_02082d74(unk32 param_2); - void func_ov00_02082d84(Vec2b *param_2, s32 *param_3, s32 *param_4); + void func_ov00_02082d84(TilePos *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); @@ -148,7 +162,7 @@ public: void func_ov00_0208346c(AABB *param_2); void func_ov00_020834bc(Vec3p *param_2, unk32 param_3, unk32 param_4); void func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 param_4); - static void func_ov00_02083560(Vec2b *param_1, MapManager *param_2, u32 param_3); + TilePos func_ov00_02083560(u32 param_3); u8 func_ov00_02083570(u8 param_2, u8 param_3); unk32 func_ov00_02083588(); unk32 func_ov00_020835a4(); @@ -183,37 +197,37 @@ public: bool func_ov00_020839c4(s32 param_2); s32 func_ov00_020839d4(s32 param_2); s32 func_ov00_020839f8(s32 param_2); - static void func_ov00_02083a1c(Vec2b *param_1, MapManager *param_2, Vec3p *param_3); - static void func_ov00_02083a54(Vec2b *param_1, MapManager *param_2, Vec3p *param_3, s32 param_4, unk32 param_5); + TilePos func_ov00_02083a1c(Vec3p *param_3); + TilePos func_ov00_02083a54(Vec3p *param_3, s32 param_4, unk32 param_5); s32 GetTileStartX(unk32 x); s32 GetTileStartZ(unk32 z); s32 GetTileEndX(unk32 x); s32 GetTileEndZ(unk32 z); s32 func_ov00_02083c24(unk32 x); s32 func_ov00_02083c50(unk32 z); - void func_ov00_02083c7c(Vec3p *param_2, Vec2b param_3); - void func_ov00_02083ce8(Vec3p *param_2, Vec2b param_3, s32 param_4, u32 param_5); + void func_ov00_02083c7c(Vec3p *param_2, TilePos param_3); + void func_ov00_02083ce8(Vec3p *param_2, TilePos 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); + unk32 MapData_vfunc_60(TilePos *param_1); + bool func_ov00_02083e70(TilePos *param_2); unk32 MapData_vfunc_68(Vec3p *param_1, bool 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); - void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds); - unk32 MapData_vfunc_54(Vec2b *a); + void GetTileWorldBounds(TilePos *tile, AABB *tileBounds); + unk32 MapData_vfunc_54(TilePos *a); unk32 func_ov00_020840a0(u8 param_2, u8 param_3); - unk32 *MapData_vfunc_78(Vec2b *param_1); - unk32 func_ov00_020840dc(Vec2b *param_1); + unk32 *MapData_vfunc_78(TilePos *param_1); + unk32 func_ov00_020840dc(TilePos *param_1); static unk8 func_ov00_02084100(unk32 *param_1, MapManager *param_2); unk32 GetMapData_Unk_48(); unk32 GetMapData_Unk_4c(); unk32 func_ov00_0208412c(); void func_ov00_0208413c(unk32 param_2); - unk8 MapData_vfunc_58(Vec2b *param_1, int param_2); - s32 func_ov00_02084164(Vec2b *param_2); + unk8 MapData_vfunc_58(TilePos *param_1, int param_2); + s32 func_ov00_02084164(TilePos *param_2); u8 GetMapData_Unk_0a(); u8 GetMapData_Unk_0b(); unk8 MapData_vfunc_a4(unk8 *param_1); diff --git a/include/Map/TilePos.hpp b/include/Map/TilePos.hpp new file mode 100644 index 00000000..419361d9 --- /dev/null +++ b/include/Map/TilePos.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include "global.h" +#include "types.h" + +class TilePos { +public: + u8 x; + u8 y; + + inline TilePos() : + x(0), + y(0) {} + inline TilePos(u8 x, u8 y) : + x(x), + y(y) {} +}; diff --git a/include/Player/PlayerControl.hpp b/include/Player/PlayerControl.hpp index 11dd6488..adf10925 100644 --- a/include/Player/PlayerControl.hpp +++ b/include/Player/PlayerControl.hpp @@ -1,13 +1,15 @@ #pragma once #include "global.h" -#include "nds/math.h" #include "types.h" +#include + #include "Actor/Actor.hpp" #include "Actor/ActorManager.hpp" #include "Debug/DebugHierarchy.hpp" #include "Item/Item.hpp" +#include "Map/TilePos.hpp" #include "Player/TouchControl.hpp" #include "Player/TouchGesture.hpp" @@ -57,7 +59,7 @@ public: /* 84 */ ActorRef mFollowRef; /* 8c */ ActorRef mNextFollowRef; /* 94 */ ActorRef mLastFollowRef; - /* 9c */ Vec2b mUnk_9c; + /* 9c */ TilePos mUnk_9c; /* 9e */ unk8 mUnk_9e[2]; /* a0 */ void *mFollowObject; /* a4 */ q20 mFollowDist; @@ -78,7 +80,7 @@ public: void func_ov00_020aef30(); void UpdateAim(); Actor *GetFollowActor(); - bool func_ov00_020af01c(Vec2b *param1); + bool func_ov00_020af01c(TilePos *param1); void SetUnk_80(); void StopFollowing(); void func_ov00_020af06c(); diff --git a/include/Unknown/UnkStruct_020eec9c.hpp b/include/Unknown/UnkStruct_020eec9c.hpp index 9fce4067..bcb289ff 100644 --- a/include/Unknown/UnkStruct_020eec9c.hpp +++ b/include/Unknown/UnkStruct_020eec9c.hpp @@ -38,6 +38,7 @@ public: void func_ov000_020d77e4(unk32); unk32 func_ov000_020d7f18(unk32); + void func_ov000_020d7ad4(unk32); void func_ov008_0211337c(); }; diff --git a/libs/nds/include/nds/math.h b/libs/nds/include/nds/math.h index ea1d1d88..a74bf935 100644 --- a/libs/nds/include/nds/math.h +++ b/libs/nds/include/nds/math.h @@ -50,12 +50,6 @@ bool Approach(unk32 *src, unk32 dest, unk32 step); bool Approach_thunk(unk32 *src, unk32 dest, unk32 step); extern q4 gSinCosTable[]; -typedef struct { - /* 0 */ u8 x; - /* 1 */ u8 y; - /* 2 */ -} Vec2b; - typedef struct { /* 0 */ s16 x; /* 1 */ s16 y; diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index 7b15d166..47d5e3d6 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -1004,8 +1004,7 @@ ARM void Actor::GetLinkPos(Vec3p *result) { } ARM void Actor::GetLinkDummyPos(Vec3p *result) { - ActorRef dummyRef; - ActorManager::FindActorByType(&dummyRef, gActorManager, ActorTypeId_PlayerDummy); + ActorRef dummyRef = gActorManager->FindActorByType(ActorTypeId_PlayerDummy); ActorPlayerDummy *dummy = (ActorPlayerDummy *) gActorManager->GetActor(&dummyRef); if (dummy != NULL && dummy->mUnk_16e == 0) { *result = dummy->mPos; diff --git a/src/00_Core/Actor/ActorManager.cpp b/src/00_Core/Actor/ActorManager.cpp index 32983645..a881355e 100644 --- a/src/00_Core/Actor/ActorManager.cpp +++ b/src/00_Core/Actor/ActorManager.cpp @@ -45,17 +45,17 @@ ARM void ActorManager::DeleteActor(u32 index, bool param2) { return; } -ARM void ActorManager::func_ov00_020c3484(ActorRef *ref, ActorManager *actorMgr, unk32 param3) { - ref->Reset(); +ARM ActorRef ActorManager::func_ov00_020c3484(unk32 param3) { + ActorRef ref; if (data_027e103c->mUnk_24 == 0) { - return; + return ref; } q20 minDistance = 0x7fffffff; - Actor **actorIter = actorMgr->mActorTable; + Actor **actorIter = this->mActorTable; u8 unkByte = data_02056be4[data_027e077c.GetUnk0()]; bool unk1 = (unkByte & 1) != 0; - Actor **actorTableEnd = actorIter + actorMgr->mMaxActorIndex; + Actor **actorTableEnd = actorIter + this->mMaxActorIndex; for (; actorIter < actorTableEnd; actorIter++) { Actor *actor = *actorIter; @@ -65,7 +65,7 @@ ARM void ActorManager::func_ov00_020c3484(ActorRef *ref, ActorManager *actorMgr, if ((*actorIter)->IsHitboxTouched(false)) { q20 distance = (*actorIter)->DistanceToLink(); if (distance < minDistance) { - *ref = (*actorIter)->mRef; + ref = (*actorIter)->mRef; minDistance = distance; } } @@ -73,6 +73,7 @@ ARM void ActorManager::func_ov00_020c3484(ActorRef *ref, ActorManager *actorMgr, } } } + return ref; } ARM void ActorManager::Actor_vfunc_10(u32 param1) { @@ -217,39 +218,42 @@ ARM s32 ActorManager::FilterActors(FilterActorBase *filter, ActorList *filteredA return numApplied; } -ARM void ActorManager::FindActorByType(ActorRef *ref, ActorManager *actorMgr, ActorTypeId type) { - ref->Reset(); +ARM ActorRef ActorManager::FindActorByType(ActorTypeId type) { + ActorRef ref; - Actor **actorIter = actorMgr->mActorTable; - Actor **actorTableEnd = actorIter + actorMgr->mMaxActorIndex; + Actor **actorIter = this->mActorTable; + Actor **actorTableEnd = actorIter + this->mMaxActorIndex; for (; actorIter < actorTableEnd; actorIter++) { Actor *actor = *actorIter; if (actor != NULL && actor->mAlive && type == actor->mType) { - *ref = actor->mRef; - return; + ref = actor->mRef; + return ref; } } + return ref; } -ARM void ActorManager::FindNearestActorOfType(ActorRef *ref, ActorManager *actorMgr, ActorTypeId type, Vec3p *pos) { - ref->Reset(); +ARM ActorRef ActorManager::FindNearestActorOfType(ActorTypeId type, Vec3p *pos) { + ActorRef ref; q20 minDistance = 0x7fffffff; - Actor **actorIter = actorMgr->mActorTable; - Actor **actorTableEnd = actorIter + actorMgr->mMaxActorIndex; + Actor **actorIter = this->mActorTable; + Actor **actorTableEnd = actorIter + this->mMaxActorIndex; for (; actorIter < actorTableEnd; actorIter++) { Actor *actor = *actorIter; if (actor != NULL && actor->mAlive && type == actor->mType) { q20 distance = Vec3p_Distance(&actor->mPos, pos); if (distance < minDistance) { - *ref = (*actorIter)->mRef; + ref = (*actorIter)->mRef; minDistance = distance; } } } + + return ref; } ARM bool ActorManager::func_ov00_020c398c(u32 index) { diff --git a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp index d69fc611..a773cbd2 100644 --- a/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp +++ b/src/00_Core/Actor/Dungeon/ActorSwitchObject.cpp @@ -1,22 +1,34 @@ #include "Actor/Dungeon/ActorSwitchObject.hpp" +#include "Actor/ActorManager.hpp" +#include "Actor/ActorSpawner.hpp" #include "Map/MapManager.hpp" +#include "Player/PlayerBase.hpp" +#include "System/Random.hpp" +#include "Unknown/UnkStruct_020eec9c.hpp" +#include + +#pragma section sbss begin ActorType ActorSwitchObject::gType = ActorType(ActorTypeId_SwitchObject, (ActorCreateFunc) ActorSwitchObject::Create, NULL); +#pragma section sbss end -ActorSwitchObject *ActorSwitchObject::Create() {} +extern u32 **data_027e0fe0[]; +ARM ActorSwitchObject *ActorSwitchObject::Create() { + return new(*data_027e0fe0[0], 4) ActorSwitchObject(); +} -bool ActorSwitchObject::Init() { +ARM bool ActorSwitchObject::Init() { Actor::Init(); this->func_ov000_0208fc7c(); this->mUnk_130 = 0; return true; } -bool ActorSwitchObject::vfunc_0c() { +ARM bool ActorSwitchObject::vfunc_0c() { return this->func_ov00_020c1bfc(0) ? this->func_ov000_0208fc10(1) : this->func_ov000_0208fc10(0); } -void ActorSwitchObject::vfunc_14(u32 param1) { +ARM void ActorSwitchObject::vfunc_14(u32 param1) { bool bVar1; u32 uVar2; u32 uVar3; @@ -69,11 +81,11 @@ void ActorSwitchObject::vfunc_14(u32 param1) { return; } -void ActorSwitchObject::vfunc_18(u32 param1) { +ARM void ActorSwitchObject::vfunc_18(u32 param1) { this->vfunc_14(param1); } -bool ActorSwitchObject::func_ov000_0208fc10(s32 param1) { +ARM bool ActorSwitchObject::func_ov000_0208fc10(s32 param1) { this->mUnk_130 = param1; switch (param1) { @@ -95,7 +107,7 @@ bool ActorSwitchObject::func_ov000_0208fc10(s32 param1) { return true; } -void ActorSwitchObject::func_ov000_0208fc7c() { +ARM void ActorSwitchObject::func_ov000_0208fc7c() { this->mUnk_158 = this->mUnk_020.mUnk_00[1]; this->mUnk_15c = this->mUnk_020.mUnk_00[2]; this->mUnk_164 = this->mUnk_020.mUnk_0a[1]; @@ -104,14 +116,158 @@ void ActorSwitchObject::func_ov000_0208fc7c() { this->mUnk_160 = this->mUnk_164; } -bool ActorSwitchObject::func_ov000_0208fcb4() {} -void ActorSwitchObject::func_ov000_0208fef8() {} +ARM unk32 ActorSwitchObject::func_ov000_0208fcb4() { + switch (mUnk_15c) { + case 1: + if ((mUnk_160 > mUnk_164) && (mUnk_160 < mUnk_168)) { + for (s32 i = mUnk_164; i < mUnk_160; i++) { + if (!gMapManager->func_ov00_02084be0(i, mUnk_16c)) { + mUnk_160 = (s32) mUnk_164; + return 0; + } + } + } + if (gMapManager->func_ov00_02084be0(mUnk_160, mUnk_16c)) { + for (s32 i = mUnk_160 + 1; i < mUnk_168; i++) { + if (gMapManager->func_ov00_02084be0(i, mUnk_16c)) { + mUnk_160 = mUnk_164; + return 0; + } + } + if (mUnk_160 < mUnk_168) { + mUnk_160 += 1; + } + } + return mUnk_160 == mUnk_168; + case 2: + if (gMapManager->func_ov00_02084be0(mUnk_160, mUnk_16c) != 0) { + bool var_r8 = false; + for (s32 i = mUnk_160 + 1; i < mUnk_168; i++) { + if (gMapManager->func_ov00_02084be0(i, mUnk_16c)) { + mUnk_160 = mUnk_164; + var_r8 = true; + } + } + if (!var_r8) { + mUnk_160 += 1; + } + } + bool var_r6_3 = true; + for (s32 i = mUnk_164; i < mUnk_168; i++) { + if (gMapManager->func_ov00_02084be0(i, mUnk_16c) == 0) { + var_r6_3 = false; + break; + } + } + if (var_r6_3) { + return mUnk_160 == mUnk_168 ? 1 : 2; + } + return 0; + default: + for (s32 i = 0; i < mUnk_020.mUnk_00[0]; i++) { + if (gMapManager->func_ov00_02084be0(mUnk_164 + i, mUnk_16c) == 0) { + return 0; + } + } + return 1; + } +} -void ActorSwitchObject::func_ov000_0209032c() { +ARM void ActorSwitchObject::func_ov000_0208fef8() { + if (mUnk_130 == 1) { + return; + } + switch (mUnk_020.mUnk_00[3]) { + case 1: + data_ov000_020eec9c.func_ov000_020d77e4(0xb); + return; + case 2: + data_ov000_020eec9c.func_ov000_020d77e4(0xb); + Vec3p playerPos = {gPlayerPos.x, gPlayerPos.y, gPlayerPos.z}; + Vec3p snakeSpawnCenter = {gPlayerPos.x, gPlayerPos.y + FLOAT_TO_Q20(3.0), gPlayerPos.z}; + Vec3p snakeSpawnPos; + ActorSpawnOptions spawnOptions; + s32 failedSpawns = 0; + for (u32 i = 0; i < ARRAY_LEN(mTrapActors); i++) { + if (mTrapActors[i].id != -1) { + Actor *temp_r0_2 = gActorManager->GetActor(&mTrapActors[i]); + if ((temp_r0_2 != NULL) && (temp_r0_2->mType == ActorTypeId_Rope)) { + continue; + } + mTrapActors[i].Reset(); + } + snakeSpawnPos.z = (gRandom.Next(0, 11) - 5) << 12; + snakeSpawnPos.y = 0; + snakeSpawnPos.x = (gRandom.Next(0, 11) - 5) << 12; + Vec3p_Add(&snakeSpawnPos, &snakeSpawnCenter, &snakeSpawnPos); + if (failedSpawns < 10) { + TilePos tilePos = gMapManager->func_ov00_02083a1c(&snakeSpawnPos); + // BUG: Should be Vec3p_Distance(&snakeSpawnCenter, &snakeSpawnPos) + if ((Vec3p_Distance(&playerPos, &snakeSpawnPos) < FLOAT_TO_Q20(2.0)) || + (gMapManager->func_ov00_02083e70(&tilePos) != 0)) { + i -= 1; + failedSpawns += 1; + continue; + } + if (gMapManager->MapData_vfunc_78(&tilePos) != NULL) { + continue; + } + if (gMapManager->func_ov00_02084164(&tilePos) == 0) { + i -= 1; + failedSpawns += 1; + continue; + } + switch (gMapManager->MapData_vfunc_54(&tilePos)) { + case 0x5: + case 0x6: + case 0x14: + case 0x17: + case 0x1b: + case 0x1c: + case 0x1d: + case 0x1e: + case 0x1f: + case 0x2b: + case 0x37: + case 0x46: + case 0x47: + case 0x48: + case 0x4e: + case 0x4f: + i -= 1; + failedSpawns += 1; + continue; + + default: + ActorRef ref = gActorManager->FindNearestActorOfType(ActorTypeId_PushBlock, &snakeSpawnPos); + if (ref.id == -1) { + break; + } + Actor *temp_r0_5 = gActorManager->GetActor(&ref); + if (temp_r0_5 == NULL) { + break; + } + Vec3p sp24 = {temp_r0_5->mPos.x, temp_r0_5->mPos.y, temp_r0_5->mPos.z}; + sp24.y = snakeSpawnPos.y; + if (Vec3p_Distance(&sp24, &snakeSpawnPos) < FLOAT_TO_Q20(1.5)) { + i -= 1; + failedSpawns += 1; + continue; + } + break; + } + } + gActorSpawner->Spawn(ActorTypeId_Rope, &snakeSpawnPos, &spawnOptions, &mTrapActors[i]); + } + return; + } +} + +ARM void ActorSwitchObject::func_ov000_0209032c() { unk32 i; for (i = this->mUnk_164; i < this->mUnk_168; i++) { gMapManager->func_ov00_02084b38(i, this->mUnk_16c, 0); } } -ActorSwitchObject::~ActorSwitchObject() {} +ARM ActorSwitchObject::~ActorSwitchObject() {} diff --git a/src/00_Core/Map/Course.cpp b/src/00_Core/Map/Course.cpp index fed9a442..f31005e0 100644 --- a/src/00_Core/Map/Course.cpp +++ b/src/00_Core/Map/Course.cpp @@ -6,7 +6,7 @@ char *Course::SetCourseName(char *src) {} void Course::func_ov00_0207ca78(unk32 param_2, unk8 param_3, unk32 param_4) {} bool Course::func_ov00_0207caa8(s32 param_2, unk32 *param_3, unk8 *param_4) {} unk32 Course::func_ov00_0207cb30(s32 param_2) {} -void Course::FindMapGridPos(Vec2b *pos, Course *param_2, u32 map) {} +TilePos Course::FindMapGridPos(u32 map) {} Vec3p *Course::FindMapCenter(unk32 map) {} void Course::func_ov00_0207cbe8(s32 param_2) {} unk8 Course::func_ov00_0207cc24(s32 param_2) {} diff --git a/src/00_Core/Map/MapBase.cpp b/src/00_Core/Map/MapBase.cpp index 1e8a1cce..555024bc 100644 --- a/src/00_Core/Map/MapBase.cpp +++ b/src/00_Core/Map/MapBase.cpp @@ -18,10 +18,10 @@ s32 MapBase::func_ov00_0207e28c(s32 param_2) {} void MapBase::vfunc_b4() {} void MapBase::vfunc_48() {} unk32 MapBase::vfunc_50() {} -unk32 MapBase::vfunc_54(Vec2b *param_1) {} -unk32 MapBase::vfunc_58(Vec2b *param_1, int param_2) {} +unk32 MapBase::vfunc_54(TilePos *param_1) {} +unk32 MapBase::vfunc_58(TilePos *param_1, int param_2) {} unk32 MapBase::vfunc_5c() {} -unk32 MapBase::vfunc_60(Vec2b *param_1) {} +unk32 MapBase::vfunc_60(TilePos *param_1) {} unk32 MapBase::vfunc_64() {} unk32 MapBase::vfunc_68(Vec3p *param_1, bool param_2) {} unk8 MapBase::func_ov00_0207e940(unk8 *param_1) {} @@ -40,22 +40,22 @@ void MapBase::vfunc_a0() {} unk32 MapBase::vfunc_a4(unk8 *param_1) {} void MapBase::vfunc_a8() {} void MapBase::vfunc_ac() {} -unk32 *MapBase::vfunc_78(Vec2b *param_1) {} +unk32 *MapBase::vfunc_78(TilePos *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(Vec2b *param_2, unk32 param_3) {} +unk8 MapBase::vfunc_90(TilePos *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) {} -void MapBase::func_ov00_0207f588(Vec2s *param_1, MapBase *param_2, Vec2b *param_3, unk32 param_4) {} +void MapBase::func_ov00_0207f588(Vec2s *param_1, MapBase *param_2, TilePos *param_3, unk32 param_4) {} void MapBase::func_ov00_0207f630(Vec2s *param_2, Vec3p *param_3) {} unk8 MapBase::GetTileStartX(unk32 x) {} unk8 MapBase::GetTileStartZ(unk32 z) {} s32 MapBase::GetTileEndX(unk32 x) {} s32 MapBase::GetTileEndZ(unk32 z) {} -void MapBase::GetTileBounds(Vec2b *tilePos, AABB *bounds) {} +void MapBase::GetTileBounds(TilePos *tilePos, AABB *bounds) {} s32 MapBase::GetClampedTileX(s32 worldX) {} s32 MapBase::GetClampedTileY(s32 worldZ) {} unk8 MapBase::GetTileX(s32 worldX) {} @@ -100,8 +100,8 @@ bool MapBase::AddUnk_130(s32 param_2) {} bool MapBase::func_ov00_020809b8(s32 param_2) {} unk8 MapBase::func_ov00_02080a78(Vec3p *param_2) {} void MapBase_Unk2::func_ov00_02080ad0(TriggerBase **param_2, TriggerBase **param_3) {} -unk8 MapBase::func_ov00_02080b24(Vec2b *param_2) {} -void MapBase::func_ov00_02080d08(Vec2b *param_2) {} +unk8 MapBase::func_ov00_02080b24(TilePos *param_2) {} +void MapBase::func_ov00_02080d08(TilePos *param_2) {} void MapBase::vfunc_bc() {} void MapBase::vfunc_98(unk32 param_2, unk32 param_3, unk32 param_4) {} void MapBase::vfunc_c0() {} diff --git a/src/00_Core/Map/MapManager.cpp b/src/00_Core/Map/MapManager.cpp index 22f15cf8..f2c38569 100644 --- a/src/00_Core/Map/MapManager.cpp +++ b/src/00_Core/Map/MapManager.cpp @@ -20,7 +20,8 @@ #include "Save/AdventureFlags.hpp" #include "Unknown/UnkStruct_02037750.hpp" #include "Unknown/UnkStruct_020eec68.hpp" -#include "stdio.h" + +#include extern bool func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Vec4p *param4); @@ -46,7 +47,6 @@ 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(unk32 *param_1, unk32 *param_2); extern s32 *func_ov000_02096418(s32 *param_1); -extern void func_ov000_020c3348(ActorSpawnOptions *param_1); extern void func_ov015_021849a4(unk32 *param_1); // extern MapBase *func_ov018_0215b4a0(MapBase *param_1, unk32 param_2, unk32 param_3); @@ -135,14 +135,10 @@ extern UnkStruct_0202e894 *data_027e0ce4; extern unk32 *data_027e0d3c; extern UnkStruct_027e0f68 *data_027e0f68; extern unk32 *data_027e0f70; -extern unk32 data_ov000_020e24a4; extern unk32 data_ov000_020e24b4; -extern unk32 data_ov000_020e24c4; -extern MapManager_Unk2 data_ov000_020e24c8[]; -extern MapManager_Unk2 data_ov000_020e24e8[]; extern unk32 data_ov015_02190458; -// static char *gShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"}; +static char *sShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"}; MapManager::MapManager() { /*MapManager_Unk1 *object; @@ -189,6 +185,20 @@ MapManager::MapManager() { return;*/ } +static const MapManager_Unk3 data_ov000_020e24c4(0x5fff); +static const MapManager_Unk1 data_ov000_020e24c8[4] = { + MapManager_Unk1(0, 0x60), + MapManager_Unk1(0, 0), + MapManager_Unk1(0x80, 0x60), + MapManager_Unk1(0x80, 0), +}; +static const MapManager_Unk2 data_ov000_020e24e8[4] = { + MapManager_Unk2(-FLOAT_TO_Q20(128.0), -FLOAT_TO_Q20(96.0)), + MapManager_Unk2(-FLOAT_TO_Q20(128.0), -FLOAT_TO_Q20(96.0)), + MapManager_Unk2(-FLOAT_TO_Q20(128.0), -FLOAT_TO_Q20(96.0)), + MapManager_Unk2(-FLOAT_TO_Q20(128.0), -FLOAT_TO_Q20(96.0)), +}; + MapManager::~MapManager() {} ARM void MapManager::GetCourseDungeonProgress(CourseProgress *param_2) { @@ -560,14 +570,13 @@ ARM void MapManager::func_ov00_02082af4() { } ARM bool MapManager::func_ov00_02082b3c(FlagsUnk2 *param_2) { - Vec2b mapGridPos; u8 entranceId; bool cmp; ActorManager *actorManager; u16 var1; u32 var2; - Course::FindMapGridPos(&mapGridPos, this->mCourse, param_2->mUnk_04.mUnk_0e); + TilePos mapGridPos = this->mCourse->FindMapGridPos(param_2->mUnk_04.mUnk_0e); if (mapGridPos.x != this->GetCurrentMapPosX() || mapGridPos.y != this->GetCurrentMapPosY() || (param_2->mUnk_04.mUnk_00.y == 1 && data_027e0d38->mUnk_14 == 1) || param_2->mUnk_04.mUnk_11 != 0) { @@ -629,7 +638,7 @@ ARM u32 MapManager::func_ov00_02082d74(unk32 param_2) { return func_ov000_02078bc4(param_2); } -ARM void MapManager::func_ov00_02082d84(Vec2b *param_2, s32 *param_3, s32 *param_4) { +ARM void MapManager::func_ov00_02082d84(TilePos *param_2, s32 *param_3, s32 *param_4) { s32 mapWidth = this->GetMapWidth(); u32 uVar3 = CoDivide64By32(0x100000, mapWidth << 0xc); s32 mapHeight = this->GetMapHeight(); @@ -646,7 +655,6 @@ ARM bool MapManager::func_ov00_02082e1c(s32 *param_2, s32 *param_3) { Vec2p mapScreenPos; u8 uVar8; Vec3p local_28; - Vec2b local_4a; Vec3p local_4c; Course *course; bool bVar1; @@ -678,10 +686,10 @@ ARM bool MapManager::func_ov00_02082e1c(s32 *param_2, s32 *param_3) { if (!this->mCourse->GetMapScreenPos(bVar1, &mapScreenPos.x, &mapScreenPos.y)) { this->mCourse->GetMapScreenPos(uVar8, &mapScreenPos.x, &mapScreenPos.y); - Course::FindMapGridPos(&local_4a, this->mCourse, uVar8); - MapManager::func_ov00_02083a54(&local_4a, this, &local_28, local_4a.x, local_4a.y); - uVar8 = this->mCourse->GetScreenMapCellSizeX(); - lVar3 = (int) ((u32) local_4c.x << 0xc) * (int) uVar8 + 0x800; + TilePos local_4a = this->mCourse->FindMapGridPos(uVar8); + local_4a = this->func_ov00_02083a54(&local_28, local_4a.x, local_4a.y); + uVar8 = this->mCourse->GetScreenMapCellSizeX(); + lVar3 = (int) ((u32) local_4c.x << 0xc) * (int) uVar8 + 0x800; *param_2 = mapScreenPos.y + ((int) (((u32) lVar3 >> 0xc | (int) (lVar3 >> 0x20) * 0x100000) + 0x800) >> 0xc); uVar8 = this->mCourse->GetScreenMapCellSizeY(); } else { @@ -713,7 +721,7 @@ ARM bool MapManager::func_ov00_02082e1c(s32 *param_2, s32 *param_3) { } ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { - Vec2b auStack_2c[18]; + TilePos auStack_2c[18]; Vec3p local_1c; Vec3p local_28; unk32 pMVar1; @@ -726,8 +734,8 @@ ARM void MapManager::func_ov00_0208306c(s32 *param_2, s32 *param_3) { pMVar1 = -2; } - local_1c = gPlayerPos; - this->func_ov00_02083a1c(auStack_2c, this, &local_1c); + local_1c = gPlayerPos; + auStack_2c[0] = this->func_ov00_02083a1c(&local_1c); this->func_ov00_02082d84(auStack_2c, param_2, param_3); if (pMVar3 == -3 || pMVar3 == pMVar1) { @@ -916,8 +924,8 @@ ARM void MapManager::func_ov00_02083524(Vec3p *param_2, unk32 param_3, unk32 par param_2->z = mapCenter->z; } -ARM void MapManager::func_ov00_02083560(Vec2b *param_1, MapManager *param_2, u32 param_3) { - param_2->mCourse->FindMapGridPos(param_1, param_2->mCourse, param_3); +ARM TilePos MapManager::func_ov00_02083560(u32 param_3) { + return this->mCourse->FindMapGridPos(param_3); } ARM u8 MapManager::func_ov00_02083570(u8 param_2, u8 param_3) { @@ -1120,47 +1128,31 @@ ARM s32 MapManager::func_ov00_020839f8(s32 param_2) { return this->mMap->GetClampedTileY(param_2 - this->GetMapCenterZ()); } -ARM void MapManager::func_ov00_02083a1c(Vec2b *param_1, MapManager *param_2, Vec3p *param_3) { - 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 TilePos MapManager::func_ov00_02083a1c(Vec3p *param_3) { + s8 y = this->func_ov00_020839f8(param_3->z); + s8 x = this->func_ov00_020839d4(param_3->x); + return TilePos(x, y); } -ARM void MapManager::func_ov00_02083a54(Vec2b *param_1, MapManager *param_2, Vec3p *param_3, s32 param_4, unk32 param_5) { - unk8 uVar2; - unk8 uVar3; - s32 iVar4; +ARM TilePos MapManager::func_ov00_02083a54(Vec3p *param_3, s32 param_4, unk32 param_5) { Vec3p VStack_20; u32 uVar5; - Vec3p *piVar6; Vec3p local_2c; Vec3p local_38; - if (param_2->GetCourseData_Unk_25c() != 0) { - uVar5 = (param_4 == -1 || param_5 == 0xffffffff) ? param_2->func_ov00_02082d08() - : uVar5 = param_2->mCourse->mMapGrid[param_4][param_5]; + if (this->GetCourseData_Unk_25c() != 0) { + uVar5 = (param_4 == -1 || param_5 == 0xffffffff) ? this->func_ov00_02082d08() + : uVar5 = this->mCourse->mMapGrid[param_4][param_5]; - if (param_2->IsMapInMainGrid(uVar5)) { - param_2->func_ov00_02083524(&VStack_20, param_4, param_5); + if (this->IsMapInMainGrid(uVar5)) { + this->func_ov00_02083524(&VStack_20, param_4, param_5); local_38 = *param_3; Vec3p_Sub(&local_38, &VStack_20, &local_2c); - uVar2 = param_2->mMap->GetClampedTileY(local_2c.z); - uVar3 = param_2->mMap->GetClampedTileX(local_2c.x); - param_1->x = uVar3; - param_1->y = uVar2; - return; + return TilePos(this->mMap->GetClampedTileX(local_2c.x), this->mMap->GetClampedTileY(local_2c.z)); } - uVar2 = param_2->func_ov00_020839f8(param_3->z); - uVar3 = param_2->func_ov00_020839d4(param_3->x); - param_1->x = uVar3; - param_1->y = uVar2; - return; + return TilePos(this->func_ov00_020839d4(param_3->x), this->func_ov00_020839f8(param_3->z)); } - uVar2 = param_2->func_ov00_020839f8(param_3->z); - uVar3 = param_2->func_ov00_020839d4(param_3->x); - param_1->x = uVar3; - param_1->y = uVar2; + return TilePos(this->func_ov00_020839d4(param_3->x), this->func_ov00_020839f8(param_3->z)); } ARM s32 MapManager::GetTileStartX(unk32 x) { @@ -1187,7 +1179,7 @@ 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, TilePos param_3) { Vec3p local_28; param_2->x = this->func_ov00_02083c24(param_3.x); @@ -1196,13 +1188,13 @@ 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(Vec3p *param_2, Vec2b param_3, s32 param_4, u32 param_5) { +ARM void MapManager::func_ov00_02083ce8(Vec3p *param_2, TilePos param_3, s32 param_4, u32 param_5) { u32 uVar2; u8 uVar3; u8 uVar4; Vec3p local_2c; Vec3p local_38; - Vec2b local_8; + TilePos local_8; if (GetCourseData_Unk_25c()) { if (param_4 == -1 || param_5 == -1) { @@ -1229,17 +1221,17 @@ ARM void MapManager::func_ov00_02083ce8(Vec3p *param_2, Vec2b param_3, s32 param } ARM s32 MapManager::func_ov00_02083e34(unk8 param_2, unk8 param_3, unk32 param_4) { - Vec2b local_8; + TilePos local_8; 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) { +ARM unk32 MapManager::MapData_vfunc_60(TilePos *param_1) { return this->mMap->vfunc_60(param_1); } -ARM bool MapManager::func_ov00_02083e70(Vec2b *param_2) { +ARM bool MapManager::func_ov00_02083e70(TilePos *param_2) { switch (this->MapData_vfunc_54(param_2)) { case 0x1b: case 0x2b: @@ -1268,7 +1260,7 @@ ARM s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, bool para ARM unk32 MapManager::func_ov00_02083f44(Vec3p *param_2, bool param_3) { q20 x = param_2->x; q20 z = param_2->z; - Vec3p local_18 = {x, data_ov000_020e24a4, z}; + Vec3p local_18 = {x, data_ov000_020e24c4.mUnk_0, z}; return this->func_ov00_02083ef8(param_2, &local_18, param_3); } @@ -1299,7 +1291,7 @@ ARM void MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_1 = 0; } -void MapManager::GetTileWorldBounds(Vec2b *tile, AABB *tileBounds) { +void MapManager::GetTileWorldBounds(TilePos *tile, AABB *tileBounds) { int iVar1; Vec3p local_20; @@ -1312,24 +1304,24 @@ void MapManager::GetTileWorldBounds(Vec2b *tile, AABB *tileBounds) { Vec3p_Add(&tileBounds->max, &local_20, &tileBounds->max); } -unk32 MapManager::MapData_vfunc_54(Vec2b *param_1) { +unk32 MapManager::MapData_vfunc_54(TilePos *param_1) { return this->mMap->vfunc_54(param_1); } ARM unk32 MapManager::func_ov00_020840a0(u8 param_2, u8 param_3) { // Correct param types? - Vec2b vec; + TilePos vec; vec.x = param_2; vec.y = param_3; return this->mMap->vfunc_54(&vec); } // Returns UnkStruct_02085594* -unk32 *MapManager::MapData_vfunc_78(Vec2b *param_1) { +unk32 *MapManager::MapData_vfunc_78(TilePos *param_1) { return this->mMap->vfunc_78(param_1); } -unk32 MapManager::func_ov00_020840dc(Vec2b *param_1) { +unk32 MapManager::func_ov00_020840dc(TilePos *param_1) { UnkStruct_02037750 *piVar1; // placeholder struct until I can find the real struct piVar1 = (UnkStruct_02037750 *) this->MapData_vfunc_78(param_1); @@ -1362,11 +1354,11 @@ void MapManager::func_ov00_0208413c(unk32 param_2) { this->mMap->func_ov00_0207f948(param_2); } -unk8 MapManager::MapData_vfunc_58(Vec2b *param_1, int param_2) { +unk8 MapManager::MapData_vfunc_58(TilePos *param_1, int param_2) { this->mMap->vfunc_58(param_1, param_2); } -ARM s32 MapManager::func_ov00_02084164(Vec2b *param_2) { +ARM s32 MapManager::func_ov00_02084164(TilePos *param_2) { if (this->mMap->vfunc_58(param_2, 7) != 0) { return 0; } @@ -1802,9 +1794,6 @@ u8 MapManager::func_ov00_02084a50() { void MapManager::SpawnNPC(Vec3p *pos, unk32 param_3, unk32 param_4) { ActorSpawnOptions actorSpawnOptions; - 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); @@ -1954,9 +1943,9 @@ 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_2 and param_3 aren't both part of a TilePos * // param_4 short or int? - Vec2b vec; + TilePos vec; vec.x = param_2; vec.y = param_3; this->mMap->vfunc_90(&vec, param_4); @@ -2021,11 +2010,11 @@ unk32 MapManager::func_ov00_02084ebc(Vec3p *param_2) { int *piVar1; int iVar2; unk32 dVar3; // dword - Vec2b auStack_18[4]; // undefined type + TilePos auStack_18[4]; // undefined type u32 uStack_14; - this->func_ov00_02083a1c(auStack_18, this, param_2); - piVar1 = (int *) this->MapData_vfunc_78(auStack_18); + auStack_18[0] = this->func_ov00_02083a1c(param_2); + piVar1 = (int *) this->MapData_vfunc_78(auStack_18); if (piVar1 != (int *) 0x0) { // iVar2 = (**(code **) (*piVar1 + 0x1c))(); if (iVar2 < 0x39) { @@ -2288,13 +2277,12 @@ ARM unk32 MapManager::func_ov00_02085594(Vec3p *param_2) { unk32 dVar3; unk32 uVar4; bool bVar5; - Vec2b local_28; u32 uStack_24; Vec3p VStack_20; - this->func_ov00_02083a1c(&local_28, this, param_2); - piVar1 = (UnkStruct_02085594 *) this->MapData_vfunc_78(&local_28); - bVar5 = true; + TilePos local_28 = this->func_ov00_02083a1c(param_2); + piVar1 = (UnkStruct_02085594 *) this->MapData_vfunc_78(&local_28); + bVar5 = true; if (piVar1 != NULL) { *param_2 = piVar1->mUnk_14; switch (piVar1->vfunc_1c()) { @@ -2359,10 +2347,9 @@ ARM unk32 MapManager::func_ov00_02085594(Vec3p *param_2) { ARM unk32 MapManager::func_ov00_0208583c(MapManager *param_1, Vec3p *param_2, unk32 param_3) { UnkStruct_02085594 *piVar1; - Vec2b auStack_10; - param_1->func_ov00_02083a1c(&auStack_10, param_1, param_2); - piVar1 = (UnkStruct_02085594 *) param_1->MapData_vfunc_78(&auStack_10); + TilePos auStack_10 = param_1->func_ov00_02083a1c(param_2); + piVar1 = (UnkStruct_02085594 *) param_1->MapData_vfunc_78(&auStack_10); if (piVar1 == NULL) { return -1; } @@ -2382,17 +2369,17 @@ unk32 MapManager::func_ov00_020858b0(MapManager *param_1, Vec3p *param_2, unk32 UnkStruct_02085594 *piVar5; int playerPosY; unk32 local_38; - Vec2b local_28; + TilePos local_28; if (param_3 == 1) { func_ov000_02088000(data_027e0f64->mUnk_4, 7); } else { func_ov000_02088000(data_027e0f64->mUnk_4, 6); } - mapWidth = param_1->GetMapWidth(); - mapHeight = param_1->GetMapHeight(); - local_38 = -1; - param_1->func_ov00_02083a1c(&local_28, param_1, param_2); + mapWidth = param_1->GetMapWidth(); + mapHeight = param_1->GetMapHeight(); + local_38 = -1; + local_28 = param_1->func_ov00_02083a1c(param_2); playerPosY = gPlayerPos.y; for (u8 x = local_28.x - 1; x <= (int) (local_28.x + 1); x++) { if ((x > -1) && (x < mapWidth)) { @@ -2420,9 +2407,9 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) { u32 uVar4; u32 uVar5; u32 uVar6; - Vec2b uStack_2c; - Vec2b auStack_2a[2]; - Vec2b aVStack_28[2]; + TilePos uStack_2c; + TilePos auStack_2a[2]; + TilePos aVStack_28[2]; unk16 auStack_24[4]; unk32 auStack_1c[4]; unk32 uStack_18; @@ -2433,8 +2420,8 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) { if (param_3 != 2 && param_3 != 3) { return -1; } - this->func_ov00_02083a1c(auStack_2a, this, param_2); - piVar1 = (UnkStruct_02085594 *) this->MapData_vfunc_78(auStack_2a); + auStack_2a[0] = this->func_ov00_02083a1c(param_2); + piVar1 = (UnkStruct_02085594 *) this->MapData_vfunc_78(auStack_2a); if (piVar1 == NULL) { return -1; } @@ -2448,8 +2435,8 @@ s32 MapManager::func_ov00_02085a34(Vec3p *param_2, s32 param_3) { iVar2 = piVar1->vfunc_38(param_3); return iVar2; } - this->func_ov00_02083a1c(aVStack_28, this, param_2); - iVar2 = this->func_ov00_02084ebc(param_2); + aVStack_28[0] = this->func_ov00_02083a1c(param_2); + iVar2 = this->func_ov00_02084ebc(param_2); if (iVar2 == 0) { return -1; } @@ -2658,7 +2645,7 @@ unk8 MapManager::func_ov00_02086044(Vec3p *param_2, Vec3p *param_3, unk32 param_ int *piVar9; Vec3p *pVVar10; int iVar11; - Vec2b local_c6; + TilePos local_c6; unk32 auStack_c4[4]; Vec3p iStack_c0; Vec3p local_b0; diff --git a/src/00_Core/Player/LinkStateMove.cpp b/src/00_Core/Player/LinkStateMove.cpp index a0980773..a7e64be0 100644 --- a/src/00_Core/Player/LinkStateMove.cpp +++ b/src/00_Core/Player/LinkStateMove.cpp @@ -1,4 +1,5 @@ #include "Player/LinkStateMove.hpp" +#include "Unknown/UnkStruct_020eec9c.hpp" unk32 LinkStateMove::data_ov000_020e56f0 = 0x800; @@ -19,9 +20,6 @@ THUMB void LinkStateMove::CreateDebugHierarchy() { debugHierarchy->GetChildNode(1, description, id, &data_ov000_020e56f0, 8, 0, 0x1000, 0); } -extern u32 data_ov000_020eec9c; -extern "C" void func_ov000_020d77e4(void *param1, s32 param2); - ARM void LinkStateMove::OnStateEnter() { this->mUnk_0c = 0; this->mUnk_10 = 0; @@ -36,7 +34,7 @@ ARM void LinkStateMove::OnStateEnter() { shield->UpdateInUse(1); PlayerBase::GetEquipSword()->func_ov000_020c06b0(-1); - func_ov000_020d77e4(&data_ov000_020eec9c, 0xD); + data_ov000_020eec9c.func_ov000_020d77e4(0xD); } ARM void LinkStateMove::OnStateLeave(s32 param1) { diff --git a/src/00_Core/Player/PlayerControl.cpp b/src/00_Core/Player/PlayerControl.cpp index 5476834e..1e5f5d98 100644 --- a/src/00_Core/Player/PlayerControl.cpp +++ b/src/00_Core/Player/PlayerControl.cpp @@ -14,6 +14,7 @@ #include "Player/PlayerBase.hpp" #include "Player/PlayerLinkBase.hpp" #include "Save/AdventureFlags.hpp" +#include "Unknown/UnkStruct_020eec9c.hpp" static char *sShipTypes[] = {"brg", "anc", "pdl", "hul", "can", "dco", "bow", "fnl"}; @@ -66,7 +67,7 @@ ARM Actor *PlayerControl::GetFollowActor() { return gActorManager->GetActor(&mFollowRef); } -ARM bool PlayerControl::func_ov00_020af01c(Vec2b *param1) { +ARM bool PlayerControl::func_ov00_020af01c(TilePos *param1) { if (mFollowing) { *param1 = mUnk_9c; return true; @@ -300,8 +301,7 @@ ARM void PlayerControl::func_ov00_020af6e4(Vec3p *param1, s32 param3, s32 param4 mFollowRef.Reset(); } - Vec2b unk; - MapManager::func_ov00_02083a1c(&unk, gMapManager, param1); + TilePos unk = gMapManager->func_ov00_02083a1c(param1); mUnk_9c = unk; mFollowing = true; mUnk_80 = false; @@ -376,8 +376,7 @@ ARM bool PlayerControl::func_ov00_020af778() { } } } else { - ActorRef ref; - ActorManager::func_ov00_020c3484(&ref, gActorManager, 0); + ActorRef ref = gActorManager->func_ov00_020c3484(0); mNextFollowRef = ref; if (mTouchDuration == 0) { mLastFollowRef = mNextFollowRef; @@ -475,9 +474,8 @@ ARM void PlayerControl::func_ov00_020afb6c() { iVar7 = 2; } } else { - local_3c.y = gPlayerPos.y; - Vec2b local_44 = mUnk_9c; - gMapManager->func_ov00_02083c7c(&local_3c, local_44); + local_3c.y = gPlayerPos.y; + gMapManager->func_ov00_02083c7c(&local_3c, mUnk_9c); iVar2 = 2; iVar7 = 3; } @@ -721,8 +719,7 @@ ARM bool PlayerControl::func_ov00_020b05e8(Vec3p *param1) { VStack_1c.z += MUL_Q20(COS(gPlayerAngle), FLOAT_TO_Q20(0.25)); } - Vec2b VStack_20; - MapManager::func_ov00_02083a1c(&VStack_20, gMapManager, &VStack_1c); + TilePos VStack_20 = gMapManager->func_ov00_02083a1c(&VStack_1c); VStack_1c.x += (gMapManager->func_ov00_02083c24(VStack_20.x) - VStack_1c.x) / 2; VStack_1c.z += (gMapManager->func_ov00_02083c50(VStack_20.y) - VStack_1c.z) / 2; Vec3p_Sub(&VStack_1c, playerPos, param1); @@ -1032,11 +1029,9 @@ ARM bool PlayerControl::IsNotTouching() { return !mTouch; } -extern u32 data_ov000_020eec9c[]; -extern "C" void func_ov000_020d77e4(u32 *param1, u32 param2); ARM bool PlayerControl::IsTouchingFast() { if (this->CheckTouchFast(1)) { - func_ov000_020d77e4(data_ov000_020eec9c, 0x17); + data_ov000_020eec9c.func_ov000_020d77e4(0x17); return true; } return false; diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index a8349c58..f7e855a8 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -3,12 +3,12 @@ #include "Map/MapManager.hpp" #include "Player/PlayerLinkBase.hpp" #include "System/Random.hpp" +#include "Unknown/UnkStruct_020eec9c.hpp" extern "C" { void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, bool); void func_ov005_02102c2c(u32 *param_1, int param_2, Vec3p *param_3, int param_4, int param_5, u32 param_6, int param_7, char param_8, char param_9, char param_10); -void func_ov000_020d7ad4(u32 *param1, u32 param2); } u16 GetRupeeValue(RupeeId id); @@ -16,7 +16,6 @@ static char *gShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", " extern u32 *data_ov014_021589d8; extern u32 data_ov000_020e9370[]; -extern u32 data_ov000_020eec9c[]; extern u32 **data_027e0fe0[]; ActorType ActorRupee::gType = ActorType(ActorTypeId_Rupee, (ActorCreateFunc) ActorRupee::Create, NULL); @@ -200,7 +199,7 @@ void ActorRupee::Update(bool param1) { break; } - func_ov000_020d7ad4(data_ov000_020eec9c, uVar3); + data_ov000_020eec9c.func_ov000_020d7ad4(uVar3); Kill(); } } diff --git a/src/14_Land/Actor/Player/ActorRefill.cpp b/src/14_Land/Actor/Player/ActorRefill.cpp index 426ac8db..ea448a42 100644 --- a/src/14_Land/Actor/Player/ActorRefill.cpp +++ b/src/14_Land/Actor/Player/ActorRefill.cpp @@ -4,6 +4,7 @@ #include "DTCM/UnkStruct_027e103c.hpp" #include "Item/ItemManager.hpp" #include "System/Random.hpp" +#include "Unknown/UnkStruct_020eec9c.hpp" static char *sShipTypes[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"}; @@ -75,8 +76,6 @@ ARM bool ActorRefill::Init() { return true; } -extern unk32 data_ov000_020eec9c; -extern "C" void func_ov000_020d7ad4(unk32 *param1, unk32 param2); ARM void ActorRefill::vfunc_14(u32 param1) { s32 temp_r0_4; s32 temp_r6; @@ -118,7 +117,7 @@ ARM void ActorRefill::vfunc_14(u32 param1) { ItemManager *itemManager = gItemManager; itemManager->GiveAmmo(this->GetAmmoItem(), mUnk_158); } - func_ov000_020d7ad4(&data_ov000_020eec9c, 0x100); + data_ov000_020eec9c.func_ov000_020d7ad4(0x100); this->func_ov014_02135364(3); } else { temp_r0_3 = mUnk_130; diff --git a/src/Main/Message/MessageManager.cpp b/src/Main/Message/MessageManager.cpp index bf1e30ca..f50dce30 100644 --- a/src/Main/Message/MessageManager.cpp +++ b/src/Main/Message/MessageManager.cpp @@ -237,7 +237,6 @@ ARM void MessageManager::func_0203690c(unk32 param_2) { UnkStruct_020397f8 *unk_28_0; UnkStruct_020397f8 *unk_28_2; UnkStruct_02038aa0 *pSVar4; - ActorRef actorRef; Actor *pActor; bool iVar1; bool iVar2; @@ -319,8 +318,8 @@ ARM void MessageManager::func_0203690c(unk32 param_2) { this->func_02036bbc(); if (this->mUnk_10 != 0) { - ActorManager::FindActorByType(&actorRef, gActorManager, data_0205691c[this->mUnk_10]); - pActor = gActorManager->GetActor(&actorRef); + ActorRef actorRef = gActorManager->FindActorByType(data_0205691c[this->mUnk_10]); + pActor = gActorManager->GetActor(&actorRef); if (pActor != NULL) { data_027e0ffc.func_ov000_020cec60(data_02056918[this->mUnk_10], &pActor->mPos, pActor, 0);