From b116e79e9f9b13684440eb6ef10ffc48c1260a37 Mon Sep 17 00:00:00 2001 From: Yanis <35189056+Yanis002@users.noreply.github.com> Date: Sun, 28 Jun 2026 15:29:34 +0200 Subject: [PATCH] Decompile overlay 1 (Part 2) (#91) * UnkStruct_027e09b8_001 OK * match func_ov001_020b7830 * fix build issues * UnkStruct_027e0cd8_001 49% * UnkStruct_027e0cd8_001 OK * fix build issues * UnkStruct_027e0cd8_0C_001 92% * port some MSL C++ headers from rb3 and key decomps * fix build issues * UnkStruct_027e0cd8_0C_001 98% --- config/eur/arm9/itcm/symbols.txt | 6 +- config/eur/arm9/overlays/ov000/symbols.txt | 108 ++-- config/eur/arm9/overlays/ov001/delinks.txt | 12 +- config/eur/arm9/overlays/ov001/relocs.txt | 34 +- config/eur/arm9/overlays/ov001/symbols.txt | 227 ++++---- config/eur/arm9/overlays/ov021/symbols.txt | 2 +- config/eur/arm9/overlays/ov026/symbols.txt | 10 +- config/eur/arm9/overlays/ov047/symbols.txt | 4 +- config/eur/arm9/overlays/ov088/symbols.txt | 2 +- config/eur/arm9/overlays/ov101/symbols.txt | 2 +- config/eur/arm9/symbols.txt | 10 +- config/jp/arm9/itcm/symbols.txt | 6 +- config/jp/arm9/overlays/ov000/symbols.txt | 114 ++-- config/jp/arm9/overlays/ov001/delinks.txt | 12 +- config/jp/arm9/overlays/ov001/relocs.txt | 38 +- config/jp/arm9/overlays/ov001/symbols.txt | 230 ++++---- config/jp/arm9/overlays/ov021/symbols.txt | 2 +- config/jp/arm9/overlays/ov026/symbols.txt | 12 +- config/jp/arm9/overlays/ov047/symbols.txt | 4 +- config/jp/arm9/overlays/ov084/symbols.txt | 6 +- config/jp/arm9/overlays/ov088/symbols.txt | 2 +- config/jp/arm9/overlays/ov089/symbols.txt | 4 +- config/jp/arm9/overlays/ov101/symbols.txt | 2 +- config/jp/arm9/symbols.txt | 10 +- include/Actor/ActorManager.hpp | 10 +- include/Cutscene/Cutscene.hpp | 2 +- include/Game/GameModeManager.hpp | 2 +- include/MainGame/AdventureMode.hpp | 2 +- include/MapObject/MapObjectManager.hpp | 13 +- include/Physics/AABB.hpp | 11 + include/Save/SaveFile.hpp | 4 +- include/Save/SaveManager.hpp | 2 +- include/System/SysNew.hpp | 7 +- include/TitleScreen/TitleScreen.hpp | 2 +- include/Unknown/Common.hpp | 12 + include/Unknown/UnkStruct_02049bac.hpp | 1 + include/Unknown/UnkStruct_0204a110.hpp | 2 + include/Unknown/UnkStruct_027e0960.hpp | 4 +- include/Unknown/UnkStruct_027e09a0.hpp | 8 +- include/Unknown/UnkStruct_027e09a4.hpp | 6 + include/Unknown/UnkStruct_027e09ac.hpp | 2 +- include/Unknown/UnkStruct_027e09b0.hpp | 16 + include/Unknown/UnkStruct_027e09b8.hpp | 130 ++++- include/Unknown/UnkStruct_027e09bc.hpp | 10 +- include/Unknown/UnkStruct_027e09c0.hpp | 8 +- include/Unknown/UnkStruct_027e0cd8.hpp | 392 ++++++++++--- include/Unknown/UnkStruct_027e0ce0.hpp | 10 +- include/Unknown/UnkStruct_027e0cec.hpp | 1 + include/Unknown/UnkStruct_ov000_02067bc4.hpp | 6 + include/Unknown/UnkStruct_ov000_020b50c0.hpp | 4 +- include/Unknown/UnkStruct_ov026_02138d10.hpp | 4 + include/Unknown/UnkSystem1.hpp | 17 + include/files.h | 37 +- include/global.h | 13 + include/math.hpp | 10 + libs/c/include/wstring.h | 2 + libs/cpp/include/algorithm | 83 +++ libs/cpp/include/compressed_pair.hpp | 156 +++++ libs/cpp/include/cstddef | 13 + libs/cpp/include/cstring | 39 ++ libs/cpp/include/cwchar | 82 +++ libs/cpp/include/default_delete.hpp | 28 + libs/cpp/include/exception | 38 ++ libs/cpp/include/iosfwd | 115 ++++ libs/cpp/include/iterator | 371 ++++++++++++ libs/cpp/include/limits | 131 +++++ libs/cpp/include/memory | 51 ++ libs/cpp/include/msl_unk.hpp | 3 + libs/cpp/include/new | 27 + libs/cpp/include/shared_ptr.hpp | 109 ++++ libs/cpp/include/stdexcept | 83 +++ libs/cpp/include/type_traits.hpp | 35 ++ .../type_traits/_category_function.hpp | 122 ++++ libs/cpp/include/type_traits/call_traits.hpp | 49 ++ libs/cpp/include/type_traits/category.hpp | 123 ++++ .../include/type_traits/integral_constant.hpp | 29 + libs/cpp/include/type_traits/intrinsics.hpp | 258 ++++++++ libs/cpp/include/type_traits/manip.hpp | 109 ++++ libs/cpp/include/type_traits/manip_2.hpp | 99 ++++ libs/cpp/include/type_traits/operation.hpp | 78 +++ libs/cpp/include/type_traits/property.hpp | 150 +++++ libs/cpp/include/type_traits/relationship.hpp | 54 ++ libs/cpp/include/type_traits/utility.hpp | 24 + libs/cpp/include/typeinfo | 56 ++ libs/cpp/include/vector | 549 +++++++++++++++++- libs/nns/include/nns/g3d/g3d.h | 1 + src/000_Second/Actor/ActorUnkEFIK.cpp | 2 +- src/000_Second/MapObject/MapObject.cpp | 9 +- .../MapObject/MapObjectMiniBlocks.cpp | 4 +- src/001_SceneInit/Actor/ActorManager_001.cpp | 22 +- src/001_SceneInit/UnkStruct_027e09b8_001.cpp | 85 +++ src/001_SceneInit/UnkStruct_027e0cd8_001.cpp | 492 ++++++++++++++++ .../UnkStruct_027e0cd8_0C_001.cpp | 488 ++++++++++++++++ .../UnkStruct_027e0cd8_0C_148_154_001.cpp | 0 src/017_CourseExec/CargoManager_017.cpp | 2 +- src/018_StartUp/StartUpInitializers.cpp | 2 +- src/024_MainGame/Actor/ActorUnkOBPC.cpp | 4 +- .../Game/AdventureModeManager_024.cpp | 4 +- .../Game/AdventureModeManager_184_024.cpp | 4 +- src/024_MainGame/Train/UnkDataStruct4.cpp | 8 +- .../Train/UnkStruct_027e0d00_20.cpp | 7 +- src/031_Land/Actor/ActorItemDrop.cpp | 2 +- src/031_Land/Actor/ActorRupee.cpp | 4 +- src/031_Land/Actor/ActorUnkNORE.cpp | 2 +- src/031_Land/MapObject/MapObjectChestBase.cpp | 4 +- .../MapObject/MapObjectDoorDangerSpawn.cpp | 12 +- .../PlayerSceneChange.cpp | 8 +- src/Main/Game/GameModeManagerBase.cpp | 4 +- tools/configure.py | 1 - tools/objdiff_config.py | 1 + 110 files changed, 5210 insertions(+), 635 deletions(-) create mode 100644 include/Physics/AABB.hpp create mode 100644 include/Unknown/UnkStruct_027e09b0.hpp create mode 100644 libs/cpp/include/algorithm create mode 100644 libs/cpp/include/compressed_pair.hpp create mode 100644 libs/cpp/include/cstddef create mode 100644 libs/cpp/include/cstring create mode 100644 libs/cpp/include/cwchar create mode 100644 libs/cpp/include/default_delete.hpp create mode 100644 libs/cpp/include/exception create mode 100644 libs/cpp/include/iosfwd create mode 100644 libs/cpp/include/iterator create mode 100644 libs/cpp/include/limits create mode 100644 libs/cpp/include/memory create mode 100644 libs/cpp/include/msl_unk.hpp create mode 100644 libs/cpp/include/new create mode 100644 libs/cpp/include/shared_ptr.hpp create mode 100644 libs/cpp/include/stdexcept create mode 100644 libs/cpp/include/type_traits.hpp create mode 100644 libs/cpp/include/type_traits/_category_function.hpp create mode 100644 libs/cpp/include/type_traits/call_traits.hpp create mode 100644 libs/cpp/include/type_traits/category.hpp create mode 100644 libs/cpp/include/type_traits/integral_constant.hpp create mode 100644 libs/cpp/include/type_traits/intrinsics.hpp create mode 100644 libs/cpp/include/type_traits/manip.hpp create mode 100644 libs/cpp/include/type_traits/manip_2.hpp create mode 100644 libs/cpp/include/type_traits/operation.hpp create mode 100644 libs/cpp/include/type_traits/property.hpp create mode 100644 libs/cpp/include/type_traits/relationship.hpp create mode 100644 libs/cpp/include/type_traits/utility.hpp create mode 100644 libs/cpp/include/typeinfo delete mode 100644 src/001_SceneInit/UnkStruct_027e0cd8_0C_148_154_001.cpp diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 55e8dc41..3d03f5d0 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -184,8 +184,8 @@ func_01ffe954 kind:function(arm,size=0x80) addr:0x01ffe954 func_01ffe9d4 kind:function(arm,size=0x308) addr:0x01ffe9d4 func_01ffecdc kind:function(arm,size=0xd0) addr:0x01ffecdc func_01ffedac kind:function(arm,size=0x48) addr:0x01ffedac -_ZN21UnkStruct_027e0cd8_0c13func_01ffedf4EP5Vec2b kind:function(arm,size=0x1c) addr:0x01ffedf4 -func_01ffee10 kind:function(arm,size=0x124) addr:0x01ffee10 +_ZN26UnkStruct_027e0cd8_0C_Base13func_01ffedf4EP5Vec2b kind:function(arm,size=0x1c) addr:0x01ffedf4 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_28EP7VecFx32ii kind:function(arm,size=0x124) addr:0x01ffee10 func_01ffef34 kind:function(arm,size=0x128) addr:0x01ffef34 func_01fff05c kind:function(arm,size=0x58) addr:0x01fff05c func_01fff0b4 kind:function(arm,size=0x94) addr:0x01fff0b4 @@ -212,7 +212,7 @@ _ZN9MapObject13func_01fff590Ei kind:function(arm,size=0x40) addr:0x01fff590 _ZN5Actor13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0 _ZN18UnkStruct_027e09b413func_01fff60cEiiihii kind:function(arm,size=0x8c) addr:0x01fff60c func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698 -_ZN16MapObjectManager13func_01fff6d0EP7VecFx32PiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0 +func_01fff6d0 kind:function(arm,size=0x74) addr:0x01fff6d0 func_01fff744 kind:function(arm,size=0x20) addr:0x01fff744 func_01fff764 kind:function(arm,size=0xec) addr:0x01fff764 func_01fff850 kind:function(arm,size=0x158) addr:0x01fff850 diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index c25ef019..dd078c79 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -219,8 +219,8 @@ _ZN32UnkStruct_027e0960_TableEntry_048vfunc_10Ev kind:function(arm,size=0xc) add _ZN32UnkStruct_027e0960_TableEntry_048vfunc_1CEv kind:function(arm,size=0x1c) addr:0x0205a0a8 func_ov000_0205a0c4 kind:function(thumb,size=0x12) addr:0x0205a0c4 _ZN18UnkStruct_027e0960D1Ev kind:function(thumb,size=0x44) addr:0x0205a0d8 -func_ov000_0205a11c kind:function(arm,size=0x4) addr:0x0205a11c -func_ov000_0205a120 kind:function(arm,size=0x40) addr:0x0205a120 +_ZN18UnkStruct_027e096019func_ov000_0205a11cEv kind:function(arm,size=0x4) addr:0x0205a11c +_ZN18UnkStruct_027e096019func_ov000_0205a120Ev kind:function(arm,size=0x40) addr:0x0205a120 _ZN18UnkStruct_027e096019func_ov000_0205a160Ev kind:function(arm,size=0x4) addr:0x0205a160 _ZN18UnkStruct_027e096019func_ov000_0205a164Ev kind:function(arm,size=0x40) addr:0x0205a164 func_ov000_0205a1a4 kind:function(arm,size=0x34) addr:0x0205a1a4 @@ -987,10 +987,10 @@ func_ov000_02070148 kind:function(arm,size=0x1c) addr:0x02070148 func_ov000_02070164 kind:function(arm,size=0xfc) addr:0x02070164 _ZN18UnkStruct_027e09a021GetSceneIndexFromNameEPKc kind:function(arm,size=0x3c) addr:0x02070260 _ZN18UnkStruct_027e09a014GetCourseEntryEj kind:function(arm,size=0xc) addr:0x0207029c -func_ov000_020702a8 kind:function(arm,size=0x14) addr:0x020702a8 +_ZN18UnkStruct_027e09a019func_ov000_020702a8Ej kind:function(arm,size=0x14) addr:0x020702a8 _ZN18UnkStruct_027e09a017GetRoomEntryIndexEv kind:function(arm,size=0x40) addr:0x020702bc _ZN18UnkStruct_027e09a012GetRoomEntryEji kind:function(arm,size=0x14) addr:0x020702fc -func_ov000_02070310 kind:function(arm,size=0x68) addr:0x02070310 +_ZN18UnkStruct_027e09a019func_ov000_02070310EjhPv kind:function(arm,size=0x68) addr:0x02070310 _ZN18UnkStruct_027e09a019func_ov000_02070378Ej kind:function(arm,size=0x44) addr:0x02070378 func_ov000_020703bc kind:function(arm,size=0x8) addr:0x020703bc func_ov000_020703c4 kind:function(arm,size=0x5c) addr:0x020703c4 @@ -1080,7 +1080,7 @@ func_ov000_0207246c kind:function(arm,size=0x204) addr:0x0207246c func_ov000_02072670 kind:function(arm,size=0x14) addr:0x02072670 func_ov000_02072684 kind:function(arm,size=0x18) addr:0x02072684 func_ov000_0207269c kind:function(arm,size=0x54) addr:0x0207269c -_ZN18UnkStruct_027e09ac19func_ov000_020726f0Eiii kind:function(arm,size=0x2d4) addr:0x020726f0 +_ZN18UnkStruct_027e09ac19func_ov000_020726f0Etii kind:function(arm,size=0x2d4) addr:0x020726f0 _ZN18UnkStruct_027e09ac19func_ov000_020729c4EP21UnkStruct_027e09ac_14ttss kind:function(arm,size=0x88) addr:0x020729c4 func_ov000_02072a4c kind:function(arm,size=0xbc) addr:0x02072a4c func_ov000_02072b08 kind:function(arm,size=0x1c) addr:0x02072b08 @@ -1090,7 +1090,7 @@ func_ov000_02072ba8 kind:function(arm,size=0x24) addr:0x02072ba8 func_ov000_02072bcc kind:function(arm,size=0xa4) addr:0x02072bcc func_ov000_02072c70 kind:function(arm,size=0x44) addr:0x02072c70 func_ov000_02072cb4 kind:function(arm,size=0x10) addr:0x02072cb4 -func_ov000_02072cc4 kind:function(arm,size=0x10) addr:0x02072cc4 +_ZN18UnkStruct_027e09b019func_ov000_02072cc4Eii kind:function(arm,size=0x10) addr:0x02072cc4 func_ov000_02072cd4 kind:function(arm,size=0x24) addr:0x02072cd4 func_ov000_02072cf8 kind:function(arm,size=0x20) addr:0x02072cf8 func_ov000_02072d18 kind:function(arm,size=0x10) addr:0x02072d18 @@ -1106,15 +1106,15 @@ func_ov000_02072fd0 kind:function(arm,size=0xb0) addr:0x02072fd0 func_ov000_02073080 kind:function(arm,size=0x2c) addr:0x02073080 _ZN17ActorUnk_vfunc_B0C1Ev kind:function(arm,size=0x58) addr:0x020730ac _ZN20stack_ov000_02073578C1Ev kind:function(arm,size=0x2c) addr:0x02073104 -func_ov000_02073130 kind:function(arm,size=0x4) addr:0x02073130 -_ZN19func_ov000_02073134D0Ev kind:function(arm,size=0x14) addr:0x02073134 +_ZN26UnkStruct_027e09b8_04_BaseD1Ev kind:function(arm,size=0x4) addr:0x02073130 +_ZN26UnkStruct_027e09b8_04_BaseD0Ev kind:function(arm,size=0x14) addr:0x02073134 func_ov000_02073148 kind:function(arm,size=0x4) addr:0x02073148 -func_ov000_0207314c kind:function(arm,size=0x8) addr:0x0207314c -func_ov000_02073154 kind:function(arm,size=0x14) addr:0x02073154 -func_ov000_02073168 kind:function(arm,size=0x4) addr:0x02073168 -func_ov000_0207316c kind:function(arm,size=0x4) addr:0x0207316c -func_ov000_02073170 kind:function(arm,size=0x8) addr:0x02073170 -func_ov000_02073178 kind:function(arm,size=0xc) addr:0x02073178 +_ZN26UnkStruct_027e09b8_04_Base8vfunc_08Ev kind:function(arm,size=0x8) addr:0x0207314c +_ZN26UnkStruct_027e09b8_04_Base8vfunc_0CEv kind:function(arm,size=0x14) addr:0x02073154 +_ZN26UnkStruct_027e09b8_04_Base8vfunc_14Ev kind:function(arm,size=0x4) addr:0x02073168 +_ZN26UnkStruct_027e09b8_04_Base8vfunc_18Ev kind:function(arm,size=0x4) addr:0x0207316c +_ZN26UnkStruct_027e09b8_04_Base8vfunc_1CEv kind:function(arm,size=0x8) addr:0x02073170 +_ZN26UnkStruct_027e09b8_04_Base8vfunc_20Ev kind:function(arm,size=0xc) addr:0x02073178 _ZN20MapObject_UnkStruct19vfunc2_00Ev kind:function(arm,size=0x4) addr:0x02073184 _ZN20MapObject_UnkStruct19vfunc2_04Ev kind:function(arm,size=0x4) addr:0x02073188 _ZN20MapObject_UnkStruct19vfunc2_08Ev kind:function(arm,size=0x4) addr:0x0207318c @@ -1132,18 +1132,18 @@ func_ov000_0207332c kind:function(arm,size=0x5c) addr:0x0207332c _ZN18UnkStruct_027e09b819func_ov000_02073388EPvi kind:function(arm,size=0xe8) addr:0x02073388 _ZN18UnkStruct_027e09b819func_ov000_02073470EPvi kind:function(arm,size=0x108) addr:0x02073470 _ZN18UnkStruct_027e09b819func_ov000_02073578EPvi kind:function(arm,size=0x98) addr:0x02073578 -func_ov000_02073610 kind:function(arm,size=0xb0) addr:0x02073610 -func_ov000_020736c0 kind:function(arm,size=0x10) addr:0x020736c0 +_ZN18UnkStruct_027e09b819func_ov000_02073610EPvi kind:function(arm,size=0xb0) addr:0x02073610 +_ZN18UnkStruct_027e09b819func_ov000_02074d78Ei kind:function(arm,size=0x10) addr:0x020736c0 func_ov000_020736d0 kind:function(arm,size=0x8) addr:0x020736d0 func_ov000_020736d8 kind:function(arm,size=0x8) addr:0x020736d8 -func_ov000_020736e0 kind:function(arm,size=0x38) addr:0x020736e0 +_ZN21UnkStruct_027e09b8_00C1Ev kind:function(arm,size=0x38) addr:0x020736e0 func_ov000_02073718 kind:function(arm,size=0x2c) addr:0x02073718 func_ov000_02073744 kind:function(arm,size=0x54) addr:0x02073744 func_ov000_02073798 kind:function(arm,size=0x60) addr:0x02073798 func_ov000_020737f8 kind:function(arm,size=0x94) addr:0x020737f8 func_ov000_0207388c kind:function(arm,size=0x124) addr:0x0207388c func_ov000_020739b0 kind:function(arm,size=0x1ac) addr:0x020739b0 -func_ov000_02073b5c kind:function(arm,size=0x64) addr:0x02073b5c +_ZN21UnkStruct_027e09b8_0019func_ov000_02073b5cEv kind:function(arm,size=0x64) addr:0x02073b5c func_ov000_02073bc0 kind:function(arm,size=0x114) addr:0x02073bc0 func_ov000_02073cd4 kind:function(arm,size=0x3c) addr:0x02073cd4 func_ov000_02073d10 kind:function(arm,size=0x170) addr:0x02073d10 @@ -1159,7 +1159,7 @@ func_ov000_0207446c kind:function(arm,size=0xc4) addr:0x0207446c func_ov000_02074530 kind:function(arm,size=0xbc) addr:0x02074530 _ZN19func_ov000_020745ecD1Ev kind:function(arm,size=0x28) addr:0x020745ec _ZN19func_ov000_02074614D0Ev kind:function(arm,size=0x30) addr:0x02074614 -func_ov000_02074644 kind:function(arm,size=0x6c) addr:0x02074644 +_ZN21UnkStruct_027e09b8_10C1Ev kind:function(arm,size=0x6c) addr:0x02074644 func_ov000_020746b0 kind:function(arm,size=0x8) addr:0x020746b0 func_ov000_020746b8 kind:function(arm,size=0xc) addr:0x020746b8 func_ov000_020746c4 kind:function(arm,size=0x50) addr:0x020746c4 @@ -1183,7 +1183,7 @@ func_ov000_02074f74 kind:function(arm,size=0x38) addr:0x02074f74 func_ov000_02074fac kind:function(arm,size=0x28) addr:0x02074fac func_ov000_02074fd4 kind:function(arm,size=0x14) addr:0x02074fd4 _ZN19func_ov000_02074fe8D0Ev kind:function(arm,size=0x40) addr:0x02074fe8 -func_ov000_02075028 kind:function(arm,size=0x54) addr:0x02075028 +_ZN25UnkSystem1_ov000_Derived3C1Ev kind:function(arm,size=0x54) addr:0x02075028 func_ov000_0207507c kind:function(arm,size=0x80) addr:0x0207507c func_ov000_020750fc kind:function(arm,size=0x28) addr:0x020750fc func_ov000_02075124 kind:function(arm,size=0x38) addr:0x02075124 @@ -1222,7 +1222,7 @@ func_ov000_0207715c kind:function(arm,size=0x2c) addr:0x0207715c func_ov000_02077188 kind:function(arm,size=0x14) addr:0x02077188 func_ov000_0207719c kind:function(arm,size=0x1c) addr:0x0207719c func_ov000_020771b8 kind:function(arm,size=0x10) addr:0x020771b8 -func_ov000_020771c8 kind:function(arm,size=0x188) addr:0x020771c8 +_ZN18UnkStruct_027e09bc19func_ov000_020771c8Ev kind:function(arm,size=0x188) addr:0x020771c8 func_ov000_02077350 kind:function(arm,size=0xf4) addr:0x02077350 func_ov000_02077444 kind:function(arm,size=0x24) addr:0x02077444 func_ov000_02077468 kind:function(arm,size=0x18) addr:0x02077468 @@ -1454,7 +1454,7 @@ func_ov000_0207d898 kind:function(arm,size=0x5c) addr:0x0207d898 func_ov000_0207d8f4 kind:function(arm,size=0x6c) addr:0x0207d8f4 func_ov000_0207d960 kind:function(arm,size=0x98) addr:0x0207d960 func_ov000_0207d9f8 kind:function(arm,size=0x48) addr:0x0207d9f8 -func_ov000_0207da40 kind:function(arm,size=0x20c) addr:0x0207da40 +_ZN18UnkStruct_027e09c019func_ov000_0207da40Ev kind:function(arm,size=0x20c) addr:0x0207da40 func_ov000_0207dc4c kind:function(arm,size=0x18) addr:0x0207dc4c func_ov000_0207dc64 kind:function(arm,size=0x24) addr:0x0207dc64 func_ov000_0207dc88 kind:function(arm,size=0x210) addr:0x0207dc88 @@ -1534,20 +1534,20 @@ func_ov000_0207faac kind:function(arm,size=0x8) addr:0x0207faac func_ov000_0207fab4 kind:function(arm,size=0x8) addr:0x0207fab4 func_ov000_0207fabc kind:function(arm,size=0x10) addr:0x0207fabc func_ov000_0207facc kind:function(arm,size=0x64) addr:0x0207facc -func_ov000_0207fb30 kind:function(arm,size=0x30) addr:0x0207fb30 +_ZN33UnkStruct_027e0cd8_0C_Base_148_00C1EP12ZMBEntryARAB kind:function(arm,size=0x30) addr:0x0207fb30 func_ov000_0207fb60 kind:function(arm,size=0x30) addr:0x0207fb60 func_ov000_0207fb90 kind:function(arm,size=0x8) addr:0x0207fb90 func_ov000_0207fb98 kind:function(arm,size=0x38) addr:0x0207fb98 func_ov000_0207fbd0 kind:function(arm,size=0x40) addr:0x0207fbd0 -func_ov000_0207fc10 kind:function(arm,size=0x44) addr:0x0207fc10 -func_ov000_0207fc54 kind:function(arm,size=0x3c) addr:0x0207fc54 +_ZN33UnkStruct_027e0cd8_0C_Base_148_01C1EP12ZMBEntryARAB kind:function(arm,size=0x44) addr:0x0207fc10 +_ZN33UnkStruct_027e0cd8_0C_Base_148_02C1EP12ZMBEntryARAB kind:function(arm,size=0x3c) addr:0x0207fc54 func_ov000_0207fc90 kind:function(arm,size=0x3c) addr:0x0207fc90 func_ov000_0207fccc kind:function(arm,size=0x44) addr:0x0207fccc -func_ov000_0207fd10 kind:function(arm,size=0x4) addr:0x0207fd10 -func_ov000_0207fd14 kind:function(arm,size=0x4) addr:0x0207fd14 -func_ov000_0207fd18 kind:function(arm,size=0x28) addr:0x0207fd18 -func_ov000_0207fd40 kind:function(arm,size=0x38) addr:0x0207fd40 -func_ov000_0207fd78 kind:function(arm,size=0x4) addr:0x0207fd78 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_24Ev kind:function(arm,size=0x4) addr:0x0207fd10 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_10Ev kind:function(arm,size=0x4) addr:0x0207fd14 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_0CEv kind:function(arm,size=0x28) addr:0x0207fd18 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_14Ev kind:function(arm,size=0x38) addr:0x0207fd40 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_18Ev kind:function(arm,size=0x4) addr:0x0207fd78 Unknown_func_ov000_0207fd7c kind:function(arm,size=0x40) addr:0x0207fd7c func_ov000_0207fdbc kind:function(arm,size=0x250) addr:0x0207fdbc func_ov000_0208000c kind:function(arm,size=0x5c) addr:0x0208000c @@ -1555,30 +1555,30 @@ func_ov000_02080068 kind:function(arm,size=0x18) addr:0x02080068 func_ov000_02080080 kind:function(arm,size=0x18) addr:0x02080080 func_ov000_02080098 kind:function(arm,size=0xc8) addr:0x02080098 func_ov000_02080160 kind:function(arm,size=0x20) addr:0x02080160 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_02080180EPv kind:function(arm,size=0x10) addr:0x02080180 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_02080180EPv kind:function(arm,size=0x10) addr:0x02080180 func_ov000_02080190 kind:function(arm,size=0x20) addr:0x02080190 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_020801b0EP5Vec2bii kind:function(arm,size=0x60) addr:0x020801b0 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020801b0EP5Vec2bii kind:function(arm,size=0x60) addr:0x020801b0 func_ov000_02080210 kind:function(arm,size=0x78) addr:0x02080210 func_ov000_02080288 kind:function(arm,size=0x64) addr:0x02080288 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_020802ecEtP7VecFx32 kind:function(arm,size=0x78) addr:0x020802ec +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020802ecEtP7VecFx32 kind:function(arm,size=0x78) addr:0x020802ec func_ov000_02080364 kind:function(arm,size=0x88) addr:0x02080364 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_020803ecEt kind:function(arm,size=0x150) addr:0x020803ec -_ZN21UnkStruct_027e0cd8_0c19func_ov000_0208053cEt kind:function(arm,size=0xe4) addr:0x0208053c +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020803ecEt kind:function(arm,size=0x150) addr:0x020803ec +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_0208053cEt kind:function(arm,size=0xe4) addr:0x0208053c func_ov000_02080620 kind:function(arm,size=0x38) addr:0x02080620 func_ov000_02080658 kind:function(arm,size=0xd8) addr:0x02080658 func_ov000_02080730 kind:function(arm,size=0x64) addr:0x02080730 func_ov000_02080794 kind:function(arm,size=0xac) addr:0x02080794 func_ov000_02080840 kind:function(arm,size=0x6c) addr:0x02080840 -func_ov000_020808ac kind:function(arm,size=0x20) addr:0x020808ac -func_ov000_020808cc kind:function(arm,size=0x8) addr:0x020808cc +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_2CEv kind:function(arm,size=0x20) addr:0x020808ac +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_3CEv kind:function(arm,size=0x8) addr:0x020808cc func_ov000_020808d4 kind:function(arm,size=0x20) addr:0x020808d4 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_020808f4EPvS0_i kind:function(arm,size=0x5c) addr:0x020808f4 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020808f4EPvS0_i kind:function(arm,size=0x5c) addr:0x020808f4 func_ov000_02080950 kind:function(arm,size=0x48) addr:0x02080950 func_ov000_02080998 kind:function(arm,size=0x40) addr:0x02080998 func_ov000_020809d8 kind:function(arm,size=0x6c) addr:0x020809d8 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_02080a44Ev kind:function(arm,size=0x18) addr:0x02080a44 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_02080a5cEP7VecFx32 kind:function(arm,size=0x1c) addr:0x02080a5c -_ZN21UnkStruct_027e0cd8_0c19func_ov000_02080a78EP7VecFx32 kind:function(arm,size=0x18) addr:0x02080a78 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_02080a44Ev kind:function(arm,size=0x18) addr:0x02080a44 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_02080a5cEP7VecFx32 kind:function(arm,size=0x1c) addr:0x02080a5c +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_02080a78EP7VecFx32 kind:function(arm,size=0x18) addr:0x02080a78 func_ov000_02080a90 kind:function(arm,size=0x1c) addr:0x02080a90 func_ov000_02080aac kind:function(arm,size=0x18) addr:0x02080aac func_ov000_02080ac4 kind:function(arm,size=0x68) addr:0x02080ac4 @@ -1593,11 +1593,11 @@ func_ov000_020810b8 kind:function(arm,size=0x7c) addr:0x020810b8 func_ov000_02081134 kind:function(arm,size=0x4) addr:0x02081134 func_ov000_02081138 kind:function(arm,size=0x18) addr:0x02081138 func_ov000_02081150 kind:function(arm,size=0x70) addr:0x02081150 -func_ov000_020811c0 kind:function(arm,size=0xb0) addr:0x020811c0 -func_ov000_02081270 kind:function(arm,size=0x24) addr:0x02081270 +_ZN21UnkStruct_027e0cd8_04C1Ev kind:function(arm,size=0xb0) addr:0x020811c0 +_ZN21UnkStruct_027e0cd8_04D1Ev kind:function(arm,size=0x24) addr:0x02081270 func_ov000_02081294 kind:function(arm,size=0x6c) addr:0x02081294 func_ov000_02081300 kind:function(arm,size=0x54) addr:0x02081300 -func_ov000_02081354 kind:function(arm,size=0x118) addr:0x02081354 +_ZN21UnkStruct_027e0cd8_0419func_ov000_02081354EPK15CourseListEntryPK29UnkStruct_func_ov000_020702a8P28SaveFile_00000_0000_Data_184b kind:function(arm,size=0x118) addr:0x02081354 func_ov000_0208146c kind:function(arm,size=0x80) addr:0x0208146c func_ov000_020814ec kind:function(arm,size=0x34) addr:0x020814ec func_ov000_02081520 kind:function(arm,size=0x54) addr:0x02081520 @@ -1629,7 +1629,7 @@ func_ov000_02081b84 kind:function(arm,size=0x18) addr:0x02081b84 func_ov000_02081b9c kind:function(arm,size=0x58) addr:0x02081b9c func_ov000_02081bf4 kind:function(arm,size=0x34) addr:0x02081bf4 _ZN18UnkStruct_027e0cd819func_ov000_02081c28Ev kind:function(arm,size=0x78) addr:0x02081c28 -func_ov000_02081ca0 kind:function(arm,size=0xa8) addr:0x02081ca0 +_ZN18UnkStruct_027e0cd819func_ov000_02081ca0Ev kind:function(arm,size=0xa8) addr:0x02081ca0 func_ov000_02081d48 kind:function(arm,size=0x10) addr:0x02081d48 func_ov000_02081d58 kind:function(arm,size=0x4) addr:0x02081d58 _ZN18UnkStruct_027e0cd819func_ov000_02081d5cEv kind:function(arm,size=0x20) addr:0x02081d5c @@ -1654,12 +1654,12 @@ _ZN19func_ov000_02082300D0Ev kind:function(arm,size=0x1c) addr:0x02082300 _ZN19func_ov000_0208231cD2Ev kind:function(arm,size=0x14) addr:0x0208231c func_ov000_02082330 kind:function(arm,size=0x4) addr:0x02082330 func_ov000_02082334 kind:function(arm,size=0x8) addr:0x02082334 -func_ov000_0208233c kind:function(arm,size=0x1c) addr:0x0208233c +_ZN29UnkStruct_027e0cd8_0C_Base_88C1Ev kind:function(arm,size=0x1c) addr:0x0208233c func_ov000_02082358 kind:function(arm,size=0x20) addr:0x02082358 func_ov000_02082378 kind:function(arm,size=0x30) addr:0x02082378 -func_ov000_020823a8 kind:function(arm,size=0x258) addr:0x020823a8 +_ZN29UnkStruct_027e0cd8_0C_Base_8819func_ov000_020823a8Ei kind:function(arm,size=0x258) addr:0x020823a8 func_ov000_02082600 kind:function(arm,size=0x1c) addr:0x02082600 -func_ov000_0208261c kind:function(arm,size=0x68) addr:0x0208261c +_ZN29UnkStruct_027e0cd8_0C_Base_8819func_ov000_0208261cEv kind:function(arm,size=0x68) addr:0x0208261c func_ov000_02082684 kind:function(arm,size=0x34) addr:0x02082684 func_ov000_020826b8 kind:function(arm,size=0x90) addr:0x020826b8 func_ov000_02082748 kind:function(arm,size=0x14) addr:0x02082748 @@ -2962,12 +2962,12 @@ func_ov000_020a77d0 kind:function(arm,size=0x5c) addr:0x020a77d0 _Z22Cutscene_GetParamEntryi kind:function(arm,size=0x14) addr:0x020a782c func_ov000_020a7840 kind:function(arm,size=0x84) addr:0x020a7840 _Z27Cutscene_IsAdventureFlagSeti kind:function(arm,size=0x44) addr:0x020a78c4 -func_ov000_020a7908 kind:function(arm,size=0xdc) addr:0x020a7908 +_ZN21UnkStruct_027e09b8_98C1Ev kind:function(arm,size=0xdc) addr:0x020a7908 func_ov000_020a79e4 kind:function(arm,size=0x6c) addr:0x020a79e4 func_ov000_020a7a50 kind:function(arm,size=0x20) addr:0x020a7a50 -func_ov000_020a7a70 kind:function(arm,size=0xa8) addr:0x020a7a70 +_ZN21UnkStruct_027e09b8_98D1Ev kind:function(arm,size=0xa8) addr:0x020a7a70 func_ov000_020a7b18 kind:function(arm,size=0x1c) addr:0x020a7b18 -func_ov000_020a7b34 kind:function(arm,size=0x74) addr:0x020a7b34 +_ZN21UnkStruct_027e09b8_9819func_ov000_020a7b34Ev kind:function(arm,size=0x74) addr:0x020a7b34 func_ov000_020a7ba8 kind:function(arm,size=0x98) addr:0x020a7ba8 func_ov000_020a7c40 kind:function(arm,size=0x4c) addr:0x020a7c40 func_ov000_020a7c8c kind:function(arm,size=0x24) addr:0x020a7c8c @@ -3503,10 +3503,10 @@ data_ov000_020b2244 kind:data(any) addr:0x020b2244 data_ov000_020b2264 kind:data(any) addr:0x020b2264 data_ov000_020b2290 kind:data(any) addr:0x020b2290 data_ov000_020b22a8 kind:data(any) addr:0x020b22a8 -data_ov000_020b22c0 kind:data(any) addr:0x020b22c0 +_ZTV21UnkStruct_027e09b8_04 kind:data(any) addr:0x020b22b8 data_ov000_020b22ec kind:data(any) addr:0x020b22ec _ZTV19data_ov000_020b2314 kind:data(any) addr:0x020b2314 -data_ov000_020b234c kind:data(any) addr:0x020b234c +_ZTV21UnkStruct_027e09b8_0C kind:data(any) addr:0x020b2344 data_ov000_020b2378 kind:data(any) addr:0x020b2378 _ZTV19data_ov000_020b237c kind:data(any) addr:0x020b237c _ZTV19data_ov000_020b2398 kind:data(any) addr:0x020b2398 @@ -3546,7 +3546,7 @@ data_ov000_020b28e0 kind:data(any) addr:0x020b28e0 data_ov000_020b28f8 kind:data(any) addr:0x020b28f8 data_ov000_020b290c kind:data(any) addr:0x020b290c data_ov000_020b2920 kind:data(any) addr:0x020b2920 -data_ov000_020b2940 kind:data(any) addr:0x020b2940 +_ZTV10UnkSystem8 kind:data(any) addr:0x020b2938 data_ov000_020b294c kind:data(any) addr:0x020b294c data_ov000_020b2954 kind:data(any) addr:0x020b2954 data_ov000_020b2964 kind:data(any) addr:0x020b2964 diff --git a/config/eur/arm9/overlays/ov001/delinks.txt b/config/eur/arm9/overlays/ov001/delinks.txt index 827a7de5..1fd4c110 100644 --- a/config/eur/arm9/overlays/ov001/delinks.txt +++ b/config/eur/arm9/overlays/ov001/delinks.txt @@ -18,16 +18,20 @@ src/001_SceneInit/CourseList.cpp: .bss start:0x020c2fe0 end:0x020c40e8 src/001_SceneInit/UnkStruct_027e09b8_001.cpp: + complete .text start:0x020b755c end:0x020b776c src/001_SceneInit/UnkStruct_027e0cd8_001.cpp: + complete .text start:0x020b776c end:0x020b81e0 + .data start:0x020c2970 end:0x020c29f4 src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp: - .text start:0x020b81e0 end:0x020b8e74 - -src/001_SceneInit/UnkStruct_027e0cd8_0C_148_154_001.cpp: - .text start:0x020b8e74 end:0x020b9270 + .text start:0x020b81e0 end:0x020b9270 + .init start:0x020c2838 end:0x020c28f0 + .ctor start:0x020c2904 end:0x020c2908 + .bss start:0x020c40e8 end:0x020c46f4 + .data start:0x020c29f4 end:0x020c2b3c src/001_SceneInit/ZeldaArrangeBinary.cpp: .text start:0x020b9270 end:0x020b94b0 diff --git a/config/eur/arm9/overlays/ov001/relocs.txt b/config/eur/arm9/overlays/ov001/relocs.txt index 1995e201..2f87d217 100644 --- a/config/eur/arm9/overlays/ov001/relocs.txt +++ b/config/eur/arm9/overlays/ov001/relocs.txt @@ -314,8 +314,8 @@ from:0x020b7620 kind:thumb_call_arm to:0x02011f3c module:main from:0x020b7628 kind:thumb_call_arm to:0x02074644 module:overlay(0) from:0x020b7634 kind:thumb_call_arm to:0x02011f3c module:main from:0x020b763c kind:thumb_call_arm to:0x020a7908 module:overlay(0) -from:0x020b7650 kind:load to:0x020b22c0 module:overlay(0) -from:0x020b7654 kind:load to:0x020b234c module:overlay(0) +from:0x020b7650 kind:load to:0x020b22b8 module:overlay(0) add:0x8 +from:0x020b7654 kind:load to:0x020b2344 module:overlay(0) add:0x8 from:0x020b7658 kind:load to:0x0204a088 module:main from:0x020b767e kind:thumb_call_arm to:0x02011ff4 module:main from:0x020b7690 kind:thumb_call_arm to:0x020a7a70 module:overlay(0) @@ -324,7 +324,7 @@ from:0x020b76a4 kind:thumb_call to:0x020b7760 module:overlay(1) from:0x020b76bc kind:load to:0x02028c60 module:main from:0x020b76cc kind:thumb_call_arm to:0x02073080 module:overlay(0) from:0x020b76d8 kind:thumb_call_arm to:0x02011f3c module:main -from:0x020b76e2 kind:thumb_call_arm to:0x02165974 module:overlays(88,91) +from:0x020b76e2 kind:thumb_call_arm to:0x02165974 module:overlay(88) from:0x020b76ee kind:thumb_call_arm to:0x02073610 module:overlay(0) from:0x020b76f4 kind:thumb_call to:0x020be998 module:overlay(1) from:0x020b76fc kind:load to:0x020b504c module:overlay(0) @@ -339,7 +339,7 @@ from:0x020b777c kind:thumb_call to:0x020b7784 module:overlay(1) from:0x020b7788 kind:thumb_call to:0x020b81c8 module:overlay(1) from:0x020b77a2 kind:thumb_call_arm to:0x0201667c module:main from:0x020b77be kind:thumb_call_arm to:0x020166f4 module:main -from:0x020b77e4 kind:load to:0x020b2940 module:overlay(0) +from:0x020b77e4 kind:load to:0x020b2938 module:overlay(0) add:0x8 from:0x020b77e8 kind:load to:0x027e09bc module:dtcm from:0x020b77f8 kind:thumb_call_arm to:0x02081270 module:overlay(0) from:0x020b77fe kind:thumb_call_arm to:0x02011ff4 module:main @@ -433,7 +433,7 @@ from:0x020b7c36 kind:thumb_call_arm to:0x02082124 module:overlay(0) from:0x020b7c9e kind:thumb_call to:0x020b803c module:overlay(1) from:0x020b7ca4 kind:thumb_call to:0x020b7e50 module:overlay(1) from:0x020b7cba kind:thumb_call_arm to:0x020c0f9c module:overlay(1) -from:0x020b7cc2 kind:thumb_call_arm to:0x021612ac module:overlays(84,60) +from:0x020b7cc2 kind:thumb_call_arm to:0x021612ac module:overlay(84) from:0x020b7cd0 kind:thumb_call_arm to:0x02081520 module:overlay(0) from:0x020b7cd8 kind:thumb_call_arm to:0x020814ec module:overlay(0) from:0x020b7cf8 kind:thumb_call to:0x020b7d64 module:overlay(1) @@ -441,7 +441,7 @@ from:0x020b7d02 kind:thumb_call to:0x020b7e68 module:overlay(1) from:0x020b7d20 kind:thumb_call_arm to:0x02081d5c module:overlay(0) from:0x020b7d2c kind:thumb_call_arm to:0x020cafd8 module:overlay(24) from:0x020b7d3a kind:thumb_call_arm to:0x020cb000 module:overlay(24) -from:0x020b7d44 kind:load to:0x02164690 module:overlays(59,63,68,73,84) +from:0x020b7d44 kind:load to:0x02164690 module:overlay(84) from:0x020b7d58 kind:load to:0x0216122c module:overlays(84,62,66) from:0x020b7d5c kind:load to:0x027e09a4 module:dtcm from:0x020b7d60 kind:load to:0x020d8694 module:overlay(24) @@ -539,7 +539,7 @@ from:0x020b8218 kind:thumb_call to:0x02015550 module:main from:0x020b822c kind:thumb_call_arm to:0x0208233c module:overlay(0) from:0x020b83be kind:thumb_call to:0x020baea0 module:overlay(1) from:0x020b83c6 kind:thumb_call to:0x020592a0 module:overlay(0) -from:0x020b83d0 kind:load to:0x020c29fc module:overlay(1) +from:0x020b83d0 kind:load to:0x020c29f4 module:overlay(1) add:0x8 from:0x020b83d4 kind:load to:0x027e0c90 module:dtcm from:0x020b83d8 kind:load to:0x027e0ca8 module:dtcm from:0x020b83dc kind:load to:0x027e0c9c module:dtcm @@ -559,7 +559,7 @@ from:0x020b8466 kind:thumb_call to:0x020b8efc module:overlay(1) from:0x020b846e kind:thumb_call to:0x0201556c module:main from:0x020b8476 kind:thumb_call to:0x02057b8c module:overlay(0) from:0x020b847c kind:thumb_call to:0x0201547c module:main -from:0x020b8484 kind:load to:0x020c29fc module:overlay(1) +from:0x020b8484 kind:load to:0x020c29f4 module:overlay(1) add:0x8 from:0x020b8488 kind:load to:0x027e095c module:dtcm from:0x020b848c kind:load to:0x027e0ce8 module:dtcm from:0x020b849c kind:thumb_call to:0x020592ec module:overlay(0) @@ -573,7 +573,7 @@ from:0x020b8506 kind:thumb_call to:0x0201556c module:main from:0x020b850e kind:thumb_call to:0x02057b8c module:overlay(0) from:0x020b8514 kind:thumb_call to:0x0201547c module:main from:0x020b851a kind:thumb_call_arm to:0x02011ff4 module:main -from:0x020b8524 kind:load to:0x020c29fc module:overlay(1) +from:0x020b8524 kind:load to:0x020c29f4 module:overlay(1) add:0x8 from:0x020b8528 kind:load to:0x027e095c module:dtcm from:0x020b852c kind:load to:0x027e0ce8 module:dtcm from:0x020b853c kind:thumb_call to:0x020592ec module:overlay(0) @@ -586,7 +586,7 @@ from:0x020b859e kind:thumb_call to:0x020b8efc module:overlay(1) from:0x020b85a6 kind:thumb_call to:0x0201556c module:main from:0x020b85ae kind:thumb_call to:0x02057b8c module:overlay(0) from:0x020b85b4 kind:thumb_call to:0x0201547c module:main -from:0x020b85bc kind:load to:0x020c29fc module:overlay(1) +from:0x020b85bc kind:load to:0x020c29f4 module:overlay(1) add:0x8 from:0x020b85c0 kind:load to:0x027e095c module:dtcm from:0x020b85c4 kind:load to:0x027e0ce8 module:dtcm from:0x020b85f0 kind:thumb_call_arm to:0x02026800 module:main @@ -687,7 +687,7 @@ from:0x020b8d98 kind:load to:0x027e09a4 module:dtcm from:0x020b8d9c kind:load to:0x027e0c90 module:dtcm from:0x020b8e20 kind:load to:0x020823a8 module:overlay(0) from:0x020b8e42 kind:thumb_call_arm to:0x02011f3c module:main -from:0x020b8e4a kind:thumb_call_arm to:0x021304a0 module:overlays(47,48,49,50,51,52) +from:0x020b8e4a kind:thumb_call_arm to:0x021304a0 module:overlay(47) from:0x020b8e62 kind:thumb_call_arm to:0x02130504 module:overlay(47) from:0x020b8e68 kind:thumb_call_arm to:0x02011ff4 module:main from:0x020b8e7c kind:thumb_call to:0x020b8f18 module:overlay(1) @@ -2315,12 +2315,9 @@ from:0x020c09ee kind:thumb_call_arm to:0x020c1014 module:overlay(1) from:0x020c0a18 kind:load to:0x020c099d module:overlay(1) from:0x020c0a1c kind:load to:0x020c09c1 module:overlay(1) from:0x020c0a20 kind:load to:0x020c46fc module:overlay(1) -from:0x020c0ad4 kind:load to:0x020c2a18 module:overlay(1) -from:0x020c0b8c kind:load to:0x020c2a90 module:overlay(1) from:0x020c0c40 kind:load to:0x020c2f4c module:overlay(1) from:0x020c0c44 kind:load to:0x020c2928 module:overlays(2,4) from:0x020c0cf8 kind:load to:0x020c2fc4 module:overlay(1) -from:0x020c0cfc kind:load to:0x020c29a0 module:overlay(1) from:0x020c0e9c kind:load to:0x020c4701 module:overlay(1) from:0x020c0f14 kind:load to:0x020c4701 module:overlay(1) from:0x020c0f8c kind:load to:0x020c4701 module:overlay(1) @@ -2337,9 +2334,6 @@ from:0x020c1680 kind:load to:0x020c4701 module:overlay(1) from:0x020c168c kind:load to:0x020c273c module:overlay(1) from:0x020c16f8 kind:load to:0x020c4701 module:overlay(1) from:0x020c1718 kind:load to:0x020c1528 add:0x1400 module:overlay(1) -from:0x020c1720 kind:load to:0x020c29a0 module:overlay(1) -from:0x020c1728 kind:load to:0x020c2a18 module:overlay(1) -from:0x020c1730 kind:load to:0x020c2a90 module:overlay(1) from:0x020c18a4 kind:load to:0x020c4700 module:overlay(1) from:0x020c1930 kind:load to:0x020c4700 module:overlay(1) from:0x020c19c0 kind:load to:0x020c4700 module:overlay(1) @@ -2375,9 +2369,9 @@ from:0x020c28d4 kind:load to:0x020c40f4 module:overlay(1) from:0x020c28d8 kind:load to:0x020b9259 module:overlay(1) from:0x020c28dc kind:load to:0x020c40e8 module:overlay(1) from:0x020c28e0 kind:load to:0x020c2a40 module:overlay(1) -from:0x020c28e4 kind:load to:0x020c2a54 module:overlay(1) -from:0x020c28e8 kind:load to:0x020c2a68 module:overlay(1) -from:0x020c28ec kind:load to:0x020c2a7c module:overlay(1) +from:0x020c28e4 kind:load to:0x020c2a40 add:0x14 module:overlay(1) +from:0x020c28e8 kind:load to:0x020c2a40 add:0x28 module:overlay(1) +from:0x020c28ec kind:load to:0x020c2a40 add:0x3c module:overlay(1) from:0x020c28fc kind:load to:0x020c2fd4 module:overlay(1) from:0x020c2900 kind:load to:0x020c2815 module:overlay(1) from:0x020c2904 kind:load to:0x020c2839 module:overlay(1) diff --git a/config/eur/arm9/overlays/ov001/symbols.txt b/config/eur/arm9/overlays/ov001/symbols.txt index 0de7066f..682d102c 100644 --- a/config/eur/arm9/overlays/ov001/symbols.txt +++ b/config/eur/arm9/overlays/ov001/symbols.txt @@ -43,77 +43,77 @@ _ZN18UnkStruct_027e09a015InitCourseTableEv kind:function(thumb,size=0x32) addr:0 _ZN8InstanceI18UnkStruct_027e09a0EC2Ev kind:function(thumb,size=0xc) addr:0x020b7544 _ZN8InstanceI18UnkStruct_027e09a0ED2Ev kind:function(thumb,size=0xc) addr:0x020b7550 _ZN18UnkStruct_027e09b86CreateEv kind:function(thumb,size=0x16) addr:0x020b755c -func_ov001_020b7574 kind:function(thumb,size=0xec) addr:0x020b7574 +_ZN18UnkStruct_027e09b8C1Ev kind:function(thumb,size=0xec) addr:0x020b7574 _ZN18UnkStruct_027e09b8D1Ev kind:function(thumb,size=0x4c) addr:0x020b7660 -func_ov001_020b76ac kind:function(thumb,size=0x14) addr:0x020b76ac +_ZN18UnkStruct_027e09b820ImportAdventureFlagsEPj kind:function(thumb,size=0x14) addr:0x020b76ac _ZN18UnkStruct_027e09b819func_ov001_020b76c0Ej kind:function(thumb,size=0x40) addr:0x020b76c0 _ZN18UnkStruct_027e09b819func_ov001_020b7700Ev kind:function(thumb,size=0x28) addr:0x020b7700 -func_ov001_020b7728 kind:function(thumb,size=0x2c) addr:0x020b7728 -func_ov001_020b7754 kind:function(thumb,size=0xc) addr:0x020b7754 -func_ov001_020b7760 kind:function(thumb,size=0xc) addr:0x020b7760 +_ZN18UnkStruct_027e09b819func_ov001_020b7728Ev kind:function(thumb,size=0x2c) addr:0x020b7728 +_ZN8InstanceI18UnkStruct_027e09b8EC2Ev kind:function(thumb,size=0xc) addr:0x020b7754 +_ZN8InstanceI18UnkStruct_027e09b8ED2Ev kind:function(thumb,size=0xc) addr:0x020b7760 _ZN18UnkStruct_027e0cd86CreateEv kind:function(thumb,size=0x16) addr:0x020b776c -func_ov001_020b7784 kind:function(thumb,size=0x68) addr:0x020b7784 +_ZN18UnkStruct_027e0cd8C1Ev kind:function(thumb,size=0x68) addr:0x020b7784 _ZN18UnkStruct_027e0cd8D1Ev kind:function(thumb,size=0x42) addr:0x020b77ec -_ZN18UnkStruct_027e0cd819func_ov001_020b7830EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x24c) addr:0x020b7830 +_ZN18UnkStruct_027e0cd819func_ov001_020b7830EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x24c) addr:0x020b7830 _ZN18UnkStruct_027e0cd819func_ov001_020b7a7cEv kind:function(thumb,size=0xbc) addr:0x020b7a7c -func_ov001_020b7b38 kind:function(thumb,size=0xd0) addr:0x020b7b38 -_ZN18UnkStruct_027e0cd819func_ov001_020b7c08EP22UnkStruct_SceneChange1P21UnkStruct_WarpUnk1_A0 kind:function(thumb,size=0x15c) addr:0x020b7c08 -func_ov001_020b7d64 kind:function(thumb,size=0xec) addr:0x020b7d64 -func_ov001_020b7e50 kind:function(thumb,size=0x16) addr:0x020b7e50 -func_ov001_020b7e68 kind:function(thumb,size=0x1d4) addr:0x020b7e68 -func_ov001_020b803c kind:function(thumb,size=0xc0) addr:0x020b803c -func_ov001_020b80fc kind:function(thumb,size=0x24) addr:0x020b80fc -func_ov001_020b8120 kind:function(thumb,size=0x6c) addr:0x020b8120 -func_ov001_020b818c kind:function(thumb,size=0x3c) addr:0x020b818c -func_ov001_020b81c8 kind:function(thumb,size=0xc) addr:0x020b81c8 -func_ov001_020b81d4 kind:function(thumb,size=0xc) addr:0x020b81d4 -_ZN21UnkStruct_027e0cd8_0cC1Ev kind:function(thumb,size=0x218) addr:0x020b81e0 -func_ov001_020b83f8 kind:function(thumb,size=0x98) addr:0x020b83f8 -func_ov001_020b8490 kind:function(thumb,size=0xa0) addr:0x020b8490 -func_ov001_020b8530 kind:function(thumb,size=0x98) addr:0x020b8530 -func_ov001_020b85c8 kind:function(thumb,size=0x2) addr:0x020b85c8 -func_ov001_020b85cc kind:function(thumb,size=0x2) addr:0x020b85cc -func_ov001_020b85d0 kind:function(thumb,size=0x2f0) addr:0x020b85d0 -func_ov001_020b88c0 kind:function(thumb,size=0x2c) addr:0x020b88c0 -func_ov001_020b88ec kind:function(thumb,size=0x60) addr:0x020b88ec -func_ov001_020b894c kind:function(thumb,size=0xe0) addr:0x020b894c -func_ov001_020b8a2c kind:function(thumb,size=0x2c) addr:0x020b8a2c -func_ov001_020b8a58 kind:function(thumb,size=0x2) addr:0x020b8a58 -_ZN21UnkStruct_027e0cd8_0c19func_ov001_020b8a5cEii kind:function(thumb,size=0x8e) addr:0x020b8a5c -func_ov001_020b8aec kind:function(thumb,size=0xa8) addr:0x020b8aec -func_ov001_020b8b94 kind:function(thumb,size=0x9c) addr:0x020b8b94 -func_ov001_020b8c30 kind:function(thumb,size=0x4e) addr:0x020b8c30 -func_ov001_020b8c80 kind:function(thumb,size=0x10) addr:0x020b8c80 -func_ov001_020b8c90 kind:function(thumb,size=0x8) addr:0x020b8c90 -func_ov001_020b8c98 kind:function(thumb,size=0x8) addr:0x020b8c98 -func_ov001_020b8ca0 kind:function(thumb,size=0x8) addr:0x020b8ca0 -func_ov001_020b8ca8 kind:function(thumb,size=0x2) addr:0x020b8ca8 -func_ov001_020b8cac kind:function(thumb,size=0xfc) addr:0x020b8cac -func_ov001_020b8da8 kind:function(thumb,size=0xe) addr:0x020b8da8 -func_ov001_020b8db8 kind:function(thumb,size=0x6c) addr:0x020b8db8 -func_ov001_020b8e24 kind:function(thumb,size=0x30) addr:0x020b8e24 -func_ov001_020b8e54 kind:function(thumb,size=0x20) addr:0x020b8e54 -func_ov001_020b8e74 kind:function(thumb,size=0x18) addr:0x020b8e74 -func_ov001_020b8e8c kind:function(thumb,size=0x1c) addr:0x020b8e8c -func_ov001_020b8ea8 kind:function(thumb,size=0x3c) addr:0x020b8ea8 -func_ov001_020b8ee4 kind:function(thumb,size=0x18) addr:0x020b8ee4 -func_ov001_020b8efc kind:function(thumb,size=0x1c) addr:0x020b8efc -func_ov001_020b8f18 kind:function(thumb,size=0x80) addr:0x020b8f18 -func_ov001_020b8f98 kind:function(thumb,size=0xd4) addr:0x020b8f98 -func_ov001_020b906c kind:function(thumb,size=0x80) addr:0x020b906c -func_ov001_020b90ec kind:function(thumb,size=0xc6) addr:0x020b90ec -func_ov001_020b91b4 kind:function(thumb,size=0x10) addr:0x020b91b4 -func_ov001_020b91c4 kind:function(thumb,size=0x10) addr:0x020b91c4 -func_ov001_020b91d4 kind:function(thumb,size=0x24) addr:0x020b91d4 -func_ov001_020b91f8 kind:function(thumb,size=0x1c) addr:0x020b91f8 -func_ov001_020b9214 kind:function(thumb,size=0x28) addr:0x020b9214 -func_ov001_020b923c kind:function(thumb,size=0x1c) addr:0x020b923c -func_ov001_020b9258 kind:function(thumb,size=0x18) addr:0x020b9258 +_ZN18UnkStruct_027e0cd819func_ov001_020b7b38EPK15CourseListEntryPK29UnkStruct_func_ov000_020702a8 kind:function(thumb,size=0xd0) addr:0x020b7b38 +_ZN18UnkStruct_027e0cd819func_ov001_020b7c08EPK22UnkStruct_SceneChange1PK21UnkStruct_WarpUnk1_A0 kind:function(thumb,size=0x15c) addr:0x020b7c08 +_ZN18UnkStruct_027e0cd819func_ov001_020b7d64EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0xec) addr:0x020b7d64 +_ZN18UnkStruct_027e0cd819func_ov001_020b7e50Ev kind:function(thumb,size=0x16) addr:0x020b7e50 +_ZN18UnkStruct_027e0cd819func_ov001_020b7e68EPK22UnkStruct_SceneChange1b kind:function(thumb,size=0x1d4) addr:0x020b7e68 +_ZN18UnkStruct_027e0cd819func_ov001_020b803cEv kind:function(thumb,size=0xc0) addr:0x020b803c +_ZN18UnkStruct_027e0cd819func_ov001_020b80fcEj kind:function(thumb,size=0x24) addr:0x020b80fc +_ZN18UnkStruct_027e0cd819func_ov001_020b8120Ej kind:function(thumb,size=0x6c) addr:0x020b8120 +_ZN18UnkStruct_027e0cd819func_ov001_020b818cEv kind:function(thumb,size=0x3c) addr:0x020b818c +_ZN8InstanceI18UnkStruct_027e0cd8EC2Ev kind:function(thumb,size=0xc) addr:0x020b81c8 +_ZN8InstanceI18UnkStruct_027e0cd8ED2Ev kind:function(thumb,size=0xc) addr:0x020b81d4 +_ZN26UnkStruct_027e0cd8_0C_BaseC1EP18UnkStruct_027e0cd8 kind:function(thumb,size=0x218) addr:0x020b81e0 +_ZN26UnkStruct_027e0cd8_0C_BaseD1Ev kind:function(thumb,size=0x98) addr:0x020b83f8 +_ZN26UnkStruct_027e0cd8_0C_BaseD0Ev kind:function(thumb,size=0xa0) addr:0x020b8490 +_ZN26UnkStruct_027e0cd8_0C_BaseD2Ev kind:function(thumb,size=0x98) addr:0x020b8530 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_38Ev kind:function(thumb,size=0x2) addr:0x020b85c8 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_08Ev kind:function(thumb,size=0x2) addr:0x020b85cc +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b85d0EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x2f0) addr:0x020b85d0 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b88c0Ei kind:function(thumb,size=0x2c) addr:0x020b88c0 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b88ecEv kind:function(thumb,size=0x60) addr:0x020b88ec +_ZN26UnkStruct_027e0cd8_0C_Base14LoadSceneModelEPK22UnkStruct_SceneChange1 kind:function(thumb,size=0xe0) addr:0x020b894c +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_1CEPK22UnkStruct_SceneChange1bb kind:function(thumb,size=0x2c) addr:0x020b8a2c +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_20Ev kind:function(thumb,size=0x2) addr:0x020b8a58 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8a5cEii kind:function(thumb,size=0x8e) addr:0x020b8a5c +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8aecEv kind:function(thumb,size=0xa8) addr:0x020b8aec +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8b94EP12ZMBEntryARAB kind:function(thumb,size=0x9c) addr:0x020b8b94 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c30ERK33UnkStruct_027e0cd8_0C_Base_154_00 kind:function(thumb,size=0x4e) addr:0x020b8c30 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c80Ei kind:function(thumb,size=0x10) addr:0x020b8c80 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c90Ei kind:function(thumb,size=0x8) addr:0x020b8c90 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c98Ei kind:function(thumb,size=0x8) addr:0x020b8c98 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_34Ei kind:function(thumb,size=0x8) addr:0x020b8ca0 +_ZN24UnkStruct_ov001_020c40f4D1Ev kind:function(thumb,size=0x2) addr:0x020b8ca8 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_40Eh kind:function(thumb,size=0xfc) addr:0x020b8cac +_ZN24UnkStruct_ov001_020c40f4C1Ev kind:function(thumb,size=0xe) addr:0x020b8da8 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8db8Ev kind:function(thumb,size=0x6c) addr:0x020b8db8 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8e24Ev kind:function(thumb,size=0x30) addr:0x020b8e24 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8e54Ev kind:function(thumb,size=0x20) addr:0x020b8e54 +_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE13sub_push_backERKS0_N10Metrowerks8int2typeILi0EEE kind:function(thumb,size=0x18) addr:0x020b8e74 +_ZN12CustomVectorI33UnkStruct_027e0cd8_0C_Base_154_00ED1Ev kind:function(thumb,size=0x1c) addr:0x020b8e8c +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE5eraseEPS1_S4_13UnkMSLStruct1 kind:function(thumb,size=0x3c) addr:0x020b8ea8 +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE13sub_push_backERKS1_N10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x18) addr:0x020b8ee4 +_ZN12CustomVectorIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseED1Ev kind:function(thumb,size=0x1c) addr:0x020b8efc +_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE7grow_byEm kind:function(thumb,size=0x80) addr:0x020b8f18 +_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE14append_reallocEmRKS0_ kind:function(thumb,size=0xd4) addr:0x020b8f98 +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE7grow_byEm kind:function(thumb,size=0x80) addr:0x020b906c +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE14append_reallocEmRKS1_ kind:function(thumb,size=0xc6) addr:0x020b90ec +_ZNSt20__vec_deleter_helperI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EED1Ev kind:function(thumb,size=0x10) addr:0x020b91b4 +_ZNSt20__vec_deleter_helperIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED1Ev kind:function(thumb,size=0x10) addr:0x020b91c4 +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE8allocateEmN10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x24) addr:0x020b91d4 +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED2Ev kind:function(thumb,size=0x1c) addr:0x020b91f8 +_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE8allocateEmN10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x28) addr:0x020b9214 +_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EED2Ev kind:function(thumb,size=0x1c) addr:0x020b923c +__arraydtor$4129 kind:function(thumb,size=0x18) addr:0x020b9258 local func_ov001_020b9270 kind:function(thumb,size=0x70) addr:0x020b9270 func_ov001_020b92e0 kind:function(thumb,size=0x18c) addr:0x020b92e0 func_ov001_020b946c kind:function(thumb,size=0x4) addr:0x020b946c func_ov001_020b9470 kind:function(thumb,size=0x3e) addr:0x020b9470 -func_ov001_020b94b0 kind:function(thumb,size=0x164) addr:0x020b94b0 +ZMB_ParseFile kind:function(thumb,size=0x164) addr:0x020b94b0 func_ov001_020b9614 kind:function(thumb,size=0xe) addr:0x020b9614 func_ov001_020b9624 kind:function(thumb,size=0xfc) addr:0x020b9624 func_ov001_020b9720 kind:function(thumb,size=0x40) addr:0x020b9720 @@ -154,31 +154,31 @@ func_ov001_020ba9d0 kind:function(thumb,size=0x110) addr:0x020ba9d0 _ZN18UnkStruct_027e09bcD1Ev kind:function(thumb,size=0x7c) addr:0x020baae0 _ZN18UnkStruct_027e09bc19func_ov001_020bab5cEv kind:function(thumb,size=0x6c) addr:0x020bab5c _ZN18UnkStruct_027e09bc19func_ov001_020babc8Ev kind:function(thumb,size=0x20) addr:0x020babc8 -func_ov001_020babe8 kind:function(thumb,size=0x20) addr:0x020babe8 -func_ov001_020bac08 kind:function(thumb,size=0x20) addr:0x020bac08 +_ZN18UnkStruct_027e09bc19func_ov001_020babe8Ev kind:function(thumb,size=0x20) addr:0x020babe8 +_ZN18UnkStruct_027e09bc19func_ov001_020bac08Ev kind:function(thumb,size=0x20) addr:0x020bac08 func_ov001_020bac28 kind:function(thumb,size=0xc) addr:0x020bac28 func_ov001_020bac34 kind:function(thumb,size=0xc) addr:0x020bac34 _ZN16MapObjectManager6CreateEv kind:function(thumb,size=0x16) addr:0x020bac40 func_ov001_020bac58 kind:function(thumb,size=0x1e) addr:0x020bac58 _ZN16MapObjectManagerD1Ev kind:function(thumb,size=0x22) addr:0x020bac78 -func_ov001_020bac9c kind:function(thumb,size=0x3c) addr:0x020bac9c -func_ov001_020bacd8 kind:function(thumb,size=0xa8) addr:0x020bacd8 -func_ov001_020bad80 kind:function(thumb,size=0x20) addr:0x020bad80 -func_ov001_020bada0 kind:function(thumb,size=0x14) addr:0x020bada0 -func_ov001_020badb4 kind:function(thumb,size=0x2c) addr:0x020badb4 -func_ov001_020bade0 kind:function(thumb,size=0x60) addr:0x020bade0 -func_ov001_020bae40 kind:function(thumb,size=0x2c) addr:0x020bae40 -func_ov001_020bae6c kind:function(thumb,size=0x34) addr:0x020bae6c -func_ov001_020baea0 kind:function(thumb,size=0x88) addr:0x020baea0 -func_ov001_020baf28 kind:function(thumb,size=0x22) addr:0x020baf28 +_ZN16MapObjectManager19func_ov001_020bac9cEv kind:function(thumb,size=0x3c) addr:0x020bac9c +_ZN16MapObjectManager19func_ov001_020bacd8EP9ZOBHeader kind:function(thumb,size=0xa8) addr:0x020bacd8 +_ZN16MapObjectManager19func_ov001_020bad80Ev kind:function(thumb,size=0x20) addr:0x020bad80 +_ZN16MapObjectManager19func_ov001_020bada0Ev kind:function(thumb,size=0x14) addr:0x020bada0 +_ZN16MapObjectManager19func_ov001_020badb4Ev kind:function(thumb,size=0x2c) addr:0x020badb4 +_ZN16MapObjectManager19func_ov001_020bade0Ev kind:function(thumb,size=0x60) addr:0x020bade0 +_ZN16MapObjectManager19func_ov001_020bae40EP15ZeldaObjectList kind:function(thumb,size=0x2c) addr:0x020bae40 +_ZN16MapObjectManager19func_ov001_020bae6cEv kind:function(thumb,size=0x34) addr:0x020bae6c +_ZN16MapObjectManager19func_ov001_020baea0EP5Vec2s kind:function(thumb,size=0x88) addr:0x020baea0 +_ZN16MapObjectManager19func_ov001_020baf28Ev kind:function(thumb,size=0x22) addr:0x020baf28 func_ov001_020baf4c kind:function(thumb,size=0xc) addr:0x020baf4c func_ov001_020baf58 kind:function(thumb,size=0xc) addr:0x020baf58 _ZN12ActorManager6CreateEv kind:function(thumb,size=0x16) addr:0x020baf64 _ZN12ActorManagerC1Ev kind:function(thumb,size=0x46) addr:0x020baf7c _ZN12ActorManagerD1Ev kind:function(thumb,size=0x18) addr:0x020bafc4 _ZN12ActorManager19func_ov001_020bafdcEv kind:function(thumb,size=0x3c) addr:0x020bafdc -_ZN12ActorManager19func_ov001_020bb018EP36UnkStruct_func_ov001_020bb018_param2 kind:function(thumb,size=0x3fc) addr:0x020bb018 -_ZN12ActorManager19func_ov001_020bb414EPS_ kind:function(thumb,size=0x74) addr:0x020bb414 +_ZN12ActorManager19func_ov001_020bb018EP9ZOBHeader kind:function(thumb,size=0x3fc) addr:0x020bb018 +_ZN12ActorManager19func_ov001_020bb414Ev kind:function(thumb,size=0x74) addr:0x020bb414 _ZN12ActorManager19func_ov001_020bb488Ev kind:function(thumb,size=0xc0) addr:0x020bb488 _ZN12ActorManager19func_ov001_020bb548Ev kind:function(thumb,size=0xe8) addr:0x020bb548 _ZN12ActorManager19func_ov001_020bb630Ev kind:function(thumb,size=0x80) addr:0x020bb630 @@ -225,11 +225,11 @@ _ZN18UnkStruct_027e0ce0D1Ev kind:function(thumb,size=0x86) addr:0x020bc450 func_ov001_020bc4d8 kind:function(thumb,size=0x4c) addr:0x020bc4d8 _ZN18UnkStruct_027e0ce019func_ov001_020bc524Eb kind:function(thumb,size=0xd4) addr:0x020bc524 _ZN18UnkStruct_027e0ce019func_ov001_020bc5f8Ev kind:function(thumb,size=0x62) addr:0x020bc5f8 -func_ov001_020bc65c kind:function(thumb,size=0x40) addr:0x020bc65c -func_ov001_020bc69c kind:function(thumb,size=0x3c) addr:0x020bc69c -func_ov001_020bc6d8 kind:function(thumb,size=0xe) addr:0x020bc6d8 -func_ov001_020bc6e8 kind:function(thumb,size=0x14) addr:0x020bc6e8 -func_ov001_020bc6fc kind:function(thumb,size=0x52) addr:0x020bc6fc +_ZN18UnkStruct_027e0ce019func_ov001_020bc65cEv kind:function(thumb,size=0x40) addr:0x020bc65c +_ZN18UnkStruct_027e0ce019func_ov001_020bc69cEv kind:function(thumb,size=0x3c) addr:0x020bc69c +_ZN18UnkStruct_027e0ce019func_ov001_020bc6d8EiPK24UnkStruct_ov001_020c40f4 kind:function(thumb,size=0xe) addr:0x020bc6d8 +_ZN18UnkStruct_027e0ce019func_ov001_020bc6e8EPK24UnkStruct_ov001_020c40f4 kind:function(thumb,size=0x14) addr:0x020bc6e8 +_ZN18UnkStruct_027e0ce019func_ov001_020bc6fcEPK24UnkStruct_ov001_020c40f4S2_ii kind:function(thumb,size=0x52) addr:0x020bc6fc func_ov001_020bc750 kind:function(thumb,size=0xc) addr:0x020bc750 func_ov001_020bc75c kind:function(thumb,size=0xc) addr:0x020bc75c func_ov001_020bc768 kind:function(thumb,size=0x20) addr:0x020bc768 @@ -264,8 +264,8 @@ _ZN18UnkStruct_0204a11019func_ov001_020bd514EiPvii kind:function(thumb,size=0x78 _ZN18UnkStruct_0204a11019func_ov001_020bd58cEv kind:function(thumb,size=0x24) addr:0x020bd58c _ZN18UnkStruct_0204a11019func_ov001_020bd5b0Ev kind:function(thumb,size=0x88) addr:0x020bd5b0 _ZN18UnkStruct_0204a11019func_ov001_020bd638Ev kind:function(thumb,size=0x40) addr:0x020bd638 -func_ov001_020bd678 kind:function(thumb,size=0x14) addr:0x020bd678 -func_ov001_020bd68c kind:function(thumb,size=0x1c) addr:0x020bd68c +_ZN18UnkStruct_0204a11019func_ov001_020bd678Ev kind:function(thumb,size=0x14) addr:0x020bd678 +_ZN18UnkStruct_0204a11019func_ov001_020bd68cEv kind:function(thumb,size=0x1c) addr:0x020bd68c func_ov001_020bd6a8 kind:function(thumb,size=0x18) addr:0x020bd6a8 func_ov001_020bd6c0 kind:function(thumb,size=0x38) addr:0x020bd6c0 func_ov001_020bd6f8 kind:function(thumb,size=0x30) addr:0x020bd6f8 @@ -287,8 +287,8 @@ func_ov001_020bd910 kind:function(thumb,size=0x24) addr:0x020bd910 func_ov001_020bd934 kind:function(thumb,size=0x3c) addr:0x020bd934 _ZN24UnkStruct_ov000_020b50c019func_ov001_020bd970EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x494) addr:0x020bd970 _ZN24UnkStruct_ov000_020b50c019func_ov001_020bde04EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x48) addr:0x020bde04 -func_ov001_020bde4c kind:function(thumb,size=0x10) addr:0x020bde4c -func_ov001_020bde5c kind:function(thumb,size=0x10) addr:0x020bde5c +_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde4cEPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x10) addr:0x020bde4c +_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde5cEv kind:function(thumb,size=0x10) addr:0x020bde5c func_ov001_020bde6c kind:function(thumb,size=0xe) addr:0x020bde6c func_ov001_020bde7c kind:function(thumb,size=0x14) addr:0x020bde7c func_ov001_020bde90 kind:function(thumb,size=0x110) addr:0x020bde90 @@ -313,14 +313,14 @@ _ZN18UnkStruct_027e09c07DestroyEv kind:function(thumb,size=0x8) addr:0x020be2ec func_ov001_020be2f4 kind:function(thumb,size=0xa0) addr:0x020be2f4 _ZN18UnkStruct_027e09c019func_ov001_020be394Ev kind:function(thumb,size=0x30) addr:0x020be394 _ZN18UnkStruct_027e09c019func_ov001_020be3c4Ev kind:function(thumb,size=0x18) addr:0x020be3c4 -func_ov001_020be3dc kind:function(thumb,size=0x24) addr:0x020be3dc -func_ov001_020be400 kind:function(thumb,size=0x3c) addr:0x020be400 +_ZN18UnkStruct_027e09c019func_ov001_020be3dcEP14UnkFileSystem3P26UnkStruct_027e0cd8_0C_Base kind:function(thumb,size=0x24) addr:0x020be3dc +_ZN18UnkStruct_027e09c019func_ov001_020be400Ev kind:function(thumb,size=0x3c) addr:0x020be400 func_ov001_020be43c kind:function(thumb,size=0x20) addr:0x020be43c func_ov001_020be45c kind:function(thumb,size=0xc) addr:0x020be45c func_ov001_020be468 kind:function(thumb,size=0xc) addr:0x020be468 func_ov001_020be474 kind:function(thumb,size=0x70) addr:0x020be474 func_ov001_020be4e4 kind:function(thumb,size=0x1e) addr:0x020be4e4 -func_ov001_020be504 kind:function(thumb,size=0xc) addr:0x020be504 +_ZN24UnkStruct_ov000_020b504c19func_ov001_020be504Ev kind:function(thumb,size=0xc) addr:0x020be504 _ZN24UnkStruct_ov000_020b504c19func_ov001_020be510Ev kind:function(thumb,size=0xd8) addr:0x020be510 func_ov001_020be5e8 kind:function(thumb,size=0x80) addr:0x020be5e8 _ZN24UnkStruct_ov000_020b504c19func_ov001_020be668Ev kind:function(thumb,size=0x70) addr:0x020be668 @@ -330,9 +330,9 @@ func_ov001_020be79c kind:function(thumb,size=0x90) addr:0x020be79c func_ov001_020be82c kind:function(thumb,size=0x54) addr:0x020be82c func_ov001_020be880 kind:function(thumb,size=0x60) addr:0x020be880 _ZN24UnkStruct_ov000_020b504c19func_ov001_020be8e0Ev kind:function(thumb,size=0x4c) addr:0x020be8e0 -func_ov001_020be92c kind:function(thumb,size=0x20) addr:0x020be92c -func_ov001_020be94c kind:function(thumb,size=0x4c) addr:0x020be94c -func_ov001_020be998 kind:function(thumb,size=0x64) addr:0x020be998 +_ZN24UnkStruct_ov000_020b504c19func_ov001_020be92cEP24UnkStruct_027e0cd8_04_0C kind:function(thumb,size=0x20) addr:0x020be92c +_ZN24UnkStruct_ov000_020b504c19func_ov001_020be94cEv kind:function(thumb,size=0x4c) addr:0x020be94c +_ZN24UnkStruct_ov000_020b504c19func_ov001_020be998Ev kind:function(thumb,size=0x64) addr:0x020be998 func_ov001_020be9fc kind:function(thumb,size=0x30) addr:0x020be9fc func_ov001_020bea2c kind:function(thumb,size=0x14) addr:0x020bea2c func_ov001_020bea40 kind:function(thumb,size=0x18) addr:0x020bea40 @@ -356,7 +356,7 @@ func_ov001_020bed34 kind:function(thumb,size=0x1c) addr:0x020bed34 func_ov001_020bed50 kind:function(thumb,size=0x248) addr:0x020bed50 func_ov001_020bef98 kind:function(thumb,size=0x7c) addr:0x020bef98 func_ov001_020bf014 kind:function(thumb,size=0x14) addr:0x020bf014 -func_ov001_020bf028 kind:function(thumb,size=0x1c) addr:0x020bf028 +_ZN18UnkStruct_027e0cec19func_ov001_020bf028Ev kind:function(thumb,size=0x1c) addr:0x020bf028 func_ov001_020bf044 kind:function(arm,size=0x38) addr:0x020bf044 func_ov001_020bf07c kind:function(arm,size=0x10) addr:0x020bf07c func_ov001_020bf08c kind:function(arm,size=0x14) addr:0x020bf08c @@ -506,10 +506,10 @@ data_ov001_020c276c kind:data(any) addr:0x020c276c data_ov001_020c27a8 kind:data(any) addr:0x020c27a8 data_ov001_020c280c kind:data(any) addr:0x020c280c __sinit_CourseList.cpp kind:function(thumb,size=0x24) addr:0x020c2814 local -__sinit_ov001_020c2838 kind:function(thumb,size=0xb8) addr:0x020c2838 +__sinit_UnkStruct_027e0cd8_0C_001.cpp kind:function(thumb,size=0xb8) addr:0x020c2838 __sinit_ov001_020c28f0 kind:function(thumb,size=0x10) addr:0x020c28f0 .p__sinit_CourseList.cpp kind:data(word) addr:0x020c2900 local -.p__sinit_ov001_020c2838 kind:data(word) addr:0x020c2904 +.p__sinit_UnkStruct_027e0cd8_0C_001.cpp kind:data(word) addr:0x020c2904 .p__sinit_ov001_020c28f0 kind:data(word) addr:0x020c2908 .p__sinit_ov001_020c1104 kind:data(word) addr:0x020c290c local .p__sinit_ov001_020c1708 kind:data(word) addr:0x020c2910 local @@ -518,28 +518,23 @@ __sinit_ov001_020c28f0 kind:function(thumb,size=0x10) addr:0x020c28f0 .p__sinit_ov001_020c2570 kind:data(word) addr:0x020c291c local @433 kind:data(byte[22]) addr:0x020c2940 local @450 kind:data(byte[22]) addr:0x020c2958 local -data_ov001_020c2970 kind:data(any) addr:0x020c2970 -data_ov001_020c2984 kind:data(any) addr:0x020c2984 -data_ov001_020c2988 kind:data(any) addr:0x020c2988 -data_ov001_020c29a0 kind:data(any) addr:0x020c29a0 -data_ov001_020c29a4 kind:data(any) addr:0x020c29a4 -data_ov001_020c29bc kind:data(any) addr:0x020c29bc -data_ov001_020c29d8 kind:data(any) addr:0x020c29d8 -data_ov001_020c29f0 kind:data(any) addr:0x020c29f0 -data_ov001_020c29fc kind:data(any) addr:0x020c29fc -data_ov001_020c2a18 kind:data(any) addr:0x020c2a18 +@3570 kind:data(byte[0x12]) addr:0x020c2970 local +@3571 kind:data(byte[0x04]) addr:0x020c2984 local +@3572 kind:data(byte[0x1a]) addr:0x020c2988 local +@3573 kind:data(byte[0x18]) addr:0x020c29a4 local +@3574 kind:data(byte[0x19]) addr:0x020c29bc local +@3575 kind:data(byte[0x17]) addr:0x020c29d8 local +@3576 kind:data(byte[0x04]) addr:0x020c29f0 local +_ZTV26UnkStruct_027e0cd8_0C_Base kind:data(any) addr:0x020c29f4 data_ov001_020c2a40 kind:data(any) addr:0x020c2a40 -data_ov001_020c2a54 kind:data(any) addr:0x020c2a54 -data_ov001_020c2a68 kind:data(any) addr:0x020c2a68 -data_ov001_020c2a7c kind:data(any) addr:0x020c2a7c -data_ov001_020c2a90 kind:data(any) addr:0x020c2a90 -data_ov001_020c2a98 kind:data(any) addr:0x020c2a98 -data_ov001_020c2aac kind:data(any) addr:0x020c2aac -data_ov001_020c2ac0 kind:data(any) addr:0x020c2ac0 -data_ov001_020c2ad4 kind:data(any) addr:0x020c2ad4 -data_ov001_020c2af0 kind:data(any) addr:0x020c2af0 -data_ov001_020c2b0c kind:data(any) addr:0x020c2b0c -data_ov001_020c2b24 kind:data(any) addr:0x020c2b24 +@3283 kind:data(byte[0x6]) addr:0x020c2a90 local +@3284 kind:data(byte[0x13]) addr:0x020c2a98 local +@3285 kind:data(byte[0x13]) addr:0x020c2aac local +@3286 kind:data(byte[0x13]) addr:0x020c2ac0 local +@3287 kind:data(byte[0x1b]) addr:0x020c2ad4 local +@3288 kind:data(byte[0x1c]) addr:0x020c2af0 local +@3292 kind:data(byte[0x17]) addr:0x020c2b0c local +@3293 kind:data(byte[0x15]) addr:0x020c2b24 local data_ov001_020c2b3c kind:data(any) addr:0x020c2b3c data_ov001_020c2b48 kind:data(any) addr:0x020c2b48 data_ov001_020c2b58 kind:data(any) addr:0x020c2b58 @@ -640,8 +635,8 @@ data_ov001_020c2fcc kind:data(any) addr:0x020c2fcc data_ov001_020c2fd4 kind:data(any) addr:0x020c2fd4 _ZGVN14StaticInstanceI16CourseInitBinaryE9sInstanceE kind:bss addr:0x020c2fe0 _ZN14StaticInstanceI16CourseInitBinaryE9sInstanceE kind:bss addr:0x020c2fe4 -data_ov001_020c40e8 kind:bss addr:0x020c40e8 -data_ov001_020c40f4 kind:bss addr:0x020c40f4 +@4613 kind:bss addr:0x020c40e8 local +data_ov001_020c40f4 kind:bss addr:0x020c40f4 local data_ov001_020c46f4 kind:bss addr:0x020c46f4 data_ov001_020c46f8 kind:bss addr:0x020c46f8 data_ov001_020c46fc kind:bss addr:0x020c46fc diff --git a/config/eur/arm9/overlays/ov021/symbols.txt b/config/eur/arm9/overlays/ov021/symbols.txt index 6cf7ed37..5ca64fa8 100644 --- a/config/eur/arm9/overlays/ov021/symbols.txt +++ b/config/eur/arm9/overlays/ov021/symbols.txt @@ -41,7 +41,7 @@ _ZN27UnkStruct_027e09a4_54_Type3C1EP18UnkStruct_027e09a4 kind:function(arm,size= _ZN19func_ov021_020ea77cD1Ev kind:function(arm,size=0x30) addr:0x020ea77c _ZN19func_ov021_020ea7acD0Ev kind:function(arm,size=0x38) addr:0x020ea7ac func_ov021_020ea7e4 kind:function(arm,size=0xc) addr:0x020ea7e4 -func_ov021_020ea7f0 kind:function(arm,size=0x20) addr:0x020ea7f0 +_ZN30UnkStruct_027e0cd8_0C_Derived3C1EP18UnkStruct_027e0cd8 kind:function(arm,size=0x20) addr:0x020ea7f0 func_ov021_020ea810 kind:function(arm,size=0x28) addr:0x020ea810 _ZN19func_ov021_020ea838D1Ev kind:function(arm,size=0x14) addr:0x020ea838 _ZN19func_ov021_020ea84cD0Ev kind:function(arm,size=0x1c) addr:0x020ea84c diff --git a/config/eur/arm9/overlays/ov026/symbols.txt b/config/eur/arm9/overlays/ov026/symbols.txt index c2d61153..71b4be6a 100644 --- a/config/eur/arm9/overlays/ov026/symbols.txt +++ b/config/eur/arm9/overlays/ov026/symbols.txt @@ -101,7 +101,7 @@ _ZN21UnkStruct_027e0ce0_38D0Ev kind:function(arm,size=0xe4) addr:0x020dc80c func_ov026_020dc8f0 kind:function(arm,size=0x28) addr:0x020dc8f0 func_ov026_020dc918 kind:function(arm,size=0x98) addr:0x020dc918 func_ov026_020dc9b0 kind:function(arm,size=0x64) addr:0x020dc9b0 -func_ov026_020dca14 kind:function(arm,size=0x1788) addr:0x020dca14 +_ZN24UnkStruct_ov026_02138d1019func_ov026_020dca14Ev kind:function(arm,size=0x1788) addr:0x020dca14 func_ov026_020de19c kind:function(arm,size=0x38) addr:0x020de19c func_ov026_020de1d4 kind:function(arm,size=0x30) addr:0x020de1d4 func_ov026_020de204 kind:function(arm,size=0x158) addr:0x020de204 @@ -291,8 +291,8 @@ func_ov026_020e8c74 kind:function(arm,size=0x98) addr:0x020e8c74 func_ov026_020e8d0c kind:function(arm,size=0x364) addr:0x020e8d0c func_ov026_020e9070 kind:function(arm,size=0x10) addr:0x020e9070 func_ov026_020e9080 kind:function(arm,size=0x74) addr:0x020e9080 -func_ov026_020e90f4 kind:function(arm,size=0x44) addr:0x020e90f4 -func_ov026_020e9138 kind:function(arm,size=0x48) addr:0x020e9138 +_ZN21UnkStruct_027e0cd8_10C1Ev kind:function(arm,size=0x44) addr:0x020e90f4 +_ZN21UnkStruct_027e0cd8_10D1Ev kind:function(arm,size=0x48) addr:0x020e9138 func_ov026_020e9180 kind:function(arm,size=0x2c) addr:0x020e9180 func_ov026_020e91ac kind:function(arm,size=0x1c) addr:0x020e91ac func_ov026_020e91c8 kind:function(arm,size=0x1c) addr:0x020e91c8 @@ -1090,7 +1090,7 @@ func_ov026_021056a4 kind:function(arm,size=0x38) addr:0x021056a4 func_ov026_021056dc kind:function(arm,size=0x38) addr:0x021056dc func_ov026_02105714 kind:function(arm,size=0x1c) addr:0x02105714 func_ov026_02105730 kind:function(arm,size=0x4) addr:0x02105730 -func_ov026_02105734 kind:function(arm,size=0x1dc) addr:0x02105734 +_ZN30UnkStruct_027e0cd8_0C_Derived2C1EP18UnkStruct_027e0cd8 kind:function(arm,size=0x1dc) addr:0x02105734 func_ov026_02105910 kind:function(arm,size=0x10c) addr:0x02105910 _ZN19func_ov026_02105a1cD0Ev kind:function(arm,size=0x114) addr:0x02105a1c func_ov026_02105b30 kind:function(arm,size=0xc0) addr:0x02105b30 @@ -1122,7 +1122,7 @@ func_ov026_02106a84 kind:function(arm,size=0x4) addr:0x02106a84 func_ov026_02106a88 kind:function(arm,size=0x4) addr:0x02106a88 func_ov026_02106a8c kind:function(arm,size=0x8) addr:0x02106a8c func_ov026_02106a94 kind:function(arm,size=0x14) addr:0x02106a94 -_ZN25UnkStruct_027e0cd8_0c_16019func_ov026_02106aa8Ev kind:function(arm,size=0x14) addr:0x02106aa8 +_ZN25UnkStruct_027e0cd8_0C_16019func_ov026_02106aa8Ev kind:function(arm,size=0x14) addr:0x02106aa8 func_ov026_02106abc kind:function(arm,size=0x84) addr:0x02106abc func_ov026_02106b40 kind:function(arm,size=0x4c) addr:0x02106b40 func_ov026_02106b8c kind:function(arm,size=0x64) addr:0x02106b8c diff --git a/config/eur/arm9/overlays/ov047/symbols.txt b/config/eur/arm9/overlays/ov047/symbols.txt index c9e2b447..312483f6 100644 --- a/config/eur/arm9/overlays/ov047/symbols.txt +++ b/config/eur/arm9/overlays/ov047/symbols.txt @@ -1,5 +1,5 @@ -func_ov047_021304a0 kind:function(arm,size=0x64) addr:0x021304a0 -func_ov047_02130504 kind:function(arm,size=0x28) addr:0x02130504 +_ZN29UnkStruct_027e0cd8_0C_Base_98C1Ev kind:function(arm,size=0x64) addr:0x021304a0 +_ZN29UnkStruct_027e0cd8_0C_Base_98D1Ev kind:function(arm,size=0x28) addr:0x02130504 func_ov047_0213052c kind:function(arm,size=0x30) addr:0x0213052c func_ov047_0213055c kind:function(arm,size=0x200) addr:0x0213055c func_ov047_0213075c kind:function(arm,size=0x39c) addr:0x0213075c diff --git a/config/eur/arm9/overlays/ov088/symbols.txt b/config/eur/arm9/overlays/ov088/symbols.txt index 5bdc4ff6..35696534 100644 --- a/config/eur/arm9/overlays/ov088/symbols.txt +++ b/config/eur/arm9/overlays/ov088/symbols.txt @@ -2,7 +2,7 @@ func_ov088_021658a0 kind:function(arm,size=0x30) addr:0x021658a0 _ZN19func_ov088_021658d0D1Ev kind:function(arm,size=0x34) addr:0x021658d0 _ZN19func_ov088_02165904D0Ev kind:function(arm,size=0x3c) addr:0x02165904 _ZN19func_ov088_02165940D2Ev kind:function(arm,size=0x34) addr:0x02165940 -func_ov088_02165974 kind:function(arm,size=0x14c) addr:0x02165974 +_ZN21UnkStruct_027e09b8_08C1EPv kind:function(arm,size=0x14c) addr:0x02165974 func_ov088_02165ac0 kind:function(arm,size=0x84) addr:0x02165ac0 _ZN19func_ov088_02165b44D0Ev kind:function(arm,size=0x8c) addr:0x02165b44 func_ov088_02165bd0 kind:function(arm,size=0xc) addr:0x02165bd0 diff --git a/config/eur/arm9/overlays/ov101/symbols.txt b/config/eur/arm9/overlays/ov101/symbols.txt index 205f72c0..e69fb84c 100644 --- a/config/eur/arm9/overlays/ov101/symbols.txt +++ b/config/eur/arm9/overlays/ov101/symbols.txt @@ -21,7 +21,7 @@ func_ov101_02183328 kind:function(thumb,size=0x134) addr:0x02183328 func_ov101_0218345c kind:function(thumb,size=0x2) addr:0x0218345c func_ov101_02183460 kind:function(thumb,size=0xc) addr:0x02183460 func_ov101_0218346c kind:function(thumb,size=0x12) addr:0x0218346c -func_ov101_02183480 kind:function(thumb,size=0x68) addr:0x02183480 +_ZN21UnkStruct_027e0cd8_0CC1EP18UnkStruct_027e0cd8 kind:function(thumb,size=0x68) addr:0x02183480 func_ov101_021834e8 kind:function(thumb,size=0xd8) addr:0x021834e8 func_ov101_021835c0 kind:function(thumb,size=0xe0) addr:0x021835c0 func_ov101_021836a0 kind:function(thumb,size=0xd0) addr:0x021836a0 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 016f3f60..e151a8dd 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -526,7 +526,7 @@ func_0200e350 kind:function(arm,size=0x48) addr:0x0200e350 func_0200e398 kind:function(arm,size=0x60) addr:0x0200e398 func_0200e3f8 kind:function(arm,size=0x68) addr:0x0200e3f8 func_0200e460 kind:function(arm,size=0x240) addr:0x0200e460 -func_0200e6a0 kind:function(arm,size=0xb0) addr:0x0200e6a0 +G3d_0200e6a0 kind:function(arm,size=0xb0) addr:0x0200e6a0 func_0200e750 kind:function(arm,size=0x80) addr:0x0200e750 func_0200e7d0 kind:function(arm,size=0x80) addr:0x0200e7d0 func_0200e850 kind:function(arm,size=0x80) addr:0x0200e850 @@ -719,7 +719,7 @@ func_02014944 kind:function(thumb,size=0x50) addr:0x02014944 _ZN14OverlayManager13func_02014994Ei kind:function(thumb,size=0x7c) addr:0x02014994 func_02014a10 kind:function(arm,size=0x24) addr:0x02014a10 _ZN18UnkStruct_02049bac13func_02014a34EPv kind:function(arm,size=0xcc) addr:0x02014a34 -func_02014b00 kind:function(arm,size=0x54) addr:0x02014b00 +_ZN18UnkStruct_02049bac13func_02014b00Ev kind:function(arm,size=0x54) addr:0x02014b00 func_02014b54 kind:function(arm,size=0x10) addr:0x02014b54 func_02014b64 kind:function(arm,size=0x1c) addr:0x02014b64 func_02014b80 kind:function(arm,size=0x3c) addr:0x02014b80 @@ -754,7 +754,7 @@ _ZN17UnkFileSystem2_10D1Ev kind:function(arm,size=0x20) addr:0x020153c4 func_020153e4 kind:function(arm,size=0x18) addr:0x020153e4 _ZN10UnkSystem3C1EPKciii kind:function(thumb,size=0x12) addr:0x020153fc _ZN10UnkSystem313func_02015410EPKci kind:function(thumb,size=0xc) addr:0x02015410 -func_0201541c kind:function(thumb,size=0x44) addr:0x0201541c +_ZN10UnkSystem313func_0201541cEPKci kind:function(thumb,size=0x44) addr:0x0201541c _ZN10UnkSystem313func_02015460EPKcPvi kind:function(thumb,size=0x1c) addr:0x02015460 _ZN10UnkSystem3D1Ev kind:function(thumb,size=0x20) addr:0x0201547c func_0201549c kind:function(thumb,size=0x14) addr:0x0201549c @@ -1477,7 +1477,7 @@ OS_GetLockID kind:function(arm,size=0x58) addr:0x02026738 func_02026790 kind:function(arm,size=0x30) addr:0x02026790 sscanf kind:function(arm,size=0x28) addr:0x020267c0 vsscanf kind:function(arm,size=0x18) addr:0x020267e8 -func_02026800 kind:function(arm,size=0x28) addr:0x02026800 +snprintf kind:function(arm,size=0x28) addr:0x02026800 func_02026828 kind:function(arm,size=0xc) addr:0x02026828 OS_func_0035 kind:function(arm,size=0x18) addr:0x02026834 OS_func_0036 kind:function(arm,size=0x78) addr:0x0202684c @@ -2039,7 +2039,7 @@ func_02038d2c kind:function(arm,size=0x18) addr:0x02038d2c _ZN13func_02038d44D0Ev kind:function(arm,size=0x20) addr:0x02038d44 func_02038d64 kind:function(arm,size=0x30) addr:0x02038d64 func_02038d94 kind:function(arm,size=0x2c) addr:0x02038d94 -func_02038dc0 kind:function(arm,size=0x8c) addr:0x02038dc0 +_ZNSt15__vector_commonILb1EE18throw_length_errorEv kind:function(arm,size=0x8c) addr:0x02038dc0 _dadd kind:function(arm,size=0x318) addr:0x02038e4c _dsub kind:function(arm,size=0x3b4) addr:0x0203917c _dmul kind:function(arm,size=0x364) addr:0x02039530 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index 55e8dc41..3d03f5d0 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -184,8 +184,8 @@ func_01ffe954 kind:function(arm,size=0x80) addr:0x01ffe954 func_01ffe9d4 kind:function(arm,size=0x308) addr:0x01ffe9d4 func_01ffecdc kind:function(arm,size=0xd0) addr:0x01ffecdc func_01ffedac kind:function(arm,size=0x48) addr:0x01ffedac -_ZN21UnkStruct_027e0cd8_0c13func_01ffedf4EP5Vec2b kind:function(arm,size=0x1c) addr:0x01ffedf4 -func_01ffee10 kind:function(arm,size=0x124) addr:0x01ffee10 +_ZN26UnkStruct_027e0cd8_0C_Base13func_01ffedf4EP5Vec2b kind:function(arm,size=0x1c) addr:0x01ffedf4 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_28EP7VecFx32ii kind:function(arm,size=0x124) addr:0x01ffee10 func_01ffef34 kind:function(arm,size=0x128) addr:0x01ffef34 func_01fff05c kind:function(arm,size=0x58) addr:0x01fff05c func_01fff0b4 kind:function(arm,size=0x94) addr:0x01fff0b4 @@ -212,7 +212,7 @@ _ZN9MapObject13func_01fff590Ei kind:function(arm,size=0x40) addr:0x01fff590 _ZN5Actor13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0 _ZN18UnkStruct_027e09b413func_01fff60cEiiihii kind:function(arm,size=0x8c) addr:0x01fff60c func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698 -_ZN16MapObjectManager13func_01fff6d0EP7VecFx32PiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0 +func_01fff6d0 kind:function(arm,size=0x74) addr:0x01fff6d0 func_01fff744 kind:function(arm,size=0x20) addr:0x01fff744 func_01fff764 kind:function(arm,size=0xec) addr:0x01fff764 func_01fff850 kind:function(arm,size=0x158) addr:0x01fff850 diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index df1f57dd..21be8efc 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -219,8 +219,8 @@ _ZN32UnkStruct_027e0960_TableEntry_048vfunc_10Ev kind:function(arm,size=0xc) add _ZN32UnkStruct_027e0960_TableEntry_048vfunc_1CEv kind:function(arm,size=0x1c) addr:0x0205b630 func_ov000_0205b64c kind:function(thumb,size=0x12) addr:0x0205b64c _ZN18UnkStruct_027e0960D1Ev kind:function(thumb,size=0x44) addr:0x0205b660 -func_ov000_0205b6a4 kind:function(arm,size=0x4) addr:0x0205b6a4 -func_ov000_0205b6a8 kind:function(arm,size=0x40) addr:0x0205b6a8 +_ZN18UnkStruct_027e096019func_ov000_0205a11cEv kind:function(arm,size=0x4) addr:0x0205b6a4 +_ZN18UnkStruct_027e096019func_ov000_0205a120Ev kind:function(arm,size=0x40) addr:0x0205b6a8 _ZN18UnkStruct_027e096019func_ov000_0205a160Ev kind:function(arm,size=0x4) addr:0x0205b6e8 _ZN18UnkStruct_027e096019func_ov000_0205a164Ev kind:function(arm,size=0x40) addr:0x0205b6ec func_ov000_0205b72c kind:function(arm,size=0x34) addr:0x0205b72c @@ -258,7 +258,7 @@ func_ov000_0205bf98 kind:function(arm,size=0x60) addr:0x0205bf98 func_ov000_0205bff8 kind:function(arm,size=0xe8) addr:0x0205bff8 func_ov000_0205c0e0 kind:function(thumb,size=0x1e) addr:0x0205c0e0 func_ov000_0205c100 kind:function(thumb,size=0x52) addr:0x0205c100 -func_ov000_0205c154 kind:function(thumb,size=0x56) addr:0x0205c154 +func_ov000_0205abcc kind:function(thumb,size=0x56) addr:0x0205c154 func_ov000_0205c1ac kind:function(arm,size=0x10) addr:0x0205c1ac func_ov000_0205c1bc kind:function(arm,size=0x2c) addr:0x0205c1bc func_ov000_0205c1e8 kind:function(arm,size=0x10) addr:0x0205c1e8 @@ -988,10 +988,10 @@ func_ov000_02071800 kind:function(arm,size=0x1c) addr:0x02071800 func_ov000_0207181c kind:function(arm,size=0xfc) addr:0x0207181c _ZN18UnkStruct_027e09a021GetSceneIndexFromNameEPKc kind:function(arm,size=0x3c) addr:0x02071918 _ZN18UnkStruct_027e09a014GetCourseEntryEj kind:function(arm,size=0xc) addr:0x02071954 -func_ov000_02071960 kind:function(arm,size=0x14) addr:0x02071960 +_ZN18UnkStruct_027e09a019func_ov000_020702a8Ej kind:function(arm,size=0x14) addr:0x02071960 _ZN18UnkStruct_027e09a017GetRoomEntryIndexEv kind:function(arm,size=0x40) addr:0x02071974 _ZN18UnkStruct_027e09a012GetRoomEntryEji kind:function(arm,size=0x14) addr:0x020719b4 -func_ov000_020719c8 kind:function(arm,size=0x68) addr:0x020719c8 +_ZN18UnkStruct_027e09a019func_ov000_02070310EjhPv kind:function(arm,size=0x68) addr:0x020719c8 _ZN18UnkStruct_027e09a019func_ov000_02070378Ej kind:function(arm,size=0x44) addr:0x02071a30 func_ov000_02071a74 kind:function(arm,size=0x8) addr:0x02071a74 func_ov000_02071a7c kind:function(arm,size=0x5c) addr:0x02071a7c @@ -1081,7 +1081,7 @@ func_ov000_02073b24 kind:function(arm,size=0x204) addr:0x02073b24 func_ov000_02073d28 kind:function(arm,size=0x14) addr:0x02073d28 func_ov000_02073d3c kind:function(arm,size=0x18) addr:0x02073d3c func_ov000_02073d54 kind:function(arm,size=0x54) addr:0x02073d54 -_ZN18UnkStruct_027e09ac19func_ov000_020726f0Eiii kind:function(arm,size=0x2d4) addr:0x02073da8 +_ZN18UnkStruct_027e09ac19func_ov000_020726f0Etii kind:function(arm,size=0x2d4) addr:0x02073da8 _ZN18UnkStruct_027e09ac19func_ov000_020729c4EP21UnkStruct_027e09ac_14ttss kind:function(arm,size=0x88) addr:0x0207407c func_ov000_02074104 kind:function(arm,size=0xbc) addr:0x02074104 func_ov000_020741c0 kind:function(arm,size=0x1c) addr:0x020741c0 @@ -1091,7 +1091,7 @@ func_ov000_02074260 kind:function(arm,size=0x24) addr:0x02074260 func_ov000_02074284 kind:function(arm,size=0xa4) addr:0x02074284 func_ov000_02074328 kind:function(arm,size=0x44) addr:0x02074328 func_ov000_0207436c kind:function(arm,size=0x10) addr:0x0207436c -func_ov000_0207437c kind:function(arm,size=0x10) addr:0x0207437c +_ZN18UnkStruct_027e09b019func_ov000_02072cc4Eii kind:function(arm,size=0x10) addr:0x0207437c func_ov000_0207438c kind:function(arm,size=0x24) addr:0x0207438c func_ov000_020743b0 kind:function(arm,size=0x20) addr:0x020743b0 func_ov000_020743d0 kind:function(arm,size=0x10) addr:0x020743d0 @@ -1104,18 +1104,18 @@ func_ov000_02074610 kind:function(arm,size=0x40) addr:0x02074610 func_ov000_02074650 kind:function(arm,size=0x24) addr:0x02074650 func_ov000_02074674 kind:function(arm,size=0x14) addr:0x02074674 func_ov000_02074688 kind:function(arm,size=0xb0) addr:0x02074688 -func_ov000_02074738 kind:function(arm,size=0x2c) addr:0x02074738 +func_ov000_02073080 kind:function(arm,size=0x2c) addr:0x02074738 _ZN17ActorUnk_vfunc_B0C1Ev kind:function(arm,size=0x58) addr:0x02074764 _ZN20stack_ov000_02073578C1Ev kind:function(arm,size=0x2c) addr:0x020747bc -func_ov000_020747e8 kind:function(arm,size=0x4) addr:0x020747e8 -_ZN19func_ov000_020747ecD0Ev kind:function(arm,size=0x14) addr:0x020747ec +_ZN26UnkStruct_027e09b8_04_BaseD1Ev kind:function(arm,size=0x4) addr:0x020747e8 +_ZN26UnkStruct_027e09b8_04_BaseD0Ev kind:function(arm,size=0x14) addr:0x020747ec func_ov000_02074800 kind:function(arm,size=0x4) addr:0x02074800 -func_ov000_02074804 kind:function(arm,size=0x8) addr:0x02074804 -func_ov000_0207480c kind:function(arm,size=0x14) addr:0x0207480c -func_ov000_02074820 kind:function(arm,size=0x4) addr:0x02074820 -func_ov000_02074824 kind:function(arm,size=0x4) addr:0x02074824 -func_ov000_02074828 kind:function(arm,size=0x8) addr:0x02074828 -func_ov000_02074830 kind:function(arm,size=0xc) addr:0x02074830 +_ZN26UnkStruct_027e09b8_04_Base8vfunc_08Ev kind:function(arm,size=0x8) addr:0x02074804 +_ZN26UnkStruct_027e09b8_04_Base8vfunc_0CEv kind:function(arm,size=0x14) addr:0x0207480c +_ZN26UnkStruct_027e09b8_04_Base8vfunc_14Ev kind:function(arm,size=0x4) addr:0x02074820 +_ZN26UnkStruct_027e09b8_04_Base8vfunc_18Ev kind:function(arm,size=0x4) addr:0x02074824 +_ZN26UnkStruct_027e09b8_04_Base8vfunc_1CEv kind:function(arm,size=0x8) addr:0x02074828 +_ZN26UnkStruct_027e09b8_04_Base8vfunc_20Ev kind:function(arm,size=0xc) addr:0x02074830 _ZN20MapObject_UnkStruct19vfunc2_00Ev kind:function(arm,size=0x4) addr:0x0207483c _ZN20MapObject_UnkStruct19vfunc2_04Ev kind:function(arm,size=0x4) addr:0x02074840 _ZN20MapObject_UnkStruct19vfunc2_08Ev kind:function(arm,size=0x4) addr:0x02074844 @@ -1133,18 +1133,18 @@ func_ov000_020749e4 kind:function(arm,size=0x5c) addr:0x020749e4 _ZN18UnkStruct_027e09b819func_ov000_02073388EPvi kind:function(arm,size=0xe8) addr:0x02074a40 _ZN18UnkStruct_027e09b819func_ov000_02073470EPvi kind:function(arm,size=0x108) addr:0x02074b28 _ZN18UnkStruct_027e09b819func_ov000_02073578EPvi kind:function(arm,size=0x98) addr:0x02074c30 -func_ov000_02074cc8 kind:function(arm,size=0xb0) addr:0x02074cc8 +_ZN18UnkStruct_027e09b819func_ov000_02073610EPvi kind:function(arm,size=0xb0) addr:0x02074cc8 _ZN18UnkStruct_027e09b819func_ov000_02074d78Ei kind:function(arm,size=0x10) addr:0x02074d78 func_ov000_02074d88 kind:function(arm,size=0x8) addr:0x02074d88 func_ov000_02074d90 kind:function(arm,size=0x8) addr:0x02074d90 -func_ov000_02074d98 kind:function(arm,size=0x38) addr:0x02074d98 +_ZN21UnkStruct_027e09b8_00C1Ev kind:function(arm,size=0x38) addr:0x02074d98 func_ov000_02074dd0 kind:function(arm,size=0x2c) addr:0x02074dd0 func_ov000_02074dfc kind:function(arm,size=0x54) addr:0x02074dfc func_ov000_02074e50 kind:function(arm,size=0x60) addr:0x02074e50 func_ov000_02074eb0 kind:function(arm,size=0x94) addr:0x02074eb0 func_ov000_02074f44 kind:function(arm,size=0x124) addr:0x02074f44 func_ov000_02075068 kind:function(arm,size=0x1ac) addr:0x02075068 -func_ov000_02075214 kind:function(arm,size=0x64) addr:0x02075214 +_ZN21UnkStruct_027e09b8_0019func_ov000_02073b5cEv kind:function(arm,size=0x64) addr:0x02075214 func_ov000_02075278 kind:function(arm,size=0x114) addr:0x02075278 func_ov000_0207538c kind:function(arm,size=0x3c) addr:0x0207538c func_ov000_020753c8 kind:function(arm,size=0x170) addr:0x020753c8 @@ -1160,7 +1160,7 @@ func_ov000_02075b24 kind:function(arm,size=0xc4) addr:0x02075b24 func_ov000_02075be8 kind:function(arm,size=0xbc) addr:0x02075be8 _ZN19func_ov000_02075ca4D1Ev kind:function(arm,size=0x28) addr:0x02075ca4 _ZN19func_ov000_02075cccD0Ev kind:function(arm,size=0x30) addr:0x02075ccc -func_ov000_02075cfc kind:function(arm,size=0x6c) addr:0x02075cfc +_ZN21UnkStruct_027e09b8_10C1Ev kind:function(arm,size=0x6c) addr:0x02075cfc func_ov000_02075d68 kind:function(arm,size=0x8) addr:0x02075d68 func_ov000_02075d70 kind:function(arm,size=0xc) addr:0x02075d70 func_ov000_02075d7c kind:function(arm,size=0x50) addr:0x02075d7c @@ -1181,7 +1181,7 @@ func_ov000_0207662c kind:function(arm,size=0x38) addr:0x0207662c func_ov000_02076664 kind:function(arm,size=0x28) addr:0x02076664 func_ov000_0207668c kind:function(arm,size=0x14) addr:0x0207668c _ZN19func_ov000_020766a0D0Ev kind:function(arm,size=0x40) addr:0x020766a0 -func_ov000_020766e0 kind:function(arm,size=0x54) addr:0x020766e0 +_ZN25UnkSystem1_ov000_Derived3C1Ev kind:function(arm,size=0x54) addr:0x020766e0 func_ov000_02076734 kind:function(arm,size=0x80) addr:0x02076734 func_ov000_020767b4 kind:function(arm,size=0x28) addr:0x020767b4 func_ov000_020767dc kind:function(arm,size=0x38) addr:0x020767dc @@ -1220,7 +1220,7 @@ func_ov000_02078814 kind:function(arm,size=0x2c) addr:0x02078814 func_ov000_02078840 kind:function(arm,size=0x14) addr:0x02078840 func_ov000_02078854 kind:function(arm,size=0x1c) addr:0x02078854 func_ov000_02078870 kind:function(arm,size=0x10) addr:0x02078870 -func_ov000_02078880 kind:function(arm,size=0x188) addr:0x02078880 +_ZN18UnkStruct_027e09bc19func_ov000_020771c8Ev kind:function(arm,size=0x188) addr:0x02078880 func_ov000_02078a08 kind:function(arm,size=0xf4) addr:0x02078a08 func_ov000_02078afc kind:function(arm,size=0x24) addr:0x02078afc func_ov000_02078b20 kind:function(arm,size=0x18) addr:0x02078b20 @@ -1452,7 +1452,7 @@ func_ov000_0207ef50 kind:function(arm,size=0x5c) addr:0x0207ef50 func_ov000_0207efac kind:function(arm,size=0x6c) addr:0x0207efac func_ov000_0207f018 kind:function(arm,size=0x98) addr:0x0207f018 func_ov000_0207f0b0 kind:function(arm,size=0x48) addr:0x0207f0b0 -func_ov000_0207f0f8 kind:function(arm,size=0x20c) addr:0x0207f0f8 +_ZN18UnkStruct_027e09c019func_ov000_0207da40Ev kind:function(arm,size=0x20c) addr:0x0207f0f8 func_ov000_0207f304 kind:function(arm,size=0x18) addr:0x0207f304 func_ov000_0207f31c kind:function(arm,size=0x24) addr:0x0207f31c func_ov000_0207f340 kind:function(arm,size=0x210) addr:0x0207f340 @@ -1532,20 +1532,20 @@ func_ov000_02081164 kind:function(arm,size=0x8) addr:0x02081164 func_ov000_0208116c kind:function(arm,size=0x8) addr:0x0208116c func_ov000_02081174 kind:function(arm,size=0x10) addr:0x02081174 func_ov000_02081184 kind:function(arm,size=0x64) addr:0x02081184 -func_ov000_020811e8 kind:function(arm,size=0x30) addr:0x020811e8 +_ZN33UnkStruct_027e0cd8_0C_Base_148_00C1EP12ZMBEntryARAB kind:function(arm,size=0x30) addr:0x020811e8 func_ov000_02081218 kind:function(arm,size=0x30) addr:0x02081218 func_ov000_02081248 kind:function(arm,size=0x8) addr:0x02081248 func_ov000_02081250 kind:function(arm,size=0x38) addr:0x02081250 func_ov000_02081288 kind:function(arm,size=0x40) addr:0x02081288 -func_ov000_020812c8 kind:function(arm,size=0x44) addr:0x020812c8 -func_ov000_0208130c kind:function(arm,size=0x3c) addr:0x0208130c +_ZN33UnkStruct_027e0cd8_0C_Base_148_01C1EP12ZMBEntryARAB kind:function(arm,size=0x44) addr:0x020812c8 +_ZN33UnkStruct_027e0cd8_0C_Base_148_02C1EP12ZMBEntryARAB kind:function(arm,size=0x3c) addr:0x0208130c func_ov000_02081348 kind:function(arm,size=0x3c) addr:0x02081348 func_ov000_02081384 kind:function(arm,size=0x44) addr:0x02081384 -func_ov000_020813c8 kind:function(arm,size=0x4) addr:0x020813c8 -func_ov000_020813cc kind:function(arm,size=0x4) addr:0x020813cc -func_ov000_020813d0 kind:function(arm,size=0x28) addr:0x020813d0 -func_ov000_020813f8 kind:function(arm,size=0x38) addr:0x020813f8 -func_ov000_02081430 kind:function(arm,size=0x4) addr:0x02081430 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_24Ev kind:function(arm,size=0x4) addr:0x020813c8 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_10Ev kind:function(arm,size=0x4) addr:0x020813cc +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_0CEv kind:function(arm,size=0x28) addr:0x020813d0 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_14Ev kind:function(arm,size=0x38) addr:0x020813f8 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_18Ev kind:function(arm,size=0x4) addr:0x02081430 Unknown_func_ov000_0207fd7c kind:function(arm,size=0x40) addr:0x02081434 func_ov000_02081474 kind:function(arm,size=0x250) addr:0x02081474 func_ov000_020816c4 kind:function(arm,size=0x5c) addr:0x020816c4 @@ -1553,30 +1553,30 @@ func_ov000_02081720 kind:function(arm,size=0x18) addr:0x02081720 func_ov000_02081738 kind:function(arm,size=0x18) addr:0x02081738 func_ov000_02081750 kind:function(arm,size=0xc8) addr:0x02081750 func_ov000_02081818 kind:function(arm,size=0x20) addr:0x02081818 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_02080180EPv kind:function(arm,size=0x10) addr:0x02081838 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_02080180EPv kind:function(arm,size=0x10) addr:0x02081838 func_ov000_02081848 kind:function(arm,size=0x20) addr:0x02081848 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_020801b0EP5Vec2bii kind:function(arm,size=0x60) addr:0x02081868 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020801b0EP5Vec2bii kind:function(arm,size=0x60) addr:0x02081868 func_ov000_020818c8 kind:function(arm,size=0x78) addr:0x020818c8 func_ov000_02081940 kind:function(arm,size=0x64) addr:0x02081940 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_020802ecEtP7VecFx32 kind:function(arm,size=0x78) addr:0x020819a4 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020802ecEtP7VecFx32 kind:function(arm,size=0x78) addr:0x020819a4 func_ov000_02081a1c kind:function(arm,size=0x88) addr:0x02081a1c -_ZN21UnkStruct_027e0cd8_0c19func_ov000_020803ecEt kind:function(arm,size=0x150) addr:0x02081aa4 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_0208053cEt kind:function(arm,size=0xe4) addr:0x02081bf4 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020803ecEt kind:function(arm,size=0x150) addr:0x02081aa4 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_0208053cEt kind:function(arm,size=0xe4) addr:0x02081bf4 func_ov000_02081cd8 kind:function(arm,size=0x38) addr:0x02081cd8 func_ov000_02081d10 kind:function(arm,size=0xd8) addr:0x02081d10 func_ov000_02081de8 kind:function(arm,size=0x64) addr:0x02081de8 func_ov000_02081e4c kind:function(arm,size=0xac) addr:0x02081e4c func_ov000_02081ef8 kind:function(arm,size=0x6c) addr:0x02081ef8 -func_ov000_02081f64 kind:function(arm,size=0x20) addr:0x02081f64 -func_ov000_02081f84 kind:function(arm,size=0x8) addr:0x02081f84 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_2CEv kind:function(arm,size=0x20) addr:0x02081f64 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_3CEv kind:function(arm,size=0x8) addr:0x02081f84 func_ov000_02081f8c kind:function(arm,size=0x20) addr:0x02081f8c -_ZN21UnkStruct_027e0cd8_0c19func_ov000_020808f4EPvS0_i kind:function(arm,size=0x5c) addr:0x02081fac +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_020808f4EPvS0_i kind:function(arm,size=0x5c) addr:0x02081fac func_ov000_02082008 kind:function(arm,size=0x48) addr:0x02082008 func_ov000_02082050 kind:function(arm,size=0x40) addr:0x02082050 func_ov000_02082090 kind:function(arm,size=0x6c) addr:0x02082090 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_02080a44Ev kind:function(arm,size=0x18) addr:0x020820fc -_ZN21UnkStruct_027e0cd8_0c19func_ov000_02080a5cEP7VecFx32 kind:function(arm,size=0x1c) addr:0x02082114 -_ZN21UnkStruct_027e0cd8_0c19func_ov000_02080a78EP7VecFx32 kind:function(arm,size=0x18) addr:0x02082130 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_02080a44Ev kind:function(arm,size=0x18) addr:0x020820fc +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_02080a5cEP7VecFx32 kind:function(arm,size=0x1c) addr:0x02082114 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov000_02080a78EP7VecFx32 kind:function(arm,size=0x18) addr:0x02082130 func_ov000_02082148 kind:function(arm,size=0x1c) addr:0x02082148 func_ov000_02082164 kind:function(arm,size=0x18) addr:0x02082164 func_ov000_0208217c kind:function(arm,size=0x68) addr:0x0208217c @@ -1591,14 +1591,14 @@ func_ov000_02082770 kind:function(arm,size=0x7c) addr:0x02082770 func_ov000_020827ec kind:function(arm,size=0x4) addr:0x020827ec func_ov000_020827f0 kind:function(arm,size=0x18) addr:0x020827f0 func_ov000_02082808 kind:function(arm,size=0x70) addr:0x02082808 -func_ov000_02082878 kind:function(arm,size=0xb0) addr:0x02082878 -func_ov000_02082928 kind:function(arm,size=0x24) addr:0x02082928 +_ZN21UnkStruct_027e0cd8_04C1Ev kind:function(arm,size=0xb0) addr:0x02082878 +_ZN21UnkStruct_027e0cd8_04D1Ev kind:function(arm,size=0x24) addr:0x02082928 func_ov000_0208294c kind:function(arm,size=0x6c) addr:0x0208294c func_ov000_020829b8 kind:function(arm,size=0x54) addr:0x020829b8 -func_ov000_02082a0c kind:function(arm,size=0x118) addr:0x02082a0c +_ZN21UnkStruct_027e0cd8_0419func_ov000_02081354EPK15CourseListEntryPK29UnkStruct_func_ov000_020702a8P28SaveFile_00000_0000_Data_184b kind:function(arm,size=0x118) addr:0x02082a0c func_ov000_02082b24 kind:function(arm,size=0x80) addr:0x02082b24 -func_ov000_02082ba4 kind:function(arm,size=0x34) addr:0x02082ba4 -func_ov000_02082bd8 kind:function(arm,size=0x54) addr:0x02082bd8 +func_ov000_020814ec kind:function(arm,size=0x34) addr:0x02082ba4 +func_ov000_02081520 kind:function(arm,size=0x54) addr:0x02082bd8 func_ov000_02082c2c kind:function(arm,size=0x8c) addr:0x02082c2c func_ov000_02082cb8 kind:function(arm,size=0x2c) addr:0x02082cb8 func_ov000_02082ce4 kind:function(arm,size=0x28) addr:0x02082ce4 @@ -1627,7 +1627,7 @@ func_ov000_0208323c kind:function(arm,size=0x18) addr:0x0208323c func_ov000_02083254 kind:function(arm,size=0x58) addr:0x02083254 func_ov000_020832ac kind:function(arm,size=0x34) addr:0x020832ac _ZN18UnkStruct_027e0cd819func_ov000_02081c28Ev kind:function(arm,size=0x78) addr:0x020832e0 -func_ov000_02083358 kind:function(arm,size=0xa8) addr:0x02083358 +_ZN18UnkStruct_027e0cd819func_ov000_02081ca0Ev kind:function(arm,size=0xa8) addr:0x02083358 func_ov000_02083400 kind:function(arm,size=0x10) addr:0x02083400 func_ov000_02083410 kind:function(arm,size=0x4) addr:0x02083410 _ZN18UnkStruct_027e0cd819func_ov000_02081d5cEv kind:function(arm,size=0x20) addr:0x02083414 @@ -1652,12 +1652,12 @@ _ZN19func_ov000_020839b8D0Ev kind:function(arm,size=0x1c) addr:0x020839b8 _ZN19func_ov000_020839d4D2Ev kind:function(arm,size=0x14) addr:0x020839d4 func_ov000_020839e8 kind:function(arm,size=0x4) addr:0x020839e8 func_ov000_020839ec kind:function(arm,size=0x8) addr:0x020839ec -func_ov000_020839f4 kind:function(arm,size=0x1c) addr:0x020839f4 +_ZN29UnkStruct_027e0cd8_0C_Base_88C1Ev kind:function(arm,size=0x1c) addr:0x020839f4 func_ov000_02083a10 kind:function(arm,size=0x20) addr:0x02083a10 func_ov000_02083a30 kind:function(arm,size=0x30) addr:0x02083a30 -func_ov000_02083a60 kind:function(arm,size=0x258) addr:0x02083a60 +_ZN29UnkStruct_027e0cd8_0C_Base_8819func_ov000_020823a8Ei kind:function(arm,size=0x258) addr:0x02083a60 func_ov000_02083cb8 kind:function(arm,size=0x1c) addr:0x02083cb8 -func_ov000_02083cd4 kind:function(arm,size=0x68) addr:0x02083cd4 +_ZN29UnkStruct_027e0cd8_0C_Base_8819func_ov000_0208261cEv kind:function(arm,size=0x68) addr:0x02083cd4 func_ov000_02083d3c kind:function(arm,size=0x34) addr:0x02083d3c func_ov000_02083d70 kind:function(arm,size=0x90) addr:0x02083d70 func_ov000_02083e00 kind:function(arm,size=0x14) addr:0x02083e00 @@ -2961,12 +2961,12 @@ func_ov000_020a8fd0 kind:function(arm,size=0x5c) addr:0x020a8fd0 _Z22Cutscene_GetParamEntryi kind:function(arm,size=0x14) addr:0x020a902c func_ov000_020a9040 kind:function(arm,size=0x84) addr:0x020a9040 _Z27Cutscene_IsAdventureFlagSeti kind:function(arm,size=0x44) addr:0x020a90c4 -func_ov000_020a9108 kind:function(arm,size=0xdc) addr:0x020a9108 +_ZN21UnkStruct_027e09b8_98C1Ev kind:function(arm,size=0xdc) addr:0x020a9108 func_ov000_020a91e4 kind:function(arm,size=0x6c) addr:0x020a91e4 func_ov000_020a9250 kind:function(arm,size=0x20) addr:0x020a9250 -func_ov000_020a9270 kind:function(arm,size=0xa8) addr:0x020a9270 +_ZN21UnkStruct_027e09b8_98D1Ev kind:function(arm,size=0xa8) addr:0x020a9270 func_ov000_020a9318 kind:function(arm,size=0x1c) addr:0x020a9318 -func_ov000_020a9334 kind:function(arm,size=0x74) addr:0x020a9334 +_ZN21UnkStruct_027e09b8_9819func_ov000_020a7b34Ev kind:function(arm,size=0x74) addr:0x020a9334 func_ov000_020a93a8 kind:function(arm,size=0x98) addr:0x020a93a8 func_ov000_020a9440 kind:function(arm,size=0x4c) addr:0x020a9440 func_ov000_020a948c kind:function(arm,size=0x24) addr:0x020a948c @@ -3503,10 +3503,10 @@ data_ov000_020b3a44 kind:data(any) addr:0x020b3a44 data_ov000_020b3a64 kind:data(any) addr:0x020b3a64 data_ov000_020b3a90 kind:data(any) addr:0x020b3a90 data_ov000_020b3aa8 kind:data(any) addr:0x020b3aa8 -data_ov000_020b3ac0 kind:data(any) addr:0x020b3ac0 +_ZTV21UnkStruct_027e09b8_04 kind:data(any) addr:0x020b3ab8 data_ov000_020b3aec kind:data(any) addr:0x020b3aec _ZTV19data_ov000_020b3b14 kind:data(any) addr:0x020b3b14 -data_ov000_020b3b4c kind:data(any) addr:0x020b3b4c +_ZTV21UnkStruct_027e09b8_0C kind:data(any) addr:0x020b3b44 data_ov000_020b3b78 kind:data(any) addr:0x020b3b78 _ZTV19data_ov000_020b3b7c kind:data(any) addr:0x020b3b7c _ZTV19data_ov000_020b3b98 kind:data(any) addr:0x020b3b98 @@ -3546,7 +3546,7 @@ data_ov000_020b40e0 kind:data(any) addr:0x020b40e0 data_ov000_020b40f8 kind:data(any) addr:0x020b40f8 data_ov000_020b410c kind:data(any) addr:0x020b410c data_ov000_020b4120 kind:data(any) addr:0x020b4120 -data_ov000_020b4140 kind:data(any) addr:0x020b4140 +_ZTV10UnkSystem8 kind:data(any) addr:0x020b4138 data_ov000_020b414c kind:data(any) addr:0x020b414c data_ov000_020b4154 kind:data(any) addr:0x020b4154 data_ov000_020b4164 kind:data(any) addr:0x020b4164 diff --git a/config/jp/arm9/overlays/ov001/delinks.txt b/config/jp/arm9/overlays/ov001/delinks.txt index 60c847a8..ad335ebe 100644 --- a/config/jp/arm9/overlays/ov001/delinks.txt +++ b/config/jp/arm9/overlays/ov001/delinks.txt @@ -18,16 +18,20 @@ src/001_SceneInit/CourseList.cpp: .bss start:0x020c4820 end:0x020c5928 src/001_SceneInit/UnkStruct_027e09b8_001.cpp: + complete .text start:0x020b8d84 end:0x020b8f94 src/001_SceneInit/UnkStruct_027e0cd8_001.cpp: + complete .text start:0x020b8f94 end:0x020b9a20 + .data start:0x020c41b0 end:0x020c4234 src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp: - .text start:0x020b9a20 end:0x020ba6b4 - -src/001_SceneInit/UnkStruct_027e0cd8_0C_148_154_001.cpp: - .text start:0x020ba6b4 end:0x020baab0 + .text start:0x020b9a20 end:0x020baab0 + .init start:0x020c408c end:0x020c4144 + .bss start:0x020c5928 end:0x020c5f34 + .data start:0x020c4234 end:0x020c437c + .ctor start:0x020c4158 end:0x020c415c src/001_SceneInit/ZeldaArrangeBinary.cpp: .text start:0x020baab0 end:0x020bacf0 diff --git a/config/jp/arm9/overlays/ov001/relocs.txt b/config/jp/arm9/overlays/ov001/relocs.txt index bde5bba9..53443d79 100644 --- a/config/jp/arm9/overlays/ov001/relocs.txt +++ b/config/jp/arm9/overlays/ov001/relocs.txt @@ -314,8 +314,8 @@ from:0x020b8e48 kind:thumb_call_arm to:0x02011f3c module:main from:0x020b8e50 kind:thumb_call_arm to:0x02075cfc module:overlay(0) from:0x020b8e5c kind:thumb_call_arm to:0x02011f3c module:main from:0x020b8e64 kind:thumb_call_arm to:0x020a9108 module:overlay(0) -from:0x020b8e78 kind:load to:0x020b3ac0 module:overlay(0) -from:0x020b8e7c kind:load to:0x020b3b4c module:overlay(0) +from:0x020b8e78 kind:load to:0x020b3ab8 module:overlay(0) add:0x8 +from:0x020b8e7c kind:load to:0x020b3b44 module:overlay(0) add:0x8 from:0x020b8e80 kind:load to:0x0204b608 module:main from:0x020b8ea6 kind:thumb_call_arm to:0x02011ff4 module:main from:0x020b8eb8 kind:thumb_call_arm to:0x020a9270 module:overlay(0) @@ -339,7 +339,7 @@ from:0x020b8fa4 kind:thumb_call to:0x020b8fac module:overlay(1) from:0x020b8fb0 kind:thumb_call to:0x020b9a08 module:overlay(1) from:0x020b8fca kind:thumb_call_arm to:0x02016614 module:main from:0x020b8fe6 kind:thumb_call_arm to:0x0201668c module:main -from:0x020b900c kind:load to:0x020b4140 module:overlay(0) +from:0x020b900c kind:load to:0x020b4138 module:overlay(0) add:0x8 from:0x020b9010 kind:load to:0x027e09bc module:dtcm from:0x020b9020 kind:thumb_call_arm to:0x02082928 module:overlay(0) from:0x020b9026 kind:thumb_call_arm to:0x02011ff4 module:main @@ -441,8 +441,8 @@ from:0x020b953e kind:thumb_call to:0x020b96a8 module:overlay(1) from:0x020b955c kind:thumb_call_arm to:0x02083414 module:overlay(0) from:0x020b9568 kind:thumb_call_arm to:0x020cc828 module:overlay(24) from:0x020b9576 kind:thumb_call_arm to:0x020cc850 module:overlay(24) -from:0x020b9580 kind:load to:0x021668f0 module:overlays(59,68,84) -from:0x020b9598 kind:load to:0x02163428 module:overlays(62,66,84) +from:0x020b9580 kind:load to:0x021668f0 module:overlay(84) +from:0x020b9598 kind:load to:0x02163428 module:overlay(84) from:0x020b959c kind:load to:0x027e09a4 module:dtcm from:0x020b95a0 kind:load to:0x020da034 module:overlay(24) from:0x020b95b2 kind:thumb_call_arm to:0x02071954 module:overlay(0) @@ -539,7 +539,7 @@ from:0x020b9a58 kind:thumb_call to:0x020154e8 module:main from:0x020b9a6c kind:thumb_call_arm to:0x020839f4 module:overlay(0) from:0x020b9bfe kind:thumb_call to:0x020bc6e8 module:overlay(1) from:0x020b9c06 kind:thumb_call to:0x0205a820 module:overlay(0) -from:0x020b9c10 kind:load to:0x020c423c module:overlay(1) +from:0x020b9c10 kind:load to:0x020c4234 module:overlay(1) add:0x8 from:0x020b9c14 kind:load to:0x027e0c90 module:dtcm from:0x020b9c18 kind:load to:0x027e0ca8 module:dtcm from:0x020b9c1c kind:load to:0x027e0c9c module:dtcm @@ -551,7 +551,7 @@ from:0x020b9c30 kind:load to:0x027e0ce8 module:dtcm from:0x020b9c34 kind:load to:0x027e095c module:dtcm from:0x020b9c44 kind:thumb_call to:0x0205a868 module:overlay(0) from:0x020b9c4c kind:thumb_call to:0x020bc770 module:overlay(1) -from:0x020b9c5c kind:thumb_call_arm to:0x02131f24 module:overlays(26,47) +from:0x020b9c5c kind:thumb_call_arm to:0x02131f24 module:overlay(47) from:0x020b9c62 kind:thumb_call_arm to:0x02011ff4 module:main from:0x020b9c94 kind:thumb_call to:0x020ba32c module:overlay(1) from:0x020b9c9e kind:thumb_call to:0x020ba6cc module:overlay(1) @@ -559,12 +559,12 @@ from:0x020b9ca6 kind:thumb_call to:0x020ba73c module:overlay(1) from:0x020b9cae kind:thumb_call to:0x02015504 module:main from:0x020b9cb6 kind:thumb_call to:0x0205910c module:overlay(0) from:0x020b9cbc kind:thumb_call to:0x02015414 module:main -from:0x020b9cc4 kind:load to:0x020c423c module:overlay(1) +from:0x020b9cc4 kind:load to:0x020c4234 module:overlay(1) add:0x8 from:0x020b9cc8 kind:load to:0x027e095c module:dtcm from:0x020b9ccc kind:load to:0x027e0ce8 module:dtcm from:0x020b9cdc kind:thumb_call to:0x0205a868 module:overlay(0) from:0x020b9ce4 kind:thumb_call to:0x020bc770 module:overlay(1) -from:0x020b9cf4 kind:thumb_call_arm to:0x02131f24 module:overlays(26,47) +from:0x020b9cf4 kind:thumb_call_arm to:0x02131f24 module:overlay(47) from:0x020b9cfa kind:thumb_call_arm to:0x02011ff4 module:main from:0x020b9d2c kind:thumb_call to:0x020ba32c module:overlay(1) from:0x020b9d36 kind:thumb_call to:0x020ba6cc module:overlay(1) @@ -573,12 +573,12 @@ from:0x020b9d46 kind:thumb_call to:0x02015504 module:main from:0x020b9d4e kind:thumb_call to:0x0205910c module:overlay(0) from:0x020b9d54 kind:thumb_call to:0x02015414 module:main from:0x020b9d5a kind:thumb_call_arm to:0x02011ff4 module:main -from:0x020b9d64 kind:load to:0x020c423c module:overlay(1) +from:0x020b9d64 kind:load to:0x020c4234 module:overlay(1) add:0x8 from:0x020b9d68 kind:load to:0x027e095c module:dtcm from:0x020b9d6c kind:load to:0x027e0ce8 module:dtcm from:0x020b9d7c kind:thumb_call to:0x0205a868 module:overlay(0) from:0x020b9d84 kind:thumb_call to:0x020bc770 module:overlay(1) -from:0x020b9d94 kind:thumb_call_arm to:0x02131f24 module:overlays(26,47) +from:0x020b9d94 kind:thumb_call_arm to:0x02131f24 module:overlay(47) from:0x020b9d9a kind:thumb_call_arm to:0x02011ff4 module:main from:0x020b9dcc kind:thumb_call to:0x020ba32c module:overlay(1) from:0x020b9dd6 kind:thumb_call to:0x020ba6cc module:overlay(1) @@ -586,7 +586,7 @@ from:0x020b9dde kind:thumb_call to:0x020ba73c module:overlay(1) from:0x020b9de6 kind:thumb_call to:0x02015504 module:main from:0x020b9dee kind:thumb_call to:0x0205910c module:overlay(0) from:0x020b9df4 kind:thumb_call to:0x02015414 module:main -from:0x020b9dfc kind:load to:0x020c423c module:overlay(1) +from:0x020b9dfc kind:load to:0x020c4234 module:overlay(1) add:0x8 from:0x020b9e00 kind:load to:0x027e095c module:dtcm from:0x020b9e04 kind:load to:0x027e0ce8 module:dtcm from:0x020b9e30 kind:thumb_call_arm to:0x02027d30 module:main @@ -688,7 +688,7 @@ from:0x020ba5dc kind:load to:0x027e0c90 module:dtcm from:0x020ba660 kind:load to:0x02083a60 module:overlay(0) from:0x020ba682 kind:thumb_call_arm to:0x02011f3c module:main from:0x020ba68a kind:thumb_call_arm to:0x02131ec0 module:overlays(47,48,49,50,51,52) -from:0x020ba6a2 kind:thumb_call_arm to:0x02131f24 module:overlays(26,47) +from:0x020ba6a2 kind:thumb_call_arm to:0x02131f24 module:overlay(47) from:0x020ba6a8 kind:thumb_call_arm to:0x02011ff4 module:main from:0x020ba6bc kind:thumb_call to:0x020ba758 module:overlay(1) from:0x020ba6c6 kind:thumb_call to:0x020ba7d8 module:overlay(1) @@ -2318,12 +2318,9 @@ from:0x020c2242 kind:thumb_call_arm to:0x020c2868 module:overlay(1) from:0x020c226c kind:load to:0x020c21f1 module:overlay(1) from:0x020c2270 kind:load to:0x020c2215 module:overlay(1) from:0x020c2274 kind:load to:0x020c5f3c module:overlay(1) -from:0x020c2328 kind:load to:0x020c426c module:overlay(1) -from:0x020c23e0 kind:load to:0x020c42e4 module:overlay(1) from:0x020c2494 kind:load to:0x020c47a0 module:overlay(1) from:0x020c2498 kind:load to:0x020c417c module:overlays(2,4) from:0x020c254c kind:load to:0x020c4818 module:overlay(1) -from:0x020c2550 kind:load to:0x020c41f4 module:overlay(1) from:0x020c26f0 kind:load to:0x020c5f41 module:overlay(1) from:0x020c2768 kind:load to:0x020c5f41 module:overlay(1) from:0x020c27e0 kind:load to:0x020c5f41 module:overlay(1) @@ -2340,9 +2337,6 @@ from:0x020c2ed4 kind:load to:0x020c5f41 module:overlay(1) from:0x020c2ee0 kind:load to:0x020c3f90 module:overlay(1) from:0x020c2f4c kind:load to:0x020c5f41 module:overlay(1) from:0x020c2f6c kind:load to:0x020c417c module:overlays(2,4) -from:0x020c2f74 kind:load to:0x020c41f4 module:overlay(1) -from:0x020c2f7c kind:load to:0x020c426c module:overlay(1) -from:0x020c2f84 kind:load to:0x020c42e4 module:overlay(1) from:0x020c30f8 kind:load to:0x020c5f40 module:overlay(1) from:0x020c3184 kind:load to:0x020c5f40 module:overlay(1) from:0x020c3214 kind:load to:0x020c5f40 module:overlay(1) @@ -2382,9 +2376,9 @@ from:0x020c4128 kind:load to:0x020c5934 module:overlay(1) from:0x020c412c kind:load to:0x020baa99 module:overlay(1) from:0x020c4130 kind:load to:0x020c5928 module:overlay(1) from:0x020c4134 kind:load to:0x020c4280 module:overlay(1) -from:0x020c4138 kind:load to:0x020c4294 module:overlay(1) -from:0x020c413c kind:load to:0x020c42a8 module:overlay(1) -from:0x020c4140 kind:load to:0x020c42bc module:overlay(1) +from:0x020c4138 kind:load to:0x020c4280 add:0x14 module:overlay(1) +from:0x020c413c kind:load to:0x020c4280 add:0x28 module:overlay(1) +from:0x020c4140 kind:load to:0x020c4280 add:0x3c module:overlay(1) from:0x020c4150 kind:load to:0x020c4814 module:overlay(1) from:0x020c4154 kind:load to:0x020c4069 module:overlay(1) from:0x020c4158 kind:load to:0x020c408d module:overlay(1) diff --git a/config/jp/arm9/overlays/ov001/symbols.txt b/config/jp/arm9/overlays/ov001/symbols.txt index bae8c2ef..f9c20760 100644 --- a/config/jp/arm9/overlays/ov001/symbols.txt +++ b/config/jp/arm9/overlays/ov001/symbols.txt @@ -43,77 +43,77 @@ _ZN18UnkStruct_027e09a015InitCourseTableEv kind:function(thumb,size=0x32) addr:0 _ZN8InstanceI18UnkStruct_027e09a0EC2Ev kind:function(thumb,size=0xc) addr:0x020b8d6c _ZN8InstanceI18UnkStruct_027e09a0ED2Ev kind:function(thumb,size=0xc) addr:0x020b8d78 _ZN18UnkStruct_027e09b86CreateEv kind:function(thumb,size=0x16) addr:0x020b8d84 -func_ov001_020b7574 kind:function(thumb,size=0xec) addr:0x020b8d9c +_ZN18UnkStruct_027e09b8C1Ev kind:function(thumb,size=0xec) addr:0x020b8d9c _ZN18UnkStruct_027e09b8D1Ev kind:function(thumb,size=0x4c) addr:0x020b8e88 -func_ov001_020b76ac kind:function(thumb,size=0x14) addr:0x020b8ed4 +_ZN18UnkStruct_027e09b820ImportAdventureFlagsEPj kind:function(thumb,size=0x14) addr:0x020b8ed4 _ZN18UnkStruct_027e09b819func_ov001_020b76c0Ej kind:function(thumb,size=0x40) addr:0x020b8ee8 _ZN18UnkStruct_027e09b819func_ov001_020b7700Ev kind:function(thumb,size=0x28) addr:0x020b8f28 -func_ov001_020b7728 kind:function(thumb,size=0x2c) addr:0x020b8f50 -func_ov001_020b7754 kind:function(thumb,size=0xc) addr:0x020b8f7c -func_ov001_020b7760 kind:function(thumb,size=0xc) addr:0x020b8f88 +_ZN18UnkStruct_027e09b819func_ov001_020b7728Ev kind:function(thumb,size=0x2c) addr:0x020b8f50 +_ZN8InstanceI18UnkStruct_027e09b8EC2Ev kind:function(thumb,size=0xc) addr:0x020b8f7c +_ZN8InstanceI18UnkStruct_027e09b8ED2Ev kind:function(thumb,size=0xc) addr:0x020b8f88 _ZN18UnkStruct_027e0cd86CreateEv kind:function(thumb,size=0x16) addr:0x020b8f94 -func_ov001_020b7784 kind:function(thumb,size=0x68) addr:0x020b8fac +_ZN18UnkStruct_027e0cd8C1Ev kind:function(thumb,size=0x68) addr:0x020b8fac _ZN18UnkStruct_027e0cd8D1Ev kind:function(thumb,size=0x42) addr:0x020b9014 -_ZN18UnkStruct_027e0cd819func_ov001_020b7830EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x24c) addr:0x020b9058 +_ZN18UnkStruct_027e0cd819func_ov001_020b7830EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x24c) addr:0x020b9058 _ZN18UnkStruct_027e0cd819func_ov001_020b7a7cEv kind:function(thumb,size=0xbc) addr:0x020b92a4 -func_ov001_020b7b38 kind:function(thumb,size=0xd0) addr:0x020b9360 -_ZN18UnkStruct_027e0cd819func_ov001_020b7c08EP22UnkStruct_SceneChange1P21UnkStruct_WarpUnk1_A0 kind:function(thumb,size=0x174) addr:0x020b9430 -func_ov001_020b7d64 kind:function(thumb,size=0xec) addr:0x020b95a4 -func_ov001_020b7e50 kind:function(thumb,size=0x16) addr:0x020b9690 -func_ov001_020b7e68 kind:function(thumb,size=0x1d4) addr:0x020b96a8 -func_ov001_020b803c kind:function(thumb,size=0xc0) addr:0x020b987c -func_ov001_020b80fc kind:function(thumb,size=0x24) addr:0x020b993c -func_ov001_020b8120 kind:function(thumb,size=0x6c) addr:0x020b9960 -func_ov001_020b818c kind:function(thumb,size=0x3c) addr:0x020b99cc -func_ov001_020b81c8 kind:function(thumb,size=0xc) addr:0x020b9a08 -func_ov001_020b81d4 kind:function(thumb,size=0xc) addr:0x020b9a14 -_ZN21UnkStruct_027e0cd8_0cC1Ev kind:function(thumb,size=0x218) addr:0x020b9a20 -func_ov001_020b83f8 kind:function(thumb,size=0x98) addr:0x020b9c38 -func_ov001_020b8490 kind:function(thumb,size=0xa0) addr:0x020b9cd0 -func_ov001_020b8530 kind:function(thumb,size=0x98) addr:0x020b9d70 -func_ov001_020b85c8 kind:function(thumb,size=0x2) addr:0x020b9e08 -func_ov001_020b85cc kind:function(thumb,size=0x2) addr:0x020b9e0c -func_ov001_020b85d0 kind:function(thumb,size=0x2f0) addr:0x020b9e10 -func_ov001_020b88c0 kind:function(thumb,size=0x2c) addr:0x020ba100 -func_ov001_020b88ec kind:function(thumb,size=0x60) addr:0x020ba12c -func_ov001_020b894c kind:function(thumb,size=0xe0) addr:0x020ba18c -func_ov001_020b8a2c kind:function(thumb,size=0x2c) addr:0x020ba26c -func_ov001_020b8a58 kind:function(thumb,size=0x2) addr:0x020ba298 -_ZN21UnkStruct_027e0cd8_0c19func_ov001_020b8a5cEii kind:function(thumb,size=0x8e) addr:0x020ba29c -func_ov001_020b8aec kind:function(thumb,size=0xa8) addr:0x020ba32c -func_ov001_020b8b94 kind:function(thumb,size=0x9c) addr:0x020ba3d4 -func_ov001_020b8c30 kind:function(thumb,size=0x4e) addr:0x020ba470 -func_ov001_020b8c80 kind:function(thumb,size=0x10) addr:0x020ba4c0 -func_ov001_020b8c90 kind:function(thumb,size=0x8) addr:0x020ba4d0 -func_ov001_020b8c98 kind:function(thumb,size=0x8) addr:0x020ba4d8 -func_ov001_020b8ca0 kind:function(thumb,size=0x8) addr:0x020ba4e0 -func_ov001_020b8ca8 kind:function(thumb,size=0x2) addr:0x020ba4e8 -func_ov001_020b8cac kind:function(thumb,size=0xfc) addr:0x020ba4ec -func_ov001_020b8da8 kind:function(thumb,size=0xe) addr:0x020ba5e8 -func_ov001_020b8db8 kind:function(thumb,size=0x6c) addr:0x020ba5f8 -func_ov001_020b8e24 kind:function(thumb,size=0x30) addr:0x020ba664 -func_ov001_020b8e54 kind:function(thumb,size=0x20) addr:0x020ba694 -func_ov001_020b8e74 kind:function(thumb,size=0x18) addr:0x020ba6b4 -func_ov001_020b8e8c kind:function(thumb,size=0x1c) addr:0x020ba6cc -func_ov001_020b8ea8 kind:function(thumb,size=0x3c) addr:0x020ba6e8 -func_ov001_020b8ee4 kind:function(thumb,size=0x18) addr:0x020ba724 -func_ov001_020b8efc kind:function(thumb,size=0x1c) addr:0x020ba73c -func_ov001_020b8f18 kind:function(thumb,size=0x80) addr:0x020ba758 -func_ov001_020b8f98 kind:function(thumb,size=0xd4) addr:0x020ba7d8 -func_ov001_020b906c kind:function(thumb,size=0x80) addr:0x020ba8ac -func_ov001_020b90ec kind:function(thumb,size=0xc6) addr:0x020ba92c -func_ov001_020b91b4 kind:function(thumb,size=0x10) addr:0x020ba9f4 -func_ov001_020b91c4 kind:function(thumb,size=0x10) addr:0x020baa04 -func_ov001_020b91d4 kind:function(thumb,size=0x24) addr:0x020baa14 -func_ov001_020b91f8 kind:function(thumb,size=0x1c) addr:0x020baa38 -func_ov001_020b9214 kind:function(thumb,size=0x28) addr:0x020baa54 -func_ov001_020b923c kind:function(thumb,size=0x1c) addr:0x020baa7c -func_ov001_020b9258 kind:function(thumb,size=0x18) addr:0x020baa98 +_ZN18UnkStruct_027e0cd819func_ov001_020b7b38EPK15CourseListEntryPK29UnkStruct_func_ov000_020702a8 kind:function(thumb,size=0xd0) addr:0x020b9360 +_ZN18UnkStruct_027e0cd819func_ov001_020b7c08EPK22UnkStruct_SceneChange1PK21UnkStruct_WarpUnk1_A0 kind:function(thumb,size=0x174) addr:0x020b9430 +_ZN18UnkStruct_027e0cd819func_ov001_020b7d64EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0xec) addr:0x020b95a4 +_ZN18UnkStruct_027e0cd819func_ov001_020b7e50Ev kind:function(thumb,size=0x16) addr:0x020b9690 +_ZN18UnkStruct_027e0cd819func_ov001_020b7e68EPK22UnkStruct_SceneChange1b kind:function(thumb,size=0x1d4) addr:0x020b96a8 +_ZN18UnkStruct_027e0cd819func_ov001_020b803cEv kind:function(thumb,size=0xc0) addr:0x020b987c +_ZN18UnkStruct_027e0cd819func_ov001_020b80fcEj kind:function(thumb,size=0x24) addr:0x020b993c +_ZN18UnkStruct_027e0cd819func_ov001_020b8120Ej kind:function(thumb,size=0x6c) addr:0x020b9960 +_ZN18UnkStruct_027e0cd819func_ov001_020b818cEv kind:function(thumb,size=0x3c) addr:0x020b99cc +_ZN8InstanceI18UnkStruct_027e0cd8EC2Ev kind:function(thumb,size=0xc) addr:0x020b9a08 +_ZN8InstanceI18UnkStruct_027e0cd8ED2Ev kind:function(thumb,size=0xc) addr:0x020b9a14 +_ZN26UnkStruct_027e0cd8_0C_BaseC1EP18UnkStruct_027e0cd8 kind:function(thumb,size=0x218) addr:0x020b9a20 +_ZN26UnkStruct_027e0cd8_0C_BaseD1Ev kind:function(thumb,size=0x98) addr:0x020b9c38 +_ZN26UnkStruct_027e0cd8_0C_BaseD0Ev kind:function(thumb,size=0xa0) addr:0x020b9cd0 +_ZN26UnkStruct_027e0cd8_0C_BaseD2Ev kind:function(thumb,size=0x98) addr:0x020b9d70 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_38Ev kind:function(thumb,size=0x2) addr:0x020b9e08 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_08Ev kind:function(thumb,size=0x2) addr:0x020b9e0c +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b85d0EPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x2f0) addr:0x020b9e10 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b88c0Ei kind:function(thumb,size=0x2c) addr:0x020ba100 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b88ecEv kind:function(thumb,size=0x60) addr:0x020ba12c +_ZN26UnkStruct_027e0cd8_0C_Base14LoadSceneModelEPK22UnkStruct_SceneChange1 kind:function(thumb,size=0xe0) addr:0x020ba18c +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_1CEPK22UnkStruct_SceneChange1bb kind:function(thumb,size=0x2c) addr:0x020ba26c +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_20Ev kind:function(thumb,size=0x2) addr:0x020ba298 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8a5cEii kind:function(thumb,size=0x8e) addr:0x020ba29c +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8aecEv kind:function(thumb,size=0xa8) addr:0x020ba32c +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8b94EP12ZMBEntryARAB kind:function(thumb,size=0x9c) addr:0x020ba3d4 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c30ERK33UnkStruct_027e0cd8_0C_Base_154_00 kind:function(thumb,size=0x4e) addr:0x020ba470 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c80Ei kind:function(thumb,size=0x10) addr:0x020ba4c0 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c90Ei kind:function(thumb,size=0x8) addr:0x020ba4d0 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8c98Ei kind:function(thumb,size=0x8) addr:0x020ba4d8 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_34Ei kind:function(thumb,size=0x8) addr:0x020ba4e0 +_ZN24UnkStruct_ov001_020c40f4D1Ev kind:function(thumb,size=0x2) addr:0x020ba4e8 +_ZN26UnkStruct_027e0cd8_0C_Base8vfunc_40Eh kind:function(thumb,size=0xfc) addr:0x020ba4ec +_ZN24UnkStruct_ov001_020c40f4C1Ev kind:function(thumb,size=0xe) addr:0x020ba5e8 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8db8Ev kind:function(thumb,size=0x6c) addr:0x020ba5f8 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8e24Ev kind:function(thumb,size=0x30) addr:0x020ba664 +_ZN26UnkStruct_027e0cd8_0C_Base19func_ov001_020b8e54Ev kind:function(thumb,size=0x20) addr:0x020ba694 +_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE13sub_push_backERKS0_N10Metrowerks8int2typeILi0EEE kind:function(thumb,size=0x18) addr:0x020ba6b4 +_ZN12CustomVectorI33UnkStruct_027e0cd8_0C_Base_154_00ED1Ev kind:function(thumb,size=0x1c) addr:0x020ba6cc +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE5eraseEPS1_S4_13UnkMSLStruct1 kind:function(thumb,size=0x3c) addr:0x020ba6e8 +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE13sub_push_backERKS1_N10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x18) addr:0x020ba724 +_ZN12CustomVectorIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseED1Ev kind:function(thumb,size=0x1c) addr:0x020ba73c +_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE7grow_byEm kind:function(thumb,size=0x80) addr:0x020ba758 +_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE14append_reallocEmRKS0_ kind:function(thumb,size=0xd4) addr:0x020ba7d8 +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE7grow_byEm kind:function(thumb,size=0x80) addr:0x020ba8ac +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE14append_reallocEmRKS1_ kind:function(thumb,size=0xc6) addr:0x020ba92c +_ZNSt20__vec_deleter_helperI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EED1Ev kind:function(thumb,size=0x10) addr:0x020ba9f4 +_ZNSt20__vec_deleter_helperIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED1Ev kind:function(thumb,size=0x10) addr:0x020baa04 +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EE8allocateEmN10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x24) addr:0x020baa14 +_ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED2Ev kind:function(thumb,size=0x1c) addr:0x020baa38 +_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EE8allocateEmN10Metrowerks8int2typeILi1EEE kind:function(thumb,size=0x28) addr:0x020baa54 +_ZNSt13__vec_deleterI33UnkStruct_027e0cd8_0C_Base_154_00SaIS0_EED2Ev kind:function(thumb,size=0x1c) addr:0x020baa7c +__arraydtor$4129 kind:function(thumb,size=0x18) addr:0x020baa98 local func_ov001_020b9270 kind:function(thumb,size=0x70) addr:0x020baab0 func_ov001_020b92e0 kind:function(thumb,size=0x18c) addr:0x020bab20 func_ov001_020b946c kind:function(thumb,size=0x4) addr:0x020bacac func_ov001_020b9470 kind:function(thumb,size=0x3e) addr:0x020bacb0 -func_ov001_020b94b0 kind:function(thumb,size=0x164) addr:0x020bacf0 +ZMB_ParseFile kind:function(thumb,size=0x164) addr:0x020bacf0 func_ov001_020b9614 kind:function(thumb,size=0xe) addr:0x020bae54 func_ov001_020b9624 kind:function(thumb,size=0xfc) addr:0x020bae64 func_ov001_020b9720 kind:function(thumb,size=0x40) addr:0x020baf60 @@ -154,31 +154,31 @@ func_ov001_020ba9d0 kind:function(thumb,size=0x110) addr:0x020bc20c _ZN18UnkStruct_027e09bcD1Ev kind:function(thumb,size=0x7c) addr:0x020bc31c _ZN18UnkStruct_027e09bc19func_ov001_020bab5cEv kind:function(thumb,size=0x6c) addr:0x020bc398 _ZN18UnkStruct_027e09bc19func_ov001_020babc8Ev kind:function(thumb,size=0x20) addr:0x020bc404 -func_ov001_020babe8 kind:function(thumb,size=0x20) addr:0x020bc424 -func_ov001_020bac08 kind:function(thumb,size=0x20) addr:0x020bc444 +_ZN18UnkStruct_027e09bc19func_ov001_020babe8Ev kind:function(thumb,size=0x20) addr:0x020bc424 +_ZN18UnkStruct_027e09bc19func_ov001_020bac08Ev kind:function(thumb,size=0x20) addr:0x020bc444 func_ov001_020bac28 kind:function(thumb,size=0xc) addr:0x020bc464 func_ov001_020bac34 kind:function(thumb,size=0xc) addr:0x020bc470 _ZN16MapObjectManager6CreateEv kind:function(thumb,size=0x16) addr:0x020bc47c func_ov001_020bac58 kind:function(thumb,size=0x1e) addr:0x020bc494 _ZN16MapObjectManagerD1Ev kind:function(thumb,size=0x22) addr:0x020bc4b4 -func_ov001_020bac9c kind:function(thumb,size=0x3c) addr:0x020bc4d8 -func_ov001_020bacd8 kind:function(thumb,size=0xa8) addr:0x020bc514 -func_ov001_020bad80 kind:function(thumb,size=0x20) addr:0x020bc5bc -func_ov001_020bada0 kind:function(thumb,size=0x20) addr:0x020bc5dc -func_ov001_020badb4 kind:function(thumb,size=0x2c) addr:0x020bc5fc -func_ov001_020bade0 kind:function(thumb,size=0x60) addr:0x020bc628 -func_ov001_020bae40 kind:function(thumb,size=0x2c) addr:0x020bc688 -func_ov001_020bae6c kind:function(thumb,size=0x34) addr:0x020bc6b4 -func_ov001_020baea0 kind:function(thumb,size=0x88) addr:0x020bc6e8 -func_ov001_020baf28 kind:function(thumb,size=0x22) addr:0x020bc770 +_ZN16MapObjectManager19func_ov001_020bac9cEv kind:function(thumb,size=0x3c) addr:0x020bc4d8 +_ZN16MapObjectManager19func_ov001_020bacd8EP9ZOBHeader kind:function(thumb,size=0xa8) addr:0x020bc514 +_ZN16MapObjectManager19func_ov001_020bad80Ev kind:function(thumb,size=0x20) addr:0x020bc5bc +_ZN16MapObjectManager19func_ov001_020bada0Ev kind:function(thumb,size=0x20) addr:0x020bc5dc +_ZN16MapObjectManager19func_ov001_020badb4Ev kind:function(thumb,size=0x2c) addr:0x020bc5fc +_ZN16MapObjectManager19func_ov001_020bade0Ev kind:function(thumb,size=0x60) addr:0x020bc628 +_ZN16MapObjectManager19func_ov001_020bae40EP15ZeldaObjectList kind:function(thumb,size=0x2c) addr:0x020bc688 +_ZN16MapObjectManager19func_ov001_020bae6cEv kind:function(thumb,size=0x34) addr:0x020bc6b4 +_ZN16MapObjectManager19func_ov001_020baea0EP5Vec2s kind:function(thumb,size=0x88) addr:0x020bc6e8 +_ZN16MapObjectManager19func_ov001_020baf28Ev kind:function(thumb,size=0x22) addr:0x020bc770 func_ov001_020baf4c kind:function(thumb,size=0xc) addr:0x020bc794 func_ov001_020baf58 kind:function(thumb,size=0xc) addr:0x020bc7a0 _ZN12ActorManager6CreateEv kind:function(thumb,size=0x16) addr:0x020bc7ac _ZN12ActorManagerC1Ev kind:function(thumb,size=0x46) addr:0x020bc7c4 _ZN12ActorManagerD1Ev kind:function(thumb,size=0x18) addr:0x020bc80c _ZN12ActorManager19func_ov001_020bafdcEv kind:function(thumb,size=0x3c) addr:0x020bc824 -_ZN12ActorManager19func_ov001_020bb018EP36UnkStruct_func_ov001_020bb018_param2 kind:function(thumb,size=0x3fc) addr:0x020bc860 -_ZN12ActorManager19func_ov001_020bb414EPS_ kind:function(thumb,size=0x74) addr:0x020bcc5c +_ZN12ActorManager19func_ov001_020bb018EP9ZOBHeader kind:function(thumb,size=0x3fc) addr:0x020bc860 +_ZN12ActorManager19func_ov001_020bb414Ev kind:function(thumb,size=0x74) addr:0x020bcc5c _ZN12ActorManager19func_ov001_020bb488Ev kind:function(thumb,size=0xc0) addr:0x020bccd0 _ZN12ActorManager19func_ov001_020bb548Ev kind:function(thumb,size=0xe8) addr:0x020bcd90 _ZN12ActorManager19func_ov001_020bb630Ev kind:function(thumb,size=0x80) addr:0x020bce78 @@ -225,11 +225,11 @@ _ZN18UnkStruct_027e0ce0D1Ev kind:function(thumb,size=0x86) addr:0x020bdc98 func_ov001_020bc4d8 kind:function(thumb,size=0x4c) addr:0x020bdd20 _ZN18UnkStruct_027e0ce019func_ov001_020bc524Eb kind:function(thumb,size=0xd4) addr:0x020bdd6c _ZN18UnkStruct_027e0ce019func_ov001_020bc5f8Ev kind:function(thumb,size=0x62) addr:0x020bde40 -func_ov001_020bc65c kind:function(thumb,size=0x40) addr:0x020bdea4 -func_ov001_020bc69c kind:function(thumb,size=0x3c) addr:0x020bdee4 -func_ov001_020bc6d8 kind:function(thumb,size=0xe) addr:0x020bdf20 -func_ov001_020bc6e8 kind:function(thumb,size=0x14) addr:0x020bdf30 -func_ov001_020bc6fc kind:function(thumb,size=0x52) addr:0x020bdf44 +_ZN18UnkStruct_027e0ce019func_ov001_020bc65cEv kind:function(thumb,size=0x40) addr:0x020bdea4 +_ZN18UnkStruct_027e0ce019func_ov001_020bc69cEv kind:function(thumb,size=0x3c) addr:0x020bdee4 +_ZN18UnkStruct_027e0ce019func_ov001_020bc6d8EiPK24UnkStruct_ov001_020c40f4 kind:function(thumb,size=0xe) addr:0x020bdf20 +_ZN18UnkStruct_027e0ce019func_ov001_020bc6e8EPK24UnkStruct_ov001_020c40f4 kind:function(thumb,size=0x14) addr:0x020bdf30 +_ZN18UnkStruct_027e0ce019func_ov001_020bc6fcEPK24UnkStruct_ov001_020c40f4S2_ii kind:function(thumb,size=0x52) addr:0x020bdf44 func_ov001_020bc750 kind:function(thumb,size=0xc) addr:0x020bdf98 func_ov001_020bc75c kind:function(thumb,size=0xc) addr:0x020bdfa4 func_ov001_020bc768 kind:function(thumb,size=0x20) addr:0x020bdfb0 @@ -264,8 +264,8 @@ _ZN18UnkStruct_0204a11019func_ov001_020bd514EiPvii kind:function(thumb,size=0x78 _ZN18UnkStruct_0204a11019func_ov001_020bd58cEv kind:function(thumb,size=0x24) addr:0x020bedd4 _ZN18UnkStruct_0204a11019func_ov001_020bd5b0Ev kind:function(thumb,size=0x88) addr:0x020bedf8 _ZN18UnkStruct_0204a11019func_ov001_020bd638Ev kind:function(thumb,size=0x40) addr:0x020bee80 -func_ov001_020bd678 kind:function(thumb,size=0x14) addr:0x020beec0 -func_ov001_020bd68c kind:function(thumb,size=0x1c) addr:0x020beed4 +_ZN18UnkStruct_0204a11019func_ov001_020bd678Ev kind:function(thumb,size=0x14) addr:0x020beec0 +_ZN18UnkStruct_0204a11019func_ov001_020bd68cEv kind:function(thumb,size=0x1c) addr:0x020beed4 func_ov001_020bd6a8 kind:function(thumb,size=0x18) addr:0x020beef0 func_ov001_020bd6c0 kind:function(thumb,size=0x38) addr:0x020bef08 func_ov001_020bd6f8 kind:function(thumb,size=0x30) addr:0x020bef40 @@ -287,8 +287,8 @@ func_ov001_020bd910 kind:function(thumb,size=0x30) addr:0x020bf158 func_ov001_020bd934 kind:function(thumb,size=0x3c) addr:0x020bf188 _ZN24UnkStruct_ov000_020b50c019func_ov001_020bd970EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x494) addr:0x020bf1c4 _ZN24UnkStruct_ov000_020b50c019func_ov001_020bde04EP22UnkStruct_SceneChange1 kind:function(thumb,size=0x48) addr:0x020bf658 -func_ov001_020bde4c kind:function(thumb,size=0x10) addr:0x020bf6a0 -func_ov001_020bde5c kind:function(thumb,size=0x10) addr:0x020bf6b0 +_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde4cEPK22UnkStruct_SceneChange1 kind:function(thumb,size=0x10) addr:0x020bf6a0 +_ZN24UnkStruct_ov000_020b50c019func_ov001_020bde5cEv kind:function(thumb,size=0x10) addr:0x020bf6b0 func_ov001_020bde6c kind:function(thumb,size=0xe) addr:0x020bf6c0 func_ov001_020bde7c kind:function(thumb,size=0x14) addr:0x020bf6d0 func_ov001_020bde90 kind:function(thumb,size=0x110) addr:0x020bf6e4 @@ -313,14 +313,14 @@ _ZN18UnkStruct_027e09c07DestroyEv kind:function(thumb,size=0x8) addr:0x020bfb40 func_ov001_020be2f4 kind:function(thumb,size=0xa0) addr:0x020bfb48 _ZN18UnkStruct_027e09c019func_ov001_020be394Ev kind:function(thumb,size=0x30) addr:0x020bfbe8 _ZN18UnkStruct_027e09c019func_ov001_020be3c4Ev kind:function(thumb,size=0x18) addr:0x020bfc18 -func_ov001_020be3dc kind:function(thumb,size=0x24) addr:0x020bfc30 -func_ov001_020be400 kind:function(thumb,size=0x3c) addr:0x020bfc54 +_ZN18UnkStruct_027e09c019func_ov001_020be3dcEP14UnkFileSystem3P26UnkStruct_027e0cd8_0C_Base kind:function(thumb,size=0x24) addr:0x020bfc30 +_ZN18UnkStruct_027e09c019func_ov001_020be400Ev kind:function(thumb,size=0x3c) addr:0x020bfc54 func_ov001_020be43c kind:function(thumb,size=0x20) addr:0x020bfc90 func_ov001_020be45c kind:function(thumb,size=0xc) addr:0x020bfcb0 func_ov001_020be468 kind:function(thumb,size=0xc) addr:0x020bfcbc func_ov001_020be474 kind:function(thumb,size=0x70) addr:0x020bfcc8 func_ov001_020be4e4 kind:function(thumb,size=0x1e) addr:0x020bfd38 -func_ov001_020be504 kind:function(thumb,size=0xc) addr:0x020bfd58 +_ZN24UnkStruct_ov000_020b504c19func_ov001_020be504Ev kind:function(thumb,size=0xc) addr:0x020bfd58 _ZN24UnkStruct_ov000_020b504c19func_ov001_020be510Ev kind:function(thumb,size=0xd8) addr:0x020bfd64 func_ov001_020be5e8 kind:function(thumb,size=0x80) addr:0x020bfe3c _ZN24UnkStruct_ov000_020b504c19func_ov001_020be668Ev kind:function(thumb,size=0x70) addr:0x020bfebc @@ -330,9 +330,9 @@ func_ov001_020be79c kind:function(thumb,size=0x90) addr:0x020bfff0 func_ov001_020be82c kind:function(thumb,size=0x54) addr:0x020c0080 func_ov001_020be880 kind:function(thumb,size=0x60) addr:0x020c00d4 _ZN24UnkStruct_ov000_020b504c19func_ov001_020be8e0Ev kind:function(thumb,size=0x4c) addr:0x020c0134 -func_ov001_020be92c kind:function(thumb,size=0x20) addr:0x020c0180 -func_ov001_020be94c kind:function(thumb,size=0x4c) addr:0x020c01a0 -func_ov001_020be998 kind:function(thumb,size=0x64) addr:0x020c01ec +_ZN24UnkStruct_ov000_020b504c19func_ov001_020be92cEP24UnkStruct_027e0cd8_04_0C kind:function(thumb,size=0x20) addr:0x020c0180 +_ZN24UnkStruct_ov000_020b504c19func_ov001_020be94cEv kind:function(thumb,size=0x4c) addr:0x020c01a0 +_ZN24UnkStruct_ov000_020b504c19func_ov001_020be998Ev kind:function(thumb,size=0x64) addr:0x020c01ec func_ov001_020be9fc kind:function(thumb,size=0x30) addr:0x020c0250 func_ov001_020bea2c kind:function(thumb,size=0x14) addr:0x020c0280 func_ov001_020bea40 kind:function(thumb,size=0x18) addr:0x020c0294 @@ -356,7 +356,7 @@ func_ov001_020bed34 kind:function(thumb,size=0x1c) addr:0x020c0588 func_ov001_020bed50 kind:function(thumb,size=0x248) addr:0x020c05a4 func_ov001_020bef98 kind:function(thumb,size=0x7c) addr:0x020c07ec func_ov001_020bf014 kind:function(thumb,size=0x14) addr:0x020c0868 -func_ov001_020bf028 kind:function(thumb,size=0x1c) addr:0x020c087c +_ZN18UnkStruct_027e0cec19func_ov001_020bf028Ev kind:function(thumb,size=0x1c) addr:0x020c087c func_ov001_020bf044 kind:function(arm,size=0x38) addr:0x020c0898 func_ov001_020bf07c kind:function(arm,size=0x10) addr:0x020c08d0 func_ov001_020bf08c kind:function(arm,size=0x14) addr:0x020c08e0 @@ -507,10 +507,10 @@ data_ov001_020c3fc0 kind:data(any) addr:0x020c3fc0 data_ov001_020c3ffc kind:data(any) addr:0x020c3ffc data_ov001_020c4060 kind:data(any) addr:0x020c4060 __sinit_CourseList.cpp kind:function(thumb,size=0x24) addr:0x020c4068 local -__sinit_ov001_020c408c kind:function(thumb,size=0xb8) addr:0x020c408c +__sinit_UnkStruct_027e0cd8_0C_001.cpp kind:function(thumb,size=0xb8) addr:0x020c408c __sinit_ov001_020c4144 kind:function(thumb,size=0x10) addr:0x020c4144 .p__sinit_CourseList.cpp kind:data(word) addr:0x020c4154 local -.p__sinit_ov001_020c408c kind:data(word) addr:0x020c4158 +.p__sinit_UnkStruct_027e0cd8_0C_001.cpp kind:data(word) addr:0x020c4158 .p__sinit_ov001_020c4144 kind:data(word) addr:0x020c415c .p__sinit_ov001_020c2958 kind:data(word) addr:0x020c4160 local .p__sinit_ov001_020c2f5c kind:data(word) addr:0x020c4164 local @@ -519,29 +519,23 @@ __sinit_ov001_020c4144 kind:function(thumb,size=0x10) addr:0x020c4144 .p__sinit_ov001_020c3dc4 kind:data(word) addr:0x020c4170 local @433 kind:data(byte[22]) addr:0x020c4180 local @450 kind:data(byte[22]) addr:0x020c4198 local -data_ov001_020c41b0 kind:data(any) addr:0x020c41b0 -data_ov001_020c41c4 kind:data(any) addr:0x020c41c4 -data_ov001_020c41c8 kind:data(any) addr:0x020c41c8 -data_ov001_020c41e4 kind:data(any) addr:0x020c41e4 -data_ov001_020c41f4 kind:data(any) addr:0x020c41f4 -data_ov001_020c41fc kind:data(any) addr:0x020c41fc -data_ov001_020c4218 kind:data(any) addr:0x020c4218 -data_ov001_020c4230 kind:data(any) addr:0x020c4230 -data_ov001_020c423c kind:data(any) addr:0x020c423c -data_ov001_020c426c kind:data(any) addr:0x020c426c -data_ov001_020c4280 kind:data(any) addr:0x020c4280 -data_ov001_020c4294 kind:data(any) addr:0x020c4294 -data_ov001_020c42a8 kind:data(any) addr:0x020c42a8 -data_ov001_020c42bc kind:data(any) addr:0x020c42bc -data_ov001_020c42d0 kind:data(any) addr:0x020c42d0 -data_ov001_020c42d8 kind:data(any) addr:0x020c42d8 -data_ov001_020c42e4 kind:data(any) addr:0x020c42e4 -data_ov001_020c42ec kind:data(any) addr:0x020c42ec -data_ov001_020c4300 kind:data(any) addr:0x020c4300 -data_ov001_020c4314 kind:data(any) addr:0x020c4314 -data_ov001_020c4330 kind:data(any) addr:0x020c4330 -data_ov001_020c434c kind:data(any) addr:0x020c434c -data_ov001_020c4364 kind:data(any) addr:0x020c4364 +@3570 kind:data(byte[0x12]) addr:0x020c41b0 local +@3571 kind:data(byte[0x04]) addr:0x020c41c4 local +@3572 kind:data(byte[0x1a]) addr:0x020c41c8 local +@3573 kind:data(byte[0x18]) addr:0x020c41e4 local +@3574 kind:data(byte[0x19]) addr:0x020c41fc local +@3575 kind:data(byte[0x17]) addr:0x020c4218 local +@3576 kind:data(byte[0x04]) addr:0x020c4230 local +_ZTV26UnkStruct_027e0cd8_0C_Base kind:data(any) addr:0x020c4234 +data_ov001_020c2a40 kind:data(any) addr:0x020c4280 +@3283 kind:data(byte[0x6]) addr:0x020c42d0 local +@3284 kind:data(byte[0x13]) addr:0x020c42d8 local +@3285 kind:data(byte[0x13]) addr:0x020c42ec local +@3286 kind:data(byte[0x13]) addr:0x020c4300 local +@3287 kind:data(byte[0x1b]) addr:0x020c4314 local +@3288 kind:data(byte[0x1c]) addr:0x020c4330 local +@3292 kind:data(byte[0x17]) addr:0x020c434c local +@3293 kind:data(byte[0x15]) addr:0x020c4364 local data_ov001_020c437c kind:data(any) addr:0x020c437c data_ov001_020c4388 kind:data(any) addr:0x020c4388 data_ov001_020c4398 kind:data(any) addr:0x020c4398 @@ -639,8 +633,8 @@ data_ov001_020c4814 kind:data(any) addr:0x020c4814 data_ov001_020c4818 kind:data(any) addr:0x020c4818 _ZGVN14StaticInstanceI16CourseInitBinaryE9sInstanceE kind:bss addr:0x020c4820 _ZN14StaticInstanceI16CourseInitBinaryE9sInstanceE kind:bss addr:0x020c4824 -data_ov001_020c5928 kind:bss addr:0x020c5928 -data_ov001_020c5934 kind:bss addr:0x020c5934 +@4613 kind:bss addr:0x020c5928 local +data_ov001_020c40f4 kind:bss addr:0x020c5934 local data_ov001_020c5f34 kind:bss addr:0x020c5f34 data_ov001_020c5f38 kind:bss addr:0x020c5f38 data_ov001_020c5f3c kind:bss addr:0x020c5f3c diff --git a/config/jp/arm9/overlays/ov021/symbols.txt b/config/jp/arm9/overlays/ov021/symbols.txt index a3380d69..10a864aa 100644 --- a/config/jp/arm9/overlays/ov021/symbols.txt +++ b/config/jp/arm9/overlays/ov021/symbols.txt @@ -41,7 +41,7 @@ _ZN27UnkStruct_027e09a4_54_Type3C1EP18UnkStruct_027e09a4 kind:function(arm,size= _ZN19func_ov021_020ebffcD1Ev kind:function(arm,size=0x30) addr:0x020ebffc _ZN19func_ov021_020ec02cD0Ev kind:function(arm,size=0x38) addr:0x020ec02c func_ov021_020ec064 kind:function(arm,size=0xc) addr:0x020ec064 -func_ov021_020ec070 kind:function(arm,size=0x20) addr:0x020ec070 +_ZN30UnkStruct_027e0cd8_0C_Derived3C1EP18UnkStruct_027e0cd8 kind:function(arm,size=0x20) addr:0x020ec070 func_ov021_020ec090 kind:function(arm,size=0x28) addr:0x020ec090 _ZN19func_ov021_020ec0b8D1Ev kind:function(arm,size=0x14) addr:0x020ec0b8 _ZN19func_ov021_020ec0ccD0Ev kind:function(arm,size=0x1c) addr:0x020ec0cc diff --git a/config/jp/arm9/overlays/ov026/symbols.txt b/config/jp/arm9/overlays/ov026/symbols.txt index 39ac2d42..f973bfb8 100644 --- a/config/jp/arm9/overlays/ov026/symbols.txt +++ b/config/jp/arm9/overlays/ov026/symbols.txt @@ -101,7 +101,7 @@ _ZN21UnkStruct_027e0ce0_38D0Ev kind:function(arm,size=0xe4) addr:0x020de1fc func_ov026_020de2e0 kind:function(arm,size=0x28) addr:0x020de2e0 func_ov026_020de308 kind:function(arm,size=0x98) addr:0x020de308 func_ov026_020de3a0 kind:function(arm,size=0x64) addr:0x020de3a0 -func_ov026_020de404 kind:function(arm,size=0x1788) addr:0x020de404 +_ZN24UnkStruct_ov026_02138d1019func_ov026_020dca14Ev kind:function(arm,size=0x1788) addr:0x020de404 func_ov026_020dfb8c kind:function(arm,size=0x38) addr:0x020dfb8c func_ov026_020dfbc4 kind:function(arm,size=0x30) addr:0x020dfbc4 func_ov026_020dfbf4 kind:function(arm,size=0x158) addr:0x020dfbf4 @@ -291,13 +291,13 @@ func_ov026_020eac08 kind:function(arm,size=0x98) addr:0x020eac08 func_ov026_020eaca0 kind:function(arm,size=0x364) addr:0x020eaca0 func_ov026_020eb004 kind:function(arm,size=0x10) addr:0x020eb004 func_ov026_020eb014 kind:function(arm,size=0x74) addr:0x020eb014 -func_ov026_020eb088 kind:function(arm,size=0x44) addr:0x020eb088 -func_ov026_020eb0cc kind:function(arm,size=0x48) addr:0x020eb0cc +_ZN21UnkStruct_027e0cd8_10C1Ev kind:function(arm,size=0x44) addr:0x020eb088 +_ZN21UnkStruct_027e0cd8_10D1Ev kind:function(arm,size=0x48) addr:0x020eb0cc func_ov026_020eb114 kind:function(arm,size=0x2c) addr:0x020eb114 func_ov026_020eb140 kind:function(arm,size=0x1c) addr:0x020eb140 func_ov026_020eb15c kind:function(arm,size=0x1c) addr:0x020eb15c func_ov026_020eb178 kind:function(arm,size=0x24) addr:0x020eb178 -func_ov026_020eb19c kind:function(arm,size=0x4) addr:0x020eb19c +func_ov026_020e9208 kind:function(arm,size=0x4) addr:0x020eb19c func_ov026_020eb1a0 kind:function(arm,size=0x24) addr:0x020eb1a0 func_ov026_020eb1c4 kind:function(arm,size=0x20) addr:0x020eb1c4 func_ov026_020eb1e4 kind:function(arm,size=0x20) addr:0x020eb1e4 @@ -1095,7 +1095,7 @@ func_ov026_02107900 kind:function(arm,size=0x38) addr:0x02107900 func_ov026_02107938 kind:function(arm,size=0x38) addr:0x02107938 func_ov026_02107970 kind:function(arm,size=0x1c) addr:0x02107970 func_ov026_0210798c kind:function(arm,size=0x4) addr:0x0210798c -func_ov026_02107990 kind:function(arm,size=0x1dc) addr:0x02107990 +_ZN30UnkStruct_027e0cd8_0C_Derived2C1EP18UnkStruct_027e0cd8 kind:function(arm,size=0x1dc) addr:0x02107990 func_ov026_02107b6c kind:function(arm,size=0x10c) addr:0x02107b6c _ZN19func_ov026_02107c78D0Ev kind:function(arm,size=0x114) addr:0x02107c78 func_ov026_02107d8c kind:function(arm,size=0xc0) addr:0x02107d8c @@ -1127,7 +1127,7 @@ func_ov026_02108ce0 kind:function(arm,size=0x4) addr:0x02108ce0 func_ov026_02108ce4 kind:function(arm,size=0x4) addr:0x02108ce4 func_ov026_02108ce8 kind:function(arm,size=0x8) addr:0x02108ce8 func_ov026_02108cf0 kind:function(arm,size=0x14) addr:0x02108cf0 -_ZN25UnkStruct_027e0cd8_0c_16019func_ov026_02106aa8Ev kind:function(arm,size=0x14) addr:0x02108d04 +_ZN25UnkStruct_027e0cd8_0C_16019func_ov026_02106aa8Ev kind:function(arm,size=0x14) addr:0x02108d04 func_ov026_02108d18 kind:function(arm,size=0x84) addr:0x02108d18 func_ov026_02108d9c kind:function(arm,size=0x4c) addr:0x02108d9c func_ov026_02108de8 kind:function(arm,size=0x64) addr:0x02108de8 diff --git a/config/jp/arm9/overlays/ov047/symbols.txt b/config/jp/arm9/overlays/ov047/symbols.txt index 66a10c40..9bdbaffa 100644 --- a/config/jp/arm9/overlays/ov047/symbols.txt +++ b/config/jp/arm9/overlays/ov047/symbols.txt @@ -1,5 +1,5 @@ -func_ov047_02131ec0 kind:function(arm,size=0x64) addr:0x02131ec0 -func_ov047_02131f24 kind:function(arm,size=0x28) addr:0x02131f24 +_ZN29UnkStruct_027e0cd8_0C_Base_98C1Ev kind:function(arm,size=0x64) addr:0x02131ec0 +_ZN29UnkStruct_027e0cd8_0C_Base_98D1Ev kind:function(arm,size=0x28) addr:0x02131f24 func_ov047_02131f4c kind:function(arm,size=0x30) addr:0x02131f4c func_ov047_02131f7c kind:function(arm,size=0x200) addr:0x02131f7c func_ov047_0213217c kind:function(arm,size=0x39c) addr:0x0213217c diff --git a/config/jp/arm9/overlays/ov084/symbols.txt b/config/jp/arm9/overlays/ov084/symbols.txt index 742301f1..5af64afc 100644 --- a/config/jp/arm9/overlays/ov084/symbols.txt +++ b/config/jp/arm9/overlays/ov084/symbols.txt @@ -385,8 +385,8 @@ _ZN12ActorUnkLBRC19func_ov084_021632e0Ev kind:function(arm,size=0xbc) addr:0x021 _ZN12ActorUnkLBRCD1Ev kind:function(arm,size=0x38) addr:0x0216339c _ZN12ActorUnkLBRCD0Ev kind:function(arm,size=0x40) addr:0x021633d4 _ZN19ActorProfileUnkLBRCD1Ev kind:function(arm,size=0x14) addr:0x02163414 -func_ov084_02163428 kind:function(arm,size=0x80) addr:0x02163428 -func_ov084_021634a8 kind:function(arm,size=0x1c) addr:0x021634a8 +func_ov084_0216122c kind:function(arm,size=0x80) addr:0x02163428 +func_ov084_021612ac kind:function(arm,size=0x1c) addr:0x021634a8 _ZN23MapObjectProfileUnkPLV210GetProfileEv kind:function(arm,size=0xc) addr:0x021634c4 _ZN23MapObjectProfileUnkPLV26CreateEv kind:function(arm,size=0x24) addr:0x021634d0 _ZN23MapObjectProfileUnkPLV2C1Ev kind:function(arm,size=0xa4) addr:0x021634f4 @@ -663,7 +663,7 @@ _ZN15ProfileInstanceI23MapObjectProfileUnkSTSVE8sProfileE kind:bss addr:0x021667 _ZGVN15ProfileInstanceI19ActorProfileUnkLBRCE8sProfileE kind:bss addr:0x02166808 @33823 kind:bss addr:0x0216680c _ZN15ProfileInstanceI19ActorProfileUnkLBRCE8sProfileE kind:bss addr:0x02166818 -data_ov084_021668f0 kind:bss addr:0x021668f0 +data_ov084_02164690 kind:bss addr:0x021668f0 _ZGVN15ProfileInstanceI23MapObjectProfileUnkPLV2E8sProfileE kind:bss addr:0x021668f4 @33267 kind:bss addr:0x021668f8 _ZN15ProfileInstanceI23MapObjectProfileUnkPLV2E8sProfileE kind:bss addr:0x02166904 diff --git a/config/jp/arm9/overlays/ov088/symbols.txt b/config/jp/arm9/overlays/ov088/symbols.txt index 5403fcaa..30139310 100644 --- a/config/jp/arm9/overlays/ov088/symbols.txt +++ b/config/jp/arm9/overlays/ov088/symbols.txt @@ -2,7 +2,7 @@ func_ov088_02167b00 kind:function(arm,size=0x30) addr:0x02167b00 _ZN19func_ov088_02167b30D1Ev kind:function(arm,size=0x34) addr:0x02167b30 _ZN19func_ov088_02167b64D0Ev kind:function(arm,size=0x3c) addr:0x02167b64 _ZN19func_ov088_02167ba0D2Ev kind:function(arm,size=0x34) addr:0x02167ba0 -func_ov088_02167bd4 kind:function(arm,size=0x14c) addr:0x02167bd4 +_ZN21UnkStruct_027e09b8_08C1EPv kind:function(arm,size=0x14c) addr:0x02167bd4 func_ov088_02167d20 kind:function(arm,size=0x84) addr:0x02167d20 _ZN19func_ov088_02167da4D0Ev kind:function(arm,size=0x8c) addr:0x02167da4 func_ov088_02167e30 kind:function(arm,size=0xc) addr:0x02167e30 diff --git a/config/jp/arm9/overlays/ov089/symbols.txt b/config/jp/arm9/overlays/ov089/symbols.txt index 133b6ab0..4306c86e 100644 --- a/config/jp/arm9/overlays/ov089/symbols.txt +++ b/config/jp/arm9/overlays/ov089/symbols.txt @@ -11,7 +11,7 @@ func_ov089_02167c94 kind:function(arm,size=0x34) addr:0x02167c94 func_ov089_02167cc8 kind:function(arm,size=0x94) addr:0x02167cc8 func_ov089_02167d5c kind:function(arm,size=0x1c) addr:0x02167d5c func_ov089_02167d78 kind:function(arm,size=0x11c) addr:0x02167d78 -func_ov089_02167e94 kind:function(arm,size=0x4c) addr:0x02167e94 +func_ov089_02165c34 kind:function(arm,size=0x4c) addr:0x02167e94 func_ov089_02167ee0 kind:function(arm,size=0xe8) addr:0x02167ee0 func_ov089_02167fc8 kind:function(arm,size=0x34) addr:0x02167fc8 func_ov089_02167ffc kind:function(arm,size=0x5c) addr:0x02167ffc @@ -419,7 +419,7 @@ data_ov089_02173768 kind:data(any) addr:0x02173768 data_ov089_0217376c kind:data(any) addr:0x0217376c data_ov089_02173780 kind:bss addr:0x02173780 data_ov089_02173784 kind:bss addr:0x02173784 -data_ov089_021737a0 kind:bss addr:0x021737a0 +data_ov089_02171540 kind:bss addr:0x021737a0 data_ov089_0217381c kind:bss addr:0x0217381c ambiguous data_ov089_0217382c kind:bss addr:0x0217382c ambiguous data_ov089_0217386c kind:bss addr:0x0217386c ambiguous diff --git a/config/jp/arm9/overlays/ov101/symbols.txt b/config/jp/arm9/overlays/ov101/symbols.txt index 467aa538..6dcef9aa 100644 --- a/config/jp/arm9/overlays/ov101/symbols.txt +++ b/config/jp/arm9/overlays/ov101/symbols.txt @@ -21,7 +21,7 @@ func_ov101_02184ea8 kind:function(thumb,size=0x134) addr:0x02184ea8 func_ov101_02184fdc kind:function(thumb,size=0x2) addr:0x02184fdc func_ov101_02184fe0 kind:function(thumb,size=0xc) addr:0x02184fe0 func_ov101_02184fec kind:function(thumb,size=0x12) addr:0x02184fec -func_ov101_02185000 kind:function(thumb,size=0x68) addr:0x02185000 +_ZN21UnkStruct_027e0cd8_0CC1EP18UnkStruct_027e0cd8 kind:function(thumb,size=0x68) addr:0x02185000 func_ov101_02185068 kind:function(thumb,size=0xd8) addr:0x02185068 func_ov101_02185140 kind:function(thumb,size=0xe0) addr:0x02185140 func_ov101_02185220 kind:function(thumb,size=0xd0) addr:0x02185220 diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index 57f783c9..6f6342c3 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -526,7 +526,7 @@ func_0200e350 kind:function(arm,size=0x48) addr:0x0200e350 func_0200e398 kind:function(arm,size=0x60) addr:0x0200e398 func_0200e3f8 kind:function(arm,size=0x68) addr:0x0200e3f8 func_0200e460 kind:function(arm,size=0x240) addr:0x0200e460 -func_0200e6a0 kind:function(arm,size=0xb0) addr:0x0200e6a0 +G3d_0200e6a0 kind:function(arm,size=0xb0) addr:0x0200e6a0 func_0200e750 kind:function(arm,size=0x80) addr:0x0200e750 func_0200e7d0 kind:function(arm,size=0x80) addr:0x0200e7d0 func_0200e850 kind:function(arm,size=0x80) addr:0x0200e850 @@ -719,7 +719,7 @@ func_02014948 kind:function(thumb,size=0x50) addr:0x02014948 _ZN14OverlayManager13func_02014994Ei kind:function(thumb,size=0x7c) addr:0x02014998 func_02014a14 kind:function(arm,size=0x24) addr:0x02014a14 _ZN18UnkStruct_02049bac13func_02014a34EPv kind:function(arm,size=0xcc) addr:0x02014a38 -func_02014b04 kind:function(arm,size=0x54) addr:0x02014b04 +_ZN18UnkStruct_02049bac13func_02014b00Ev kind:function(arm,size=0x54) addr:0x02014b04 func_02014b58 kind:function(arm,size=0x10) addr:0x02014b58 func_02014b68 kind:function(arm,size=0x1c) addr:0x02014b68 func_02014b84 kind:function(arm,size=0x3c) addr:0x02014b84 @@ -754,7 +754,7 @@ _ZN17UnkFileSystem2_10D1Ev kind:function(arm,size=0x20) addr:0x0201535c func_0201537c kind:function(arm,size=0x18) addr:0x0201537c _ZN10UnkSystem3C1EPKciii kind:function(thumb,size=0x12) addr:0x02015394 _ZN10UnkSystem313func_02015410EPKci kind:function(thumb,size=0xc) addr:0x020153a8 -func_020153b4 kind:function(thumb,size=0x44) addr:0x020153b4 +_ZN10UnkSystem313func_0201541cEPKci kind:function(thumb,size=0x44) addr:0x020153b4 _ZN10UnkSystem313func_02015460EPKcPvi kind:function(thumb,size=0x1c) addr:0x020153f8 _ZN10UnkSystem3D1Ev kind:function(thumb,size=0x20) addr:0x02015414 func_02015434 kind:function(thumb,size=0x14) addr:0x02015434 @@ -1498,7 +1498,7 @@ OS_GetLockID kind:function(arm,size=0x58) addr:0x02027c68 func_02027cc0 kind:function(arm,size=0x30) addr:0x02027cc0 sscanf kind:function(arm,size=0x28) addr:0x02027cf0 vsscanf kind:function(arm,size=0x18) addr:0x02027d18 -func_02026800 kind:function(arm,size=0x28) addr:0x02027d30 +snprintf kind:function(arm,size=0x28) addr:0x02027d30 func_02027d58 kind:function(arm,size=0xc) addr:0x02027d58 OS_func_0035 kind:function(arm,size=0x18) addr:0x02027d64 OS_func_0036 kind:function(arm,size=0x78) addr:0x02027d7c @@ -2060,7 +2060,7 @@ func_0203a25c kind:function(arm,size=0x18) addr:0x0203a25c _ZN13func_0203a274D0Ev kind:function(arm,size=0x20) addr:0x0203a274 func_0203a294 kind:function(arm,size=0x30) addr:0x0203a294 func_0203a2c4 kind:function(arm,size=0x2c) addr:0x0203a2c4 -func_0203a2f0 kind:function(arm,size=0x8c) addr:0x0203a2f0 +_ZNSt15__vector_commonILb1EE18throw_length_errorEv kind:function(arm,size=0x8c) addr:0x0203a2f0 _dadd kind:function(arm,size=0x318) addr:0x0203a37c _dsub kind:function(arm,size=0x3b4) addr:0x0203a6ac _dmul kind:function(arm,size=0x364) addr:0x0203aa60 diff --git a/include/Actor/ActorManager.hpp b/include/Actor/ActorManager.hpp index ac41b5c1..12ad9c68 100644 --- a/include/Actor/ActorManager.hpp +++ b/include/Actor/ActorManager.hpp @@ -9,12 +9,6 @@ class UnkStruct_SceneChange1; -struct UnkStruct_func_ov001_020bb018_param2 { - /* 00 */ STRUCT_PAD(0x00, 0x08); - /* 08 */ u16 mUnk_08; - /* 08 */ u16 mUnk_0A; -}; - class ActorManager : public AutoInstance { public: /* 00 */ Actor **mActorTable; @@ -55,7 +49,8 @@ public: // overlay 1 void func_ov001_020bafdc(); - void func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param2 *param1); + void func_ov001_020bb018(ZOBHeader *pHeader); + void func_ov001_020bb414(); void func_ov001_020bb488(); void func_ov001_020bb548(); void func_ov001_020bb630(); @@ -65,7 +60,6 @@ public: static ActorManager *Create(); static void Destroy(); - static void func_ov001_020bb414(ActorManager *instance); static bool func_ov001_020bb728(s32 param1); static void func_ov001_020bb824(); static void func_ov001_020bb844(); diff --git a/include/Cutscene/Cutscene.hpp b/include/Cutscene/Cutscene.hpp index 280571ff..250a72e9 100644 --- a/include/Cutscene/Cutscene.hpp +++ b/include/Cutscene/Cutscene.hpp @@ -67,7 +67,7 @@ struct CutsceneParamsEntry { /* 0B */ u8 mNextCutsceneIndex; /* 0C */ bool mNextIsCS; // doesn't makes sense with the array's data /* 0C */ bool mUnk_0D; - /* 0E */ unk16 mUnk_0E; + /* 0E */ u16 mUnk_0E; /* 10 */ AdventureFlag_Half mFlag; /* 12 */ unk16 mUnk_12; // pad? /* 14 */ u32 mUnk_14; diff --git a/include/Game/GameModeManager.hpp b/include/Game/GameModeManager.hpp index d5e1ea31..67402468 100644 --- a/include/Game/GameModeManager.hpp +++ b/include/Game/GameModeManager.hpp @@ -166,7 +166,7 @@ public: // data_ov000_020b1d14 vtable /* 08 */ virtual ~TitleScreenManager_Base() override; /* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2, unk32 param3) override; - /* 38 */ virtual void vfunc_38(u32 param1, u8 param2, unk16 param3, unk16 param4); + /* 38 */ virtual void vfunc_38(u32 sceneIndex, u8 roomIndex, unk16 param3, unk16 param4); /* 3C */ virtual void vfunc_3C(); /* 40 */ virtual void vfunc_40(); /* 44 */ virtual void vfunc_44(); diff --git a/include/MainGame/AdventureMode.hpp b/include/MainGame/AdventureMode.hpp index d351f153..ee78ac2f 100644 --- a/include/MainGame/AdventureMode.hpp +++ b/include/MainGame/AdventureMode.hpp @@ -953,7 +953,7 @@ public: /* 28 */ virtual void vfunc_28(unk8 *param1) override; /* 2C */ virtual void DrawUI(unk8 *param1) override; /* 34 */ virtual void vfunc_34(unk32 param1, unk32 param2) override; - /* 38 */ virtual void vfunc_38(u32 param1, u8 param2, unk16 param3, unk16 param4) override; + /* 38 */ virtual void vfunc_38(u32 sceneIndex, u8 roomIndex, unk16 param3, unk16 param4) override; void func_ov001_020c08b8(); diff --git a/include/MapObject/MapObjectManager.hpp b/include/MapObject/MapObjectManager.hpp index fa9f4b45..b7de5f81 100644 --- a/include/MapObject/MapObjectManager.hpp +++ b/include/MapObject/MapObjectManager.hpp @@ -2,6 +2,7 @@ #include "MapObject/MapObject.hpp" #include "Unknown/UnkStruct_ov000_020b34c4.hpp" +#include "files.h" #include "types.h" #include "math.hpp" @@ -33,7 +34,6 @@ public: MapObject *func_01fff498(Vec2b param1); void func_01fff4cc(UnkCallback_func_01fff4cc param1, void *param2); MapObject **func_01fff520(UnkStruct_ov000_020b34c4 *param1, MapObject **param2); - void func_01fff6d0(VecFx32 *param1, s32 *param2, s32 *param3); // overlay 0 MapObjectId func_ov000_0209c3a8(Vec2b *param1); @@ -43,6 +43,17 @@ public: static void func_ov000_0209c490(); // overlay 1 + void func_ov001_020bac9c(); + void func_ov001_020bacd8(ZOBHeader *pHeader); + void func_ov001_020bad80(); + void func_ov001_020bada0(); + void func_ov001_020badb4(); + void func_ov001_020bade0(); + void func_ov001_020baea0(Vec2s *param1); + void func_ov001_020bae40(ZeldaObjectList *pObjList); + void func_ov001_020bae6c(); + void func_ov001_020baf28(); + static MapObjectManager *Create(); static void Destroy(); }; diff --git a/include/Physics/AABB.hpp b/include/Physics/AABB.hpp new file mode 100644 index 00000000..a9cd9f23 --- /dev/null +++ b/include/Physics/AABB.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include + +struct AABB { + VecFx32 min; + VecFx32 max; +}; diff --git a/include/Save/SaveFile.hpp b/include/Save/SaveFile.hpp index 3e4bb56b..909838ee 100644 --- a/include/Save/SaveFile.hpp +++ b/include/Save/SaveFile.hpp @@ -110,8 +110,8 @@ struct SaveInventory { }; struct SaveFile_00000_0000_Data_158 { - /* 00 */ unk8 unk_00[0x0C]; - /* 0C */ unk8 unk_0C[0x20]; + /* 00 */ u32 unk_00[3]; + /* 0C */ u32 unk_0C[8]; /* 2C */ SaveFile_00000_0000_Data_158() { diff --git a/include/Save/SaveManager.hpp b/include/Save/SaveManager.hpp index 72193cab..d9d4588f 100644 --- a/include/Save/SaveManager.hpp +++ b/include/Save/SaveManager.hpp @@ -52,7 +52,7 @@ public: /* 218 */ SaveFile *mpSaveFile; /* 21C */ SaveFile_00000_0000_Data_D9C mUnk_21C; /* 23C */ PTMF::PTMFCallback mUnk_23C; - /* 244 */ unk32 mUnk_244; + /* 244 */ void *mUnk_244; bool IsUnk20A() { return this->mUnk_20A == 0; diff --git a/include/System/SysNew.hpp b/include/System/SysNew.hpp index fdcbf2f2..31f35f13 100644 --- a/include/System/SysNew.hpp +++ b/include/System/SysNew.hpp @@ -4,6 +4,7 @@ #include "global.h" #include "types.h" +#include #include #define GAME_ASSERT(cond, line, msg, ...) \ @@ -35,12 +36,6 @@ enum HeapIndex_ { void *operator new(size_t length, u32 id, u32 idLength = 4); void *operator new[](size_t length, u32 id, u32 idLength = 4); -void operator delete[](void *ptr); - -inline void *operator new(size_t length, void *ptr = nullptr) { -#pragma unused(length) - return ptr; -} class UnkStruct_02011e10_Sub1 { public: diff --git a/include/TitleScreen/TitleScreen.hpp b/include/TitleScreen/TitleScreen.hpp index 4d658857..7a5f0784 100644 --- a/include/TitleScreen/TitleScreen.hpp +++ b/include/TitleScreen/TitleScreen.hpp @@ -134,7 +134,7 @@ public: /* 24 */ virtual void vfunc_24() override; /* 28 */ virtual void vfunc_28(unk8 *param1) override; /* 2C */ virtual void DrawUI(unk8 *param1) override; - /* 38 */ virtual void vfunc_38(u32 param1, u8 param2, unk16 param3, unk16 param4) override; + /* 38 */ virtual void vfunc_38(u32 sceneIndex, u8 roomIndex, unk16 param3, unk16 param4) override; static TitleScreenManager *Create(unk32 param1); }; diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index ce1defab..26802f46 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -2,6 +2,7 @@ #include "Animation/CellAnimObject.hpp" #include "Game/GameModeManager.hpp" +#include "LinkList.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkFileSystem.hpp" #include "global.h" @@ -850,6 +851,7 @@ public: ~UnkSystem3(); void func_02015410(const char *path, unk32 param2); + void func_0201541c(const char *param1, unk32 param2); void func_02015460(const char *param1, void *param2, unk32 param3); }; @@ -1275,3 +1277,13 @@ struct TrainSpeedPreset { /* 3C */ fx32 unk_3C; /* 40 */ }; + +class UnkSystem8 : public LinkList { +public: + /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ + + // data_ov000_020b2940 + /* 00 */ virtual void vfunc_00(); +}; diff --git a/include/Unknown/UnkStruct_02049bac.hpp b/include/Unknown/UnkStruct_02049bac.hpp index beb91e58..b828e61e 100644 --- a/include/Unknown/UnkStruct_02049bac.hpp +++ b/include/Unknown/UnkStruct_02049bac.hpp @@ -11,6 +11,7 @@ public: ~UnkStruct_02049bac(); void func_02014a34(void *param1); + u64 func_02014b00(); }; // some time system? diff --git a/include/Unknown/UnkStruct_0204a110.hpp b/include/Unknown/UnkStruct_0204a110.hpp index d5b511c6..240418c1 100644 --- a/include/Unknown/UnkStruct_0204a110.hpp +++ b/include/Unknown/UnkStruct_0204a110.hpp @@ -291,6 +291,8 @@ public: void func_ov001_020bd58c(void); void func_ov001_020bd638(void); void func_ov001_020bd5b0(void); + void func_ov001_020bd678(void); + void func_ov001_020bd68c(void); // overlay 18 void func_ov018_020c5300(void); diff --git a/include/Unknown/UnkStruct_027e0960.hpp b/include/Unknown/UnkStruct_027e0960.hpp index 77cd3b81..02884426 100644 --- a/include/Unknown/UnkStruct_027e0960.hpp +++ b/include/Unknown/UnkStruct_027e0960.hpp @@ -74,8 +74,10 @@ public: static UnkStruct_027e0960 *Create(); // overlay 1 - void func_ov000_0205a164(); + void func_ov000_0205a11c(); + void func_ov000_0205a120(); void func_ov000_0205a160(); + void func_ov000_0205a164(); static void Destroy(); }; diff --git a/include/Unknown/UnkStruct_027e09a0.hpp b/include/Unknown/UnkStruct_027e09a0.hpp index e0816875..10e47d28 100644 --- a/include/Unknown/UnkStruct_027e09a0.hpp +++ b/include/Unknown/UnkStruct_027e09a0.hpp @@ -4,10 +4,13 @@ #include "Unknown/UnkFileSystem.hpp" #include "files.h" #include "global.h" +#include "math.hpp" #include "types.h" struct UnkStruct_func_ov000_020702a8 { - /* 00 */ STRUCT_PAD(0x00, 0x20); + /* 00 */ STRUCT_PAD(0x00, 0x10); + /* 10 */ Vec2s mUnk_10; + /* 14 */ STRUCT_PAD(0x14, 0x20); /* 20 */ unk16 mUnk_20; }; @@ -30,11 +33,12 @@ public: ~UnkStruct_027e09a0(); CourseListEntry *GetCourseEntry(u32 sceneIndex); - UnkStruct_func_ov000_020702a8 *func_ov000_020702a8(unk32 param1); + UnkStruct_func_ov000_020702a8 *func_ov000_020702a8(u32 sceneIndex); unk32 GetRoomEntryIndex(); CourseListRoomEntry *GetRoomEntry(u32 sceneIndex, unk32 param2); u32 GetSceneIndexFromName(const char *sceneName); bool func_ov000_02070378(u32 param1); + void func_ov000_02070310(u32 sceneIndex, u8 roomIndex, void *param3); // overlay 1 void InitCourseTable(); diff --git a/include/Unknown/UnkStruct_027e09a4.hpp b/include/Unknown/UnkStruct_027e09a4.hpp index 0ba4976c..445dd155 100644 --- a/include/Unknown/UnkStruct_027e09a4.hpp +++ b/include/Unknown/UnkStruct_027e09a4.hpp @@ -9,6 +9,8 @@ #include "iterator.hpp" #include "types.h" +#include + struct SaveFile; class UnkStruct_027e09a4; @@ -60,6 +62,10 @@ struct UnkStruct_SceneChange1 { this->mUnk_10 = 0; } + UnkStruct_SceneChange1(const UnkStruct_SceneChange1 *pSource) { + MI_CpuCopy32((void *) pSource, this, sizeof(UnkStruct_SceneChange1)); + } + UnkStruct_SceneChange1(s32) {} }; diff --git a/include/Unknown/UnkStruct_027e09ac.hpp b/include/Unknown/UnkStruct_027e09ac.hpp index 427f264c..49e272e4 100644 --- a/include/Unknown/UnkStruct_027e09ac.hpp +++ b/include/Unknown/UnkStruct_027e09ac.hpp @@ -79,7 +79,7 @@ public: ~UnkStruct_027e09ac(); // overlay 0 - void func_ov000_020726f0(unk32 param1, unk32 param2, unk32 param3); + void func_ov000_020726f0(u16 param1, unk32 param2, unk32 param3); void func_ov000_020729c4(UnkStruct_027e09ac_14 *param1, u16 param2, u16 param3, s16 param4, s16 param5); // overlay 1 diff --git a/include/Unknown/UnkStruct_027e09b0.hpp b/include/Unknown/UnkStruct_027e09b0.hpp new file mode 100644 index 00000000..18de6b8a --- /dev/null +++ b/include/Unknown/UnkStruct_027e09b0.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include "global.h" +#include "types.h" + +class UnkStruct_027e09b0 { +public: + /* 00 */ unk32 mUnk_00; + + UnkStruct_027e09b0(); + ~UnkStruct_027e09b0(); + + void func_ov000_02072cc4(unk32 param1, unk32 param2); +}; + +extern UnkStruct_027e09b0 *data_027e09b0; diff --git a/include/Unknown/UnkStruct_027e09b8.hpp b/include/Unknown/UnkStruct_027e09b8.hpp index 6bc1311d..53a33df8 100644 --- a/include/Unknown/UnkStruct_027e09b8.hpp +++ b/include/Unknown/UnkStruct_027e09b8.hpp @@ -3,6 +3,8 @@ #include "Cutscene/Cutscene.hpp" #include "MapObject/MapObject.hpp" #include "Save/AdventureFlags.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkSystem1.hpp" #include "types.h" #include "versions.h" @@ -22,60 +24,135 @@ public: /* FD4 */ UnkStruct_027e09b8_00(); - ~UnkStruct_027e09b8_00(); + void func_ov000_02073b5c(); void func_ov000_02073bc0(); }; -class UnkStruct_027e09b8_04 { +class UnkStruct_027e09b8_04_Base { public: - /* 00 */ STRUCT_PAD(0x00, 0x64); + /* 00 (vtable) */ + /* 04 */ + + /* 00 */ virtual ~UnkStruct_027e09b8_04_Base(); + /* 08 */ virtual void vfunc_08(); + /* 0C */ virtual void vfunc_0C(); + /* 10 */ virtual void vfunc_10() = 0; + /* 14 */ virtual void vfunc_14(); + /* 18 */ virtual void vfunc_18(); + /* 1C */ virtual void vfunc_1C(); + /* 20 */ virtual void vfunc_20(); + /* 24 */ +}; + +class UnkStruct_027e09b8_04 : public UnkStruct_027e09b8_04_Base { +public: + /* 00 (base) */ + /* 04 */ STRUCT_PAD(0x04, 0x14); + /* 14 */ UnkStruct_0204a060_Base mUnk_14; + /* 38 */ UnkStruct_WarpUnk1_50 mUnk_38; + /* 60 */ unk32 mUnk_60; /* 64 */ - UnkStruct_027e09b8_04(); - ~UnkStruct_027e09b8_04(); + UnkStruct_027e09b8_04() { + this->vfunc_0C(); + } + + // data_ov000_020b22c0 + /* 00 */ virtual ~UnkStruct_027e09b8_04() override; + /* 08 */ virtual void vfunc_08() override; + /* 0C */ virtual void vfunc_0C() override; + /* 10 */ virtual void vfunc_10() override; + /* 18 */ virtual void vfunc_18() override; + /* 1C */ virtual void vfunc_1C() override; + /* 20 */ virtual void vfunc_20() override; }; -class UnkStruct_027e09b8_08 { +class UnkStruct_027e09b8_08 : public UnkStruct_027e09b8_04_Base { public: - /* 00 */ STRUCT_PAD(0x00, 0x00); - /* 00 */ + /* 00 (base) */ + /* 04 */ STRUCT_PAD(0x04, 0x30); + /* 30 */ - UnkStruct_027e09b8_08(); + UnkStruct_027e09b8_08(void *param1); ~UnkStruct_027e09b8_08(); + + /* 10 */ virtual void vfunc_10() override; }; -class UnkStruct_027e09b8_0C { +class UnkStruct_027e09b8_0C : public UnkStruct_027e09b8_04_Base { public: - /* 00 */ STRUCT_PAD(0x00, 0xC4); + /* 00 (base) */ + /* 04 */ STRUCT_PAD(0x04, 0x0C); + /* 0C */ UnkSystem1_ov000_Derived3 mUnk_0C; + /* 20 */ STRUCT_PAD(0x20, 0x98); + /* 98 */ UnkStruct_WarpUnk1_50 mUnk_98; + /* C0 */ unk32 mUnk_C4; /* C4 */ MapObjectId mMapObjId; /* C8 */ - UnkStruct_027e09b8_0C(); - ~UnkStruct_027e09b8_0C(); + UnkStruct_027e09b8_0C() { + this->vfunc_0C(); + } + + // data_ov000_020b234c + /* 00 */ virtual ~UnkStruct_027e09b8_0C() override; + /* 08 */ virtual void vfunc_08() override; + /* 0C */ virtual void vfunc_0C() override; + /* 10 */ virtual void vfunc_10() override; + /* 14 */ virtual void vfunc_14() override; + /* 18 */ virtual void vfunc_18() override; }; -class UnkStruct_027e09b8_10 { +class UnkStruct_027e09b8_10 : public UnkStruct_027e09b8_04_Base { public: - /* 00 */ STRUCT_PAD(0x00, 0x18); + /* 00 (base) */ + /* 04 */ STRUCT_PAD(0x04, 0x18); /* 18 */ UnkStruct_027e09b8_10(); ~UnkStruct_027e09b8_10(); + + /* 10 */ virtual void vfunc_10() override; +}; + +class UnkStruct_027e09b8_98 { +public: + /* 0000 */ STRUCT_PAD(0x00, 0x151C); + /* 151C */ + + UnkStruct_027e09b8_98(); + ~UnkStruct_027e09b8_98(); + + void func_ov000_020a7b34(); }; class UnkStruct_027e09b8 : public AutoInstance { public: /* 00 */ UnkStruct_027e09b8_00 *mUnk_00; - /* 04 */ UnkStruct_027e09b8_04 *mUnk_04; - /* 08 */ UnkStruct_027e09b8_08 *mUnk_08; - /* 0C */ UnkStruct_027e09b8_0C *mUnk_0C; - /* 10 */ UnkStruct_027e09b8_10 *mUnk_10; + /* 04 */ UnkStruct_027e09b8_04_Base *mUnk_04[4]; /* 14 */ u32 mAdventureFlags[32]; //! TODO -#if IS_JP - //! TODO: figure out if the other versions got these too /* 94 */ u16 mUnk_94; -#endif + /* 96 */ bool mUnk_96; + /* 97 */ bool mUnk_97; + /* 98 */ UnkStruct_027e09b8_98 *mUnk_98; + /* 9C */ + + UnkStruct_027e09b8_04 *GetUnk04() { + return (UnkStruct_027e09b8_04 *) this->mUnk_04[0]; + } + + UnkStruct_027e09b8_08 *GetUnk08() { + return (UnkStruct_027e09b8_08 *) this->mUnk_04[1]; + } + + UnkStruct_027e09b8_0C *GetUnk0C() { + return (UnkStruct_027e09b8_0C *) this->mUnk_04[2]; + } + + UnkStruct_027e09b8_10 *GetUnk10() { + return (UnkStruct_027e09b8_10 *) this->mUnk_04[3]; + } bool HasAdventureFlag(AdventureFlag flag) { return GET_FLAG(this->mAdventureFlags, flag); @@ -92,18 +169,21 @@ public: unk32 func_ov000_020732fc(unk32 param1); bool func_ov000_020732dc(unk32 param1); unk32 func_ov000_0207330c(); - unk32 func_ov000_02073470(void *param1, unk32 param2); - unk32 func_ov000_02073388(void *param1, unk32 param2); - void func_ov000_02073578(void *param1, unk32 param2); void func_ov000_0207332c(); + unk32 func_ov000_02073388(void *param1, unk32 param2); + unk32 func_ov000_02073470(void *param1, unk32 param2); + void func_ov000_02073578(void *param1, unk32 param2); + void func_ov000_02073610(void *param1, unk32 param2); #if IS_JP void func_ov000_02074d78(unk32 param1); #endif // overlay 1 + void ImportAdventureFlags(AdventureFlag *pAdventureFlags); void func_ov001_020b76c0(CutsceneIndex csIndex); void func_ov001_020b7700(); + void func_ov001_020b7728(); static UnkStruct_027e09b8 *Create(); static void Destroy(); diff --git a/include/Unknown/UnkStruct_027e09bc.hpp b/include/Unknown/UnkStruct_027e09bc.hpp index 46b50c34..ac017188 100644 --- a/include/Unknown/UnkStruct_027e09bc.hpp +++ b/include/Unknown/UnkStruct_027e09bc.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Unknown/Common.hpp" #include "global.h" #include "types.h" @@ -20,13 +21,20 @@ public: /* 04 */ UnkStruct_027e09bc_0C *mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ UnkStruct_027e09bc_0C *mUnk_0C; + /* 10 */ STRUCT_PAD(0x10, 0x48); + /* 48 */ UnkSystem8 mUnk_48; UnkStruct_027e09bc(); ~UnkStruct_027e09bc(); + // overlay 0 + void func_ov000_020771c8(); + // overlay 1 - void func_ov001_020babc8(); void func_ov001_020bab5c(); + void func_ov001_020babc8(); + void func_ov001_020babe8(); + void func_ov001_020bac08(); static UnkStruct_027e09bc *Create(); static void Destroy(); diff --git a/include/Unknown/UnkStruct_027e09c0.hpp b/include/Unknown/UnkStruct_027e09c0.hpp index 567c349a..05353b2e 100644 --- a/include/Unknown/UnkStruct_027e09c0.hpp +++ b/include/Unknown/UnkStruct_027e09c0.hpp @@ -2,9 +2,12 @@ #include "Actor/ActorRef.hpp" #include "Actor/ActorShotArrow.hpp" +#include "Unknown/UnkFileSystem.hpp" #include "global.h" #include "types.h" +class UnkStruct_027e0cd8_0C_Base; + class UnkStruct_027e09c0 : public AutoInstance { public: /* 00 */ unk32 mUnk_00; @@ -13,11 +16,14 @@ public: ~UnkStruct_027e09c0(); // overlay 0 + void func_ov000_0207da40(); void func_ov000_0207e58c(ActorRef param1, unk32 param2, u8 param3, ActorShotArrow_194 *param4); // overlay 1 - void func_ov001_020be3c4(); void func_ov001_020be394(); + void func_ov001_020be3c4(); + void func_ov001_020be3dc(UnkFileSystem3 *param1, UnkStruct_027e0cd8_0C_Base *param2); + void func_ov001_020be400(); static UnkStruct_027e09c0 *Create(); static void Destroy(); diff --git a/include/Unknown/UnkStruct_027e0cd8.hpp b/include/Unknown/UnkStruct_027e0cd8.hpp index a65343cc..f0f8c2a6 100644 --- a/include/Unknown/UnkStruct_027e0cd8.hpp +++ b/include/Unknown/UnkStruct_027e0cd8.hpp @@ -5,108 +5,295 @@ #include "types.h" #include "MapObject/MapObjectManager.hpp" +#include "Render/ModelRender.hpp" +#include "Save/SaveFile.hpp" +#include "Unknown/Common.hpp" +#include "Unknown/UnkFileSystem.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" -class MapObject_20; +#include +#include -class UnkStruct_027e0cd8_0c_160 { +class MapObject_20; +class UnkStruct_027e0cd8; + +template class FixedVector { +private: + /* 00 */ T *mpBegin; + /* 04 */ T *mpEnd; + /* 08 */ size_t mCapacity; + +public: + FixedVector() : + mpBegin(NULL), + mpEnd(NULL), + mCapacity(0) {} + + void Init(T *pFrom, size_t capacity) { + this->mpBegin = pFrom; + this->mpEnd = pFrom; + this->mCapacity = capacity; + } + + T *begin() { + return this->mpBegin; + } + + T *end() { + return this->mpEnd; + } + + void grow_by(int n) { + this->mpEnd += n; + } +}; + +class UnkStruct_ov001_020c40f4 { +public: + /* 00 */ VecFx32 mUnk_00; + /* 0C */ unk16 mUnk_0C; + /* 0E */ u8 mUnk_0E; + /* 0F */ u8 mUnk_0F; + /* 10 */ unk32 mUnk_10; + /* 14 */ unk32 mUnk_14; + /* 18 */ + + UnkStruct_ov001_020c40f4() { + this->mUnk_0E = -1; + this->mUnk_0F = 0; + this->mUnk_10 = 0; + this->mUnk_14 = 0; + } + + ~UnkStruct_ov001_020c40f4() {} + +public: + struct Predicate { + unk32 type; + unk32 id; + Predicate(unk32 t, unk32 i) : + type(t), + id(i) {} + + bool operator()(const UnkStruct_ov001_020c40f4 &elem) const { + return type == elem.mUnk_0E && id == elem.mUnk_14; + } + }; +}; + +class UnkStruct_027e0cd8_0C_160 { public: bool func_ov026_02106aa8(); }; -class UnkStruct_027e0cd8_0c { +class UnkStruct_027e0cd8_0C_Base_88 { +public: + /* 00 */ VecFx32 mUnk_00; + /* 0C */ bool mUnk_0C; + /* 0D */ unk8 mUnk_0D; // pad? + /* 0E */ unk8 mUnk_0E; // pad? + /* 0F */ unk8 mUnk_0F; // pad? + /* 10 */ + + UnkStruct_027e0cd8_0C_Base_88(); + + void func_ov000_020823a8(unk32 param1); + void func_ov000_0208261c(); +}; + +class UnkStruct_027e0cd8_0C_Base_98 { +public: + /* 00 */ STRUCT_PAD(0x00, 0xB0); + /* B0 */ + + UnkStruct_027e0cd8_0C_Base_98(); + ~UnkStruct_027e0cd8_0C_Base_98(); +}; + +class UnkStruct_027e0cd8_0C_Base_148_00_Base { +public: + /* 00 */ STRUCT_PAD(0x00, 0x14); + /* 14 */ + + UnkStruct_027e0cd8_0C_Base_148_00_Base(); +}; + +class UnkStruct_027e0cd8_0C_Base_148_00 : public UnkStruct_027e0cd8_0C_Base_148_00_Base { +public: + /* 00 */ STRUCT_PAD(0x14, 0x2C); + /* 2C */ + + UnkStruct_027e0cd8_0C_Base_148_00(ZMBEntryARAB *pARAB); + ~UnkStruct_027e0cd8_0C_Base_148_00(); +}; + +class UnkStruct_027e0cd8_0C_Base_148_01 : public UnkStruct_027e0cd8_0C_Base_148_00_Base { +public: + /* 00 */ STRUCT_PAD(0x14, 0x28); + /* 28 */ + + UnkStruct_027e0cd8_0C_Base_148_01(ZMBEntryARAB *pARAB); + ~UnkStruct_027e0cd8_0C_Base_148_01(); +}; + +class UnkStruct_027e0cd8_0C_Base_148_02 : public UnkStruct_027e0cd8_0C_Base_148_00_Base { +public: + /* 00 */ STRUCT_PAD(0x14, 0x34); + /* 34 */ + + UnkStruct_027e0cd8_0C_Base_148_02(ZMBEntryARAB *pARAB); + ~UnkStruct_027e0cd8_0C_Base_148_02(); +}; + +// UnkStruct_ov001_020c2a40 ? +class UnkStruct_027e0cd8_0C_Base_154_00 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x14); + /* 14 */ + + UnkStruct_027e0cd8_0C_Base_154_00(const UnkStruct_027e0cd8_0C_Base_154_00 &ref) { + MI_CpuCopy32((void *) &ref, this, sizeof(UnkStruct_027e0cd8_0C_Base_154_00)); + } +}; + +class UnkStruct_027e0cd8_0C_Base { public: /* 000 (vtable) */ - /* 004 */ unk32 *mUnk_04; - /* 008 */ unk32 *mUnk_08; - /* 00C */ unk32 mUnk_0C; - /* 010 */ unk32 *mUnk_10; - /* 014 */ unk32 *mUnk_14; - /* 018 */ unk32 mUnk_18; - /* 01C */ unk32 *mUnk_1C; - /* 020 */ unk32 mUnk_20; - /* 024 */ unk32 *mUnk_24; - /* 028 */ unk32 mUnk_28; - /* 02C */ unk32 *mUnk_2C; - /* 030 */ unk32 mUnk_30; - /* 034 */ unk32 *mUnk_34; - /* 038 */ unk32 mUnk_38; - /* 03C */ unk32 mUnk_3C; - /* 040 */ unk32 mUnk_40; - /* 044 */ unk32 mUnk_44; - /* 048 */ unk32 mUnk_48; - /* 04C */ unk32 mUnk_4C; - /* 050 */ unk32 mUnk_50; - /* 054 */ unk32 mUnk_54; - /* 058 */ unk32 mUnk_58; - /* 05C */ unk32 mUnk_5C; - /* 060 */ unk32 mUnk_60; - /* 064 */ unk32 mUnk_64; - /* 068 */ unk32 mUnk_68; - /* 06C */ unk32 mUnk_6C; - /* 070 */ unk32 *mUnk_70; - /* 074 */ unk32 *mUnk_74; - /* 078 */ unk32 *mUnk_78; - /* 07C */ unk32 mUnk_7C; - /* 080 */ unk32 mUnk_80; - /* 084 */ unk32 mUnk_84; - /* 088 */ unk32 *mUnk_88; - /* 08C */ unk32 *mUnk_8C; - /* 090 */ unk32 mUnk_90; - /* 094 */ unk32 mUnk_94; - /* 098 */ unk32 mUnk_98; - /* 09C */ unk32 mUnk_9C; - /* 0A0 */ unk32 mUnk_A0; - /* 0A4 */ unk32 mUnk_A4; - /* 0A8 */ unk32 mUnk_A8; - /* 0AC */ unk32 mUnk_AC; - /* 0B0 */ unk32 mUnk_B0; - /* 0B4 */ ZeldaObjectList *mUnk_B4; - /* 0B8 */ ZeldaObjectList *mUnk_B8; - /* 0BC */ ZeldaObjectList *mUnk_BC; - /* 0C0 */ ZeldaObjectList *mUnk_C0; - /* 0C4 */ ZeldaObjectList *mUnk_C4; - /* 0C8 */ ZeldaObjectList *mUnk_C8; - /* 0CC */ ZeldaObjectList *mUnk_CC; - /* 0D0 */ ZeldaObjectList *mUnk_D0; - /* 0D4 */ ZeldaObjectList *mUnk_D4; - /* 0D8 */ ZeldaObjectList *mUnk_D8; - /* 0DC */ ZeldaObjectList *mUnk_DC[8]; - /* 0FC */ STRUCT_PAD(0xFC, 0x128); + /* 004 */ UnkSystem3 mUnk_004; + /* 010 */ ModelRender mSceneRender; + /* 070 */ UnkFileSystem5 mUnk_070; + /* 084 */ union { + /* 84 */ wchar_t mUnk_084[2]; + struct { + /* 084 */ u16 mUnk_084_00; + /* 086 */ u16 mUnk_084_01; + }; + }; + /* 088 */ UnkStruct_027e0cd8_0C_Base_88 mUnk_088; + /* 098 */ UnkStruct_027e0cd8_0C_Base_98 *mUnk_098; + /* 09C */ Vec2s mUnk_09C; + /* 0A0 */ unk32 mUnk_0A0; + /* 0A4 */ unk32 mUnk_0A4; + /* 0A8 */ unk32 mUnk_0A8; + /* 0AC */ bool mUnk_0AC; + /* 0AC */ bool mUnk_0AD; + /* 0AC */ bool mUnk_0AE; + /* 0AC */ bool mUnk_0AF; + /* 0B0 */ unk32 mUnk_0B0; + /* 0B4 */ ZeldaObjectList *mUnk_0B4; + /* 0B8 */ ZeldaObjectList *mUnk_0B8[8]; // map objects + /* 0D8 */ ZeldaObjectList *mUnk_0D8; + /* 0DC */ ZeldaObjectList *mUnk_0DC[8]; // actors + /* 0FC */ unk32 mUnk_0FC; + /* 100 */ volatile BOOL mIsCS; + /* 104 */ unk16 mUnk_104; + /* 108 */ unk32 mUnk_108; + /* 10C */ unk32 mUnk_10C; + /* 110 */ unk32 mUnk_110; + /* 114 */ unk32 mUnk_114; + /* 118 */ unk32 mUnk_118; + /* 11C */ unk32 mUnk_11C; + /* 120 */ unk32 mUnk_120; + /* 124 */ unk32 mUnk_124; /* 128 */ u16 mUnk_128; - /* 12A */ STRUCT_PAD(0x12A, 0x160); - /* 160 */ UnkStruct_027e0cd8_0c_160 *mUnk_160; - /* 164 */ STRUCT_PAD(0x164, 0x1E0); - /* 1E0 */ + /* 12A */ bool mUnk_12A; + /* 12B */ bool mUnk_12B; + /* 12C */ bool mUnk_12C; + /* 12D */ bool mUnk_12D; + /* 12E */ bool mUnk_12E; + /* 130 */ unk32 mUnk_130; + /* 134 */ unk32 mUnk_134; + /* 138 */ unk32 mUnk_138; + /* 13C */ FixedVector mUnk_13C; + /* 148 */ CustomVector mUnk_148; + /* 154 */ CustomVector mUnk_154; + /* 160 */ - // data_ov031_02112a0c - /* 00 */ virtual void vfunc_00(); - /* 04 */ virtual void vfunc_04(); + UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param1); + + /* 00 */ virtual ~UnkStruct_027e0cd8_0C_Base(); /* 08 */ virtual void vfunc_08(); /* 0C */ virtual void vfunc_0C(); /* 10 */ virtual void vfunc_10(); /* 14 */ virtual void vfunc_14(); /* 18 */ virtual void vfunc_18(); - /* 1C */ virtual void vfunc_1C(); + /* 1C */ virtual void vfunc_1C(const UnkStruct_SceneChange1 *param1, bool param2, bool param3); /* 20 */ virtual void vfunc_20(); /* 24 */ virtual void vfunc_24(); /* 28 */ virtual fx32 vfunc_28(VecFx32 *param1, unk32 param2, unk32 param3); /* 2C */ virtual void vfunc_2C(); + /* 30 */ virtual void LoadSceneModel(const UnkStruct_SceneChange1 *param1); + /* 34 */ virtual void vfunc_34(unk32 param1); + /* 38 */ virtual void vfunc_38(); + /* 3C */ virtual void vfunc_3C(); + /* 40 */ virtual void vfunc_40(u8 spawnIndex); + // itcm fx32 func_01ffedf4(Vec2b *pPos); + // overlay 0 unk32 func_ov000_02080180(void *param1); + void func_ov000_020801b0(Vec2b *param1, unk32 param2, unk32 param3); + bool func_ov000_020802ec(u16 param1, VecFx32 *param2); + void func_ov000_020803ec(u16 param1); + void func_ov000_0208053c(u16 param1); bool func_ov000_02080658(unk32 param1, UnkStruct_SceneChange1 *param2); void func_ov000_020808f4(void *param1, void *param2, unk32 param3); unk32 func_ov000_02080a44(); - void func_ov000_020801b0(Vec2b *param1, unk32 param2, unk32 param3); - void func_ov000_0208053c(u16 param1); - void func_ov000_020803ec(u16 param1); - bool func_ov000_020802ec(u16 param1, VecFx32 *param2); void func_ov000_02080a5c(VecFx32 *param1); void func_ov000_02080a78(VecFx32 *param1); - VecFx32 *func_ov001_020b8a5c(unk32 spawnIndex, unk32 param1); + // overlay 1 + void func_ov001_020b85d0(const UnkStruct_SceneChange1 *param1); + void func_ov001_020b88c0(unk32 param1); + void func_ov001_020b88ec(); + const UnkStruct_ov001_020c40f4 *func_ov001_020b8a5c(unk32 spawnIndex, unk32 param1); + void func_ov001_020b8aec(); + void func_ov001_020b8b94(ZMBEntryARAB *pARAB); + void func_ov001_020b8c30(const UnkStruct_027e0cd8_0C_Base_154_00 ¶m1); + void *func_ov001_020b8c80(unk32 param1); + void func_ov001_020b8c90(unk32 param1); + void func_ov001_020b8c98(unk32 param1); + void func_ov001_020b8db8(); + void func_ov001_020b8e24(); + void func_ov001_020b8e54(); +}; + +class UnkStruct_027e0cd8_0C : public UnkStruct_027e0cd8_0C_Base { +public: + /* 000 (base) */ + /* 160 */ UnkStruct_027e0cd8_0C_160 *mUnk_160; + /* 164 */ STRUCT_PAD(0x164, 0x1E0); + /* 1E0 */ + + UnkStruct_027e0cd8_0C(UnkStruct_027e0cd8 *param1); + + // data_ov031_02112a0c + /* 00 */ virtual ~UnkStruct_027e0cd8_0C() override; + /* 08 */ virtual void vfunc_08() override; + /* 0C */ virtual void vfunc_0C() override; + /* 10 */ virtual void vfunc_10() override; + /* 14 */ virtual void vfunc_14() override; + /* 18 */ virtual void vfunc_18() override; + /* 1C */ virtual void vfunc_1C(const UnkStruct_SceneChange1 *param1, bool param2, bool param3) override; + /* 20 */ virtual void vfunc_20() override; + /* 24 */ virtual void vfunc_24() override; + /* 28 */ virtual fx32 vfunc_28(VecFx32 *param1, unk32 param2, unk32 param3) override; + /* 2C */ virtual void vfunc_2C() override; +}; + +class UnkStruct_027e0cd8_0C_Derived2 : public UnkStruct_027e0cd8_0C_Base { +public: + /* 00 (base) */ + /* 04 */ STRUCT_PAD(0x160, 0x4F8); + UnkStruct_027e0cd8_0C_Derived2(UnkStruct_027e0cd8 *param1); +}; + +class UnkStruct_027e0cd8_0C_Derived3 : public UnkStruct_027e0cd8_0C_Base { +public: + /* 00 (base) */ + + UnkStruct_027e0cd8_0C_Derived3(UnkStruct_027e0cd8 *param1); }; class UnkStruct_027e0cd8_04_0C { @@ -114,7 +301,8 @@ public: /* 00 */ unk32 mUnk_00; /* 04 */ unk32 mUnk_04; /* 08 */ s16 mUnk_08; - /* 0C */ STRUCT_PAD(0x0C, 0x50); + /* 0C */ volatile u32 mUnk_0C; + /* 10 */ STRUCT_PAD(0x10, 0x50); /* 50 */ UnkStruct_027e0cd8_04_0C(); @@ -122,28 +310,57 @@ public: class UnkStruct_027e0cd8_04 { public: - /* 00 */ unk32 mUnk_00; + /* 00 */ unk8 mUnk_00; + /* 00 */ bool mUnk_01; /* 04 */ unk32 mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ UnkStruct_027e0cd8_04_0C *mUnk_0C; - /* 10 */ + /* 10 */ u8 mUnk_10; + /* 11 */ u8 mUnk_11; + /* 12 */ STRUCT_PAD(0x12, 0x40); + /* 40 */ u8 mUnk_40[1][10]; // at least one + STRUCT_PAD(0x4C, 0xB4); /* B4 */ UnkStruct_027e0cd8_04(); + ~UnkStruct_027e0cd8_04(); + + void func_ov000_02081354(const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1, + SaveFile_00000_0000_Data_184 *param3, bool param4); +}; + +class UnkStruct_027e0cd8_10 : public UnkDataStruct4 { +public: + /* 00 (base) */ + /* D0 */ unk32 mUnk_D0; + /* D4 */ + + UnkStruct_027e0cd8_10(); + ~UnkStruct_027e0cd8_10(); }; class UnkStruct_027e0cd8 : public AutoInstance { public: - /* 00 */ unk32 mUnk_00; + /* 00 */ Vec2s mUnk_00; /* 04 */ UnkStruct_027e0cd8_04 *mUnk_04; // stage flags - /* 08 */ unk32 mUnk_08; - /* 0C */ UnkStruct_027e0cd8_0c *mUnk_0C; // related to train? - /* 10 */ MapObjectManager *mUnk_10; - /* 14 */ STRUCT_PAD(0x14, 0x24); + /* 08 */ UnkStruct_027e0cd8_04 *mUnk_08; + /* 0C */ UnkStruct_027e0cd8_0C_Base *mUnk_0C; // related to train? + /* 10 */ UnkStruct_027e0cd8_10 *mUnk_10; + /* 14 */ unk16 mUnk_14; + /* 16 */ bool mUnk_16; + /* 16 */ bool mUnk_17; + /* 18 */ UnkSystem8 mUnk_18; /* 24 */ VecFx32 mUnk_24; - /* 34 */ STRUCT_PAD(0x34, 0x4C); + /* 30 */ unk32 mUnk_30; // scene index but unknown purpose + /* 34 */ unk32 mUnk_34; // scene index but unknown purpose + /* 38 */ s64 mUnk_38[2]; + /* 48 */ bool mUnk_48[2]; /* 4C */ + UnkStruct_027e0cd8_0C *GetUnk0C() { + return (UnkStruct_027e0cd8_0C *) this->mUnk_0C; + } + UnkStruct_027e0cd8(); ~UnkStruct_027e0cd8(); @@ -156,11 +373,20 @@ public: u32 func_ov000_02081d5c(); // returns current room index? bool func_ov000_02082124(); bool func_ov000_02081c28(); + void func_ov000_02081ca0(); // overlay 1 + void func_ov001_020b7830(const UnkStruct_SceneChange1 *param1); void func_ov001_020b7a7c(); - void func_ov001_020b7830(UnkStruct_SceneChange1 *param1); - void func_ov001_020b7c08(UnkStruct_SceneChange1 *param1, UnkStruct_WarpUnk1_A0 *param2); + void func_ov001_020b7b38(const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1); + void func_ov001_020b7c08(const UnkStruct_SceneChange1 *param1, const UnkStruct_WarpUnk1_A0 *param2); + void func_ov001_020b7d64(const UnkStruct_SceneChange1 *param1); + void func_ov001_020b7e50(); + void func_ov001_020b7e68(const UnkStruct_SceneChange1 *param1, bool param2); + void func_ov001_020b803c(); + bool func_ov001_020b80fc(SceneIndex sceneIndex); + void func_ov001_020b8120(SceneIndex sceneIndex); + void func_ov001_020b818c(); static UnkStruct_027e0cd8 *Create(); static void Destroy(); diff --git a/include/Unknown/UnkStruct_027e0ce0.hpp b/include/Unknown/UnkStruct_027e0ce0.hpp index 43d61077..880e2458 100644 --- a/include/Unknown/UnkStruct_027e0ce0.hpp +++ b/include/Unknown/UnkStruct_027e0ce0.hpp @@ -14,6 +14,8 @@ #include +class UnkStruct_ov001_020c40f4; + class UnkStruct_027e0ce0_34 { public: /* 00 */ unk32 mUnk_00[4]; @@ -442,8 +444,14 @@ public: static UnkStruct_027e0ce0_34 *func_ov000_0205c904(); // overlay 1 - void func_ov001_020bc5f8(); void func_ov001_020bc524(bool param1); + void func_ov001_020bc5f8(); + void func_ov001_020bc65c(); + void func_ov001_020bc69c(); + void func_ov001_020bc6d8(unk32 param1, const UnkStruct_ov001_020c40f4 *param2); + void func_ov001_020bc6e8(const UnkStruct_ov001_020c40f4 *param1); + void func_ov001_020bc6fc(const UnkStruct_ov001_020c40f4 *param1, const UnkStruct_ov001_020c40f4 *param2, unk32 param3, + unk32 param4); static UnkStruct_027e0ce0 *Create(); static void Destroy(); diff --git a/include/Unknown/UnkStruct_027e0cec.hpp b/include/Unknown/UnkStruct_027e0cec.hpp index 3c8e6eb6..fd1afe89 100644 --- a/include/Unknown/UnkStruct_027e0cec.hpp +++ b/include/Unknown/UnkStruct_027e0cec.hpp @@ -15,6 +15,7 @@ public: void func_ov000_020a0000(UnkStruct_PlayerGet_ec *param1, void *param2, unk32 *param3, VecFx32 *param4, unk32 param5); void func_ov000_020a0110(UnkStruct_PlayerGet_ec *param1); void func_ov000_020a0220(void *param1, void *param2); + void func_ov001_020bf028(); // overlay 1 static UnkStruct_027e0cec *Create(); diff --git a/include/Unknown/UnkStruct_ov000_02067bc4.hpp b/include/Unknown/UnkStruct_ov000_02067bc4.hpp index 0c5bd402..fa7cd58a 100644 --- a/include/Unknown/UnkStruct_ov000_02067bc4.hpp +++ b/include/Unknown/UnkStruct_ov000_02067bc4.hpp @@ -9,6 +9,8 @@ #include "types.h" #include +class UnkStruct_027e0cd8_04_0C; + class UnkStruct_ov000_02067bc4_Sub1 { public: unk32 func_02022128(void); @@ -163,10 +165,14 @@ public: void func_ov000_02067b60(); // overlay 1 + void func_ov001_020be504(void); void func_ov001_020be510(); void func_ov001_020be668(void); void func_ov001_020be6f4(void); void func_ov001_020be8e0(void); + void func_ov001_020be92c(UnkStruct_027e0cd8_04_0C *param1); + void func_ov001_020be94c(void); + void func_ov001_020be998(void); }; // gMessageManager? diff --git a/include/Unknown/UnkStruct_ov000_020b50c0.hpp b/include/Unknown/UnkStruct_ov000_020b50c0.hpp index 0086673a..ff1d69f5 100644 --- a/include/Unknown/UnkStruct_ov000_020b50c0.hpp +++ b/include/Unknown/UnkStruct_ov000_020b50c0.hpp @@ -63,8 +63,10 @@ public: void func_ov001_020bd87c(void); void func_ov001_020bd8dc(void); void func_ov001_020bd8ac(void); - void func_ov001_020bde04(UnkStruct_SceneChange1 *param1); void func_ov001_020bd970(UnkStruct_SceneChange1 *param1); + void func_ov001_020bde5c(void); + void func_ov001_020bde04(UnkStruct_SceneChange1 *param1); + void func_ov001_020bde4c(const UnkStruct_SceneChange1 *param1); // overlay 18 UnkStruct_ov018_020c5ac0 *func_ov018_020c5718(void); diff --git a/include/Unknown/UnkStruct_ov026_02138d10.hpp b/include/Unknown/UnkStruct_ov026_02138d10.hpp index 5dba7120..6e71bcd1 100644 --- a/include/Unknown/UnkStruct_ov026_02138d10.hpp +++ b/include/Unknown/UnkStruct_ov026_02138d10.hpp @@ -10,6 +10,10 @@ public: UnkStruct_ov026_02138d10(); ~UnkStruct_ov026_02138d10(); + // overlay 0 + void func_ov026_020dca14(); + + // overlay 26 unk32 func_ov026_020e13f4(); unk32 func_ov026_020e18fc(); void func_ov026_020e1440(); diff --git a/include/Unknown/UnkSystem1.hpp b/include/Unknown/UnkSystem1.hpp index 29e17835..63eb928d 100644 --- a/include/Unknown/UnkSystem1.hpp +++ b/include/Unknown/UnkSystem1.hpp @@ -85,6 +85,23 @@ public: /* 24 */ virtual ~UnkSystem1_ov000_Derived2() override; }; +// data_ov000_020b23a0 +class UnkSystem1_ov000_Derived3 : public UnkSystem1_ov000_Derived1 { +public: + /* 00 (base) */ + /* 14 */ + + UnkSystem1_ov000_Derived3(); + + /* 00 */ virtual void vfunc_00(unk32 param1) override; + /* 08 */ virtual void vfunc_08(unk32 param1) override; + /* 10 */ virtual unk32 vfunc_10(u16 *param1) override; + /* 14 */ virtual bool vfunc_14(FLW1Instr *param1) override; + /* 1C */ virtual unk32 vfunc_1C(u32 param1, unk32 param2, unk32 param3) override; + /* 20 */ virtual unk32 vfunc_20(unk32 param1, unk32 param2, unk32 param3) override; + /* 24 */ virtual ~UnkSystem1_ov000_Derived3() override; +}; + // data_ov010_020b8e10 class UnkSystem1_ov010 : public UnkSystem1_ov000_Derived1 { public: diff --git a/include/files.h b/include/files.h index dcafadcb..8679598e 100644 --- a/include/files.h +++ b/include/files.h @@ -24,13 +24,17 @@ typedef struct FileInfos { } FileInfos; // .zob -typedef struct ZeldaObjectList { +typedef struct ZOBHeader { /* 00 */ FileType type; // always "ZOLB" /* 04 */ unk32 nSize; // file size? /* 08 */ unk16 unk_08; - /* 0A */ unk16 unk_0a; + /* 0A */ unk16 unk_0A; /* 0C */ u16 nEntries; // number of entries - /* 0E */ unk16 unk_0e; + /* 0E */ unk16 unk_0E; +} ZOBHeader; // size = 0x10 + +typedef struct ZeldaObjectList { + /* 00 */ ZOBHeader header; /* 10 */ u32 aIdList[]; // actor id or map object id } ZeldaObjectList; @@ -140,6 +144,15 @@ enum ZMBSectionType_ { ZMBSectionType_NPCA = 'NPCA', // actor list, same as above }; +typedef struct ZMBFileInfos { + /* 00 */ void *pFile; + /* 04 */ size_t size; + /* 08 */ unk16 unk_08; + /* 0C */ unk16 unk_0C; + /* 10 */ unk16 unk_10; + /* 14 */ unk16 unk_14; +} ZMBFileInfos; + typedef struct ZMBHeader { /* 00 */ u32 magic; // 'MAPB' /* 04 */ FileType type; // always "ZMB1" @@ -169,6 +182,23 @@ typedef struct ZMBSectionRALB { /* 0C */ ZMBEntryRALB entries[]; } ZMBSectionRALB; +typedef struct ZMBEntryARAB { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ u8 unk_02; + /* 03 */ u8 unk_03; + /* 04 */ unk32 unk_04; + /* 08 */ unk32 unk_08; + /* 0C */ u8 unk_0C; + /* 0D */ u8 unk_0D; + /* 0E */ unk8 unk_0E; + /* 0F */ unk8 unk_0F; +} ZMBEntryARAB; // size = 0x10 + +struct UnkStruct_027e0cd8_0C_Base; + +extern BOOL ZMB_ParseFile(ZMBFileInfos *pFileInfos, UnkStruct_027e0cd8_0C_Base *pDst, BOOL param3); + // .cib typedef struct CourseInitEntry { /* 00 */ const char name[16]; @@ -206,6 +236,7 @@ typedef struct CourseListEntry { /* 1E */ u8 unk_1E; /* 1F */ u8 unk_1F; /* 20 */ u8 defaultMapPaintIndex; + /* 21 */ s8 unk_21; // scene index but unknown purpose /* 24 */ CourseListRoomEntry roomEntries[]; } CourseListEntry; // size >= 0x28 diff --git a/include/global.h b/include/global.h index 6c704c15..33be9854 100644 --- a/include/global.h +++ b/include/global.h @@ -76,6 +76,12 @@ #define ALIGN_NEXT(X, N) ALIGN_PREV(((X) + (N) - 1), N) #define ALIGN(X, N) ((X + N) & ~N) +#define STACK_PAD(N) \ + struct __StackPad { \ + char pad[(N)]; \ + ~__StackPad() {} \ + } __stack_pad + #define VTABLE_PAD(name) \ class _VTABLE_PAD_##name { \ public: \ @@ -90,4 +96,11 @@ } \ (void) 0 +#define DELETE_ARRAY(ptr) \ + { \ + delete[] ptr; \ + ptr = NULL; \ + } \ + (void) 0 + #endif diff --git a/include/math.hpp b/include/math.hpp index 6a858b54..c8572279 100644 --- a/include/math.hpp +++ b/include/math.hpp @@ -39,6 +39,16 @@ union Vec2s { } Vec2s() {} + + Vec2s(Vec2s *from) { +#if __MWERKS__ + this->coords = from->coords; +#else + this->x = from->x; + this->y = from->y; +#endif + } + Vec2s(s16 X, s16 Y) { x = X; y = Y; diff --git a/libs/c/include/wstring.h b/libs/c/include/wstring.h index c45ed1e0..4448ba09 100644 --- a/libs/c/include/wstring.h +++ b/libs/c/include/wstring.h @@ -7,6 +7,8 @@ extern "C" { #endif +struct mbstate_t {}; + size_t wcslen(const wchar_t *str); wchar_t *wcscpy(wchar_t *dest, const wchar_t *src); wchar_t *wcsncpy(wchar_t *dest, const wchar_t *src, size_t n); diff --git a/libs/cpp/include/algorithm b/libs/cpp/include/algorithm new file mode 100644 index 00000000..4de1368d --- /dev/null +++ b/libs/cpp/include/algorithm @@ -0,0 +1,83 @@ +#ifndef _STD_ALGORITHM_H +#define _STD_ALGORITHM_H + +// from rb3/key decomp + +#include + +namespace std { + + template inline const T &min(const T &a, const T &b) { + return b < a ? b : a; + } + + template inline const T &max(const T &a, const T &b) { + return a < b ? b : a; + } + + template inline const T &min(const T &a, const T &b, _Compare comp) { + return comp(b, a) ? b : a; + } + + template inline const T &max(const T &a, const T &b, _Compare comp) { + return comp(a, b) ? b : a; + } + + template + inline InputIterator find_if(InputIterator first, InputIterator last, Predicate p) { + for (; first != last && !p(*first); ++first) { + } + return first; + } + + template inline It find(It first, It last, const T &value) { + while (first != last && *first != value) { + first++; + } + + return first; + } + + // adapted from https://github.com/matta/sgi-stl/blob/635eaeef4533214ec140fb17411558ad441d2996/stl/stl_algo.h#L638 + template inline It remove(It first, It last, const T &value) { + first = find(first, last, value); + + if (first != last) { + It it = first; + + for (it++; it != last; it++) { + if (*it != value) { + *first = *it; + first++; + } + } + } + + return first; + } + + template struct __fill_n { + static inline void fill_n(T *first, Size n, const T &value) { + for (; n != 0; first++, n--) { + *first = value; + } + } + }; + + template + inline void fill_n(OutputIt *first, Size n, const T &value) { + __fill_n::fill_n(first, n, value); + } + + template inline T &move(T &p) { + return p; + } + + template inline void swap(T &a, T &b) { + T temp = move(a); + a = move(b); + b = move(temp); + } +} // namespace std + +#endif diff --git a/libs/cpp/include/compressed_pair.hpp b/libs/cpp/include/compressed_pair.hpp new file mode 100644 index 00000000..0a201af2 --- /dev/null +++ b/libs/cpp/include/compressed_pair.hpp @@ -0,0 +1,156 @@ +#ifndef _STD_PAIR +#define _STD_PAIR + +// from key decomp + +#include "type_traits.hpp" + +namespace Metrowerks { + + namespace details { + + template ::value, bool T2Empty = std::is_empty::value> + struct compressed_pair_selector { + static const int value = 0; + }; + + template struct compressed_pair_selector { + static const int value = 1; + }; + + template struct compressed_pair_selector { + static const int value = 2; + }; + + template struct compressed_pair_selector { + static const int value = 3; + }; + + template struct compressed_pair_selector { + static const int value = 0; + }; + + template struct compressed_pair_selector { + static const int value = 1; + }; + + // Note to future self: template signature must stay as-is for symbols + template ::value> class compressed_pair_imp { + public: + typedef typename Metrowerks::call_traits::param_type first_param; + typedef typename Metrowerks::call_traits::param_type second_param; + + compressed_pair_imp() {} + compressed_pair_imp(first_param first, second_param second) : + m_First(first), + m_Second(second) {} + compressed_pair_imp(first_param first) : + m_First(first) {} + compressed_pair_imp(second_param second) : + m_Second(second) {} + + T1 &first() { + return m_First; + } + const T1 &first() const { + return m_First; + } + + T2 &second() { + return m_Second; + } + const T2 &second() const { + return m_Second; + } + + private: + T1 m_First; + T2 m_Second; + }; + + template class compressed_pair_imp : private T1 { + public: + typedef typename Metrowerks::call_traits::param_type first_param; + typedef typename Metrowerks::call_traits::param_type second_param; + + compressed_pair_imp() {} + compressed_pair_imp(first_param first, second_param second) : + T1(first), + m_Second(second) {} + compressed_pair_imp(first_param first) : + T1(first) {} + compressed_pair_imp(second_param second) : + m_Second(second) {} + + T1 &first() { + return *this; + } + const T1 &first() const { + return *this; + } + + T2 &second() { + return m_Second; + } + const T2 &second() const { + return m_Second; + } + + private: + T2 m_Second; + }; + + template class compressed_pair_imp : private T2 { + public: + typedef typename Metrowerks::call_traits::param_type first_param; + typedef typename Metrowerks::call_traits::param_type second_param; + + compressed_pair_imp() {} + compressed_pair_imp(first_param first, second_param second) : + m_First(first), + T2(second) {} + compressed_pair_imp(first_param first) : + m_First(first) {} + compressed_pair_imp(second_param second) : + T2(second) {} + + T1 &first() { + return m_First; + } + const T1 &first() const { + return m_First; + } + + T2 &second() { + return *this; + } + const T2 &second() const { + return *this; + } + + private: + T1 m_First; + }; + } // namespace details + + template struct compressed_pair : public details::compressed_pair_imp { + typedef typename details::compressed_pair_imp::first_param first_param; + typedef typename details::compressed_pair_imp::second_param second_param; + typedef details::compressed_pair_imp _Base; + + compressed_pair() {} + compressed_pair(first_param first) : + _Base(first) {} + compressed_pair(second_param second) : + _Base(second) {} + compressed_pair(first_param first, second_param second) : + _Base(first, second) {} + + template + compressed_pair(const compressed_pair &p) : + _Base(p.first(), p.second()) {} + }; + +} // namespace Metrowerks + +#endif diff --git a/libs/cpp/include/cstddef b/libs/cpp/include/cstddef new file mode 100644 index 00000000..ebd5a852 --- /dev/null +++ b/libs/cpp/include/cstddef @@ -0,0 +1,13 @@ +#ifndef _STD_CSTDDEF_H +#define _STD_CSTDDEF_H + +// from rb3 decomp + +#include + +namespace std { + using ::ptrdiff_t; + using ::size_t; +} + +#endif diff --git a/libs/cpp/include/cstring b/libs/cpp/include/cstring new file mode 100644 index 00000000..53e2172b --- /dev/null +++ b/libs/cpp/include/cstring @@ -0,0 +1,39 @@ +#ifndef _STD_CSTRING_H +#define _STD_CSTRING_H + +// from rb3 decomp + +#include +#include + +namespace std { + using ::size_t; + + using ::memchr; + using ::memcmp; + using ::memcpy; + using ::memmove; + using ::memset; + + // using ::strcat; + using ::strcpy; + // using ::strncat; + using ::strncpy; + // using ::strxfrm; + + // using ::strchr; + using ::strcmp; + // using ::strcoll; + // using ::strcspn; + using ::strlen; + using ::strncmp; + // using ::strpbrk; + // using ::strrchr; + // using ::strspn; + // using ::strstr; + // using ::strtok; + + // using ::strerror; +} // namespace std + +#endif diff --git a/libs/cpp/include/cwchar b/libs/cpp/include/cwchar new file mode 100644 index 00000000..2c56d202 --- /dev/null +++ b/libs/cpp/include/cwchar @@ -0,0 +1,82 @@ +#ifndef MSL_CPP_CWCHAR_H +#define MSL_CPP_CWCHAR_H + +// from rb3 decomp + +#include + +namespace std { + // using ::mbstate_t; + // using ::wint_t; + using ::size_t; + // using ::tm; + + // using ::wcscat; + using ::wcscpy; + // using ::wcsncat; + using ::wcsncpy; + // using ::wcsxfrm; + + using ::wcschr; + // using ::wcscmp; + // using ::wcscoll; + // using ::wcscspn; + using ::wcslen; + // using ::wcsncmp; + // using ::wcspbrk; + // using ::wcsrchr; + // using ::wcsspn; + // using ::wcsstr; + // using ::wcstok; + + // using ::wmemchr; + // using ::wmemcmp; + // using ::wmemcpy; + // using ::wmemmove; + // using ::wmemset; + + // using ::btowc; + // using ::mbrlen; + // using ::mbrtowc; + // using ::mbsinit; + // using ::mbsrtowcs; + // using ::wcrtomb; + // using ::wcsrtombs; + // using ::wctob; + + // using ::fgetwc; + // using ::fgetws; + // using ::fputwc; + // using ::fputws; + // using ::getwc; + // using ::getwchar; + // using ::putwc; + // using ::putwchar; + // using ::ungetwc; + + // using ::fwide; + + // using ::fwprintf; + // using ::fwscanf; + // using ::swprintf; + // using ::swscanf; + // using ::vfwprintf; + // using ::vfwscanf; + // using ::vswprintf; + // using ::vswscanf; + // using ::vwprintf; + // using ::vwscanf; + // using ::wprintf; + // using ::wscanf; + + // using ::wcsftime; + // using ::wcstod; + // using ::wcstof; + // using ::wcstol; + // using ::wcstold; + // using ::wcstoll; + // using ::wcstoul; + // using ::wcstoull; +} + +#endif diff --git a/libs/cpp/include/default_delete.hpp b/libs/cpp/include/default_delete.hpp new file mode 100644 index 00000000..efe77ff1 --- /dev/null +++ b/libs/cpp/include/default_delete.hpp @@ -0,0 +1,28 @@ +#ifndef _STD_DEFAULT_DELETE +#define _STD_DEFAULT_DELETE + +// from rb3 decomp + +#include + +namespace std { + + namespace detail { + + template struct default_delete { + void operator()(T *ptr) { + delete ptr; + } + }; + + template struct default_delete { + void operator()(T ptr[]) { + delete[] ptr; + } + }; + + } // namespace detail + +} // namespace std + +#endif diff --git a/libs/cpp/include/exception b/libs/cpp/include/exception new file mode 100644 index 00000000..cc6ffc6f --- /dev/null +++ b/libs/cpp/include/exception @@ -0,0 +1,38 @@ +#ifndef _STD_EXCEPTION +#define _STD_EXCEPTION + +// from rb3 decomp + +namespace std { + + class exception { + public: + exception() {} + virtual ~exception() {} + virtual const char *what() const { + return "exception"; + } + }; + + class bad_exception : public exception { + public: + bad_exception() {} + virtual ~bad_exception() {} + virtual const char *what() const { + return "bad_exception"; + } + }; + + typedef void (*unexpected_handler)(); + unexpected_handler set_unexpected(unexpected_handler f) throw(); + void unexpected(); + + typedef void (*terminate_handler)(); + terminate_handler set_terminate(terminate_handler f) throw(); + void terminate(); + + bool uncaught_exception() throw(); + +} // namespace std + +#endif diff --git a/libs/cpp/include/iosfwd b/libs/cpp/include/iosfwd new file mode 100644 index 00000000..67717413 --- /dev/null +++ b/libs/cpp/include/iosfwd @@ -0,0 +1,115 @@ +#ifndef _STD_IOSFWD +#define _STD_IOSFWD + +// from rb3 decomp + +#include + +namespace std { + + typedef mbstate_t __char_state_type; + typedef mbstate_t __wchar_state_type; + + template + struct char_traits; + template <> + struct char_traits; + template <> + struct char_traits; + + template + class allocator; + + template > + class basic_ios; + template > + class basic_streambuf; + template > + class basic_istream; + template > + class basic_ostream; + template > + class basic_iostream; + + template > + class basic_filebuf; + template > + class basic_ifstream; + template > + class basic_ofstream; + template > + class basic_fstream; + + template < + class CharT, + class Traits = char_traits, + class Allocator = allocator > + class basic_stringbuf; + template < + class CharT, + class Traits = char_traits, + class Allocator = allocator > + class basic_istringstream; + template < + class CharT, + class Traits = char_traits, + class Allocator = allocator > + class basic_ostringstream; + template < + class CharT, + class Traits = char_traits, + class Allocator = allocator > + class basic_stringstream; + + template > + class istreambuf_iterator; + template > + class ostreambuf_iterator; + + typedef basic_ios ios; + typedef basic_ios wios; + + typedef basic_streambuf streambuf; + typedef basic_istream istream; + typedef basic_ostream ostream; + typedef basic_iostream iostream; + + typedef basic_stringbuf stringbuf; + typedef basic_istringstream istringstream; + typedef basic_ostringstream ostringstream; + typedef basic_stringstream stringstream; + + typedef basic_filebuf filebuf; + typedef basic_ifstream ifstream; + typedef basic_ofstream ofstream; + typedef basic_fstream fstream; + + typedef basic_streambuf wstreambuf; + typedef basic_istream wistream; + typedef basic_ostream wostream; + typedef basic_iostream wiostream; + + typedef basic_stringbuf wstringbuf; + typedef basic_istringstream wistringstream; + typedef basic_ostringstream wostringstream; + typedef basic_stringstream wstringstream; + + typedef basic_filebuf wfilebuf; + typedef basic_ifstream wifstream; + typedef basic_ofstream wofstream; + typedef basic_fstream wfstream; + + template + class fpos; + + typedef fpos<__char_state_type /*char_traits::state_type*/> streampos; + typedef fpos<__wchar_state_type /*char_traits::state_type*/> wstreampos; + + class strstreambuf; + class istrstream; + class ostrstream; + class strstream; + +} + +#endif diff --git a/libs/cpp/include/iterator b/libs/cpp/include/iterator new file mode 100644 index 00000000..31b1ac41 --- /dev/null +++ b/libs/cpp/include/iterator @@ -0,0 +1,371 @@ +#ifndef _STD_ITERATOR_H +#define _STD_ITERATOR_H + +// from rb3 decomp + +// clang-format off: too excessive with splitting things into multiple lines + +// Based on https://github.com/SwareJonge/mkdd/blob/main/libs/PowerPC_EABI_Support/include/iterator + +#include +#include + +namespace std { + + struct input_iterator_tag {}; + struct output_iterator_tag {}; + struct forward_iterator_tag : public input_iterator_tag {}; + struct bidirectional_iterator_tag : public forward_iterator_tag {}; + struct random_access_iterator_tag : public bidirectional_iterator_tag {}; + + template + struct iterator_traits { + typedef typename Iterator::difference_type difference_type; + typedef typename Iterator::value_type value_type; + typedef typename Iterator::pointer pointer; + typedef typename Iterator::reference reference; + typedef typename Iterator::iterator_category iterator_category; + }; + + template + struct iterator { + typedef IteratorTag iterator_category; + typedef ValueType value_type; + typedef DifferenceType difference_type; + typedef Pointer pointer; + typedef Reference reference; + }; + + template + class insert_iterator : public iterator { + typedef iterator _Base; + + public: + typedef Container container_type; + + typedef typename _Base::iterator_category iterator_category; + typedef typename _Base::value_type value_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::reference reference; + + insert_iterator() {} + insert_iterator(Container& c, typename Container::iterator i) + : container(&c), iter(i) { } + + insert_iterator& operator=(typename Container::const_reference value) { + iter = container->insert(iter, value); + ++iter; + return *this; + } + + insert_iterator& operator*() { return *this; } + insert_iterator& operator++() { return *this; } + insert_iterator& operator++(int) { return *this; } + + protected: + Container* container; + typename Container::iterator iter; + }; + + template + insert_iterator inserter(Container& c, typename Container::iterator i) { + return insert_iterator(c, i); + } + + template + class front_insert_iterator : public iterator { + typedef iterator _Base; + + public: + typedef Container container_type; + + typedef typename _Base::iterator_category iterator_category; + typedef typename _Base::value_type value_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::reference reference; + + explicit front_insert_iterator(Container& c) : container(&c) { } + + front_insert_iterator& operator=(typename Container::const_reference value) { + typename Container::iterator iter = container->push_front(iter, value); + ++iter; + return *this; + } + + front_insert_iterator& operator*() { return *this; } + front_insert_iterator& operator++() { return *this; } + front_insert_iterator& operator++(int) { return *this; } + + protected: + Container* container; + }; + + template + front_insert_iterator front_inserter(Container& c) { + return front_insert_iterator(c); + } + + template + class back_insert_iterator : public iterator { + typedef iterator _Base; + + public: + typedef Container container_type; + + typedef typename _Base::iterator_category iterator_category; + typedef typename _Base::value_type value_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::reference reference; + + explicit back_insert_iterator(Container& c) : container(&c) { } + + back_insert_iterator& operator=(typename Container::const_reference value) { + typename Container::iterator iter = container->push_back(iter, value); + ++iter; + return *this; + } + + back_insert_iterator& operator*() { return *this; } + back_insert_iterator& operator++() { return *this; } + back_insert_iterator& operator++(int) { return *this; } + + protected: + Container* container; + }; + + template + back_insert_iterator back_inserter(Container& c) { + return back_insert_iterator(c); + } + + template + class reverse_iterator : public iterator< + typename iterator_traits::iterator_category, + typename iterator_traits::value_type, + typename iterator_traits::difference_type, + typename iterator_traits::pointer, + typename iterator_traits::reference + > { + typedef iterator< + typename iterator_traits::iterator_category, + typename iterator_traits::value_type, + typename iterator_traits::difference_type, + typename iterator_traits::pointer, + typename iterator_traits::reference + > _Base; + + public: + typedef Iter iterator_type; + + typedef typename _Base::iterator_category iterator_category; + typedef typename _Base::value_type value_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::reference reference; + + reverse_iterator() {} + explicit reverse_iterator(Iter itr) : current(itr) {} + + template + reverse_iterator(const reverse_iterator& other) : current(other.current) {} + + template + reverse_iterator& operator=(const reverse_iterator& other) { + current = other.current; + } + + Iter base() { return current; } + + reference operator*() const { + Iter it = current; + --it; + return *it; + } + + pointer operator->() const { + return &(operator*()); + } + + reverse_iterator& operator++() { + --current; + return *this; + } + + reverse_iterator operator++(int) { + reverse_iterator tmp = *this; + ++*this; + return tmp; + } + + reverse_iterator& operator--() { + ++current; + return *this; + } + + reverse_iterator operator--(int) { + reverse_iterator tmp = *this; + --*this; + return tmp; + } + + reverse_iterator operator+(difference_type n) const { + return reverse_iterator(current - n); + } + + reverse_iterator& operator+=(difference_type n) { + current -= n; + return *this; + } + + reverse_iterator operator-(difference_type n) const { + return reverse_iterator(current + n); + } + + reverse_iterator& operator-=(difference_type n) { + current += n; + return *this; + } + + reference operator[](difference_type n) const { + return current[-n - 1]; + } + + protected: + Iter current; + }; + + template + bool operator==(const reverse_iterator &lhs, const reverse_iterator &rhs) { + return lhs.base() == rhs.base(); + } + + template + bool operator<(const reverse_iterator &lhs, const reverse_iterator &rhs) { + return lhs.base() < rhs.base(); + } + + template + bool operator!=(const reverse_iterator &lhs, const reverse_iterator &rhs) { + return !(lhs.base() == rhs.base()); + } + + template + bool operator>(const reverse_iterator &lhs, const reverse_iterator &rhs) { + return rhs.base() < lhs.base(); + } + + template + bool operator<=(const reverse_iterator &lhs, const reverse_iterator &rhs) { + return !(rhs.base() < lhs.base()); + } + + template + bool operator>=(const reverse_iterator &lhs, const reverse_iterator &rhs) { + return !(lhs.base() < rhs.base()); + } + + template + reverse_iterator operator+( + typename reverse_iterator::difference_type lhs, + const reverse_iterator& rhs + ) { + return rhs + lhs; + } + + template + typename reverse_iterator::difference_type operator-( + const reverse_iterator& lhs, + const reverse_iterator& rhs + ) { + return rhs.base() - lhs.base(); + } + + template + reverse_iterator make_reverse_iterator(Iter itr) { + return reverse_iterator(itr); + } + + template , class Distance = ptrdiff_t> + class istream_iterator : public iterator {}; + template + bool operator==(const istream_iterator &lhs, const istream_iterator &rhs); + template + bool operator!=(const istream_iterator &lhs, const istream_iterator &rhs); + + template > + class ostream_iterator : public iterator {}; + template + bool operator==(const ostream_iterator &lhs, const ostream_iterator &rhs); + template + bool operator!=(const ostream_iterator &lhs, const ostream_iterator &rhs); + + template */ > + class istreambuf_iterator : public iterator {}; + template + bool operator==(const istreambuf_iterator &lhs, const istreambuf_iterator &rhs); + template + bool operator!=(const istreambuf_iterator &lhs, const istreambuf_iterator &rhs); + + template */ > + class ostreambuf_iterator : public iterator {}; + template + bool operator==(const ostreambuf_iterator &lhs, const ostreambuf_iterator &rhs); + template + bool operator!=(const ostreambuf_iterator &lhs, const ostreambuf_iterator &rhs); + + template + void __advance(Iterator &it, Distance n, input_iterator_tag) { + for (; n > 0; --n) + ++it; + } + + template + void __advance(Iterator &it, Distance n, bidirectional_iterator_tag) { + // positive value + for (; n > 0; --n) + ++it; + + // negative value + for (; n < 0; ++n) + --it; + } + + template + void __advance(Iterator &it, Distance n, random_access_iterator_tag) { + it += n; + } + + template + void advance(Iterator &it, Distance n) { + return __advance(it, n, iterator_traits::iterator_category()); + } + + template + typename iterator_traits::difference_type + __distance(Iterator first, Iterator last, input_iterator_tag) { + typename iterator_traits::difference_type result = 0; + for (; first != last; ++first) + ++result; + return result; + } + + template + typename iterator_traits::difference_type + __distance(Iterator first, Iterator last, random_access_iterator_tag) { + return last - first; + } + + template + typename iterator_traits::difference_type + distance(Iterator first, Iterator last) { + return __distance(first, last, iterator_traits::iterator_category()); + } + +} +// clang-format on + +#endif diff --git a/libs/cpp/include/limits b/libs/cpp/include/limits new file mode 100644 index 00000000..235901ea --- /dev/null +++ b/libs/cpp/include/limits @@ -0,0 +1,131 @@ +#ifndef _STD_LIMITS_H +#define _STD_LIMITS_H + +// from rb3 decomp + +// Based on https://github.com/SwareJonge/mkdd/blob/main/libs/PowerPC_EABI_Support/include/limits + +namespace std { + + template + class numeric_limits { + public: + static T min(); + static T max(); + }; + + template <> + class numeric_limits { + public: + static bool min() { return false; } + static bool max() { return true; } + }; + + template <> + class numeric_limits { + public: + static char min() { return -0x80; } + static char max() { return 0x7F; } + }; + + template <> + class numeric_limits { + public: + static signed char min() { return -0x80; } + static signed char max() { return 0x7F; } + }; + + template <> + class numeric_limits { + public: + static unsigned char min() { return 0x0; } + static unsigned char max() { return 0xFF; } + }; + + // template <> + // class numeric_limits { + // public: + // static short min() { return -0x8000; } + // static short max() { return 0x7FFF; } + // }; + + template <> + class numeric_limits { + public: + static signed short min() { return -0x8000; } + static signed short max() { return 0x7FFF; } + }; + + template <> + class numeric_limits { + public: + static unsigned short min() { return 0x0; } + static unsigned short max() { return 0xFFFF; } + }; + + // template <> + // class numeric_limits { + // public: + // static int min() { return -0x80000000; } + // static int max() { return 0x7FFFFFFF; } + // }; + + template <> + class numeric_limits { + public: + static signed int min() { return -0x80000000; } + static signed int max() { return 0x7FFFFFFF; } + }; + + template <> + class numeric_limits { + public: + static unsigned int min() { return 0x0; } + static unsigned int max() { return 0xFFFFFFFF; } + }; + + // template <> + // class numeric_limits { + // public: + // static long min() { return -0x80000000; } + // static long max() { return 0x7FFFFFFF; } + // }; + + template <> + class numeric_limits { + public: + static signed long min() { return -0x80000000; } + static signed long max() { return 0x7FFFFFFF; } + }; + + template <> + class numeric_limits { + public: + static unsigned long min() { return 0x0; } + static unsigned long max() { return 0xFFFFFFFF; } + }; + + // template <> + // class numeric_limits { + // public: + // static long long min() { return -0x8000000000000000; } + // static long long max() { return 0x7FFFFFFFFFFFFFFF; } + // }; + + template <> + class numeric_limits { + public: + static signed long long min() { return -0x8000000000000000; } + static signed long long max() { return 0x7FFFFFFFFFFFFFFF; } + }; + + template <> + class numeric_limits { + public: + static unsigned long long min() { return 0x0; } + static unsigned long long max() { return 0xFFFFFFFFFFFFFFFF; } + }; + +} + +#endif diff --git a/libs/cpp/include/memory b/libs/cpp/include/memory new file mode 100644 index 00000000..66f41b12 --- /dev/null +++ b/libs/cpp/include/memory @@ -0,0 +1,51 @@ +#ifndef _STD_MEMORY +#define _STD_MEMORY + +#include +#include + +// from rb3 decomp + +namespace std { + template class allocator { + public: + typedef T value_type; + typedef T *pointer; + typedef const T *const_pointer; + typedef T &reference; + typedef const T &const_reference; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + + template struct rebind { + typedef allocator other; + }; + + allocator() {} + allocator(const allocator &) {} + template allocator(const allocator &) {} + ~allocator() {} + + size_type max_size() const throw() { + return std::numeric_limits::max() / sizeof(T); + } + + pointer allocate(size_type count, const void *hint = 0) { + return reinterpret_cast(::operator new(count * sizeof(T), 1, 4)); + } + + void deallocate(pointer p, size_type n) { + ::operator delete(p); + } + + void construct(pointer p, const_reference val) { + new(p) T(val); + } + + void destroy(pointer p) { + p->~T(); + } + }; +}; // namespace std + +#endif // _STD_MEMORY diff --git a/libs/cpp/include/msl_unk.hpp b/libs/cpp/include/msl_unk.hpp new file mode 100644 index 00000000..852f9d57 --- /dev/null +++ b/libs/cpp/include/msl_unk.hpp @@ -0,0 +1,3 @@ +#pragma once + +struct UnkMSLStruct1 {}; diff --git a/libs/cpp/include/new b/libs/cpp/include/new new file mode 100644 index 00000000..937d3eb2 --- /dev/null +++ b/libs/cpp/include/new @@ -0,0 +1,27 @@ +#ifndef _STD_NEW +#define _STD_NEW + +#include + +// from rb3 decomp + +void *operator new(size_t size); +void *operator new[](size_t size); +void operator delete(void *ptr); +void operator delete[](void *ptr); + +inline void *operator new(size_t length, void *ptr) { +#pragma unused(length) + return ptr; +} + +inline void *operator new[](size_t length, void *ptr) { +#pragma unused(length) + return ptr; +} + +inline void operator delete(void *ptr, void *place) {} + +inline void operator delete[](void *ptr, void *place) {} + +#endif // _STD_NEW diff --git a/libs/cpp/include/shared_ptr.hpp b/libs/cpp/include/shared_ptr.hpp new file mode 100644 index 00000000..00ea5772 --- /dev/null +++ b/libs/cpp/include/shared_ptr.hpp @@ -0,0 +1,109 @@ +#ifndef _STD_SHARED_PTR +#define _STD_SHARED_PTR + +// from rb3 decomp + +#include +#include + +#include "compressed_pair.hpp" + +#include "default_delete.hpp" + +// clang-format off +namespace std { + + namespace tr1 { + namespace detail { + + class shared_ptr_deleter_common { + public: + virtual ~shared_ptr_deleter_common() {} + // Return type is most definitely not correct + virtual const void *get_deleter(const std::type_info &info) const = 0; + + protected: + virtual void dispose() = 0; + + public: + void release(); + + int m_RefCount; + int m_WeakCount; + }; + + template > + class shared_ptr_deleter : public shared_ptr_deleter_common { + public: + shared_ptr_deleter(T *ptr) : + m_Ptr(ptr) {} + ~shared_ptr_deleter() {} + + const void *get_deleter(const std::type_info &info) const { + if (info == typeid(Deleter)) { + return &m_Ptr.second(); + } + + return nullptr; + } + + protected: + void dispose() { + m_Ptr.second()(m_Ptr.first()); + } + + private: + Metrowerks::compressed_pair m_Ptr; + }; + + template class shared_ptr_base { + protected: + void __set(T *ptr, tr1::detail::shared_ptr_deleter_common *deleter) { + m_Ptr = ptr; + m_Deleter = deleter; + } + + public: + ~shared_ptr_base() throw() { + if (m_Deleter) { + m_Deleter->release(); + } + } + + T *get() const { + return m_Ptr; + } + + protected: + T *m_Ptr; + tr1::detail::shared_ptr_deleter_common *m_Deleter; + }; + + } // namespace detail + } // namespace tr1 + + namespace detail { + + template class shared_ptr : public tr1::detail::shared_ptr_base { + public: + shared_ptr(); + + explicit shared_ptr(T *ptr) { + __set(ptr, new tr1::detail::shared_ptr_deleter(ptr)); + } + }; + + template class shared_ptr : public tr1::detail::shared_ptr_base { + public: + shared_ptr(); + + explicit shared_ptr(T ptr[]) { + this->__set(ptr, new tr1::detail::shared_ptr_deleter >(ptr)); + } + }; + + } // namespace detail +} // namespace std +// clang-format on + +#endif diff --git a/libs/cpp/include/stdexcept b/libs/cpp/include/stdexcept new file mode 100644 index 00000000..527f530b --- /dev/null +++ b/libs/cpp/include/stdexcept @@ -0,0 +1,83 @@ +#ifndef _STD_STDEXCEPT +#define _STD_STDEXCEPT + +// from rb3 decomp + +#include "shared_ptr.hpp" +#include +#include +#include + +namespace std { + + class logic_error : public exception { + public: + explicit logic_error(const char *what_arg) : + m_What(new char[strlen(what_arg) + 1]) {} + + virtual const char *what() const { + return (char *)m_What.get(); + } + + private: + detail::shared_ptr m_What; + }; + + class runtime_error : public exception { + public: + explicit runtime_error(const char *what_arg) : + m_What(new char[strlen(what_arg) + 1]) {} + + virtual const char *what() const { + return m_What.get(); + } + + private: + detail::shared_ptr m_What; + }; + + class domain_error : public logic_error { + public: + explicit domain_error(const char *what_arg) : + logic_error(what_arg) {} + }; + + class invalid_argument : public logic_error { + public: + explicit invalid_argument(const char *what_arg) : + logic_error(what_arg) {} + }; + + class length_error : public logic_error { + public: + explicit length_error(const char *what_arg) : + logic_error(what_arg) {} + }; + + class out_of_range : public logic_error { + public: + explicit out_of_range(const char *what_arg) : + logic_error(what_arg) {} + }; + + class range_error : public runtime_error { + public: + explicit range_error(const char *what_arg) : + runtime_error(what_arg) {} + }; + + class overflow_error : public runtime_error { + public: + explicit overflow_error(const char *what_arg) : + runtime_error(what_arg) {} + }; + + class underflow_error : public runtime_error { + public: + explicit underflow_error(const char *what_arg) : + runtime_error(what_arg) {} + }; + +} // namespace std + +#endif diff --git a/libs/cpp/include/type_traits.hpp b/libs/cpp/include/type_traits.hpp new file mode 100644 index 00000000..697e8001 --- /dev/null +++ b/libs/cpp/include/type_traits.hpp @@ -0,0 +1,35 @@ +#ifndef _STD_TYPE_TRAITS +#define _STD_TYPE_TRAITS + +// from rb3 decomp +//! TODO: these files aren't supposed to be organised like this according to rb3/key decomps + +// Anachronistic backport of a large amount of the template metaprogramming library. +// Most implementation details are copied straight from cppreference, +// with others being copied from Boost, and a few using MSL intrinsics. + +#include "type_traits/category.hpp" +#include "type_traits/integral_constant.hpp" +#include "type_traits/manip.hpp" +#include "type_traits/manip_2.hpp" +#include "type_traits/operation.hpp" +#include "type_traits/property.hpp" +#include "type_traits/relationship.hpp" +#include "type_traits/utility.hpp" + +#include "type_traits/call_traits.hpp" +#include "type_traits/intrinsics.hpp" + +namespace Metrowerks { + template struct int2type { + enum { + val = I + }; + + // static const int value = I; + + // int value; // assumed + }; +} // namespace Metrowerks + +#endif diff --git a/libs/cpp/include/type_traits/_category_function.hpp b/libs/cpp/include/type_traits/_category_function.hpp new file mode 100644 index 00000000..8d43c446 --- /dev/null +++ b/libs/cpp/include/type_traits/_category_function.hpp @@ -0,0 +1,122 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// from rb3 decomp + +template struct is_function : public false_type {}; + +template struct is_function : public true_type {}; + +template struct is_function : public true_type {}; + +template struct is_function : public true_type {}; + +template struct is_function : public true_type {}; + +template struct is_function : public true_type {}; + +template struct is_function : public true_type {}; + +template struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; + +template +struct is_function : public true_type {}; diff --git a/libs/cpp/include/type_traits/call_traits.hpp b/libs/cpp/include/type_traits/call_traits.hpp new file mode 100644 index 00000000..4f274fe2 --- /dev/null +++ b/libs/cpp/include/type_traits/call_traits.hpp @@ -0,0 +1,49 @@ +#ifndef _METROWERKS_TYPE_TRAITS_CALL_TRAITS +#define _METROWERKS_TYPE_TRAITS_CALL_TRAITS + +// from rb3 decomp + +namespace Metrowerks { + + namespace details { + + // probably doesn't cover all useful cases (e.g. long long), + // but this will do for our purposes + + template struct call_traits_imp { + typedef const T param_type; + }; + + template struct call_traits_imp { + typedef const T ¶m_type; + }; + + template struct call_traits_imp { + typedef T *param_type; + }; + + template struct call_traits_imp { + typedef const T *param_type; + }; + + template struct call_traits_imp { + typedef T ¶m_type; + }; + + template struct call_traits_imp { + typedef const T ¶m_type; + }; + + } // namespace details + + // name known; boost + template struct call_traits { + typedef T value_type; + typedef T &reference; + typedef const T &const_reference; + typedef typename details::call_traits_imp::param_type param_type; + }; + +} // namespace Metrowerks + +#endif diff --git a/libs/cpp/include/type_traits/category.hpp b/libs/cpp/include/type_traits/category.hpp new file mode 100644 index 00000000..3bc0a532 --- /dev/null +++ b/libs/cpp/include/type_traits/category.hpp @@ -0,0 +1,123 @@ +#ifndef _MSL_TYPE_TRAITS_CATEGORY +#define _MSL_TYPE_TRAITS_CATEGORY + +// from rb3 decomp + +#include + +#include "type_traits/call_traits.hpp" +#include "type_traits/intrinsics.hpp" + +#include "type_traits/integral_constant.hpp" +#include "type_traits/manip.hpp" +#include "type_traits/operation.hpp" +#include "type_traits/relationship.hpp" + +// clang-format off: conciseness +namespace std { + + template + struct is_void : public is_same::type, void> {}; + + template + struct is_integral : public bool_constant::value> {}; + + template + struct is_floating_point : public bool_constant::value> {}; + + template struct is_array : public false_type {}; + template struct is_array : public true_type {}; + template struct is_array : public true_type {}; + + template + struct is_enum : public bool_constant::value> {}; + + template + struct is_union : public bool_constant::value> {}; + + template + struct is_class : public bool_constant::value> {}; + + // C++11: needs variadic template args to implement properly + // As a stopgap, variants for up to 16 parameters are generated + #include "_category_function.hpp" + + template struct is_pointer : public false_type {}; + template struct is_pointer : public true_type {}; + template struct is_pointer : public true_type {}; + template struct is_pointer : public true_type {}; + template struct is_pointer : public true_type {}; + + template struct is_lvalue_reference : public false_type {}; + template struct is_lvalue_reference : public true_type {}; + + template struct is_rvalue_reference : public false_type {}; + // template struct is_rvalue_reference : public true_type {}; // C++11 + + namespace detail { + + template + struct is_member_pointer : public false_type {}; + + template + struct is_member_pointer : public true_type {}; + + } + + template + struct is_member_pointer + : public detail::is_member_pointer::type> {}; + + template + struct is_member_object_pointer : public bool_constant< + is_member_pointer::value && + !is_function::value + > {}; + + template + struct is_member_function_pointer : public bool_constant< + is_member_pointer::value && + is_function::value + > {}; + + template + struct is_arithmetic : public bool_constant< + is_integral::value || + is_floating_point::value + > {}; + + template + struct is_fundamental : public bool_constant< + is_arithmetic::value || + is_void::value + > {}; + + template + struct is_scalar : public bool_constant< + is_arithmetic::value || + is_enum::value || + is_pointer::value || + is_member_pointer::value + > {}; + + template + struct is_object : public bool_constant< + is_scalar::value || + is_array::value || + is_union::value || + is_class::value + > {}; + + template + struct is_compound : public negation > {}; + + template + struct is_reference : public bool_constant< + is_lvalue_reference::value || + is_rvalue_reference::value + > {}; + +} +// clang-format on + +#endif diff --git a/libs/cpp/include/type_traits/integral_constant.hpp b/libs/cpp/include/type_traits/integral_constant.hpp new file mode 100644 index 00000000..3f3ef78e --- /dev/null +++ b/libs/cpp/include/type_traits/integral_constant.hpp @@ -0,0 +1,29 @@ +#ifndef _MSL_TYPE_TRAITS_INTEGRAL_CONSTANT +#define _MSL_TYPE_TRAITS_INTEGRAL_CONSTANT + +// from rb3 decomp + +namespace std { + + template struct integral_constant { + static const T value = V; + + typedef T value_type; + typedef integral_constant type; + + operator const value_type() const throw() { + return value; + } + const value_type operator()() const throw() { + return value; + } + }; + + typedef integral_constant true_type; + typedef integral_constant false_type; + + template struct bool_constant : public integral_constant {}; + +} // namespace std + +#endif diff --git a/libs/cpp/include/type_traits/intrinsics.hpp b/libs/cpp/include/type_traits/intrinsics.hpp new file mode 100644 index 00000000..83daf5a8 --- /dev/null +++ b/libs/cpp/include/type_traits/intrinsics.hpp @@ -0,0 +1,258 @@ +#ifndef _METROWERKS_TYPE_TRAITS_INTRINSICS +#define _METROWERKS_TYPE_TRAITS_INTRINSICS + +// from rb3 decomp + +#include + +// Builtins reference: https://decomp.me/scratch/k4ZpJ + +namespace Metrowerks { + + namespace detail { + +#ifdef DECOMP_IDE_FLAG + #define __builtin_ntype(T) (detail::ntype) 0 + #define __builtin_align(T) 0 + #define __builtin_is_pod(T) 0 + #define __builtin_is_polymorphic(T) 0 + #define __builtin_is_abstract(T) 0 + #define __builtin_trivial_members(T) 0 + #define __builtin_trivial_members(T) 0 + #define __builtin_trivial_members(T) 0 + #define __builtin_trivial_members(T) 0 + #define __builtin_trivial_members(T) 0 + #define __builtin_has_nothrow_default_constructor(T) 0 + #define __builtin_has_nothrow_copy(T) 0 + #define __builtin_has_nothrow_assign(T) 0 + #define __builtin_has_nothrow_destructor(T) 0 + #define __builtin_has_virtual_destructor(T) 0 + typedef double short_double; + typedef double __vec2x32float__; +#else + typedef short double short_double; +#endif + + enum trivial_member { + trivial_dtor = 0x01, + trivial_copy_assign = 0x02, + trivial_copy_ctor = 0x04, + trivial_default_ctor = 0x08, + }; + + enum ntype { + ntype_void = 0x00, + + ntype_bool = 0x01, + + ntype_char = 0x02, + ntype_signed_char = 0x03, + ntype_unsigned_char = 0x04, + + ntype_wchar_t = 0x05, + + ntype_signed_short = 0x06, + ntype_unsigned_short = 0x07, + + ntype_signed_int = 0x08, + ntype_unsigned_int = 0x09, + + ntype_signed_long = 0x0A, + ntype_unsigned_long = 0x0B, // assumed, the actual result is the same as + // ntype_signed_long for some reason + + ntype_signed_long_long = 0x0C, + ntype_unsigned_long_long = 0x0D, + + ntype_float = 0x0E, + ntype_short_double = 0x0F, + ntype_double = 0x10, + ntype_long_double = 0x11, + + ntype_vec2x32float = 0x22, + + ntype_type_mask = 0xFF, + + ntype_flag_integral = 0x0100, + ntype_flag_floating = 0x0200, + ntype_flag_enum = 0x0400, + + ntype_pointer = 0x0800, + ntype_array = 0x1000, + + ntype_class = 0x2000, + ntype_union = 0x2001, + ntype_pointer_to_member = 0x4000, + + ntype_function = 0x8000, + + ntype_flag_0x10000 = 0x10000, + }; + + // clang-format off: conciseness + template + struct ntype_to_integral_helper; + + template <> struct ntype_to_integral_helper { typedef void type; }; + template <> struct ntype_to_integral_helper { typedef bool type; }; + template <> struct ntype_to_integral_helper { typedef char type; }; + template <> struct ntype_to_integral_helper { typedef signed char type; }; + template <> struct ntype_to_integral_helper { typedef unsigned char type; }; + template <> struct ntype_to_integral_helper { typedef wchar_t type; }; + template <> struct ntype_to_integral_helper { typedef signed short type; }; + template <> struct ntype_to_integral_helper { typedef unsigned short type; }; + template <> struct ntype_to_integral_helper { typedef signed int type; }; + template <> struct ntype_to_integral_helper { typedef unsigned int type; }; + template <> struct ntype_to_integral_helper { typedef signed long type; }; + template <> struct ntype_to_integral_helper { typedef unsigned long type; }; + template <> struct ntype_to_integral_helper { typedef signed long long type; }; + template <> struct ntype_to_integral_helper { typedef unsigned long long type; }; + + template + struct ntype_to_integral : public ntype_to_integral_helper {}; + + template + struct ntype_to_floating_helper; + + template <> struct ntype_to_floating_helper { typedef float type; }; + template <> struct ntype_to_floating_helper { typedef short_double type; }; + template <> struct ntype_to_floating_helper { typedef double type; }; + template <> struct ntype_to_floating_helper { typedef long double type; }; + // template <> struct ntype_to_floating_helper { typedef __vec2x32float__ type; }; + + template + struct ntype_to_floating : public ntype_to_floating_helper {}; + + template + struct ntype_to_type_helper; + + template + struct ntype_to_type_helper : public ntype_to_integral {}; + + template + struct ntype_to_type_helper : public ntype_to_floating {}; + + template + struct ntype_to_type : public ntype_to_type_helper< + ntype(N & ntype_type_mask), + bool(N & ntype_flag_integral), + bool(N & ntype_flag_floating) + > {}; + + // __builtin_ntype doesn't respect ref types correctly + template + struct ntype_ref_helper { + static const bool value = __builtin_ntype(T) == NType; + }; + + template + struct ntype_ref_helper { + static const bool value = false; + }; + + template + struct ntype_ref_helper_flag { + static const bool value = (__builtin_ntype(T) & Flag) == Flag; + }; + + template + struct ntype_ref_helper_flag { + static const bool value = false; + }; + + // clang-format on + + } // namespace detail + + template struct alignment_of { + static const std::size_t value = __builtin_align(T); + }; + + template struct is_integral { + static const bool value = detail::ntype_ref_helper_flag::value; + }; + + template struct is_floating_point { + static const bool value = detail::ntype_ref_helper_flag::value; + }; + + template struct is_enum { + static const bool value = detail::ntype_ref_helper_flag::value; + }; + + template struct is_class { + static const bool value = detail::ntype_ref_helper::value; + }; + + // name known; boost + template struct is_union { + static const bool value = detail::ntype_ref_helper::value; + }; + + // name known; boost/STLport + template struct is_POD { + static const bool value = __builtin_is_pod(T); + }; + + template struct is_polymorphic { + static const bool value = __builtin_is_polymorphic(T); + }; + + template struct is_abstract { + static const bool value = __builtin_is_abstract(T); + }; + + template struct is_trivial { + static const bool value = __builtin_trivial_members(T) == (detail::trivial_dtor | detail::trivial_copy_assign | + detail::trivial_copy_ctor | detail::trivial_default_ctor); + }; + + // name known; boost/STLport + template struct has_trivial_default_ctor { + static const bool value = __builtin_trivial_members(T) & detail::trivial_default_ctor; + }; + + // name known; boost/STLport + template struct has_trivial_copy_ctor { + static const bool value = __builtin_trivial_members(T) & detail::trivial_copy_ctor; + }; + + // name known; boost/STLport + template struct has_trivial_assignment { + static const bool value = __builtin_trivial_members(T) & detail::trivial_copy_assign; + }; + + // name known; boost/STLport + template struct has_trivial_dtor { + static const bool value = __builtin_trivial_members(T) & detail::trivial_dtor; + }; + + template struct has_nothrow_default_ctor { + static const bool value = __builtin_has_nothrow_default_constructor(T); + }; + + template struct has_nothrow_copy_ctor { + static const bool value = __builtin_has_nothrow_copy(T); + }; + + template struct has_nothrow_assignment { + static const bool value = __builtin_has_nothrow_assign(T); + }; + + template struct has_nothrow_dtor { + static const bool value = __builtin_has_nothrow_destructor(T); + }; + + template struct has_virtual_dtor { + static const bool value = __builtin_has_virtual_destructor(T); + }; + + template struct underlying_type_helper {}; + + template struct underlying_type_helper : public detail::ntype_to_integral<__builtin_ntype(T)> {}; + + template struct underlying_type : public underlying_type_helper::value> {}; + +} // namespace Metrowerks + +#endif diff --git a/libs/cpp/include/type_traits/manip.hpp b/libs/cpp/include/type_traits/manip.hpp new file mode 100644 index 00000000..2ad122fd --- /dev/null +++ b/libs/cpp/include/type_traits/manip.hpp @@ -0,0 +1,109 @@ +#ifndef _MSL_TYPE_TRAITS_MANIP +#define _MSL_TYPE_TRAITS_MANIP + +// from rb3 decomp + +#include + +#include "type_traits/call_traits.hpp" +#include "type_traits/intrinsics.hpp" + +// clang-format off: conciseness +namespace std { + +#pragma region "const-volatile modifications" + template struct add_const { typedef const T type; }; + template struct add_volatile { typedef volatile T type; }; + template struct add_cv { typedef const volatile T type; }; + + template struct remove_const { typedef T type; }; + template struct remove_const { typedef T type; }; + template struct remove_const { typedef volatile T type; }; + + template struct remove_volatile { typedef T type; }; + template struct remove_volatile { typedef T type; }; + template struct remove_volatile { typedef const T type; }; + + template struct remove_cv { typedef T type; }; + template struct remove_cv { typedef T type; }; + template struct remove_cv { typedef T type; }; + template struct remove_cv { typedef T type; }; + + namespace detail { + + template struct copy_const { typedef To type; }; + template struct copy_const { typedef const To type; }; + + template struct copy_volatile { typedef To type; }; + template struct copy_volatile { typedef volatile To type; }; + + template struct copy_cv { typedef From type; }; + template struct copy_cv { typedef const To type; }; + template struct copy_cv { typedef volatile To type; }; + template struct copy_cv { typedef const volatile To type; }; + + } + +#pragma endregion + +#pragma region "reference modifications" + template struct add_lvalue_reference { typedef T& type; }; + // template struct add_rvalue_reference { typedef T&& type; }; // C++11 + + template <> struct add_lvalue_reference { typedef void type; }; + template <> struct add_lvalue_reference { typedef const void type; }; + template <> struct add_lvalue_reference { typedef volatile void type; }; + template <> struct add_lvalue_reference { typedef const volatile void type; }; + + template struct remove_reference { typedef T type; }; + template struct remove_reference { typedef T type; }; + // template struct remove_reference { typedef T type; }; // C++11 +#pragma endregion + +#pragma region "pointer modifications" + template struct add_pointer { typedef typename remove_reference::type* type; }; + + template struct remove_pointer { typedef T type; }; + template struct remove_pointer { typedef T type; }; + template struct remove_pointer { typedef T type; }; + template struct remove_pointer { typedef T type; }; + template struct remove_pointer { typedef T type; }; +#pragma endregion + +#pragma region "array modifications" + template struct remove_extent { typedef T type; }; + template struct remove_extent { typedef T type; }; + template struct remove_extent { typedef T type; }; + + template struct remove_all_extents { typedef T type; }; + template struct remove_all_extents { typedef typename remove_all_extents::type type; }; + template struct remove_all_extents { typedef typename remove_all_extents::type type; }; +#pragma endregion + +#pragma region "miscellaneous transformations" + + // Not implementable, __attribute__ ((aligned (i))) doesn't work with template args + // template struct aligned_storage; + + // template struct aligned_union + + template + struct remove_cvref { + typedef typename remove_cv::value>::value type; + }; + + // template struct common_type; + + template + struct underlying_type { + typedef typename Metrowerks::underlying_type::value type; + }; + + // template struct result_of; + +#pragma endregion + +} +// clang-format on + +#endif diff --git a/libs/cpp/include/type_traits/manip_2.hpp b/libs/cpp/include/type_traits/manip_2.hpp new file mode 100644 index 00000000..5a56dd1b --- /dev/null +++ b/libs/cpp/include/type_traits/manip_2.hpp @@ -0,0 +1,99 @@ +#ifndef _MSL_TYPE_TRAITS_MANIP_2 +#define _MSL_TYPE_TRAITS_MANIP_2 + +// from rb3 decomp + +// Separate for manip traits that aren't free-standing + +#include + +#include "type_traits/category.hpp" +#include "type_traits/manip.hpp" + +// clang-format off: conciseness +namespace std { + +#pragma region "sign modifications" + namespace detail { + + template struct make_signed_helper; + + template <> struct make_signed_helper { typedef signed char type; }; + template <> struct make_signed_helper { typedef signed short type; }; + template <> struct make_signed_helper { typedef signed int type; }; + template <> struct make_signed_helper { typedef signed long type; }; + template <> struct make_signed_helper { typedef signed long long type; }; + + template <> struct make_signed_helper { typedef signed char type; }; + template <> struct make_signed_helper { typedef signed short type; }; + template <> struct make_signed_helper { typedef signed int type; }; + template <> struct make_signed_helper { typedef signed long type; }; + template <> struct make_signed_helper { typedef signed long long type; }; + + template <> struct make_signed_helper { typedef signed char type; }; + template <> struct make_signed_helper { typedef signed short type; }; + + template ::value> + struct make_signed : public make_signed_helper {}; + + template + struct make_signed : public make_signed_helper::type> {}; + + } + + template + struct make_signed : public detail::copy_cv::type> > {}; + + namespace detail { + + template struct make_unsigned_helper; + + template <> struct make_unsigned_helper { typedef unsigned char type; }; + template <> struct make_unsigned_helper { typedef unsigned short type; }; + template <> struct make_unsigned_helper { typedef unsigned int type; }; + template <> struct make_unsigned_helper { typedef unsigned long type; }; + template <> struct make_unsigned_helper { typedef unsigned long long type; }; + + template <> struct make_unsigned_helper { typedef unsigned char type; }; + template <> struct make_unsigned_helper { typedef unsigned short type; }; + template <> struct make_unsigned_helper { typedef unsigned int type; }; + template <> struct make_unsigned_helper { typedef unsigned long type; }; + template <> struct make_unsigned_helper { typedef unsigned long long type; }; + + template <> struct make_unsigned_helper { typedef unsigned char type; }; + template <> struct make_unsigned_helper { typedef unsigned short type; }; + + template ::value> + struct make_unsigned : public make_unsigned_helper {}; + + template + struct make_unsigned : public make_unsigned_helper::type> {}; + + } + + template + struct make_unsigned : public detail::copy_cv::type> > {}; +#pragma endregion + + template + struct decay + { + private: + typedef typename remove_reference::type U; + + public: + typedef typename conditional< + is_array::value, + typename add_pointer::type>::type, + typename conditional< + is_function::value, + typename add_pointer::type, + typename remove_cv::type + >::type + >::type type; + }; + +} +// clang-format on + +#endif diff --git a/libs/cpp/include/type_traits/operation.hpp b/libs/cpp/include/type_traits/operation.hpp new file mode 100644 index 00000000..6e051df4 --- /dev/null +++ b/libs/cpp/include/type_traits/operation.hpp @@ -0,0 +1,78 @@ +#ifndef _MSL_TYPE_TRAITS_OPERATION +#define _MSL_TYPE_TRAITS_OPERATION + +// from rb3 decomp + +#include "integral_constant.hpp" + +// clang-format off: conciseness +namespace std { + +#pragma region "enable_if: logical if" + template + struct enable_if {}; + template + struct enable_if { typedef T type; }; +#pragma endregion + +#pragma region "conditional: logical if/else" + template struct conditional; + template struct conditional { typedef T type; }; + template struct conditional { typedef F type; }; +#pragma endregion + +#pragma region "conjunction: logical AND; all" + // template struct conjunction; + struct conjunction : public true_type {}; + + template + struct conjunction2 : public conditional< !bool(B1::value), B1, B2 >::type {}; + + template + struct conjunction3 : public conditional< !bool(B1::value), B1, conjunction2 >::type {}; + + template + struct conjunction4 : public conditional< !bool(B1::value), B1, conjunction3 >::type {}; +#pragma endregion + +#pragma region "disjunction: logical OR; any" + // template struct disjunction; + struct disjunction : public false_type {}; + + template + struct disjunction2 : public conditional< bool(B1::value), B1, B2>::type {}; + + template + struct disjunction3 : public conditional< bool(B1::value), B1, disjunction2 >::type {}; + + template + struct disjunction4 : public conditional< bool(B1::value), B1, disjunction3 >::type {}; +#pragma endregion + +#pragma region "negation: logical NOT" + template + struct negation : public integral_constant {}; + + // NAND; not all + struct negative_conjunction : public negation {}; + template + struct negative_conjunction2 : public negation > {}; + template + struct negative_conjunction3 : public negation > {}; + template + struct negative_conjunction4 : public negation > {}; + + // NOR; not any + struct negative_disjunction : public negation {}; + template + struct negative_disjunction2 : public negation > {}; + template + struct negative_disjunction3 : public negation > {}; + template + struct negative_disjunction4 : public negation > {}; +#pragma endregion + +} +// clang-format on + +#endif diff --git a/libs/cpp/include/type_traits/property.hpp b/libs/cpp/include/type_traits/property.hpp new file mode 100644 index 00000000..41228492 --- /dev/null +++ b/libs/cpp/include/type_traits/property.hpp @@ -0,0 +1,150 @@ +#ifndef _MSL_TYPE_TRAITS_PROPERTY +#define _MSL_TYPE_TRAITS_PROPERTY + +// from rb3 decomp + +#include "type_traits/call_traits.hpp" +#include "type_traits/intrinsics.hpp" + +#include "type_traits/category.hpp" +#include "type_traits/integral_constant.hpp" +#include "type_traits/relationship.hpp" + +// clang-format off: conciseness +namespace std { + +#pragma region "type properties" + template struct is_const : public false_type {}; + template struct is_const : public true_type {}; + + template struct is_volatile : public false_type {}; + template struct is_volatile : public true_type {}; + + template + struct is_trivial : public bool_constant::value> {}; + + template + struct is_trivially_copyable : public bool_constant< + Metrowerks::has_trivial_copy_ctor::value && + Metrowerks::has_trivial_assignment::value + > {}; + + template struct is_standard_layout; + + template + struct is_pod : public bool_constant::value> {}; + + template struct is_literal_type; + + namespace detail { + + template + struct is_empty_helper1 : public T { int i; }; + struct is_empty_helper2 { int i; }; + + template ::value> + struct is_empty : public bool_constant) == sizeof(is_empty_helper2)> {}; + + template + struct is_empty : public false_type {}; + + } + + template + struct is_empty : public detail::is_empty {}; + + template + struct is_polymorphic : public bool_constant::value> {}; + + template + struct is_abstract : public bool_constant::value> {}; + + namespace detail { + + template ::value> + struct is_signed : public bool_constant<(T(0) > T(-1))> {}; + + template + struct is_signed : public false_type {}; + + } + + template + struct is_signed : public detail::is_signed {}; + + template + struct is_unsigned : public bool_constant::value> {}; +#pragma endregion + +#pragma region "supported operations" + // template struct is_constructible; + // template struct is_trivially_constructible; + // template struct is_nothrow_constructible; + + template struct is_default_constructible; + template struct is_trivially_default_constructible + : public bool_constant::value> {}; + template struct is_nothrow_default_constructible + : public bool_constant::value> {}; + + template struct is_copy_constructible; + template struct is_trivially_copy_constructible + : public bool_constant::value> {}; + template struct is_nothrow_copy_constructible + : public bool_constant::value> {}; + + template struct is_move_constructible : public false_type {}; // C++11 + template struct is_trivially_move_constructible : public false_type {}; // C++11 + template struct is_nothrow_move_constructible : public false_type {}; // C++11 + + template struct is_assignable; + template struct is_trivially_assignable; + template struct is_nothrow_assignable; + + template struct is_copy_assignable; + template struct is_trivially_copy_assignable + : public bool_constant::value> {}; + template struct is_nothrow_copy_assignable + : public bool_constant::value> {}; + + template struct is_move_assignable : public false_type {}; // C++11 + template struct is_trivially_move_assignable : public false_type {}; // C++11 + template struct is_nothrow_move_assignable : public false_type {}; // C++11 + + template struct is_destructible; + template struct is_trivially_destructible + : public bool_constant::value> {}; + template struct is_nothrow_destructible + : public bool_constant::value> {}; + + template struct has_virtual_destructor + : public bool_constant::value> {}; +#pragma endregion + +#pragma region "type property queries" + template + struct alignment_of : public integral_constant::value> {}; + + template + struct rank : public integral_constant {}; + template + struct rank : public integral_constant::value + 1> {}; + template + struct rank : public integral_constant::value + 1> {}; + + template + struct extent : public integral_constant {}; + template + struct extent : public integral_constant {}; + template + struct extent : public extent {}; + template + struct extent : public integral_constant {}; + template + struct extent : public extent {}; +#pragma endregion + +} +// clang-format on + +#endif diff --git a/libs/cpp/include/type_traits/relationship.hpp b/libs/cpp/include/type_traits/relationship.hpp new file mode 100644 index 00000000..a7c46029 --- /dev/null +++ b/libs/cpp/include/type_traits/relationship.hpp @@ -0,0 +1,54 @@ +#ifndef _MSL_TYPE_TRAITS_RELATIONSHIP +#define _MSL_TYPE_TRAITS_RELATIONSHIP + +// from rb3 decomp + +#include "type_traits/integral_constant.hpp" +#include "type_traits/utility.hpp" + +// clang-format off: conciseness +namespace std { + + namespace detail { + + template + struct is_convertible { + static true_type test(To) { __MWERKS_NOEVAL; } + static false_type test(...) { __MWERKS_NOEVAL; } + +#ifdef DECOMP_IDE_FLAG + typedef false_type type; +#else + typedef __decltype__(test(declval())) type; +#endif + }; + + template + struct is_base_of { + static true_type test(const volatile Base*) { __MWERKS_NOEVAL; } + static false_type test(const volatile void*) { __MWERKS_NOEVAL; } + +#ifdef DECOMP_IDE_FLAG + typedef false_type type; +#else + typedef __decltype__(test(declval())) type; +#endif + }; + + } + + template + struct is_same : public false_type {}; + template + struct is_same : public true_type {}; + + template + struct is_convertible : public detail::is_convertible {}; + + template + struct is_base_of : public detail::is_base_of {}; + +} +// clang-format on + +#endif diff --git a/libs/cpp/include/type_traits/utility.hpp b/libs/cpp/include/type_traits/utility.hpp new file mode 100644 index 00000000..9494749e --- /dev/null +++ b/libs/cpp/include/type_traits/utility.hpp @@ -0,0 +1,24 @@ +#ifndef _MSL_TYPE_TRAITS_UTILITY +#define _MSL_TYPE_TRAITS_UTILITY + +// from rb3 decomp + +// clang-format off: conciseness + +#ifdef DECOMP_IDE_FLAG +#define __static_assert(cond, msg) +#endif + +// #define __MWERKS_NOEVAL __static_assert(false, "Cannot be called from an evaluated context!") +#define __MWERKS_NOEVAL + +namespace std { + + template + static T declval() { __MWERKS_NOEVAL; } + +} + +// clang-format on + +#endif diff --git a/libs/cpp/include/typeinfo b/libs/cpp/include/typeinfo new file mode 100644 index 00000000..2b219d99 --- /dev/null +++ b/libs/cpp/include/typeinfo @@ -0,0 +1,56 @@ +#ifndef _STD_TYPEINFO +#define _STD_TYPEINFO + +// from rb3 decomp + +#include +#include +#include + +namespace std { + + class type_info { + public: + /*virtual*/ ~type_info(); + bool operator==(const type_info &rhs) const { + return strcmp((char *) this->m_Name, (char *) rhs.m_Name) == 0; + } + + bool before(const type_info &rhs) const throw(); + size_t hash_code() const throw() { + return m_HashCode; + } + const char *name() const throw() { + return m_Name; + } + + private: + // These constructors are normally deleted, but our C++ version + // doesn't support that, so they're privated as a workaround + type_info(); + type_info(const type_info &); + type_info &operator=(const type_info &); + + const char *m_Name; + size_t m_HashCode; + }; + + class bad_cast : public exception { + public: + virtual ~bad_cast() {} + virtual const char *what() const { + return "bad_cast"; + } + }; + + class bad_typeid : public exception { + public: + virtual ~bad_typeid() {} + virtual const char *what() const { + return "bad_typeid"; + } + }; + +} // namespace std + +#endif diff --git a/libs/cpp/include/vector b/libs/cpp/include/vector index 7d78e50c..49c6cbdd 100644 --- a/libs/cpp/include/vector +++ b/libs/cpp/include/vector @@ -1,10 +1,549 @@ -#pragma once +#ifndef _STD_VECTOR +#define _STD_VECTOR + +#include +#include +#include +#include +#include + +#include +#include + +#define TAG_UNK 0 + +// from key decomp namespace std { - template class vector { + template class __vector_common { public: - T *elements; - int size; - int capacity; + static void throw_length_error(); }; + + template class __vec_deleter_helper; + + template class __vec_deleter { + public: + typedef typename Metrowerks::compressed_pair::second_param allocator_param; + typedef T value_type; + typedef Allocator allocator_type; + typedef size_t size_type; + typedef value_type &reference; + typedef const value_type &const_reference; + typedef T *iterator; + typedef const T *const_iterator; + typedef T *pointer; + typedef const pointer const_pointer; + + __vec_deleter() : + data_(nullptr), + size_(0), + capacity_(0) {} + + explicit __vec_deleter(allocator_param a) : + data_(nullptr), + size_(0), + capacity_(0, a) {} + + ~__vec_deleter(); + + reference operator[](size_t n) { + return data_[n]; + } + + const_reference operator[](size_t n) const { + return data_[n]; + } + + pointer data() { + return data_; + } + + iterator begin() { + return data_; + } + + iterator end() { + return data_ + size_; + } + + reference front() { + return data_[0]; + } + + const_reference front() const { + return data_[0]; + } + + reference back() { + return data_[size_ - 1]; + } + + const_reference back() const { + return data_[size_ - 1]; + } + + void throw_length_error(); + +#if DONT_INLINE_STD + void clear() { + bool _b[4]; + size_t size = size_; + _b[0] = false; + erase_at_end(size, _b[0]); + } + void erase_at_end(size_t, bool &); +#else + void erase_at_end(const size_t n) { + // erase_at_end(n, Metrowerks::int2type()); + size_ -= n; + } + void clear() { + erase_at_end(size()); + } +#endif + + // void erase_at_end(size_t n, Metrowerks::int2type) DONT_INLINE_CLASS { + // T* e = end(); + // size_ -= n; + + // while (n != 0) { + // e--; + // e->~T(); + // n--; + // } + // } + + size_t &cap() { + return capacity_.first(); + } + + Allocator alloc() const { + return capacity_.second(); + } + + iterator erase(iterator __first, iterator __last, UnkMSLStruct1); + + void sub_push_back(const_reference x, Metrowerks::int2type); + void sub_push_back(const_reference x, Metrowerks::int2type); + + void sub_push_back(const_reference x) { + sub_push_back(x, Metrowerks::int2type::value && + Metrowerks::has_trivial_assignment::value>()); + } + + void push_back(const_reference x, Metrowerks::int2type) { + if (size_ < cap()) { + alloc().construct(end(), x); + size_++; + } else { + sub_push_back(x); + } + } + + void push_back(const_reference x, Metrowerks::int2type) { + if (size_ < cap()) { + size_++; + back() = x; + } else { + sub_push_back(x); + } + } + + void push_back(const_reference x) { + push_back(x, Metrowerks::int2type::value && + Metrowerks::has_trivial_assignment::value>()); + } + + void allocate(size_t min, size_t max) { + allocate(min, max, Metrowerks::int2type()); + } + + void allocate(size_t min, size_t max, Metrowerks::int2type t) { + allocate(max, t); + } + + void allocate(size_t n) { + allocate(n, Metrowerks::int2type()); + } + + void allocate(size_t n, Metrowerks::int2type t); + + void optimize_after_moved_from() { + optimize_after_moved_from(Metrowerks::int2type()); + } + + void optimize_after_moved_from(Metrowerks::int2type) { + size_ = 0; + } + + bool expand_by(size_t n) { + size_t max_cap = 0; + return expand_by(n, max_cap, Metrowerks::int2type()); + } + + bool expand_by(size_t n, size_t &max_cap, Metrowerks::int2type) { + max_cap = grow_by(n); + return false; + } + + size_t grow_by(size_t n); + + void append_realloc(size_t n, const_reference x); + + size_t max_size() const { + return alloc().max_size(); + } + + size_t capacity() const { + return capacity_.first(); + } + + volatile size_t size() { + return size_; + } + + void resize(size_t n) { + size_ = n; + } + + void move_construct_to_end(iterator begin, iterator end); + + void reallocate_copy(size_t n) { + __vec_deleter tmp(alloc()); + tmp.allocate(n); + tmp.move_construct_to_end(begin(), end()); + optimize_after_moved_from(); + swap(cap(), tmp.cap()); + swap(data_, tmp.data_); + swap(size_, tmp.size_); + } + + void reserve(size_t n) { + if (n > cap()) { + reallocate_copy(n); + } + } + + bool empty() const { + return size_ == 0; + } + + public: + T *data_; + size_t size_; + Metrowerks::compressed_pair capacity_; + }; + + template __vec_deleter::~__vec_deleter() { + UnkMSLStruct1 unk = UnkMSLStruct1(); // somehow needed + + if (data_ != nullptr) { + clear(); + alloc().deallocate(data_, cap()); + } + } + + template size_t __vec_deleter::grow_by(size_t n) { + size_t max = max_size(); + size_t c = cap(); + + if (n > max - c) { + __vector_common::throw_length_error(); + } + + size_t a = max / 3; + + if (c < a) { + return c + std::max((c + 1) * 3 / 5, n); + } else if (c < a * 2) { + return c + std::max((c + 1) / 2, n); + } + + return max; + } + + template + void __vec_deleter::allocate(size_t n, Metrowerks::int2type t) { + size_t max = max_size(); + + if (max < n) { + __vector_common::throw_length_error(); + } + + data_ = alloc().allocate(n); + cap() = n; + } + + // https://decomp.me/scratch/Yw4fn + template void __vec_deleter::append_realloc(size_t n, const_reference x) { + __vec_deleter_helper tmp(alloc()); + + size_t max = tmp.grow_by((size_ + n) - cap()); + tmp.allocate(size_ + n, max); + tmp.start_ = size_; + tmp.construct_at_end(n, x); + tmp.move_construct_to_begin(begin(), end()); + optimize_after_moved_from(); + + std::swap(cap(), tmp.cap()); + std::swap(data_, tmp.data_); + std::swap(size_, tmp.size_); + } + + template + void __vec_deleter::sub_push_back(const_reference x, Metrowerks::int2type) { + if (expand_by(1)) { + size_++; + back() = x; + } else { + append_realloc(1, x); + } + } + + template + void __vec_deleter::sub_push_back(const_reference x, Metrowerks::int2type) { + if (expand_by(1)) { + size_++; + back() = x; + } else { + append_realloc(1, x); + } + } + + template + __vec_deleter::iterator __vec_deleter::erase(iterator __first, iterator __last, + UnkMSLStruct1) { + // adapted from https://github.com/matta/sgi-stl/blob/635eaeef4533214ec140fb17411558ad441d2996/stl/stl_vector.h#L420 + + if (__first != __last) { + std::memmove(__first, __last, (end() - __last) * sizeof(value_type)); + this->size_ -= __last - __first; + } + + return __first; + } + + template class __vec_deleter_helper : public __vec_deleter { + protected: + typedef __vec_deleter _Base; + typedef _Base::allocator_param allocator_param; + typedef _Base::value_type value_type; + typedef _Base::allocator_type allocator_type; + typedef _Base::size_type size_type; + typedef _Base::reference reference; + typedef _Base::const_reference const_reference; + typedef _Base::pointer pointer; + typedef _Base::const_pointer const_pointer; + typedef _Base::iterator iterator; + typedef _Base::const_iterator const_iterator; + + public: + __vec_deleter_helper(allocator_param a) : + _Base(a), + start_(0) {} + + ~__vec_deleter_helper(); + + void construct_at_end(size_t n, const_reference x) { + construct_at_end(n, x, Metrowerks::int2type::value>()); + } + + void construct_at_end(size_t n, const_reference x, Metrowerks::int2type) { + for (pointer p = _Base::data_ + _Base::size_; n; n--, p++, _Base::size_++) { + _Base::alloc().construct(p, x); + } + } + + void construct_at_end(size_t n, const_reference x, Metrowerks::int2type) { + std::fill_n(_Base::data_ + start_ + _Base::size_, n, x); + _Base::size_ += n; + } + + void move_construct_to_begin(pointer first, pointer last) { + move_construct_to_begin(first, last, Metrowerks::int2type::value ? 2 : 0>()); + } + + void move_construct_to_begin(pointer first, pointer last, Metrowerks::int2type) { + for (pointer ptr = _Base::data_ + start_; first < last; start_--, _Base::size_++) { + _Base::alloc().construct(--ptr, std::move(*--last)); + } + } + + void move_construct_to_begin(pointer first, pointer last, Metrowerks::int2type<2>) { + size_t n = last - first; + start_ -= n; + memcpy(_Base::data_ + start_, first, n * sizeof(value_type)); + memset(first, 0, n * sizeof(value_type)); + _Base::size_ += n; + } + + size_t start_; + }; + + template __vec_deleter_helper::~__vec_deleter_helper() { + T *start = _Base::data_ + start_; + T *end = start + _Base::size_; + + while (start < end) { + _Base::alloc().destroy(end); + end--; + } + + _Base::size_ = 0; + } + + template class __vec_constructor : public __vec_deleter { + protected: + typedef __vec_deleter _Base; + typedef _Base::allocator_param allocator_param; + typedef _Base::value_type value_type; + typedef _Base::allocator_type allocator_type; + typedef _Base::size_type size_type; + typedef _Base::reference reference; + typedef _Base::const_reference const_reference; + typedef _Base::pointer pointer; + typedef _Base::const_pointer const_pointer; + typedef _Base::iterator iterator; + typedef _Base::const_iterator const_iterator; + + public: + __vec_constructor() {} + // ~__vec_constructor(); + }; + + template + class __vec_constructor : public __vec_constructor { + protected: + typedef __vec_deleter _Deleter; + typedef __vec_constructor _Constructor; + typedef _Constructor::allocator_param allocator_param; + typedef _Constructor::value_type value_type; + typedef _Constructor::allocator_type allocator_type; + typedef _Constructor::size_type size_type; + typedef _Constructor::reference reference; + typedef _Constructor::const_reference const_reference; + typedef _Constructor::pointer pointer; + typedef _Constructor::const_pointer const_pointer; + typedef _Constructor::iterator iterator; + typedef _Constructor::const_iterator const_iterator; + + __vec_constructor() {} + // ~__vec_constructor() { } + + public: + void push_back(const_reference x) { + _Constructor::push_back(x); + } + + reference operator[](size_t n) { + return _Deleter::operator[](n); + } + + const_reference operator[](size_t n) const { + return _Deleter::operator[](n); + } + }; + + // clang-format off + template > class vector : public __vec_constructor { + // clang-format on + protected: + typedef __vec_constructor _Constructor; + typedef __vec_deleter _Deleter; + typedef _Constructor::allocator_param allocator_param; + typedef _Constructor::value_type value_type; + typedef _Constructor::allocator_type allocator_type; + typedef _Constructor::size_type size_type; + typedef _Constructor::reference reference; + typedef _Constructor::const_reference const_reference; + typedef _Constructor::pointer pointer; + typedef _Constructor::const_pointer const_pointer; + + public: + typedef _Constructor::iterator iterator; + typedef _Constructor::const_iterator const_iterator; + + vector() {} + ~vector() { } + + void push_back(const_reference x) { + _Constructor::push_back(x); + } + + void clear() { + _Deleter::clear(); + } + + reference operator[](size_t n) { + return _Deleter::operator[](n); + } + + const_reference operator[](size_t n) const { + return _Deleter::operator[](n); + } + + iterator erase(iterator __first, iterator __last) { + return _Deleter::erase(__first, __last, UnkMSLStruct1()); + } + }; + } // namespace std + +template class CustomVector : public std::vector { +public: +protected: + typedef std::vector _Vector; + typedef _Vector::allocator_param allocator_param; + typedef _Vector::value_type value_type; + typedef _Vector::allocator_type allocator_type; + typedef _Vector::size_type size_type; + typedef _Vector::reference reference; + typedef _Vector::const_reference const_reference; + typedef _Vector::pointer pointer; + typedef _Vector::const_pointer const_pointer; + +public: + typedef _Vector::iterator iterator; + typedef _Vector::const_iterator const_iterator; + + ~CustomVector(); + + iterator unk_action2(iterator begin, iterator end, UnkMSLStruct1) { + iterator it = begin; + + while (it != end) { + T *ptr = (T *) *it; + + if (ptr != NULL) { + if (*((u8 *) ptr + 4)) { + ::operator delete(ptr); + } + + *it = NULL; + } + + it++; + begin = this->begin(); + end = this->end(); + } + + return std::remove(begin, end, (T) NULL); + } + + void unk_action1() { + this->erase(this->unk_action2(this->begin(), this->end(), UnkMSLStruct1()), this->end()); + this->clear(); + } +}; + +template CustomVector::~CustomVector() { + UnkMSLStruct1 unk = UnkMSLStruct1(); // somehow needed + + if (_Vector::begin() != nullptr) { + _Vector::clear(); + _Vector::alloc().deallocate(_Vector::begin(), _Vector::cap()); + } +} + +#endif diff --git a/libs/nns/include/nns/g3d/g3d.h b/libs/nns/include/nns/g3d/g3d.h index 61437d2a..7a1234da 100644 --- a/libs/nns/include/nns/g3d/g3d.h +++ b/libs/nns/include/nns/g3d/g3d.h @@ -192,6 +192,7 @@ typedef struct BMDSectionModel { /* 08 */ G3d_NameList modelList; } BMDSectionModel; +void G3d_0200e6a0(const G3d_Model *pModel, s32 param2, s32 param3); u32 *G3d_0200f05c(const G3d_NameList *pNameList, const char *pName); static inline u32 *G3d_GetModelOffsetPtr(const BMDSectionModel *pSection, u8 modelIndex) { diff --git a/src/000_Second/Actor/ActorUnkEFIK.cpp b/src/000_Second/Actor/ActorUnkEFIK.cpp index f218457b..0da041d3 100644 --- a/src/000_Second/Actor/ActorUnkEFIK.cpp +++ b/src/000_Second/Actor/ActorUnkEFIK.cpp @@ -48,7 +48,7 @@ void ActorUnkEFIK::vfunc_20() { for (int i = 0; i < length; i++) { u8 j; u8 k; - UnkStruct_027e0cd8_0c *pUVar5 = data_027e0cd8->mUnk_0C; + UnkStruct_027e0cd8_0C_Base *pUVar5 = data_027e0cd8->mUnk_0C; u8 bStack_3c[2]; bStack_3c[0] = 0; diff --git a/src/000_Second/MapObject/MapObject.cpp b/src/000_Second/MapObject/MapObject.cpp index aec50f53..8d1bdeaa 100644 --- a/src/000_Second/MapObject/MapObject.cpp +++ b/src/000_Second/MapObject/MapObject.cpp @@ -15,6 +15,7 @@ extern "C" void func_01ffb9cc(VecFx32 *, VecFx32 *); extern "C" u16 func_01ffbbe0(fx32 x, fx32 z); extern "C" void func_01ffecdc(unk32 param1, Cylinder *param2); extern "C" bool func_01ffd768(unk32, void *, void *, unk8); +extern "C" void func_01fff6d0(void *, VecFx32 *param1, s32 *param2, s32 *param3); MapObject::MapObject() { this->mUnk_10 = NULL; @@ -57,9 +58,9 @@ void MapObject::func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx) { VecFx32 pos; Vec2p out; - MapObjectManager *t = data_027e0cd8->mUnk_10; - pos = thisx->mPos; - t->func_01fff6d0(&pos, (fx32 *) &out.y, (fx32 *) &out.x); + UnkStruct_027e0cd8_10 *ptr = data_027e0cd8->mUnk_10; + pos = thisx->mPos; + func_01fff6d0(ptr, &pos, (fx32 *) &out.y, (fx32 *) &out.x); Vec2p temp; temp.y = out.x; @@ -145,7 +146,7 @@ void MapObject::func_ov000_0209d2c4(unk32 param1, bool param2) { } void MapObject::func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3) { - UnkStruct_027e0cd8_0c *temp_r5 = data_027e0cd8->mUnk_0C; + UnkStruct_027e0cd8_0C_Base *temp_r5 = data_027e0cd8->mUnk_0C; Vec2b sp0(0, 0); sp0.x = this->mUnk_3A.x; diff --git a/src/000_Second/MapObject/MapObjectMiniBlocks.cpp b/src/000_Second/MapObject/MapObjectMiniBlocks.cpp index 9a63c5db..cbc0a87f 100644 --- a/src/000_Second/MapObject/MapObjectMiniBlocks.cpp +++ b/src/000_Second/MapObject/MapObjectMiniBlocks.cpp @@ -36,12 +36,12 @@ MapObjectMiniBlocks::MapObjectMiniBlocks() { bool MapObjectMiniBlocks::vfunc_00(void) { GET_PROFILE(MapObjectProfileMiniBlocks) ->func_ov000_0209ccd8(this->mUnk_20.mUnk_00[1], data_ov000_020af574[this->mUnk_20.mUnk_00[1]]); - UnkStruct_027e0cd8_0c *pUnkStruct_027e0cd8_0c = data_027e0cd8->mUnk_0C; + UnkStruct_027e0cd8_0C_Base *pUnkStruct_027e0cd8_0C = data_027e0cd8->mUnk_0C; u8 uVar6; if (this->mUnk_20.mUnk_00[1] != MiniBlocksVariant_BLKF) { Vec2b vec(this->mUnk_3A.x, this->mUnk_3A.y); - this->mPos.y = pUnkStruct_027e0cd8_0c->func_01ffedf4(&vec); + this->mPos.y = pUnkStruct_027e0cd8_0C->func_01ffedf4(&vec); } VecFx32 vec; diff --git a/src/001_SceneInit/Actor/ActorManager_001.cpp b/src/001_SceneInit/Actor/ActorManager_001.cpp index 492061e4..68d0be80 100644 --- a/src/001_SceneInit/Actor/ActorManager_001.cpp +++ b/src/001_SceneInit/Actor/ActorManager_001.cpp @@ -83,9 +83,9 @@ void ActorManager::func_ov001_020bafdc() { } // https://decomp.me/scratch/UywfM -void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param2 *param1) { - u16 unk_0A = param1->mUnk_0A; - u16 unk_08 = param1->mUnk_08; +void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) { + u16 unk_0A = pHeader->unk_0A; + u16 unk_08 = pHeader->unk_08; this->mActorCount = 0; this->mNextActorId = 0; @@ -206,19 +206,19 @@ void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param2 *par } } -void ActorManager::func_ov001_020bb414(ActorManager *instance) { +void ActorManager::func_ov001_020bb414() { func_ov001_020ba59c(&data_0204999c); if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00.mSceneIndex)) { - instance->func_ov001_020bb844(); + this->func_ov001_020bb844(); } - if (instance->mActorTable != 0) { - delete instance->mActorTable; + if (this->mActorTable != 0) { + delete this->mActorTable; } - instance->mActorTable = NULL; - instance->mActorTableEnd = NULL; + this->mActorTable = NULL; + this->mActorTableEnd = NULL; } void ActorManager::func_ov001_020bb488() { @@ -228,7 +228,7 @@ void ActorManager::func_ov001_020bb488() { case 0x01: case 0x03: case 0x06: - if (data_027e0cd8->mUnk_0C->mUnk_128 & 0x800) { + if (data_027e0cd8->GetUnk0C()->mUnk_128 & 0x800) { func_ov031_020ea100(); } break; @@ -363,7 +363,7 @@ bool ActorManager::func_ov001_020bb728(s32 param1) { } void ActorManager::func_ov001_020bb7b0(ZeldaObjectList *pObjList) { - for (s32 i = 0; i < pObjList->nEntries; i++) { + for (s32 i = 0; i < pObjList->header.nEntries; i++) { u32 id = pObjList->aIdList[i]; ActorProfile *pActorProfile = data_ov000_020b539c_eur.GetProfileFromId(id); diff --git a/src/001_SceneInit/UnkStruct_027e09b8_001.cpp b/src/001_SceneInit/UnkStruct_027e09b8_001.cpp index e69de29b..77935638 100644 --- a/src/001_SceneInit/UnkStruct_027e09b8_001.cpp +++ b/src/001_SceneInit/UnkStruct_027e09b8_001.cpp @@ -0,0 +1,85 @@ +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_0204a088.hpp" +#include "Unknown/UnkStruct_027e09b8.hpp" +#include "Unknown/UnkStruct_ov000_02067bc4.hpp" + +#include + +struct UnkStruct_ov000_02073080 { + /* 00 */ STRUCT_PAD(0x00, 0x08); + /* 08 */ CutsceneIndex csIndex; + /* 0C */ STRUCT_PAD(0x0C, 0x1C); + /* 1C */ +}; +extern "C" void func_ov000_02073080(void *); + +UnkStruct_027e09b8 *UnkStruct_027e09b8::Create() { + return new(HeapIndex_1) UnkStruct_027e09b8(); +} + +UnkStruct_027e09b8::UnkStruct_027e09b8() { + MI_CpuFill32(0, this->mAdventureFlags, sizeof(this->mAdventureFlags)); + this->mUnk_94 = 0; + this->mUnk_96 = false; + this->mUnk_97 = false; + MI_CpuFill32(0, this->mUnk_04, sizeof(this->mUnk_04)); + + this->mUnk_00 = new(HeapIndex_1) UnkStruct_027e09b8_00(); + this->mUnk_04[0] = new(HeapIndex_1) UnkStruct_027e09b8_04(); + this->mUnk_04[2] = new(HeapIndex_1) UnkStruct_027e09b8_0C(); + + if (data_0204a088 != NULL) { + this->mUnk_04[3] = new(HeapIndex_1) UnkStruct_027e09b8_10(); + } + + this->mUnk_98 = new(HeapIndex_1) UnkStruct_027e09b8_98(); +} + +UnkStruct_027e09b8::~UnkStruct_027e09b8() { + for (int i = 0; i < ARRAY_LEN(this->mUnk_04); i++) { + delete this->mUnk_04[i]; + } + + delete this->mUnk_00; + + if (this->mUnk_98 != NULL) { + DELETE(this->mUnk_98); + } +} + +void UnkStruct_027e09b8::ImportAdventureFlags(AdventureFlag *pAdventureFlags) { + MI_CpuCopy32(pAdventureFlags, this->mAdventureFlags, sizeof(this->mAdventureFlags)); +} + +void UnkStruct_027e09b8::func_ov001_020b76c0(CutsceneIndex csIndex) { + UnkStruct_ov000_02073080 auStack_30; + + func_ov000_02073080(&auStack_30); + auStack_30.csIndex = csIndex; + + this->mUnk_04[1] = new(HeapIndex_1) UnkStruct_027e09b8_08(&auStack_30); + + this->func_ov000_02073610(&auStack_30, 0); + data_ov000_020b504c.func_ov001_020be998(); +} + +void UnkStruct_027e09b8::func_ov001_020b7700() { + if (this->mUnk_04[1] != NULL) { + data_ov000_020b504c.func_ov001_020be504(); + DELETE(this->mUnk_04[1]); + } +} + +void UnkStruct_027e09b8::func_ov001_020b7728() { + this->mUnk_00->func_ov000_02073b5c(); + + for (int i = 0; i < ARRAY_LEN(this->mUnk_04); i++) { + if (this->mUnk_04[i] != NULL) { + this->mUnk_04[i]->vfunc_0C(); + } + } + + this->mUnk_98->func_ov000_020a7b34(); +} + +DECL_INSTANCE(UnkStruct_027e09b8, data_027e09b8); diff --git a/src/001_SceneInit/UnkStruct_027e0cd8_001.cpp b/src/001_SceneInit/UnkStruct_027e0cd8_001.cpp index e69de29b..db5bb3d9 100644 --- a/src/001_SceneInit/UnkStruct_027e0cd8_001.cpp +++ b/src/001_SceneInit/UnkStruct_027e0cd8_001.cpp @@ -0,0 +1,492 @@ +#include "Actor/ActorManager.hpp" +#include "Save/SaveManager.hpp" +#include "System/OverlayManager.hpp" +#include "System/SysNew.hpp" +#include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_02049bac.hpp" +#include "Unknown/UnkStruct_027e09a0.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e09b8.hpp" +#include "Unknown/UnkStruct_027e09bc.hpp" +#include "Unknown/UnkStruct_027e09c0.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" +#include "Unknown/UnkStruct_027e0cec.hpp" +#include "Unknown/UnkStruct_ov000_02067bc4.hpp" +#include "Unknown/UnkStruct_ov000_020b50c0.hpp" +#include "Unknown/UnkStruct_ov024_020d8660.hpp" +#include "Unknown/UnkStruct_ov024_020d8694.hpp" +#include "Unknown/UnkStruct_ov026_02138d10.hpp" +#include "files.h" +#include "versions.h" + +#include +#include + +extern "C" void func_ov026_020e9208(); +extern "C" void func_ov000_02081520(void *, void *, u8); +extern "C" void func_ov000_020814ec(void *, void *); +extern "C" void func_ov084_0216122c(); +extern "C" void func_ov084_021612ac(); +extern void *data_ov084_02164690; + +struct UnkStruct7 { + /* 00 */ u16 unk_00; + /* 02 */ Vec2s unk_02; + /* 04 */ +}; + +UnkStruct_027e0cd8 *UnkStruct_027e0cd8::Create() { + return new(HeapIndex_1) UnkStruct_027e0cd8(); +} + +UnkStruct_027e0cd8::UnkStruct_027e0cd8() : + mUnk_04(NULL), + mUnk_08(NULL), + mUnk_0C(NULL), + mUnk_10(NULL), + mUnk_16(true), + mUnk_17(true), + mUnk_30(-1), + mUnk_34(-1) { + + UnkStruct_027e09bc *ptr = data_027e09bc; + UnkSystem8 *pList = GetLinkListRef(this->mUnk_18); + ptr->mUnk_48.Prepend(pList); + + VecFx32_Init(0, 0, 0, &this->mUnk_24); + + for (int i = 0; i < ARRAY_LEN(this->mUnk_38); i++) { + this->mUnk_38[i] = 0; + this->mUnk_48[i] = false; + } +} + +UnkStruct_027e0cd8::~UnkStruct_027e0cd8() { + DELETE(this->mUnk_04); + DELETE(this->mUnk_08); +} + +void UnkStruct_027e0cd8::func_ov001_020b7830(const UnkStruct_SceneChange1 *param1) { + CourseListEntry *pEntry; + UnkStruct_func_ov000_020702a8 *pUnk1; + + pEntry = data_027e09a0->GetCourseEntry(param1->mSceneIndex); + pUnk1 = data_027e09a0->func_ov000_020702a8(param1->mSceneIndex); + + wchar_t sp80[16]; + sp80[0] = L'\0'; + sp80[sizeof(sp80) / 2 - 1] = L'\0'; + snprintf((char *) sp80, sizeof(sp80), "Map/%s/course.bin", pEntry->name); + + UnkStruct2 sp70((char *) sp80, 0x01); + sp70.func_020154ec("MCS"); + + bool isCS = true; + if (param1->mIsCS != true) { + isCS = false; + } + + UnkFileSystem3 sp60(isCS ? "MCS:objlist/npctype_1.zob" : "MCS:objlist/npctype.zob"); + gpActorManager->func_ov001_020bb018((ZOBHeader *) sp60.vfunc_08(sizeof(ZOBHeader))); + + UnkFileSystem3 sp50(isCS ? "MCS:objlist/motype_1.zob" : "MCS:objlist/motype.zob"); + gpMapObjManager->func_ov001_020bacd8((ZOBHeader *) sp50.vfunc_08(sizeof(ZOBHeader))); + + UnkStruct7 sp4; + Vec2s_Copy(&pUnk1->mUnk_10, &sp4.unk_02); + Vec2s_Copy(&sp4.unk_02, &this->mUnk_00); + + this->mUnk_14 = pEntry->unk_10; + this->mUnk_04 = new(HeapIndex_1) UnkStruct_027e0cd8_04(); + + if (pEntry->unk_21 != -1) { + this->mUnk_08 = new(HeapIndex_1) UnkStruct_027e0cd8_04(); + } + + if (DSProt_DetectEmulator(NULL) == 0) { + this->mUnk_30 = 0x1C; + } + + if (this->mUnk_14 == 0x02 || this->mUnk_14 == 0x04) { + this->mUnk_10 = new(HeapIndex_1) UnkStruct_027e0cd8_10(); + func_ov026_020e9208(); + } else if (data_027e09a4->mUnk_60 == 0 && data_ov024_020d8694 != NULL) { + if (data_027e09a4->CurrentSceneIndex() == SceneIndex_d_main) { + data_ov024_020d8694->func_ov024_020cb000(20); + } else { + data_ov024_020d8694->func_ov024_020cafb8(20); + } + } + + this->func_ov001_020b8120(param1->mSceneIndex); + + if (pEntry->unk_21 != -1) { + wchar_t sp30[16]; + sp30[0] = L'\0'; + sp30[sizeof(sp30) / 2 - 1] = L'\0'; + + snprintf((char *) sp30, sizeof(sp30), "Map/%s/course.bin", data_027e09a0->GetCourseEntry(pEntry->unk_21)->name); + + UnkStruct2 sp20((const char *) sp30, 0x01); + sp20.func_020154ec("MCT"); + this->func_ov001_020b7b38(pEntry, pUnk1); + } else { + this->func_ov001_020b7b38(pEntry, pUnk1); + } + + UnkStruct_SceneChange1 sceneChange(param1); + if (sceneChange.mRoomIndex != 0xFF) { + func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.mRoomIndex); + func_ov000_020814ec(this->mUnk_04, &sp4); + } else { + sceneChange.mRoomIndex = this->mUnk_04->mUnk_40[this->mUnk_04->mUnk_10][this->mUnk_04->mUnk_11]; + } + + this->func_ov001_020b7d64(&sceneChange); + this->func_ov001_020b7e68(&sceneChange, 0x01); +} + +void UnkStruct_027e0cd8::func_ov001_020b7a7c() { + this->func_ov001_020b818c(); + this->func_ov001_020b803c(); + + data_02049ba0.Unload(OverlaySlot_12); + data_02049ba0.Unload(OverlaySlot_16); + data_02049ba0.Unload(OverlaySlot_15); + data_02049ba0.Unload(OverlaySlot_14); + data_02049ba0.Unload(OverlaySlot_13); + + this->func_ov001_020b7e50(); + this->mUnk_30 = -1; + + if (data_027e09a4->mUnk_60 == 0) { + this->func_ov000_02081ca0(); + } + + DELETE(this->mUnk_04); + DELETE(this->mUnk_08); + + if (this->mUnk_10 != NULL) { + DELETE(this->mUnk_10); + } + + gpMapObjManager->func_ov001_020bad80(); + gpActorManager->func_ov001_020bb414(); +} + +void UnkStruct_027e0cd8::func_ov001_020b7b38(const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1) { + if (pEntry->saveCourseIndex < SaveCourseIndex_Max) { + SaveManager_00 *ptr = gSaveManager.mUnk_000; + this->mUnk_04->func_ov000_02081354(pEntry, pUnk1, &ptr->unk_030[pEntry->saveCourseIndex], false); + SET_FLAG(ptr->unk_004.unk_00, pEntry->saveCourseIndex); + } else { + SaveFile_00000_0000_Data_184 local_1c; + MI_CpuFill32(0, &local_1c, sizeof(local_1c)); + this->mUnk_04->func_ov000_02081354(pEntry, pUnk1, &local_1c, false); + } + + this->mUnk_34 = pEntry->unk_21; + + if (this->mUnk_34 != SceneIndex_None) { + CourseListEntry *pOtherEntry = data_027e09a0->GetCourseEntry(this->mUnk_34); + UnkStruct_func_ov000_020702a8 *pOtherUnk1 = data_027e09a0->func_ov000_020702a8(this->mUnk_34); + + if (pOtherEntry->saveCourseIndex < SaveCourseIndex_Max) { + this->mUnk_08->func_ov000_02081354(pOtherEntry, pOtherUnk1, + &gSaveManager.mUnk_000->unk_030[pOtherEntry->saveCourseIndex], true); + } else { + SaveFile_00000_0000_Data_184 local_1c; + MI_CpuFill32(0, &local_1c, sizeof(local_1c)); + this->mUnk_08->func_ov000_02081354(pOtherEntry, pOtherUnk1, &local_1c, true); + } + } +} + +void UnkStruct_027e0cd8::func_ov001_020b7c08(const UnkStruct_SceneChange1 *param1, const UnkStruct_WarpUnk1_A0 *param2) { + UnkStruct_SceneChange1 sceneChange(param1); + Vec2s sp4; + + if (this->mUnk_30 == param1->mSceneIndex && DSProt_DetectNotFlashcart(NULL) != 0) { + data_ov084_02164690 = &sceneChange; + } + + if (!this->func_ov000_02082124() && + (param1->mSceneIndex < SceneIndex_tekiya00 || param1->mSceneIndex > SceneIndex_tekiya09)) { +#if IS_JP + VecFx32_Copy(¶m2->mUnk_04, &this->mUnk_24); +#endif + + if (param1->mSceneIndex == SceneIndex_f_water) { + switch (param1->mRoomIndex) { + case 1: + this->mUnk_24.x = 0x16000; + this->mUnk_24.z = 0xFFFF6000; + break; + case 2: + this->mUnk_24.x = 0xFFFE8000; + this->mUnk_24.z = 0x8000; + break; + case 3: + this->mUnk_24.x = 0xFFFFD000; + this->mUnk_24.z = 0x8800; + break; + case 4: + this->mUnk_24.x = 0x8000; + this->mUnk_24.z = 0xFFFFE800; + break; + default: + break; + } + } else { +#if IS_JP + if (param1->mSceneIndex == SceneIndex_f_snow2 && param1->mRoomIndex == 2) { + this->mUnk_24.x = 0xFFFFF000; + this->mUnk_24.z = 0xFFFF0000; + } +#else + VecFx32_Copy(¶m2->mUnk_04, &this->mUnk_24); +#endif + } + } + + this->func_ov001_020b803c(); + this->func_ov001_020b7e50(); + + if (sceneChange.mRoomIndex != ROOM_INDEX_NONE) { + if (this->mUnk_30 == sceneChange.mSceneIndex && DSProt_DetectNotEmulator(func_ov084_0216122c) == 0) { + func_ov084_021612ac(); + } + + func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.mRoomIndex); + func_ov000_020814ec(this->mUnk_04, &sp4); + } else { + sceneChange.mRoomIndex = this->mUnk_04->mUnk_40[this->mUnk_04->mUnk_10][this->mUnk_04->mUnk_11]; + } + + this->func_ov001_020b7d64(&sceneChange); + this->func_ov001_020b7e68(&sceneChange, 0x00); + + if (data_027e09a4->mUnk_60 == 0 && data_ov024_020d8694 != NULL) { + if (data_027e09a4->CurrentSceneIndex() == SceneIndex_f_first && this->func_ov000_02081d5c() == 0) { + data_ov024_020d8694->func_ov024_020cafd8(20); + } else { + data_ov024_020d8694->func_ov024_020cb000(20); + } + } +} + +void UnkStruct_027e0cd8::func_ov001_020b7d64(const UnkStruct_SceneChange1 *param1) { + UnkStruct_027e0cd8_04_0C *iVar7; + u32 temp_r1; + u16 uVar5; + u16 uVar6; + u16 uVar4; + u16 uVar3; + + iVar7 = this->mUnk_04->mUnk_0C; + + switch (data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10) { + case 0: + case 1: + case 3: + case 6: + this->mUnk_0C = new(HeapIndex_1) UnkStruct_027e0cd8_0C(this); + + uVar3 = iVar7->mUnk_0C & 0x0F; + temp_r1 = iVar7->mUnk_0C; + uVar5 = (temp_r1 >> 4) & 0x0F; + uVar6 = (temp_r1 >> 8) & 0x0F; + uVar4 = (temp_r1 >> 12) & 0x0F; + + if (uVar3 != 0) { + data_02049ba0.LoadIfNotLoaded(OverlaySlot_13, uVar3 - 1 + OverlayIndex_MapA1); + } + + if (uVar5 != 0) { + data_02049ba0.LoadIfNotLoaded(OverlaySlot_14, uVar5 - 1 + OverlayIndex_MapB1); + } + + if (uVar6 != 0) { + data_02049ba0.LoadIfNotLoaded(OverlaySlot_15, uVar6 - 1 + OverlayIndex_MapC1); + } + + if (uVar4 != 0) { + data_02049ba0.LoadIfNotLoaded(OverlaySlot_16, uVar4 - 1 + OverlayIndex_MapD1); + } + break; + case 2: + case 4: + this->mUnk_0C = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Derived2(this); + break; + case 5: + this->mUnk_0C = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Derived3(this); + break; + default: + break; + } +} + +void UnkStruct_027e0cd8::func_ov001_020b7e50() { + DELETE(this->mUnk_0C); +} + +void UnkStruct_027e0cd8::func_ov001_020b7e68(const UnkStruct_SceneChange1 *param1, bool param2) { + if (this->mUnk_10 != NULL) { + this->mUnk_10->func_ov024_020d2520((UnkStruct_SceneChange1 *) param1); + } + + data_ov000_020b504c.func_ov001_020be92c(this->mUnk_04->mUnk_0C); + this->mUnk_0C->func_ov001_020b85d0(param1); + this->mUnk_0C->vfunc_1C(param1, this->mUnk_04->mUnk_01, param2); + + data_ov000_020b50c0.func_ov001_020bde4c(param1); + data_027e0ce0->func_ov001_020bc65c(); + data_027e09bc->func_ov001_020babe8(); + data_027e0960->func_ov000_0205a11c(); + gpActorManager->func_ov001_020bb488(); + gpMapObjManager->func_ov001_020bada0(); + data_0204a110.func_ov001_020bd678(); + + if (data_027e09a4->mUnk_60 == 0) { + data_ov024_020d8660->func_ov024_020c4ba0(); + } + + unk32 unk_10 = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10; + + if (data_027e09a4->mUnk_60 == 1) { + for (int i = 0; i < 4; i++) { + UnkStruct_027e0ce0 *ptr = data_027e0ce0; + const UnkStruct_ov001_020c40f4 *arg = this->mUnk_0C->func_ov001_020b8a5c(i, 0x00); + ptr->func_ov001_020bc6d8(i, arg); + } + } else if (unk_10 == 2 || unk_10 == 4) { + UnkStruct_027e0ce0 *ptr = data_027e0ce0; + const UnkStruct_ov001_020c40f4 *arg = this->mUnk_0C->func_ov001_020b8a5c(param1->mSpawnIndex, 0x00); + ptr->func_ov001_020bc6e8(arg); + } else { + UnkStruct_027e0cd8_0C_Base *temp_pUnkC = this->mUnk_0C; + u32 temp_unk118 = temp_pUnkC->mUnk_118; + u8 temp_spawn = param1->mSpawnIndex; + UnkStruct_027e0ce0 *ptr = data_027e0ce0; + + const UnkStruct_ov001_020c40f4 *spC = temp_pUnkC->func_ov001_020b8a5c(param1->mSpawnIndex, 0); + + ptr->func_ov001_020bc6fc(spC, temp_pUnkC->func_ov001_020b8a5c(temp_spawn, 1), temp_pUnkC->mUnk_11C, temp_unk118); + } + + data_027e09bc->func_ov000_020771c8(); + unk32 iVar7 = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10; + data_027e09c0->func_ov000_0207da40(); + this->mUnk_0C->vfunc_08(); + + if (iVar7 == 2 || iVar7 == 4) { + data_ov026_02138d10->func_ov026_020dca14(); + } + + gpMapObjManager->func_ov001_020bac9c(); + gpActorManager->func_ov001_020bafdc(); + + if (data_027e09a4->mUnk_60 == 0) { + SaveManager_00 *ptr = gSaveManager.mUnk_000; + u16 auStack_18[2]; + data_027e09a0->func_ov000_02070310(param1->mSceneIndex, param1->mRoomIndex, &auStack_18); + + if (auStack_18[1] < 0x100) { + SET_FLAG(ptr->unk_004.unk_0C, auStack_18[1]); + } + } +} + +void UnkStruct_027e0cd8::func_ov001_020b803c() { + this->mUnk_0C->vfunc_20(); + + if (data_027e09a4->mUnk_60 == 0 && data_ov024_020d8660 != NULL) { + data_ov024_020d8660->func_ov024_020c4cc8(); + } + + data_0204a110.func_ov001_020bd68c(); + gpMapObjManager->func_ov001_020badb4(); + gpActorManager->func_ov001_020bb548(); + data_027e0ce0->func_ov001_020bc69c(); + data_027e09bc->func_ov001_020bac08(); + data_027e0cec->func_ov001_020bf028(); + data_027e0960->func_ov000_0205a120(); + data_027e09b8->func_ov001_020b7728(); + DELETE_ARRAY(gSaveManager.mUnk_244); + data_ov000_020b50c0.func_ov001_020bde5c(); + data_ov000_020b504c.func_ov001_020be94c(); + this->mUnk_0C->func_ov001_020b88ec(); + + if (this->mUnk_10 != NULL) { + this->mUnk_10->func_ov024_020d2564(); + } +} + +bool UnkStruct_027e0cd8::func_ov001_020b80fc(SceneIndex sceneIndex) { + int index; + + switch (sceneIndex) { + case SceneIndex_t_area0: + index = 0; + break; + case SceneIndex_t_area1: + index = 1; + break; + default: + index = 2; + break; + } + + if (index == 2) { + return 0; + } + + return this->mUnk_48[index]; +} + +void UnkStruct_027e0cd8::func_ov001_020b8120(SceneIndex sceneIndex) { + int index; + + switch (sceneIndex) { + case SceneIndex_t_area0: + index = 0; + break; + case SceneIndex_t_area1: + index = 1; + break; + default: + index = 2; + break; + } + + if (index != 2) { + s64 value = data_02049bac.func_02014b00(); + + if (value > (this->mUnk_38[index] + 600) || value < this->mUnk_38[index]) { + this->mUnk_48[index] = ((u32) value / 300) & 1; + } + } +} + +void UnkStruct_027e0cd8::func_ov001_020b818c() { + int index; + + switch (data_027e09a4->CurrentSceneIndex()) { + case SceneIndex_t_area0: + index = 0; + break; + case SceneIndex_t_area1: + index = 1; + break; + default: + index = 2; + break; + } + + if (index != 2) { + this->mUnk_38[index] = data_02049bac.func_02014b00(); + } +} + +DECL_INSTANCE(UnkStruct_027e0cd8, data_027e0cd8); diff --git a/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp b/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp index e69de29b..9c71365d 100644 --- a/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp +++ b/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp @@ -0,0 +1,488 @@ +#include "Actor/ActorManager.hpp" +#include "Cutscene/Cutscene.hpp" +#include "Game/GameModeManager.hpp" +#include "MapObject/MapObjectManager.hpp" +#include "Physics/AABB.hpp" +#include "Unknown/UnkStruct_027e095c.hpp" +#include "Unknown/UnkStruct_027e09a0.hpp" +#include "Unknown/UnkStruct_027e09ac.hpp" +#include "Unknown/UnkStruct_027e09b0.hpp" +#include "Unknown/UnkStruct_027e09b8.hpp" +#include "Unknown/UnkStruct_027e09c0.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" + +#include +#include +#include + +extern "C" BMDSectionModel *func_ov000_0205abcc(void *, void *, unk32, unk32, unk32); +extern "C" void func_ov089_02165c34(void *); +extern AABB data_027e0ca8; +extern AABB data_027e0cc0; +extern AABB data_027e0c90; +extern int data_ov089_02171540; + +static UnkStruct_ov001_020c40f4 data_ov001_020c40f4[0x40]; + +struct UnkStruct_ov001_020c2a40 { + /* 00 */ unk32 unk_00; + /* 04 */ unk32 unk_04; + /* 08 */ unk16 unk_08; + /* 0A */ u8 unk_0A; + /* 0B */ u8 unk_0B; + /* 0C */ u8 unk_0C; + /* 0D */ u8 unk_0D; + /* 0E */ u8 unk_0E; + /* 0F */ u8 unk_0F; + /* 10 */ u8 unk_10; + /* 11 */ STRUCT_PAD(0x11, 0x14); // pad? + /* 14 */ + + UnkStruct_ov001_020c2a40(unk32 param1, unk32 param2, unk16 param3, unk8 param4, unk8 param5, unk8 param6, unk8 param7) { + this->unk_00 = param1; + this->unk_04 = param2; + this->unk_08 = param3; + this->unk_0A = param4; + this->unk_0B = param5; + this->unk_0C = param6; + this->unk_0D = param7; + this->unk_0E = 0x2B; + this->unk_0F = 0; + this->unk_10 = 0; + } +}; + +static const UnkStruct_ov001_020c2a40 data_ov001_020c2a40[] = { + UnkStruct_ov001_020c2a40(0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C), + UnkStruct_ov001_020c2a40(0x29, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x3D), + UnkStruct_ov001_020c2a40(0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E), + UnkStruct_ov001_020c2a40(0x04, 0x00, 0x00, 0x00, 0xFA, 0x00, 0x3F), +}; + +// https://decomp.me/scratch/JcRNn +UnkStruct_027e0cd8_0C_Base::UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param1) : + mUnk_004(NULL, 0x9B, 0x01, 0x01), + mSceneRender(NULL), + mUnk_070(NULL, 0x9B, 0x01, 0x00), + mUnk_084_00(0), + mUnk_084_01(0), + mUnk_098(0), + mUnk_09C(¶m1->mUnk_00), + mUnk_0AC(false), + mUnk_0AD(false), + mUnk_0AE(false), + mUnk_0AF(false), + mUnk_0FC(0), + mIsCS(false), + mUnk_104(0), + mUnk_108(0), + mUnk_10C(0), + mUnk_110(0), + mUnk_114(0), + mUnk_118(0), + mUnk_11C(1), + mUnk_120(0), + mUnk_124(0), + mUnk_128(0), + mUnk_12A(true), + mUnk_12B(false), + mUnk_12C(false), + mUnk_12D(false), + mUnk_12E(false), + mUnk_130(0), + mUnk_134(0), + mUnk_138(0) { + Vec2s local_30; + VecFx32 sp18; + VecFx32 spC; + + this->mUnk_0A0 = 0; + this->mUnk_0A4 = 0; + this->mUnk_0A8 = 0; + + fx32 y = (this->mUnk_11C << 14); + fx32 z = ((u32) (u16) this->mUnk_09C.y >> 1) << 12; + fx32 x = ((u32) (u16) this->mUnk_09C.x >> 1) << 12; + + data_027e0c90.min.x = -x; + data_027e0c90.min.y = -y; + data_027e0c90.min.z = -z; + + data_027e0c90.max.x = x; + data_027e0c90.max.y = 0; + data_027e0c90.max.z = z; + + spC = data_027e0c90.min; + data_027e0ca8.min = spC; + + sp18 = data_027e0c90.max; + data_027e0ca8.max = sp18; + + data_027e0cc0.min = spC; + data_027e0cc0.max = sp18; + + this->mUnk_13C.Init(data_ov001_020c40f4, 0x40); + + Vec2s_Copy(&this->mUnk_09C, &local_30); + gpMapObjManager->func_ov001_020baea0(&local_30); + data_027e095c->func_ov000_020592a0(); +} + +UnkStruct_027e0cd8_0C_Base::~UnkStruct_027e0cd8_0C_Base() { + data_027e095c->func_ov000_020592ec(); + gpMapObjManager->func_ov001_020baf28(); + DELETE(this->mUnk_098); + this->mUnk_130 = 0; + this->mUnk_138 = 0; + this->mUnk_134 = 0; + this->mUnk_154.clear(); + this->func_ov001_020b8aec(); +} + +void UnkStruct_027e0cd8_0C_Base::vfunc_38() {} + +void UnkStruct_027e0cd8_0C_Base::vfunc_08() {} + +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b85d0(const UnkStruct_SceneChange1 *param1) { + this->mIsCS = param1->mIsCS; + + wchar_t local_c8[2]; + local_c8[0] = L'\0'; + local_c8[sizeof(local_c8) / 2 - 1] = L'\0'; + snprintf((char *) local_c8, sizeof(local_c8), "M%02d", param1->mRoomIndex); + this->mUnk_084[0] = local_c8[0]; + this->mUnk_084[1] = local_c8[1]; + + CourseListEntry *pEntry = data_027e09a0->GetCourseEntry(param1->mSceneIndex); + + wchar_t local_34[16]; + local_34[0] = L'\0'; + local_34[sizeof(local_34) / 2 - 1] = L'\0'; + snprintf((char *) local_34, sizeof(local_34), "Map/%s/map%02d.bin", pEntry->name, param1->mRoomIndex); + + this->mUnk_004.~UnkSystem3(); + this->mUnk_004.mUnk_00 = local_34; + this->mUnk_004.func_0201541c((char *) local_c8, 0x10); + this->LoadSceneModel(param1); + + snprintf((char *) local_34, sizeof(local_34), "%s:zcb/%s_%02d.zcb", local_c8, pEntry->name, param1->mRoomIndex); + UnkFileSystem3 local_44((char *) local_34); + data_027e09c0->func_ov001_020be3dc(&local_44, this); + + wchar_t local_64[16]; + local_64[0] = L'\0'; + local_64[sizeof(local_64) / 2 - 1] = L'\0'; + snprintf((char *) local_64, sizeof(local_64), "%s:zmb/%s_%02d.zmb", local_c8, pEntry->name, param1->mRoomIndex); + UnkFileSystem3 local_74((char *) local_64); + local_74.vfunc_08(0x10); + + ZMBFileInfos zmbFileInfos; + zmbFileInfos.pFile = local_74.mpFile; + zmbFileInfos.size = local_74.mFileSize; + zmbFileInfos.unk_08 = 0; + zmbFileInfos.unk_0C = 0; + zmbFileInfos.unk_10 = 0; + zmbFileInfos.unk_14 = 0; + ZMB_ParseFile(&zmbFileInfos, this, true); + + gpMapObjManager->func_ov001_020bade0(); + gpActorManager->func_ov001_020bb630(); + + if (param1->mIsCS == false) { + gpActorManager->func_ov001_020bb6b0((UnkStruct_SceneChange1 *) param1); + } + + data_027e095c->func_ov000_020592a0(); + + u32 isCs = this->mIsCS; + snprintf((char *) local_34, sizeof(local_34), "%s:zob/motype_%02d_%1d.zob", local_c8, param1->mRoomIndex, isCs); + UnkFileSystem3 local_94((char *) local_34); + this->mUnk_0B4 = (ZeldaObjectList *) local_94.vfunc_08(sizeof(ZOBHeader)); + gpMapObjManager->func_ov001_020bae40(this->mUnk_0B4); + for (int i = 0; i < ARRAY_LEN(this->mUnk_0B8); i++) { + // i + 2 because 0 is the default one and 1 is the cutscene one + snprintf((char *) local_34, sizeof(local_34), "%s:zob/motype_%02d_%1d.zob", local_c8, param1->mRoomIndex, i + 2); + UnkFileSystem3 local_a4((char *) local_34); + this->mUnk_0B8[i] = (ZeldaObjectList *) local_a4.vfunc_08(sizeof(ZOBHeader)); + } + + isCs = this->mIsCS; + snprintf((char *) local_34, sizeof(local_34), "%s:zob/npctype_%02d_%1d.zob", local_c8, param1->mRoomIndex, isCs); + UnkFileSystem3 local_b4((char *) local_34); + this->mUnk_0D8 = (ZeldaObjectList *) local_b4.vfunc_08(sizeof(ZOBHeader)); + gpActorManager->func_ov001_020bb7b0(this->mUnk_0D8); + for (int i = 0; i < ARRAY_LEN(this->mUnk_0DC); i++) { + // i + 2 because 0 is the default one and 1 is the cutscene one + snprintf((char *) local_34, sizeof(local_34), "%s:zob/npctype_%02d_%1d.zob", local_c8, param1->mRoomIndex, i + 2); + UnkFileSystem3 local_c4((char *) local_34); + this->mUnk_0DC[i] = (ZeldaObjectList *) local_c4.vfunc_08(sizeof(ZOBHeader)); + } + + data_027e09b0->func_ov000_02072cc4(0x0000, 0x7FFF); + ZMB_ParseFile(&zmbFileInfos, this, false); + this->vfunc_40(param1->mSpawnIndex); + + if (param1->mSceneIndex == SceneIndex_t_area1) { + if (GET_FLAG(data_027e09b8->mAdventureFlags, AdventureFlag_ObtainedSnowSource)) { + this->mUnk_110 = 0x0A; + } + } else if (param1->mSceneIndex == SceneIndex_t_area3) { + if (GET_FLAG(data_027e09b8->mAdventureFlags, AdventureFlag_ObtainedFireSource)) { + this->mUnk_110 = 0x10; + this->mUnk_114 = 0x1F; + } + } + + this->func_ov001_020b8db8(); + this->func_ov001_020b8e24(); + + if (param1->mIsCS == true) { + this->mUnk_114 = Cutscene_GetParamEntry(param1->mCutsceneIndex)->mUnk_0E; + } + + data_027e09ac->func_ov000_020726f0(this->mUnk_114, 0x00, 0x00); + this->vfunc_38(); +} + +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b88c0(unk32 param1) { + gpMapObjManager->func_ov001_020bae40(this->mUnk_0B8[param1]); + gpActorManager->func_ov001_020bb7b0(this->mUnk_0DC[param1]); +} + +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b88ec() { + this->func_ov001_020b8e54(); + this->mUnk_088.func_ov000_0208261c(); + gpMapObjManager->func_ov001_020bae6c(); + gpActorManager->func_ov001_020bb7f0(); + data_027e095c->func_ov000_020592ec(); + data_027e09c0->func_ov001_020be400(); + this->mUnk_004.~UnkSystem3(); + + if (this->mUnk_128 & 0x200) { + func_ov089_02165c34(&data_ov089_02171540); + } +} + +void UnkStruct_027e0cd8_0C_Base::LoadSceneModel(const UnkStruct_SceneChange1 *param1) { + const char *pName = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->name; + + wchar_t local_40[20]; + local_40[0] = L'\0'; + local_40[sizeof(local_40) / 2 - 1] = L'\0'; + snprintf((char *) local_40, sizeof(local_40), "%s:nsbmd/%s_%02d.nsbmd", this->mUnk_084, pName, param1->mRoomIndex); + UnkFileSystem3 local_50((char *) local_40); + + wchar_t local_78[20]; + local_78[0] = L'\0'; + local_78[sizeof(local_78) / 2 - 1] = L'\0'; + const char *path = "Map/%s/map%02d.nsbtx"; + snprintf((char *) local_78, sizeof(local_78), path, pName, param1->mRoomIndex); + + this->mUnk_070.vfunc_0C(); + this->mUnk_070.mUnk_04 = (char *) local_78; + this->mUnk_070.vfunc_08(0x10); + + BMDSectionModel *pBMD = func_ov000_0205abcc(&local_50, &this->mUnk_070, 0x01, 0x00, 0x00); + G3d_Model *pModel = G3d_GetModelPtr(pBMD); + G3d_0200e6a0(pModel, 0x00, 0x40); + G3d_0200e6a0(pModel, 0x00, 0x80); + this->mSceneRender.vfunc_08(pModel); +} + +void UnkStruct_027e0cd8_0C_Base::vfunc_1C(const UnkStruct_SceneChange1 *param1, bool param2, bool param3) { + SceneIndex sceneIndex = param1->mSceneIndex; + u8 roomIndex = param1->mRoomIndex; + + if (param2 != 0) { + if (param3 == 0) { + return; + } + + roomIndex = 99; + } + + gpCurrentGameModeMgr->vfunc_38(sceneIndex, roomIndex, 0x01, 0x00); +} + +void UnkStruct_027e0cd8_0C_Base::vfunc_20() {} + +const UnkStruct_ov001_020c40f4 *UnkStruct_027e0cd8_0C_Base::func_ov001_020b8a5c(unk32 spawnIndex, unk32 param1) { + UnkStruct_ov001_020c40f4 *result = + std::find_if(this->mUnk_13C.begin(), this->mUnk_13C.end(), UnkStruct_ov001_020c40f4::Predicate(spawnIndex, param1)); + + if (param1 == 0) { + if (result == this->mUnk_13C.end()) { + result = this->mUnk_13C.begin(); + } + + if (result->mUnk_0F == 0) { + result->mUnk_00.y = this->vfunc_28(&result->mUnk_00, 1, 0); + } + + return result; + } else { + if (result == this->mUnk_13C.end()) { + return this->func_ov001_020b8a5c(spawnIndex, 0x00); + } + + if (result->mUnk_0F == 0) { + result->mUnk_00.y = this->vfunc_28(&result->mUnk_00, 1, 0); + } + + return result; + } +} + +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8aec() { + STACK_PAD(0x24); + this->mUnk_148.unk_action1(); +} + +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8b94(ZMBEntryARAB *pARAB) { + UnkStruct_027e0cd8_0C_Base_148_00_Base *ptr = NULL; + + if (pARAB->unk_0C == 1) { + ptr = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Base_148_02(pARAB); + } else if (pARAB->unk_0D == 1) { + ptr = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Base_148_01(pARAB); + } else { + ptr = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Base_148_00(pARAB); + } + + this->mUnk_148.push_back(ptr); +} + +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c30(const UnkStruct_027e0cd8_0C_Base_154_00 ¶m1) { + this->mUnk_154.push_back(param1); +} + +void *UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c80(unk32 param1) { + return (void *) &data_ov001_020c2a40[param1 - 0x3C]; +} + +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c90(unk32 param1) { + this->mUnk_138 = param1; +} + +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c98(unk32 param1) { + this->mUnk_134 = param1; +} + +void UnkStruct_027e0cd8_0C_Base::vfunc_34(unk32 param1) { + this->mUnk_130 = param1; +} + +void UnkStruct_027e0cd8_0C_Base::vfunc_40(u8 spawnIndex) { + switch (spawnIndex) { + case 0xFB: + case 0xFC: + case 0xFD: + case 0xFE: { + UnkStruct_ov001_020c40f4 stack_elem; + UnkStruct_WarpUnk1_A0 *pEntry = data_027e09a4->func_ov000_02070538(); + VecFx32 pos = pEntry->mUnk_04; + fx16 angle = DEG_TO_ANG(0); + + switch (spawnIndex) { + case 0xFB: + pos.z = data_027e0c90.max.z - FLOAT_TO_FX32(0.5f); + angle = DEG_TO_ANG(180); + break; + case 0xFC: + pos.z = data_027e0c90.min.z + FLOAT_TO_FX32(0.5f); + angle = DEG_TO_ANG(0); + break; + case 0xFD: + pos.x = data_027e0c90.max.x - FLOAT_TO_FX32(0.5f); + angle = DEG_TO_ANG(270); + break; + case 0xFE: + pos.x = data_027e0c90.min.x + FLOAT_TO_FX32(0.5f); + angle = DEG_TO_ANG(90); + break; + default: + break; + } + + stack_elem.mUnk_0E = spawnIndex; + VecFx32_Copy(&pos, &stack_elem.mUnk_00); + stack_elem.mUnk_0C = angle; + stack_elem.mUnk_10 = 0xFD; + + UnkStruct_ov001_020c40f4 *pEnd = this->mUnk_13C.end(); + if (pEnd != NULL) { + pEnd->mUnk_00 = stack_elem.mUnk_00; + pEnd->mUnk_0C = stack_elem.mUnk_0C; + pEnd->mUnk_0E = stack_elem.mUnk_0E; + pEnd->mUnk_0F = stack_elem.mUnk_0F; + pEnd->mUnk_10 = stack_elem.mUnk_10; + pEnd->mUnk_14 = stack_elem.mUnk_14; + } + + this->mUnk_13C.grow_by(1); + break; + } + default: + break; + } +} + +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8db8() { + unk32 uVar1; + + uVar1 = 0; + switch (this->mUnk_110) { + case 0x00: + case 0x03: + uVar1 = 0x0A; + break; + case 0x0E: + uVar1 = 0x01; + break; + case 0x05: + case 0x09: + uVar1 = 0x02; + break; + case 0x0A: + uVar1 = 0x03; + break; + case 0x02: + uVar1 = 0x04; + break; + case 0x0F: + uVar1 = 0x05; + break; + case 0x10: + uVar1 = 0x06; + break; + case 0x08: + uVar1 = 0x00; + break; + case 0x0C: + uVar1 = 0x09; + break; + case 0x06: + uVar1 = 0x07; + break; + case 0x01: + case 0x07: + case 0x04: + case 0x0B: + break; + default: + uVar1 = 0x00; + break; + } + + this->mUnk_088.func_ov000_020823a8(uVar1); +} + +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8e24() { + if (this->mUnk_110 == 7 && this->mUnk_098 == NULL) { + this->mUnk_098 = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Base_98(); + } +} + +void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8e54() { + DELETE(this->mUnk_098); +} diff --git a/src/001_SceneInit/UnkStruct_027e0cd8_0C_148_154_001.cpp b/src/001_SceneInit/UnkStruct_027e0cd8_0C_148_154_001.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/017_CourseExec/CargoManager_017.cpp b/src/017_CourseExec/CargoManager_017.cpp index 7ce9b666..1574a7e3 100644 --- a/src/017_CourseExec/CargoManager_017.cpp +++ b/src/017_CourseExec/CargoManager_017.cpp @@ -173,7 +173,7 @@ void CargoManager::RemoveAmount(unk32 decr) { bool CargoManager::func_ov017_020bec9c() { if (data_027e09a4->IsTrain()) { - return data_027e0cd8->mUnk_0C->mUnk_160->func_ov026_02106aa8(); + return data_027e0cd8->GetUnk0C()->mUnk_160->func_ov026_02106aa8(); } return false; diff --git a/src/018_StartUp/StartUpInitializers.cpp b/src/018_StartUp/StartUpInitializers.cpp index 74e60509..eccfdb58 100644 --- a/src/018_StartUp/StartUpInitializers.cpp +++ b/src/018_StartUp/StartUpInitializers.cpp @@ -123,7 +123,7 @@ SaveManager::SaveManager() { this->mUnk_20A = 0; this->mUnk_214 = 0; this->mpSaveFile = NULL; - this->mUnk_244 = 0; + this->mUnk_244 = NULL; func_020327c8(&this->mUnk_004, 0x1021); diff --git a/src/024_MainGame/Actor/ActorUnkOBPC.cpp b/src/024_MainGame/Actor/ActorUnkOBPC.cpp index 250194e4..473dfb8a 100644 --- a/src/024_MainGame/Actor/ActorUnkOBPC.cpp +++ b/src/024_MainGame/Actor/ActorUnkOBPC.cpp @@ -117,8 +117,8 @@ void ActorUnkOBPC::SetState(ActorState state, int param2) { } bool ActorUnkOBPC::func_ov024_020d7154(void) { - u8 temp_r4 = this->mUnk_5C.mParams[0]; - UnkStruct_027e0cd8_0c *temp_r5 = data_027e0cd8->mUnk_0C; + u8 temp_r4 = this->mUnk_5C.mParams[0]; + UnkStruct_027e0cd8_0C_Base *temp_r5 = data_027e0cd8->mUnk_0C; ActorManager *pActorMgr; VecFx32 sp10; diff --git a/src/024_MainGame/Game/AdventureModeManager_024.cpp b/src/024_MainGame/Game/AdventureModeManager_024.cpp index 0708d666..79006810 100644 --- a/src/024_MainGame/Game/AdventureModeManager_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_024.cpp @@ -601,8 +601,8 @@ void AdventureModeManager::vfunc_34(unk32 param1, unk32 param2) { } } -void AdventureModeManager::vfunc_38(u32 param1, u8 param2, unk16 param3, unk16 param4) { - this->func_ov024_020c6514(param1, param2, param3, param4); +void AdventureModeManager::vfunc_38(u32 sceneIndex, u8 roomIndex, unk16 param3, unk16 param4) { + this->func_ov024_020c6514(sceneIndex, roomIndex, param3, param4); } void AdventureModeManager::func_ov024_020c6514(SceneIndex sceneIndex, u8 param2, unk16 param3, unk16 param4) { diff --git a/src/024_MainGame/Game/AdventureModeManager_184_024.cpp b/src/024_MainGame/Game/AdventureModeManager_184_024.cpp index aef5e7b6..a69ba4e1 100644 --- a/src/024_MainGame/Game/AdventureModeManager_184_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_184_024.cpp @@ -40,7 +40,7 @@ void AdventureModeManager_184::vfunc_0C(unk32 param1) { } data_0204a088->func_ov000_02061248(); - MapObjectId mapObjId = data_027e09b8->mUnk_0C->mMapObjId; + MapObjectId mapObjId = data_027e09b8->GetUnk0C()->mMapObjId; if (data_027e09a4->IsTrain() || (data_027e09b8->func_ov000_020732dc(2) && (mapObjId != MapObjectId_WDST || @@ -77,7 +77,7 @@ void AdventureModeManager_184::func_ov024_020c979c(unk32 param1) { return; } - MapObjectId mapObjId = data_027e09b8->mUnk_0C->mMapObjId; + MapObjectId mapObjId = data_027e09b8->GetUnk0C()->mMapObjId; if (data_027e09a4->IsTrain()) { if (data_027e09a4->IsDarkRealm()) { diff --git a/src/024_MainGame/Train/UnkDataStruct4.cpp b/src/024_MainGame/Train/UnkDataStruct4.cpp index 3e2e24a1..76f35e0e 100644 --- a/src/024_MainGame/Train/UnkDataStruct4.cpp +++ b/src/024_MainGame/Train/UnkDataStruct4.cpp @@ -6,8 +6,8 @@ #include "files.h" #include +#include -extern "C" void func_02026800(void *, int, const char *, ...); extern "C" unk32 func_02032784(unk32 param1); extern "C" unk32 func_ov000_0205c7ac(unk32, unk32); extern "C" bool func_ov000_0205c74c(unk32, unk32, unk32, unk32); @@ -55,20 +55,20 @@ void UnkDataStruct4::func_ov024_020d258c(u32 sceneIndex, u8 roomIndex) { sp10[0] = L'\0'; sp10[1] = L'\0'; - func_02026800(sp10, sizeof(sp10), "T%02d", roomIndex); + snprintf((char *) sp10, sizeof(sp10), "T%02d", roomIndex); sp34[0] = L'\0'; sp34[15] = L'\0'; pEntry = data_027e09a0->GetCourseEntry(sceneIndex); const char *string = "Map/%s/train%02d.bin"; - func_02026800(sp34, sizeof(sp34), string, pEntry->name, roomIndex); + snprintf((char *) sp34, sizeof(sp34), string, pEntry->name, roomIndex); UnkStruct2 sp24(NULL, 1); sp24.mUnk_04 = (char *) sp34; sp24.func_020154ec((char *) sp10); pEntry = data_027e09a0->GetCourseEntry(sceneIndex); - func_02026800(sp34, sizeof(sp34), "%s:ztb/%s_%02d.ztb", sp10, pEntry->name, roomIndex); + snprintf((char *) sp34, sizeof(sp34), "%s:ztb/%s_%02d.ztb", sp10, pEntry->name, roomIndex); UnkFileSystem3 sp14((char *) sp34); sp14.vfunc_08(0x10); diff --git a/src/024_MainGame/Train/UnkStruct_027e0d00_20.cpp b/src/024_MainGame/Train/UnkStruct_027e0d00_20.cpp index dc56b584..faf66506 100644 --- a/src/024_MainGame/Train/UnkStruct_027e0d00_20.cpp +++ b/src/024_MainGame/Train/UnkStruct_027e0d00_20.cpp @@ -4,7 +4,8 @@ #include "Unknown/UnkStruct_027e0d00.hpp" // clang-format on -extern "C" void func_02026800(void *, int, const char *, ...); +#include + extern const char *data_ov000_020aa244; // ".narc" extern const char *data_ov000_020aa24c; // ".bin" extern const char *data_ov000_020aa250[4]; @@ -24,11 +25,11 @@ DATA_ALIGN_FIX(); void UnkStruct_027e0d00_20::func_ov024_020d4e9c(wchar_t *param1, unk32 param2, bool param3) { const char *fileExt = param3 ? data_ov000_020aa24c : data_ov000_020aa244; - func_02026800(param1, 0x40, "%s/anim%s", data_ov024_020d8474[param2], fileExt); + snprintf((char *) param1, 0x40, "%s/anim%s", data_ov024_020d8474[param2], fileExt); } void UnkStruct_027e0d00_20::func_ov024_020d4edc(wchar_t *param1, wchar_t *param2, unk32 param3) { - func_02026800(param1, 0x40, "%s:/anm%s", param2, data_ov000_020aa250[param3]); + snprintf((char *) param1, 0x40, "%s:/anm%s", param2, data_ov000_020aa250[param3]); } UnkStruct_027e0d00_20::UnkStruct_027e0d00_20(unk32 param1, unk32 param2) : diff --git a/src/031_Land/Actor/ActorItemDrop.cpp b/src/031_Land/Actor/ActorItemDrop.cpp index 987b5c22..b074346e 100644 --- a/src/031_Land/Actor/ActorItemDrop.cpp +++ b/src/031_Land/Actor/ActorItemDrop.cpp @@ -10,7 +10,7 @@ #include "versions.h" extern "C" void func_01ffedac(u16 *, VecFx32 *); -extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0c *, VecFx32 *); +extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0C_Base *, VecFx32 *); extern "C" void func_ov000_0205c1f0(unk32 *, u16); extern "C" void func_ov000_0205c204(unk32 *, VecFx32 *, unk32, unk32, unk32); extern "C" void func_ov017_020bf99c(); diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp index 4ff8c897..da025ec3 100644 --- a/src/031_Land/Actor/ActorRupee.cpp +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -8,7 +8,7 @@ #include "Unknown/UnkStruct_027e0d34.hpp" extern "C" void func_01ffedac(u16 *, VecFx32 *); -extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0c *, VecFx32 *); +extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0C_Base *, VecFx32 *); extern "C" unk32 func_02017158(); extern "C" void func_ov017_020bf99c(); extern "C" void func_ov031_0210acd4(u8); @@ -472,7 +472,7 @@ void ActorRupee::func_ov031_020e9740() { unk32 sp4; unk32 *psp4; s32 temp_r2; - UnkStruct_027e0cd8_0c *temp_r0; + UnkStruct_027e0cd8_0C_Base *temp_r0; func_01ffedac(&sp0, &this->mPos); sp4 = 0; diff --git a/src/031_Land/Actor/ActorUnkNORE.cpp b/src/031_Land/Actor/ActorUnkNORE.cpp index dc6fd4f1..78cb5f67 100644 --- a/src/031_Land/Actor/ActorUnkNORE.cpp +++ b/src/031_Land/Actor/ActorUnkNORE.cpp @@ -19,7 +19,7 @@ ActorUnkNORE::ActorUnkNORE() {} bool ActorUnkNORE::vfunc_18(unk32 param1) { Vec2b local_vec; - UnkStruct_027e0cd8_0c *unk_obj = data_027e0cd8->mUnk_0C; + UnkStruct_027e0cd8_0C_Base *unk_obj = data_027e0cd8->mUnk_0C; func_01ffedac(&local_vec, &this->mPos); diff --git a/src/031_Land/MapObject/MapObjectChestBase.cpp b/src/031_Land/MapObject/MapObjectChestBase.cpp index d58b1324..bc9989e5 100644 --- a/src/031_Land/MapObject/MapObjectChestBase.cpp +++ b/src/031_Land/MapObject/MapObjectChestBase.cpp @@ -71,7 +71,7 @@ bool MapObjectChestBase::vfunc_00() { SET_FLAG(this->mFlags, MapObjFlag_9); this->mUnk_18[0] = 0x0D; - UnkStruct_027e0cd8_0c *pUVar2 = data_027e0cd8->mUnk_0C; + UnkStruct_027e0cd8_0C_Base *pUVar2 = data_027e0cd8->mUnk_0C; if (this->mUnk_20.mUnk_00[3] == 1) { this->mPos.x += 0x7FC; @@ -91,7 +91,7 @@ bool MapObjectChestBase::vfunc_00() { // non-matching void MapObjectChestBase::vfunc_04() { fx32 iVar2; - UnkStruct_027e0cd8_0c *pUVar5; + UnkStruct_027e0cd8_0C_Base *pUVar5; VecFx32 sp48; VecFx32 sp3C; VecFx32 local_38; diff --git a/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp b/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp index ed7d526b..2f85e85e 100644 --- a/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp +++ b/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp @@ -61,7 +61,7 @@ bool MapObjectDoorDangerSpawn::vfunc_00(void) { } void MapObjectDoorDangerSpawn::vfunc_04(void) { - UnkStruct_027e0cd8_0c *ptr; + UnkStruct_027e0cd8_0C_Base *ptr; VecFx32 auStack_20; if (this->mUnk_20.mUnk_00[1] == 2) { @@ -403,7 +403,7 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) { } bool MapObjectDoorDangerSpawn::vfunc_64(void) { - UnkStruct_027e0cd8_0c *pUVar4; + UnkStruct_027e0cd8_0C_Base *pUVar4; unk32 var_r0; bool var_r5; @@ -441,7 +441,7 @@ bool MapObjectDoorDangerSpawn::vfunc_64(void) { } bool MapObjectDoorDangerSpawn::vfunc_68(void) { - UnkStruct_027e0cd8_0c *pUVar2 = data_027e0cd8->mUnk_0C; + UnkStruct_027e0cd8_0C_Base *pUVar2 = data_027e0cd8->mUnk_0C; if (this->mUnk_20.mUnk_00[2] == 1) { if (func_ov000_0209d29c(1)) { @@ -466,7 +466,7 @@ bool MapObjectDoorDangerSpawn::vfunc_68(void) { } bool MapObjectDoorDangerSpawn::vfunc_6C(void) { - UnkStruct_027e0cd8_0c *pUVar5; + UnkStruct_027e0cd8_0C_Base *pUVar5; switch (this->mUnk_20.mUnk_00[1]) { case 1: @@ -520,7 +520,7 @@ bool MapObjectDoorDangerSpawn::vfunc_6C(void) { } bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) { - UnkStruct_027e0cd8_0c *pUVar4; + UnkStruct_027e0cd8_0C_Base *pUVar4; VecFx32 *uVar3; int iVar1; @@ -548,7 +548,7 @@ bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) { } pUVar4 = data_027e0cd8->mUnk_0C; - uVar3 = pUVar4->func_ov001_020b8a5c(data_027e09a4->func_ov000_02070560()->mSpawnIndex, 0); + uVar3 = (VecFx32 *) &pUVar4->func_ov001_020b8a5c(data_027e09a4->func_ov000_02070560()->mSpawnIndex, 0)->mUnk_00; if (pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], uVar3)) { return true; diff --git a/src/112_PlayerSceneChange/PlayerSceneChange.cpp b/src/112_PlayerSceneChange/PlayerSceneChange.cpp index 599d87f6..aebb1e66 100644 --- a/src/112_PlayerSceneChange/PlayerSceneChange.cpp +++ b/src/112_PlayerSceneChange/PlayerSceneChange.cpp @@ -416,7 +416,7 @@ void PlayerSceneChange::vfunc_0C(UnkStruct_PlayerGet_vfunc_0C_param1 *param1) { case 0x1E: case 0x1F: default: - UnkStruct_027e0cd8_0c *ptr = data_027e0cd8->mUnk_0C; + UnkStruct_027e0cd8_0C_Base *ptr = data_027e0cd8->mUnk_0C; switch (this->mUnk_68) { case 0x0F: @@ -682,9 +682,9 @@ void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { case 0x11: case 0x13: case 0x24: { - UnkStruct_027e0cd8_0c *temp_r0_13 = data_027e0cd8->mUnk_0C; - fx32 temp_r0_14 = temp_r0_13->vfunc_28(this->mUnk_34, 0, 0); - VecFx32 *temp_r2_9 = this->mUnk_34; + UnkStruct_027e0cd8_0C_Base *temp_r0_13 = data_027e0cd8->mUnk_0C; + fx32 temp_r0_14 = temp_r0_13->vfunc_28(this->mUnk_34, 0, 0); + VecFx32 *temp_r2_9 = this->mUnk_34; if (temp_r2_9->y < temp_r0_14) { temp_r2_9->y = temp_r0_14; diff --git a/src/Main/Game/GameModeManagerBase.cpp b/src/Main/Game/GameModeManagerBase.cpp index b6cef3b0..ba43621d 100644 --- a/src/Main/Game/GameModeManagerBase.cpp +++ b/src/Main/Game/GameModeManagerBase.cpp @@ -125,14 +125,14 @@ void GameModeManagerBase::func_0201875c(void) { } } -struct UnkStruct5 { +struct UnkStruct6 { void *a; unk32 b; }; void GameModeManagerBase::func_02018830(unk8 *param1) { unk32 id = this->mNextButtonID; - UnkStruct5 local_28; + UnkStruct6 local_28; local_28.a = param1; local_28.b = id; diff --git a/tools/configure.py b/tools/configure.py index 0ed047bf..30f702c2 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -192,7 +192,6 @@ config.libs = [ Object("001_SceneInit/UnkStruct_027e09b8_001.cpp"), Object("001_SceneInit/UnkStruct_027e0cd8_001.cpp"), Object("001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp"), - Object("001_SceneInit/UnkStruct_027e0cd8_0C_148_154_001.cpp"), Object("001_SceneInit/ZeldaArrangeBinary.cpp"), Object("001_SceneInit/ZeldaMapBinary.cpp"), Object("001_SceneInit/UnkStruct_027e095c_001.cpp"), diff --git a/tools/objdiff_config.py b/tools/objdiff_config.py index b44687c9..ca00aa19 100644 --- a/tools/objdiff_config.py +++ b/tools/objdiff_config.py @@ -39,6 +39,7 @@ class ConfigVersion: self.objdiff_json["watch_patterns"].append("*symbols.txt") self.objdiff_json["watch_patterns"].append("*delinks.txt") self.objdiff_json["watch_patterns"].append("*relocs.txt") + self.objdiff_json["watch_patterns"].append("libs/cpp/include/*") for i, unit_dict in enumerate(objdiff_json["units"]): if "name" in unit_dict: