From 5e934a8c9b24b4123cd18eb5951e2652ee913011 Mon Sep 17 00:00:00 2001 From: Yanis <35189056+Yanis002@users.noreply.github.com> Date: Tue, 9 Jun 2026 23:01:32 +0200 Subject: [PATCH] Decompile overlay 24 (Part 3) (#68) * name func_01ffd3d8 and func_01ffd400 * name func_01ffd3b0 * match func_ov024_020cf9d4 + improve the Random struct * UnkStruct_027e0cf8_00_0C_024 45% * match PassengerManager::GetRandomIndex * UnkStruct_027e0cf8_00_0C_024 OK * UnkStruct_027e0cf8_00_0C_024: do other sections * UnkStruct_027e0cf8_08_024 55% * cleanup: remplace delete into null by the delete macro * UnkStruct_027e0cf8_08_024 OK * fix build issues * UnkStruct_ov024_020d86a0_024 OK * PlayerActor_A0_38_024 .text OK, CreditsEndingType OK * tools: create courselist.py to convert .CLB data to yaml * UnkDataStruct4_14 OK * UnkDataStruct4 17% * UnkDataStruct4 OK * MiscAdvManager OK * PassengerManager OK * fix build issues * ZeldaTrainBinary OK * mark PassengerManager as complete and adjust delinks * UnkStruct_027e0cf8_08_00_024 OK * document more of UnkStruct_027e0ce0 * savefile hotfixes * UnkStruct_027e0ce0_34_024 OK * code_020d46b4_024 OK * UnkStruct_027e0d00 & UnkStruct_027e0d00_20 OK * code_020d51dc_024 OK * fix weird formatting * UnkTrainSystem1 OK * fix jp broken match * UnkTrainSystem2 OK * UnkStruct_027e0d08_024 31% * fix build issues * UnkStruct_027e0d08 OK!!! * remove useless parenthesis * ActorUnk_ov000_020a8bb0_EC OK * move ActorUnk_ov000_020a8bb0_EC to MainGame/Actor/ * ActorUnkOBPC OK * add sjiswrap support * solve remaining gaps and fix build issues * reorganise files + counter docs * tools: remove format command execution from defaults --- .gitignore | 1 + config/eur/arm9/delinks.txt | 16 +- config/eur/arm9/dtcm/symbols.txt | 2 +- config/eur/arm9/itcm/symbols.txt | 8 +- config/eur/arm9/overlays/ov000/relocs.txt | 4 +- config/eur/arm9/overlays/ov000/symbols.txt | 96 +- config/eur/arm9/overlays/ov001/delinks.txt | 3 + config/eur/arm9/overlays/ov001/symbols.txt | 24 +- config/eur/arm9/overlays/ov014/relocs.txt | 4 +- config/eur/arm9/overlays/ov017/symbols.txt | 4 +- config/eur/arm9/overlays/ov018/symbols.txt | 2 +- config/eur/arm9/overlays/ov024/delinks.txt | 139 ++- config/eur/arm9/overlays/ov024/relocs.txt | 26 +- config/eur/arm9/overlays/ov024/symbols.txt | 836 ++++++++--------- config/eur/arm9/overlays/ov026/symbols.txt | 8 +- config/eur/arm9/overlays/ov031/symbols.txt | 18 +- config/eur/arm9/overlays/ov088/symbols.txt | 2 +- config/eur/arm9/overlays/ov101/symbols.txt | 2 +- config/eur/arm9/symbols.txt | 14 +- config/jp/arm9/delinks.txt | 16 +- config/jp/arm9/dtcm/symbols.txt | 2 +- config/jp/arm9/itcm/symbols.txt | 8 +- config/jp/arm9/overlays/ov000/relocs.txt | 4 +- config/jp/arm9/overlays/ov000/symbols.txt | 120 +-- config/jp/arm9/overlays/ov001/delinks.txt | 3 + config/jp/arm9/overlays/ov001/symbols.txt | 24 +- config/jp/arm9/overlays/ov017/symbols.txt | 4 +- config/jp/arm9/overlays/ov018/symbols.txt | 2 +- config/jp/arm9/overlays/ov024/delinks.txt | 139 ++- config/jp/arm9/overlays/ov024/relocs.txt | 26 +- config/jp/arm9/overlays/ov024/symbols.txt | 848 +++++++++--------- config/jp/arm9/overlays/ov026/symbols.txt | 10 +- config/jp/arm9/overlays/ov031/symbols.txt | 18 +- config/jp/arm9/overlays/ov088/symbols.txt | 2 +- config/jp/arm9/overlays/ov101/symbols.txt | 2 +- config/jp/arm9/symbols.txt | 26 +- include/Actor/ActorRef.hpp | 5 + include/Actor/ActorUnkOBPC.hpp | 30 +- include/Actor/ActorUnk_ov000_020a8bb0.hpp | 57 +- include/Game/GameModeManager.hpp | 4 +- include/MainGame/AdventureMode.hpp | 35 +- include/MainGame/CargoManager.hpp | 6 + include/MainGame/MiscAdvManager.hpp | 7 +- include/MainGame/PassengerManager.hpp | 20 +- include/MainGame/UnkTrainSystems.hpp | 53 ++ include/MapObject/MapObject.hpp | 2 +- include/Physics/Cylinder.hpp | 5 +- include/Player/Player.hpp | 192 +++- include/Render/ModelRender.hpp | 51 +- include/Save/AdventureFlags.hpp | 1 + include/Save/SaveFile.hpp | 26 +- include/Save/SaveManager.hpp | 2 - include/System/Random.hpp | 89 +- include/Unknown/Common.hpp | 171 +++- ...ruct_020d8698.hpp => UICounterManager.hpp} | 51 +- include/Unknown/UnkStruct_027e0478.hpp | 35 - include/Unknown/UnkStruct_027e0960.hpp | 74 ++ include/Unknown/UnkStruct_027e0998.hpp | 5 +- include/Unknown/UnkStruct_027e09a0.hpp | 20 +- include/Unknown/UnkStruct_027e09a4.hpp | 23 +- include/Unknown/UnkStruct_027e09bc.hpp | 13 +- include/Unknown/UnkStruct_027e0cd8.hpp | 4 +- include/Unknown/UnkStruct_027e0ce0.hpp | 344 ++++++- include/Unknown/UnkStruct_027e0cf8.hpp | 178 +++- include/Unknown/UnkStruct_027e0d00.hpp | 111 ++- include/Unknown/UnkStruct_027e0d08.hpp | 47 + include/Unknown/UnkStruct_ov000_02067bc4.hpp | 8 +- include/Unknown/UnkStruct_ov000_0208f820.hpp | 12 +- include/Unknown/UnkStruct_ov000_020b50c0.hpp | 17 +- include/Unknown/UnkStruct_ov000_020b5214.hpp | 1 + include/Unknown/UnkStruct_ov000_020b5300.hpp | 6 +- include/Unknown/UnkStruct_ov024_020d86a0.hpp | 30 +- include/Unknown/UnkSystem1.hpp | 21 +- include/files.h | 155 +++- include/flags.h | 4 + include/global.h | 32 + include/iterator.hpp | 12 + include/math.hpp | 47 + libs/nitro/include/nitro/math.h | 12 +- libs/nitro/include/nitro/snd.h | 2 + src/000_Second/Actor/ActorUnkEFIK.cpp | 2 +- src/000_Second/Actor/ActorUnkSWOB.cpp | 6 +- src/000_Second/Actor/ActorUnkSWTM.cpp | 2 +- .../Actor/ActorUnk_ov000_020a8bb0.cpp | 67 +- src/000_Second/Item/ItemManager.cpp | 6 +- src/000_Second/Item/TreasureManager.cpp | 12 +- src/000_Second/MapObject/MapObject.cpp | 2 +- src/000_Second/MapObject/MapObjectProfile.cpp | 3 +- .../MapObjectProfile_Derived2_20.cpp | 4 +- .../MapObject/MapObjectSwitchStep.cpp | 8 +- src/000_Second/code_020657fc.cpp | 2 +- src/001_SceneInit/Actor/ActorManager_001.cpp | 10 +- src/001_SceneInit/CargoManager_001.cpp | 2 +- .../Game/AdventureModeManager_001.cpp | 100 +-- src/001_SceneInit/Item/ItemManager_001.cpp | 4 +- .../UnkStruct_027e0cf8_08_00_001.cpp | 75 ++ src/017_CourseExec/CargoManager_017.cpp | 26 +- src/018_StartUp/StartUpInitializers.cpp | 2 +- src/019_MainSelect/FileSelectManager.cpp | 15 +- src/019_MainSelect/FileSelectOptions.cpp | 7 +- src/019_MainSelect/FileSelectSubScreen.cpp | 12 +- src/019_MainSelect/GameModeFileSelect.cpp | 2 +- src/024_MainGame/Actor/ActorUnkOBPC.cpp | 172 +++- .../Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp | 301 +++++++ .../{Game => Actor}/UnkActorSystem1_024.cpp | 0 .../{Game => Actor}/UnkActorSystem2_024.cpp | 0 .../UnkStruct_ov024_020d8660_024.cpp} | 8 +- src/024_MainGame/CreditsEndingType.cpp | 11 + .../Game/AdventureModeManager_024.cpp | 84 +- .../Game/AdventureModeManager_160_024.cpp | 4 +- .../AdventureModeManager_174_Base_024.cpp | 6 +- .../Game/AdventureModeManager_180_024.cpp | 2 +- .../Game/AdventureModeManager_184_024.cpp | 33 +- .../Game/AdventureModeManager_18C_024.cpp | 8 +- .../Game/AdventureModeManager_190_024.cpp | 4 +- .../AdventureModeManager_1B8_Base_024.cpp | 8 +- .../Game/GameModeAdventure_024.cpp | 6 +- src/024_MainGame/MiscAdvManager.cpp | 29 +- .../Player/PlayerActor_A0_38_024.cpp | 142 +++ .../UnkStruct_ov024_020d8694_024.cpp | 4 +- .../UnkTitleCardSystem1_024.cpp | 6 +- .../{ => Train}/CargoManager_024.cpp | 4 + .../Train/MapObjectProfile_Derived5.cpp | 24 + .../{ => Train}/PassengerManager.cpp | 43 +- src/024_MainGame/Train/UnkDataStruct4.cpp | 425 +++++++++ src/024_MainGame/Train/UnkDataStruct4_14.cpp | 489 ++++++++++ .../Train/UnkStruct_027e0ce0_34_024.cpp | 262 ++++++ .../Train/UnkStruct_027e0cf8_00_0C_024.cpp | 716 +++++++++++++++ .../UnkStruct_027e0cf8_024.cpp | 43 +- .../Train/UnkStruct_027e0cf8_08_00_024.cpp | 133 +++ .../Train/UnkStruct_027e0cf8_08_024.cpp | 192 ++++ src/024_MainGame/Train/UnkStruct_027e0d00.cpp | 208 +++++ .../Train/UnkStruct_027e0d00_20.cpp | 81 ++ .../Train/UnkTrainSystem1_024.cpp | 177 ++++ .../Train/UnkTrainSystem2_024.cpp | 101 +++ src/024_MainGame/Train/code_020d51dc_024.cpp | 374 ++++++++ .../Train/data_ov024_020d8550.cpp | 15 + ..._020d8698_024.cpp => UICounterManager.cpp} | 319 ++++--- .../UnkStruct_027e0ce0_34_024.cpp | 0 .../UnkStruct_027e0cf8_00_0C_024.cpp | 0 .../UnkStruct_027e0cf8_08_024.cpp | 0 src/024_MainGame/UnkStruct_027e0d00.cpp | 0 src/024_MainGame/UnkStruct_027e0d08_024.cpp | 0 .../UnkStruct_ov024_020d86a0_024.cpp | 0 .../UnkAdventureModeSystem1_024.cpp | 0 .../UnkStruct_027e0998_024.cpp | 10 +- .../Unknown/UnkStruct_027e0d08_024.cpp | 200 +++++ .../Unknown/UnkStruct_ov024_020d86a0_024.cpp | 24 + src/024_MainGame/ZeldaTrainBinary.cpp | 128 +++ src/024_MainGame/code_020d16fc_024.cpp | 0 src/024_MainGame/code_020d24d4_024.cpp | 0 src/024_MainGame/code_020d3670_024.cpp | 0 src/024_MainGame/code_020d46b4_024.cpp | 0 src/024_MainGame/code_020d4e9c_024.cpp | 0 src/024_MainGame/code_020d51dc_024.cpp | 0 src/024_MainGame/code_020d54b0_024.cpp | 0 src/024_MainGame/code_020d5938_024.cpp | 0 src/024_MainGame/code_020d6650_024.cpp | 0 src/024_MainGame/data_ov024_020d7f40.cpp | 34 + src/025_Title/TitleScreenManager.cpp | 4 +- src/031_Land/Actor/ActorHeart.cpp | 2 +- src/031_Land/Actor/ActorRupee.cpp | 33 +- src/031_Land/MapObject/MapObjectDoorBase.cpp | 2 +- src/031_Land/MapObject/MapObjectDoorClick.cpp | 4 +- .../MapObject/MapObjectDoorDangerSpawn.cpp | 20 +- src/110_PlayerGet/PlayerGet.cpp | 39 +- .../PlayerSceneChange.cpp | 8 +- src/Main/System/Random.cpp | 4 +- src/Main/func_02017ea4.cpp | 4 +- tools/configure.py | 59 +- tools/courselist.py | 106 +++ tools/download_tool.py | 4 + tools/project.py | 21 +- 173 files changed, 7933 insertions(+), 2059 deletions(-) create mode 100644 include/MainGame/UnkTrainSystems.hpp rename include/Unknown/{UnkStruct_020d8698.hpp => UICounterManager.hpp} (87%) delete mode 100644 include/Unknown/UnkStruct_027e0478.hpp create mode 100644 include/Unknown/UnkStruct_027e0960.hpp create mode 100644 include/Unknown/UnkStruct_027e0d08.hpp create mode 100644 src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp create mode 100644 src/024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp rename src/024_MainGame/{Game => Actor}/UnkActorSystem1_024.cpp (100%) rename src/024_MainGame/{Game => Actor}/UnkActorSystem2_024.cpp (100%) rename src/024_MainGame/{Game/UnkStruct_ov000_020d8660_024.cpp => Actor/UnkStruct_ov024_020d8660_024.cpp} (95%) create mode 100644 src/024_MainGame/CreditsEndingType.cpp create mode 100644 src/024_MainGame/Player/PlayerActor_A0_38_024.cpp rename src/024_MainGame/{ => TitleCard}/UnkStruct_ov024_020d8694_024.cpp (98%) rename src/024_MainGame/{ => TitleCard}/UnkTitleCardSystem1_024.cpp (99%) rename src/024_MainGame/{ => Train}/CargoManager_024.cpp (79%) create mode 100644 src/024_MainGame/Train/MapObjectProfile_Derived5.cpp rename src/024_MainGame/{ => Train}/PassengerManager.cpp (91%) create mode 100644 src/024_MainGame/Train/UnkDataStruct4.cpp create mode 100644 src/024_MainGame/Train/UnkDataStruct4_14.cpp create mode 100644 src/024_MainGame/Train/UnkStruct_027e0ce0_34_024.cpp create mode 100644 src/024_MainGame/Train/UnkStruct_027e0cf8_00_0C_024.cpp rename src/024_MainGame/{Game => Train}/UnkStruct_027e0cf8_024.cpp (80%) create mode 100644 src/024_MainGame/Train/UnkStruct_027e0cf8_08_00_024.cpp create mode 100644 src/024_MainGame/Train/UnkStruct_027e0cf8_08_024.cpp create mode 100644 src/024_MainGame/Train/UnkStruct_027e0d00.cpp create mode 100644 src/024_MainGame/Train/UnkStruct_027e0d00_20.cpp create mode 100644 src/024_MainGame/Train/UnkTrainSystem1_024.cpp create mode 100644 src/024_MainGame/Train/UnkTrainSystem2_024.cpp create mode 100644 src/024_MainGame/Train/code_020d51dc_024.cpp create mode 100644 src/024_MainGame/Train/data_ov024_020d8550.cpp rename src/024_MainGame/{UnkStruct_020d8698_024.cpp => UICounterManager.cpp} (79%) delete mode 100644 src/024_MainGame/UnkStruct_027e0ce0_34_024.cpp delete mode 100644 src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp delete mode 100644 src/024_MainGame/UnkStruct_027e0cf8_08_024.cpp delete mode 100644 src/024_MainGame/UnkStruct_027e0d00.cpp delete mode 100644 src/024_MainGame/UnkStruct_027e0d08_024.cpp delete mode 100644 src/024_MainGame/UnkStruct_ov024_020d86a0_024.cpp rename src/024_MainGame/{ => Unknown}/UnkAdventureModeSystem1_024.cpp (100%) rename src/024_MainGame/{Game => Unknown}/UnkStruct_027e0998_024.cpp (92%) create mode 100644 src/024_MainGame/Unknown/UnkStruct_027e0d08_024.cpp create mode 100644 src/024_MainGame/Unknown/UnkStruct_ov024_020d86a0_024.cpp create mode 100644 src/024_MainGame/ZeldaTrainBinary.cpp delete mode 100644 src/024_MainGame/code_020d16fc_024.cpp delete mode 100644 src/024_MainGame/code_020d24d4_024.cpp delete mode 100644 src/024_MainGame/code_020d3670_024.cpp delete mode 100644 src/024_MainGame/code_020d46b4_024.cpp delete mode 100644 src/024_MainGame/code_020d4e9c_024.cpp delete mode 100644 src/024_MainGame/code_020d51dc_024.cpp delete mode 100644 src/024_MainGame/code_020d54b0_024.cpp delete mode 100644 src/024_MainGame/code_020d5938_024.cpp delete mode 100644 src/024_MainGame/code_020d6650_024.cpp create mode 100644 src/024_MainGame/data_ov024_020d7f40.cpp create mode 100644 tools/courselist.py diff --git a/.gitignore b/.gitignore index ca946b79..7c099bfa 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ m2c*.c nonmatchings/ .venv/ venv/ +tools/*.exe diff --git a/config/eur/arm9/delinks.txt b/config/eur/arm9/delinks.txt index 4fce80b0..26b32b43 100644 --- a/config/eur/arm9/delinks.txt +++ b/config/eur/arm9/delinks.txt @@ -71,6 +71,14 @@ libs/c/src/ansi_files.c: .data start:0x020446a8 end:0x0204478c .bss start:0x020517a0 end:0x02051aa0 +libs/c/src/float.c: + complete + .data start:0x0204478c end:0x02044790 + +libs/c/src/locale.c: + complete + .data start:0x02044790 end:0x020449ac + libs/c/src/arith.c: complete .text start:0x020338d4 end:0x020338ec @@ -117,14 +125,6 @@ libs/c/src/wmem.c: complete .text start:0x020341f8 end:0x02034230 -libs/c/src/float.c: - complete - .data start:0x0204478c end:0x02044790 - -libs/c/src/locale.c: - complete - .data start:0x02044790 end:0x020449ac - libs/c/src/wprintf.c: .text start:0x02034230 end:0x0203615c .data start:0x020449ac end:0x02044a2c diff --git a/config/eur/arm9/dtcm/symbols.txt b/config/eur/arm9/dtcm/symbols.txt index 26b74e6a..401c501f 100644 --- a/config/eur/arm9/dtcm/symbols.txt +++ b/config/eur/arm9/dtcm/symbols.txt @@ -74,7 +74,7 @@ data_027e0960 kind:bss addr:0x027e0960 data_027e0964 kind:bss addr:0x027e0964 data_027e0970 kind:bss addr:0x027e0970 data_027e0988 kind:bss addr:0x027e0988 -data_027e0994 kind:bss addr:0x027e0994 +gpCurrentGameModeMgr kind:bss addr:0x027e0994 data_027e0998 kind:bss addr:0x027e0998 data_027e099c kind:bss addr:0x027e099c data_027e09a0 kind:bss addr:0x027e09a0 diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 52c9041e..45b3f994 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -131,7 +131,7 @@ func_01ffc634 kind:function(arm,size=0xa0) addr:0x01ffc634 func_01ffc6d4 kind:function(arm,size=0x70) addr:0x01ffc6d4 func_01ffc744 kind:function(arm,size=0x24) addr:0x01ffc744 func_01ffc768 kind:function(arm,size=0x3c) addr:0x01ffc768 -func_01ffc7a4 kind:function(arm,size=0xb4) addr:0x01ffc7a4 +_ZN20ModelRender_Derived18vfunc_1CEP19UnkSystem4_vfunc_1C kind:function(arm,size=0xb4) addr:0x01ffc7a4 func_01ffc858 kind:function(arm,size=0x88) addr:0x01ffc858 func_01ffc8e0 kind:function(arm,size=0x2b4) addr:0x01ffc8e0 func_01ffcb94 kind:function(arm,size=0x98) addr:0x01ffcb94 @@ -153,9 +153,9 @@ func_01ffd1b4 kind:function(arm,size=0x64) addr:0x01ffd1b4 func_01ffd218 kind:function(arm,size=0x38) addr:0x01ffd218 func_01ffd250 kind:function(arm,size=0x44) addr:0x01ffd250 func_01ffd294 kind:function(arm,size=0x11c) addr:0x01ffd294 -func_01ffd3b0 kind:function(arm,size=0x28) addr:0x01ffd3b0 -_ZN18UnkStruct_027e09a413func_01ffd3d8Ev kind:function(arm,size=0x28) addr:0x01ffd3d8 -_ZNK18UnkStruct_027e09a413func_01ffd400Ev kind:function(arm,size=0x20) addr:0x01ffd400 +_ZN18UnkStruct_027e09a46IsLandEv kind:function(arm,size=0x28) addr:0x01ffd3b0 +_ZN18UnkStruct_027e09a47IsTrainEv kind:function(arm,size=0x28) addr:0x01ffd3d8 +_ZNK18UnkStruct_027e09a421GetCurrentCourseEntryEv kind:function(arm,size=0x20) addr:0x01ffd400 _ZN18UnkStruct_027e09b813func_01ffd420Ev kind:function(arm,size=0x1c) addr:0x01ffd420 func_01ffd43c kind:function(arm,size=0x60) addr:0x01ffd43c func_01ffd49c kind:function(arm,size=0x1a4) addr:0x01ffd49c diff --git a/config/eur/arm9/overlays/ov000/relocs.txt b/config/eur/arm9/overlays/ov000/relocs.txt index 9d7e4924..d2af4882 100644 --- a/config/eur/arm9/overlays/ov000/relocs.txt +++ b/config/eur/arm9/overlays/ov000/relocs.txt @@ -1774,7 +1774,7 @@ from:0x02066de8 kind:load to:0x027e0ce0 module:dtcm from:0x02066dec kind:load to:0x027e0d04 module:dtcm from:0x02066df0 kind:load to:0x020d78c0 module:overlay(24) from:0x02066df4 kind:load to:0x020b62a8 module:overlay(0) -from:0x02066df8 kind:load to:0x020d78c2 module:overlay(24) +from:0x02066df8 kind:load to:0x020d78c0 add:0x2 module:overlay(24) from:0x02066f6c kind:arm_call to:0x02067aa4 module:overlay(0) from:0x02066f98 kind:arm_call to:0x020d9834 module:overlay(31) from:0x02066fc4 kind:arm_call to:0x020d9748 module:overlay(31) @@ -1799,7 +1799,7 @@ from:0x02067220 kind:load to:0x027e0ce0 module:dtcm from:0x02067224 kind:load to:0x0204a060 module:main from:0x02067228 kind:load to:0x027e0d04 module:dtcm from:0x0206722c kind:load to:0x020b62a8 module:overlay(0) -from:0x02067230 kind:load to:0x020d78c2 module:overlay(24) +from:0x02067230 kind:load to:0x020d78c0 add:0x2 module:overlay(24) from:0x02067258 kind:arm_call to:0x020667b0 module:overlay(0) from:0x02067274 kind:load to:0x020b209c add:0x8 module:overlay(0) from:0x0206728c kind:arm_call to:0x020667b0 module:overlay(0) diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index b2257e28..cf2c8f73 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -109,7 +109,7 @@ func_ov000_02057d3c kind:function(arm,size=0x30) addr:0x02057d3c func_ov000_02057d6c kind:function(arm,size=0x18) addr:0x02057d6c _ZN11ModelRender8vfunc_20Ev kind:function(arm,size=0x18) addr:0x02057d84 func_ov000_02057d9c kind:function(arm,size=0x2c) addr:0x02057d9c -_ZN11ModelRender8vfunc_10Ev kind:function(arm,size=0x7c) addr:0x02057dc8 +_ZN11ModelRender8vfunc_10EP7VecFx32P5Mat3pS1_ kind:function(arm,size=0x7c) addr:0x02057dc8 _ZN11ModelRender8vfunc_14EP5Mat3pP7VecFx32 kind:function(arm,size=0x64) addr:0x02057e44 _ZN11ModelRender8vfunc_18Ev kind:function(arm,size=0x1c) addr:0x02057ea8 _ZN15ModelRenderBaseD1Ev kind:function(thumb,size=0x2) addr:0x02057ec4 @@ -150,9 +150,9 @@ _ZN33MapObjectProfile_Derived2_20_BaseD1Ev kind:function(thumb,size=0x48) addr:0 _ZN33MapObjectProfile_Derived2_20_BaseD0Ev kind:function(thumb,size=0x4c) addr:0x02058620 _ZN33MapObjectProfile_Derived2_20_BaseD2Ev kind:function(thumb,size=0x48) addr:0x0205866c _ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020586b4Eiiii kind:function(thumb,size=0x23c) addr:0x020586b4 -_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020588f0Ev kind:function(thumb,size=0x10) addr:0x020588f0 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020588f0EPviiS0_ kind:function(thumb,size=0x10) addr:0x020588f0 _ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058900Ev kind:function(thumb,size=0x12) addr:0x02058900 -_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058914Ei kind:function(thumb,size=0xd0) addr:0x02058914 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058914EPv kind:function(thumb,size=0xd0) addr:0x02058914 _ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020589e4Ev kind:function(thumb,size=0x40) addr:0x020589e4 _ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058a24Ev kind:function(arm,size=0x34) addr:0x02058a24 _ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058a58Ev kind:function(arm,size=0x2c) addr:0x02058a58 @@ -199,24 +199,24 @@ func_ov000_02059368 kind:function(thumb,size=0xec) addr:0x02059368 func_ov000_02059454 kind:function(thumb,size=0x1b0) addr:0x02059454 func_ov000_02059604 kind:function(thumb,size=0x110) addr:0x02059604 func_ov000_02059714 kind:function(thumb,size=0x64) addr:0x02059714 -func_ov000_02059778 kind:function(thumb,size=0x20) addr:0x02059778 -func_ov000_02059798 kind:function(thumb,size=0x2c) addr:0x02059798 -func_ov000_020597c4 kind:function(thumb,size=0x34) addr:0x020597c4 +_ZN32UnkStruct_027e0960_TableEntry_04C1Ev kind:function(thumb,size=0x20) addr:0x02059778 +_ZN32UnkStruct_027e0960_TableEntry_04D1Ev kind:function(thumb,size=0x2c) addr:0x02059798 +_ZN32UnkStruct_027e0960_TableEntry_04D0Ev kind:function(thumb,size=0x34) addr:0x020597c4 func_ov000_020597f8 kind:function(thumb,size=0x124) addr:0x020597f8 -func_ov000_0205991c kind:function(arm,size=0x20) addr:0x0205991c -func_ov000_0205993c kind:function(thumb,size=0x1c) addr:0x0205993c +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_0CEv kind:function(arm,size=0x20) addr:0x0205991c +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_08Ev kind:function(thumb,size=0x1c) addr:0x0205993c func_ov000_02059958 kind:function(thumb,size=0x288) addr:0x02059958 -func_ov000_02059be0 kind:function(thumb,size=0xa) addr:0x02059be0 -func_ov000_02059bec kind:function(thumb,size=0x44) addr:0x02059bec +_ZN29UnkStruct_027e0960_TableEntryC1Ev kind:function(thumb,size=0xa) addr:0x02059be0 +_ZN29UnkStruct_027e0960_TableEntryD1Ev kind:function(thumb,size=0x44) addr:0x02059bec func_ov000_02059c30 kind:function(arm,size=0x9c) addr:0x02059c30 -func_ov000_02059ccc kind:function(arm,size=0xa4) addr:0x02059ccc +_ZN29UnkStruct_027e0960_TableEntry19func_ov000_02059cccEhh kind:function(arm,size=0xa4) addr:0x02059ccc func_ov000_02059d70 kind:function(arm,size=0x34) addr:0x02059d70 func_ov000_02059da4 kind:function(arm,size=0xfc) addr:0x02059da4 func_ov000_02059ea0 kind:function(arm,size=0x1e4) addr:0x02059ea0 -func_ov000_0205a084 kind:function(arm,size=0xc) addr:0x0205a084 -func_ov000_0205a090 kind:function(arm,size=0xc) addr:0x0205a090 -func_ov000_0205a09c kind:function(arm,size=0xc) addr:0x0205a09c -func_ov000_0205a0a8 kind:function(arm,size=0x1c) addr:0x0205a0a8 +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_18Ev kind:function(arm,size=0xc) addr:0x0205a084 +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_14Ev kind:function(arm,size=0xc) addr:0x0205a090 +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_10Ev kind:function(arm,size=0xc) addr:0x0205a09c +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_1CEv kind:function(arm,size=0x1c) addr:0x0205a0a8 func_ov000_0205a0c4 kind:function(thumb,size=0x12) addr:0x0205a0c4 func_ov000_0205a0d8 kind:function(thumb,size=0x44) addr:0x0205a0d8 func_ov000_0205a11c kind:function(arm,size=0x4) addr:0x0205a11c @@ -230,24 +230,24 @@ func_ov000_0205a288 kind:function(arm,size=0x1c) addr:0x0205a288 func_ov000_0205a2a4 kind:function(arm,size=0x24) addr:0x0205a2a4 func_ov000_0205a2c8 kind:function(arm,size=0x54) addr:0x0205a2c8 func_ov000_0205a31c kind:function(arm,size=0x74) addr:0x0205a31c -func_ov000_0205a390 kind:function(arm,size=0x38) addr:0x0205a390 +_ZN18UnkStruct_027e096019func_ov000_0205a390Eh kind:function(arm,size=0x38) addr:0x0205a390 func_ov000_0205a3c8 kind:function(arm,size=0x34) addr:0x0205a3c8 -func_ov000_0205a3fc kind:function(arm,size=0x130) addr:0x0205a3fc +_ZN18UnkStruct_027e096019func_ov000_0205a3fcE7VecFx32i kind:function(arm,size=0x130) addr:0x0205a3fc func_ov000_0205a52c kind:function(arm,size=0xfc) addr:0x0205a52c func_ov000_0205a628 kind:function(arm,size=0x10) addr:0x0205a628 func_ov000_0205a638 kind:function(arm,size=0x14) addr:0x0205a638 func_ov000_0205a64c kind:function(arm,size=0x44) addr:0x0205a64c -func_ov000_0205a690 kind:function(arm,size=0x48) addr:0x0205a690 +_ZN20ModelRender_Derived1C2EP10G3d_Model_iPv kind:function(arm,size=0x48) addr:0x0205a690 func_ov000_0205a6d8 kind:function(arm,size=0x48) addr:0x0205a6d8 -func_ov000_0205a720 kind:function(arm,size=0x18) addr:0x0205a720 +_ZN20ModelRender_Derived18vfunc_08EP10G3d_Model_ kind:function(arm,size=0x18) addr:0x0205a720 func_ov000_0205a738 kind:function(arm,size=0x40) addr:0x0205a738 -func_ov000_0205a778 kind:function(arm,size=0x30) addr:0x0205a778 -func_ov000_0205a7a8 kind:function(arm,size=0x1c) addr:0x0205a7a8 +_ZN20ModelRender_Derived119func_ov000_0205a778EPKc kind:function(arm,size=0x30) addr:0x0205a778 +_ZN20ModelRender_Derived119func_ov000_0205a7a8Ei kind:function(arm,size=0x1c) addr:0x0205a7a8 func_ov000_0205a7c4 kind:function(arm,size=0x1c) addr:0x0205a7c4 func_ov000_0205a7e0 kind:function(arm,size=0x14) addr:0x0205a7e0 func_ov000_0205a7f4 kind:function(arm,size=0x10) addr:0x0205a7f4 -_ZN19func_ov000_0205a804D1Ev kind:function(arm,size=0x14) addr:0x0205a804 -_ZN19func_ov000_0205a818D0Ev kind:function(arm,size=0x1c) addr:0x0205a818 +_ZN20ModelRender_Derived1D1Ev kind:function(arm,size=0x14) addr:0x0205a804 +_ZN20ModelRender_Derived1D0Ev kind:function(arm,size=0x1c) addr:0x0205a818 func_ov000_0205a834 kind:function(thumb,size=0xaa) addr:0x0205a834 func_ov000_0205a8e0 kind:function(thumb,size=0x64) addr:0x0205a8e0 func_ov000_0205a944 kind:function(thumb,size=0xc) addr:0x0205a944 @@ -338,7 +338,7 @@ func_ov000_0205c8f0 kind:function(arm,size=0x14) addr:0x0205c8f0 _ZN18UnkStruct_027e0ce019func_ov000_0205c904Ev kind:function(arm,size=0x14) addr:0x0205c904 func_ov000_0205c918 kind:function(arm,size=0x14) addr:0x0205c918 func_ov000_0205c92c kind:function(arm,size=0x18) addr:0x0205c92c -_ZN18UnkStruct_027e0d0019func_ov000_0205c944Ev kind:function(arm,size=0x10) addr:0x0205c944 +_ZN18UnkStruct_027e0d0011GetInstanceEv kind:function(arm,size=0x10) addr:0x0205c944 func_ov000_0205c954 kind:function(arm,size=0x18) addr:0x0205c954 func_ov000_0205c96c kind:function(arm,size=0x18) addr:0x0205c96c func_ov000_0205c984 kind:function(arm,size=0x14) addr:0x0205c984 @@ -487,7 +487,7 @@ func_ov000_0206176c kind:function(thumb,size=0xbc) addr:0x0206176c func_ov000_02061828 kind:function(thumb,size=0x28) addr:0x02061828 _ZN23UnkStruct_027e0998_Base19func_ov000_02061850Ei kind:function(arm,size=0x18) addr:0x02061850 _ZN23UnkStruct_027e0998_Base8vfunc_00EP7VecFx32P5Vec2sPt kind:function(arm,size=0x1e0) addr:0x02061868 -func_ov000_02061a48 kind:function(arm,size=0x28) addr:0x02061a48 +_ZN23UnkStruct_027e0998_Base19func_ov000_02061a48EP7VecFx32P5Vec2sS3_ kind:function(arm,size=0x28) addr:0x02061a48 _ZN23UnkStruct_027e0998_Base19func_ov000_02061a70Ev kind:function(arm,size=0xc) addr:0x02061a70 func_ov000_02061a7c kind:function(arm,size=0x10) addr:0x02061a7c _ZN26GameModeManagerBase_104_0CD1Ev kind:function(arm,size=0x18) addr:0x02061a8c @@ -735,7 +735,7 @@ _ZN24UnkStruct_ov000_020b504c19func_ov000_02067e60Ehi kind:function(arm,size=0xf _ZN24UnkStruct_ov000_020b504c19func_ov000_02067f5cEi kind:function(arm,size=0x2c) addr:0x02067f5c _ZN24UnkStruct_ov000_020b504c19func_ov000_02067f88Eii kind:function(arm,size=0xe0) addr:0x02067f88 _ZN24UnkStruct_ov000_020b504c19func_ov000_02068068Ei kind:function(arm,size=0x14) addr:0x02068068 -_ZN24UnkStruct_ov000_020b504c19func_ov000_0206807cEPvS0_ kind:function(arm,size=0x48) addr:0x0206807c +_ZN24UnkStruct_ov000_020b504c19func_ov000_0206807cEiPv kind:function(arm,size=0x48) addr:0x0206807c func_ov000_020680c4 kind:function(arm,size=0xd0) addr:0x020680c4 func_ov000_02068194 kind:function(arm,size=0x98) addr:0x02068194 func_ov000_0206822c kind:function(arm,size=0x94) addr:0x0206822c @@ -810,12 +810,12 @@ func_ov000_0206a2f8 kind:function(arm,size=0x210) addr:0x0206a2f8 func_ov000_0206a508 kind:function(arm,size=0x24) addr:0x0206a508 func_ov000_0206a52c kind:function(arm,size=0x94) addr:0x0206a52c func_ov000_0206a5c0 kind:function(arm,size=0xc) addr:0x0206a5c0 -func_ov000_0206a5cc kind:function(arm,size=0xc) addr:0x0206a5cc +_ZN24UnkStruct_ov000_020b50c019func_ov000_0206a5ccEi kind:function(arm,size=0xc) addr:0x0206a5cc _ZN24UnkStruct_ov000_020b50c019func_ov000_0206a5d8Ei kind:function(arm,size=0x24) addr:0x0206a5d8 -func_ov000_0206a5fc kind:function(arm,size=0xa8) addr:0x0206a5fc +_ZN24UnkStruct_ov000_020b50c019func_ov000_0206a5fcEv kind:function(arm,size=0xa8) addr:0x0206a5fc _ZN24UnkStruct_ov000_020b50c019func_ov000_0206a6a4Ei kind:function(arm,size=0x60) addr:0x0206a6a4 func_ov000_0206a704 kind:function(arm,size=0x3c) addr:0x0206a704 -func_ov000_0206a740 kind:function(arm,size=0x18) addr:0x0206a740 +_ZN24UnkStruct_ov000_020b50c019func_ov000_0206a740Ev kind:function(arm,size=0x18) addr:0x0206a740 _ZN24UnkStruct_ov000_020b50c019func_ov000_0206a758Ev kind:function(arm,size=0x24) addr:0x0206a758 _ZN24UnkStruct_ov000_020b50c019func_ov000_0206a77cEv kind:function(arm,size=0x28) addr:0x0206a77c func_ov000_0206a7a4 kind:function(arm,size=0x8c) addr:0x0206a7a4 @@ -914,7 +914,7 @@ func_ov000_0206da7c kind:function(arm,size=0x18) addr:0x0206da7c func_ov000_0206da94 kind:function(arm,size=0xb0) addr:0x0206da94 _ZN24UnkStruct_ov000_020b521419func_ov000_0206db44Ei kind:function(arm,size=0xc8) addr:0x0206db44 func_ov000_0206dc0c kind:function(arm,size=0x40) addr:0x0206dc0c -func_ov000_0206dc4c kind:function(arm,size=0x14) addr:0x0206dc4c +_ZN24UnkStruct_ov000_020b521419func_ov000_0206dc4cEi kind:function(arm,size=0x14) addr:0x0206dc4c func_ov000_0206dc60 kind:function(arm,size=0x54) addr:0x0206dc60 func_ov000_0206dcb4 kind:function(arm,size=0x58) addr:0x0206dcb4 func_ov000_0206dd0c kind:function(arm,size=0x180) addr:0x0206dd0c @@ -985,7 +985,7 @@ func_ov000_02070120 kind:function(arm,size=0x14) addr:0x02070120 func_ov000_02070134 kind:function(arm,size=0x14) addr:0x02070134 func_ov000_02070148 kind:function(arm,size=0x1c) addr:0x02070148 func_ov000_02070164 kind:function(arm,size=0xfc) addr:0x02070164 -func_ov000_02070260 kind:function(arm,size=0x3c) addr:0x02070260 +_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_027e09a017GetRoomEntryIndexEv kind:function(arm,size=0x40) addr:0x020702bc @@ -1251,9 +1251,9 @@ func_ov000_020780fc kind:function(arm,size=0x8c) addr:0x020780fc func_ov000_02078188 kind:function(arm,size=0x4c) addr:0x02078188 func_ov000_020781d4 kind:function(arm,size=0x14) addr:0x020781d4 func_ov000_020781e8 kind:function(arm,size=0x48) addr:0x020781e8 -_ZN21UnkStruct_027e09bc_0c19func_ov000_02078230Ei kind:function(arm,size=0xe4) addr:0x02078230 +_ZN21UnkStruct_027e09bc_0C19func_ov000_02078230Ei kind:function(arm,size=0xe4) addr:0x02078230 func_ov000_02078314 kind:function(arm,size=0x38) addr:0x02078314 -_ZN21UnkStruct_027e09bc_0c19func_ov000_0207834cEP7VecFx32ii kind:function(arm,size=0x40) addr:0x0207834c +_ZN21UnkStruct_027e09bc_0C19func_ov000_0207834cEP7VecFx32ii kind:function(arm,size=0x40) addr:0x0207834c func_ov000_0207838c kind:function(arm,size=0x70) addr:0x0207838c func_ov000_020783fc kind:function(arm,size=0x88) addr:0x020783fc func_ov000_02078484 kind:function(arm,size=0x40) addr:0x02078484 @@ -1270,7 +1270,7 @@ func_ov000_020786dc kind:function(arm,size=0x2c) addr:0x020786dc func_ov000_02078708 kind:function(arm,size=0x24) addr:0x02078708 func_ov000_0207872c kind:function(arm,size=0x1c) addr:0x0207872c func_ov000_02078748 kind:function(arm,size=0x1c) addr:0x02078748 -_ZN21UnkStruct_027e09bc_0c19func_ov000_02078764EP7VecFx32Pvi kind:function(arm,size=0x54) addr:0x02078764 +_ZN21UnkStruct_027e09bc_0C19func_ov000_02078764EP7VecFx32Pvi kind:function(arm,size=0x54) addr:0x02078764 func_ov000_020787b8 kind:function(arm,size=0x7c) addr:0x020787b8 func_ov000_02078834 kind:function(arm,size=0x9c) addr:0x02078834 func_ov000_020788d0 kind:function(arm,size=0x68) addr:0x020788d0 @@ -1413,9 +1413,9 @@ func_ov000_0207bd84 kind:function(arm,size=0x260) addr:0x0207bd84 func_ov000_0207bfe4 kind:function(arm,size=0x4) addr:0x0207bfe4 _ZN19func_ov000_0207bfe8D0Ev kind:function(arm,size=0x14) addr:0x0207bfe8 func_ov000_0207bffc kind:function(arm,size=0x4) addr:0x0207bffc -func_ov000_0207c000 kind:function(arm,size=0x8) addr:0x0207c000 -func_ov000_0207c008 kind:function(arm,size=0x8) addr:0x0207c008 -func_ov000_0207c010 kind:function(arm,size=0x8) addr:0x0207c010 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_08Ev kind:function(arm,size=0x8) addr:0x0207c000 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEv kind:function(arm,size=0x8) addr:0x0207c008 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_10Ev kind:function(arm,size=0x8) addr:0x0207c010 _ZN17MapObject_10_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207c018 func_ov000_0207c048 kind:function(arm,size=0x30) addr:0x0207c048 func_ov000_0207c078 kind:function(arm,size=0x38) addr:0x0207c078 @@ -1496,9 +1496,9 @@ _ZN19func_ov000_0207ed10D2Ev kind:function(arm,size=0x30) addr:0x0207ed10 func_ov000_0207ed40 kind:function(arm,size=0x44) addr:0x0207ed40 func_ov000_0207ed84 kind:function(arm,size=0x8) addr:0x0207ed84 func_ov000_0207ed8c kind:function(arm,size=0x20) addr:0x0207ed8c -_ZN26ActorUnk_ov000_020a8bb0_94C1Ev kind:function(arm,size=0x20) addr:0x0207edac +_ZN26ActorUnk_ov000_020a8bb0_94C2Ev kind:function(arm,size=0x20) addr:0x0207edac func_ov000_0207edcc kind:function(arm,size=0x1c) addr:0x0207edcc -_ZN26ActorUnk_ov000_020a8bb0_94D1Ev kind:function(arm,size=0x30) addr:0x0207ede8 +_ZN26ActorUnk_ov000_020a8bb0_94D2Ev kind:function(arm,size=0x30) addr:0x0207ede8 _ZN19func_ov000_0207ee18D0Ev kind:function(arm,size=0x38) addr:0x0207ee18 _ZN19func_ov000_0207ee50D2Ev kind:function(arm,size=0x30) addr:0x0207ee50 func_ov000_0207ee80 kind:function(arm,size=0x4) addr:0x0207ee80 @@ -1633,7 +1633,7 @@ func_ov000_02081ca0 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 -_ZN18UnkStruct_027e0cd819func_ov000_02081d7cEiii kind:function(arm,size=0xb4) addr:0x02081d7c +_ZN18UnkStruct_027e0cd819func_ov000_02081d7cEiib kind:function(arm,size=0xb4) addr:0x02081d7c _ZN18UnkStruct_027e0cd819func_ov000_02081e30Eii kind:function(arm,size=0x8c) addr:0x02081e30 func_ov000_02081ebc kind:function(arm,size=0x10) addr:0x02081ebc _ZN18UnkStruct_027e0cd819func_ov000_02081eccEsi kind:function(arm,size=0x10) addr:0x02081ecc @@ -1761,7 +1761,7 @@ func_ov000_020861a0 kind:function(arm,size=0xf8) addr:0x020861a0 func_ov000_02086298 kind:function(arm,size=0x16c) addr:0x02086298 func_ov000_02086404 kind:function(arm,size=0xf4) addr:0x02086404 func_ov000_020864f8 kind:function(arm,size=0x114) addr:0x020864f8 -func_ov000_0208660c kind:function(thumb,size=0xf8) addr:0x0208660c +_ZN14PlayerActor_9CC1Ev kind:function(thumb,size=0xf8) addr:0x0208660c func_ov000_02086704 kind:function(thumb,size=0x54) addr:0x02086704 func_ov000_02086758 kind:function(arm,size=0x9c) addr:0x02086758 func_ov000_020867f4 kind:function(arm,size=0x3c) addr:0x020867f4 @@ -2114,7 +2114,7 @@ func_ov000_0209167c kind:function(arm,size=0x40) addr:0x0209167c _ZN19func_ov000_020916bcD0Ev kind:function(arm,size=0x48) addr:0x020916bc func_ov000_02091704 kind:function(arm,size=0xe4) addr:0x02091704 func_ov000_020917e8 kind:function(arm,size=0x4c4) addr:0x020917e8 -func_ov000_02091cac kind:function(thumb,size=0x1f4) addr:0x02091cac +_ZN14PlayerActor_A0C1Ev kind:function(thumb,size=0x1f4) addr:0x02091cac func_ov000_02091ea0 kind:function(arm,size=0x18) addr:0x02091ea0 func_ov000_02091eb8 kind:function(arm,size=0x50) addr:0x02091eb8 func_ov000_02091f08 kind:function(arm,size=0x28) addr:0x02091f08 @@ -2565,7 +2565,7 @@ _ZN9MapObject8vfunc_2CEP7VecFx32 kind:function(arm,size=0x40) addr:0x0209d1ec _ZN9MapObject19func_ov000_0209d22cEPsPS_i kind:function(arm,size=0x48) addr:0x0209d22c _ZN9MapObject19func_ov000_0209d274Ei kind:function(arm,size=0x28) addr:0x0209d274 _ZN9MapObject19func_ov000_0209d29cEi kind:function(arm,size=0x28) addr:0x0209d29c -_ZN9MapObject19func_ov000_0209d2c4Eii kind:function(arm,size=0x2c) addr:0x0209d2c4 +_ZN9MapObject19func_ov000_0209d2c4Eib kind:function(arm,size=0x2c) addr:0x0209d2c4 _ZN9MapObject19func_ov000_0209d2f0EiiP5Vec2b kind:function(arm,size=0xc4) addr:0x0209d2f0 _ZN9MapObject19func_ov000_0209d3b4Eii kind:function(arm,size=0x80) addr:0x0209d3b4 _ZN9MapObject19func_ov000_0209d434EPcP34UnkStruct_ov019_020d24c8_28_258_00i kind:function(arm,size=0xe4) addr:0x0209d434 @@ -2656,12 +2656,12 @@ func_ov000_0209f9c8 kind:function(arm,size=0x24) addr:0x0209f9c8 func_ov000_0209f9ec kind:function(arm,size=0x24) addr:0x0209f9ec func_ov000_0209fa10 kind:function(arm,size=0x58) addr:0x0209fa10 func_ov000_0209fa68 kind:function(arm,size=0x58) addr:0x0209fa68 -func_ov000_0209fac0 kind:function(arm,size=0x58) addr:0x0209fac0 -func_ov000_0209fb18 kind:function(arm,size=0x44) addr:0x0209fb18 -_ZN19func_ov000_0209fb5cD0Ev kind:function(arm,size=0x4c) addr:0x0209fb5c +_ZN25UnkSystem1_ov000_Derived2C1Ei kind:function(arm,size=0x58) addr:0x0209fac0 +_ZN25UnkSystem1_ov000_Derived2D1Ev kind:function(arm,size=0x44) addr:0x0209fb18 +_ZN25UnkSystem1_ov000_Derived2D0Ev kind:function(arm,size=0x4c) addr:0x0209fb5c func_ov000_0209fba8 kind:function(arm,size=0x44) addr:0x0209fba8 -func_ov000_0209fbec kind:function(arm,size=0xf0) addr:0x0209fbec -func_ov000_0209fcdc kind:function(arm,size=0x78) addr:0x0209fcdc +_ZN25UnkSystem1_ov000_Derived28vfunc_08Ei kind:function(arm,size=0xf0) addr:0x0209fbec +_ZN25UnkSystem1_ov000_Derived28vfunc_0CEv kind:function(arm,size=0x78) addr:0x0209fcdc func_ov000_0209fd54 kind:function(arm,size=0x5c) addr:0x0209fd54 func_ov000_0209fdb0 kind:function(arm,size=0x30) addr:0x0209fdb0 func_ov000_0209fde0 kind:function(arm,size=0x74) addr:0x0209fde0 diff --git a/config/eur/arm9/overlays/ov001/delinks.txt b/config/eur/arm9/overlays/ov001/delinks.txt index c61bcce4..b5d37133 100644 --- a/config/eur/arm9/overlays/ov001/delinks.txt +++ b/config/eur/arm9/overlays/ov001/delinks.txt @@ -20,6 +20,9 @@ src/001_SceneInit/CargoManager_001.cpp: src/001_SceneInit/PassengerManager_001.cpp: .text start:0x020bf870 end:0x020bfa50 +src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp: + .text start:0x020bfa50 end:0x020bfcc0 + src/001_SceneInit/Game/AdventureModeManager_001.cpp: .text start:0x020bff74 end:0x020c0944 diff --git a/config/eur/arm9/overlays/ov001/symbols.txt b/config/eur/arm9/overlays/ov001/symbols.txt index 65ce0ab2..8910a8a3 100644 --- a/config/eur/arm9/overlays/ov001/symbols.txt +++ b/config/eur/arm9/overlays/ov001/symbols.txt @@ -197,7 +197,7 @@ _ZN11ItemManager19func_ov001_020bb9f8Ev kind:function(thumb,size=0x5c) addr:0x02 func_ov001_020bba54 kind:function(thumb,size=0x18) addr:0x020bba54 func_ov001_020bba6c kind:function(thumb,size=0x58) addr:0x020bba6c func_ov001_020bbac4 kind:function(thumb,size=0x5c) addr:0x020bbac4 -func_ov001_020bbb20 kind:function(thumb,size=0x260) addr:0x020bbb20 +_ZN18PlayerActorBase_70C1Ev kind:function(thumb,size=0x260) addr:0x020bbb20 func_ov001_020bbd80 kind:function(thumb,size=0x96) addr:0x020bbd80 func_ov001_020bbe18 kind:function(thumb,size=0x4c) addr:0x020bbe18 func_ov001_020bbe64 kind:function(thumb,size=0x7c) addr:0x020bbe64 @@ -209,7 +209,7 @@ func_ov001_020bbf24 kind:function(thumb,size=0x2a) addr:0x020bbf24 func_ov001_020bbf50 kind:function(thumb,size=0x2a) addr:0x020bbf50 func_ov001_020bbf7c kind:function(thumb,size=0x50) addr:0x020bbf7c func_ov001_020bbfcc kind:function(thumb,size=0x5a) addr:0x020bbfcc -func_ov001_020bc028 kind:function(thumb,size=0x88) addr:0x020bc028 +_ZN26UnkStruct_027e0ce0_40_BaseC2Ev kind:function(thumb,size=0x88) addr:0x020bc028 func_ov001_020bc0b0 kind:function(thumb,size=0x30) addr:0x020bc0b0 func_ov001_020bc0e0 kind:function(thumb,size=0x154) addr:0x020bc0e0 func_ov001_020bc234 kind:function(thumb,size=0x16) addr:0x020bc234 @@ -235,18 +235,18 @@ func_ov001_020bc75c kind:function(thumb,size=0xc) addr:0x020bc75c func_ov001_020bc768 kind:function(thumb,size=0x20) addr:0x020bc768 func_ov001_020bc788 kind:function(thumb,size=0xc) addr:0x020bc788 func_ov001_020bc794 kind:function(thumb,size=0x8c) addr:0x020bc794 -func_ov001_020bc820 kind:function(thumb,size=0x124) addr:0x020bc820 +_ZN15PlayerActorBaseC2Ev kind:function(thumb,size=0x124) addr:0x020bc820 func_ov001_020bc944 kind:function(thumb,size=0x28) addr:0x020bc944 func_ov001_020bc96c kind:function(thumb,size=0x2e) addr:0x020bc96c -func_ov001_020bc99c kind:function(thumb,size=0x138) addr:0x020bc99c -func_ov001_020bcad4 kind:function(thumb,size=0xc) addr:0x020bcad4 +_ZN11PlayerActorC1Ev kind:function(thumb,size=0x138) addr:0x020bc99c +_ZN15PlayerActor_1B0D1Ev kind:function(thumb,size=0xc) addr:0x020bcad4 func_ov001_020bcae0 kind:function(thumb,size=0x80) addr:0x020bcae0 func_ov001_020bcb60 kind:function(thumb,size=0x10) addr:0x020bcb60 func_ov001_020bcb70 kind:function(thumb,size=0x36) addr:0x020bcb70 func_ov001_020bcba8 kind:function(thumb,size=0x26) addr:0x020bcba8 func_ov001_020bcbd0 kind:function(thumb,size=0x98) addr:0x020bcbd0 func_ov001_020bcc68 kind:function(thumb,size=0x20) addr:0x020bcc68 -func_ov001_020bcc88 kind:function(thumb,size=0xc) addr:0x020bcc88 +_ZN15PlayerActor_1B0C1Ev kind:function(thumb,size=0xc) addr:0x020bcc88 func_ov001_020bcc94 kind:function(thumb,size=0xc) addr:0x020bcc94 func_ov001_020bcca0 kind:function(thumb,size=0x46) addr:0x020bcca0 func_ov001_020bcce8 kind:function(thumb,size=0x2) addr:0x020bcce8 @@ -273,7 +273,7 @@ func_ov001_020bd728 kind:function(thumb,size=0xc) addr:0x020bd728 _ZN23GameModeManagerBase_00419func_ov001_020bd734EPi kind:function(thumb,size=0x50) addr:0x020bd734 _ZN23GameModeManagerBase_00419func_ov001_020bd784Ev kind:function(thumb,size=0x3c) addr:0x020bd784 func_ov001_020bd7c0 kind:function(thumb,size=0x8) addr:0x020bd7c0 -func_ov001_020bd7c8 kind:function(thumb,size=0x32) addr:0x020bd7c8 +_ZN24UnkStruct_ov024_020d86a0C1Ev kind:function(thumb,size=0x32) addr:0x020bd7c8 _ZN24UnkStruct_ov024_020d86a0D1Ev kind:function(thumb,size=0x1a) addr:0x020bd7fc _ZN24UnkStruct_ov024_020d86a019func_ov001_020bd818Ev kind:function(thumb,size=0x24) addr:0x020bd818 func_ov001_020bd83c kind:function(thumb,size=0xc) addr:0x020bd83c @@ -375,8 +375,8 @@ func_ov001_020bf3fc kind:function(thumb,size=0x2c) addr:0x020bf3fc func_ov001_020bf428 kind:function(arm,size=0x2c) addr:0x020bf428 func_ov001_020bf454 kind:function(arm,size=0x2c) addr:0x020bf454 func_ov001_020bf480 kind:function(arm,size=0x2c) addr:0x020bf480 -func_ov001_020bf4ac kind:function(thumb,size=0x76) addr:0x020bf4ac -func_ov001_020bf524 kind:function(thumb,size=0xc) addr:0x020bf524 +_ZN18UnkStruct_027e0d00C1Ev kind:function(thumb,size=0x76) addr:0x020bf4ac +_ZN18UnkStruct_027e0d00D1Ev kind:function(thumb,size=0xc) addr:0x020bf524 func_ov001_020bf530 kind:function(thumb,size=0x38) addr:0x020bf530 func_ov001_020bf568 kind:function(thumb,size=0x28) addr:0x020bf568 func_ov001_020bf590 kind:function(thumb,size=0x10c) addr:0x020bf590 @@ -401,9 +401,9 @@ _ZN16PassengerManager19func_ov001_020bf910Ev kind:function(thumb,size=0x10c) add _ZN16PassengerManager19func_ov001_020bfa1cEv kind:function(thumb,size=0x1c) addr:0x020bfa1c _ZN8InstanceI16PassengerManagerEC2Ev kind:function(thumb,size=0xc) addr:0x020bfa38 _ZN8InstanceI16PassengerManagerED2Ev kind:function(thumb,size=0xc) addr:0x020bfa44 -func_ov001_020bfa50 kind:function(thumb,size=0xc2) addr:0x020bfa50 -func_ov001_020bfb14 kind:function(thumb,size=0xc) addr:0x020bfb14 -func_ov001_020bfb20 kind:function(thumb,size=0x1a0) addr:0x020bfb20 +_ZN24UnkStruct_027e0cf8_08_00C1Eh kind:function(thumb,size=0xc2) addr:0x020bfa50 +_ZN24UnkStruct_027e0cf8_08_00D1Ev kind:function(thumb,size=0xc) addr:0x020bfb14 +_ZN24UnkStruct_027e0cf8_08_0019func_ov001_020bfb20Ev kind:function(thumb,size=0x1a0) addr:0x020bfb20 func_ov001_020bfcc0 kind:function(thumb,size=0x30) addr:0x020bfcc0 func_ov001_020bfcf0 kind:function(thumb,size=0x30) addr:0x020bfcf0 func_ov001_020bfd20 kind:function(thumb,size=0x34) addr:0x020bfd20 diff --git a/config/eur/arm9/overlays/ov014/relocs.txt b/config/eur/arm9/overlays/ov014/relocs.txt index 096c23e4..3cb9c89e 100644 --- a/config/eur/arm9/overlays/ov014/relocs.txt +++ b/config/eur/arm9/overlays/ov014/relocs.txt @@ -247,7 +247,7 @@ from:0x020b779e kind:thumb_call to:0x020b763c module:overlay(14) from:0x020b77a8 kind:thumb_call to:0x020b75f0 module:overlay(14) from:0x020b77b4 kind:thumb_call_arm to:0x020d64a8 module:overlay(24) from:0x020b77c4 kind:thumb_call to:0x020b76b8 module:overlay(14) -from:0x020b77d6 kind:thumb_call_arm to:0x020d64a0 module:overlays(20,24) +from:0x020b77d6 kind:thumb_call_arm to:0x020d64a0 module:overlay(24) from:0x020b77de kind:thumb_call to:0x020b7e04 module:overlay(14) from:0x020b77f4 kind:load to:0x020d86b0 module:overlay(24) from:0x020b77fc kind:thumb_call to:0x020b7600 module:overlay(14) @@ -256,7 +256,7 @@ from:0x020b780e kind:thumb_call to:0x020b763c module:overlay(14) from:0x020b7818 kind:thumb_call to:0x020b7600 module:overlay(14) from:0x020b7824 kind:thumb_call_arm to:0x020d64a8 module:overlay(24) from:0x020b7836 kind:thumb_call to:0x020b76b8 module:overlay(14) -from:0x020b7850 kind:thumb_call_arm to:0x020d64a0 module:overlays(20,24) +from:0x020b7850 kind:thumb_call_arm to:0x020d64a0 module:overlay(24) from:0x020b785a kind:thumb_call to:0x020b7e04 module:overlay(14) from:0x020b786c kind:load to:0x020d86b0 module:overlay(24) from:0x020b7898 kind:thumb_call to:0x020b7f80 module:overlay(14) diff --git a/config/eur/arm9/overlays/ov017/symbols.txt b/config/eur/arm9/overlays/ov017/symbols.txt index 0d78e9ec..960a4822 100644 --- a/config/eur/arm9/overlays/ov017/symbols.txt +++ b/config/eur/arm9/overlays/ov017/symbols.txt @@ -145,8 +145,8 @@ func_ov017_020c30b0 kind:function(arm,size=0x34) addr:0x020c30b0 func_ov017_020c30e4 kind:function(arm,size=0x34) addr:0x020c30e4 func_ov017_020c3118 kind:function(arm,size=0x24) addr:0x020c3118 func_ov017_020c313c kind:function(arm,size=0x44) addr:0x020c313c -func_ov017_020c3180 kind:function(arm,size=0x4c) addr:0x020c3180 -func_ov017_020c31cc kind:function(arm,size=0x1a8) addr:0x020c31cc +_ZN24UnkStruct_ov024_020d86a019func_ov017_020c3180Ev kind:function(arm,size=0x4c) addr:0x020c3180 +_ZN24UnkStruct_ov024_020d86a019func_ov017_020c31ccEv kind:function(arm,size=0x1a8) addr:0x020c31cc func_ov017_020c3374 kind:function(arm,size=0xa0) addr:0x020c3374 func_ov017_020c3414 kind:function(arm,size=0x160) addr:0x020c3414 func_ov017_020c3574 kind:function(arm,size=0x74) addr:0x020c3574 diff --git a/config/eur/arm9/overlays/ov018/symbols.txt b/config/eur/arm9/overlays/ov018/symbols.txt index 7478e9be..7fc329db 100644 --- a/config/eur/arm9/overlays/ov018/symbols.txt +++ b/config/eur/arm9/overlays/ov018/symbols.txt @@ -39,7 +39,7 @@ _ZN24UnkStruct_ov000_020b50c019func_ov018_020c5718Ev kind:function(arm,size=0xa8 _ZN24UnkStruct_ov000_020b5340C1Ev kind:function(arm,size=0x3c) addr:0x020c57c0 _ZN24UnkStruct_ov000_020b534019func_ov018_020c57fcEv kind:function(arm,size=0x18) addr:0x020c57fc _ZN24UnkStruct_ov000_020b5300C1Ev kind:function(arm,size=0x28) addr:0x020c5814 -_ZN24UnkStruct_ov000_020b530019func_ov018_020c583cEi kind:function(arm,size=0x38) addr:0x020c583c +_ZN24UnkStruct_ov000_020b530019func_ov018_020c583cEPv kind:function(arm,size=0x38) addr:0x020c583c _ZN24UnkStruct_ov000_020b51b8C1Ev kind:function(arm,size=0x8c) addr:0x020c5874 _ZN24UnkStruct_ov000_020b51b8D1Ev kind:function(arm,size=0x40) addr:0x020c5900 _ZN24UnkStruct_ov000_020b51b819func_ov018_020c5940Ev kind:function(arm,size=0x80) addr:0x020c5940 diff --git a/config/eur/arm9/overlays/ov024/delinks.txt b/config/eur/arm9/overlays/ov024/delinks.txt index 5c84baaf..880ec0f8 100644 --- a/config/eur/arm9/overlays/ov024/delinks.txt +++ b/config/eur/arm9/overlays/ov024/delinks.txt @@ -10,17 +10,17 @@ src/024_MainGame/Game/GameModeAdventure_024.cpp: .text start:0x020c4840 end:0x020c4a8c .data start:0x020d7b60 end:0x020d7b90 -src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp: +src/024_MainGame/Actor/UnkStruct_ov024_020d8660_024.cpp: complete .text start:0x020c4a8c end:0x020c4e00 .bss start:0x020d8660 end:0x020d8694 -src/024_MainGame/Game/UnkActorSystem1_024.cpp: +src/024_MainGame/Actor/UnkActorSystem1_024.cpp: complete .text start:0x020c4e00 end:0x020c4e68 .data start:0x020d7b90 end:0x020d7bc8 -src/024_MainGame/Game/UnkActorSystem2_024.cpp: +src/024_MainGame/Actor/UnkActorSystem2_024.cpp: complete .text start:0x020c4e68 end:0x020c5158 .data start:0x020d7bc8 end:0x020d7bec @@ -30,12 +30,12 @@ src/024_MainGame/Game/AdventureModeManager_024.cpp: .text start:0x020c5158 end:0x020c6edc .data start:0x020d7bec end:0x020d7c90 -src/024_MainGame/Game/UnkStruct_027e0998_024.cpp: +src/024_MainGame/Unknown/UnkStruct_027e0998_024.cpp: complete .text start:0x020c6edc end:0x020c7390 .data start:0x020d7c90 end:0x020d7c9c -src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp: +src/024_MainGame/Train/UnkStruct_027e0cf8_024.cpp: complete .text start:0x020c7390 end:0x020c7940 @@ -89,36 +89,47 @@ src/024_MainGame/Game/AdventureModeManager_190_024.cpp: .text start:0x020ca098 end:0x020ca320 .data start:0x020d7ed8 end:0x020d7f40 +src/024_MainGame/data_ov024_020d7f40.cpp: + complete + .rodata start:0x020d7318 end:0x020d7328 + .init start:0x020d78e8 end:0x020d7920 + .ctor start:0x020d7b34 end:0x020d7b38 + .data start:0x020d7f40 end:0x020d7f50 + src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp: complete .text start:0x020ca320 end:0x020caa58 .data start:0x020d7f50 end:0x020d7f74 -src/024_MainGame/UnkAdventureModeSystem1_024.cpp: +src/024_MainGame/Unknown/UnkAdventureModeSystem1_024.cpp: complete .text start:0x020caa58 end:0x020cada0 .data start:0x020d7f74 end:0x020d7f80 -src/024_MainGame/UnkStruct_ov024_020d8694_024.cpp: +src/024_MainGame/TitleCard/UnkStruct_ov024_020d8694_024.cpp: .text start:0x020cada0 end:0x020cb1f0 .rodata start:0x020d7328 end:0x020d73d8 .data start:0x020d7f80 end:0x020d7fa4 .bss start:0x020d8694 end:0x020d8698 -src/024_MainGame/UnkTitleCardSystem1_024.cpp: +src/024_MainGame/TitleCard/UnkTitleCardSystem1_024.cpp: complete .text start:0x020cb1f0 end:0x020ccd1c .data start:0x020d7fa4 end:0x020d8064 -src/024_MainGame/UnkStruct_020d8698_024.cpp: +src/024_MainGame/UICounterManager.cpp: complete .text start:0x020ccd1c end:0x020cf968 .rodata start:0x020d73d8 end:0x020d7454 .data start:0x020d8064 end:0x020d8094 .bss start:0x020d8698 end:0x020d869c -src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp: +src/024_MainGame/Train/UnkStruct_027e0cf8_00_0C_024.cpp: .text start:0x020cf968 end:0x020d05ec + .rodata start:0x020d7454 end:0x020d7544 + .init start:0x020d7920 end:0x020d7a40 + .ctor start:0x020d7b38 end:0x020d7b3c + .data start:0x020d8094 end:0x020d8200 src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp: complete @@ -129,60 +140,122 @@ src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp: .data start:0x020d8200 end:0x020d8208 .bss start:0x020d869c end:0x020d86a0 -src/024_MainGame/UnkStruct_ov024_020d86a0_024.cpp: +src/024_MainGame/Unknown/UnkStruct_ov024_020d86a0_024.cpp: + complete .text start:0x020d1658 end:0x020d16fc + .data start:0x020d8208 end:0x020d8224 + .bss start:0x020d86a0 end:0x020d86a4 -src/024_MainGame/code_020d16fc_024.cpp: - .text start:0x020d16fc end:0x020d24d4 +src/024_MainGame/Player/PlayerActor_A0_38_024.cpp: + .text start:0x020d16fc end:0x020d19f8 + .init start:0x020d7a6c end:0x020d7ab4 + .ctor start:0x020d7b40 end:0x020d7b44 + .data start:0x020d8224 end:0x020d8254 -src/024_MainGame/code_020d24d4_024.cpp: - .text start:0x020d24d4 end:0x020d3158 +src/024_MainGame/CreditsEndingType.cpp: + complete + .text start:0x020d19f8 end:0x020d1a18 + .data start:0x020d8254 end:0x020d8258 -src/024_MainGame/UnkStruct_027e0cf8_08_024.cpp: +src/024_MainGame/Train/UnkDataStruct4_14.cpp: + complete + .text start:0x020d1a18 end:0x020d2490 + .rodata start:0x020d7550 end:0x020d756c + +src/024_MainGame/Train/UnkDataStruct4.cpp: + complete + .text start:0x020d2490 end:0x020d3158 + .rodata start:0x020d756c end:0x020d7570 + .data start:0x020d8258 end:0x020d829c + +src/024_MainGame/Train/UnkStruct_027e0cf8_08_024.cpp: + complete .text start:0x020d3158 end:0x020d3670 -src/024_MainGame/code_020d3670_024.cpp: - .text start:0x020d3670 end:0x020d3d20 +src/024_MainGame/ZeldaTrainBinary.cpp: + complete + .text start:0x020d3670 end:0x020d3900 -src/024_MainGame/UnkStruct_027e0ce0_34_024.cpp: - .text start:0x020d3d20 end:0x020d4120 +src/024_MainGame/Train/UnkStruct_027e0cf8_08_00_024.cpp: + complete + .text start:0x020d3900 end:0x020d3c54 -src/024_MainGame/PassengerManager.cpp: +src/024_MainGame/Train/UnkStruct_027e0ce0_34_024.cpp: + complete + .text start:0x020d3c54 end:0x020d4120 + .rodata start:0x020d7570 end:0x020d7598 + +src/024_MainGame/Train/PassengerManager.cpp: + complete .text start:0x020d4120 end:0x020d46b4 - .rodata start:0x020d75a4 end:0x020d7624 + .rodata start:0x020d7598 end:0x020d7624 -src/024_MainGame/code_020d46b4_024.cpp: +src/024_MainGame/Train/MapObjectProfile_Derived5.cpp: + complete .text start:0x020d46b4 end:0x020d47c4 + .data start:0x020d829c end:0x020d83c8 -src/024_MainGame/UnkStruct_027e0d00.cpp: +src/024_MainGame/Train/UnkStruct_027e0d00.cpp: + complete .text start:0x020d47c4 end:0x020d4e9c + .rodata start:0x020d7624 end:0x020d767c + .data start:0x020d83c8 end:0x020d8404 -src/024_MainGame/code_020d4e9c_024.cpp: +src/024_MainGame/Train/UnkStruct_027e0d00_20.cpp: + complete .text start:0x020d4e9c end:0x020d51dc + .data start:0x020d8404 end:0x020d851c -src/024_MainGame/code_020d51dc_024.cpp: - .text start:0x020d51dc end:0x020d54b0 +src/024_MainGame/Train/code_020d51dc_024.cpp: + complete + .text start:0x020d51dc end:0x020d54a0 + .rodata start:0x020d767c end:0x020d78ac + .data start:0x020d851c end:0x020d8550 + .bss start:0x020d86a4 end:0x020d86a8 -src/024_MainGame/code_020d54b0_024.cpp: - .text start:0x020d54b0 end:0x020d58b4 +src/024_MainGame/Train/UnkTrainSystem1_024.cpp: + complete + .text start:0x020d54a0 end:0x020d58b4 + .rodata start:0x020d78ac end:0x020d78b8 + .init start:0x020d7ab4 end:0x020d7acc + .ctor start:0x020d7b44 end:0x020d7b48 + .bss start:0x020d86a8 end:0x020d86ac -src/024_MainGame/CargoManager_024.cpp: +src/024_MainGame/Train/CargoManager_024.cpp: complete .text start:0x020d58b4 end:0x020d5938 + .rodata start:0x020d78b8 end:0x020d78bc -src/024_MainGame/code_020d5938_024.cpp: +src/024_MainGame/Train/UnkTrainSystem2_024.cpp: + complete .text start:0x020d5938 end:0x020d5c8c + .rodata start:0x020d78bc end:0x020d78e8 + .init start:0x020d7acc end:0x020d7ae4 + .ctor start:0x020d7b48 end:0x020d7b4c + .bss start:0x020d86ac end:0x020d86b0 -src/024_MainGame/UnkStruct_027e0d08_024.cpp: +src/024_MainGame/Unknown/UnkStruct_027e0d08_024.cpp: + complete .text start:0x020d5c8c end:0x020d62b4 src/024_MainGame/MiscAdvManager.cpp: + complete .text start:0x020d62b4 end:0x020d6650 + .bss start:0x020d86b0 end:0x020d86b4 -src/024_MainGame/code_020d6650_024.cpp: +src/024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp: + complete .text start:0x020d6650 end:0x020d6e9c + .bss start:0x020d86b4 end:0x020d86b8 + +src/024_MainGame/Train/data_ov024_020d8550.cpp: + complete + .data start:0x020d8550 end:0x020d85d4 src/024_MainGame/Actor/ActorUnkOBPC.cpp: + complete .text start:0x020d6e9c end:0x020d7318 .init start:0x020d7ae4 end:0x020d7b34 .ctor start:0x020d7b4c end:0x020d7b50 + .data start:0x020d85d4 end:0x020d8660 + .bss start:0x020d86b8 end:0x020d8720 diff --git a/config/eur/arm9/overlays/ov024/relocs.txt b/config/eur/arm9/overlays/ov024/relocs.txt index 8bef3b5f..a25718f0 100644 --- a/config/eur/arm9/overlays/ov024/relocs.txt +++ b/config/eur/arm9/overlays/ov024/relocs.txt @@ -1823,13 +1823,13 @@ from:0x020cfd50 kind:load to:0x027e07d4 module:dtcm from:0x020cfe1c kind:load to:0x020d8094 module:overlay(24) from:0x020cfe20 kind:load to:0x020d8098 module:overlay(24) from:0x020cfe64 kind:load to:0x020d8098 module:overlay(24) -from:0x020cfe68 kind:load to:0x020d80a2 module:overlay(24) +from:0x020cfe68 kind:load to:0x020d8098 add:0xa module:overlay(24) from:0x020cfe70 kind:arm_call to:0x020cfd54 module:overlay(24) -from:0x020cfe90 kind:load to:0x020d809e module:overlay(24) +from:0x020cfe90 kind:load to:0x020d8098 add:0x6 module:overlay(24) from:0x020cfecc kind:load to:0x020d8098 module:overlay(24) from:0x020cff08 kind:arm_call to:0x020d5340 module:overlay(24) from:0x020cff14 kind:load to:0x020d8098 module:overlay(24) -from:0x020cff18 kind:load to:0x020d80a3 module:overlay(24) +from:0x020cff18 kind:load to:0x020d8098 add:0xb module:overlay(24) from:0x020cffc8 kind:arm_call to:0x0205fc20 module:overlay(0) from:0x020cffe0 kind:arm_call to:0x0205fc20 module:overlay(0) from:0x020cfff0 kind:arm_call to:0x020d002c module:overlay(24) @@ -1984,8 +1984,8 @@ from:0x020d1978 kind:load to:0x0203e964 module:main from:0x020d198c kind:thumb_call_arm to:0x0201667c module:main from:0x020d19a0 kind:thumb_call_arm to:0x0201667c module:main from:0x020d19ae kind:thumb_call to:0x020d19d8 module:overlay(24) -from:0x020d19b8 kind:load to:0x020d8250 module:overlay(24) -from:0x020d19bc kind:load to:0x020d8244 module:overlay(24) +from:0x020d19b8 kind:load to:0x020d8248 add:0x8 module:overlay(24) +from:0x020d19bc kind:load to:0x020d823c add:0x8 module:overlay(24) from:0x020d19c6 kind:thumb_call_arm to:0x02016694 module:main from:0x020d19ce kind:thumb_call_arm to:0x02016694 module:main from:0x020d1a04 kind:load to:0x020d8254 module:overlay(24) @@ -2032,8 +2032,8 @@ from:0x020d2410 kind:arm_call to:0x020d2464 module:overlay(24) from:0x020d2424 kind:arm_call to:0x020d2464 module:overlay(24) from:0x020d2444 kind:load to:0x020d23ec module:overlay(24) from:0x020d244c kind:arm_call to:0x020d1da0 module:overlay(24) -from:0x020d24d0 kind:load to:0x020d8260 module:overlay(24) -from:0x020d2514 kind:load to:0x020d8260 module:overlay(24) +from:0x020d24d0 kind:load to:0x020d8258 add:0x8 module:overlay(24) +from:0x020d2514 kind:load to:0x020d8258 add:0x8 module:overlay(24) from:0x020d2534 kind:load to:0x020d2538 module:overlay(24) from:0x020d2544 kind:arm_call to:0x020d258c module:overlay(24) from:0x020d254c kind:arm_call to:0x020d3140 module:overlay(24) @@ -2221,13 +2221,13 @@ from:0x020d470c kind:arm_call_thumb to:0x02058540 module:overlay(0) from:0x020d4724 kind:load to:0x020d83b4 module:overlay(24) from:0x020d4728 kind:load to:0x020d83a4 module:overlay(24) from:0x020d472c kind:load to:0x020d83ac module:overlay(24) -from:0x020d4730 kind:load to:0x020d8350 module:overlay(24) +from:0x020d4730 kind:load to:0x020d8348 add:0x8 module:overlay(24) from:0x020d4768 kind:arm_call_thumb to:0x02058540 module:overlay(0) from:0x020d4780 kind:load to:0x020d83c4 module:overlay(24) from:0x020d4784 kind:load to:0x020d8358 module:overlay(24) from:0x020d4788 kind:load to:0x020d83ac module:overlay(24) from:0x020d478c kind:load to:0x020d83b8 module:overlay(24) -from:0x020d4790 kind:load to:0x020d8350 module:overlay(24) +from:0x020d4790 kind:load to:0x020d8348 add:0x8 module:overlay(24) from:0x020d479c kind:arm_call_thumb to:0x0205866c module:overlay(0) from:0x020d47b0 kind:arm_call_thumb to:0x0205866c module:overlay(0) from:0x020d47b8 kind:arm_call to:0x02011ff4 module:main @@ -2302,7 +2302,7 @@ from:0x020d4f8c kind:load to:0x020d8500 module:overlay(24) from:0x020d4f90 kind:load to:0x020d8474 module:overlay(24) from:0x020d4f94 kind:load to:0x020d8484 module:overlay(24) from:0x020d4f98 kind:load to:0x020d84f8 module:overlay(24) -from:0x020d4f9c kind:load to:0x020d84ac module:overlay(24) +from:0x020d4f9c kind:load to:0x020d84a4 add:0x8 module:overlay(24) from:0x020d5008 kind:arm_call to:0x0205a690 module:overlay(0) from:0x020d5020 kind:arm_call to:0x0205a778 module:overlay(0) from:0x020d502c kind:arm_call to:0x0205a7a8 module:overlay(0) @@ -2318,7 +2318,7 @@ from:0x020d50e8 kind:arm_call_thumb to:0x02015460 module:main from:0x020d5104 kind:arm_call to:0x020d4edc module:overlay(24) from:0x020d5148 kind:arm_call_thumb to:0x02057bd4 module:overlay(0) from:0x020d5154 kind:load to:0x020d8504 module:overlay(24) -from:0x020d5158 kind:load to:0x020d84bc module:overlay(24) +from:0x020d5158 kind:load to:0x020d84b4 add:0x8 module:overlay(24) from:0x020d515c kind:load to:0x020d8510 module:overlay(24) from:0x020d5168 kind:arm_call_thumb to:0x02057bd4 module:overlay(0) from:0x020d5188 kind:arm_call_thumb to:0x0201547c module:main @@ -2332,9 +2332,9 @@ from:0x020d5218 kind:arm_call to:0x020d524c module:overlay(24) from:0x020d5244 kind:load to:0x020d86a4 module:overlay(24) from:0x020d5248 kind:load to:0x020d851c module:overlay(24) from:0x020d5338 kind:load to:0x020d774c module:overlay(24) -from:0x020d533c kind:load to:0x020d7752 module:overlay(24) +from:0x020d533c kind:load to:0x020d774c add:0x6 module:overlay(24) from:0x020d53a8 kind:load to:0x020d76c0 module:overlay(24) -from:0x020d53ac kind:load to:0x020d76c2 module:overlay(24) +from:0x020d53ac kind:load to:0x020d76c0 add:0x2 module:overlay(24) from:0x020d5414 kind:arm_call to:0x020d53b0 module:overlay(24) from:0x020d5430 kind:load to:0x020d767c module:overlay(24) from:0x020d5438 kind:arm_call to:0x020d53b0 module:overlay(24) diff --git a/config/eur/arm9/overlays/ov024/symbols.txt b/config/eur/arm9/overlays/ov024/symbols.txt index cd575b30..7840b72d 100644 --- a/config/eur/arm9/overlays/ov024/symbols.txt +++ b/config/eur/arm9/overlays/ov024/symbols.txt @@ -78,7 +78,7 @@ _ZN20AdventureModeManager19func_ov024_020c671cEv kind:function(arm,size=0x54) ad _ZN20AdventureModeManager19func_ov024_020c6770Ejhss kind:function(arm,size=0xac) addr:0x020c6770 _ZN20AdventureModeManager19func_ov024_020c681cEv kind:function(arm,size=0x24) addr:0x020c681c _ZN20AdventureModeManager19func_ov024_020c6840Ej kind:function(arm,size=0x94) addr:0x020c6840 -_ZN20AdventureModeManager19func_ov024_020c68d4Ev kind:function(arm,size=0x18) addr:0x020c68d4 +_ZN20AdventureModeManager19func_ov024_020c68d4EP5Vec2si kind:function(arm,size=0x18) addr:0x020c68d4 _ZN20AdventureModeManager19func_ov024_020c68ecEii kind:function(arm,size=0x44) addr:0x020c68ec _ZN20AdventureModeManager19func_ov024_020c6930Ev kind:function(arm,size=0x10) addr:0x020c6930 _ZN20AdventureModeManager19func_ov024_020c6940Eii kind:function(arm,size=0x5c) addr:0x020c6940 @@ -118,14 +118,14 @@ _ZN18UnkStruct_027e099819func_ov024_020c7354Ev kind:function(arm,size=0x3c) addr _ZN18UnkStruct_027e0cf86CreateEv kind:function(arm,size=0x24) addr:0x020c7390 _ZN18UnkStruct_027e0cf8C1Ev kind:function(arm,size=0xf0) addr:0x020c73b4 _ZN18UnkStruct_027e0cf8D1Ev kind:function(arm,size=0xb8) addr:0x020c74a4 -_ZN18UnkStruct_027e0cf819func_ov024_020c755cEPv kind:function(arm,size=0x74) addr:0x020c755c -_ZN18UnkStruct_027e0cf819func_ov024_020c75d0EPvit kind:function(arm,size=0x154) addr:0x020c75d0 +_ZN18UnkStruct_027e0cf819func_ov024_020c755cEP14UnkDataStruct4 kind:function(arm,size=0x74) addr:0x020c755c +_ZN18UnkStruct_027e0cf819func_ov024_020c75d0EP14UnkDataStruct4it kind:function(arm,size=0x154) addr:0x020c75d0 _ZN18UnkStruct_027e0cf819func_ov024_020c7724Ev kind:function(arm,size=0x2c) addr:0x020c7724 _ZN18UnkStruct_027e0cf819func_ov024_020c7750Ev kind:function(arm,size=0x30) addr:0x020c7750 _ZN18UnkStruct_027e0cf819func_ov024_020c7780Ev kind:function(arm,size=0x30) addr:0x020c7780 -_ZN18UnkStruct_027e0cf819func_ov024_020c77b0Ei kind:function(arm,size=0x10) addr:0x020c77b0 -_ZN18UnkStruct_027e0cf819func_ov024_020c77c0Ev kind:function(arm,size=0x10) addr:0x020c77c0 -_ZN18UnkStruct_027e0cf819func_ov024_020c77d0Ev kind:function(arm,size=0x10) addr:0x020c77d0 +_ZN18UnkStruct_027e0cf819func_ov024_020c77b0Eb kind:function(arm,size=0x10) addr:0x020c77b0 +_ZN18UnkStruct_027e0cf819func_ov024_020c77c0EPiS0_i kind:function(arm,size=0x10) addr:0x020c77c0 +_ZN18UnkStruct_027e0cf819func_ov024_020c77d0EP5Vec2si kind:function(arm,size=0x10) addr:0x020c77d0 _ZN18UnkStruct_027e0cf819func_ov024_020c77e0EP5Vec2s kind:function(arm,size=0x24) addr:0x020c77e0 _ZN18UnkStruct_027e0cf819func_ov024_020c7804EP5Vec2s kind:function(arm,size=0x24) addr:0x020c7804 _ZN18UnkStruct_027e0cf819func_ov024_020c7828Ei kind:function(arm,size=0x50) addr:0x020c7828 @@ -339,96 +339,96 @@ _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_10Ev kind:function(arm,size=0x20) addr:0 _ZN28UnkStruct_ov024_020d8694_2FC19func_ov024_020ccb10EiP5Vec2sS1_ kind:function(arm,size=0x17c) addr:0x020ccb10 _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_08Ev kind:function(arm,size=0x8) addr:0x020ccc8c _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_0CEv kind:function(arm,size=0x88) addr:0x020ccc94 -_ZN18UnkStruct_020d86986CreateEv kind:function(arm,size=0x24) addr:0x020ccd1c -_ZN18UnkStruct_020d8698C1Ev kind:function(arm,size=0x19c) addr:0x020ccd40 -_ZN18UnkStruct_020d8698D1Ev kind:function(arm,size=0xd8) addr:0x020ccedc -_ZN18UnkStruct_020d8698D0Ev kind:function(arm,size=0xe0) addr:0x020ccfb4 -_ZN18UnkStruct_020d869819func_ov024_020cd094Ev kind:function(arm,size=0xbc) addr:0x020cd094 -_ZN18UnkStruct_020d869819func_ov024_020cd150Ev kind:function(arm,size=0x94) addr:0x020cd150 -_ZN18UnkStruct_020d86988vfunc_08EP5InputP12TouchControl kind:function(arm,size=0x98) addr:0x020cd1e4 -_ZN18UnkStruct_020d86988vfunc_10EPc kind:function(arm,size=0xcc) addr:0x020cd27c -_ZN18UnkStruct_020d869819func_ov024_020cd348Ehh kind:function(arm,size=0x10) addr:0x020cd348 -_ZN18UnkStruct_020d869819func_ov024_020cd358Eh kind:function(arm,size=0x10) addr:0x020cd358 -_ZN18UnkStruct_020d869819func_ov024_020cd368Ebb kind:function(arm,size=0x3c) addr:0x020cd368 -_ZN18UnkStruct_020d869819func_ov024_020cd3a4Ev kind:function(arm,size=0x2c) addr:0x020cd3a4 -_ZN18UnkStruct_020d869819func_ov024_020cd3d0Ev kind:function(arm,size=0x10) addr:0x020cd3d0 -_ZN18UnkStruct_020d869819func_ov024_020cd3e0Eb kind:function(arm,size=0x10) addr:0x020cd3e0 -_ZN18UnkStruct_020d869819func_ov024_020cd3f0Eb kind:function(arm,size=0x10) addr:0x020cd3f0 -_ZN18UnkStruct_020d869819func_ov024_020cd400Ev kind:function(arm,size=0x10) addr:0x020cd400 -_ZN18UnkStruct_020d869819func_ov024_020cd410Ev kind:function(arm,size=0x10) addr:0x020cd410 -_ZN18UnkStruct_020d869819func_ov024_020cd420Ev kind:function(arm,size=0x38) addr:0x020cd420 -_ZN18UnkStruct_020d869819func_ov024_020cd458Ejb kind:function(arm,size=0x4c) addr:0x020cd458 -_ZN18UnkStruct_020d869819func_ov024_020cd4a4Eb kind:function(arm,size=0x40) addr:0x020cd4a4 -_ZN18UnkStruct_020d869819func_ov024_020cd4e4Etb kind:function(arm,size=0xdc) addr:0x020cd4e4 -_ZN18UnkStruct_020d869819func_ov024_020cd5c0Et kind:function(arm,size=0x44) addr:0x020cd5c0 -_ZN18UnkStruct_020d869819func_ov024_020cd604Ev kind:function(arm,size=0x6c) addr:0x020cd604 -_ZN21UnkStruct_020d8698_1CC1Ev kind:function(arm,size=0xf8) addr:0x020cd670 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cd768Ev kind:function(arm,size=0xc) addr:0x020cd768 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cd774Ev kind:function(arm,size=0x27c) addr:0x020cd774 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cd9f0Ev kind:function(arm,size=0xbc) addr:0x020cd9f0 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cdaacEv kind:function(arm,size=0x290) addr:0x020cdaac -_ZN21UnkStruct_020d8698_1C19func_ov024_020cdd3cEhh kind:function(arm,size=0x118) addr:0x020cdd3c -_ZN21UnkStruct_020d8698_1C19func_ov024_020cde54Eh kind:function(arm,size=0x74) addr:0x020cde54 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cdec8Ev kind:function(arm,size=0x110) addr:0x020cdec8 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cdfd8Ev kind:function(arm,size=0x240) addr:0x020cdfd8 -_ZN21UnkStruct_020d8698_1C19func_ov024_020ce218Ev kind:function(arm,size=0x48) addr:0x020ce218 -_ZN21UnkStruct_020d8698_1C19func_ov024_020ce260Ev kind:function(arm,size=0x48) addr:0x020ce260 -_ZN21UnkStruct_020d8698_1C19func_ov024_020ce2a8Ev kind:function(arm,size=0x24) addr:0x020ce2a8 -_ZN21UnkStruct_020d8698_24C1Ev kind:function(arm,size=0x24c) addr:0x020ce2cc -_ZN21UnkStruct_020d8698_2419func_ov024_020ce518Ev kind:function(arm,size=0x58) addr:0x020ce518 -_ZN21UnkStruct_020d8698_2419func_ov024_020ce570Ev kind:function(arm,size=0x5c) addr:0x020ce570 -_ZN21UnkStruct_020d8698_2419func_ov024_020ce5ccEv kind:function(arm,size=0x2c0) addr:0x020ce5cc -_ZN21UnkStruct_020d8698_2419func_ov024_020ce88cEPc kind:function(arm,size=0x104) addr:0x020ce88c -_ZN21UnkStruct_020d8698_2419func_ov024_020ce990Ebb kind:function(arm,size=0x1c) addr:0x020ce990 -_ZN21UnkStruct_020d8698_2419func_ov024_020ce9acEv kind:function(arm,size=0x50) addr:0x020ce9ac -_ZN21UnkStruct_020d8698_2CC1Ev kind:function(arm,size=0x358) addr:0x020ce9fc -_ZN21UnkStruct_020d8698_2C19func_ov024_020ced54Ev kind:function(arm,size=0x54) addr:0x020ced54 -_ZN21UnkStruct_020d8698_2C19func_ov024_020ceda8Ev kind:function(arm,size=0xb0) addr:0x020ceda8 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cee58Ev kind:function(arm,size=0xc) addr:0x020cee58 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cee64Ev kind:function(arm,size=0x20) addr:0x020cee64 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cee84Ev kind:function(arm,size=0xd4) addr:0x020cee84 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cef58Ev kind:function(arm,size=0x360) addr:0x020cef58 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf2b8EPc kind:function(arm,size=0x1dc) addr:0x020cf2b8 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf494Eb kind:function(arm,size=0x30) addr:0x020cf494 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf4c4Ev kind:function(arm,size=0x50) addr:0x020cf4c4 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf514Ev kind:function(arm,size=0x28) addr:0x020cf514 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf53cEb kind:function(arm,size=0x34) addr:0x020cf53c -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf570Ev kind:function(arm,size=0x14) addr:0x020cf570 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf584Ev kind:function(arm,size=0x24) addr:0x020cf584 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf5a8Eb kind:function(arm,size=0x38) addr:0x020cf5a8 -_ZN21UnkStruct_020d8698_34C1Ev kind:function(arm,size=0xb8) addr:0x020cf5e0 -_ZN21UnkStruct_020d8698_3419func_ov024_020cf698Ev kind:function(arm,size=0x4c) addr:0x020cf698 -_ZN21UnkStruct_020d8698_3419func_ov024_020cf6e4Ev kind:function(arm,size=0x40) addr:0x020cf6e4 -_ZN21UnkStruct_020d8698_3419func_ov024_020cf724Ev kind:function(arm,size=0xd0) addr:0x020cf724 -_ZN21UnkStruct_020d8698_3CC1Ev kind:function(arm,size=0x38) addr:0x020cf7f4 -_ZN21UnkStruct_020d8698_3C19func_ov024_020cf82cEv kind:function(arm,size=0x5c) addr:0x020cf82c -_ZN21UnkStruct_020d8698_3C19func_ov024_020cf888Ev kind:function(arm,size=0x4) addr:0x020cf888 -_ZN21UnkStruct_020d8698_3C19func_ov024_020cf88cEv kind:function(arm,size=0xb8) addr:0x020cf88c -_ZN8InstanceI18UnkStruct_020d8698EC2Ev kind:function(arm,size=0x10) addr:0x020cf944 -_ZN8InstanceI18UnkStruct_020d8698ED2Ev kind:function(arm,size=0x14) addr:0x020cf954 +_ZN16UICounterManager6CreateEv kind:function(arm,size=0x24) addr:0x020ccd1c +_ZN16UICounterManagerC1Ev kind:function(arm,size=0x19c) addr:0x020ccd40 +_ZN16UICounterManagerD1Ev kind:function(arm,size=0xd8) addr:0x020ccedc +_ZN16UICounterManagerD0Ev kind:function(arm,size=0xe0) addr:0x020ccfb4 +_ZN16UICounterManager19func_ov024_020cd094Ev kind:function(arm,size=0xbc) addr:0x020cd094 +_ZN16UICounterManager19func_ov024_020cd150Ev kind:function(arm,size=0x94) addr:0x020cd150 +_ZN16UICounterManager8vfunc_08EP5InputP12TouchControl kind:function(arm,size=0x98) addr:0x020cd1e4 +_ZN16UICounterManager8vfunc_10EPc kind:function(arm,size=0xcc) addr:0x020cd27c +_ZN16UICounterManager19func_ov024_020cd348Ehh kind:function(arm,size=0x10) addr:0x020cd348 +_ZN16UICounterManager19func_ov024_020cd358Eh kind:function(arm,size=0x10) addr:0x020cd358 +_ZN16UICounterManager19func_ov024_020cd368Ebb kind:function(arm,size=0x3c) addr:0x020cd368 +_ZN16UICounterManager19func_ov024_020cd3a4Ev kind:function(arm,size=0x2c) addr:0x020cd3a4 +_ZN16UICounterManager19func_ov024_020cd3d0Ev kind:function(arm,size=0x10) addr:0x020cd3d0 +_ZN16UICounterManager19func_ov024_020cd3e0Eb kind:function(arm,size=0x10) addr:0x020cd3e0 +_ZN16UICounterManager19func_ov024_020cd3f0Eb kind:function(arm,size=0x10) addr:0x020cd3f0 +_ZN16UICounterManager19func_ov024_020cd400Ev kind:function(arm,size=0x10) addr:0x020cd400 +_ZN16UICounterManager19func_ov024_020cd410Ev kind:function(arm,size=0x10) addr:0x020cd410 +_ZN16UICounterManager19func_ov024_020cd420Ev kind:function(arm,size=0x38) addr:0x020cd420 +_ZN16UICounterManager19func_ov024_020cd458Ejb kind:function(arm,size=0x4c) addr:0x020cd458 +_ZN16UICounterManager19func_ov024_020cd4a4Eb kind:function(arm,size=0x40) addr:0x020cd4a4 +_ZN16UICounterManager19func_ov024_020cd4e4Etb kind:function(arm,size=0xdc) addr:0x020cd4e4 +_ZN16UICounterManager19func_ov024_020cd5c0Et kind:function(arm,size=0x44) addr:0x020cd5c0 +_ZN16UICounterManager19func_ov024_020cd604Ev kind:function(arm,size=0x6c) addr:0x020cd604 +_ZN16UICounter_HealthC1Ev kind:function(arm,size=0xf8) addr:0x020cd670 +_ZN16UICounter_Health19func_ov024_020cd768Ev kind:function(arm,size=0xc) addr:0x020cd768 +_ZN16UICounter_Health19func_ov024_020cd774Ev kind:function(arm,size=0x27c) addr:0x020cd774 +_ZN16UICounter_Health19func_ov024_020cd9f0Ev kind:function(arm,size=0xbc) addr:0x020cd9f0 +_ZN16UICounter_Health19func_ov024_020cdaacEv kind:function(arm,size=0x290) addr:0x020cdaac +_ZN16UICounter_Health19func_ov024_020cdd3cEhh kind:function(arm,size=0x118) addr:0x020cdd3c +_ZN16UICounter_Health19func_ov024_020cde54Eh kind:function(arm,size=0x74) addr:0x020cde54 +_ZN16UICounter_Health19func_ov024_020cdec8Ev kind:function(arm,size=0x110) addr:0x020cdec8 +_ZN16UICounter_Health19func_ov024_020cdfd8Ev kind:function(arm,size=0x240) addr:0x020cdfd8 +_ZN16UICounter_Health19func_ov024_020ce218Ev kind:function(arm,size=0x48) addr:0x020ce218 +_ZN16UICounter_Health19func_ov024_020ce260Ev kind:function(arm,size=0x48) addr:0x020ce260 +_ZN16UICounter_Health12GetMaxHeartsEv kind:function(arm,size=0x24) addr:0x020ce2a8 +_ZN16UICounter_RupeesC1Ev kind:function(arm,size=0x24c) addr:0x020ce2cc +_ZN16UICounter_Rupees19func_ov024_020ce518Ev kind:function(arm,size=0x58) addr:0x020ce518 +_ZN16UICounter_Rupees19func_ov024_020ce570Ev kind:function(arm,size=0x5c) addr:0x020ce570 +_ZN16UICounter_Rupees19func_ov024_020ce5ccEv kind:function(arm,size=0x2c0) addr:0x020ce5cc +_ZN16UICounter_Rupees19func_ov024_020ce88cEPc kind:function(arm,size=0x104) addr:0x020ce88c +_ZN16UICounter_Rupees19func_ov024_020ce990Ebb kind:function(arm,size=0x1c) addr:0x020ce990 +_ZN16UICounter_Rupees19func_ov024_020ce9acEv kind:function(arm,size=0x50) addr:0x020ce9ac +_ZN15UICounter_CargoC1Ev kind:function(arm,size=0x358) addr:0x020ce9fc +_ZN15UICounter_Cargo19func_ov024_020ced54Ev kind:function(arm,size=0x54) addr:0x020ced54 +_ZN15UICounter_Cargo19func_ov024_020ceda8Ev kind:function(arm,size=0xb0) addr:0x020ceda8 +_ZN15UICounter_Cargo19func_ov024_020cee58Ev kind:function(arm,size=0xc) addr:0x020cee58 +_ZN15UICounter_Cargo19func_ov024_020cee64Ev kind:function(arm,size=0x20) addr:0x020cee64 +_ZN15UICounter_Cargo19func_ov024_020cee84Ev kind:function(arm,size=0xd4) addr:0x020cee84 +_ZN15UICounter_Cargo19func_ov024_020cef58Ev kind:function(arm,size=0x360) addr:0x020cef58 +_ZN15UICounter_Cargo19func_ov024_020cf2b8EPc kind:function(arm,size=0x1dc) addr:0x020cf2b8 +_ZN15UICounter_Cargo19func_ov024_020cf494Eb kind:function(arm,size=0x30) addr:0x020cf494 +_ZN15UICounter_Cargo19func_ov024_020cf4c4Ev kind:function(arm,size=0x50) addr:0x020cf4c4 +_ZN15UICounter_Cargo19func_ov024_020cf514Ev kind:function(arm,size=0x28) addr:0x020cf514 +_ZN15UICounter_Cargo19func_ov024_020cf53cEb kind:function(arm,size=0x34) addr:0x020cf53c +_ZN15UICounter_Cargo19func_ov024_020cf570Ev kind:function(arm,size=0x14) addr:0x020cf570 +_ZN15UICounter_Cargo19func_ov024_020cf584Ev kind:function(arm,size=0x24) addr:0x020cf584 +_ZN15UICounter_Cargo19func_ov024_020cf5a8Eb kind:function(arm,size=0x38) addr:0x020cf5a8 +_ZN19UICounter_SmallKeysC1Ev kind:function(arm,size=0xb8) addr:0x020cf5e0 +_ZN19UICounter_SmallKeys19func_ov024_020cf698Ev kind:function(arm,size=0x4c) addr:0x020cf698 +_ZN19UICounter_SmallKeys19func_ov024_020cf6e4Ev kind:function(arm,size=0x40) addr:0x020cf6e4 +_ZN19UICounter_SmallKeys19func_ov024_020cf724Ev kind:function(arm,size=0xd0) addr:0x020cf724 +_ZN22UICounter_TearsOfLightC1Ev kind:function(arm,size=0x38) addr:0x020cf7f4 +_ZN22UICounter_TearsOfLight19func_ov024_020cf82cEv kind:function(arm,size=0x5c) addr:0x020cf82c +_ZN22UICounter_TearsOfLight19func_ov024_020cf888Ev kind:function(arm,size=0x4) addr:0x020cf888 +_ZN22UICounter_TearsOfLight19func_ov024_020cf88cEv kind:function(arm,size=0xb8) addr:0x020cf88c +_ZN8InstanceI16UICounterManagerEC2Ev kind:function(arm,size=0x10) addr:0x020cf944 +_ZN8InstanceI16UICounterManagerED2Ev kind:function(arm,size=0x14) addr:0x020cf954 _ZN21UnkStruct_027e0cf8_00C1Ev kind:function(arm,size=0x68) addr:0x020cf968 _ZN21UnkStruct_027e0cf8_00D1Ev kind:function(arm,size=0x4) addr:0x020cf9d0 -func_ov024_020cf9d4 kind:function(arm,size=0x1a8) addr:0x020cf9d4 -_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfb7cEPvP5Vec2sitii kind:function(arm,size=0x1d8) addr:0x020cfb7c -func_ov024_020cfd54 kind:function(arm,size=0xd0) addr:0x020cfd54 -func_ov024_020cfe24 kind:function(arm,size=0x48) addr:0x020cfe24 -func_ov024_020cfe6c kind:function(arm,size=0x28) addr:0x020cfe6c -func_ov024_020cfe94 kind:function(arm,size=0x3c) addr:0x020cfe94 -func_ov024_020cfed0 kind:function(arm,size=0x4c) addr:0x020cfed0 -func_ov024_020cff1c kind:function(arm,size=0x2c) addr:0x020cff1c +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cf9d4EP27UnkStruct_027e0cf8_00_18_00 kind:function(arm,size=0x1a8) addr:0x020cf9d4 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfb7cEP14UnkDataStruct4P5Vec2sitii kind:function(arm,size=0x1d8) addr:0x020cfb7c +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfd54Eiiii kind:function(arm,size=0xd0) addr:0x020cfd54 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe24Es kind:function(arm,size=0x48) addr:0x020cfe24 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe6cEiiii kind:function(arm,size=0x28) addr:0x020cfe6c +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe94Ei kind:function(arm,size=0x3c) addr:0x020cfe94 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfed0Es kind:function(arm,size=0x4c) addr:0x020cfed0 +_ZN24UnkStruct_027e0cf8_0C_0019func_ov024_020cff1cEv kind:function(arm,size=0x2c) addr:0x020cff1c _ZN21UnkStruct_027e0cf8_0CC1Ev kind:function(arm,size=0x40) addr:0x020cff48 _ZN21UnkStruct_027e0cf8_0CD1Ev kind:function(arm,size=0x4) addr:0x020cff88 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020cff8cEPvP5Vec2s kind:function(arm,size=0x78) addr:0x020cff8c +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020cff8cEP14UnkDataStruct4P5Vec2s kind:function(arm,size=0x78) addr:0x020cff8c _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0004Ev kind:function(arm,size=0x28) addr:0x020d0004 -func_ov024_020d002c kind:function(arm,size=0x194) addr:0x020d002c -func_ov024_020d01c0 kind:function(arm,size=0x120) addr:0x020d01c0 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d02e0Ev kind:function(arm,size=0x60) addr:0x020d02e0 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0340Ev kind:function(arm,size=0xb8) addr:0x020d0340 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d002cEPK14UnkDataStruct4 kind:function(arm,size=0x194) addr:0x020d002c +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d01c0EPK14UnkDataStruct4 kind:function(arm,size=0x120) addr:0x020d01c0 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d02e0EPiS0_i kind:function(arm,size=0x60) addr:0x020d02e0 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0340EP5Vec2si kind:function(arm,size=0xb8) addr:0x020d0340 _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d03f8EP5Vec2s kind:function(arm,size=0x24) addr:0x020d03f8 _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d041cEP5Vec2s kind:function(arm,size=0xf4) addr:0x020d041c -func_ov024_020d0510 kind:function(arm,size=0xa0) addr:0x020d0510 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d05d0Eii kind:function(arm,size=0x3c) addr:0x020d05b0 -_ZN29AdventureModeManager_1B8_BaseC2EhbPK32AdventureModeManager_1B8_Base_1Cbb kind:function(arm,size=0x94) addr:0x020d05ec +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0510Es kind:function(arm,size=0xa0) addr:0x020d0510 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d05d0Eib kind:function(arm,size=0x3c) addr:0x020d05b0 +_ZN29AdventureModeManager_1B8_BaseC2EhbRK32AdventureModeManager_1B8_Base_1Cbb kind:function(arm,size=0x94) addr:0x020d05ec _ZN29AdventureModeManager_1B8_BaseD2Ev kind:function(arm,size=0x18) addr:0x020d0680 _ZN29AdventureModeManager_1B8_Base19func_ov024_020d0698Ev kind:function(arm,size=0x38) addr:0x020d0698 _ZN29AdventureModeManager_1B8_Base19func_ov024_020d06d0Ev kind:function(arm,size=0x5c) addr:0x020d06d0 @@ -455,135 +455,135 @@ _ZN24AdventureModeManager_1B819func_ov024_020d14a8EP32AdventureModeManager_1B8_B _ZN24AdventureModeManager_1B819func_ov024_020d1564EPK32AdventureModeManager_1B8_Base_1CiPih kind:function(arm,size=0xb0) addr:0x020d1564 _ZN24AdventureModeManager_1B819func_ov024_020d1614EPv kind:function(arm,size=0x24) addr:0x020d1614 _ZN24AdventureModeManager_1B819func_ov024_020d1638Ev kind:function(arm,size=0x20) addr:0x020d1638 -func_ov024_020d1658 kind:function(arm,size=0x24) addr:0x020d1658 +_ZN24UnkStruct_ov024_020d86a06CreateEv kind:function(arm,size=0x24) addr:0x020d1658 _ZN24UnkStruct_ov024_020d86a019func_ov024_020d167cEv kind:function(arm,size=0x18) addr:0x020d167c -func_ov024_020d1694 kind:function(arm,size=0x28) addr:0x020d1694 -_ZN19func_ov024_020d16bcD1Ev kind:function(arm,size=0x14) addr:0x020d16bc -_ZN19func_ov024_020d16d0D0Ev kind:function(arm,size=0x1c) addr:0x020d16d0 -func_ov024_020d16ec kind:function(arm,size=0x10) addr:0x020d16ec -func_ov024_020d16fc kind:function(arm,size=0x80) addr:0x020d16fc -func_ov024_020d177c kind:function(arm,size=0x200) addr:0x020d177c -func_ov024_020d197c kind:function(thumb,size=0x44) addr:0x020d197c -func_ov024_020d19c0 kind:function(thumb,size=0x16) addr:0x020d19c0 -func_ov024_020d19d8 kind:function(thumb,size=0x20) addr:0x020d19d8 -func_ov024_020d19f8 kind:function(arm,size=0x10) addr:0x020d19f8 -func_ov024_020d1a08 kind:function(arm,size=0x10) addr:0x020d1a08 -func_ov024_020d1a18 kind:function(arm,size=0x10) addr:0x020d1a18 -func_ov024_020d1a28 kind:function(arm,size=0x70) addr:0x020d1a28 -func_ov024_020d1a98 kind:function(arm,size=0x20) addr:0x020d1a98 -func_ov024_020d1ab8 kind:function(arm,size=0xe0) addr:0x020d1ab8 -func_ov024_020d1b98 kind:function(arm,size=0x48) addr:0x020d1b98 -func_ov024_020d1be0 kind:function(arm,size=0x5c) addr:0x020d1be0 -func_ov024_020d1c3c kind:function(arm,size=0x48) addr:0x020d1c3c -func_ov024_020d1c84 kind:function(arm,size=0x44) addr:0x020d1c84 -func_ov024_020d1cc8 kind:function(arm,size=0x2c) addr:0x020d1cc8 -func_ov024_020d1cf4 kind:function(arm,size=0x3c) addr:0x020d1cf4 -func_ov024_020d1d30 kind:function(arm,size=0x48) addr:0x020d1d30 -func_ov024_020d1d78 kind:function(arm,size=0x28) addr:0x020d1d78 -func_ov024_020d1da0 kind:function(arm,size=0x28) addr:0x020d1da0 -func_ov024_020d1dc8 kind:function(arm,size=0x2c) addr:0x020d1dc8 -func_ov024_020d1df4 kind:function(arm,size=0x2c) addr:0x020d1df4 -func_ov024_020d1e20 kind:function(arm,size=0x8c) addr:0x020d1e20 -func_ov024_020d1eac kind:function(arm,size=0xb4) addr:0x020d1eac -func_ov024_020d1f60 kind:function(arm,size=0x10) addr:0x020d1f60 -func_ov024_020d1f70 kind:function(arm,size=0x34) addr:0x020d1f70 -func_ov024_020d1fa4 kind:function(arm,size=0x44) addr:0x020d1fa4 -func_ov024_020d1fe8 kind:function(arm,size=0x48) addr:0x020d1fe8 -func_ov024_020d2030 kind:function(arm,size=0x5c) addr:0x020d2030 -func_ov024_020d208c kind:function(arm,size=0xc) addr:0x020d208c -func_ov024_020d2098 kind:function(arm,size=0x28) addr:0x020d2098 -func_ov024_020d20c0 kind:function(arm,size=0xe0) addr:0x020d20c0 -func_ov024_020d21a0 kind:function(arm,size=0x38) addr:0x020d21a0 -func_ov024_020d21d8 kind:function(arm,size=0x64) addr:0x020d21d8 -func_ov024_020d223c kind:function(arm,size=0x34) addr:0x020d223c -func_ov024_020d2270 kind:function(arm,size=0x3c) addr:0x020d2270 -func_ov024_020d22ac kind:function(arm,size=0x74) addr:0x020d22ac -func_ov024_020d2320 kind:function(arm,size=0x28) addr:0x020d2320 -func_ov024_020d2348 kind:function(arm,size=0x54) addr:0x020d2348 -func_ov024_020d239c kind:function(arm,size=0x20) addr:0x020d239c -func_ov024_020d23bc kind:function(arm,size=0x30) addr:0x020d23bc -func_ov024_020d23ec kind:function(arm,size=0x50) addr:0x020d23ec -func_ov024_020d243c kind:function(arm,size=0xc) addr:0x020d243c -func_ov024_020d2448 kind:function(arm,size=0x1c) addr:0x020d2448 -func_ov024_020d2464 kind:function(arm,size=0x2c) addr:0x020d2464 -func_ov024_020d2490 kind:function(arm,size=0x44) addr:0x020d2490 -func_ov024_020d24d4 kind:function(arm,size=0x44) addr:0x020d24d4 -func_ov024_020d2518 kind:function(arm,size=0x4) addr:0x020d2518 -func_ov024_020d251c kind:function(arm,size=0x4) addr:0x020d251c -func_ov024_020d2520 kind:function(arm,size=0x18) addr:0x020d2520 -func_ov024_020d2538 kind:function(arm,size=0x2c) addr:0x020d2538 -func_ov024_020d2564 kind:function(arm,size=0x28) addr:0x020d2564 -func_ov024_020d258c kind:function(arm,size=0x124) addr:0x020d258c -func_ov024_020d26b0 kind:function(arm,size=0xcc) addr:0x020d26b0 -func_ov024_020d277c kind:function(arm,size=0x50) addr:0x020d277c -func_ov024_020d27cc kind:function(arm,size=0x40) addr:0x020d27cc -func_ov024_020d280c kind:function(arm,size=0x1a4) addr:0x020d280c -func_ov024_020d29b0 kind:function(arm,size=0x68) addr:0x020d29b0 -func_ov024_020d2a18 kind:function(arm,size=0xf0) addr:0x020d2a18 -func_ov024_020d2b08 kind:function(arm,size=0x38) addr:0x020d2b08 -func_ov024_020d2b40 kind:function(arm,size=0x8c) addr:0x020d2b40 -func_ov024_020d2bcc kind:function(arm,size=0x88) addr:0x020d2bcc -func_ov024_020d2c54 kind:function(arm,size=0xa8) addr:0x020d2c54 -func_ov024_020d2cfc kind:function(arm,size=0x364) addr:0x020d2cfc -func_ov024_020d3060 kind:function(arm,size=0x4) addr:0x020d3060 -func_ov024_020d3064 kind:function(arm,size=0x4) addr:0x020d3064 -func_ov024_020d3068 kind:function(arm,size=0x24) addr:0x020d3068 -func_ov024_020d308c kind:function(arm,size=0x74) addr:0x020d308c -func_ov024_020d3100 kind:function(arm,size=0x40) addr:0x020d3100 -func_ov024_020d3140 kind:function(arm,size=0x18) addr:0x020d3140 -func_ov024_020d3158 kind:function(arm,size=0xa0) addr:0x020d3158 +_ZN27UnkStruct_ov024_020d86a0_00C1EP24UnkStruct_ov024_020d86a0 kind:function(arm,size=0x28) addr:0x020d1694 +_ZN27UnkStruct_ov024_020d86a0_00D1Ev kind:function(arm,size=0x14) addr:0x020d16bc +_ZN27UnkStruct_ov024_020d86a0_00D0Ev kind:function(arm,size=0x1c) addr:0x020d16d0 +_ZN27UnkStruct_ov024_020d86a0_008vfunc_0CEv kind:function(arm,size=0x10) addr:0x020d16ec +_ZN20PlayerActor_A0_38_048vfunc_00Ev kind:function(arm,size=0x80) addr:0x020d16fc +_ZN20PlayerActor_A0_38_188vfunc_00Ev kind:function(arm,size=0x200) addr:0x020d177c +_ZN17PlayerActor_A0_38C1Ev kind:function(thumb,size=0x44) addr:0x020d197c +_ZN17PlayerActor_A0_38D1Ev kind:function(thumb,size=0x16) addr:0x020d19c0 +_ZN17PlayerActor_A0_3819func_ov024_020d19d8Ev kind:function(thumb,size=0x20) addr:0x020d19d8 +_Z20SetCreditsEndingTypes kind:function(arm,size=0x10) addr:0x020d19f8 +_Z20GetCreditsEndingTypev kind:function(arm,size=0x10) addr:0x020d1a08 +_ZN17UnkDataStruct4_1419func_ov024_020d1a18Ei kind:function(arm,size=0x10) addr:0x020d1a18 +_ZN17UnkDataStruct4_1419func_ov024_020d1a28Eh kind:function(arm,size=0x70) addr:0x020d1a28 +_ZN17UnkDataStruct4_1419func_ov024_020d1a98Eii kind:function(arm,size=0x20) addr:0x020d1a98 +_ZN17UnkDataStruct4_1419func_ov024_020d1ab8EiPiS0_ kind:function(arm,size=0xe0) addr:0x020d1ab8 +_ZN17UnkDataStruct4_1419func_ov024_020d1b98EPii kind:function(arm,size=0x48) addr:0x020d1b98 +_ZN17UnkDataStruct4_1419func_ov024_020d1be0Ei kind:function(arm,size=0x5c) addr:0x020d1be0 +_ZNK17UnkDataStruct4_1419func_ov024_020d1c3cEPii kind:function(arm,size=0x48) addr:0x020d1c3c +_ZN17UnkDataStruct4_1419func_ov024_020d1c84Ev kind:function(arm,size=0x44) addr:0x020d1c84 +_ZNK17UnkDataStruct4_1419func_ov024_020d1cc8Eii kind:function(arm,size=0x2c) addr:0x020d1cc8 +_ZNK17UnkDataStruct4_1419func_ov024_020d1cf4Ei kind:function(arm,size=0x3c) addr:0x020d1cf4 +_ZNK17UnkDataStruct4_1419func_ov024_020d1d30Eit kind:function(arm,size=0x48) addr:0x020d1d30 +_ZNK17UnkDataStruct4_1419func_ov024_020d1d78Ev kind:function(arm,size=0x28) addr:0x020d1d78 +_ZNK17UnkDataStruct4_1419func_ov024_020d1da0Ev kind:function(arm,size=0x28) addr:0x020d1da0 +_ZNK17UnkDataStruct4_1419func_ov024_020d1dc8Eii kind:function(arm,size=0x2c) addr:0x020d1dc8 +_ZNK17UnkDataStruct4_1419func_ov024_020d1df4Ei kind:function(arm,size=0x2c) addr:0x020d1df4 +_ZN17UnkDataStruct4_1419func_ov024_020d1e20EPsi kind:function(arm,size=0x8c) addr:0x020d1e20 +_ZN17UnkDataStruct4_1419func_ov024_020d1eacEi kind:function(arm,size=0xb4) addr:0x020d1eac +_ZN17UnkDataStruct4_1419func_ov024_020d1f60Ej kind:function(arm,size=0x10) addr:0x020d1f60 +_ZNK17UnkDataStruct4_1419func_ov024_020d1f70Ev kind:function(arm,size=0x34) addr:0x020d1f70 +_ZNK17UnkDataStruct4_1419func_ov024_020d1fa4Ei kind:function(arm,size=0x44) addr:0x020d1fa4 +_ZN17UnkDataStruct4_1419func_ov024_020d1fe8Ev kind:function(arm,size=0x48) addr:0x020d1fe8 +_ZN17UnkDataStruct4_1419func_ov024_020d2030Eii kind:function(arm,size=0x5c) addr:0x020d2030 +_ZNK17UnkDataStruct4_1419func_ov024_020d208cEi kind:function(arm,size=0xc) addr:0x020d208c +_ZN17UnkDataStruct4_1419func_ov024_020d2098Eii kind:function(arm,size=0x28) addr:0x020d2098 +_ZNK17UnkDataStruct4_1419func_ov024_020d20c0Eii kind:function(arm,size=0xe0) addr:0x020d20c0 +_ZNK17UnkDataStruct4_1416IsStationDungeonEv kind:function(arm,size=0x38) addr:0x020d21a0 +_ZNK17UnkDataStruct4_1419func_ov024_020d21d8Ev kind:function(arm,size=0x64) addr:0x020d21d8 +_ZNK17UnkDataStruct4_1419func_ov024_020d223cEv kind:function(arm,size=0x34) addr:0x020d223c +_ZNK17UnkDataStruct4_1419func_ov024_020d2270Eii kind:function(arm,size=0x3c) addr:0x020d2270 +_ZNK17UnkDataStruct4_1419func_ov024_020d22acEi kind:function(arm,size=0x74) addr:0x020d22ac +_ZNK17UnkDataStruct4_1419func_ov024_020d2320Ei kind:function(arm,size=0x28) addr:0x020d2320 +_ZNK17UnkDataStruct4_1419func_ov024_020d2348Ei kind:function(arm,size=0x54) addr:0x020d2348 +_ZNK17UnkDataStruct4_1419func_ov024_020d239cEv kind:function(arm,size=0x20) addr:0x020d239c +_ZNK17UnkDataStruct4_1419func_ov024_020d23bcEv kind:function(arm,size=0x30) addr:0x020d23bc +_ZNK17UnkDataStruct4_1419func_ov024_020d23ecEv kind:function(arm,size=0x50) addr:0x020d23ec +_ZNK17UnkDataStruct4_1419func_ov024_020d243cEv kind:function(arm,size=0xc) addr:0x020d243c +_ZNK17UnkDataStruct4_1419func_ov024_020d2448Ev kind:function(arm,size=0x1c) addr:0x020d2448 +_ZNK17UnkDataStruct4_1419func_ov024_020d2464Eb kind:function(arm,size=0x2c) addr:0x020d2464 +_ZN14UnkDataStruct4C2Ev kind:function(arm,size=0x44) addr:0x020d2490 +_ZN14UnkDataStruct4C1Ev kind:function(arm,size=0x44) addr:0x020d24d4 +_ZN14UnkDataStruct419func_ov024_020d2518Ev kind:function(arm,size=0x4) addr:0x020d2518 +_ZN14UnkDataStruct419func_ov024_020d251cEv kind:function(arm,size=0x4) addr:0x020d251c +_ZN14UnkDataStruct419func_ov024_020d2520EP22UnkStruct_SceneChange1 kind:function(arm,size=0x18) addr:0x020d2520 +_ZN14UnkDataStruct419func_ov024_020d2538EjhP19UnkDataStruct4_14_2 kind:function(arm,size=0x2c) addr:0x020d2538 +_ZN14UnkDataStruct419func_ov024_020d2564Ev kind:function(arm,size=0x28) addr:0x020d2564 +_ZN14UnkDataStruct419func_ov024_020d258cEjh kind:function(arm,size=0x124) addr:0x020d258c +_ZN14UnkDataStruct419func_ov024_020d26b0Ei kind:function(arm,size=0xcc) addr:0x020d26b0 +_ZN14UnkDataStruct419func_ov024_020d277cEv kind:function(arm,size=0x50) addr:0x020d277c +_ZN14UnkDataStruct419func_ov024_020d27ccEv kind:function(arm,size=0x40) addr:0x020d27cc +_ZN14UnkDataStruct419func_ov024_020d280cEv kind:function(arm,size=0x1a4) addr:0x020d280c +_ZN14UnkDataStruct419func_ov024_020d29b0Eiiiii kind:function(arm,size=0x68) addr:0x020d29b0 +_ZN14UnkDataStruct419func_ov024_020d2a18Eiiiii kind:function(arm,size=0xf0) addr:0x020d2a18 +_ZNK14UnkDataStruct419func_ov024_020d2b08EiiP7VecFx32 kind:function(arm,size=0x38) addr:0x020d2b08 +_ZN14UnkDataStruct419func_ov024_020d2b40EP5Vec2sPKS_ kind:function(arm,size=0x8c) addr:0x020d2b40 +_ZN14UnkDataStruct419func_ov024_020d2bccEP5Vec2sPKS_ kind:function(arm,size=0x88) addr:0x020d2bcc +_ZN14UnkDataStruct419func_ov024_020d2c54EPA15_hi kind:function(arm,size=0xa8) addr:0x020d2c54 +_ZN14UnkDataStruct419func_ov024_020d2cfcEPA15_hii kind:function(arm,size=0x364) addr:0x020d2cfc +_ZN14UnkDataStruct48vfunc_00Ev kind:function(arm,size=0x4) addr:0x020d3060 +_ZN14UnkDataStruct48vfunc_04Ev kind:function(arm,size=0x4) addr:0x020d3064 +_ZNK14UnkDataStruct419func_ov024_020d3068Ev kind:function(arm,size=0x24) addr:0x020d3068 +_ZNK14UnkDataStruct419func_ov024_020d308cEPiS0_s kind:function(arm,size=0x74) addr:0x020d308c +_ZN14UnkDataStruct419func_ov024_020d3100Ev kind:function(arm,size=0x40) addr:0x020d3100 +_ZN14UnkDataStruct419func_ov024_020d3140Ev kind:function(arm,size=0x18) addr:0x020d3140 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3158Ej kind:function(arm,size=0xa0) addr:0x020d3158 _ZN21UnkStruct_027e0cf8_08C1Ev kind:function(arm,size=0x88) addr:0x020d31f8 _ZN21UnkStruct_027e0cf8_08D1Ev kind:function(arm,size=0x34) addr:0x020d3280 -func_ov024_020d32b4 kind:function(arm,size=0x24) addr:0x020d32b4 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d32b4EPc kind:function(arm,size=0x24) addr:0x020d32b4 _ZN21UnkStruct_027e0cf8_0819func_ov024_020d32d8Ev kind:function(arm,size=0x10) addr:0x020d32d8 _ZN21UnkStruct_027e0cf8_0819func_ov024_020d32e8EP5Vec2s kind:function(arm,size=0x3c) addr:0x020d32e8 -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3324EPv kind:function(arm,size=0x24) addr:0x020d3324 -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3348EPvitii kind:function(arm,size=0x24) addr:0x020d3348 -func_ov024_020d336c kind:function(arm,size=0xa0) addr:0x020d336c +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3324EP14UnkDataStruct4 kind:function(arm,size=0x24) addr:0x020d3324 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3348EP14UnkDataStruct4itii kind:function(arm,size=0x24) addr:0x020d3348 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d336cEP14UnkDataStruct4iiii kind:function(arm,size=0xa0) addr:0x020d336c _ZN21UnkStruct_027e0cf8_0819func_ov024_020d340cEv kind:function(arm,size=0x10) addr:0x020d340c -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d341cEi kind:function(arm,size=0xc) addr:0x020d341c -func_ov024_020d3428 kind:function(arm,size=0x78) addr:0x020d3428 -func_ov024_020d34a0 kind:function(arm,size=0x7c) addr:0x020d34a0 -func_ov024_020d351c kind:function(arm,size=0x154) addr:0x020d351c -func_ov024_020d3670 kind:function(thumb,size=0x8c) addr:0x020d3670 -func_ov024_020d36fc kind:function(thumb,size=0x68) addr:0x020d36fc -func_ov024_020d3764 kind:function(thumb,size=0xdc) addr:0x020d3764 -func_ov024_020d3840 kind:function(thumb,size=0x58) addr:0x020d3840 -func_ov024_020d3898 kind:function(thumb,size=0x68) addr:0x020d3898 -func_ov024_020d3900 kind:function(arm,size=0x14) addr:0x020d3900 -func_ov024_020d3914 kind:function(arm,size=0x5c) addr:0x020d3914 -func_ov024_020d3970 kind:function(arm,size=0x8c) addr:0x020d3970 -func_ov024_020d39fc kind:function(arm,size=0x38) addr:0x020d39fc -func_ov024_020d3a34 kind:function(arm,size=0x2c) addr:0x020d3a34 -func_ov024_020d3a60 kind:function(arm,size=0x2c) addr:0x020d3a60 -func_ov024_020d3a8c kind:function(arm,size=0x50) addr:0x020d3a8c -func_ov024_020d3adc kind:function(arm,size=0x120) addr:0x020d3adc -func_ov024_020d3bfc kind:function(arm,size=0x58) addr:0x020d3bfc -func_ov024_020d3c54 kind:function(thumb,size=0xc) addr:0x020d3c54 -func_ov024_020d3c60 kind:function(thumb,size=0x94) addr:0x020d3c60 -func_ov024_020d3cf4 kind:function(thumb,size=0x2c) addr:0x020d3cf4 -func_ov024_020d3d20 kind:function(thumb,size=0x5e) addr:0x020d3d20 -func_ov024_020d3d80 kind:function(thumb,size=0x18) addr:0x020d3d80 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d341cEb kind:function(arm,size=0xc) addr:0x020d341c +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3428EPK14UnkDataStruct4ih kind:function(arm,size=0x78) addr:0x020d3428 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d34a0EPA15_hh kind:function(arm,size=0x7c) addr:0x020d34a0 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d351cEiiPiih kind:function(arm,size=0x154) addr:0x020d351c +ZTB_ParseFile kind:function(thumb,size=0x8c) addr:0x020d3670 +ZTB_ParseGRDB kind:function(thumb,size=0x68) addr:0x020d36fc +ZTB_ParseGRRL kind:function(thumb,size=0xdc) addr:0x020d3764 +ZTB_ParseSTAB kind:function(thumb,size=0x58) addr:0x020d3840 +ZTB_ParseLDMK kind:function(thumb,size=0x68) addr:0x020d3898 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3900EP5Vec2sPiS2_ii kind:function(arm,size=0x14) addr:0x020d3900 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3914EP5Vec2sS1_S1_ kind:function(arm,size=0x5c) addr:0x020d3914 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3970EP5Vec2sPiS2_ii kind:function(arm,size=0x8c) addr:0x020d3970 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d39fcEP5Vec2sii kind:function(arm,size=0x38) addr:0x020d39fc +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a34EP5Vec2sii kind:function(arm,size=0x2c) addr:0x020d3a34 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a60EP5Vec2sS1_ii kind:function(arm,size=0x2c) addr:0x020d3a60 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a8cEP5Vec2s kind:function(arm,size=0x50) addr:0x020d3a8c +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3adcEP5Vec2siihbh kind:function(arm,size=0x120) addr:0x020d3adc +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3bfcEP5Vec2siib kind:function(arm,size=0x58) addr:0x020d3bfc +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3c54Ei kind:function(thumb,size=0xc) addr:0x020d3c54 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3c60EP27SaveFile_00000_0000_Data_D8 kind:function(thumb,size=0x94) addr:0x020d3c60 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3cf4Ei kind:function(thumb,size=0x2c) addr:0x020d3cf4 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d20Ev kind:function(thumb,size=0x5e) addr:0x020d3d20 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d80Ei kind:function(thumb,size=0x18) addr:0x020d3d80 _ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d98Eii kind:function(thumb,size=0x10) addr:0x020d3d98 -func_ov024_020d3da8 kind:function(thumb,size=0x16) addr:0x020d3da8 -func_ov024_020d3dc0 kind:function(thumb,size=0xa) addr:0x020d3dc0 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3da8Eii kind:function(thumb,size=0x16) addr:0x020d3da8 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3dc0Eii kind:function(thumb,size=0xa) addr:0x020d3dc0 _ZN21UnkStruct_027e0ce0_3419func_ov024_020d3dccEv kind:function(thumb,size=0x20) addr:0x020d3dcc -func_ov024_020d3dec kind:function(arm,size=0x20) addr:0x020d3dec -func_ov024_020d3e0c kind:function(arm,size=0x24) addr:0x020d3e0c -func_ov024_020d3e30 kind:function(arm,size=0x38) addr:0x020d3e30 -func_ov024_020d3e68 kind:function(arm,size=0x80) addr:0x020d3e68 -_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3ee8Eiti kind:function(arm,size=0x64) addr:0x020d3ee8 -func_ov024_020d3f4c kind:function(arm,size=0x40) addr:0x020d3f4c -func_ov024_020d3f8c kind:function(arm,size=0x3c) addr:0x020d3f8c -func_ov024_020d3fc8 kind:function(arm,size=0x40) addr:0x020d3fc8 -func_ov024_020d4008 kind:function(arm,size=0x44) addr:0x020d4008 -func_ov024_020d404c kind:function(arm,size=0x4c) addr:0x020d404c -func_ov024_020d4098 kind:function(arm,size=0x88) addr:0x020d4098 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3decEi kind:function(arm,size=0x20) addr:0x020d3dec +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e0cEi kind:function(arm,size=0x24) addr:0x020d3e0c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e30Eii kind:function(arm,size=0x38) addr:0x020d3e30 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e68Ei kind:function(arm,size=0x80) addr:0x020d3e68 +_ZN21UnkStruct_027e0ce0_3412SetTrackFlagEitb kind:function(arm,size=0x64) addr:0x020d3ee8 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3f4cEct kind:function(arm,size=0x40) addr:0x020d3f4c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3f8cEv kind:function(arm,size=0x3c) addr:0x020d3f8c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3fc8Ev kind:function(arm,size=0x40) addr:0x020d3fc8 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d4008Ei kind:function(arm,size=0x44) addr:0x020d4008 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d404cEv kind:function(arm,size=0x4c) addr:0x020d404c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d4098EPiS0_ kind:function(arm,size=0x88) addr:0x020d4098 _ZN16PassengerManager21GetPassengerInfoIndexEj kind:function(arm,size=0x30) addr:0x020d4120 _ZN16PassengerManager12GetBoardFlagEj kind:function(arm,size=0x24) addr:0x020d4150 _ZN16PassengerManager11GetFailFlagEj kind:function(arm,size=0x24) addr:0x020d4174 _ZN16PassengerManager6CreateEv kind:function(arm,size=0x24) addr:0x020d4198 -_ZN16PassengerManager19func_ov024_020d41bcEP16UnkStruct_Param1 kind:function(arm,size=0x38) addr:0x020d41bc +_ZN16PassengerManager19func_ov024_020d41bcEPK16UnkStruct_Param1 kind:function(arm,size=0x38) addr:0x020d41bc _ZN16PassengerManager19func_ov024_020d41f4EP16UnkStruct_Param1 kind:function(arm,size=0x34) addr:0x020d41f4 _ZN16PassengerManager19func_ov024_020d4228Ev kind:function(arm,size=0x30) addr:0x020d4228 _ZN16PassengerManager19func_ov024_020d4258Ev kind:function(arm,size=0x30) addr:0x020d4258 @@ -604,79 +604,79 @@ _ZN16PassengerManager19func_ov024_020d4554Ev kind:function(arm,size=0x10) addr:0 _ZN16PassengerManager5ResetEv kind:function(arm,size=0x4c) addr:0x020d4564 _ZN16PassengerManager11IsDateUnsetEv kind:function(arm,size=0x14) addr:0x020d45b0 _ZN16PassengerManager7GetDateEv kind:function(arm,size=0x1c) addr:0x020d45c4 -_ZN16PassengerManager14GetRandomIndexEji kind:function(arm,size=0x5c) addr:0x020d45e0 +_ZN16PassengerManager14GetRandomIndexEjj kind:function(arm,size=0x5c) addr:0x020d45e0 _ZN16PassengerManager13SetFailedFlagEv kind:function(arm,size=0x78) addr:0x020d463c -func_ov024_020d46b4 kind:function(arm,size=0x10) addr:0x020d46b4 -func_ov024_020d46c4 kind:function(arm,size=0x70) addr:0x020d46c4 -func_ov024_020d4734 kind:function(arm,size=0x60) addr:0x020d4734 -_ZN19func_ov024_020d4794D1Ev kind:function(arm,size=0x14) addr:0x020d4794 -_ZN19func_ov024_020d47a8D0Ev kind:function(arm,size=0x1c) addr:0x020d47a8 -func_ov024_020d47c4 kind:function(arm,size=0x74) addr:0x020d47c4 -func_ov024_020d4838 kind:function(arm,size=0x24) addr:0x020d4838 -func_ov024_020d485c kind:function(arm,size=0x6c) addr:0x020d485c -func_ov024_020d48c8 kind:function(arm,size=0x10) addr:0x020d48c8 -func_ov024_020d48d8 kind:function(arm,size=0xec) addr:0x020d48d8 -func_ov024_020d49c4 kind:function(arm,size=0x28) addr:0x020d49c4 -func_ov024_020d49ec kind:function(arm,size=0x64) addr:0x020d49ec -func_ov024_020d4a50 kind:function(arm,size=0x64) addr:0x020d4a50 -func_ov024_020d4ab4 kind:function(arm,size=0x40) addr:0x020d4ab4 -func_ov024_020d4af4 kind:function(arm,size=0xa8) addr:0x020d4af4 -func_ov024_020d4b9c kind:function(arm,size=0x5c) addr:0x020d4b9c -func_ov024_020d4bf8 kind:function(arm,size=0xc8) addr:0x020d4bf8 -_ZN18UnkStruct_027e0d0019func_ov024_020d4cc0Ei kind:function(arm,size=0x50) addr:0x020d4cc0 +_Z19func_ov024_020d46b4i kind:function(arm,size=0x10) addr:0x020d46b4 +_ZN25MapObjectProfile_Derived5C1Ei kind:function(arm,size=0x70) addr:0x020d46c4 +_ZN25MapObjectProfile_Derived5C1Ej kind:function(arm,size=0x60) addr:0x020d4734 +_ZN25MapObjectProfile_Derived5D1Ev kind:function(arm,size=0x14) addr:0x020d4794 +_ZN25MapObjectProfile_Derived5D0Ev kind:function(arm,size=0x1c) addr:0x020d47a8 +_ZN18UnkStruct_027e0d0019func_ov024_020d47c4EPiS0_i kind:function(arm,size=0x74) addr:0x020d47c4 +_ZN18UnkStruct_027e0d006CreateEv kind:function(arm,size=0x24) addr:0x020d4838 +_ZN18UnkStruct_027e0d0019func_ov024_020d485cEii kind:function(arm,size=0x6c) addr:0x020d485c +_ZN18UnkStruct_027e0d0019func_ov024_020d48c8Ei kind:function(arm,size=0x10) addr:0x020d48c8 +_ZN18UnkStruct_027e0d0019func_ov024_020d48d8Eii kind:function(arm,size=0xec) addr:0x020d48d8 +_ZN21UnkStruct_027e0d00_20D1Ev kind:function(arm,size=0x28) addr:0x020d49c4 +_ZN18UnkStruct_027e0d0019func_ov024_020d49ecEii kind:function(arm,size=0x64) addr:0x020d49ec +_ZN18UnkStruct_027e0d0019func_ov024_020d4a50Ev kind:function(arm,size=0x64) addr:0x020d4a50 +_ZN18UnkStruct_027e0d0019func_ov024_020d4ab4Ev kind:function(arm,size=0x40) addr:0x020d4ab4 +_ZN18UnkStruct_027e0d0019func_ov024_020d4af4Ev kind:function(arm,size=0xa8) addr:0x020d4af4 +_ZN18UnkStruct_027e0d0019func_ov024_020d4b9cEi kind:function(arm,size=0x5c) addr:0x020d4b9c +_ZN18UnkStruct_027e0d0019func_ov024_020d4bf8Ev kind:function(arm,size=0xc8) addr:0x020d4bf8 +_ZN18UnkStruct_027e0d0019func_ov024_020d4cc0Ej kind:function(arm,size=0x50) addr:0x020d4cc0 _ZN18UnkStruct_027e0d0019func_ov024_020d4d10Ev kind:function(arm,size=0x34) addr:0x020d4d10 -func_ov024_020d4d44 kind:function(arm,size=0x28) addr:0x020d4d44 -func_ov024_020d4d6c kind:function(arm,size=0x8c) addr:0x020d4d6c -func_ov024_020d4df8 kind:function(arm,size=0x44) addr:0x020d4df8 -func_ov024_020d4e3c kind:function(arm,size=0x60) addr:0x020d4e3c -func_ov024_020d4e9c kind:function(arm,size=0x40) addr:0x020d4e9c -func_ov024_020d4edc kind:function(arm,size=0x2c) addr:0x020d4edc -func_ov024_020d4f08 kind:function(arm,size=0x98) addr:0x020d4f08 -func_ov024_020d4fa0 kind:function(arm,size=0x1c0) addr:0x020d4fa0 -func_ov024_020d5160 kind:function(arm,size=0x14) addr:0x020d5160 -func_ov024_020d5174 kind:function(arm,size=0x1c) addr:0x020d5174 -_ZN19func_ov024_020d5190D0Ev kind:function(arm,size=0x30) addr:0x020d5190 -_ZN19func_ov024_020d51c0D0Ev kind:function(arm,size=0x1c) addr:0x020d51c0 -func_ov024_020d51dc kind:function(arm,size=0x70) addr:0x020d51dc -func_ov024_020d524c kind:function(arm,size=0xb8) addr:0x020d524c -func_ov024_020d5304 kind:function(arm,size=0x3c) addr:0x020d5304 -func_ov024_020d5340 kind:function(arm,size=0x14) addr:0x020d5340 -func_ov024_020d5354 kind:function(arm,size=0x5c) addr:0x020d5354 -func_ov024_020d53b0 kind:function(arm,size=0x60) addr:0x020d53b0 -func_ov024_020d5410 kind:function(arm,size=0x24) addr:0x020d5410 -func_ov024_020d5434 kind:function(arm,size=0x24) addr:0x020d5434 -func_ov024_020d5458 kind:function(arm,size=0x24) addr:0x020d5458 -func_ov024_020d547c kind:function(arm,size=0x24) addr:0x020d547c -func_ov024_020d54a0 kind:function(arm,size=0x10) addr:0x020d54a0 -func_ov024_020d54b0 kind:function(arm,size=0x40) addr:0x020d54b0 -func_ov024_020d54f0 kind:function(arm,size=0x4) addr:0x020d54f0 -func_ov024_020d54f4 kind:function(arm,size=0x138) addr:0x020d54f4 -func_ov024_020d562c kind:function(arm,size=0x240) addr:0x020d562c -func_ov024_020d586c kind:function(arm,size=0x48) addr:0x020d586c +_ZN18UnkStruct_027e0d0019func_ov024_020d4d44Ev kind:function(arm,size=0x28) addr:0x020d4d44 +_ZN18UnkStruct_027e0d0019func_ov024_020d4d6cEi kind:function(arm,size=0x8c) addr:0x020d4d6c +_ZN18UnkStruct_027e0d0019func_ov024_020d4df8Ev kind:function(arm,size=0x44) addr:0x020d4df8 +_ZN18UnkStruct_027e0d0019func_ov024_020d4e3cEi kind:function(arm,size=0x60) addr:0x020d4e3c +_ZN21UnkStruct_027e0d00_2019func_ov024_020d4e9cEPwib kind:function(arm,size=0x40) addr:0x020d4e9c +_ZN21UnkStruct_027e0d00_2019func_ov024_020d4edcEPwS0_i kind:function(arm,size=0x2c) addr:0x020d4edc +_ZN21UnkStruct_027e0d00_20C1Eii kind:function(arm,size=0x98) addr:0x020d4f08 +_ZN21UnkStruct_027e0d00_2019func_ov024_020d4fa0Eii kind:function(arm,size=0x1c0) addr:0x020d4fa0 +_ZN20ModelRender_Derived2D1Ev kind:function(arm,size=0x14) addr:0x020d5160 +_ZN21UnkStruct_027e0d00_2019func_ov024_020d5174Ev kind:function(arm,size=0x1c) addr:0x020d5174 +_ZN21UnkStruct_027e0d00_20D0Ev kind:function(arm,size=0x30) addr:0x020d5190 +_ZN20ModelRender_Derived2D0Ev kind:function(arm,size=0x1c) addr:0x020d51c0 +_Z19func_ov024_020d51dcP5Vec2sj kind:function(arm,size=0x70) addr:0x020d51dc +_Z19func_ov024_020d524cP5Vec2sj kind:function(arm,size=0xb8) addr:0x020d524c +_Z19func_ov024_020d5304j kind:function(arm,size=0x3c) addr:0x020d5304 +_Z19func_ov024_020d5340j kind:function(arm,size=0x14) addr:0x020d5340 +_Z19func_ov024_020d5354PiPsi kind:function(arm,size=0x5c) addr:0x020d5354 +_Z19func_ov024_020d53b0j kind:function(arm,size=0x60) addr:0x020d53b0 local +_Z19func_ov024_020d5410j kind:function(arm,size=0x24) addr:0x020d5410 +_Z19func_ov024_020d5434j kind:function(arm,size=0x24) addr:0x020d5434 +_Z19func_ov024_020d5458j kind:function(arm,size=0x24) addr:0x020d5458 +_Z19func_ov024_020d547cj kind:function(arm,size=0x24) addr:0x020d547c +_ZN15UnkTrainSystem119func_ov024_020d54a0Ei kind:function(arm,size=0x10) addr:0x020d54a0 +_ZN15UnkTrainSystem1C1Ev kind:function(arm,size=0x40) addr:0x020d54b0 +_ZN15UnkTrainSystem1D1Ev kind:function(arm,size=0x4) addr:0x020d54f0 +_ZN15UnkTrainSystem119func_ov024_020d54f4Ev kind:function(arm,size=0x138) addr:0x020d54f4 +_ZN15UnkTrainSystem119func_ov024_020d562cEPK7VecFx32i kind:function(arm,size=0x240) addr:0x020d562c +_ZN15UnkTrainSystem119func_ov024_020d586cEv kind:function(arm,size=0x48) addr:0x020d586c _ZN12CargoManager6CreateEv kind:function(arm,size=0x24) addr:0x020d58b4 _ZN12CargoManager8SetCargoEii kind:function(arm,size=0x14) addr:0x020d58d8 _ZN12CargoManager16GetTypeAndAmountEPiS0_ kind:function(arm,size=0x14) addr:0x020d58ec _ZN12CargoManager19func_ov024_020d5900Ev kind:function(arm,size=0x1c) addr:0x020d5900 _ZN12CargoManager19func_ov024_020d591cEv kind:function(arm,size=0x1c) addr:0x020d591c -func_ov024_020d5938 kind:function(arm,size=0x40) addr:0x020d5938 -func_ov024_020d5978 kind:function(arm,size=0x18) addr:0x020d5978 -func_ov024_020d5990 kind:function(arm,size=0x16c) addr:0x020d5990 -func_ov024_020d5afc kind:function(arm,size=0x144) addr:0x020d5afc -func_ov024_020d5c40 kind:function(arm,size=0x4c) addr:0x020d5c40 -func_ov024_020d5c8c kind:function(arm,size=0x44) addr:0x020d5c8c -func_ov024_020d5cd0 kind:function(arm,size=0x1c) addr:0x020d5cd0 -func_ov024_020d5cec kind:function(arm,size=0x24) addr:0x020d5cec -func_ov024_020d5d10 kind:function(arm,size=0x8) addr:0x020d5d10 -func_ov024_020d5d18 kind:function(arm,size=0x1c) addr:0x020d5d18 -func_ov024_020d5d34 kind:function(arm,size=0x20) addr:0x020d5d34 -func_ov024_020d5d54 kind:function(arm,size=0x80) addr:0x020d5d54 -func_ov024_020d5dd4 kind:function(arm,size=0x4c) addr:0x020d5dd4 -func_ov024_020d5e20 kind:function(arm,size=0x18c) addr:0x020d5e20 -func_ov024_020d5fac kind:function(arm,size=0xc) addr:0x020d5fac -func_ov024_020d5fb8 kind:function(arm,size=0x2c) addr:0x020d5fb8 -func_ov024_020d5fe4 kind:function(arm,size=0x2ac) addr:0x020d5fe4 -func_ov024_020d6290 kind:function(arm,size=0x10) addr:0x020d6290 -func_ov024_020d62a0 kind:function(arm,size=0x14) addr:0x020d62a0 +_ZN15UnkTrainSystem2C1Ev kind:function(arm,size=0x40) addr:0x020d5938 +_ZN15UnkTrainSystem2D1Ev kind:function(arm,size=0x18) addr:0x020d5978 +_ZN15UnkTrainSystem219func_ov024_020d5990Ev kind:function(arm,size=0x16c) addr:0x020d5990 +_ZN15UnkTrainSystem219func_ov024_020d5afcEPK5Mat3pPK7VecFx32i kind:function(arm,size=0x144) addr:0x020d5afc +_ZN15UnkTrainSystem219func_ov024_020d5c40Ev kind:function(arm,size=0x4c) addr:0x020d5c40 +_ZN18UnkStruct_027e0d08C1Ev kind:function(arm,size=0x44) addr:0x020d5c8c +_ZN18UnkStruct_027e0d08D1Ev kind:function(arm,size=0x1c) addr:0x020d5cd0 +_ZN18UnkStruct_027e0d086CreateEv kind:function(arm,size=0x24) addr:0x020d5cec +_ZN18UnkStruct_027e0d0819func_ov024_020d5d10Ei kind:function(arm,size=0x8) addr:0x020d5d10 +_ZN18UnkStruct_027e0d0819func_ov024_020d5d18Ei kind:function(arm,size=0x1c) addr:0x020d5d18 +_ZN18UnkStruct_027e0d0819func_ov024_020d5d34Ei kind:function(arm,size=0x20) addr:0x020d5d34 +_ZN18UnkStruct_027e0d0819func_ov024_020d5d54Ev kind:function(arm,size=0x80) addr:0x020d5d54 +_ZN18UnkStruct_027e0d0819func_ov024_020d5dd4Ei kind:function(arm,size=0x4c) addr:0x020d5dd4 +_ZN18UnkStruct_027e0d0819func_ov024_020d5e20Ev kind:function(arm,size=0x18c) addr:0x020d5e20 +_ZN18UnkStruct_027e0d0819func_ov024_020d5facEv kind:function(arm,size=0xc) addr:0x020d5fac +_ZN18UnkStruct_027e0d0819func_ov024_020d5fb8EPsS0_j kind:function(arm,size=0x2c) addr:0x020d5fb8 +_ZN18UnkStruct_027e0d0819func_ov024_020d5fe4EPsS0_j kind:function(arm,size=0x2ac) addr:0x020d5fe4 +_ZN8InstanceI18UnkStruct_027e0d08EC2Ev kind:function(arm,size=0x10) addr:0x020d6290 +_ZN8InstanceI18UnkStruct_027e0d08ED2Ev kind:function(arm,size=0x14) addr:0x020d62a0 _ZN14MiscAdvManager6CreateEv kind:function(arm,size=0x24) addr:0x020d62b4 _ZN14MiscAdvManagerC1Ev kind:function(arm,size=0x24) addr:0x020d62d8 _ZN14MiscAdvManagerD1Ev kind:function(arm,size=0x14) addr:0x020d62fc @@ -689,7 +689,7 @@ _ZN14MiscAdvManager19func_ov024_020d6468Ev kind:function(arm,size=0x2c) addr:0x0 _ZN14MiscAdvManager8GetStampEi kind:function(arm,size=0xc) addr:0x020d6494 _ZN14MiscAdvManager12GetStampDateEi kind:function(arm,size=0x8) addr:0x020d64a0 _ZN14MiscAdvManager11GetStampPosEi kind:function(arm,size=0xc) addr:0x020d64a8 -_ZN14MiscAdvManager19func_ov024_020d64b4EiiPt kind:function(arm,size=0x7c) addr:0x020d64b4 +_ZN14MiscAdvManager19func_ov024_020d64b4EciPKt kind:function(arm,size=0x7c) addr:0x020d64b4 _ZN14MiscAdvManager19func_ov024_020d6530Ev kind:function(arm,size=0x2c) addr:0x020d6530 _ZN14MiscAdvManager15GetNumPostcardsEv kind:function(arm,size=0x10) addr:0x020d655c _ZN14MiscAdvManager13GivePriceCardEi kind:function(arm,size=0x30) addr:0x020d656c @@ -697,32 +697,32 @@ _ZN14MiscAdvManager13PostPriceCardEii kind:function(arm,size=0x74) addr:0x020d65 _ZN14MiscAdvManager19func_ov024_020d6610Ev kind:function(arm,size=0x1c) addr:0x020d6610 _ZN8InstanceI14MiscAdvManagerEC2Ev kind:function(arm,size=0x10) addr:0x020d662c _ZN8InstanceI14MiscAdvManagerED2Ev kind:function(arm,size=0x14) addr:0x020d663c -func_ov024_020d6650 kind:function(thumb,size=0x16) addr:0x020d6650 -_ZN26ActorUnk_ov000_020a8bb0_ec19func_ov024_020d6668Ev kind:function(thumb,size=0x16) addr:0x020d6668 -func_ov024_020d6680 kind:function(arm,size=0x40) addr:0x020d6680 -func_ov024_020d66c0 kind:function(arm,size=0x44) addr:0x020d66c0 -func_ov024_020d6704 kind:function(arm,size=0x2c) addr:0x020d6704 -func_ov024_020d6730 kind:function(arm,size=0x2a8) addr:0x020d6730 -func_ov024_020d69d8 kind:function(arm,size=0x1a4) addr:0x020d69d8 -func_ov024_020d6b7c kind:function(arm,size=0x204) addr:0x020d6b7c -func_ov024_020d6d80 kind:function(arm,size=0x11c) addr:0x020d6d80 +_ZN26ActorUnk_ov000_020a8bb0_ECC2Ev kind:function(thumb,size=0x16) addr:0x020d6650 +_ZN26ActorUnk_ov000_020a8bb0_ECC1Ev kind:function(thumb,size=0x16) addr:0x020d6668 +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6680EPK7VecFx32Ph kind:function(arm,size=0x40) addr:0x020d6680 +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d66c0EPK7VecFx32i kind:function(arm,size=0x44) addr:0x020d66c0 +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6704Ev kind:function(arm,size=0x2c) addr:0x020d6704 +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6730Ev kind:function(arm,size=0x2a8) addr:0x020d6730 +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d69d8EP7VecFx32PsS1_isi kind:function(arm,size=0x1a4) addr:0x020d69d8 +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6b7cEP7VecFx32PsS1_isi kind:function(arm,size=0x204) addr:0x020d6b7c +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6d80EP7VecFx32S1_ kind:function(arm,size=0x11c) addr:0x020d6d80 _ZN19ActorProfileUnkOBPC10GetProfileEv kind:function(arm,size=0xc) addr:0x020d6e9c _ZN19ActorProfileUnkOBPC6CreateEv kind:function(arm,size=0x24) addr:0x020d6ea8 _ZN19ActorProfileUnkOBPCC1Ev kind:function(arm,size=0x28) addr:0x020d6ecc _ZN12ActorUnkOBPCC1Ev kind:function(arm,size=0x34) addr:0x020d6ef4 -_ZN12ActorUnkOBPC19func_ov024_020d6f28Ev kind:function(arm,size=0x4c) addr:0x020d6f28 +_ZN12ActorUnkOBPC8vfunc_18Ei kind:function(arm,size=0x4c) addr:0x020d6f28 _ZN12ActorUnkOBPC19func_ov024_020d6f74Ev kind:function(arm,size=0x20) addr:0x020d6f74 -_ZN12ActorUnkOBPC19func_ov024_020d6f94Ev kind:function(arm,size=0xbc) addr:0x020d6f94 -_ZN12ActorUnkOBPC19func_ov024_020d7050Ev kind:function(arm,size=0x14) addr:0x020d7050 -_ZN12ActorUnkOBPC19func_ov024_020d7064Ev kind:function(arm,size=0xf0) addr:0x020d7064 +_ZN12ActorUnkOBPC8vfunc_20Ev kind:function(arm,size=0xbc) addr:0x020d6f94 +_ZN12ActorUnkOBPC8vfunc_24Ev kind:function(arm,size=0x14) addr:0x020d7050 +_ZN12ActorUnkOBPC19func_ov024_020d7064Esi kind:function(arm,size=0xf0) addr:0x020d7064 _ZN12ActorUnkOBPC19func_ov024_020d7154Ev kind:function(arm,size=0x168) addr:0x020d7154 _ZN12ActorUnkOBPCD1Ev kind:function(arm,size=0x20) addr:0x020d72bc _ZN12ActorUnkOBPCD0Ev kind:function(arm,size=0x28) addr:0x020d72dc _ZN19ActorProfileUnkOBPCD1Ev kind:function(arm,size=0x14) addr:0x020d7304 -data_ov024_020d7318 kind:data(any) addr:0x020d7318 ambiguous -data_ov024_020d731c kind:data(any) addr:0x020d731c ambiguous -data_ov024_020d7320 kind:data(any) addr:0x020d7320 ambiguous -data_ov024_020d7324 kind:data(any) addr:0x020d7324 ambiguous +data_ov024_020d7318 kind:data(any) addr:0x020d7318 +data_ov024_020d731c kind:data(any) addr:0x020d731c +data_ov024_020d7320 kind:data(any) addr:0x020d7320 +data_ov024_020d7324 kind:data(any) addr:0x020d7324 sBMGSceneMap kind:data(any) addr:0x020d7328 local data_ov024_020d73d8 kind:data(any) addr:0x020d73d8 local data_ov024_020d73de kind:data(any) addr:0x020d73de local @@ -731,49 +731,46 @@ data_ov024_020d73fa kind:data(any) addr:0x020d73fa local data_ov024_020d740a kind:data(any) addr:0x020d740a local data_ov024_020d741e kind:data(any) addr:0x020d741e local data_ov024_020d7432 kind:data(any) addr:0x020d7432 local -data_ov024_020d7454 kind:data(any) addr:0x020d7454 +data_ov024_020d7454 kind:data(byte[238]) addr:0x020d7454 local data_ov024_020d7544 kind:data(any) addr:0x020d7544 local data_ov024_020d7547 kind:data(any) addr:0x020d7547 local -data_ov024_020d7550 kind:data(any) addr:0x020d7550 -data_ov024_020d7555 kind:data(any) addr:0x020d7555 -data_ov024_020d7560 kind:data(any) addr:0x020d7560 -data_ov024_020d756c kind:data(any) addr:0x020d756c -data_ov024_020d7570 kind:data(any) addr:0x020d7570 -data_ov024_020d7578 kind:data(any) addr:0x020d7578 -data_ov024_020d7588 kind:data(any) addr:0x020d7588 -data_ov024_020d7598 kind:data(any) addr:0x020d7598 ambiguous -sPassengerInfos kind:data(any) addr:0x020d75a4 +data_ov024_020d7550 kind:data(any) addr:0x020d7550 local +data_ov024_020d7555 kind:data(any) addr:0x020d7555 local +data_ov024_020d7560 kind:data(any) addr:0x020d7560 local +data_ov024_020d756c kind:data(any) addr:0x020d756c local +data_ov024_020d7570 kind:data(any) addr:0x020d7570 local +data_ov024_020d7578 kind:data(any) addr:0x020d7578 local +data_ov024_020d7588 kind:data(any) addr:0x020d7588 local +data_ov024_020d7598 kind:data(byte[10]) addr:0x020d7598 +sPassengerInfos kind:data(any) addr:0x020d75a4 local data_ov024_020d7624 kind:data(any) addr:0x020d7624 -data_ov024_020d762c kind:data(any) addr:0x020d762c -data_ov024_020d763c kind:data(any) addr:0x020d763c -data_ov024_020d764c kind:data(any) addr:0x020d764c -data_ov024_020d765c kind:data(any) addr:0x020d765c +data_ov024_020d762c kind:data(any) addr:0x020d762c local +data_ov024_020d763c kind:data(any) addr:0x020d763c local +data_ov024_020d764c kind:data(any) addr:0x020d764c local +data_ov024_020d765c kind:data(any) addr:0x020d765c local data_ov024_020d766c kind:data(any) addr:0x020d766c -data_ov024_020d767c kind:data(any) addr:0x020d767c +data_ov024_020d767c kind:data(byte[5]) addr:0x020d767c local data_ov024_020d7684 kind:data(any) addr:0x020d7684 -data_ov024_020d76c0 kind:data(any) addr:0x020d76c0 -data_ov024_020d76c2 kind:data(any) addr:0x020d76c2 -data_ov024_020d774c kind:data(any) addr:0x020d774c -data_ov024_020d7752 kind:data(any) addr:0x020d7752 -data_ov024_020d78ac kind:data(any) addr:0x020d78ac +data_ov024_020d76c0 kind:data(any) addr:0x020d76c0 local +data_ov024_020d774c kind:data(any) addr:0x020d774c local +data_ov024_020d78ac kind:data(any) addr:0x020d78ac local data_ov024_020d78b8 kind:data(any) addr:0x020d78b8 -data_ov024_020d78bc kind:data(any) addr:0x020d78bc -data_ov024_020d78c0 kind:data(any) addr:0x020d78c0 ambiguous -data_ov024_020d78c2 kind:data(any) addr:0x020d78c2 ambiguous -__sinit_ov024_020d78e8 kind:function(arm,size=0x38) addr:0x020d78e8 -__sinit_ov024_020d7920 kind:function(arm,size=0x120) addr:0x020d7920 +data_ov024_020d78bc kind:data(any) addr:0x020d78bc local +data_ov024_020d78c0 kind:data(any) addr:0x020d78c0 +__sinit_data_ov024_020d7f40.cpp kind:function(arm,size=0x38) addr:0x020d78e8 local +__sinit_UnkStruct_027e0cf8_00_0C_024.cpp kind:function(arm,size=0x120) addr:0x020d7920 local __sinit_AdventureModeManager_1B8_Base_024.cpp kind:function(arm,size=0x2c) addr:0x020d7a40 local -__sinit_ov024_020d7a6c kind:function(arm,size=0x48) addr:0x020d7a6c -__sinit_ov024_020d7ab4 kind:function(arm,size=0x18) addr:0x020d7ab4 -__sinit_ov024_020d7acc kind:function(arm,size=0x18) addr:0x020d7acc -__sinit_ActorUnkOBPC.cpp kind:function(arm,size=0x50) addr:0x020d7ae4 -.p__sinit_ov024_020d78e8 kind:data(word) addr:0x020d7b34 -.p__sinit_ov024_020d7920 kind:data(word) addr:0x020d7b38 +__sinit_PlayerActor_A0_38_024.cpp kind:function(arm,size=0x48) addr:0x020d7a6c local +__sinit_UnkTrainSystem1_024.cpp kind:function(arm,size=0x18) addr:0x020d7ab4 local +__sinit_UnkTrainSystem2_024.cpp kind:function(arm,size=0x18) addr:0x020d7acc local +__sinit_ActorUnkOBPC.cpp kind:function(arm,size=0x50) addr:0x020d7ae4 local +.p__sinit_data_ov024_020d7f40.cpp kind:data(word) addr:0x020d7b34 local +.p__sinit_UnkStruct_027e0cf8_00_0C_024.cpp kind:data(word) addr:0x020d7b38 local .p__sinit_AdventureModeManager_1B8_Base_024.cpp kind:data(word) addr:0x020d7b3c local -.p__sinit_ov024_020d7a6c kind:data(word) addr:0x020d7b40 -.p__sinit_ov024_020d7ab4 kind:data(word) addr:0x020d7b44 -.p__sinit_ov024_020d7acc kind:data(word) addr:0x020d7b48 -.p__sinit_ActorUnkOBPC.cpp kind:data(word) addr:0x020d7b4c +.p__sinit_PlayerActor_A0_38_024.cpp kind:data(word) addr:0x020d7b40 local +.p__sinit_UnkTrainSystem1_024.cpp kind:data(word) addr:0x020d7b44 local +.p__sinit_UnkTrainSystem2_024.cpp kind:data(word) addr:0x020d7b48 local +.p__sinit_ActorUnkOBPC.cpp kind:data(word) addr:0x020d7b4c local _ZTV17GameModeAdventure kind:data(any) addr:0x020d7b60 _ZTV15UnkActorSystem1 kind:data(any) addr:0x020d7b90 _ZTV15UnkActorSystem2 kind:data(any) addr:0x020d7bc8 @@ -801,7 +798,7 @@ _ZTV24AdventureModeManager_18C kind:data(any) addr:0x020d7ea8 _ZTV27AdventureModeManager_190_38 kind:data(any) addr:0x020d7ed8 _ZTV27AdventureModeManager_190_14 kind:data(any) addr:0x020d7ef4 _ZTV24AdventureModeManager_190 kind:data(any) addr:0x020d7f10 -data_ov024_020d7f40 kind:data(any) addr:0x020d7f40 +data_ov024_020d7f40 kind:data(any) addr:0x020d7f40 local _ZTV30AdventureModeManager_15C_20_00 kind:data(any) addr:0x020d7f50 _ZTV23UnkAdventureModeSystem1 kind:data(any) addr:0x020d7f74 _ZTV24UnkStruct_ov024_020d8694 kind:data(any) addr:0x020d7f80 @@ -810,107 +807,110 @@ _ZTV19UnkTitleCardSystem1 kind:data(any) addr:0x020d7fc8 _ZTV28UnkStruct_ov024_020d8694_01C kind:data(any) addr:0x020d7fec _ZTV28UnkStruct_ov024_020d8694_188 kind:data(any) addr:0x020d8014 _ZTV28UnkTitleCardSystem1_Derived1 kind:data(any) addr:0x020d803c -_ZTV18UnkStruct_020d8698 kind:data(any) addr:0x020d8064 +_ZTV16UICounterManager kind:data(any) addr:0x020d8064 @4721 kind:data(byte[11]) addr:0x020d8088 local -data_ov024_020d8094 kind:data(any) addr:0x020d8094 -data_ov024_020d8098 kind:data(any) addr:0x020d8098 -data_ov024_020d809e kind:data(any) addr:0x020d809e -data_ov024_020d80a2 kind:data(any) addr:0x020d80a2 -data_ov024_020d80a3 kind:data(any) addr:0x020d80a3 +data_ov024_020d8094 kind:data(byte[2]) addr:0x020d8094 local +data_ov024_020d8098 kind:data(any) addr:0x020d8098 local data_ov024_020d8200 kind:data(any) addr:0x020d8200 local -_ZTV19data_ov024_020d8208 kind:data(any) addr:0x020d8208 -data_ov024_020d8224 kind:data(any) addr:0x020d8224 -data_ov024_020d8244 kind:data(any) addr:0x020d8244 -data_ov024_020d8250 kind:data(any) addr:0x020d8250 -data_ov024_020d8254 kind:data(any) addr:0x020d8254 -data_ov024_020d8260 kind:data(any) addr:0x020d8260 -data_ov024_020d8268 kind:data(any) addr:0x020d8268 -data_ov024_020d8270 kind:data(any) addr:0x020d8270 -data_ov024_020d8288 kind:data(any) addr:0x020d8288 -data_ov024_020d829c kind:data(any) addr:0x020d829c -data_ov024_020d82a0 kind:data(any) addr:0x020d82a0 -data_ov024_020d82a4 kind:data(any) addr:0x020d82a4 -data_ov024_020d82a8 kind:data(any) addr:0x020d82a8 -data_ov024_020d82b0 kind:data(any) addr:0x020d82b0 -data_ov024_020d82b8 kind:data(any) addr:0x020d82b8 -data_ov024_020d82c0 kind:data(any) addr:0x020d82c0 -data_ov024_020d82c8 kind:data(any) addr:0x020d82c8 -data_ov024_020d82d0 kind:data(any) addr:0x020d82d0 -data_ov024_020d82d8 kind:data(any) addr:0x020d82d8 -data_ov024_020d82e0 kind:data(any) addr:0x020d82e0 -data_ov024_020d82e8 kind:data(any) addr:0x020d82e8 -data_ov024_020d82f4 kind:data(any) addr:0x020d82f4 -data_ov024_020d8300 kind:data(any) addr:0x020d8300 -data_ov024_020d830c kind:data(any) addr:0x020d830c -data_ov024_020d8318 kind:data(any) addr:0x020d8318 -data_ov024_020d8324 kind:data(any) addr:0x020d8324 -data_ov024_020d8330 kind:data(any) addr:0x020d8330 -data_ov024_020d833c kind:data(any) addr:0x020d833c -data_ov024_020d8350 kind:data(any) addr:0x020d8350 -data_ov024_020d8358 kind:data(any) addr:0x020d8358 -data_ov024_020d8374 kind:data(any) addr:0x020d8374 -data_ov024_020d83a4 kind:data(any) addr:0x020d83a4 -data_ov024_020d83ac kind:data(any) addr:0x020d83ac -data_ov024_020d83b4 kind:data(any) addr:0x020d83b4 -data_ov024_020d83b8 kind:data(any) addr:0x020d83b8 -data_ov024_020d83c4 kind:data(any) addr:0x020d83c4 -data_ov024_020d83c8 kind:data(any) addr:0x020d83c8 -data_ov024_020d83d4 kind:data(any) addr:0x020d83d4 -data_ov024_020d83dc kind:data(any) addr:0x020d83dc -data_ov024_020d83e4 kind:data(any) addr:0x020d83e4 -data_ov024_020d83ec kind:data(any) addr:0x020d83ec -data_ov024_020d83f4 kind:data(any) addr:0x020d83f4 -data_ov024_020d83fc kind:data(any) addr:0x020d83fc -data_ov024_020d8404 kind:data(any) addr:0x020d8404 -data_ov024_020d840c kind:data(any) addr:0x020d840c -data_ov024_020d8414 kind:data(any) addr:0x020d8414 -data_ov024_020d841c kind:data(any) addr:0x020d841c -data_ov024_020d8424 kind:data(any) addr:0x020d8424 -data_ov024_020d842c kind:data(any) addr:0x020d842c -data_ov024_020d8434 kind:data(any) addr:0x020d8434 -data_ov024_020d843c kind:data(any) addr:0x020d843c -data_ov024_020d8444 kind:data(any) addr:0x020d8444 -data_ov024_020d8450 kind:data(any) addr:0x020d8450 -data_ov024_020d845c kind:data(any) addr:0x020d845c -data_ov024_020d8468 kind:data(any) addr:0x020d8468 -data_ov024_020d8474 kind:data(any) addr:0x020d8474 -data_ov024_020d8484 kind:data(any) addr:0x020d8484 -data_ov024_020d84ac kind:data(any) addr:0x020d84ac -data_ov024_020d84bc kind:data(any) addr:0x020d84bc -data_ov024_020d84e0 kind:data(any) addr:0x020d84e0 -data_ov024_020d84ec kind:data(any) addr:0x020d84ec -data_ov024_020d84f8 kind:data(any) addr:0x020d84f8 -data_ov024_020d8500 kind:data(any) addr:0x020d8500 -data_ov024_020d8504 kind:data(any) addr:0x020d8504 -data_ov024_020d8510 kind:data(any) addr:0x020d8510 -data_ov024_020d851c kind:data(any) addr:0x020d851c -data_ov024_020d8550 kind:data(any) addr:0x020d8550 -data_ov024_020d8558 kind:data(any) addr:0x020d8558 -data_ov024_020d8560 kind:data(any) addr:0x020d8560 -data_ov024_020d8568 kind:data(any) addr:0x020d8568 -data_ov024_020d8570 kind:data(any) addr:0x020d8570 -data_ov024_020d8578 kind:data(any) addr:0x020d8578 -data_ov024_020d8580 kind:data(any) addr:0x020d8580 -data_ov024_020d8588 kind:data(any) addr:0x020d8588 -data_ov024_020d8590 kind:data(any) addr:0x020d8590 -data_ov024_020d859c kind:data(any) addr:0x020d859c -data_ov024_020d85a8 kind:data(any) addr:0x020d85a8 -data_ov024_020d85bc kind:data(any) addr:0x020d85bc -_ZTV19data_ov024_020d85d4 kind:data(any) addr:0x020d85d4 -_ZTV19data_ov024_020d85f8 kind:data(any) addr:0x020d85f8 +_ZTV27UnkStruct_ov024_020d86a0_00 kind:data(any) addr:0x020d8208 +data_ov024_020d8224 kind:data(byte[4]) addr:0x020d8224 +data_ov024_020d8228 kind:data(byte[4]) addr:0x020d8228 +data_ov024_020d822c kind:data(byte[4]) addr:0x020d822c +data_ov024_020d8230 kind:data(byte[4]) addr:0x020d8230 +data_ov024_020d8234 kind:data(byte[4]) addr:0x020d8234 +data_ov024_020d8238 kind:data(byte[4]) addr:0x020d8238 +_ZTV20PlayerActor_A0_38_18 kind:data(any) addr:0x020d823c +_ZTV20PlayerActor_A0_38_04 kind:data(any) addr:0x020d8248 +sCreditsEndingType kind:data(byte[2]) addr:0x020d8254 local +_ZTV14UnkDataStruct4 kind:data(any) addr:0x020d8258 +@2128 kind:data(byte[6]) addr:0x020d8268 local +@2129 kind:data(byte[21]) addr:0x020d8270 local +@2130 kind:data(byte[19]) addr:0x020d8288 local +@1520 kind:data(byte[4]) addr:0x020d829c local +@1525 kind:data(byte[4]) addr:0x020d82a0 local +@1526 kind:data(byte[4]) addr:0x020d82a4 local +@1523 kind:data(byte[5]) addr:0x020d82a8 local +@1521 kind:data(byte[5]) addr:0x020d82b0 local +@1522 kind:data(byte[5]) addr:0x020d82b8 local +@1517 kind:data(byte[6]) addr:0x020d82c0 local +@1524 kind:data(byte[6]) addr:0x020d82c8 local +@1511 kind:data(byte[7]) addr:0x020d82d0 local +@1508 kind:data(byte[7]) addr:0x020d82d8 local +@1510 kind:data(byte[8]) addr:0x020d82e0 local +@1515 kind:data(byte[10]) addr:0x020d82e8 local +@1509 kind:data(byte[10]) addr:0x020d82f4 local +@1512 kind:data(byte[10]) addr:0x020d8300 local +@1513 kind:data(byte[10]) addr:0x020d830c local +@1514 kind:data(byte[10]) addr:0x020d8318 local +@1516 kind:data(byte[11]) addr:0x020d8324 local +@1518 kind:data(byte[11]) addr:0x020d8330 local +@1519 kind:data(byte[11]) addr:0x020d833c local +_ZTV25MapObjectProfile_Derived5 kind:data(any) addr:0x020d8348 +data_ov024_020d8358 kind:data(any) addr:0x020d8358 local +data_ov024_020d8374 kind:data(any) addr:0x020d8374 local +@1553 kind:data(byte[6]) addr:0x020d83a4 local +@1554 kind:data(byte[6]) addr:0x020d83ac local +@1555 kind:data(byte[4]) addr:0x020d83b4 local +@1562 kind:data(byte[10]) addr:0x020d83b8 local +@1563 kind:data(byte) addr:0x020d83c4 local +@2563 kind:data(byte[12]) addr:0x020d83c8 local +@2564 kind:data(byte[7]) addr:0x020d83d4 local +@2565 kind:data(byte[6]) addr:0x020d83dc local +@2566 kind:data(byte[6]) addr:0x020d83e4 local +@2567 kind:data(byte[6]) addr:0x020d83ec local +@2568 kind:data(byte[6]) addr:0x020d83f4 local +@2569 kind:data(byte[6]) addr:0x020d83fc local +@1620 kind:data(byte[5]) addr:0x020d8404 local +@1624 kind:data(byte[5]) addr:0x020d840c local +@1626 kind:data(byte[5]) addr:0x020d8414 local +@1619 kind:data(byte[5]) addr:0x020d841c local +@1625 kind:data(byte[5]) addr:0x020d8424 local +@1623 kind:data(byte[5]) addr:0x020d842c local +@1622 kind:data(byte[5]) addr:0x020d8434 local +@1621 kind:data(byte[5]) addr:0x020d843c local +@1618 kind:data(byte[11]) addr:0x020d8444 local +@1617 kind:data(byte[11]) addr:0x020d8450 local +@1616 kind:data(byte[11]) addr:0x020d845c local +@1615 kind:data(byte[11]) addr:0x020d8468 local +data_ov024_020d8474 kind:data(any) addr:0x020d8474 local +data_ov024_020d8484 kind:data(any) addr:0x020d8484 local +_ZTV21UnkStruct_027e0d00_20 kind:data(any) addr:0x020d84a4 +_ZTV20ModelRender_Derived2 kind:data(any) addr:0x020d84b4 +@1734 kind:data(byte[10]) addr:0x020d84e0 local +@1737 kind:data(byte[10]) addr:0x020d84ec local +@1741 kind:data(byte[6]) addr:0x020d84f8 local +@1742 kind:data(byte[4]) addr:0x020d8500 local +@1776 kind:data(byte[11]) addr:0x020d8504 local +@1777 kind:data(byte[12]) addr:0x020d8510 local +_ZZ19func_ov024_020d51dcP5Vec2sjE19data_ov024_020d851c kind:data(any) addr:0x020d851c local +data_ov024_020d8520 kind:data(any) addr:0x020d8520 +data_ov024_020d8550 kind:data(byte[5]) addr:0x020d8550 +data_ov024_020d8558 kind:data(byte[5]) addr:0x020d8558 +data_ov024_020d8560 kind:data(byte[5]) addr:0x020d8560 +data_ov024_020d8568 kind:data(byte[5]) addr:0x020d8568 +data_ov024_020d8570 kind:data(byte[5]) addr:0x020d8570 +data_ov024_020d8578 kind:data(byte[7]) addr:0x020d8578 +data_ov024_020d8580 kind:data(byte[7]) addr:0x020d8580 +data_ov024_020d8588 kind:data(byte[7]) addr:0x020d8588 +data_ov024_020d8590 kind:data(byte[9]) addr:0x020d8590 +data_ov024_020d859c kind:data(byte[9]) addr:0x020d859c +data_ov024_020d85a8 kind:data(byte[19]) addr:0x020d85a8 +data_ov024_020d85bc kind:data(byte[21]) addr:0x020d85bc +_ZTV19ActorProfileUnkOBPC kind:data(any) addr:0x020d85d4 +_ZTV12ActorUnkOBPC kind:data(byte[92]) addr:0x020d85f8 data_ov024_020d8660 kind:bss addr:0x020d8660 _ZGVZN24UnkStruct_ov024_020d866019func_ov024_020c4ac0EvE8instance kind:bss addr:0x020d8664 local @1365 kind:bss addr:0x020d8668 local _ZZN24UnkStruct_ov024_020d866019func_ov024_020c4ac0EvE8instance kind:bss addr:0x020d8674 local data_ov024_020d8694 kind:bss addr:0x020d8694 -data_ov024_020d8698 kind:bss addr:0x020d8698 +gpUICounterManager kind:bss addr:0x020d8698 data_ov024_020d869c kind:bss(size=0x2) addr:0x020d869c local data_ov024_020d86a0 kind:bss addr:0x020d86a0 -data_ov024_020d86a4 kind:bss addr:0x020d86a4 +_ZGVZ19func_ov024_020d51dcP5Vec2sjE19data_ov024_020d851c kind:bss addr:0x020d86a4 local data_ov024_020d86a8 kind:bss addr:0x020d86a8 data_ov024_020d86ac kind:bss addr:0x020d86ac gpMiscAdvManager kind:bss addr:0x020d86b0 -data_ov024_020d86b4 kind:bss addr:0x020d86b4 ambiguous -data_ov024_020d86b8 kind:bss addr:0x020d86b8 -data_ov024_020d86bc kind:bss addr:0x020d86bc -_ZN15ProfileInstanceI19ActorProfileUnkOBPCE8sProfileE kind:bss addr:0x020d86c8 +data_ov024_020d86b4 kind:bss(size=0x1) addr:0x020d86b4 +_ZGVN15ProfileInstanceI19ActorProfileUnkOBPCE8sProfileE kind:bss addr:0x020d86b8 +@640 kind:bss addr:0x020d86bc local +_ZN15ProfileInstanceI19ActorProfileUnkOBPCE8sProfileE kind:bss(size=0x3c) addr:0x020d86c8 diff --git a/config/eur/arm9/overlays/ov026/symbols.txt b/config/eur/arm9/overlays/ov026/symbols.txt index 7bde3b99..0a598e13 100644 --- a/config/eur/arm9/overlays/ov026/symbols.txt +++ b/config/eur/arm9/overlays/ov026/symbols.txt @@ -93,11 +93,11 @@ func_ov026_020dc394 kind:function(arm,size=0x6c) addr:0x020dc394 func_ov026_020dc400 kind:function(arm,size=0x34) addr:0x020dc400 func_ov026_020dc434 kind:function(arm,size=0x28) addr:0x020dc434 func_ov026_020dc45c kind:function(arm,size=0x4) addr:0x020dc45c -func_ov026_020dc460 kind:function(arm,size=0x2a8) addr:0x020dc460 +_ZN21UnkStruct_027e0ce0_38C1Ev kind:function(arm,size=0x2a8) addr:0x020dc460 func_ov026_020dc708 kind:function(arm,size=0x14) addr:0x020dc708 func_ov026_020dc71c kind:function(arm,size=0x14) addr:0x020dc71c -func_ov026_020dc730 kind:function(arm,size=0xdc) addr:0x020dc730 -_ZN19func_ov026_020dc80cD0Ev kind:function(arm,size=0xe4) addr:0x020dc80c +_ZN21UnkStruct_027e0ce0_38D1Ev kind:function(arm,size=0xdc) addr:0x020dc730 +_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 @@ -679,7 +679,7 @@ func_ov026_020f46c8 kind:function(arm,size=0x10) addr:0x020f46c8 func_ov026_020f46d8 kind:function(arm,size=0x8) addr:0x020f46d8 _ZN19func_ov026_020f46e0D1Ev kind:function(arm,size=0x70) addr:0x020f46e0 _ZN19func_ov026_020f4750D0Ev kind:function(arm,size=0x78) addr:0x020f4750 -func_ov026_020f47c8 kind:function(arm,size=0x68) addr:0x020f47c8 +_ZN24UnkStruct_027e0ce0_38_10C1Ev kind:function(arm,size=0x68) addr:0x020f47c8 func_ov026_020f4830 kind:function(arm,size=0x14) addr:0x020f4830 _ZN24UnkStruct_ov026_0213f57819func_ov026_020f4844Ev kind:function(arm,size=0x2c) addr:0x020f4844 _ZN24UnkStruct_027e0ce0_38_1019func_ov026_020f4870Ev kind:function(arm,size=0x298) addr:0x020f4870 diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index a7451bb9..cdd983f1 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -139,7 +139,7 @@ func_ov031_020db028 kind:function(arm,size=0xd4) addr:0x020db028 func_ov031_020db0fc kind:function(arm,size=0x24) addr:0x020db0fc func_ov031_020db120 kind:function(arm,size=0x40) addr:0x020db120 func_ov031_020db160 kind:function(arm,size=0x30) addr:0x020db160 -func_ov031_020db190 kind:function(arm,size=0x24) addr:0x020db190 +_ZN18PlayerActorBase_74C1Ev kind:function(arm,size=0x24) addr:0x020db190 func_ov031_020db1b4 kind:function(arm,size=0xfc) addr:0x020db1b4 func_ov031_020db2b0 kind:function(arm,size=0x2c) addr:0x020db2b0 func_ov031_020db2dc kind:function(arm,size=0x5c) addr:0x020db2dc @@ -1931,14 +1931,14 @@ func_ov031_0210ea58 kind:function(arm,size=0x2c) addr:0x0210ea58 _ZN19func_ov031_0210ea84D0Ev kind:function(arm,size=0x1c) addr:0x0210ea84 _ZN19func_ov031_0210eaa0D1Ev kind:function(arm,size=0x20) addr:0x0210eaa0 _ZN19func_ov031_0210eac0D0Ev kind:function(arm,size=0x28) addr:0x0210eac0 -_ZN21UnkStruct_020d8698_44C1Ev kind:function(thumb,size=0x3cc) addr:0x0210eae8 -_ZN21UnkStruct_020d8698_4419func_ov031_0210eeb4Ev kind:function(arm,size=0x200) addr:0x0210eeb4 -_ZN21UnkStruct_020d8698_448vfunc_08Ev kind:function(arm,size=0x580) addr:0x0210f0b4 -_ZN21UnkStruct_020d8698_448vfunc_0CEv kind:function(arm,size=0x1b0) addr:0x0210f634 -_ZN21UnkStruct_020d8698_4419func_ov031_0210f7e4Ejb kind:function(arm,size=0x30) addr:0x0210f7e4 -_ZN21UnkStruct_020d8698_4419func_ov031_0210f814Ev kind:function(arm,size=0xec) addr:0x0210f814 -_ZN21UnkStruct_020d8698_44D1Ev kind:function(arm,size=0x14) addr:0x0210f900 -_ZN21UnkStruct_020d8698_44D0Ev kind:function(arm,size=0x1c) addr:0x0210f914 +_ZN15UICounter_ItemsC1Ev kind:function(thumb,size=0x3cc) addr:0x0210eae8 +_ZN15UICounter_Items19func_ov031_0210eeb4Ev kind:function(arm,size=0x200) addr:0x0210eeb4 +_ZN15UICounter_Items8vfunc_08Ev kind:function(arm,size=0x580) addr:0x0210f0b4 +_ZN15UICounter_Items8vfunc_0CEv kind:function(arm,size=0x1b0) addr:0x0210f634 +_ZN15UICounter_Items19func_ov031_0210f7e4Ejb kind:function(arm,size=0x30) addr:0x0210f7e4 +_ZN15UICounter_Items19func_ov031_0210f814Ev kind:function(arm,size=0xec) addr:0x0210f814 +_ZN15UICounter_ItemsD1Ev kind:function(arm,size=0x14) addr:0x0210f900 +_ZN15UICounter_ItemsD0Ev kind:function(arm,size=0x1c) addr:0x0210f914 func_ov031_0210f930 kind:function(arm,size=0xac) addr:0x0210f930 func_ov031_0210f9dc kind:function(arm,size=0x4c) addr:0x0210f9dc _ZN19func_ov031_0210fa28D1Ev kind:function(arm,size=0x14) addr:0x0210fa28 diff --git a/config/eur/arm9/overlays/ov088/symbols.txt b/config/eur/arm9/overlays/ov088/symbols.txt index 275e2bd1..5bdc4ff6 100644 --- a/config/eur/arm9/overlays/ov088/symbols.txt +++ b/config/eur/arm9/overlays/ov088/symbols.txt @@ -322,7 +322,7 @@ func_ov088_0216f818 kind:function(arm,size=0x1c) addr:0x0216f818 func_ov088_0216f834 kind:function(arm,size=0x24) addr:0x0216f834 func_ov088_0216f858 kind:function(arm,size=0x1c) addr:0x0216f858 func_ov088_0216f874 kind:function(arm,size=0x2c) addr:0x0216f874 -func_ov088_0216f8a0 kind:function(thumb,size=0x298) addr:0x0216f8a0 +_ZN21UnkStruct_027e0ce0_3CC1Ev kind:function(thumb,size=0x298) addr:0x0216f8a0 func_ov088_0216fb38 kind:function(thumb,size=0x8c) addr:0x0216fb38 func_ov088_0216fbc4 kind:function(thumb,size=0x2c) addr:0x0216fbc4 func_ov088_0216fbf0 kind:function(arm,size=0xb0) addr:0x0216fbf0 diff --git a/config/eur/arm9/overlays/ov101/symbols.txt b/config/eur/arm9/overlays/ov101/symbols.txt index f0cc9084..205f72c0 100644 --- a/config/eur/arm9/overlays/ov101/symbols.txt +++ b/config/eur/arm9/overlays/ov101/symbols.txt @@ -9,7 +9,7 @@ func_ov101_02182dc8 kind:function(thumb,size=0x20) addr:0x02182dc8 func_ov101_02182de8 kind:function(thumb,size=0xc) addr:0x02182de8 func_ov101_02182df4 kind:function(thumb,size=0xc) addr:0x02182df4 func_ov101_02182e00 kind:function(thumb,size=0xc) addr:0x02182e00 -func_ov101_02182e0c kind:function(thumb,size=0x154) addr:0x02182e0c +_ZN21UnkStruct_027e0ce0_40C1Ev kind:function(thumb,size=0x154) addr:0x02182e0c func_ov101_02182f60 kind:function(thumb,size=0x54) addr:0x02182f60 func_ov101_02182fb4 kind:function(thumb,size=0x50) addr:0x02182fb4 func_ov101_02183004 kind:function(thumb,size=0x1e) addr:0x02183004 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 9fef0953..12d73e1d 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -752,7 +752,7 @@ func_02015380 kind:function(arm,size=0x24) addr:0x02015380 _ZN14UnkDataStruct2D1Ev kind:function(arm,size=0x20) addr:0x020153a4 _ZN17UnkFileSystem2_10D1Ev kind:function(arm,size=0x20) addr:0x020153c4 func_020153e4 kind:function(arm,size=0x18) addr:0x020153e4 -func_020153fc kind:function(thumb,size=0x12) addr:0x020153fc +_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_02015460EPKcPvi kind:function(thumb,size=0x1c) addr:0x02015460 @@ -821,8 +821,8 @@ func_0201653c kind:function(thumb,size=0x60) addr:0x0201653c func_0201659c kind:function(arm,size=0x14) addr:0x0201659c func_020165b0 kind:function(arm,size=0x50) addr:0x020165b0 func_02016600 kind:function(arm,size=0x20) addr:0x02016600 -func_02016620 kind:function(arm,size=0x3c) addr:0x02016620 -func_0201665c kind:function(arm,size=0x20) addr:0x0201665c +_ZN36MapObjectProfile_Derived2_20_Base_18C1Ev kind:function(arm,size=0x3c) addr:0x02016620 +_ZN36MapObjectProfile_Derived2_20_Base_18D1Ev kind:function(arm,size=0x20) addr:0x0201665c _ZN12LinkListImplC2Ev kind:function(arm,size=0xc) addr:0x0201667c _ZN12LinkListImplC1Ev kind:function(arm,size=0xc) addr:0x02016688 _ZN12LinkListImplD2Ev kind:function(arm,size=0x18) addr:0x02016694 @@ -863,12 +863,12 @@ func_020176f8 kind:function(arm,size=0x7c) addr:0x020176f8 func_02017774 kind:function(arm,size=0x8) addr:0x02017774 func_0201777c kind:function(arm,size=0x8) addr:0x0201777c func_02017784 kind:function(arm,size=0x8) addr:0x02017784 -func_0201778c kind:function(arm,size=0x24) addr:0x0201778c -func_020177b0 kind:function(arm,size=0x4) addr:0x020177b0 -_ZN13func_020177b4D0Ev kind:function(arm,size=0x14) addr:0x020177b4 +_ZN37UnkStruct_027e0960_TableEntry_04_BaseC1Ev kind:function(arm,size=0x24) addr:0x0201778c +_ZN37UnkStruct_027e0960_TableEntry_04_BaseD1Ev kind:function(arm,size=0x4) addr:0x020177b0 +_ZN37UnkStruct_027e0960_TableEntry_04_BaseD0Ev kind:function(arm,size=0x14) addr:0x020177b4 func_020177c8 kind:function(arm,size=0x4) addr:0x020177c8 func_020177cc kind:function(arm,size=0x18) addr:0x020177cc -func_020177e4 kind:function(arm,size=0x8) addr:0x020177e4 +_ZN37UnkStruct_027e0960_TableEntry_04_Base8vfunc_08Ev kind:function(arm,size=0x8) addr:0x020177e4 func_020177ec kind:function(arm,size=0x70) addr:0x020177ec func_0201785c kind:function(arm,size=0xd4) addr:0x0201785c func_02017930 kind:function(arm,size=0x4c) addr:0x02017930 diff --git a/config/jp/arm9/delinks.txt b/config/jp/arm9/delinks.txt index 466b81e8..f0c01e2c 100644 --- a/config/jp/arm9/delinks.txt +++ b/config/jp/arm9/delinks.txt @@ -71,6 +71,14 @@ libs/c/src/ansi_files.c: .data start:0x02045c1c end:0x02045d00 .bss start:0x02052d20 end:0x02053020 +libs/c/src/float.c: + complete + .data start:0x02045d00 end:0x02045d04 + +libs/c/src/locale.c: + complete + .data start:0x02045d04 end:0x02045f20 + libs/c/src/arith.c: complete .text start:0x02034e04 end:0x02034e1c @@ -117,14 +125,6 @@ libs/c/src/wmem.c: complete .text start:0x02035728 end:0x02035760 -libs/c/src/float.c: - complete - .data start:0x02045d00 end:0x02045d04 - -libs/c/src/locale.c: - complete - .data start:0x02045d04 end:0x02045f20 - libs/c/src/wprintf.c: .text start:0x02035760 end:0x0203768c .data start:0x02045f20 end:0x02045fa0 diff --git a/config/jp/arm9/dtcm/symbols.txt b/config/jp/arm9/dtcm/symbols.txt index 26b74e6a..401c501f 100644 --- a/config/jp/arm9/dtcm/symbols.txt +++ b/config/jp/arm9/dtcm/symbols.txt @@ -74,7 +74,7 @@ data_027e0960 kind:bss addr:0x027e0960 data_027e0964 kind:bss addr:0x027e0964 data_027e0970 kind:bss addr:0x027e0970 data_027e0988 kind:bss addr:0x027e0988 -data_027e0994 kind:bss addr:0x027e0994 +gpCurrentGameModeMgr kind:bss addr:0x027e0994 data_027e0998 kind:bss addr:0x027e0998 data_027e099c kind:bss addr:0x027e099c data_027e09a0 kind:bss addr:0x027e09a0 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index c94ba616..583bd6a4 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -131,7 +131,7 @@ func_01ffc634 kind:function(arm,size=0xa0) addr:0x01ffc634 func_01ffc6d4 kind:function(arm,size=0x70) addr:0x01ffc6d4 func_01ffc744 kind:function(arm,size=0x24) addr:0x01ffc744 func_01ffc768 kind:function(arm,size=0x3c) addr:0x01ffc768 -func_01ffc7a4 kind:function(arm,size=0xb4) addr:0x01ffc7a4 +_ZN20ModelRender_Derived18vfunc_1CEP19UnkSystem4_vfunc_1C kind:function(arm,size=0xb4) addr:0x01ffc7a4 func_01ffc858 kind:function(arm,size=0x88) addr:0x01ffc858 func_01ffc8e0 kind:function(arm,size=0x2b4) addr:0x01ffc8e0 func_01ffcb94 kind:function(arm,size=0x98) addr:0x01ffcb94 @@ -153,9 +153,9 @@ func_01ffd1b4 kind:function(arm,size=0x64) addr:0x01ffd1b4 func_01ffd218 kind:function(arm,size=0x38) addr:0x01ffd218 func_01ffd250 kind:function(arm,size=0x44) addr:0x01ffd250 func_01ffd294 kind:function(arm,size=0x11c) addr:0x01ffd294 -func_01ffd3b0 kind:function(arm,size=0x28) addr:0x01ffd3b0 -_ZN18UnkStruct_027e09a413func_01ffd3d8Ev kind:function(arm,size=0x28) addr:0x01ffd3d8 -_ZNK18UnkStruct_027e09a413func_01ffd400Ev kind:function(arm,size=0x20) addr:0x01ffd400 +_ZN18UnkStruct_027e09a46IsLandEv kind:function(arm,size=0x28) addr:0x01ffd3b0 +_ZN18UnkStruct_027e09a47IsTrainEv kind:function(arm,size=0x28) addr:0x01ffd3d8 +_ZNK18UnkStruct_027e09a421GetCurrentCourseEntryEv kind:function(arm,size=0x20) addr:0x01ffd400 _ZN18UnkStruct_027e09b813func_01ffd420Ev kind:function(arm,size=0x1c) addr:0x01ffd420 func_01ffd43c kind:function(arm,size=0x60) addr:0x01ffd43c func_01ffd49c kind:function(arm,size=0x1a4) addr:0x01ffd49c diff --git a/config/jp/arm9/overlays/ov000/relocs.txt b/config/jp/arm9/overlays/ov000/relocs.txt index ddad4f79..89328a20 100644 --- a/config/jp/arm9/overlays/ov000/relocs.txt +++ b/config/jp/arm9/overlays/ov000/relocs.txt @@ -1774,7 +1774,7 @@ from:0x02068370 kind:load to:0x027e0ce0 module:dtcm from:0x02068374 kind:load to:0x027e0d04 module:dtcm from:0x02068378 kind:load to:0x020d9264 module:overlay(24) from:0x0206837c kind:load to:0x020b7ab8 module:overlay(0) -from:0x02068380 kind:load to:0x020d9266 module:overlay(24) +from:0x02068380 kind:load to:0x020d9264 add:0x2 module:overlay(24) from:0x020684f8 kind:arm_call to:0x02069040 module:overlay(0) from:0x02068524 kind:arm_call to:0x020db1d4 module:overlay(31) from:0x02068550 kind:arm_call to:0x020db0e8 module:overlay(31) @@ -1799,7 +1799,7 @@ from:0x020687bc kind:load to:0x027e0ce0 module:dtcm from:0x020687c0 kind:load to:0x0204b5e0 module:main from:0x020687c4 kind:load to:0x027e0d04 module:dtcm from:0x020687c8 kind:load to:0x020b7ab8 module:overlay(0) -from:0x020687cc kind:load to:0x020d9266 module:overlay(24) +from:0x020687cc kind:load to:0x020d9264 add:0x2 module:overlay(24) from:0x020687f4 kind:arm_call to:0x02067d38 module:overlay(0) from:0x02068810 kind:load to:0x020b389c add:0x8 module:overlay(0) from:0x02068828 kind:arm_call to:0x02067d38 module:overlay(0) diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index e49483b3..612f9f27 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -109,11 +109,11 @@ func_ov000_020592bc kind:function(arm,size=0x30) addr:0x020592bc func_ov000_020592ec kind:function(arm,size=0x18) addr:0x020592ec _ZN11ModelRender8vfunc_20Ev kind:function(arm,size=0x18) addr:0x02059304 func_ov000_0205931c kind:function(arm,size=0x2c) addr:0x0205931c -_ZN11ModelRender8vfunc_10Ev kind:function(arm,size=0x7c) addr:0x02059348 +_ZN11ModelRender8vfunc_10EP7VecFx32P5Mat3pS1_ kind:function(arm,size=0x7c) addr:0x02059348 _ZN11ModelRender8vfunc_14EP5Mat3pP7VecFx32 kind:function(arm,size=0x64) addr:0x020593c4 _ZN11ModelRender8vfunc_18Ev kind:function(arm,size=0x1c) addr:0x02059428 -func_ov000_02059444 kind:function(thumb,size=0x2) addr:0x02059444 -_ZN19func_ov000_02059448D0Ev kind:function(thumb,size=0xc) addr:0x02059448 +_ZN15ModelRenderBaseD1Ev kind:function(thumb,size=0x2) addr:0x02059444 +_ZN15ModelRenderBaseD0Ev kind:function(thumb,size=0xc) addr:0x02059448 _ZN15ModelRenderBaseD2Ev kind:function(thumb,size=0x2) addr:0x02059454 func_ov000_02059458 kind:function(arm,size=0x8) addr:0x02059458 func_ov000_02059460 kind:function(arm,size=0x14) addr:0x02059460 @@ -150,9 +150,9 @@ _ZN33MapObjectProfile_Derived2_20_BaseD1Ev kind:function(thumb,size=0x48) addr:0 _ZN33MapObjectProfile_Derived2_20_BaseD0Ev kind:function(thumb,size=0x4c) addr:0x02059ba0 _ZN33MapObjectProfile_Derived2_20_BaseD2Ev kind:function(thumb,size=0x48) addr:0x02059bec _ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020586b4Eiiii kind:function(thumb,size=0x23c) addr:0x02059c34 -_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020588f0Ev kind:function(thumb,size=0x10) addr:0x02059e70 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020588f0EPviiS0_ kind:function(thumb,size=0x10) addr:0x02059e70 _ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058900Ev kind:function(thumb,size=0x12) addr:0x02059e80 -_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058914Ei kind:function(thumb,size=0xd0) addr:0x02059e94 +_ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058914EPv kind:function(thumb,size=0xd0) addr:0x02059e94 _ZN33MapObjectProfile_Derived2_20_Base19func_ov000_020589e4Ev kind:function(thumb,size=0x40) addr:0x02059f64 _ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058a24Ev kind:function(arm,size=0x34) addr:0x02059fa4 _ZN33MapObjectProfile_Derived2_20_Base19func_ov000_02058a58Ev kind:function(arm,size=0x2c) addr:0x02059fd8 @@ -199,24 +199,24 @@ func_ov000_0205a8f0 kind:function(thumb,size=0xec) addr:0x0205a8f0 func_ov000_0205a9dc kind:function(thumb,size=0x1b0) addr:0x0205a9dc func_ov000_0205ab8c kind:function(thumb,size=0x110) addr:0x0205ab8c func_ov000_0205ac9c kind:function(thumb,size=0x64) addr:0x0205ac9c -func_ov000_0205ad00 kind:function(thumb,size=0x20) addr:0x0205ad00 -func_ov000_0205ad20 kind:function(thumb,size=0x2c) addr:0x0205ad20 -func_ov000_0205ad4c kind:function(thumb,size=0x34) addr:0x0205ad4c +_ZN32UnkStruct_027e0960_TableEntry_04C1Ev kind:function(thumb,size=0x20) addr:0x0205ad00 +_ZN32UnkStruct_027e0960_TableEntry_04D1Ev kind:function(thumb,size=0x2c) addr:0x0205ad20 +_ZN32UnkStruct_027e0960_TableEntry_04D0Ev kind:function(thumb,size=0x34) addr:0x0205ad4c func_ov000_0205ad80 kind:function(thumb,size=0x124) addr:0x0205ad80 -func_ov000_0205aea4 kind:function(arm,size=0x20) addr:0x0205aea4 -func_ov000_0205aec4 kind:function(thumb,size=0x1c) addr:0x0205aec4 +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_0CEv kind:function(arm,size=0x20) addr:0x0205aea4 +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_08Ev kind:function(thumb,size=0x1c) addr:0x0205aec4 func_ov000_0205aee0 kind:function(thumb,size=0x288) addr:0x0205aee0 -func_ov000_0205b168 kind:function(thumb,size=0xa) addr:0x0205b168 -func_ov000_0205b174 kind:function(thumb,size=0x44) addr:0x0205b174 +_ZN29UnkStruct_027e0960_TableEntryC1Ev kind:function(thumb,size=0xa) addr:0x0205b168 +_ZN29UnkStruct_027e0960_TableEntryD1Ev kind:function(thumb,size=0x44) addr:0x0205b174 func_ov000_0205b1b8 kind:function(arm,size=0x9c) addr:0x0205b1b8 -func_ov000_0205b254 kind:function(arm,size=0xa4) addr:0x0205b254 +_ZN29UnkStruct_027e0960_TableEntry19func_ov000_02059cccEhh kind:function(arm,size=0xa4) addr:0x0205b254 func_ov000_0205b2f8 kind:function(arm,size=0x34) addr:0x0205b2f8 func_ov000_0205b32c kind:function(arm,size=0xfc) addr:0x0205b32c func_ov000_0205b428 kind:function(arm,size=0x1e4) addr:0x0205b428 -func_ov000_0205b60c kind:function(arm,size=0xc) addr:0x0205b60c -func_ov000_0205b618 kind:function(arm,size=0xc) addr:0x0205b618 -func_ov000_0205b624 kind:function(arm,size=0xc) addr:0x0205b624 -func_ov000_0205b630 kind:function(arm,size=0x1c) addr:0x0205b630 +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_18Ev kind:function(arm,size=0xc) addr:0x0205b60c +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_14Ev kind:function(arm,size=0xc) addr:0x0205b618 +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_10Ev kind:function(arm,size=0xc) addr:0x0205b624 +_ZN32UnkStruct_027e0960_TableEntry_048vfunc_1CEv kind:function(arm,size=0x1c) addr:0x0205b630 func_ov000_0205b64c kind:function(thumb,size=0x12) addr:0x0205b64c func_ov000_0205b660 kind:function(thumb,size=0x44) addr:0x0205b660 func_ov000_0205b6a4 kind:function(arm,size=0x4) addr:0x0205b6a4 @@ -230,24 +230,24 @@ func_ov000_0205b810 kind:function(arm,size=0x1c) addr:0x0205b810 func_ov000_0205b82c kind:function(arm,size=0x24) addr:0x0205b82c func_ov000_0205b850 kind:function(arm,size=0x54) addr:0x0205b850 func_ov000_0205b8a4 kind:function(arm,size=0x74) addr:0x0205b8a4 -func_ov000_0205b918 kind:function(arm,size=0x38) addr:0x0205b918 +_ZN18UnkStruct_027e096019func_ov000_0205a390Eh kind:function(arm,size=0x38) addr:0x0205b918 func_ov000_0205b950 kind:function(arm,size=0x34) addr:0x0205b950 -func_ov000_0205b984 kind:function(arm,size=0x130) addr:0x0205b984 +_ZN18UnkStruct_027e096019func_ov000_0205a3fcE7VecFx32i kind:function(arm,size=0x130) addr:0x0205b984 func_ov000_0205bab4 kind:function(arm,size=0xfc) addr:0x0205bab4 func_ov000_0205bbb0 kind:function(arm,size=0x10) addr:0x0205bbb0 func_ov000_0205bbc0 kind:function(arm,size=0x14) addr:0x0205bbc0 func_ov000_0205bbd4 kind:function(arm,size=0x44) addr:0x0205bbd4 -func_ov000_0205bc18 kind:function(arm,size=0x48) addr:0x0205bc18 +_ZN20ModelRender_Derived1C2EP10G3d_Model_iPv kind:function(arm,size=0x48) addr:0x0205bc18 func_ov000_0205bc60 kind:function(arm,size=0x48) addr:0x0205bc60 -func_ov000_0205bca8 kind:function(arm,size=0x18) addr:0x0205bca8 +_ZN20ModelRender_Derived18vfunc_08EP10G3d_Model_ kind:function(arm,size=0x18) addr:0x0205bca8 func_ov000_0205bcc0 kind:function(arm,size=0x40) addr:0x0205bcc0 -func_ov000_0205bd00 kind:function(arm,size=0x30) addr:0x0205bd00 -func_ov000_0205bd30 kind:function(arm,size=0x1c) addr:0x0205bd30 +_ZN20ModelRender_Derived119func_ov000_0205a778EPKc kind:function(arm,size=0x30) addr:0x0205bd00 +_ZN20ModelRender_Derived119func_ov000_0205a7a8Ei kind:function(arm,size=0x1c) addr:0x0205bd30 func_ov000_0205bd4c kind:function(arm,size=0x1c) addr:0x0205bd4c func_ov000_0205bd68 kind:function(arm,size=0x14) addr:0x0205bd68 func_ov000_0205bd7c kind:function(arm,size=0x10) addr:0x0205bd7c -_ZN19func_ov000_0205bd8cD1Ev kind:function(arm,size=0x14) addr:0x0205bd8c -_ZN19func_ov000_0205bda0D0Ev kind:function(arm,size=0x1c) addr:0x0205bda0 +_ZN20ModelRender_Derived1D1Ev kind:function(arm,size=0x14) addr:0x0205bd8c +_ZN20ModelRender_Derived1D0Ev kind:function(arm,size=0x1c) addr:0x0205bda0 func_ov000_0205bdbc kind:function(thumb,size=0xaa) addr:0x0205bdbc func_ov000_0205be68 kind:function(thumb,size=0x64) addr:0x0205be68 func_ov000_0205a944 kind:function(thumb,size=0xc) addr:0x0205becc @@ -284,7 +284,7 @@ func_ov000_0205c654 kind:function(arm,size=0x7c) addr:0x0205c654 func_ov000_0205c6d0 kind:function(arm,size=0x84) addr:0x0205c6d0 func_ov000_0205c754 kind:function(arm,size=0xc) addr:0x0205c754 func_ov000_0205c760 kind:function(arm,size=0x4c) addr:0x0205c760 -func_ov000_0205c7ac kind:function(arm,size=0xb0) addr:0x0205c7ac +func_ov000_0205c7ac_jp kind:function(arm,size=0xb0) addr:0x0205c7ac func_ov000_0205c85c kind:function(arm,size=0x50) addr:0x0205c85c func_ov000_0205c8ac kind:function(arm,size=0x50) addr:0x0205c8ac func_ov000_0205c8fc kind:function(arm,size=0x18) addr:0x0205c8fc @@ -314,8 +314,8 @@ func_ov000_0205d5c4 kind:function(arm,size=0x6c) addr:0x0205d5c4 func_ov000_0205d630 kind:function(arm,size=0xe0) addr:0x0205d630 func_ov000_0205d710 kind:function(arm,size=0x8) addr:0x0205d710 func_ov000_0205d718 kind:function(arm,size=0x60) addr:0x0205d718 -func_ov000_0205d778 kind:function(arm,size=0x14) addr:0x0205d778 -func_ov000_0205d78c kind:function(arm,size=0x1a8) addr:0x0205d78c +func_ov000_0205c1f0 kind:function(arm,size=0x14) addr:0x0205d778 +func_ov000_0205c204 kind:function(arm,size=0x1a8) addr:0x0205d78c func_ov000_0205d934 kind:function(arm,size=0x14) addr:0x0205d934 func_ov000_0205d948 kind:function(arm,size=0x74) addr:0x0205d948 func_ov000_0205d9bc kind:function(arm,size=0x74) addr:0x0205d9bc @@ -327,9 +327,9 @@ func_ov000_0205db58 kind:function(arm,size=0xd4) addr:0x0205db58 func_ov000_0205dc2c kind:function(arm,size=0x2c) addr:0x0205dc2c func_ov000_0205dc58 kind:function(arm,size=0x34) addr:0x0205dc58 func_ov000_0205dc8c kind:function(arm,size=0x48) addr:0x0205dc8c -func_ov000_0205dcd4 kind:function(arm,size=0x34) addr:0x0205dcd4 +func_ov000_0205c74c kind:function(arm,size=0x34) addr:0x0205dcd4 func_ov000_0205dd08 kind:function(arm,size=0x2c) addr:0x0205dd08 -func_ov000_0205dd34 kind:function(arm,size=0x58) addr:0x0205dd34 +func_ov000_0205c7ac kind:function(arm,size=0x58) addr:0x0205dd34 func_ov000_0205dd8c kind:function(arm,size=0x78) addr:0x0205dd8c func_ov000_0205de04 kind:function(arm,size=0xc) addr:0x0205de04 func_ov000_0205de10 kind:function(arm,size=0xc) addr:0x0205de10 @@ -338,14 +338,14 @@ func_ov000_0205de78 kind:function(arm,size=0x14) addr:0x0205de78 _ZN18UnkStruct_027e0ce019func_ov000_0205c904Ev kind:function(arm,size=0x14) addr:0x0205de8c func_ov000_0205dea0 kind:function(arm,size=0x14) addr:0x0205dea0 func_ov000_0205deb4 kind:function(arm,size=0x18) addr:0x0205deb4 -_ZN18UnkStruct_027e0d0019func_ov000_0205c944Ev kind:function(arm,size=0x10) addr:0x0205decc +_ZN18UnkStruct_027e0d0011GetInstanceEv kind:function(arm,size=0x10) addr:0x0205decc func_ov000_0205dedc kind:function(arm,size=0x18) addr:0x0205dedc func_ov000_0205def4 kind:function(arm,size=0x18) addr:0x0205def4 func_ov000_0205c984 kind:function(arm,size=0x14) addr:0x0205df0c func_ov000_0205df20 kind:function(arm,size=0x1c) addr:0x0205df20 func_ov000_0205c9b4 kind:function(arm,size=0x1c) addr:0x0205df3c -func_ov000_0205df58 kind:function(arm,size=0x48) addr:0x0205df58 -func_ov000_0205dfa0 kind:function(arm,size=0x1c) addr:0x0205dfa0 +func_ov000_0205c9d0 kind:function(arm,size=0x48) addr:0x0205df58 +func_ov000_0205ca18 kind:function(arm,size=0x1c) addr:0x0205dfa0 func_ov000_0205dfbc kind:function(arm,size=0x40) addr:0x0205dfbc func_ov000_0205dffc kind:function(arm,size=0x40) addr:0x0205dffc func_ov000_0205e03c kind:function(arm,size=0x28) addr:0x0205e03c @@ -487,7 +487,7 @@ func_ov000_02062cf4 kind:function(thumb,size=0xbc) addr:0x02062cf4 func_ov000_02062db0 kind:function(thumb,size=0x28) addr:0x02062db0 _ZN23UnkStruct_027e0998_Base19func_ov000_02061850Ei kind:function(arm,size=0x18) addr:0x02062dd8 _ZN23UnkStruct_027e0998_Base8vfunc_00EP7VecFx32P5Vec2sPt kind:function(arm,size=0x1e0) addr:0x02062df0 -func_ov000_02062fd0 kind:function(arm,size=0x28) addr:0x02062fd0 +_ZN23UnkStruct_027e0998_Base19func_ov000_02061a48EP7VecFx32P5Vec2sS3_ kind:function(arm,size=0x28) addr:0x02062fd0 _ZN23UnkStruct_027e0998_Base19func_ov000_02061a70Ev kind:function(arm,size=0xc) addr:0x02062ff8 func_ov000_02063004 kind:function(arm,size=0x10) addr:0x02063004 _ZN26GameModeManagerBase_104_0CD1Ev kind:function(arm,size=0x18) addr:0x02063014 @@ -736,7 +736,7 @@ _ZN24UnkStruct_ov000_020b504c19func_ov000_02067e60Ehi kind:function(arm,size=0xf _ZN24UnkStruct_ov000_020b504c19func_ov000_02067f5cEi kind:function(arm,size=0x2c) addr:0x02069500 _ZN24UnkStruct_ov000_020b504c19func_ov000_02067f88Eii kind:function(arm,size=0xe0) addr:0x0206952c _ZN24UnkStruct_ov000_020b504c19func_ov000_02068068Ei kind:function(arm,size=0x14) addr:0x0206960c -_ZN24UnkStruct_ov000_020b504c19func_ov000_0206807cEPvS0_ kind:function(arm,size=0x48) addr:0x02069620 +_ZN24UnkStruct_ov000_020b504c19func_ov000_0206807cEiPv kind:function(arm,size=0x48) addr:0x02069620 func_ov000_02069668 kind:function(arm,size=0xd0) addr:0x02069668 func_ov000_02069738 kind:function(arm,size=0x98) addr:0x02069738 func_ov000_020697d0 kind:function(arm,size=0x94) addr:0x020697d0 @@ -811,12 +811,12 @@ func_ov000_0206b89c kind:function(arm,size=0x210) addr:0x0206b89c func_ov000_0206baac kind:function(arm,size=0x24) addr:0x0206baac func_ov000_0206bad0 kind:function(arm,size=0x94) addr:0x0206bad0 func_ov000_0206bb64 kind:function(arm,size=0xc) addr:0x0206bb64 -func_ov000_0206bb70 kind:function(arm,size=0xc) addr:0x0206bb70 +_ZN24UnkStruct_ov000_020b50c019func_ov000_0206a5ccEi kind:function(arm,size=0xc) addr:0x0206bb70 _ZN24UnkStruct_ov000_020b50c019func_ov000_0206a5d8Ei kind:function(arm,size=0x24) addr:0x0206bb7c -func_ov000_0206bba0 kind:function(arm,size=0xa8) addr:0x0206bba0 +_ZN24UnkStruct_ov000_020b50c019func_ov000_0206a5fcEv kind:function(arm,size=0xa8) addr:0x0206bba0 _ZN24UnkStruct_ov000_020b50c019func_ov000_0206a6a4Ei kind:function(arm,size=0x60) addr:0x0206bc48 func_ov000_0206bca8 kind:function(arm,size=0x3c) addr:0x0206bca8 -func_ov000_0206bce4 kind:function(arm,size=0x18) addr:0x0206bce4 +_ZN24UnkStruct_ov000_020b50c019func_ov000_0206a740Ev kind:function(arm,size=0x18) addr:0x0206bce4 _ZN24UnkStruct_ov000_020b50c019func_ov000_0206a758Ev kind:function(arm,size=0x24) addr:0x0206bcfc _ZN24UnkStruct_ov000_020b50c019func_ov000_0206a77cEv kind:function(arm,size=0x28) addr:0x0206bd20 func_ov000_0206bd48 kind:function(arm,size=0x8c) addr:0x0206bd48 @@ -915,7 +915,7 @@ func_ov000_0206f038 kind:function(arm,size=0x18) addr:0x0206f038 func_ov000_0206f050 kind:function(arm,size=0xb0) addr:0x0206f050 _ZN24UnkStruct_ov000_020b521419func_ov000_0206db44Ei kind:function(arm,size=0xc8) addr:0x0206f100 func_ov000_0206f1c8 kind:function(arm,size=0x40) addr:0x0206f1c8 -func_ov000_0206f208 kind:function(arm,size=0x14) addr:0x0206f208 +_ZN24UnkStruct_ov000_020b521419func_ov000_0206dc4cEi kind:function(arm,size=0x14) addr:0x0206f208 func_ov000_0206f21c kind:function(arm,size=0x54) addr:0x0206f21c func_ov000_0206f270 kind:function(arm,size=0x58) addr:0x0206f270 func_ov000_0206f2c8 kind:function(arm,size=0x180) addr:0x0206f2c8 @@ -986,7 +986,7 @@ func_ov000_020717d8 kind:function(arm,size=0x14) addr:0x020717d8 func_ov000_020717ec kind:function(arm,size=0x14) addr:0x020717ec func_ov000_02071800 kind:function(arm,size=0x1c) addr:0x02071800 func_ov000_0207181c kind:function(arm,size=0xfc) addr:0x0207181c -func_ov000_02071918 kind:function(arm,size=0x3c) addr:0x02071918 +_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_027e09a017GetRoomEntryIndexEv kind:function(arm,size=0x40) addr:0x02071974 @@ -1249,9 +1249,9 @@ func_ov000_020797b4 kind:function(arm,size=0x8c) addr:0x020797b4 func_ov000_02079840 kind:function(arm,size=0x4c) addr:0x02079840 func_ov000_0207988c kind:function(arm,size=0x14) addr:0x0207988c func_ov000_020798a0 kind:function(arm,size=0x48) addr:0x020798a0 -_ZN21UnkStruct_027e09bc_0c19func_ov000_02078230Ei kind:function(arm,size=0xe4) addr:0x020798e8 +_ZN21UnkStruct_027e09bc_0C19func_ov000_02078230Ei kind:function(arm,size=0xe4) addr:0x020798e8 func_ov000_020799cc kind:function(arm,size=0x38) addr:0x020799cc -_ZN21UnkStruct_027e09bc_0c19func_ov000_0207834cEP7VecFx32ii kind:function(arm,size=0x40) addr:0x02079a04 +_ZN21UnkStruct_027e09bc_0C19func_ov000_0207834cEP7VecFx32ii kind:function(arm,size=0x40) addr:0x02079a04 func_ov000_02079a44 kind:function(arm,size=0x70) addr:0x02079a44 func_ov000_02079ab4 kind:function(arm,size=0x88) addr:0x02079ab4 func_ov000_02079b3c kind:function(arm,size=0x40) addr:0x02079b3c @@ -1268,7 +1268,7 @@ func_ov000_02079d94 kind:function(arm,size=0x2c) addr:0x02079d94 func_ov000_02079dc0 kind:function(arm,size=0x24) addr:0x02079dc0 func_ov000_02079de4 kind:function(arm,size=0x1c) addr:0x02079de4 func_ov000_02079e00 kind:function(arm,size=0x1c) addr:0x02079e00 -_ZN21UnkStruct_027e09bc_0c19func_ov000_02078764EP7VecFx32Pvi kind:function(arm,size=0x54) addr:0x02079e1c +_ZN21UnkStruct_027e09bc_0C19func_ov000_02078764EP7VecFx32Pvi kind:function(arm,size=0x54) addr:0x02079e1c func_ov000_02079e70 kind:function(arm,size=0x7c) addr:0x02079e70 func_ov000_02079eec kind:function(arm,size=0x9c) addr:0x02079eec func_ov000_02079f88 kind:function(arm,size=0x68) addr:0x02079f88 @@ -1411,9 +1411,9 @@ func_ov000_0207d43c kind:function(arm,size=0x260) addr:0x0207d43c func_ov000_0207d69c kind:function(arm,size=0x4) addr:0x0207d69c _ZN19func_ov000_0207d6a0D0Ev kind:function(arm,size=0x14) addr:0x0207d6a0 func_ov000_0207d6b4 kind:function(arm,size=0x4) addr:0x0207d6b4 -func_ov000_0207d6b8 kind:function(arm,size=0x8) addr:0x0207d6b8 -func_ov000_0207d6c0 kind:function(arm,size=0x8) addr:0x0207d6c0 -func_ov000_0207d6c8 kind:function(arm,size=0x8) addr:0x0207d6c8 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_08Ev kind:function(arm,size=0x8) addr:0x0207d6b8 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_0CEv kind:function(arm,size=0x8) addr:0x0207d6c0 +_ZN26UnkStruct_027e0ce0_38_Base8vfunc_10Ev kind:function(arm,size=0x8) addr:0x0207d6c8 _ZN17MapObject_10_BaseC2Ev kind:function(arm,size=0x30) addr:0x0207d6d0 func_ov000_0207d700 kind:function(arm,size=0x30) addr:0x0207d700 func_ov000_0207d730 kind:function(arm,size=0x38) addr:0x0207d730 @@ -1494,9 +1494,9 @@ _ZN19func_ov000_020803c8D2Ev kind:function(arm,size=0x30) addr:0x020803c8 func_ov000_020803f8 kind:function(arm,size=0x44) addr:0x020803f8 func_ov000_0208043c kind:function(arm,size=0x8) addr:0x0208043c func_ov000_02080444 kind:function(arm,size=0x20) addr:0x02080444 -_ZN26ActorUnk_ov000_020a8bb0_94C1Ev kind:function(arm,size=0x20) addr:0x02080464 +_ZN26ActorUnk_ov000_020a8bb0_94C2Ev kind:function(arm,size=0x20) addr:0x02080464 func_ov000_02080484 kind:function(arm,size=0x1c) addr:0x02080484 -_ZN26ActorUnk_ov000_020a8bb0_94D1Ev kind:function(arm,size=0x30) addr:0x020804a0 +_ZN26ActorUnk_ov000_020a8bb0_94D2Ev kind:function(arm,size=0x30) addr:0x020804a0 _ZN19func_ov000_020804d0D0Ev kind:function(arm,size=0x38) addr:0x020804d0 _ZN19func_ov000_02080508D2Ev kind:function(arm,size=0x30) addr:0x02080508 func_ov000_02080538 kind:function(arm,size=0x4) addr:0x02080538 @@ -1631,7 +1631,7 @@ func_ov000_02083358 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 -_ZN18UnkStruct_027e0cd819func_ov000_02081d7cEiii kind:function(arm,size=0xb4) addr:0x02083434 +_ZN18UnkStruct_027e0cd819func_ov000_02081d7cEiib kind:function(arm,size=0xb4) addr:0x02083434 _ZN18UnkStruct_027e0cd819func_ov000_02081e30Eii kind:function(arm,size=0x8c) addr:0x020834e8 func_ov000_02083574 kind:function(arm,size=0x10) addr:0x02083574 _ZN18UnkStruct_027e0cd819func_ov000_02081eccEsi kind:function(arm,size=0x10) addr:0x02083584 @@ -1759,7 +1759,7 @@ func_ov000_02087874 kind:function(arm,size=0xf8) addr:0x02087874 func_ov000_0208796c kind:function(arm,size=0x16c) addr:0x0208796c func_ov000_02087ad8 kind:function(arm,size=0xf4) addr:0x02087ad8 func_ov000_02087bcc kind:function(arm,size=0x114) addr:0x02087bcc -func_ov000_02087ce0 kind:function(thumb,size=0xf8) addr:0x02087ce0 +_ZN14PlayerActor_9CC1Ev kind:function(thumb,size=0xf8) addr:0x02087ce0 func_ov000_02087dd8 kind:function(thumb,size=0x54) addr:0x02087dd8 func_ov000_02087e2c kind:function(arm,size=0x9c) addr:0x02087e2c func_ov000_02087ec8 kind:function(arm,size=0x3c) addr:0x02087ec8 @@ -2112,7 +2112,7 @@ func_ov000_02092d58 kind:function(arm,size=0x40) addr:0x02092d58 _ZN19func_ov000_02092d98D0Ev kind:function(arm,size=0x48) addr:0x02092d98 func_ov000_02092de0 kind:function(arm,size=0xe4) addr:0x02092de0 func_ov000_02092ec4 kind:function(arm,size=0x4c4) addr:0x02092ec4 -func_ov000_02093388 kind:function(thumb,size=0x1f4) addr:0x02093388 +_ZN14PlayerActor_A0C1Ev kind:function(thumb,size=0x1f4) addr:0x02093388 func_ov000_0209357c kind:function(arm,size=0x18) addr:0x0209357c func_ov000_02093594 kind:function(arm,size=0x50) addr:0x02093594 func_ov000_020935e4 kind:function(arm,size=0x28) addr:0x020935e4 @@ -2561,7 +2561,7 @@ _ZN9MapObject8vfunc_2CEP7VecFx32 kind:function(arm,size=0x40) addr:0x0209e9b0 _ZN9MapObject19func_ov000_0209d22cEPsPS_i kind:function(arm,size=0x48) addr:0x0209e9f0 _ZN9MapObject19func_ov000_0209d274Ei kind:function(arm,size=0x28) addr:0x0209ea38 _ZN9MapObject19func_ov000_0209d29cEi kind:function(arm,size=0x28) addr:0x0209ea60 -_ZN9MapObject19func_ov000_0209d2c4Eii kind:function(arm,size=0x2c) addr:0x0209ea88 +_ZN9MapObject19func_ov000_0209d2c4Eib kind:function(arm,size=0x2c) addr:0x0209ea88 _ZN9MapObject19func_ov000_0209d2f0EiiP5Vec2b kind:function(arm,size=0xc4) addr:0x0209eab4 _ZN9MapObject19func_ov000_0209d3b4Eii kind:function(arm,size=0x80) addr:0x0209eb78 _ZN9MapObject19func_ov000_0209d434EPcP34UnkStruct_ov019_020d24c8_28_258_00i kind:function(arm,size=0xe4) addr:0x0209ebf8 @@ -2654,12 +2654,12 @@ func_ov000_020a11a0 kind:function(arm,size=0x24) addr:0x020a11a0 func_ov000_020a11c4 kind:function(arm,size=0x24) addr:0x020a11c4 func_ov000_020a11e8 kind:function(arm,size=0x58) addr:0x020a11e8 func_ov000_020a1240 kind:function(arm,size=0x58) addr:0x020a1240 -func_ov000_020a1298 kind:function(arm,size=0x58) addr:0x020a1298 -func_ov000_020a12f0 kind:function(arm,size=0x44) addr:0x020a12f0 -_ZN19func_ov000_020a1334D0Ev kind:function(arm,size=0x4c) addr:0x020a1334 +_ZN25UnkSystem1_ov000_Derived2C1Ei kind:function(arm,size=0x58) addr:0x020a1298 +_ZN25UnkSystem1_ov000_Derived2D1Ev kind:function(arm,size=0x44) addr:0x020a12f0 +_ZN25UnkSystem1_ov000_Derived2D0Ev kind:function(arm,size=0x4c) addr:0x020a1334 func_ov000_020a1380 kind:function(arm,size=0x44) addr:0x020a1380 -func_ov000_020a13c4 kind:function(arm,size=0xf0) addr:0x020a13c4 -func_ov000_020a14b4 kind:function(arm,size=0x78) addr:0x020a14b4 +_ZN25UnkSystem1_ov000_Derived28vfunc_08Ei kind:function(arm,size=0xf0) addr:0x020a13c4 +_ZN25UnkSystem1_ov000_Derived28vfunc_0CEv kind:function(arm,size=0x78) addr:0x020a14b4 func_ov000_020a152c kind:function(arm,size=0x5c) addr:0x020a152c func_ov000_020a1588 kind:function(arm,size=0x30) addr:0x020a1588 func_ov000_020a15b8 kind:function(arm,size=0x74) addr:0x020a15b8 @@ -3097,10 +3097,10 @@ _ZN8InstanceI15TreasureManagerED2Ev kind:function(arm,size=0x14) addr:0x020aba10 func_ov000_020aba24 kind:function(arm,size=0x14) addr:0x020aba24 data_ov000_020aba38 kind:data(any) addr:0x020aba38 data_ov000_020aba40 kind:data(any) addr:0x020aba40 -data_ov000_020aba44 kind:data(any) addr:0x020aba44 +data_ov000_020aa244 kind:data(any) addr:0x020aba44 data_ov000_020aba48 kind:data(any) addr:0x020aba48 -data_ov000_020aba4c kind:data(any) addr:0x020aba4c -data_ov000_020aba50 kind:data(any) addr:0x020aba50 +data_ov000_020aa24c kind:data(any) addr:0x020aba4c +data_ov000_020aa250 kind:data(any) addr:0x020aba50 data_ov000_020aba60 kind:data(any) addr:0x020aba60 data_ov000_020abb60 kind:data(any) addr:0x020abb60 data_ov000_020abb70 kind:data(any) addr:0x020abb70 diff --git a/config/jp/arm9/overlays/ov001/delinks.txt b/config/jp/arm9/overlays/ov001/delinks.txt index 5c1171bb..b252f193 100644 --- a/config/jp/arm9/overlays/ov001/delinks.txt +++ b/config/jp/arm9/overlays/ov001/delinks.txt @@ -20,6 +20,9 @@ src/001_SceneInit/CargoManager_001.cpp: src/001_SceneInit/PassengerManager_001.cpp: .text start:0x020c10c4 end:0x020c12a4 +src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp: + .text start:0x020c12a4 end:0x020c1514 + src/001_SceneInit/Game/AdventureModeManager_001.cpp: .text start:0x020c17c8 end:0x020c2198 diff --git a/config/jp/arm9/overlays/ov001/symbols.txt b/config/jp/arm9/overlays/ov001/symbols.txt index accc84ae..b82a99dc 100644 --- a/config/jp/arm9/overlays/ov001/symbols.txt +++ b/config/jp/arm9/overlays/ov001/symbols.txt @@ -197,7 +197,7 @@ _ZN11ItemManager19func_ov001_020bb9f8Ev kind:function(thumb,size=0x5c) addr:0x02 func_ov001_020bd29c kind:function(thumb,size=0x18) addr:0x020bd29c func_ov001_020bd2b4 kind:function(thumb,size=0x58) addr:0x020bd2b4 func_ov001_020bd30c kind:function(thumb,size=0x5c) addr:0x020bd30c -func_ov001_020bd368 kind:function(thumb,size=0x260) addr:0x020bd368 +_ZN18PlayerActorBase_70C1Ev kind:function(thumb,size=0x260) addr:0x020bd368 func_ov001_020bd5c8 kind:function(thumb,size=0x96) addr:0x020bd5c8 func_ov001_020bd660 kind:function(thumb,size=0x4c) addr:0x020bd660 func_ov001_020bd6ac kind:function(thumb,size=0x7c) addr:0x020bd6ac @@ -209,7 +209,7 @@ func_ov001_020bd76c kind:function(thumb,size=0x2a) addr:0x020bd76c func_ov001_020bd798 kind:function(thumb,size=0x2a) addr:0x020bd798 func_ov001_020bd7c4 kind:function(thumb,size=0x50) addr:0x020bd7c4 func_ov001_020bd814 kind:function(thumb,size=0x5a) addr:0x020bd814 -func_ov001_020bd870 kind:function(thumb,size=0x88) addr:0x020bd870 +_ZN26UnkStruct_027e0ce0_40_BaseC2Ev kind:function(thumb,size=0x88) addr:0x020bd870 func_ov001_020bd8f8 kind:function(thumb,size=0x30) addr:0x020bd8f8 func_ov001_020bd928 kind:function(thumb,size=0x154) addr:0x020bd928 func_ov001_020bda7c kind:function(thumb,size=0x16) addr:0x020bda7c @@ -235,18 +235,18 @@ func_ov001_020bdfa4 kind:function(thumb,size=0xc) addr:0x020bdfa4 func_ov001_020bdfb0 kind:function(thumb,size=0x20) addr:0x020bdfb0 func_ov001_020bdfd0 kind:function(thumb,size=0xc) addr:0x020bdfd0 func_ov001_020bdfdc kind:function(thumb,size=0x8c) addr:0x020bdfdc -func_ov001_020be068 kind:function(thumb,size=0x124) addr:0x020be068 +_ZN15PlayerActorBaseC2Ev kind:function(thumb,size=0x124) addr:0x020be068 func_ov001_020be18c kind:function(thumb,size=0x28) addr:0x020be18c func_ov001_020be1b4 kind:function(thumb,size=0x2e) addr:0x020be1b4 -func_ov001_020be1e4 kind:function(thumb,size=0x138) addr:0x020be1e4 -func_ov001_020be31c kind:function(thumb,size=0xc) addr:0x020be31c +_ZN11PlayerActorC1Ev kind:function(thumb,size=0x138) addr:0x020be1e4 +_ZN15PlayerActor_1B0D1Ev kind:function(thumb,size=0xc) addr:0x020be31c func_ov001_020be328 kind:function(thumb,size=0x80) addr:0x020be328 func_ov001_020be3a8 kind:function(thumb,size=0x10) addr:0x020be3a8 func_ov001_020be3b8 kind:function(thumb,size=0x36) addr:0x020be3b8 func_ov001_020be3f0 kind:function(thumb,size=0x26) addr:0x020be3f0 func_ov001_020be418 kind:function(thumb,size=0x98) addr:0x020be418 func_ov001_020be4b0 kind:function(thumb,size=0x20) addr:0x020be4b0 -func_ov001_020be4d0 kind:function(thumb,size=0xc) addr:0x020be4d0 +_ZN15PlayerActor_1B0C1Ev kind:function(thumb,size=0xc) addr:0x020be4d0 func_ov001_020be4dc kind:function(thumb,size=0xc) addr:0x020be4dc func_ov001_020be4e8 kind:function(thumb,size=0x46) addr:0x020be4e8 func_ov001_020be530 kind:function(thumb,size=0x2) addr:0x020be530 @@ -273,7 +273,7 @@ func_ov001_020bef70 kind:function(thumb,size=0xc) addr:0x020bef70 _ZN23GameModeManagerBase_00419func_ov001_020bd734EPi kind:function(thumb,size=0x50) addr:0x020bef7c _ZN23GameModeManagerBase_00419func_ov001_020bd784Ev kind:function(thumb,size=0x3c) addr:0x020befcc func_ov001_020bf008 kind:function(thumb,size=0x8) addr:0x020bf008 -func_ov001_020bf010 kind:function(thumb,size=0x32) addr:0x020bf010 +_ZN24UnkStruct_ov024_020d86a0C1Ev kind:function(thumb,size=0x32) addr:0x020bf010 _ZN24UnkStruct_ov024_020d86a0D1Ev kind:function(thumb,size=0x1a) addr:0x020bf044 _ZN24UnkStruct_ov024_020d86a019func_ov001_020bd818Ev kind:function(thumb,size=0x24) addr:0x020bf060 func_ov001_020bf084 kind:function(thumb,size=0xc) addr:0x020bf084 @@ -375,8 +375,8 @@ func_ov001_020c0c50 kind:function(thumb,size=0x2c) addr:0x020c0c50 func_ov001_020c0c7c kind:function(arm,size=0x2c) addr:0x020c0c7c func_ov001_020c0ca8 kind:function(arm,size=0x2c) addr:0x020c0ca8 func_ov001_020c0cd4 kind:function(arm,size=0x2c) addr:0x020c0cd4 -func_ov001_020c0d00 kind:function(thumb,size=0x76) addr:0x020c0d00 -func_ov001_020c0d78 kind:function(thumb,size=0xc) addr:0x020c0d78 +_ZN18UnkStruct_027e0d00C1Ev kind:function(thumb,size=0x76) addr:0x020c0d00 +_ZN18UnkStruct_027e0d00D1Ev kind:function(thumb,size=0xc) addr:0x020c0d78 func_ov001_020c0d84 kind:function(thumb,size=0x38) addr:0x020c0d84 func_ov001_020c0dbc kind:function(thumb,size=0x28) addr:0x020c0dbc func_ov001_020c0de4 kind:function(thumb,size=0x10c) addr:0x020c0de4 @@ -401,9 +401,9 @@ _ZN16PassengerManager19func_ov001_020bf910Ev kind:function(thumb,size=0x10c) add _ZN16PassengerManager19func_ov001_020bfa1cEv kind:function(thumb,size=0x1c) addr:0x020c1270 _ZN8InstanceI16PassengerManagerEC2Ev kind:function(thumb,size=0xc) addr:0x020c128c _ZN8InstanceI16PassengerManagerED2Ev kind:function(thumb,size=0xc) addr:0x020c1298 -func_ov001_020c12a4 kind:function(thumb,size=0xc2) addr:0x020c12a4 -func_ov001_020c1368 kind:function(thumb,size=0xc) addr:0x020c1368 -func_ov001_020c1374 kind:function(thumb,size=0x1a0) addr:0x020c1374 +_ZN24UnkStruct_027e0cf8_08_00C1Eh kind:function(thumb,size=0xc2) addr:0x020c12a4 +_ZN24UnkStruct_027e0cf8_08_00D1Ev kind:function(thumb,size=0xc) addr:0x020c1368 +_ZN24UnkStruct_027e0cf8_08_0019func_ov001_020bfb20Ev kind:function(thumb,size=0x1a0) addr:0x020c1374 func_ov001_020c1514 kind:function(thumb,size=0x30) addr:0x020c1514 func_ov001_020c1544 kind:function(thumb,size=0x30) addr:0x020c1544 func_ov001_020c1574 kind:function(thumb,size=0x34) addr:0x020c1574 diff --git a/config/jp/arm9/overlays/ov017/symbols.txt b/config/jp/arm9/overlays/ov017/symbols.txt index 86e48a06..5f8a36f9 100644 --- a/config/jp/arm9/overlays/ov017/symbols.txt +++ b/config/jp/arm9/overlays/ov017/symbols.txt @@ -145,8 +145,8 @@ func_ov017_020c48dc kind:function(arm,size=0x34) addr:0x020c48dc func_ov017_020c4910 kind:function(arm,size=0x34) addr:0x020c4910 func_ov017_020c4944 kind:function(arm,size=0x24) addr:0x020c4944 func_ov017_020c4968 kind:function(arm,size=0x44) addr:0x020c4968 -func_ov017_020c49ac kind:function(arm,size=0x4c) addr:0x020c49ac -func_ov017_020c49f8 kind:function(arm,size=0x1a8) addr:0x020c49f8 +_ZN24UnkStruct_ov024_020d86a019func_ov017_020c3180Ev kind:function(arm,size=0x4c) addr:0x020c49ac +_ZN24UnkStruct_ov024_020d86a019func_ov017_020c31ccEv kind:function(arm,size=0x1a8) addr:0x020c49f8 func_ov017_020c4ba0 kind:function(arm,size=0xa0) addr:0x020c4ba0 func_ov017_020c4c40 kind:function(arm,size=0x160) addr:0x020c4c40 func_ov017_020c4da0 kind:function(arm,size=0x74) addr:0x020c4da0 diff --git a/config/jp/arm9/overlays/ov018/symbols.txt b/config/jp/arm9/overlays/ov018/symbols.txt index 1fd29306..8507d1ff 100644 --- a/config/jp/arm9/overlays/ov018/symbols.txt +++ b/config/jp/arm9/overlays/ov018/symbols.txt @@ -39,7 +39,7 @@ _ZN24UnkStruct_ov000_020b50c019func_ov018_020c5718Ev kind:function(arm,size=0xa8 _ZN24UnkStruct_ov000_020b5340C1Ev kind:function(arm,size=0x3c) addr:0x020c6fe0 _ZN24UnkStruct_ov000_020b534019func_ov018_020c57fcEv kind:function(arm,size=0x18) addr:0x020c701c _ZN24UnkStruct_ov000_020b5300C1Ev kind:function(arm,size=0x30) addr:0x020c7034 -_ZN24UnkStruct_ov000_020b530019func_ov018_020c583cEi kind:function(arm,size=0x38) addr:0x020c7064 +_ZN24UnkStruct_ov000_020b530019func_ov018_020c583cEPv kind:function(arm,size=0x38) addr:0x020c7064 _ZN24UnkStruct_ov000_020b51b8C1Ev kind:function(arm,size=0x8c) addr:0x020c709c _ZN24UnkStruct_ov000_020b51b8D1Ev kind:function(arm,size=0x40) addr:0x020c7128 _ZN24UnkStruct_ov000_020b51b819func_ov018_020c5940Ev kind:function(arm,size=0x80) addr:0x020c7168 diff --git a/config/jp/arm9/overlays/ov024/delinks.txt b/config/jp/arm9/overlays/ov024/delinks.txt index e36f0f87..1e9cdb9c 100644 --- a/config/jp/arm9/overlays/ov024/delinks.txt +++ b/config/jp/arm9/overlays/ov024/delinks.txt @@ -10,17 +10,17 @@ src/024_MainGame/Game/GameModeAdventure_024.cpp: .text start:0x020c6060 end:0x020c62cc .data start:0x020d9500 end:0x020d9530 -src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp: +src/024_MainGame/Actor/UnkStruct_ov024_020d8660_024.cpp: complete .text start:0x020c62cc end:0x020c6674 .bss start:0x020da000 end:0x020da034 -src/024_MainGame/Game/UnkActorSystem1_024.cpp: +src/024_MainGame/Actor/UnkActorSystem1_024.cpp: complete .text start:0x020c6674 end:0x020c66dc .data start:0x020d9530 end:0x020d9568 -src/024_MainGame/Game/UnkActorSystem2_024.cpp: +src/024_MainGame/Actor/UnkActorSystem2_024.cpp: complete .text start:0x020c66dc end:0x020c69cc .data start:0x020d9568 end:0x020d958c @@ -30,12 +30,12 @@ src/024_MainGame/Game/AdventureModeManager_024.cpp: .text start:0x020c69cc end:0x020c872c .data start:0x020d958c end:0x020d9630 -src/024_MainGame/Game/UnkStruct_027e0998_024.cpp: +src/024_MainGame/Unknown/UnkStruct_027e0998_024.cpp: complete .text start:0x020c872c end:0x020c8be0 .data start:0x020d9630 end:0x020d963c -src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp: +src/024_MainGame/Train/UnkStruct_027e0cf8_024.cpp: complete .text start:0x020c8be0 end:0x020c9190 @@ -89,36 +89,47 @@ src/024_MainGame/Game/AdventureModeManager_190_024.cpp: .text start:0x020cb8e8 end:0x020cbb70 .data start:0x020d9878 end:0x020d98e0 +src/024_MainGame/data_ov024_020d7f40.cpp: + complete + .rodata start:0x020d8cbc end:0x020d8ccc + .init start:0x020d928c end:0x020d92c4 + .ctor start:0x020d94d8 end:0x020d94dc + .data start:0x020d98e0 end:0x020d98f0 + src/024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp: complete .text start:0x020cbb70 end:0x020cc2a8 .data start:0x020d98f0 end:0x020d9914 -src/024_MainGame/UnkAdventureModeSystem1_024.cpp: +src/024_MainGame/Unknown/UnkAdventureModeSystem1_024.cpp: complete .text start:0x020cc2a8 end:0x020cc5f0 .data start:0x020d9914 end:0x020d9920 -src/024_MainGame/UnkStruct_ov024_020d8694_024.cpp: +src/024_MainGame/TitleCard/UnkStruct_ov024_020d8694_024.cpp: .text start:0x020cc5f0 end:0x020cca40 .rodata start:0x020d8ccc end:0x020d8d7c .data start:0x020d9920 end:0x020d9944 .bss start:0x020da034 end:0x020da038 -src/024_MainGame/UnkTitleCardSystem1_024.cpp: +src/024_MainGame/TitleCard/UnkTitleCardSystem1_024.cpp: complete .text start:0x020cca40 end:0x020ce56c .data start:0x020d9944 end:0x020d9a04 -src/024_MainGame/UnkStruct_020d8698_024.cpp: +src/024_MainGame/UICounterManager.cpp: complete .text start:0x020ce56c end:0x020d129c .rodata start:0x020d8d7c end:0x020d8df8 .data start:0x020d9a04 end:0x020d9a34 .bss start:0x020da038 end:0x020da03c -src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp: +src/024_MainGame/Train/UnkStruct_027e0cf8_00_0C_024.cpp: .text start:0x020d129c end:0x020d1f40 + .rodata start:0x020d8df8 end:0x020d8ee8 + .init start:0x020d92c4 end:0x020d93e4 + .ctor start:0x020d94dc end:0x020d94e0 + .data start:0x020d9a34 end:0x020d9ba0 src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp: complete @@ -129,60 +140,122 @@ src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp: .data start:0x020d9ba0 end:0x020d9ba8 .bss start:0x020da03c end:0x020da040 -src/024_MainGame/UnkStruct_ov024_020d86a0_024.cpp: +src/024_MainGame/Unknown/UnkStruct_ov024_020d86a0_024.cpp: + complete .text start:0x020d2fac end:0x020d3050 + .data start:0x020d9ba8 end:0x020d9bc4 + .bss start:0x020da040 end:0x020da044 -src/024_MainGame/code_020d16fc_024.cpp: - .text start:0x020d3050 end:0x020d3e28 +src/024_MainGame/Player/PlayerActor_A0_38_024.cpp: + .text start:0x020d3050 end:0x020d334c + .init start:0x020d9410 end:0x020d9458 + .ctor start:0x020d94e4 end:0x020d94e8 + .data start:0x020d9bc4 end:0x020d9bf4 -src/024_MainGame/code_020d24d4_024.cpp: - .text start:0x020d3e28 end:0x020d4aac +src/024_MainGame/CreditsEndingType.cpp: + complete + .text start:0x020d334c end:0x020d336c + .data start:0x020d9bf4 end:0x020d9bf8 -src/024_MainGame/UnkStruct_027e0cf8_08_024.cpp: +src/024_MainGame/Train/UnkDataStruct4_14.cpp: + complete + .text start:0x020d336c end:0x020d3de4 + .rodata start:0x020d8ef4 end:0x020d8f10 + +src/024_MainGame/Train/UnkDataStruct4.cpp: + complete + .text start:0x020d3de4 end:0x020d4aac + .rodata start:0x020d8f10 end:0x020d8f14 + .data start:0x020d9bf8 end:0x020d9c3c + +src/024_MainGame/Train/UnkStruct_027e0cf8_08_024.cpp: + complete .text start:0x020d4aac end:0x020d4fc4 -src/024_MainGame/code_020d3670_024.cpp: - .text start:0x020d4fc4 end:0x020d5674 +src/024_MainGame/ZeldaTrainBinary.cpp: + complete + .text start:0x020d4fc4 end:0x020d5254 -src/024_MainGame/UnkStruct_027e0ce0_34_024.cpp: - .text start:0x020d5674 end:0x020d5a74 +src/024_MainGame/Train/UnkStruct_027e0cf8_08_00_024.cpp: + complete + .text start:0x020d5254 end:0x020d55a8 -src/024_MainGame/PassengerManager.cpp: +src/024_MainGame/Train/UnkStruct_027e0ce0_34_024.cpp: + complete + .text start:0x020d55a8 end:0x020d5a74 + .rodata start:0x020d8f14 end:0x020d8f3c + +src/024_MainGame/Train/PassengerManager.cpp: + complete .text start:0x020d5a74 end:0x020d6008 - .rodata start:0x020d8f48 end:0x020d8fc8 + .rodata start:0x020d8f3c end:0x020d8fc8 -src/024_MainGame/code_020d46b4_024.cpp: +src/024_MainGame/Train/MapObjectProfile_Derived5.cpp: + complete .text start:0x020d6008 end:0x020d6118 + .data start:0x020d9c3c end:0x020d9d68 -src/024_MainGame/UnkStruct_027e0d00.cpp: +src/024_MainGame/Train/UnkStruct_027e0d00.cpp: + complete .text start:0x020d6118 end:0x020d6840 + .rodata start:0x020d8fc8 end:0x020d9020 + .data start:0x020d9d68 end:0x020d9da4 -src/024_MainGame/code_020d4e9c_024.cpp: +src/024_MainGame/Train/UnkStruct_027e0d00_20.cpp: + complete .text start:0x020d6840 end:0x020d6b80 + .data start:0x020d9da4 end:0x020d9ebc -src/024_MainGame/code_020d51dc_024.cpp: - .text start:0x020d6b80 end:0x020d6e54 +src/024_MainGame/Train/code_020d51dc_024.cpp: + complete + .text start:0x020d6b80 end:0x020d6e44 + .rodata start:0x020d9020 end:0x020d9250 + .data start:0x020d9ebc end:0x020d9ef0 + .bss start:0x020da044 end:0x020da048 -src/024_MainGame/code_020d54b0_024.cpp: - .text start:0x020d6e54 end:0x020d7258 +src/024_MainGame/Train/UnkTrainSystem1_024.cpp: + complete + .text start:0x020d6e44 end:0x020d7258 + .rodata start:0x020d9250 end:0x020d925c + .init start:0x020d9458 end:0x020d9470 + .ctor start:0x020d94e8 end:0x020d94ec + .bss start:0x020da048 end:0x020da04c -src/024_MainGame/CargoManager_024.cpp: +src/024_MainGame/Train/CargoManager_024.cpp: complete .text start:0x020d7258 end:0x020d72dc + .rodata start:0x020d925c end:0x020d9260 -src/024_MainGame/code_020d5938_024.cpp: +src/024_MainGame/Train/UnkTrainSystem2_024.cpp: + complete .text start:0x020d72dc end:0x020d7630 + .rodata start:0x020d9260 end:0x020d928c + .init start:0x020d9470 end:0x020d9488 + .ctor start:0x020d94ec end:0x020d94f0 + .bss start:0x020da04c end:0x020da050 -src/024_MainGame/UnkStruct_027e0d08_024.cpp: +src/024_MainGame/Unknown/UnkStruct_027e0d08_024.cpp: + complete .text start:0x020d7630 end:0x020d7c58 src/024_MainGame/MiscAdvManager.cpp: + complete .text start:0x020d7c58 end:0x020d7ff4 + .bss start:0x020da050 end:0x020da054 -src/024_MainGame/code_020d6650_024.cpp: +src/024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp: + complete .text start:0x020d7ff4 end:0x020d8840 + .bss start:0x020da054 end:0x020da058 + +src/024_MainGame/Train/data_ov024_020d8550.cpp: + complete + .data start:0x020d9ef0 end:0x020d9f74 src/024_MainGame/Actor/ActorUnkOBPC.cpp: + complete .text start:0x020d8840 end:0x020d8cbc .init start:0x020d9488 end:0x020d94d8 .ctor start:0x020d94f0 end:0x020d94f4 + .data start:0x020d9f74 end:0x020da000 + .bss start:0x020da058 end:0x020da0c0 diff --git a/config/jp/arm9/overlays/ov024/relocs.txt b/config/jp/arm9/overlays/ov024/relocs.txt index 3ec01d7e..ec29e912 100644 --- a/config/jp/arm9/overlays/ov024/relocs.txt +++ b/config/jp/arm9/overlays/ov024/relocs.txt @@ -1828,13 +1828,13 @@ from:0x020d1684 kind:load to:0x027e07d4 module:dtcm from:0x020d1750 kind:load to:0x020d9a34 module:overlay(24) from:0x020d1754 kind:load to:0x020d9a38 module:overlay(24) from:0x020d1798 kind:load to:0x020d9a38 module:overlay(24) -from:0x020d179c kind:load to:0x020d9a42 module:overlay(24) +from:0x020d179c kind:load to:0x020d9a38 add:0xa module:overlay(24) from:0x020d17a4 kind:arm_call to:0x020d1688 module:overlay(24) -from:0x020d17c4 kind:load to:0x020d9a3e module:overlay(24) +from:0x020d17c4 kind:load to:0x020d9a38 add:0x6 module:overlay(24) from:0x020d1800 kind:load to:0x020d9a38 module:overlay(24) from:0x020d183c kind:arm_call to:0x020d6ce4 module:overlay(24) from:0x020d1848 kind:load to:0x020d9a38 module:overlay(24) -from:0x020d184c kind:load to:0x020d9a43 module:overlay(24) +from:0x020d184c kind:load to:0x020d9a38 add:0xb module:overlay(24) from:0x020d18fc kind:arm_call to:0x020611a8 module:overlay(0) from:0x020d1914 kind:arm_call to:0x020611a8 module:overlay(0) from:0x020d1924 kind:arm_call to:0x020d1960 module:overlay(24) @@ -1989,8 +1989,8 @@ from:0x020d32cc kind:load to:0x0203feb0 module:main from:0x020d32e0 kind:thumb_call_arm to:0x02016614 module:main from:0x020d32f4 kind:thumb_call_arm to:0x02016614 module:main from:0x020d3302 kind:thumb_call to:0x020d332c module:overlay(24) -from:0x020d330c kind:load to:0x020d9bf0 module:overlay(24) -from:0x020d3310 kind:load to:0x020d9be4 module:overlay(24) +from:0x020d330c kind:load to:0x020d9be8 add:0x8 module:overlay(24) +from:0x020d3310 kind:load to:0x020d9bdc add:0x8 module:overlay(24) from:0x020d331a kind:thumb_call_arm to:0x0201662c module:main from:0x020d3322 kind:thumb_call_arm to:0x0201662c module:main from:0x020d3358 kind:load to:0x020d9bf4 module:overlay(24) @@ -2037,8 +2037,8 @@ from:0x020d3d64 kind:arm_call to:0x020d3db8 module:overlay(24) from:0x020d3d78 kind:arm_call to:0x020d3db8 module:overlay(24) from:0x020d3d98 kind:load to:0x020d3d40 module:overlay(24) from:0x020d3da0 kind:arm_call to:0x020d36f4 module:overlay(24) -from:0x020d3e24 kind:load to:0x020d9c00 module:overlay(24) -from:0x020d3e68 kind:load to:0x020d9c00 module:overlay(24) +from:0x020d3e24 kind:load to:0x020d9bf8 add:0x8 module:overlay(24) +from:0x020d3e68 kind:load to:0x020d9bf8 add:0x8 module:overlay(24) from:0x020d3e88 kind:load to:0x020d3e8c module:overlay(24) from:0x020d3e98 kind:arm_call to:0x020d3ee0 module:overlay(24) from:0x020d3ea0 kind:arm_call to:0x020d4a94 module:overlay(24) @@ -2226,13 +2226,13 @@ from:0x020d6060 kind:arm_call_thumb to:0x02059ac0 module:overlay(0) from:0x020d6078 kind:load to:0x020d9d54 module:overlay(24) from:0x020d607c kind:load to:0x020d9d44 module:overlay(24) from:0x020d6080 kind:load to:0x020d9d4c module:overlay(24) -from:0x020d6084 kind:load to:0x020d9cf0 module:overlay(24) +from:0x020d6084 kind:load to:0x020d9ce8 add:0x8 module:overlay(24) from:0x020d60bc kind:arm_call_thumb to:0x02059ac0 module:overlay(0) from:0x020d60d4 kind:load to:0x020d9d64 module:overlay(24) from:0x020d60d8 kind:load to:0x020d9cf8 module:overlay(24) from:0x020d60dc kind:load to:0x020d9d4c module:overlay(24) from:0x020d60e0 kind:load to:0x020d9d58 module:overlay(24) -from:0x020d60e4 kind:load to:0x020d9cf0 module:overlay(24) +from:0x020d60e4 kind:load to:0x020d9ce8 add:0x8 module:overlay(24) from:0x020d60f0 kind:arm_call_thumb to:0x02059bec module:overlay(0) from:0x020d6104 kind:arm_call_thumb to:0x02059bec module:overlay(0) from:0x020d610c kind:arm_call to:0x02011ff4 module:main @@ -2309,7 +2309,7 @@ from:0x020d6930 kind:load to:0x020d9ea0 module:overlay(24) from:0x020d6934 kind:load to:0x020d9e14 module:overlay(24) from:0x020d6938 kind:load to:0x020d9e24 module:overlay(24) from:0x020d693c kind:load to:0x020d9e98 module:overlay(24) -from:0x020d6940 kind:load to:0x020d9e4c module:overlay(24) +from:0x020d6940 kind:load to:0x020d9e44 add:0x8 module:overlay(24) from:0x020d69ac kind:arm_call to:0x0205bc18 module:overlay(0) from:0x020d69c4 kind:arm_call to:0x0205bd00 module:overlay(0) from:0x020d69d0 kind:arm_call to:0x0205bd30 module:overlay(0) @@ -2325,7 +2325,7 @@ from:0x020d6a8c kind:arm_call_thumb to:0x020153f8 module:main from:0x020d6aa8 kind:arm_call to:0x020d6880 module:overlay(24) from:0x020d6aec kind:arm_call_thumb to:0x02059154 module:overlay(0) from:0x020d6af8 kind:load to:0x020d9ea4 module:overlay(24) -from:0x020d6afc kind:load to:0x020d9e5c module:overlay(24) +from:0x020d6afc kind:load to:0x020d9e54 add:0x8 module:overlay(24) from:0x020d6b00 kind:load to:0x020d9eb0 module:overlay(24) from:0x020d6b0c kind:arm_call_thumb to:0x02059154 module:overlay(0) from:0x020d6b2c kind:arm_call_thumb to:0x02015414 module:main @@ -2339,9 +2339,9 @@ from:0x020d6bbc kind:arm_call to:0x020d6bf0 module:overlay(24) from:0x020d6be8 kind:load to:0x020da044 module:overlay(24) from:0x020d6bec kind:load to:0x020d9ebc module:overlay(24) from:0x020d6cdc kind:load to:0x020d90f0 module:overlay(24) -from:0x020d6ce0 kind:load to:0x020d90f6 module:overlay(24) +from:0x020d6ce0 kind:load to:0x020d90f0 add:0x6 module:overlay(24) from:0x020d6d4c kind:load to:0x020d9064 module:overlay(24) -from:0x020d6d50 kind:load to:0x020d9066 module:overlay(24) +from:0x020d6d50 kind:load to:0x020d9064 add:0x2 module:overlay(24) from:0x020d6db8 kind:arm_call to:0x020d6d54 module:overlay(24) from:0x020d6dd4 kind:load to:0x020d9020 module:overlay(24) from:0x020d6ddc kind:arm_call to:0x020d6d54 module:overlay(24) diff --git a/config/jp/arm9/overlays/ov024/symbols.txt b/config/jp/arm9/overlays/ov024/symbols.txt index b954ccad..96774863 100644 --- a/config/jp/arm9/overlays/ov024/symbols.txt +++ b/config/jp/arm9/overlays/ov024/symbols.txt @@ -78,7 +78,7 @@ _ZN20AdventureModeManager19func_ov024_020c671cEv kind:function(arm,size=0x54) ad _ZN20AdventureModeManager19func_ov024_020c6770Ejhss kind:function(arm,size=0xac) addr:0x020c7f90 _ZN20AdventureModeManager19func_ov024_020c681cEv kind:function(arm,size=0x24) addr:0x020c803c _ZN20AdventureModeManager19func_ov024_020c6840Ej kind:function(arm,size=0x94) addr:0x020c8060 -_ZN20AdventureModeManager19func_ov024_020c68d4Ev kind:function(arm,size=0x18) addr:0x020c80f4 +_ZN20AdventureModeManager19func_ov024_020c68d4EP5Vec2si kind:function(arm,size=0x18) addr:0x020c80f4 _ZN20AdventureModeManager19func_ov024_020c68ecEii kind:function(arm,size=0x44) addr:0x020c810c _ZN20AdventureModeManager19func_ov024_020c6930Ev kind:function(arm,size=0x10) addr:0x020c8150 _ZN20AdventureModeManager19func_ov024_020c6940Eii kind:function(arm,size=0x8c) addr:0x020c8160 @@ -118,14 +118,14 @@ _ZN18UnkStruct_027e099819func_ov024_020c7354Ev kind:function(arm,size=0x3c) addr _ZN18UnkStruct_027e0cf86CreateEv kind:function(arm,size=0x24) addr:0x020c8be0 _ZN18UnkStruct_027e0cf8C1Ev kind:function(arm,size=0xf0) addr:0x020c8c04 _ZN18UnkStruct_027e0cf8D1Ev kind:function(arm,size=0xb8) addr:0x020c8cf4 -_ZN18UnkStruct_027e0cf819func_ov024_020c755cEPv kind:function(arm,size=0x74) addr:0x020c8dac -_ZN18UnkStruct_027e0cf819func_ov024_020c75d0EPvit kind:function(arm,size=0x154) addr:0x020c8e20 +_ZN18UnkStruct_027e0cf819func_ov024_020c755cEP14UnkDataStruct4 kind:function(arm,size=0x74) addr:0x020c8dac +_ZN18UnkStruct_027e0cf819func_ov024_020c75d0EP14UnkDataStruct4it kind:function(arm,size=0x154) addr:0x020c8e20 _ZN18UnkStruct_027e0cf819func_ov024_020c7724Ev kind:function(arm,size=0x2c) addr:0x020c8f74 _ZN18UnkStruct_027e0cf819func_ov024_020c7750Ev kind:function(arm,size=0x30) addr:0x020c8fa0 _ZN18UnkStruct_027e0cf819func_ov024_020c7780Ev kind:function(arm,size=0x30) addr:0x020c8fd0 -_ZN18UnkStruct_027e0cf819func_ov024_020c77b0Ei kind:function(arm,size=0x10) addr:0x020c9000 -_ZN18UnkStruct_027e0cf819func_ov024_020c77c0Ev kind:function(arm,size=0x10) addr:0x020c9010 -_ZN18UnkStruct_027e0cf819func_ov024_020c77d0Ev kind:function(arm,size=0x10) addr:0x020c9020 +_ZN18UnkStruct_027e0cf819func_ov024_020c77b0Eb kind:function(arm,size=0x10) addr:0x020c9000 +_ZN18UnkStruct_027e0cf819func_ov024_020c77c0EPiS0_i kind:function(arm,size=0x10) addr:0x020c9010 +_ZN18UnkStruct_027e0cf819func_ov024_020c77d0EP5Vec2si kind:function(arm,size=0x10) addr:0x020c9020 _ZN18UnkStruct_027e0cf819func_ov024_020c77e0EP5Vec2s kind:function(arm,size=0x24) addr:0x020c9030 _ZN18UnkStruct_027e0cf819func_ov024_020c7804EP5Vec2s kind:function(arm,size=0x24) addr:0x020c9054 _ZN18UnkStruct_027e0cf819func_ov024_020c7828Ei kind:function(arm,size=0x50) addr:0x020c9078 @@ -339,96 +339,96 @@ _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_10Ev kind:function(arm,size=0x20) addr:0 _ZN28UnkStruct_ov024_020d8694_2FC19func_ov024_020ccb10EiP5Vec2sS1_ kind:function(arm,size=0x17c) addr:0x020ce360 _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_08Ev kind:function(arm,size=0x8) addr:0x020ce4dc _ZN28UnkStruct_ov024_020d8694_2FC8vfunc_0CEv kind:function(arm,size=0x88) addr:0x020ce4e4 -_ZN18UnkStruct_020d86986CreateEv kind:function(arm,size=0x24) addr:0x020ce56c -_ZN18UnkStruct_020d8698C1Ev kind:function(arm,size=0x19c) addr:0x020ce590 -_ZN18UnkStruct_020d8698D1Ev kind:function(arm,size=0xd8) addr:0x020ce72c -_ZN18UnkStruct_020d8698D0Ev kind:function(arm,size=0xe0) addr:0x020ce804 -_ZN18UnkStruct_020d869819func_ov024_020cd094Ev kind:function(arm,size=0xbc) addr:0x020ce8e4 -_ZN18UnkStruct_020d869819func_ov024_020cd150Ev kind:function(arm,size=0x94) addr:0x020ce9a0 -_ZN18UnkStruct_020d86988vfunc_08EP5InputP12TouchControl kind:function(arm,size=0x98) addr:0x020cea34 -_ZN18UnkStruct_020d86988vfunc_10EPc kind:function(arm,size=0xcc) addr:0x020ceacc -_ZN18UnkStruct_020d869819func_ov024_020cd348Ehh kind:function(arm,size=0x10) addr:0x020ceb98 -_ZN18UnkStruct_020d869819func_ov024_020cd358Eh kind:function(arm,size=0x10) addr:0x020ceba8 -_ZN18UnkStruct_020d869819func_ov024_020cd368Ebb kind:function(arm,size=0x3c) addr:0x020cebb8 -_ZN18UnkStruct_020d869819func_ov024_020cd3a4Ev kind:function(arm,size=0x2c) addr:0x020cebf4 -_ZN18UnkStruct_020d869819func_ov024_020cd3d0Ev kind:function(arm,size=0x10) addr:0x020cec20 -_ZN18UnkStruct_020d869819func_ov024_020cd3e0Eb kind:function(arm,size=0x10) addr:0x020cec30 -_ZN18UnkStruct_020d869819func_ov024_020cd3f0Eb kind:function(arm,size=0x10) addr:0x020cec40 -_ZN18UnkStruct_020d869819func_ov024_020cd400Ev kind:function(arm,size=0x10) addr:0x020cec50 -_ZN18UnkStruct_020d869819func_ov024_020cd410Ev kind:function(arm,size=0x10) addr:0x020cec60 -_ZN18UnkStruct_020d869819func_ov024_020cd420Ev kind:function(arm,size=0x38) addr:0x020cec70 -_ZN18UnkStruct_020d869819func_ov024_020cd458Ejb kind:function(arm,size=0x4c) addr:0x020ceca8 -_ZN18UnkStruct_020d869819func_ov024_020cd4a4Eb kind:function(arm,size=0x40) addr:0x020cecf4 -_ZN18UnkStruct_020d869819func_ov024_020cd4e4Etb kind:function(arm,size=0xdc) addr:0x020ced34 -_ZN18UnkStruct_020d869819func_ov024_020cd5c0Et kind:function(arm,size=0x44) addr:0x020cee10 -_ZN18UnkStruct_020d869819func_ov024_020cd604Ev kind:function(arm,size=0x6c) addr:0x020cee54 -_ZN21UnkStruct_020d8698_1CC1Ev kind:function(arm,size=0xf8) addr:0x020ceec0 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cd768Ev kind:function(arm,size=0xc) addr:0x020cefb8 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cd774Ev kind:function(arm,size=0x27c) addr:0x020cefc4 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cd9f0Ev kind:function(arm,size=0xbc) addr:0x020cf240 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cdaacEv kind:function(arm,size=0x290) addr:0x020cf2fc -_ZN21UnkStruct_020d8698_1C19func_ov024_020cdd3cEhh kind:function(arm,size=0x144) addr:0x020cf58c -_ZN21UnkStruct_020d8698_1C19func_ov024_020cde54Eh kind:function(arm,size=0x74) addr:0x020cf6d0 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cdec8Ev kind:function(arm,size=0x110) addr:0x020cf744 -_ZN21UnkStruct_020d8698_1C19func_ov024_020cdfd8Ev kind:function(arm,size=0x2b8) addr:0x020cf854 -_ZN21UnkStruct_020d8698_1C19func_ov024_020ce218Ev kind:function(arm,size=0x48) addr:0x020cfb0c -_ZN21UnkStruct_020d8698_1C19func_ov024_020ce260Ev kind:function(arm,size=0x48) addr:0x020cfb54 -_ZN21UnkStruct_020d8698_1C19func_ov024_020ce2a8Ev kind:function(arm,size=0x24) addr:0x020cfb9c -_ZN21UnkStruct_020d8698_24C1Ev kind:function(arm,size=0x24c) addr:0x020cfbc0 -_ZN21UnkStruct_020d8698_2419func_ov024_020ce518Ev kind:function(arm,size=0x58) addr:0x020cfe0c -_ZN21UnkStruct_020d8698_2419func_ov024_020ce570Ev kind:function(arm,size=0x5c) addr:0x020cfe64 -_ZN21UnkStruct_020d8698_2419func_ov024_020ce5ccEv kind:function(arm,size=0x2c0) addr:0x020cfec0 -_ZN21UnkStruct_020d8698_2419func_ov024_020ce88cEPc kind:function(arm,size=0x104) addr:0x020d0180 -_ZN21UnkStruct_020d8698_2419func_ov024_020ce990Ebb kind:function(arm,size=0x1c) addr:0x020d0284 -_ZN21UnkStruct_020d8698_2419func_ov024_020ce9acEv kind:function(arm,size=0x50) addr:0x020d02a0 -_ZN21UnkStruct_020d8698_2CC1Ev kind:function(arm,size=0x358) addr:0x020d02f0 -_ZN21UnkStruct_020d8698_2C19func_ov024_020ced54Ev kind:function(arm,size=0x54) addr:0x020d0648 -_ZN21UnkStruct_020d8698_2C19func_ov024_020ceda8Ev kind:function(arm,size=0xb0) addr:0x020d069c -_ZN21UnkStruct_020d8698_2C19func_ov024_020cee58Ev kind:function(arm,size=0xc) addr:0x020d074c -_ZN21UnkStruct_020d8698_2C19func_ov024_020cee64Ev kind:function(arm,size=0x4c) addr:0x020d0758 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cee84Ev kind:function(arm,size=0xe8) addr:0x020d07a4 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cef58Ev kind:function(arm,size=0x360) addr:0x020d088c -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf2b8EPc kind:function(arm,size=0x1dc) addr:0x020d0bec -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf494Eb kind:function(arm,size=0x30) addr:0x020d0dc8 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf4c4Ev kind:function(arm,size=0x50) addr:0x020d0df8 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf514Ev kind:function(arm,size=0x28) addr:0x020d0e48 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf53cEb kind:function(arm,size=0x34) addr:0x020d0e70 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf570Ev kind:function(arm,size=0x14) addr:0x020d0ea4 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf584Ev kind:function(arm,size=0x24) addr:0x020d0eb8 -_ZN21UnkStruct_020d8698_2C19func_ov024_020cf5a8Eb kind:function(arm,size=0x38) addr:0x020d0edc -_ZN21UnkStruct_020d8698_34C1Ev kind:function(arm,size=0xb8) addr:0x020d0f14 -_ZN21UnkStruct_020d8698_3419func_ov024_020cf698Ev kind:function(arm,size=0x4c) addr:0x020d0fcc -_ZN21UnkStruct_020d8698_3419func_ov024_020cf6e4Ev kind:function(arm,size=0x40) addr:0x020d1018 -_ZN21UnkStruct_020d8698_3419func_ov024_020cf724Ev kind:function(arm,size=0xd0) addr:0x020d1058 -_ZN21UnkStruct_020d8698_3CC1Ev kind:function(arm,size=0x38) addr:0x020d1128 -_ZN21UnkStruct_020d8698_3C19func_ov024_020cf82cEv kind:function(arm,size=0x5c) addr:0x020d1160 -_ZN21UnkStruct_020d8698_3C19func_ov024_020cf888Ev kind:function(arm,size=0x4) addr:0x020d11bc -_ZN21UnkStruct_020d8698_3C19func_ov024_020cf88cEv kind:function(arm,size=0xb8) addr:0x020d11c0 -_ZN8InstanceI18UnkStruct_020d8698EC2Ev kind:function(arm,size=0x10) addr:0x020d1278 -_ZN8InstanceI18UnkStruct_020d8698ED2Ev kind:function(arm,size=0x14) addr:0x020d1288 +_ZN16UICounterManager6CreateEv kind:function(arm,size=0x24) addr:0x020ce56c +_ZN16UICounterManagerC1Ev kind:function(arm,size=0x19c) addr:0x020ce590 +_ZN16UICounterManagerD1Ev kind:function(arm,size=0xd8) addr:0x020ce72c +_ZN16UICounterManagerD0Ev kind:function(arm,size=0xe0) addr:0x020ce804 +_ZN16UICounterManager19func_ov024_020cd094Ev kind:function(arm,size=0xbc) addr:0x020ce8e4 +_ZN16UICounterManager19func_ov024_020cd150Ev kind:function(arm,size=0x94) addr:0x020ce9a0 +_ZN16UICounterManager8vfunc_08EP5InputP12TouchControl kind:function(arm,size=0x98) addr:0x020cea34 +_ZN16UICounterManager8vfunc_10EPc kind:function(arm,size=0xcc) addr:0x020ceacc +_ZN16UICounterManager19func_ov024_020cd348Ehh kind:function(arm,size=0x10) addr:0x020ceb98 +_ZN16UICounterManager19func_ov024_020cd358Eh kind:function(arm,size=0x10) addr:0x020ceba8 +_ZN16UICounterManager19func_ov024_020cd368Ebb kind:function(arm,size=0x3c) addr:0x020cebb8 +_ZN16UICounterManager19func_ov024_020cd3a4Ev kind:function(arm,size=0x2c) addr:0x020cebf4 +_ZN16UICounterManager19func_ov024_020cd3d0Ev kind:function(arm,size=0x10) addr:0x020cec20 +_ZN16UICounterManager19func_ov024_020cd3e0Eb kind:function(arm,size=0x10) addr:0x020cec30 +_ZN16UICounterManager19func_ov024_020cd3f0Eb kind:function(arm,size=0x10) addr:0x020cec40 +_ZN16UICounterManager19func_ov024_020cd400Ev kind:function(arm,size=0x10) addr:0x020cec50 +_ZN16UICounterManager19func_ov024_020cd410Ev kind:function(arm,size=0x10) addr:0x020cec60 +_ZN16UICounterManager19func_ov024_020cd420Ev kind:function(arm,size=0x38) addr:0x020cec70 +_ZN16UICounterManager19func_ov024_020cd458Ejb kind:function(arm,size=0x4c) addr:0x020ceca8 +_ZN16UICounterManager19func_ov024_020cd4a4Eb kind:function(arm,size=0x40) addr:0x020cecf4 +_ZN16UICounterManager19func_ov024_020cd4e4Etb kind:function(arm,size=0xdc) addr:0x020ced34 +_ZN16UICounterManager19func_ov024_020cd5c0Et kind:function(arm,size=0x44) addr:0x020cee10 +_ZN16UICounterManager19func_ov024_020cd604Ev kind:function(arm,size=0x6c) addr:0x020cee54 +_ZN16UICounter_HealthC1Ev kind:function(arm,size=0xf8) addr:0x020ceec0 +_ZN16UICounter_Health19func_ov024_020cd768Ev kind:function(arm,size=0xc) addr:0x020cefb8 +_ZN16UICounter_Health19func_ov024_020cd774Ev kind:function(arm,size=0x27c) addr:0x020cefc4 +_ZN16UICounter_Health19func_ov024_020cd9f0Ev kind:function(arm,size=0xbc) addr:0x020cf240 +_ZN16UICounter_Health19func_ov024_020cdaacEv kind:function(arm,size=0x290) addr:0x020cf2fc +_ZN16UICounter_Health19func_ov024_020cdd3cEhh kind:function(arm,size=0x144) addr:0x020cf58c +_ZN16UICounter_Health19func_ov024_020cde54Eh kind:function(arm,size=0x74) addr:0x020cf6d0 +_ZN16UICounter_Health19func_ov024_020cdec8Ev kind:function(arm,size=0x110) addr:0x020cf744 +_ZN16UICounter_Health19func_ov024_020cdfd8Ev kind:function(arm,size=0x2b8) addr:0x020cf854 +_ZN16UICounter_Health19func_ov024_020ce218Ev kind:function(arm,size=0x48) addr:0x020cfb0c +_ZN16UICounter_Health19func_ov024_020ce260Ev kind:function(arm,size=0x48) addr:0x020cfb54 +_ZN16UICounter_Health12GetMaxHeartsEv kind:function(arm,size=0x24) addr:0x020cfb9c +_ZN16UICounter_RupeesC1Ev kind:function(arm,size=0x24c) addr:0x020cfbc0 +_ZN16UICounter_Rupees19func_ov024_020ce518Ev kind:function(arm,size=0x58) addr:0x020cfe0c +_ZN16UICounter_Rupees19func_ov024_020ce570Ev kind:function(arm,size=0x5c) addr:0x020cfe64 +_ZN16UICounter_Rupees19func_ov024_020ce5ccEv kind:function(arm,size=0x2c0) addr:0x020cfec0 +_ZN16UICounter_Rupees19func_ov024_020ce88cEPc kind:function(arm,size=0x104) addr:0x020d0180 +_ZN16UICounter_Rupees19func_ov024_020ce990Ebb kind:function(arm,size=0x1c) addr:0x020d0284 +_ZN16UICounter_Rupees19func_ov024_020ce9acEv kind:function(arm,size=0x50) addr:0x020d02a0 +_ZN15UICounter_CargoC1Ev kind:function(arm,size=0x358) addr:0x020d02f0 +_ZN15UICounter_Cargo19func_ov024_020ced54Ev kind:function(arm,size=0x54) addr:0x020d0648 +_ZN15UICounter_Cargo19func_ov024_020ceda8Ev kind:function(arm,size=0xb0) addr:0x020d069c +_ZN15UICounter_Cargo19func_ov024_020cee58Ev kind:function(arm,size=0xc) addr:0x020d074c +_ZN15UICounter_Cargo19func_ov024_020cee64Ev kind:function(arm,size=0x4c) addr:0x020d0758 +_ZN15UICounter_Cargo19func_ov024_020cee84Ev kind:function(arm,size=0xe8) addr:0x020d07a4 +_ZN15UICounter_Cargo19func_ov024_020cef58Ev kind:function(arm,size=0x360) addr:0x020d088c +_ZN15UICounter_Cargo19func_ov024_020cf2b8EPc kind:function(arm,size=0x1dc) addr:0x020d0bec +_ZN15UICounter_Cargo19func_ov024_020cf494Eb kind:function(arm,size=0x30) addr:0x020d0dc8 +_ZN15UICounter_Cargo19func_ov024_020cf4c4Ev kind:function(arm,size=0x50) addr:0x020d0df8 +_ZN15UICounter_Cargo19func_ov024_020cf514Ev kind:function(arm,size=0x28) addr:0x020d0e48 +_ZN15UICounter_Cargo19func_ov024_020cf53cEb kind:function(arm,size=0x34) addr:0x020d0e70 +_ZN15UICounter_Cargo19func_ov024_020cf570Ev kind:function(arm,size=0x14) addr:0x020d0ea4 +_ZN15UICounter_Cargo19func_ov024_020cf584Ev kind:function(arm,size=0x24) addr:0x020d0eb8 +_ZN15UICounter_Cargo19func_ov024_020cf5a8Eb kind:function(arm,size=0x38) addr:0x020d0edc +_ZN19UICounter_SmallKeysC1Ev kind:function(arm,size=0xb8) addr:0x020d0f14 +_ZN19UICounter_SmallKeys19func_ov024_020cf698Ev kind:function(arm,size=0x4c) addr:0x020d0fcc +_ZN19UICounter_SmallKeys19func_ov024_020cf6e4Ev kind:function(arm,size=0x40) addr:0x020d1018 +_ZN19UICounter_SmallKeys19func_ov024_020cf724Ev kind:function(arm,size=0xd0) addr:0x020d1058 +_ZN22UICounter_TearsOfLightC1Ev kind:function(arm,size=0x38) addr:0x020d1128 +_ZN22UICounter_TearsOfLight19func_ov024_020cf82cEv kind:function(arm,size=0x5c) addr:0x020d1160 +_ZN22UICounter_TearsOfLight19func_ov024_020cf888Ev kind:function(arm,size=0x4) addr:0x020d11bc +_ZN22UICounter_TearsOfLight19func_ov024_020cf88cEv kind:function(arm,size=0xb8) addr:0x020d11c0 +_ZN8InstanceI16UICounterManagerEC2Ev kind:function(arm,size=0x10) addr:0x020d1278 +_ZN8InstanceI16UICounterManagerED2Ev kind:function(arm,size=0x14) addr:0x020d1288 _ZN21UnkStruct_027e0cf8_00C1Ev kind:function(arm,size=0x68) addr:0x020d129c _ZN21UnkStruct_027e0cf8_00D1Ev kind:function(arm,size=0x4) addr:0x020d1304 -func_ov024_020d1308 kind:function(arm,size=0x1a8) addr:0x020d1308 -_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfb7cEPvP5Vec2sitii kind:function(arm,size=0x1d8) addr:0x020d14b0 -func_ov024_020d1688 kind:function(arm,size=0xd0) addr:0x020d1688 -func_ov024_020d1758 kind:function(arm,size=0x48) addr:0x020d1758 -func_ov024_020d17a0 kind:function(arm,size=0x28) addr:0x020d17a0 -func_ov024_020d17c8 kind:function(arm,size=0x3c) addr:0x020d17c8 -func_ov024_020d1804 kind:function(arm,size=0x4c) addr:0x020d1804 -func_ov024_020d1850 kind:function(arm,size=0x2c) addr:0x020d1850 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cf9d4EP27UnkStruct_027e0cf8_00_18_00 kind:function(arm,size=0x1a8) addr:0x020d1308 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfb7cEP14UnkDataStruct4P5Vec2sitii kind:function(arm,size=0x1d8) addr:0x020d14b0 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfd54Eiiii kind:function(arm,size=0xd0) addr:0x020d1688 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe24Es kind:function(arm,size=0x48) addr:0x020d1758 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe6cEiiii kind:function(arm,size=0x28) addr:0x020d17a0 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfe94Ei kind:function(arm,size=0x3c) addr:0x020d17c8 +_ZN21UnkStruct_027e0cf8_0019func_ov024_020cfed0Es kind:function(arm,size=0x4c) addr:0x020d1804 +_ZN24UnkStruct_027e0cf8_0C_0019func_ov024_020cff1cEv kind:function(arm,size=0x2c) addr:0x020d1850 _ZN21UnkStruct_027e0cf8_0CC1Ev kind:function(arm,size=0x40) addr:0x020d187c _ZN21UnkStruct_027e0cf8_0CD1Ev kind:function(arm,size=0x4) addr:0x020d18bc -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020cff8cEPvP5Vec2s kind:function(arm,size=0x78) addr:0x020d18c0 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020cff8cEP14UnkDataStruct4P5Vec2s kind:function(arm,size=0x78) addr:0x020d18c0 _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0004Ev kind:function(arm,size=0x28) addr:0x020d1938 -func_ov024_020d1960 kind:function(arm,size=0x1b4) addr:0x020d1960 -func_ov024_020d1b14 kind:function(arm,size=0x120) addr:0x020d1b14 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d02e0Ev kind:function(arm,size=0x60) addr:0x020d1c34 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0340Ev kind:function(arm,size=0xb8) addr:0x020d1c94 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d002cEPK14UnkDataStruct4 kind:function(arm,size=0x1b4) addr:0x020d1960 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d01c0EPK14UnkDataStruct4 kind:function(arm,size=0x120) addr:0x020d1b14 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d02e0EPiS0_i kind:function(arm,size=0x60) addr:0x020d1c34 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0340EP5Vec2si kind:function(arm,size=0xb8) addr:0x020d1c94 _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d03f8EP5Vec2s kind:function(arm,size=0x24) addr:0x020d1d4c _ZN21UnkStruct_027e0cf8_0C19func_ov024_020d041cEP5Vec2s kind:function(arm,size=0xf4) addr:0x020d1d70 -func_ov024_020d1e64 kind:function(arm,size=0xa0) addr:0x020d1e64 -_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d05d0Eii kind:function(arm,size=0x3c) addr:0x020d1f04 -_ZN29AdventureModeManager_1B8_BaseC2EhbPK32AdventureModeManager_1B8_Base_1Cbb kind:function(arm,size=0x94) addr:0x020d1f40 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d0510Es kind:function(arm,size=0xa0) addr:0x020d1e64 +_ZN21UnkStruct_027e0cf8_0C19func_ov024_020d05d0Eib kind:function(arm,size=0x3c) addr:0x020d1f04 +_ZN29AdventureModeManager_1B8_BaseC2EhbRK32AdventureModeManager_1B8_Base_1Cbb kind:function(arm,size=0x94) addr:0x020d1f40 _ZN29AdventureModeManager_1B8_BaseD2Ev kind:function(arm,size=0x18) addr:0x020d1fd4 _ZN29AdventureModeManager_1B8_Base19func_ov024_020d0698Ev kind:function(arm,size=0x38) addr:0x020d1fec _ZN29AdventureModeManager_1B8_Base19func_ov024_020d06d0Ev kind:function(arm,size=0x5c) addr:0x020d2024 @@ -455,135 +455,135 @@ _ZN24AdventureModeManager_1B819func_ov024_020d14a8EP32AdventureModeManager_1B8_B _ZN24AdventureModeManager_1B819func_ov024_020d1564EPK32AdventureModeManager_1B8_Base_1CiPih kind:function(arm,size=0xb0) addr:0x020d2eb8 _ZN24AdventureModeManager_1B819func_ov024_020d1614EPv kind:function(arm,size=0x24) addr:0x020d2f68 _ZN24AdventureModeManager_1B819func_ov024_020d1638Ev kind:function(arm,size=0x20) addr:0x020d2f8c -func_ov024_020d2fac kind:function(arm,size=0x24) addr:0x020d2fac +_ZN24UnkStruct_ov024_020d86a06CreateEv kind:function(arm,size=0x24) addr:0x020d2fac _ZN24UnkStruct_ov024_020d86a019func_ov024_020d167cEv kind:function(arm,size=0x18) addr:0x020d2fd0 -func_ov024_020d2fe8 kind:function(arm,size=0x28) addr:0x020d2fe8 -_ZN19func_ov024_020d3010D1Ev kind:function(arm,size=0x14) addr:0x020d3010 -_ZN19func_ov024_020d3024D0Ev kind:function(arm,size=0x1c) addr:0x020d3024 -func_ov024_020d3040 kind:function(arm,size=0x10) addr:0x020d3040 -func_ov024_020d3050 kind:function(arm,size=0x80) addr:0x020d3050 -func_ov024_020d30d0 kind:function(arm,size=0x200) addr:0x020d30d0 -func_ov024_020d32d0 kind:function(thumb,size=0x44) addr:0x020d32d0 -func_ov024_020d3314 kind:function(thumb,size=0x16) addr:0x020d3314 -func_ov024_020d332c kind:function(thumb,size=0x20) addr:0x020d332c -func_ov024_020d334c kind:function(arm,size=0x10) addr:0x020d334c -func_ov024_020d335c kind:function(arm,size=0x10) addr:0x020d335c -func_ov024_020d336c kind:function(arm,size=0x10) addr:0x020d336c -func_ov024_020d337c kind:function(arm,size=0x70) addr:0x020d337c -func_ov024_020d33ec kind:function(arm,size=0x20) addr:0x020d33ec -func_ov024_020d340c kind:function(arm,size=0xe0) addr:0x020d340c -func_ov024_020d34ec kind:function(arm,size=0x48) addr:0x020d34ec -func_ov024_020d3534 kind:function(arm,size=0x5c) addr:0x020d3534 -func_ov024_020d3590 kind:function(arm,size=0x48) addr:0x020d3590 -func_ov024_020d35d8 kind:function(arm,size=0x44) addr:0x020d35d8 -func_ov024_020d361c kind:function(arm,size=0x2c) addr:0x020d361c -func_ov024_020d3648 kind:function(arm,size=0x3c) addr:0x020d3648 -func_ov024_020d3684 kind:function(arm,size=0x48) addr:0x020d3684 -func_ov024_020d36cc kind:function(arm,size=0x28) addr:0x020d36cc -func_ov024_020d36f4 kind:function(arm,size=0x28) addr:0x020d36f4 -func_ov024_020d371c kind:function(arm,size=0x2c) addr:0x020d371c -func_ov024_020d3748 kind:function(arm,size=0x2c) addr:0x020d3748 -func_ov024_020d3774 kind:function(arm,size=0x8c) addr:0x020d3774 -func_ov024_020d3800 kind:function(arm,size=0xb4) addr:0x020d3800 -func_ov024_020d38b4 kind:function(arm,size=0x10) addr:0x020d38b4 -func_ov024_020d38c4 kind:function(arm,size=0x34) addr:0x020d38c4 -func_ov024_020d38f8 kind:function(arm,size=0x44) addr:0x020d38f8 -func_ov024_020d393c kind:function(arm,size=0x48) addr:0x020d393c -func_ov024_020d3984 kind:function(arm,size=0x5c) addr:0x020d3984 -func_ov024_020d39e0 kind:function(arm,size=0xc) addr:0x020d39e0 -func_ov024_020d39ec kind:function(arm,size=0x28) addr:0x020d39ec -func_ov024_020d3a14 kind:function(arm,size=0xe0) addr:0x020d3a14 -func_ov024_020d3af4 kind:function(arm,size=0x38) addr:0x020d3af4 -func_ov024_020d3b2c kind:function(arm,size=0x64) addr:0x020d3b2c -func_ov024_020d3b90 kind:function(arm,size=0x34) addr:0x020d3b90 -func_ov024_020d3bc4 kind:function(arm,size=0x3c) addr:0x020d3bc4 -func_ov024_020d3c00 kind:function(arm,size=0x74) addr:0x020d3c00 -func_ov024_020d3c74 kind:function(arm,size=0x28) addr:0x020d3c74 -func_ov024_020d3c9c kind:function(arm,size=0x54) addr:0x020d3c9c -func_ov024_020d3cf0 kind:function(arm,size=0x20) addr:0x020d3cf0 -func_ov024_020d3d10 kind:function(arm,size=0x30) addr:0x020d3d10 -func_ov024_020d3d40 kind:function(arm,size=0x50) addr:0x020d3d40 -func_ov024_020d3d90 kind:function(arm,size=0xc) addr:0x020d3d90 -func_ov024_020d3d9c kind:function(arm,size=0x1c) addr:0x020d3d9c -func_ov024_020d3db8 kind:function(arm,size=0x2c) addr:0x020d3db8 -func_ov024_020d3de4 kind:function(arm,size=0x44) addr:0x020d3de4 -func_ov024_020d24d4 kind:function(arm,size=0x44) addr:0x020d3e28 -func_ov024_020d2518 kind:function(arm,size=0x4) addr:0x020d3e6c -func_ov024_020d3e70 kind:function(arm,size=0x4) addr:0x020d3e70 -func_ov024_020d3e74 kind:function(arm,size=0x18) addr:0x020d3e74 -func_ov024_020d2538 kind:function(arm,size=0x2c) addr:0x020d3e8c -func_ov024_020d3eb8 kind:function(arm,size=0x28) addr:0x020d3eb8 -func_ov024_020d3ee0 kind:function(arm,size=0x124) addr:0x020d3ee0 -func_ov024_020d4004 kind:function(arm,size=0xcc) addr:0x020d4004 -func_ov024_020d40d0 kind:function(arm,size=0x50) addr:0x020d40d0 -func_ov024_020d4120 kind:function(arm,size=0x40) addr:0x020d4120 -func_ov024_020d4160 kind:function(arm,size=0x1a4) addr:0x020d4160 -func_ov024_020d4304 kind:function(arm,size=0x68) addr:0x020d4304 -func_ov024_020d436c kind:function(arm,size=0xf0) addr:0x020d436c -func_ov024_020d445c kind:function(arm,size=0x38) addr:0x020d445c -func_ov024_020d4494 kind:function(arm,size=0x8c) addr:0x020d4494 -func_ov024_020d4520 kind:function(arm,size=0x88) addr:0x020d4520 -func_ov024_020d45a8 kind:function(arm,size=0xa8) addr:0x020d45a8 -func_ov024_020d4650 kind:function(arm,size=0x364) addr:0x020d4650 -func_ov024_020d49b4 kind:function(arm,size=0x4) addr:0x020d49b4 -func_ov024_020d49b8 kind:function(arm,size=0x4) addr:0x020d49b8 -func_ov024_020d49bc kind:function(arm,size=0x24) addr:0x020d49bc -func_ov024_020d49e0 kind:function(arm,size=0x74) addr:0x020d49e0 -func_ov024_020d4a54 kind:function(arm,size=0x40) addr:0x020d4a54 -func_ov024_020d4a94 kind:function(arm,size=0x18) addr:0x020d4a94 -func_ov024_020d4aac kind:function(arm,size=0xa0) addr:0x020d4aac +_ZN27UnkStruct_ov024_020d86a0_00C1EP24UnkStruct_ov024_020d86a0 kind:function(arm,size=0x28) addr:0x020d2fe8 +_ZN27UnkStruct_ov024_020d86a0_00D1Ev kind:function(arm,size=0x14) addr:0x020d3010 +_ZN27UnkStruct_ov024_020d86a0_00D0Ev kind:function(arm,size=0x1c) addr:0x020d3024 +_ZN27UnkStruct_ov024_020d86a0_008vfunc_0CEv kind:function(arm,size=0x10) addr:0x020d3040 +_ZN20PlayerActor_A0_38_048vfunc_00Ev kind:function(arm,size=0x80) addr:0x020d3050 +_ZN20PlayerActor_A0_38_188vfunc_00Ev kind:function(arm,size=0x200) addr:0x020d30d0 +_ZN17PlayerActor_A0_38C1Ev kind:function(thumb,size=0x44) addr:0x020d32d0 +_ZN17PlayerActor_A0_38D1Ev kind:function(thumb,size=0x16) addr:0x020d3314 +_ZN17PlayerActor_A0_3819func_ov024_020d19d8Ev kind:function(thumb,size=0x20) addr:0x020d332c +_Z20SetCreditsEndingTypes kind:function(arm,size=0x10) addr:0x020d334c +_Z20GetCreditsEndingTypev kind:function(arm,size=0x10) addr:0x020d335c +_ZN17UnkDataStruct4_1419func_ov024_020d1a18Ei kind:function(arm,size=0x10) addr:0x020d336c +_ZN17UnkDataStruct4_1419func_ov024_020d1a28Eh kind:function(arm,size=0x70) addr:0x020d337c +_ZN17UnkDataStruct4_1419func_ov024_020d1a98Eii kind:function(arm,size=0x20) addr:0x020d33ec +_ZN17UnkDataStruct4_1419func_ov024_020d1ab8EiPiS0_ kind:function(arm,size=0xe0) addr:0x020d340c +_ZN17UnkDataStruct4_1419func_ov024_020d1b98EPii kind:function(arm,size=0x48) addr:0x020d34ec +_ZN17UnkDataStruct4_1419func_ov024_020d1be0Ei kind:function(arm,size=0x5c) addr:0x020d3534 +_ZNK17UnkDataStruct4_1419func_ov024_020d1c3cEPii kind:function(arm,size=0x48) addr:0x020d3590 +_ZN17UnkDataStruct4_1419func_ov024_020d1c84Ev kind:function(arm,size=0x44) addr:0x020d35d8 +_ZNK17UnkDataStruct4_1419func_ov024_020d1cc8Eii kind:function(arm,size=0x2c) addr:0x020d361c +_ZNK17UnkDataStruct4_1419func_ov024_020d1cf4Ei kind:function(arm,size=0x3c) addr:0x020d3648 +_ZNK17UnkDataStruct4_1419func_ov024_020d1d30Eit kind:function(arm,size=0x48) addr:0x020d3684 +_ZNK17UnkDataStruct4_1419func_ov024_020d1d78Ev kind:function(arm,size=0x28) addr:0x020d36cc +_ZNK17UnkDataStruct4_1419func_ov024_020d1da0Ev kind:function(arm,size=0x28) addr:0x020d36f4 +_ZNK17UnkDataStruct4_1419func_ov024_020d1dc8Eii kind:function(arm,size=0x2c) addr:0x020d371c +_ZNK17UnkDataStruct4_1419func_ov024_020d1df4Ei kind:function(arm,size=0x2c) addr:0x020d3748 +_ZN17UnkDataStruct4_1419func_ov024_020d1e20EPsi kind:function(arm,size=0x8c) addr:0x020d3774 +_ZN17UnkDataStruct4_1419func_ov024_020d1eacEi kind:function(arm,size=0xb4) addr:0x020d3800 +_ZN17UnkDataStruct4_1419func_ov024_020d1f60Ej kind:function(arm,size=0x10) addr:0x020d38b4 +_ZNK17UnkDataStruct4_1419func_ov024_020d1f70Ev kind:function(arm,size=0x34) addr:0x020d38c4 +_ZNK17UnkDataStruct4_1419func_ov024_020d1fa4Ei kind:function(arm,size=0x44) addr:0x020d38f8 +_ZN17UnkDataStruct4_1419func_ov024_020d1fe8Ev kind:function(arm,size=0x48) addr:0x020d393c +_ZN17UnkDataStruct4_1419func_ov024_020d2030Eii kind:function(arm,size=0x5c) addr:0x020d3984 +_ZNK17UnkDataStruct4_1419func_ov024_020d208cEi kind:function(arm,size=0xc) addr:0x020d39e0 +_ZN17UnkDataStruct4_1419func_ov024_020d2098Eii kind:function(arm,size=0x28) addr:0x020d39ec +_ZNK17UnkDataStruct4_1419func_ov024_020d20c0Eii kind:function(arm,size=0xe0) addr:0x020d3a14 +_ZNK17UnkDataStruct4_1416IsStationDungeonEv kind:function(arm,size=0x38) addr:0x020d3af4 +_ZNK17UnkDataStruct4_1419func_ov024_020d21d8Ev kind:function(arm,size=0x64) addr:0x020d3b2c +_ZNK17UnkDataStruct4_1419func_ov024_020d223cEv kind:function(arm,size=0x34) addr:0x020d3b90 +_ZNK17UnkDataStruct4_1419func_ov024_020d2270Eii kind:function(arm,size=0x3c) addr:0x020d3bc4 +_ZNK17UnkDataStruct4_1419func_ov024_020d22acEi kind:function(arm,size=0x74) addr:0x020d3c00 +_ZNK17UnkDataStruct4_1419func_ov024_020d2320Ei kind:function(arm,size=0x28) addr:0x020d3c74 +_ZNK17UnkDataStruct4_1419func_ov024_020d2348Ei kind:function(arm,size=0x54) addr:0x020d3c9c +_ZNK17UnkDataStruct4_1419func_ov024_020d239cEv kind:function(arm,size=0x20) addr:0x020d3cf0 +_ZNK17UnkDataStruct4_1419func_ov024_020d23bcEv kind:function(arm,size=0x30) addr:0x020d3d10 +_ZNK17UnkDataStruct4_1419func_ov024_020d23ecEv kind:function(arm,size=0x50) addr:0x020d3d40 +_ZNK17UnkDataStruct4_1419func_ov024_020d243cEv kind:function(arm,size=0xc) addr:0x020d3d90 +_ZNK17UnkDataStruct4_1419func_ov024_020d2448Ev kind:function(arm,size=0x1c) addr:0x020d3d9c +_ZNK17UnkDataStruct4_1419func_ov024_020d2464Eb kind:function(arm,size=0x2c) addr:0x020d3db8 +_ZN14UnkDataStruct4C2Ev kind:function(arm,size=0x44) addr:0x020d3de4 +_ZN14UnkDataStruct4C1Ev kind:function(arm,size=0x44) addr:0x020d3e28 +_ZN14UnkDataStruct419func_ov024_020d2518Ev kind:function(arm,size=0x4) addr:0x020d3e6c +_ZN14UnkDataStruct419func_ov024_020d251cEv kind:function(arm,size=0x4) addr:0x020d3e70 +_ZN14UnkDataStruct419func_ov024_020d2520EP22UnkStruct_SceneChange1 kind:function(arm,size=0x18) addr:0x020d3e74 +_ZN14UnkDataStruct419func_ov024_020d2538EjhP19UnkDataStruct4_14_2 kind:function(arm,size=0x2c) addr:0x020d3e8c +_ZN14UnkDataStruct419func_ov024_020d2564Ev kind:function(arm,size=0x28) addr:0x020d3eb8 +_ZN14UnkDataStruct419func_ov024_020d258cEjh kind:function(arm,size=0x124) addr:0x020d3ee0 +_ZN14UnkDataStruct419func_ov024_020d26b0Ei kind:function(arm,size=0xcc) addr:0x020d4004 +_ZN14UnkDataStruct419func_ov024_020d277cEv kind:function(arm,size=0x50) addr:0x020d40d0 +_ZN14UnkDataStruct419func_ov024_020d27ccEv kind:function(arm,size=0x40) addr:0x020d4120 +_ZN14UnkDataStruct419func_ov024_020d280cEv kind:function(arm,size=0x1a4) addr:0x020d4160 +_ZN14UnkDataStruct419func_ov024_020d29b0Eiiiii kind:function(arm,size=0x68) addr:0x020d4304 +_ZN14UnkDataStruct419func_ov024_020d2a18Eiiiii kind:function(arm,size=0xf0) addr:0x020d436c +_ZNK14UnkDataStruct419func_ov024_020d2b08EiiP7VecFx32 kind:function(arm,size=0x38) addr:0x020d445c +_ZN14UnkDataStruct419func_ov024_020d2b40EP5Vec2sPKS_ kind:function(arm,size=0x8c) addr:0x020d4494 +_ZN14UnkDataStruct419func_ov024_020d2bccEP5Vec2sPKS_ kind:function(arm,size=0x88) addr:0x020d4520 +_ZN14UnkDataStruct419func_ov024_020d2c54EPA15_hi kind:function(arm,size=0xa8) addr:0x020d45a8 +_ZN14UnkDataStruct419func_ov024_020d2cfcEPA15_hii kind:function(arm,size=0x364) addr:0x020d4650 +_ZN14UnkDataStruct48vfunc_00Ev kind:function(arm,size=0x4) addr:0x020d49b4 +_ZN14UnkDataStruct48vfunc_04Ev kind:function(arm,size=0x4) addr:0x020d49b8 +_ZNK14UnkDataStruct419func_ov024_020d3068Ev kind:function(arm,size=0x24) addr:0x020d49bc +_ZNK14UnkDataStruct419func_ov024_020d308cEPiS0_s kind:function(arm,size=0x74) addr:0x020d49e0 +_ZN14UnkDataStruct419func_ov024_020d3100Ev kind:function(arm,size=0x40) addr:0x020d4a54 +_ZN14UnkDataStruct419func_ov024_020d3140Ev kind:function(arm,size=0x18) addr:0x020d4a94 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3158Ej kind:function(arm,size=0xa0) addr:0x020d4aac _ZN21UnkStruct_027e0cf8_08C1Ev kind:function(arm,size=0x88) addr:0x020d4b4c _ZN21UnkStruct_027e0cf8_08D1Ev kind:function(arm,size=0x34) addr:0x020d4bd4 -func_ov024_020d4c08 kind:function(arm,size=0x24) addr:0x020d4c08 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d32b4EPc kind:function(arm,size=0x24) addr:0x020d4c08 _ZN21UnkStruct_027e0cf8_0819func_ov024_020d32d8Ev kind:function(arm,size=0x10) addr:0x020d4c2c _ZN21UnkStruct_027e0cf8_0819func_ov024_020d32e8EP5Vec2s kind:function(arm,size=0x3c) addr:0x020d4c3c -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3324EPv kind:function(arm,size=0x24) addr:0x020d4c78 -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3348EPvitii kind:function(arm,size=0x24) addr:0x020d4c9c -func_ov024_020d4cc0 kind:function(arm,size=0xa0) addr:0x020d4cc0 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3324EP14UnkDataStruct4 kind:function(arm,size=0x24) addr:0x020d4c78 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3348EP14UnkDataStruct4itii kind:function(arm,size=0x24) addr:0x020d4c9c +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d336cEP14UnkDataStruct4iiii kind:function(arm,size=0xa0) addr:0x020d4cc0 _ZN21UnkStruct_027e0cf8_0819func_ov024_020d340cEv kind:function(arm,size=0x10) addr:0x020d4d60 -_ZN21UnkStruct_027e0cf8_0819func_ov024_020d341cEi kind:function(arm,size=0xc) addr:0x020d4d70 -func_ov024_020d4d7c kind:function(arm,size=0x78) addr:0x020d4d7c -func_ov024_020d4df4 kind:function(arm,size=0x7c) addr:0x020d4df4 -func_ov024_020d4e70 kind:function(arm,size=0x154) addr:0x020d4e70 -func_ov024_020d4fc4 kind:function(thumb,size=0x8c) addr:0x020d4fc4 -func_ov024_020d5050 kind:function(thumb,size=0x68) addr:0x020d5050 -func_ov024_020d50b8 kind:function(thumb,size=0xdc) addr:0x020d50b8 -func_ov024_020d5194 kind:function(thumb,size=0x58) addr:0x020d5194 -func_ov024_020d51ec kind:function(thumb,size=0x68) addr:0x020d51ec -func_ov024_020d5254 kind:function(arm,size=0x14) addr:0x020d5254 -func_ov024_020d5268 kind:function(arm,size=0x5c) addr:0x020d5268 -func_ov024_020d52c4 kind:function(arm,size=0x8c) addr:0x020d52c4 -func_ov024_020d5350 kind:function(arm,size=0x38) addr:0x020d5350 -func_ov024_020d5388 kind:function(arm,size=0x2c) addr:0x020d5388 -func_ov024_020d53b4 kind:function(arm,size=0x2c) addr:0x020d53b4 -func_ov024_020d53e0 kind:function(arm,size=0x50) addr:0x020d53e0 -func_ov024_020d5430 kind:function(arm,size=0x120) addr:0x020d5430 -func_ov024_020d5550 kind:function(arm,size=0x58) addr:0x020d5550 -func_ov024_020d55a8 kind:function(thumb,size=0xc) addr:0x020d55a8 -func_ov024_020d55b4 kind:function(thumb,size=0x94) addr:0x020d55b4 -func_ov024_020d5648 kind:function(thumb,size=0x2c) addr:0x020d5648 -func_ov024_020d5674 kind:function(thumb,size=0x5e) addr:0x020d5674 -func_ov024_020d56d4 kind:function(thumb,size=0x18) addr:0x020d56d4 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d341cEb kind:function(arm,size=0xc) addr:0x020d4d70 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d3428EPK14UnkDataStruct4ih kind:function(arm,size=0x78) addr:0x020d4d7c +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d34a0EPA15_hh kind:function(arm,size=0x7c) addr:0x020d4df4 +_ZN21UnkStruct_027e0cf8_0819func_ov024_020d351cEiiPiih kind:function(arm,size=0x154) addr:0x020d4e70 +ZTB_ParseFile kind:function(thumb,size=0x8c) addr:0x020d4fc4 +ZTB_ParseGRDB kind:function(thumb,size=0x68) addr:0x020d5050 +ZTB_ParseGRRL kind:function(thumb,size=0xdc) addr:0x020d50b8 +ZTB_ParseSTAB kind:function(thumb,size=0x58) addr:0x020d5194 +ZTB_ParseLDMK kind:function(thumb,size=0x68) addr:0x020d51ec +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3900EP5Vec2sPiS2_ii kind:function(arm,size=0x14) addr:0x020d5254 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3914EP5Vec2sS1_S1_ kind:function(arm,size=0x5c) addr:0x020d5268 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3970EP5Vec2sPiS2_ii kind:function(arm,size=0x8c) addr:0x020d52c4 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d39fcEP5Vec2sii kind:function(arm,size=0x38) addr:0x020d5350 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a34EP5Vec2sii kind:function(arm,size=0x2c) addr:0x020d5388 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a60EP5Vec2sS1_ii kind:function(arm,size=0x2c) addr:0x020d53b4 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3a8cEP5Vec2s kind:function(arm,size=0x50) addr:0x020d53e0 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3adcEP5Vec2siihbh kind:function(arm,size=0x120) addr:0x020d5430 +_ZN24UnkStruct_027e0cf8_08_0019func_ov024_020d3bfcEP5Vec2siib kind:function(arm,size=0x58) addr:0x020d5550 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3c54Ei kind:function(thumb,size=0xc) addr:0x020d55a8 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3c60EP27SaveFile_00000_0000_Data_D8 kind:function(thumb,size=0x94) addr:0x020d55b4 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3cf4Ei kind:function(thumb,size=0x2c) addr:0x020d5648 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d20Ev kind:function(thumb,size=0x5e) addr:0x020d5674 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d80Ei kind:function(thumb,size=0x18) addr:0x020d56d4 _ZN21UnkStruct_027e0ce0_3419func_ov024_020d3d98Eii kind:function(thumb,size=0x10) addr:0x020d56ec -func_ov024_020d56fc kind:function(thumb,size=0x16) addr:0x020d56fc -func_ov024_020d5714 kind:function(thumb,size=0xa) addr:0x020d5714 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3da8Eii kind:function(thumb,size=0x16) addr:0x020d56fc +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3dc0Eii kind:function(thumb,size=0xa) addr:0x020d5714 _ZN21UnkStruct_027e0ce0_3419func_ov024_020d3dccEv kind:function(thumb,size=0x20) addr:0x020d5720 -func_ov024_020d5740 kind:function(arm,size=0x20) addr:0x020d5740 -func_ov024_020d5760 kind:function(arm,size=0x24) addr:0x020d5760 -func_ov024_020d5784 kind:function(arm,size=0x38) addr:0x020d5784 -func_ov024_020d57bc kind:function(arm,size=0x80) addr:0x020d57bc -_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3ee8Eiti kind:function(arm,size=0x64) addr:0x020d583c -func_ov024_020d58a0 kind:function(arm,size=0x40) addr:0x020d58a0 -func_ov024_020d58e0 kind:function(arm,size=0x3c) addr:0x020d58e0 -func_ov024_020d591c kind:function(arm,size=0x40) addr:0x020d591c -func_ov024_020d595c kind:function(arm,size=0x44) addr:0x020d595c -func_ov024_020d59a0 kind:function(arm,size=0x4c) addr:0x020d59a0 -func_ov024_020d59ec kind:function(arm,size=0x88) addr:0x020d59ec +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3decEi kind:function(arm,size=0x20) addr:0x020d5740 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e0cEi kind:function(arm,size=0x24) addr:0x020d5760 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e30Eii kind:function(arm,size=0x38) addr:0x020d5784 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3e68Ei kind:function(arm,size=0x80) addr:0x020d57bc +_ZN21UnkStruct_027e0ce0_3412SetTrackFlagEitb kind:function(arm,size=0x64) addr:0x020d583c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3f4cEct kind:function(arm,size=0x40) addr:0x020d58a0 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3f8cEv kind:function(arm,size=0x3c) addr:0x020d58e0 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d3fc8Ev kind:function(arm,size=0x40) addr:0x020d591c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d4008Ei kind:function(arm,size=0x44) addr:0x020d595c +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d404cEv kind:function(arm,size=0x4c) addr:0x020d59a0 +_ZN21UnkStruct_027e0ce0_3419func_ov024_020d4098EPiS0_ kind:function(arm,size=0x88) addr:0x020d59ec _ZN16PassengerManager21GetPassengerInfoIndexEj kind:function(arm,size=0x30) addr:0x020d5a74 _ZN16PassengerManager12GetBoardFlagEj kind:function(arm,size=0x24) addr:0x020d5aa4 _ZN16PassengerManager11GetFailFlagEj kind:function(arm,size=0x24) addr:0x020d5ac8 _ZN16PassengerManager6CreateEv kind:function(arm,size=0x24) addr:0x020d5aec -_ZN16PassengerManager19func_ov024_020d41bcEP16UnkStruct_Param1 kind:function(arm,size=0x38) addr:0x020d5b10 +_ZN16PassengerManager19func_ov024_020d41bcEPK16UnkStruct_Param1 kind:function(arm,size=0x38) addr:0x020d5b10 _ZN16PassengerManager19func_ov024_020d41f4EP16UnkStruct_Param1 kind:function(arm,size=0x34) addr:0x020d5b48 _ZN16PassengerManager19func_ov024_020d4228Ev kind:function(arm,size=0x30) addr:0x020d5b7c _ZN16PassengerManager19func_ov024_020d4258Ev kind:function(arm,size=0x30) addr:0x020d5bac @@ -604,79 +604,79 @@ _ZN16PassengerManager19func_ov024_020d4554Ev kind:function(arm,size=0x10) addr:0 _ZN16PassengerManager5ResetEv kind:function(arm,size=0x4c) addr:0x020d5eb8 _ZN16PassengerManager11IsDateUnsetEv kind:function(arm,size=0x14) addr:0x020d5f04 _ZN16PassengerManager7GetDateEv kind:function(arm,size=0x1c) addr:0x020d5f18 -_ZN16PassengerManager14GetRandomIndexEji kind:function(arm,size=0x5c) addr:0x020d5f34 +_ZN16PassengerManager14GetRandomIndexEjj kind:function(arm,size=0x5c) addr:0x020d5f34 _ZN16PassengerManager13SetFailedFlagEv kind:function(arm,size=0x78) addr:0x020d5f90 -func_ov024_020d6008 kind:function(arm,size=0x10) addr:0x020d6008 -func_ov024_020d6018 kind:function(arm,size=0x70) addr:0x020d6018 -func_ov024_020d6088 kind:function(arm,size=0x60) addr:0x020d6088 -_ZN19func_ov024_020d60e8D1Ev kind:function(arm,size=0x14) addr:0x020d60e8 -_ZN19func_ov024_020d60fcD0Ev kind:function(arm,size=0x1c) addr:0x020d60fc -func_ov024_020d6118 kind:function(arm,size=0x74) addr:0x020d6118 -func_ov024_020d618c kind:function(arm,size=0x24) addr:0x020d618c -func_ov024_020d61b0 kind:function(arm,size=0x6c) addr:0x020d61b0 -func_ov024_020d621c kind:function(arm,size=0x10) addr:0x020d621c -func_ov024_020d622c kind:function(arm,size=0xec) addr:0x020d622c -func_ov024_020d6318 kind:function(arm,size=0x28) addr:0x020d6318 -func_ov024_020d6340 kind:function(arm,size=0x64) addr:0x020d6340 -func_ov024_020d63a4 kind:function(arm,size=0x64) addr:0x020d63a4 -func_ov024_020d6408 kind:function(arm,size=0x40) addr:0x020d6408 -func_ov024_020d6448 kind:function(arm,size=0xcc) addr:0x020d6448 -func_ov024_020d6514 kind:function(arm,size=0x5c) addr:0x020d6514 -func_ov024_020d6570 kind:function(arm,size=0xc8) addr:0x020d6570 -_ZN18UnkStruct_027e0d0019func_ov024_020d4cc0Ei kind:function(arm,size=0x50) addr:0x020d6638 +_Z19func_ov024_020d46b4i kind:function(arm,size=0x10) addr:0x020d6008 +_ZN25MapObjectProfile_Derived5C1Ei kind:function(arm,size=0x70) addr:0x020d6018 +_ZN25MapObjectProfile_Derived5C1Ej kind:function(arm,size=0x60) addr:0x020d6088 +_ZN25MapObjectProfile_Derived5D1Ev kind:function(arm,size=0x14) addr:0x020d60e8 +_ZN25MapObjectProfile_Derived5D0Ev kind:function(arm,size=0x1c) addr:0x020d60fc +_ZN18UnkStruct_027e0d0019func_ov024_020d47c4EPiS0_i kind:function(arm,size=0x74) addr:0x020d6118 +_ZN18UnkStruct_027e0d006CreateEv kind:function(arm,size=0x24) addr:0x020d618c +_ZN18UnkStruct_027e0d0019func_ov024_020d485cEii kind:function(arm,size=0x6c) addr:0x020d61b0 +_ZN18UnkStruct_027e0d0019func_ov024_020d48c8Ei kind:function(arm,size=0x10) addr:0x020d621c +_ZN18UnkStruct_027e0d0019func_ov024_020d48d8Eii kind:function(arm,size=0xec) addr:0x020d622c +_ZN21UnkStruct_027e0d00_20D1Ev kind:function(arm,size=0x28) addr:0x020d6318 +_ZN18UnkStruct_027e0d0019func_ov024_020d49ecEii kind:function(arm,size=0x64) addr:0x020d6340 +_ZN18UnkStruct_027e0d0019func_ov024_020d4a50Ev kind:function(arm,size=0x64) addr:0x020d63a4 +_ZN18UnkStruct_027e0d0019func_ov024_020d4ab4Ev kind:function(arm,size=0x40) addr:0x020d6408 +_ZN18UnkStruct_027e0d0019func_ov024_020d4af4Ev kind:function(arm,size=0xcc) addr:0x020d6448 +_ZN18UnkStruct_027e0d0019func_ov024_020d4b9cEi kind:function(arm,size=0x5c) addr:0x020d6514 +_ZN18UnkStruct_027e0d0019func_ov024_020d4bf8Ev kind:function(arm,size=0xc8) addr:0x020d6570 +_ZN18UnkStruct_027e0d0019func_ov024_020d4cc0Ej kind:function(arm,size=0x50) addr:0x020d6638 _ZN18UnkStruct_027e0d0019func_ov024_020d4d10Ev kind:function(arm,size=0x34) addr:0x020d6688 -func_ov024_020d66bc kind:function(arm,size=0x54) addr:0x020d66bc -func_ov024_020d6710 kind:function(arm,size=0x8c) addr:0x020d6710 -func_ov024_020d679c kind:function(arm,size=0x44) addr:0x020d679c -func_ov024_020d67e0 kind:function(arm,size=0x60) addr:0x020d67e0 -func_ov024_020d6840 kind:function(arm,size=0x40) addr:0x020d6840 -func_ov024_020d6880 kind:function(arm,size=0x2c) addr:0x020d6880 -func_ov024_020d68ac kind:function(arm,size=0x98) addr:0x020d68ac -func_ov024_020d6944 kind:function(arm,size=0x1c0) addr:0x020d6944 -func_ov024_020d6b04 kind:function(arm,size=0x14) addr:0x020d6b04 -func_ov024_020d6b18 kind:function(arm,size=0x1c) addr:0x020d6b18 -_ZN19func_ov024_020d6b34D0Ev kind:function(arm,size=0x30) addr:0x020d6b34 -_ZN19func_ov024_020d6b64D0Ev kind:function(arm,size=0x1c) addr:0x020d6b64 -func_ov024_020d51dc kind:function(arm,size=0x70) addr:0x020d6b80 -func_ov024_020d524c kind:function(arm,size=0xb8) addr:0x020d6bf0 -func_ov024_020d5304 kind:function(arm,size=0x3c) addr:0x020d6ca8 -func_ov024_020d6ce4 kind:function(arm,size=0x14) addr:0x020d6ce4 -func_ov024_020d5354 kind:function(arm,size=0x5c) addr:0x020d6cf8 -func_ov024_020d6d54 kind:function(arm,size=0x60) addr:0x020d6d54 -func_ov024_020d6db4 kind:function(arm,size=0x24) addr:0x020d6db4 -func_ov024_020d6dd8 kind:function(arm,size=0x24) addr:0x020d6dd8 -func_ov024_020d6dfc kind:function(arm,size=0x24) addr:0x020d6dfc -func_ov024_020d6e20 kind:function(arm,size=0x24) addr:0x020d6e20 -func_ov024_020d6e44 kind:function(arm,size=0x10) addr:0x020d6e44 -func_ov024_020d6e54 kind:function(arm,size=0x40) addr:0x020d6e54 -func_ov024_020d6e94 kind:function(arm,size=0x4) addr:0x020d6e94 -func_ov024_020d6e98 kind:function(arm,size=0x138) addr:0x020d6e98 -func_ov024_020d6fd0 kind:function(arm,size=0x240) addr:0x020d6fd0 -func_ov024_020d7210 kind:function(arm,size=0x48) addr:0x020d7210 +_ZN18UnkStruct_027e0d0019func_ov024_020d4d44Ev kind:function(arm,size=0x54) addr:0x020d66bc +_ZN18UnkStruct_027e0d0019func_ov024_020d4d6cEi kind:function(arm,size=0x8c) addr:0x020d6710 +_ZN18UnkStruct_027e0d0019func_ov024_020d4df8Ev kind:function(arm,size=0x44) addr:0x020d679c +_ZN18UnkStruct_027e0d0019func_ov024_020d4e3cEi kind:function(arm,size=0x60) addr:0x020d67e0 +_ZN21UnkStruct_027e0d00_2019func_ov024_020d4e9cEPwib kind:function(arm,size=0x40) addr:0x020d6840 +_ZN21UnkStruct_027e0d00_2019func_ov024_020d4edcEPwS0_i kind:function(arm,size=0x2c) addr:0x020d6880 +_ZN21UnkStruct_027e0d00_20C1Eii kind:function(arm,size=0x98) addr:0x020d68ac +_ZN21UnkStruct_027e0d00_2019func_ov024_020d4fa0Eii kind:function(arm,size=0x1c0) addr:0x020d6944 +_ZN20ModelRender_Derived2D1Ev kind:function(arm,size=0x14) addr:0x020d6b04 +_ZN21UnkStruct_027e0d00_2019func_ov024_020d5174Ev kind:function(arm,size=0x1c) addr:0x020d6b18 +_ZN21UnkStruct_027e0d00_20D0Ev kind:function(arm,size=0x30) addr:0x020d6b34 +_ZN20ModelRender_Derived2D0Ev kind:function(arm,size=0x1c) addr:0x020d6b64 +_Z19func_ov024_020d51dcP5Vec2sj kind:function(arm,size=0x70) addr:0x020d6b80 +_Z19func_ov024_020d524cP5Vec2sj kind:function(arm,size=0xb8) addr:0x020d6bf0 +_Z19func_ov024_020d5304j kind:function(arm,size=0x3c) addr:0x020d6ca8 +_Z19func_ov024_020d5340j kind:function(arm,size=0x14) addr:0x020d6ce4 +_Z19func_ov024_020d5354PiPsi kind:function(arm,size=0x5c) addr:0x020d6cf8 +_Z19func_ov024_020d53b0j kind:function(arm,size=0x60) addr:0x020d6d54 local +_Z19func_ov024_020d5410j kind:function(arm,size=0x24) addr:0x020d6db4 +_Z19func_ov024_020d5434j kind:function(arm,size=0x24) addr:0x020d6dd8 +_Z19func_ov024_020d5458j kind:function(arm,size=0x24) addr:0x020d6dfc +_Z19func_ov024_020d547cj kind:function(arm,size=0x24) addr:0x020d6e20 +_ZN15UnkTrainSystem119func_ov024_020d54a0Ei kind:function(arm,size=0x10) addr:0x020d6e44 +_ZN15UnkTrainSystem1C1Ev kind:function(arm,size=0x40) addr:0x020d6e54 +_ZN15UnkTrainSystem1D1Ev kind:function(arm,size=0x4) addr:0x020d6e94 +_ZN15UnkTrainSystem119func_ov024_020d54f4Ev kind:function(arm,size=0x138) addr:0x020d6e98 +_ZN15UnkTrainSystem119func_ov024_020d562cEPK7VecFx32i kind:function(arm,size=0x240) addr:0x020d6fd0 +_ZN15UnkTrainSystem119func_ov024_020d586cEv kind:function(arm,size=0x48) addr:0x020d7210 _ZN12CargoManager6CreateEv kind:function(arm,size=0x24) addr:0x020d7258 _ZN12CargoManager8SetCargoEii kind:function(arm,size=0x14) addr:0x020d727c _ZN12CargoManager16GetTypeAndAmountEPiS0_ kind:function(arm,size=0x14) addr:0x020d7290 _ZN12CargoManager19func_ov024_020d5900Ev kind:function(arm,size=0x1c) addr:0x020d72a4 _ZN12CargoManager19func_ov024_020d591cEv kind:function(arm,size=0x1c) addr:0x020d72c0 -func_ov024_020d72dc kind:function(arm,size=0x40) addr:0x020d72dc -func_ov024_020d731c kind:function(arm,size=0x18) addr:0x020d731c -func_ov024_020d7334 kind:function(arm,size=0x16c) addr:0x020d7334 -func_ov024_020d74a0 kind:function(arm,size=0x144) addr:0x020d74a0 -func_ov024_020d75e4 kind:function(arm,size=0x4c) addr:0x020d75e4 -func_ov024_020d7630 kind:function(arm,size=0x44) addr:0x020d7630 -func_ov024_020d7674 kind:function(arm,size=0x1c) addr:0x020d7674 -func_ov024_020d7690 kind:function(arm,size=0x24) addr:0x020d7690 -func_ov024_020d76b4 kind:function(arm,size=0x8) addr:0x020d76b4 -func_ov024_020d76bc kind:function(arm,size=0x1c) addr:0x020d76bc -func_ov024_020d76d8 kind:function(arm,size=0x20) addr:0x020d76d8 -func_ov024_020d76f8 kind:function(arm,size=0x80) addr:0x020d76f8 -func_ov024_020d7778 kind:function(arm,size=0x4c) addr:0x020d7778 -func_ov024_020d77c4 kind:function(arm,size=0x18c) addr:0x020d77c4 -func_ov024_020d7950 kind:function(arm,size=0xc) addr:0x020d7950 -func_ov024_020d795c kind:function(arm,size=0x2c) addr:0x020d795c -func_ov024_020d7988 kind:function(arm,size=0x2ac) addr:0x020d7988 -func_ov024_020d7c34 kind:function(arm,size=0x10) addr:0x020d7c34 -func_ov024_020d7c44 kind:function(arm,size=0x14) addr:0x020d7c44 +_ZN15UnkTrainSystem2C1Ev kind:function(arm,size=0x40) addr:0x020d72dc +_ZN15UnkTrainSystem2D1Ev kind:function(arm,size=0x18) addr:0x020d731c +_ZN15UnkTrainSystem219func_ov024_020d5990Ev kind:function(arm,size=0x16c) addr:0x020d7334 +_ZN15UnkTrainSystem219func_ov024_020d5afcEPK5Mat3pPK7VecFx32i kind:function(arm,size=0x144) addr:0x020d74a0 +_ZN15UnkTrainSystem219func_ov024_020d5c40Ev kind:function(arm,size=0x4c) addr:0x020d75e4 +_ZN18UnkStruct_027e0d08C1Ev kind:function(arm,size=0x44) addr:0x020d7630 +_ZN18UnkStruct_027e0d08D1Ev kind:function(arm,size=0x1c) addr:0x020d7674 +_ZN18UnkStruct_027e0d086CreateEv kind:function(arm,size=0x24) addr:0x020d7690 +_ZN18UnkStruct_027e0d0819func_ov024_020d5d10Ei kind:function(arm,size=0x8) addr:0x020d76b4 +_ZN18UnkStruct_027e0d0819func_ov024_020d5d18Ei kind:function(arm,size=0x1c) addr:0x020d76bc +_ZN18UnkStruct_027e0d0819func_ov024_020d5d34Ei kind:function(arm,size=0x20) addr:0x020d76d8 +_ZN18UnkStruct_027e0d0819func_ov024_020d5d54Ev kind:function(arm,size=0x80) addr:0x020d76f8 +_ZN18UnkStruct_027e0d0819func_ov024_020d5dd4Ei kind:function(arm,size=0x4c) addr:0x020d7778 +_ZN18UnkStruct_027e0d0819func_ov024_020d5e20Ev kind:function(arm,size=0x18c) addr:0x020d77c4 +_ZN18UnkStruct_027e0d0819func_ov024_020d5facEv kind:function(arm,size=0xc) addr:0x020d7950 +_ZN18UnkStruct_027e0d0819func_ov024_020d5fb8EPsS0_j kind:function(arm,size=0x2c) addr:0x020d795c +_ZN18UnkStruct_027e0d0819func_ov024_020d5fe4EPsS0_j kind:function(arm,size=0x2ac) addr:0x020d7988 +_ZN8InstanceI18UnkStruct_027e0d08EC2Ev kind:function(arm,size=0x10) addr:0x020d7c34 +_ZN8InstanceI18UnkStruct_027e0d08ED2Ev kind:function(arm,size=0x14) addr:0x020d7c44 _ZN14MiscAdvManager6CreateEv kind:function(arm,size=0x24) addr:0x020d7c58 _ZN14MiscAdvManagerC1Ev kind:function(arm,size=0x24) addr:0x020d7c7c _ZN14MiscAdvManagerD1Ev kind:function(arm,size=0x14) addr:0x020d7ca0 @@ -689,7 +689,7 @@ _ZN14MiscAdvManager19func_ov024_020d6468Ev kind:function(arm,size=0x2c) addr:0x0 _ZN14MiscAdvManager8GetStampEi kind:function(arm,size=0xc) addr:0x020d7e38 _ZN14MiscAdvManager12GetStampDateEi kind:function(arm,size=0x8) addr:0x020d7e44 _ZN14MiscAdvManager11GetStampPosEi kind:function(arm,size=0xc) addr:0x020d7e4c -_ZN14MiscAdvManager19func_ov024_020d64b4EiiPt kind:function(arm,size=0x7c) addr:0x020d7e58 +_ZN14MiscAdvManager19func_ov024_020d64b4EciPKt kind:function(arm,size=0x7c) addr:0x020d7e58 _ZN14MiscAdvManager19func_ov024_020d6530Ev kind:function(arm,size=0x2c) addr:0x020d7ed4 _ZN14MiscAdvManager15GetNumPostcardsEv kind:function(arm,size=0x10) addr:0x020d7f00 _ZN14MiscAdvManager13GivePriceCardEi kind:function(arm,size=0x30) addr:0x020d7f10 @@ -697,32 +697,32 @@ _ZN14MiscAdvManager13PostPriceCardEii kind:function(arm,size=0x74) addr:0x020d7f _ZN14MiscAdvManager19func_ov024_020d6610Ev kind:function(arm,size=0x1c) addr:0x020d7fb4 _ZN8InstanceI14MiscAdvManagerEC2Ev kind:function(arm,size=0x10) addr:0x020d7fd0 _ZN8InstanceI14MiscAdvManagerED2Ev kind:function(arm,size=0x14) addr:0x020d7fe0 -func_ov024_020d7ff4 kind:function(thumb,size=0x16) addr:0x020d7ff4 -_ZN26ActorUnk_ov000_020a8bb0_ec19func_ov024_020d6668Ev kind:function(thumb,size=0x16) addr:0x020d800c -func_ov024_020d8024 kind:function(arm,size=0x40) addr:0x020d8024 -func_ov024_020d8064 kind:function(arm,size=0x44) addr:0x020d8064 -func_ov024_020d80a8 kind:function(arm,size=0x2c) addr:0x020d80a8 -func_ov024_020d80d4 kind:function(arm,size=0x2a8) addr:0x020d80d4 -func_ov024_020d837c kind:function(arm,size=0x1a4) addr:0x020d837c -func_ov024_020d8520 kind:function(arm,size=0x204) addr:0x020d8520 -func_ov024_020d8724 kind:function(arm,size=0x11c) addr:0x020d8724 +_ZN26ActorUnk_ov000_020a8bb0_ECC2Ev kind:function(thumb,size=0x16) addr:0x020d7ff4 +_ZN26ActorUnk_ov000_020a8bb0_ECC1Ev kind:function(thumb,size=0x16) addr:0x020d800c +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6680EPK7VecFx32Ph kind:function(arm,size=0x40) addr:0x020d8024 +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d66c0EPK7VecFx32i kind:function(arm,size=0x44) addr:0x020d8064 +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6704Ev kind:function(arm,size=0x2c) addr:0x020d80a8 +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6730Ev kind:function(arm,size=0x2a8) addr:0x020d80d4 +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d69d8EP7VecFx32PsS1_isi kind:function(arm,size=0x1a4) addr:0x020d837c +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6b7cEP7VecFx32PsS1_isi kind:function(arm,size=0x204) addr:0x020d8520 +_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6d80EP7VecFx32S1_ kind:function(arm,size=0x11c) addr:0x020d8724 _ZN19ActorProfileUnkOBPC10GetProfileEv kind:function(arm,size=0xc) addr:0x020d8840 _ZN19ActorProfileUnkOBPC6CreateEv kind:function(arm,size=0x24) addr:0x020d884c _ZN19ActorProfileUnkOBPCC1Ev kind:function(arm,size=0x28) addr:0x020d8870 _ZN12ActorUnkOBPCC1Ev kind:function(arm,size=0x34) addr:0x020d8898 -_ZN12ActorUnkOBPC19func_ov024_020d6f28Ev kind:function(arm,size=0x4c) addr:0x020d88cc +_ZN12ActorUnkOBPC8vfunc_18Ei kind:function(arm,size=0x4c) addr:0x020d88cc _ZN12ActorUnkOBPC19func_ov024_020d6f74Ev kind:function(arm,size=0x20) addr:0x020d8918 -_ZN12ActorUnkOBPC19func_ov024_020d6f94Ev kind:function(arm,size=0xbc) addr:0x020d8938 -_ZN12ActorUnkOBPC19func_ov024_020d7050Ev kind:function(arm,size=0x14) addr:0x020d89f4 -_ZN12ActorUnkOBPC19func_ov024_020d7064Ev kind:function(arm,size=0xf0) addr:0x020d8a08 +_ZN12ActorUnkOBPC8vfunc_20Ev kind:function(arm,size=0xbc) addr:0x020d8938 +_ZN12ActorUnkOBPC8vfunc_24Ev kind:function(arm,size=0x14) addr:0x020d89f4 +_ZN12ActorUnkOBPC19func_ov024_020d7064Esi kind:function(arm,size=0xf0) addr:0x020d8a08 _ZN12ActorUnkOBPC19func_ov024_020d7154Ev kind:function(arm,size=0x168) addr:0x020d8af8 _ZN12ActorUnkOBPCD1Ev kind:function(arm,size=0x20) addr:0x020d8c60 _ZN12ActorUnkOBPCD0Ev kind:function(arm,size=0x28) addr:0x020d8c80 _ZN19ActorProfileUnkOBPCD1Ev kind:function(arm,size=0x14) addr:0x020d8ca8 -data_ov024_020d8cbc kind:data(any) addr:0x020d8cbc ambiguous -data_ov024_020d8cc0 kind:data(any) addr:0x020d8cc0 ambiguous -data_ov024_020d8cc4 kind:data(any) addr:0x020d8cc4 ambiguous -data_ov024_020d8cc8 kind:data(any) addr:0x020d8cc8 ambiguous +data_ov024_020d7318 kind:data(any) addr:0x020d8cbc +data_ov024_020d731c kind:data(any) addr:0x020d8cc0 +data_ov024_020d7320 kind:data(any) addr:0x020d8cc4 +data_ov024_020d7324 kind:data(any) addr:0x020d8cc8 sBMGSceneMap kind:data(any) addr:0x020d8ccc local data_ov024_020d73d8 kind:data(any) addr:0x020d8d7c local data_ov024_020d73de kind:data(any) addr:0x020d8d82 local @@ -731,49 +731,46 @@ data_ov024_020d73fa kind:data(any) addr:0x020d8d9e local data_ov024_020d740a kind:data(any) addr:0x020d8dae local data_ov024_020d741e kind:data(any) addr:0x020d8dc2 local data_ov024_020d7432 kind:data(any) addr:0x020d8dd6 local -data_ov024_020d8df8 kind:data(any) addr:0x020d8df8 +data_ov024_020d7454 kind:data(byte[238]) addr:0x020d8df8 local data_ov024_020d7544 kind:data(any) addr:0x020d8ee8 local data_ov024_020d7547 kind:data(any) addr:0x020d8eeb local -data_ov024_020d8ef4 kind:data(any) addr:0x020d8ef4 -data_ov024_020d8ef9 kind:data(any) addr:0x020d8ef9 -data_ov024_020d8f04 kind:data(any) addr:0x020d8f04 -data_ov024_020d8f10 kind:data(any) addr:0x020d8f10 -data_ov024_020d8f14 kind:data(any) addr:0x020d8f14 -data_ov024_020d8f1c kind:data(any) addr:0x020d8f1c -data_ov024_020d8f2c kind:data(any) addr:0x020d8f2c -data_ov024_020d8f3c kind:data(any) addr:0x020d8f3c ambiguous -sPassengerInfos kind:data(any) addr:0x020d8f48 -data_ov024_020d8fc8 kind:data(any) addr:0x020d8fc8 -data_ov024_020d8fd0 kind:data(any) addr:0x020d8fd0 -data_ov024_020d8fe0 kind:data(any) addr:0x020d8fe0 -data_ov024_020d8ff0 kind:data(any) addr:0x020d8ff0 -data_ov024_020d9000 kind:data(any) addr:0x020d9000 -data_ov024_020d9010 kind:data(any) addr:0x020d9010 -data_ov024_020d9020 kind:data(any) addr:0x020d9020 -data_ov024_020d9028 kind:data(any) addr:0x020d9028 -data_ov024_020d9064 kind:data(any) addr:0x020d9064 -data_ov024_020d9066 kind:data(any) addr:0x020d9066 -data_ov024_020d90f0 kind:data(any) addr:0x020d90f0 -data_ov024_020d90f6 kind:data(any) addr:0x020d90f6 -data_ov024_020d9250 kind:data(any) addr:0x020d9250 -data_ov024_020d925c kind:data(any) addr:0x020d925c -data_ov024_020d9260 kind:data(any) addr:0x020d9260 -data_ov024_020d9264 kind:data(any) addr:0x020d9264 ambiguous -data_ov024_020d9266 kind:data(any) addr:0x020d9266 ambiguous -__sinit_ov024_020d928c kind:function(arm,size=0x38) addr:0x020d928c -__sinit_ov024_020d92c4 kind:function(arm,size=0x120) addr:0x020d92c4 +data_ov024_020d7550 kind:data(any) addr:0x020d8ef4 local +data_ov024_020d7555 kind:data(any) addr:0x020d8ef9 local +data_ov024_020d7560 kind:data(any) addr:0x020d8f04 local +data_ov024_020d756c kind:data(any) addr:0x020d8f10 local +data_ov024_020d7570 kind:data(any) addr:0x020d8f14 local +data_ov024_020d7578 kind:data(any) addr:0x020d8f1c local +data_ov024_020d7588 kind:data(any) addr:0x020d8f2c local +data_ov024_020d7598 kind:data(byte[10]) addr:0x020d8f3c +sPassengerInfos kind:data(any) addr:0x020d8f48 local +data_ov024_020d7624 kind:data(any) addr:0x020d8fc8 +data_ov024_020d762c kind:data(any) addr:0x020d8fd0 local +data_ov024_020d763c kind:data(any) addr:0x020d8fe0 local +data_ov024_020d764c kind:data(any) addr:0x020d8ff0 local +data_ov024_020d765c kind:data(any) addr:0x020d9000 local +data_ov024_020d766c kind:data(any) addr:0x020d9010 +data_ov024_020d767c kind:data(byte[5]) addr:0x020d9020 local +data_ov024_020d7684 kind:data(any) addr:0x020d9028 +data_ov024_020d76c0 kind:data(any) addr:0x020d9064 local +data_ov024_020d774c kind:data(any) addr:0x020d90f0 local +data_ov024_020d78ac kind:data(any) addr:0x020d9250 local +data_ov024_020d78b8 kind:data(any) addr:0x020d925c +data_ov024_020d78bc kind:data(any) addr:0x020d9260 local +data_ov024_020d78c0 kind:data(any) addr:0x020d9264 +__sinit_data_ov024_020d7f40.cpp kind:function(arm,size=0x38) addr:0x020d928c local +__sinit_UnkStruct_027e0cf8_00_0C_024.cpp kind:function(arm,size=0x120) addr:0x020d92c4 local __sinit_AdventureModeManager_1B8_Base_024.cpp kind:function(arm,size=0x2c) addr:0x020d93e4 local -__sinit_ov024_020d9410 kind:function(arm,size=0x48) addr:0x020d9410 -__sinit_ov024_020d9458 kind:function(arm,size=0x18) addr:0x020d9458 -__sinit_ov024_020d9470 kind:function(arm,size=0x18) addr:0x020d9470 -__sinit_ActorUnkOBPC.cpp kind:function(arm,size=0x50) addr:0x020d9488 -.p__sinit_ov024_020d928c kind:data(word) addr:0x020d94d8 -.p__sinit_ov024_020d92c4 kind:data(word) addr:0x020d94dc +__sinit_PlayerActor_A0_38_024.cpp kind:function(arm,size=0x48) addr:0x020d9410 local +__sinit_UnkTrainSystem1_024.cpp kind:function(arm,size=0x18) addr:0x020d9458 local +__sinit_UnkTrainSystem2_024.cpp kind:function(arm,size=0x18) addr:0x020d9470 local +__sinit_ActorUnkOBPC.cpp kind:function(arm,size=0x50) addr:0x020d9488 local +.p__sinit_data_ov024_020d7f40.cpp kind:data(word) addr:0x020d94d8 local +.p__sinit_UnkStruct_027e0cf8_00_0C_024.cpp kind:data(word) addr:0x020d94dc local .p__sinit_AdventureModeManager_1B8_Base_024.cpp kind:data(word) addr:0x020d94e0 local -.p__sinit_ov024_020d9410 kind:data(word) addr:0x020d94e4 -.p__sinit_ov024_020d9458 kind:data(word) addr:0x020d94e8 -.p__sinit_ov024_020d9470 kind:data(word) addr:0x020d94ec -.p__sinit_ActorUnkOBPC.cpp kind:data(word) addr:0x020d94f0 +.p__sinit_PlayerActor_A0_38_024.cpp kind:data(word) addr:0x020d94e4 local +.p__sinit_UnkTrainSystem1_024.cpp kind:data(word) addr:0x020d94e8 local +.p__sinit_UnkTrainSystem2_024.cpp kind:data(word) addr:0x020d94ec local +.p__sinit_ActorUnkOBPC.cpp kind:data(word) addr:0x020d94f0 local _ZTV17GameModeAdventure kind:data(any) addr:0x020d9500 _ZTV15UnkActorSystem1 kind:data(any) addr:0x020d9530 _ZTV15UnkActorSystem2 kind:data(any) addr:0x020d9568 @@ -801,7 +798,7 @@ _ZTV24AdventureModeManager_18C kind:data(any) addr:0x020d9848 _ZTV27AdventureModeManager_190_38 kind:data(any) addr:0x020d9878 _ZTV27AdventureModeManager_190_14 kind:data(any) addr:0x020d9894 _ZTV24AdventureModeManager_190 kind:data(any) addr:0x020d98b0 -data_ov024_020d98e0 kind:data(any) addr:0x020d98e0 +data_ov024_020d7f40 kind:data(any) addr:0x020d98e0 local _ZTV30AdventureModeManager_15C_20_00 kind:data(any) addr:0x020d98f0 _ZTV23UnkAdventureModeSystem1 kind:data(any) addr:0x020d9914 _ZTV24UnkStruct_ov024_020d8694 kind:data(any) addr:0x020d9920 @@ -810,107 +807,110 @@ _ZTV19UnkTitleCardSystem1 kind:data(any) addr:0x020d9968 _ZTV28UnkStruct_ov024_020d8694_01C kind:data(any) addr:0x020d998c _ZTV28UnkStruct_ov024_020d8694_188 kind:data(any) addr:0x020d99b4 _ZTV28UnkTitleCardSystem1_Derived1 kind:data(any) addr:0x020d99dc -_ZTV18UnkStruct_020d8698 kind:data(any) addr:0x020d9a04 +_ZTV16UICounterManager kind:data(any) addr:0x020d9a04 @5034 kind:data(byte[11]) addr:0x020d9a28 local -data_ov024_020d9a34 kind:data(any) addr:0x020d9a34 -data_ov024_020d9a38 kind:data(any) addr:0x020d9a38 -data_ov024_020d9a3e kind:data(any) addr:0x020d9a3e -data_ov024_020d9a42 kind:data(any) addr:0x020d9a42 -data_ov024_020d9a43 kind:data(any) addr:0x020d9a43 +data_ov024_020d8094 kind:data(byte[2]) addr:0x020d9a34 local +data_ov024_020d8098 kind:data(any) addr:0x020d9a38 local data_ov024_020d8200 kind:data(any) addr:0x020d9ba0 local -_ZTV19data_ov024_020d9ba8 kind:data(any) addr:0x020d9ba8 -data_ov024_020d9bc4 kind:data(any) addr:0x020d9bc4 -data_ov024_020d9be4 kind:data(any) addr:0x020d9be4 -data_ov024_020d9bf0 kind:data(any) addr:0x020d9bf0 -data_ov024_020d9bf4 kind:data(any) addr:0x020d9bf4 -data_ov024_020d9c00 kind:data(any) addr:0x020d9c00 -data_ov024_020d9c08 kind:data(any) addr:0x020d9c08 -data_ov024_020d9c10 kind:data(any) addr:0x020d9c10 -data_ov024_020d9c28 kind:data(any) addr:0x020d9c28 -data_ov024_020d9c3c kind:data(any) addr:0x020d9c3c -data_ov024_020d9c40 kind:data(any) addr:0x020d9c40 -data_ov024_020d9c44 kind:data(any) addr:0x020d9c44 -data_ov024_020d9c48 kind:data(any) addr:0x020d9c48 -data_ov024_020d9c50 kind:data(any) addr:0x020d9c50 -data_ov024_020d9c58 kind:data(any) addr:0x020d9c58 -data_ov024_020d9c60 kind:data(any) addr:0x020d9c60 -data_ov024_020d9c68 kind:data(any) addr:0x020d9c68 -data_ov024_020d9c70 kind:data(any) addr:0x020d9c70 -data_ov024_020d9c78 kind:data(any) addr:0x020d9c78 -data_ov024_020d9c80 kind:data(any) addr:0x020d9c80 -data_ov024_020d9c88 kind:data(any) addr:0x020d9c88 -data_ov024_020d9c94 kind:data(any) addr:0x020d9c94 -data_ov024_020d9ca0 kind:data(any) addr:0x020d9ca0 -data_ov024_020d9cac kind:data(any) addr:0x020d9cac -data_ov024_020d9cb8 kind:data(any) addr:0x020d9cb8 -data_ov024_020d9cc4 kind:data(any) addr:0x020d9cc4 -data_ov024_020d9cd0 kind:data(any) addr:0x020d9cd0 -data_ov024_020d9cdc kind:data(any) addr:0x020d9cdc -data_ov024_020d9cf0 kind:data(any) addr:0x020d9cf0 -data_ov024_020d9cf8 kind:data(any) addr:0x020d9cf8 -data_ov024_020d9d14 kind:data(any) addr:0x020d9d14 -data_ov024_020d9d44 kind:data(any) addr:0x020d9d44 -data_ov024_020d9d4c kind:data(any) addr:0x020d9d4c -data_ov024_020d9d54 kind:data(any) addr:0x020d9d54 -data_ov024_020d9d58 kind:data(any) addr:0x020d9d58 -data_ov024_020d9d64 kind:data(any) addr:0x020d9d64 -data_ov024_020d9d68 kind:data(any) addr:0x020d9d68 -data_ov024_020d9d74 kind:data(any) addr:0x020d9d74 -data_ov024_020d9d7c kind:data(any) addr:0x020d9d7c -data_ov024_020d9d84 kind:data(any) addr:0x020d9d84 -data_ov024_020d9d8c kind:data(any) addr:0x020d9d8c -data_ov024_020d9d94 kind:data(any) addr:0x020d9d94 -data_ov024_020d9d9c kind:data(any) addr:0x020d9d9c -data_ov024_020d9da4 kind:data(any) addr:0x020d9da4 -data_ov024_020d9dac kind:data(any) addr:0x020d9dac -data_ov024_020d9db4 kind:data(any) addr:0x020d9db4 -data_ov024_020d9dbc kind:data(any) addr:0x020d9dbc -data_ov024_020d9dc4 kind:data(any) addr:0x020d9dc4 -data_ov024_020d9dcc kind:data(any) addr:0x020d9dcc -data_ov024_020d9dd4 kind:data(any) addr:0x020d9dd4 -data_ov024_020d9ddc kind:data(any) addr:0x020d9ddc -data_ov024_020d9de4 kind:data(any) addr:0x020d9de4 -data_ov024_020d9df0 kind:data(any) addr:0x020d9df0 -data_ov024_020d9dfc kind:data(any) addr:0x020d9dfc -data_ov024_020d9e08 kind:data(any) addr:0x020d9e08 -data_ov024_020d9e14 kind:data(any) addr:0x020d9e14 -data_ov024_020d9e24 kind:data(any) addr:0x020d9e24 -data_ov024_020d9e4c kind:data(any) addr:0x020d9e4c -data_ov024_020d9e5c kind:data(any) addr:0x020d9e5c -data_ov024_020d9e80 kind:data(any) addr:0x020d9e80 -data_ov024_020d9e8c kind:data(any) addr:0x020d9e8c -data_ov024_020d9e98 kind:data(any) addr:0x020d9e98 -data_ov024_020d9ea0 kind:data(any) addr:0x020d9ea0 -data_ov024_020d9ea4 kind:data(any) addr:0x020d9ea4 -data_ov024_020d9eb0 kind:data(any) addr:0x020d9eb0 -data_ov024_020d9ebc kind:data(any) addr:0x020d9ebc -data_ov024_020d9ef0 kind:data(any) addr:0x020d9ef0 -data_ov024_020d9ef8 kind:data(any) addr:0x020d9ef8 -data_ov024_020d9f00 kind:data(any) addr:0x020d9f00 -data_ov024_020d9f08 kind:data(any) addr:0x020d9f08 -data_ov024_020d9f10 kind:data(any) addr:0x020d9f10 -data_ov024_020d9f18 kind:data(any) addr:0x020d9f18 -data_ov024_020d9f20 kind:data(any) addr:0x020d9f20 -data_ov024_020d9f28 kind:data(any) addr:0x020d9f28 -data_ov024_020d9f30 kind:data(any) addr:0x020d9f30 -data_ov024_020d9f3c kind:data(any) addr:0x020d9f3c -data_ov024_020d9f48 kind:data(any) addr:0x020d9f48 -data_ov024_020d9f5c kind:data(any) addr:0x020d9f5c -_ZTV19data_ov024_020d9f74 kind:data(any) addr:0x020d9f74 -_ZTV19data_ov024_020d9f98 kind:data(any) addr:0x020d9f98 +_ZTV27UnkStruct_ov024_020d86a0_00 kind:data(any) addr:0x020d9ba8 +data_ov024_020d8224 kind:data(byte[4]) addr:0x020d9bc4 +data_ov024_020d8228 kind:data(byte[4]) addr:0x020d9bc8 +data_ov024_020d822c kind:data(byte[4]) addr:0x020d9bcc +data_ov024_020d8230 kind:data(byte[4]) addr:0x020d9bd0 +data_ov024_020d8234 kind:data(byte[4]) addr:0x020d9bd4 +data_ov024_020d8238 kind:data(byte[4]) addr:0x020d9bd8 +_ZTV20PlayerActor_A0_38_18 kind:data(any) addr:0x020d9bdc +_ZTV20PlayerActor_A0_38_04 kind:data(any) addr:0x020d9be8 +sCreditsEndingType kind:data(byte[2]) addr:0x020d9bf4 local +_ZTV14UnkDataStruct4 kind:data(any) addr:0x020d9bf8 +@2128 kind:data(byte[6]) addr:0x020d9c08 local +@2129 kind:data(byte[21]) addr:0x020d9c10 local +@2130 kind:data(byte[19]) addr:0x020d9c28 local +@1520 kind:data(byte[4]) addr:0x020d9c3c local +@1525 kind:data(byte[4]) addr:0x020d9c40 local +@1526 kind:data(byte[4]) addr:0x020d9c44 local +@1523 kind:data(byte[5]) addr:0x020d9c48 local +@1521 kind:data(byte[5]) addr:0x020d9c50 local +@1522 kind:data(byte[5]) addr:0x020d9c58 local +@1517 kind:data(byte[6]) addr:0x020d9c60 local +@1524 kind:data(byte[6]) addr:0x020d9c68 local +@1511 kind:data(byte[7]) addr:0x020d9c70 local +@1508 kind:data(byte[7]) addr:0x020d9c78 local +@1510 kind:data(byte[8]) addr:0x020d9c80 local +@1515 kind:data(byte[10]) addr:0x020d9c88 local +@1509 kind:data(byte[10]) addr:0x020d9c94 local +@1512 kind:data(byte[10]) addr:0x020d9ca0 local +@1513 kind:data(byte[10]) addr:0x020d9cac local +@1514 kind:data(byte[10]) addr:0x020d9cb8 local +@1516 kind:data(byte[11]) addr:0x020d9cc4 local +@1518 kind:data(byte[11]) addr:0x020d9cd0 local +@1519 kind:data(byte[11]) addr:0x020d9cdc local +_ZTV25MapObjectProfile_Derived5 kind:data(any) addr:0x020d9ce8 +data_ov024_020d8358 kind:data(any) addr:0x020d9cf8 local +data_ov024_020d8374 kind:data(any) addr:0x020d9d14 local +@1553 kind:data(byte[6]) addr:0x020d9d44 local +@1554 kind:data(byte[6]) addr:0x020d9d4c local +@1555 kind:data(byte[4]) addr:0x020d9d54 local +@1562 kind:data(byte[10]) addr:0x020d9d58 local +@1563 kind:data(byte) addr:0x020d9d64 local +@2563 kind:data(byte[12]) addr:0x020d9d68 local +@2564 kind:data(byte[7]) addr:0x020d9d74 local +@2565 kind:data(byte[6]) addr:0x020d9d7c local +@2566 kind:data(byte[6]) addr:0x020d9d84 local +@2567 kind:data(byte[6]) addr:0x020d9d8c local +@2568 kind:data(byte[6]) addr:0x020d9d94 local +@2569 kind:data(byte[6]) addr:0x020d9d9c local +@1620 kind:data(byte[5]) addr:0x020d9da4 local +@1624 kind:data(byte[5]) addr:0x020d9dac local +@1626 kind:data(byte[5]) addr:0x020d9db4 local +@1619 kind:data(byte[5]) addr:0x020d9dbc local +@1625 kind:data(byte[5]) addr:0x020d9dc4 local +@1623 kind:data(byte[5]) addr:0x020d9dcc local +@1622 kind:data(byte[5]) addr:0x020d9dd4 local +@1621 kind:data(byte[5]) addr:0x020d9ddc local +@1618 kind:data(byte[11]) addr:0x020d9de4 local +@1617 kind:data(byte[11]) addr:0x020d9df0 local +@1616 kind:data(byte[11]) addr:0x020d9dfc local +@1615 kind:data(byte[11]) addr:0x020d9e08 local +data_ov024_020d8474 kind:data(any) addr:0x020d9e14 local +data_ov024_020d8484 kind:data(any) addr:0x020d9e24 local +_ZTV21UnkStruct_027e0d00_20 kind:data(any) addr:0x020d9e44 +_ZTV20ModelRender_Derived2 kind:data(any) addr:0x020d9e54 +@1734 kind:data(byte[10]) addr:0x020d9e80 local +@1737 kind:data(byte[10]) addr:0x020d9e8c local +@1741 kind:data(byte[6]) addr:0x020d9e98 local +@1742 kind:data(byte[4]) addr:0x020d9ea0 local +@1776 kind:data(byte[11]) addr:0x020d9ea4 local +@1777 kind:data(byte[12]) addr:0x020d9eb0 local +_ZZ19func_ov024_020d51dcP5Vec2sjE19data_ov024_020d851c kind:data(any) addr:0x020d9ebc local +data_ov024_020d8520 kind:data(any) addr:0x020d9ec0 +data_ov024_020d8550 kind:data(byte[5]) addr:0x020d9ef0 +data_ov024_020d8558 kind:data(byte[5]) addr:0x020d9ef8 +data_ov024_020d8560 kind:data(byte[5]) addr:0x020d9f00 +data_ov024_020d8568 kind:data(byte[5]) addr:0x020d9f08 +data_ov024_020d8570 kind:data(byte[5]) addr:0x020d9f10 +data_ov024_020d8578 kind:data(byte[7]) addr:0x020d9f18 +data_ov024_020d8580 kind:data(byte[7]) addr:0x020d9f20 +data_ov024_020d8588 kind:data(byte[7]) addr:0x020d9f28 +data_ov024_020d8590 kind:data(byte[9]) addr:0x020d9f30 +data_ov024_020d859c kind:data(byte[9]) addr:0x020d9f3c +data_ov024_020d85a8 kind:data(byte[19]) addr:0x020d9f48 +data_ov024_020d85bc kind:data(byte[21]) addr:0x020d9f5c +_ZTV19ActorProfileUnkOBPC kind:data(any) addr:0x020d9f74 +_ZTV12ActorUnkOBPC kind:data(byte[92]) addr:0x020d9f98 data_ov024_020d8660 kind:bss addr:0x020da000 _ZGVZN24UnkStruct_ov024_020d866019func_ov024_020c4ac0EvE8instance kind:bss addr:0x020da004 local @1365 kind:bss addr:0x020da008 local _ZZN24UnkStruct_ov024_020d866019func_ov024_020c4ac0EvE8instance kind:bss addr:0x020da014 local data_ov024_020d8694 kind:bss addr:0x020da034 -data_ov024_020d8698 kind:bss addr:0x020da038 +gpUICounterManager kind:bss addr:0x020da038 data_ov024_020d869c kind:bss(size=0x2) addr:0x020da03c local data_ov024_020d86a0 kind:bss addr:0x020da040 -data_ov024_020da044 kind:bss addr:0x020da044 -data_ov024_020da048 kind:bss addr:0x020da048 -data_ov024_020da04c kind:bss addr:0x020da04c +_ZGVZ19func_ov024_020d51dcP5Vec2sjE19data_ov024_020d851c kind:bss addr:0x020da044 local +data_ov024_020d86a8 kind:bss addr:0x020da048 +data_ov024_020d86ac kind:bss addr:0x020da04c gpMiscAdvManager kind:bss addr:0x020da050 -data_ov024_020da054 kind:bss addr:0x020da054 ambiguous -data_ov024_020da058 kind:bss addr:0x020da058 -data_ov024_020da05c kind:bss addr:0x020da05c -_ZN15ProfileInstanceI19ActorProfileUnkOBPCE8sProfileE kind:bss addr:0x020da068 +data_ov024_020d86b4 kind:bss(size=0x1) addr:0x020da054 +_ZGVN15ProfileInstanceI19ActorProfileUnkOBPCE8sProfileE kind:bss addr:0x020da058 +@640 kind:bss addr:0x020da05c local +_ZN15ProfileInstanceI19ActorProfileUnkOBPCE8sProfileE kind:bss(size=0x3c) addr:0x020da068 diff --git a/config/jp/arm9/overlays/ov026/symbols.txt b/config/jp/arm9/overlays/ov026/symbols.txt index a77db2e8..a134c136 100644 --- a/config/jp/arm9/overlays/ov026/symbols.txt +++ b/config/jp/arm9/overlays/ov026/symbols.txt @@ -93,11 +93,11 @@ func_ov026_020ddd4c kind:function(arm,size=0x6c) addr:0x020ddd4c func_ov026_020dddb8 kind:function(arm,size=0x34) addr:0x020dddb8 func_ov026_020dddec kind:function(arm,size=0x28) addr:0x020dddec func_ov026_020dde14 kind:function(arm,size=0x4) addr:0x020dde14 -func_ov026_020dde18 kind:function(arm,size=0x2e0) addr:0x020dde18 +_ZN21UnkStruct_027e0ce0_38C1Ev kind:function(arm,size=0x2e0) addr:0x020dde18 func_ov026_020de0f8 kind:function(arm,size=0x14) addr:0x020de0f8 func_ov026_020de10c kind:function(arm,size=0x14) addr:0x020de10c -func_ov026_020de120 kind:function(arm,size=0xdc) addr:0x020de120 -_ZN19func_ov026_020de1fcD0Ev kind:function(arm,size=0xe4) addr:0x020de1fc +_ZN21UnkStruct_027e0ce0_38D1Ev kind:function(arm,size=0xdc) addr:0x020de120 +_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 @@ -680,7 +680,7 @@ func_ov026_020f65f8 kind:function(arm,size=0x10) addr:0x020f65f8 func_ov026_020f6608 kind:function(arm,size=0x8) addr:0x020f6608 _ZN19func_ov026_020f6610D1Ev kind:function(arm,size=0x70) addr:0x020f6610 _ZN19func_ov026_020f6680D0Ev kind:function(arm,size=0x78) addr:0x020f6680 -func_ov026_020f66f8 kind:function(arm,size=0x68) addr:0x020f66f8 +_ZN24UnkStruct_027e0ce0_38_10C1Ev kind:function(arm,size=0x68) addr:0x020f66f8 func_ov026_020f6760 kind:function(arm,size=0x14) addr:0x020f6760 _ZN24UnkStruct_ov026_0213f57819func_ov026_020f4844Ev kind:function(arm,size=0x2c) addr:0x020f6774 _ZN24UnkStruct_027e0ce0_38_1019func_ov026_020f4870Ev kind:function(arm,size=0x298) addr:0x020f67a0 @@ -690,7 +690,7 @@ func_ov026_020f6a90 kind:function(arm,size=0x28) addr:0x020f6a90 func_ov026_020f6ab8 kind:function(arm,size=0x10) addr:0x020f6ab8 func_ov026_020f6ac8 kind:function(arm,size=0x14) addr:0x020f6ac8 func_ov026_020f6adc kind:function(arm,size=0x34) addr:0x020f6adc -func_ov026_020f6b10 kind:function(arm,size=0x30) addr:0x020f6b10 +func_ov026_020f4be0 kind:function(arm,size=0x30) addr:0x020f6b10 func_ov026_020f6b40 kind:function(arm,size=0x44) addr:0x020f6b40 func_ov026_020f6b84 kind:function(arm,size=0x18) addr:0x020f6b84 func_ov026_020f6b9c kind:function(arm,size=0x18) addr:0x020f6b9c diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index c83a788a..8f5c75ac 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -139,7 +139,7 @@ func_ov031_020dc9c8 kind:function(arm,size=0xd4) addr:0x020dc9c8 func_ov031_020dca9c kind:function(arm,size=0x24) addr:0x020dca9c func_ov031_020dcac0 kind:function(arm,size=0x40) addr:0x020dcac0 func_ov031_020dcb00 kind:function(arm,size=0x30) addr:0x020dcb00 -func_ov031_020dcb30 kind:function(arm,size=0x24) addr:0x020dcb30 +_ZN18PlayerActorBase_74C1Ev kind:function(arm,size=0x24) addr:0x020dcb30 func_ov031_020dcb54 kind:function(arm,size=0xfc) addr:0x020dcb54 func_ov031_020dcc50 kind:function(arm,size=0x2c) addr:0x020dcc50 func_ov031_020dcc7c kind:function(arm,size=0x5c) addr:0x020dcc7c @@ -1931,14 +1931,14 @@ func_ov031_0210ea58 kind:function(arm,size=0x2c) addr:0x021107c8 _ZN19func_ov031_0210ea84D0Ev kind:function(arm,size=0x1c) addr:0x021107f4 _ZN19func_ov031_0210eaa0D1Ev kind:function(arm,size=0x20) addr:0x02110810 _ZN19func_ov031_0210eac0D0Ev kind:function(arm,size=0x28) addr:0x02110830 -_ZN21UnkStruct_020d8698_44C1Ev kind:function(thumb,size=0x3cc) addr:0x02110858 -_ZN21UnkStruct_020d8698_4419func_ov031_0210eeb4Ev kind:function(arm,size=0x200) addr:0x02110c24 -_ZN21UnkStruct_020d8698_448vfunc_08Ev kind:function(arm,size=0x580) addr:0x02110e24 -_ZN21UnkStruct_020d8698_448vfunc_0CEv kind:function(arm,size=0x1b0) addr:0x021113a4 -_ZN21UnkStruct_020d8698_4419func_ov031_0210f7e4Ejb kind:function(arm,size=0x30) addr:0x02111554 -_ZN21UnkStruct_020d8698_4419func_ov031_0210f814Ev kind:function(arm,size=0xec) addr:0x02111584 -_ZN21UnkStruct_020d8698_44D1Ev kind:function(arm,size=0x14) addr:0x02111670 -_ZN21UnkStruct_020d8698_44D0Ev kind:function(arm,size=0x1c) addr:0x02111684 +_ZN15UICounter_ItemsC1Ev kind:function(thumb,size=0x3cc) addr:0x02110858 +_ZN15UICounter_Items19func_ov031_0210eeb4Ev kind:function(arm,size=0x200) addr:0x02110c24 +_ZN15UICounter_Items8vfunc_08Ev kind:function(arm,size=0x580) addr:0x02110e24 +_ZN15UICounter_Items8vfunc_0CEv kind:function(arm,size=0x1b0) addr:0x021113a4 +_ZN15UICounter_Items19func_ov031_0210f7e4Ejb kind:function(arm,size=0x30) addr:0x02111554 +_ZN15UICounter_Items19func_ov031_0210f814Ev kind:function(arm,size=0xec) addr:0x02111584 +_ZN15UICounter_ItemsD1Ev kind:function(arm,size=0x14) addr:0x02111670 +_ZN15UICounter_ItemsD0Ev kind:function(arm,size=0x1c) addr:0x02111684 func_ov031_0210f930 kind:function(arm,size=0xac) addr:0x021116a0 func_ov031_0210f9dc kind:function(arm,size=0x4c) addr:0x0211174c _ZN19func_ov031_0210fa28D1Ev kind:function(arm,size=0x14) addr:0x02111798 diff --git a/config/jp/arm9/overlays/ov088/symbols.txt b/config/jp/arm9/overlays/ov088/symbols.txt index a566fd53..5403fcaa 100644 --- a/config/jp/arm9/overlays/ov088/symbols.txt +++ b/config/jp/arm9/overlays/ov088/symbols.txt @@ -322,7 +322,7 @@ func_ov088_02171a78 kind:function(arm,size=0x1c) addr:0x02171a78 func_ov088_02171a94 kind:function(arm,size=0x24) addr:0x02171a94 func_ov088_02171ab8 kind:function(arm,size=0x1c) addr:0x02171ab8 func_ov088_02171ad4 kind:function(arm,size=0x2c) addr:0x02171ad4 -func_ov088_02171b00 kind:function(thumb,size=0x298) addr:0x02171b00 +_ZN21UnkStruct_027e0ce0_3CC1Ev kind:function(thumb,size=0x298) addr:0x02171b00 func_ov088_02171d98 kind:function(thumb,size=0x8c) addr:0x02171d98 func_ov088_02171e24 kind:function(thumb,size=0x2c) addr:0x02171e24 func_ov088_02171e50 kind:function(arm,size=0xb0) addr:0x02171e50 diff --git a/config/jp/arm9/overlays/ov101/symbols.txt b/config/jp/arm9/overlays/ov101/symbols.txt index 64456240..467aa538 100644 --- a/config/jp/arm9/overlays/ov101/symbols.txt +++ b/config/jp/arm9/overlays/ov101/symbols.txt @@ -9,7 +9,7 @@ func_ov101_02184948 kind:function(thumb,size=0x20) addr:0x02184948 func_ov101_02184968 kind:function(thumb,size=0xc) addr:0x02184968 func_ov101_02184974 kind:function(thumb,size=0xc) addr:0x02184974 func_ov101_02184980 kind:function(thumb,size=0xc) addr:0x02184980 -func_ov101_0218498c kind:function(thumb,size=0x154) addr:0x0218498c +_ZN21UnkStruct_027e0ce0_40C1Ev kind:function(thumb,size=0x154) addr:0x0218498c func_ov101_02184ae0 kind:function(thumb,size=0x54) addr:0x02184ae0 func_ov101_02184b34 kind:function(thumb,size=0x50) addr:0x02184b34 func_ov101_02184b84 kind:function(thumb,size=0x1e) addr:0x02184b84 diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index ae87845e..708efa17 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -752,7 +752,7 @@ func_02015318 kind:function(arm,size=0x24) addr:0x02015318 _ZN14UnkDataStruct2D1Ev kind:function(arm,size=0x20) addr:0x0201533c _ZN17UnkFileSystem2_10D1Ev kind:function(arm,size=0x20) addr:0x0201535c func_0201537c kind:function(arm,size=0x18) addr:0x0201537c -func_02015394 kind:function(thumb,size=0x12) addr:0x02015394 +_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_02015460EPKcPvi kind:function(thumb,size=0x1c) addr:0x020153f8 @@ -788,8 +788,8 @@ _ZN14UnkFileSystem28vfunc_08Ei kind:function(thumb,size=0x2a) addr:0x020156bc _ZN14UnkFileSystem28vfunc_0CEv kind:function(thumb,size=0x6) addr:0x020156e8 _ZN14UnkFileSystem28vfunc_10Ei kind:function(thumb,size=0x30) addr:0x020156f0 func_02015788 kind:function(arm,size=0x38) addr:0x02015720 -func_02015758 kind:function(arm,size=0x30) addr:0x02015758 -func_02015788_jp kind:function(arm,size=0x30) addr:0x02015788 +func_020157c0 kind:function(arm,size=0x30) addr:0x02015758 +func_020157f0 kind:function(arm,size=0x30) addr:0x02015788 func_020157b8 kind:function(arm,size=0xc8) addr:0x020157b8 func_02015880 kind:function(arm,size=0xb4) addr:0x02015880 func_02015934 kind:function(arm,size=0x7c) addr:0x02015934 @@ -821,8 +821,8 @@ func_020164d4 kind:function(thumb,size=0x60) addr:0x020164d4 func_0201659c kind:function(arm,size=0x14) addr:0x02016534 func_02016548 kind:function(arm,size=0x50) addr:0x02016548 func_02016598 kind:function(arm,size=0x20) addr:0x02016598 -func_020165b8 kind:function(arm,size=0x3c) addr:0x020165b8 -func_020165f4 kind:function(arm,size=0x20) addr:0x020165f4 +_ZN36MapObjectProfile_Derived2_20_Base_18C1Ev kind:function(arm,size=0x3c) addr:0x020165b8 +_ZN36MapObjectProfile_Derived2_20_Base_18D1Ev kind:function(arm,size=0x20) addr:0x020165f4 _ZN12LinkListImplC2Ev kind:function(arm,size=0xc) addr:0x02016614 _ZN12LinkListImplC1Ev kind:function(arm,size=0xc) addr:0x02016620 _ZN12LinkListImplD2Ev kind:function(arm,size=0x18) addr:0x0201662c @@ -863,12 +863,12 @@ func_02017690 kind:function(arm,size=0x7c) addr:0x02017690 func_0201770c kind:function(arm,size=0x8) addr:0x0201770c func_02017714 kind:function(arm,size=0x8) addr:0x02017714 func_0201771c kind:function(arm,size=0x8) addr:0x0201771c -func_02017724 kind:function(arm,size=0x24) addr:0x02017724 -func_02017748 kind:function(arm,size=0x4) addr:0x02017748 -_ZN13func_0201774cD0Ev kind:function(arm,size=0x14) addr:0x0201774c +_ZN37UnkStruct_027e0960_TableEntry_04_BaseC1Ev kind:function(arm,size=0x24) addr:0x02017724 +_ZN37UnkStruct_027e0960_TableEntry_04_BaseD1Ev kind:function(arm,size=0x4) addr:0x02017748 +_ZN37UnkStruct_027e0960_TableEntry_04_BaseD0Ev kind:function(arm,size=0x14) addr:0x0201774c func_02017760 kind:function(arm,size=0x4) addr:0x02017760 func_02017764 kind:function(arm,size=0x18) addr:0x02017764 -func_0201777c kind:function(arm,size=0x8) addr:0x0201777c +_ZN37UnkStruct_027e0960_TableEntry_04_Base8vfunc_08Ev kind:function(arm,size=0x8) addr:0x0201777c func_02017784 kind:function(arm,size=0x70) addr:0x02017784 func_020177f4 kind:function(arm,size=0xd4) addr:0x020177f4 func_020178c8 kind:function(arm,size=0x4c) addr:0x020178c8 @@ -892,7 +892,7 @@ func_02017e24 kind:function(arm,size=0x18) addr:0x02017e24 func_02017ea4 kind:function(arm,size=0x40) addr:0x02017e3c func_02017ee4 kind:function(arm,size=0x54) addr:0x02017e7c func_02017ed0 kind:function(arm,size=0x1c) addr:0x02017ed0 -func_02017eec kind:function(arm,size=0x38) addr:0x02017eec +func_02017f54 kind:function(arm,size=0x38) addr:0x02017eec func_02017f24 kind:function(arm,size=0x84) addr:0x02017f24 func_02017fa8 kind:function(arm,size=0x98) addr:0x02017fa8 func_02018040 kind:function(arm,size=0x6c) addr:0x02018040 @@ -990,7 +990,7 @@ func_020198cc kind:function(arm,size=0x140) addr:0x020198cc func_02019a74 kind:function(arm,size=0xc8) addr:0x02019a0c func_02019b3c kind:function(arm,size=0x110) addr:0x02019ad4 func_02019c4c kind:function(arm,size=0xa0) addr:0x02019be4 -func_02019c84 kind:function(arm,size=0x28) addr:0x02019c84 +func_02019cec kind:function(arm,size=0x28) addr:0x02019c84 func_02019cac kind:function(arm,size=0x9c) addr:0x02019cac func_02019d48 kind:function(arm,size=0xf4) addr:0x02019d48 func_02019e3c kind:function(arm,size=0x130) addr:0x02019e3c @@ -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_02027d30 kind:function(arm,size=0x28) addr:0x02027d30 +func_02026800 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 @@ -1958,7 +1958,7 @@ CARD_func_0052 kind:function(arm,size=0x14) addr:0x02033b10 CARD_func_0053 kind:function(arm,size=0x8c) addr:0x02033b24 CARD_func_0054 kind:function(arm,size=0x14) addr:0x02033bb0 CARD_func_0055 kind:function(arm,size=0xf0) addr:0x02033bc4 -func_02033cb4 kind:function(arm,size=0x44) addr:0x02033cb4 +func_02032784 kind:function(arm,size=0x44) addr:0x02033cb4 func_02033cf8 kind:function(arm,size=0x44) addr:0x02033cf8 func_02033d3c kind:function(arm,size=0x40) addr:0x02033d3c func_02033d7c kind:function(arm,size=0x40) addr:0x02033d7c diff --git a/include/Actor/ActorRef.hpp b/include/Actor/ActorRef.hpp index 48cc9488..8dd7ad61 100644 --- a/include/Actor/ActorRef.hpp +++ b/include/Actor/ActorRef.hpp @@ -9,6 +9,11 @@ struct ActorRef { /* 2 */ u16 id; /* 4 */ + ActorRef() {} + ActorRef(u32 value) { + *(u32 *) this = value; + } + void Reset() { *(u32 *) this = 0; } diff --git a/include/Actor/ActorUnkOBPC.hpp b/include/Actor/ActorUnkOBPC.hpp index 6c7f86f0..84bb8cff 100644 --- a/include/Actor/ActorUnkOBPC.hpp +++ b/include/Actor/ActorUnkOBPC.hpp @@ -1,37 +1,29 @@ -//! TODO: This file was generated automatically and might contain errors - #pragma once #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" +#include "Unknown/UnkSystem1.hpp" #include "global.h" #include "types.h" -class ActorUnkOBPC_c4 : public Actor_c4 { -public: - ActorUnkOBPC_c4(Actor *param1); - - /* 00 */ virtual unk32 vfunc_00(Actor_c4_stack param1, unk32 param2) override; - /* 04 */ virtual void vfunc_04() override; - /* 08 */ virtual void vfunc_08() override; - /* 0C */ virtual void vfunc_0c(unk32 param1) override; -}; - class ActorUnkOBPC : public Actor { public: /* 00 (base) */ - /* 94 */ + /* 94 */ unk32 mUnk_94; + /* 98 */ unk32 mUnk_98; + /* 9C */ UnkSystem1_ov000_Derived2 mUnk_9C; + /* D0 */ ActorUnkOBPC(); + /* 18 */ virtual bool vfunc_18(unk32 param1) override; + /* 20 */ virtual void vfunc_20() override; + /* 24 */ virtual void vfunc_24() override; /* 4C */ virtual ~ActorUnkOBPC() override; - void func_ov024_020d6f28(void); - void func_ov024_020d6f74(void); - void func_ov024_020d6f94(void); - void func_ov024_020d7050(void); - void func_ov024_020d7064(void); - void func_ov024_020d7154(void); + bool func_ov024_020d6f74(void); + void func_ov024_020d7064(s16 param1, unk32 param2); + bool func_ov024_020d7154(void); }; class ActorProfileUnkOBPC : public ActorProfile { diff --git a/include/Actor/ActorUnk_ov000_020a8bb0.hpp b/include/Actor/ActorUnk_ov000_020a8bb0.hpp index 25be9552..6636e4dc 100644 --- a/include/Actor/ActorUnk_ov000_020a8bb0.hpp +++ b/include/Actor/ActorUnk_ov000_020a8bb0.hpp @@ -3,6 +3,7 @@ #include "Actor/Actor.hpp" #include "Render/ModelRender.hpp" #include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_027e0960.hpp" #include "types.h" class ActorUnk_vfunc_b0 { @@ -44,9 +45,18 @@ public: ~ActorUnk_ov000_020a8bb0_94(); }; +class ActorUnk_ov000_020a8bb0_94_Derived1 : public ActorUnk_ov000_020a8bb0_94 { +public: + /* 00 (base) */ + + ActorUnk_ov000_020a8bb0_94_Derived1(unk32 param1) { + this->mUnk_0C = param1; + } +}; + class ActorUnk_ov000_020a8bb0_a4 { public: - /* 00 */ ModelRender *mUnk_00; + /* 00 */ ModelRender *mpModelRender; /* 08 */ unk16 mUnk_04; /* 08 */ unk16 mUnk_06; /* 0A */ unk32 mUnk_08; @@ -54,25 +64,48 @@ public: void func_01ffc6d4(u16 param1, VecFx32 *pos); - ActorUnk_ov000_020a8bb0_a4() {} + ActorUnk_ov000_020a8bb0_a4(ModelRender *pModelRender) { + this->mpModelRender = pModelRender; + this->mUnk_04 = 0; + this->mUnk_08 = 0; + } + ~ActorUnk_ov000_020a8bb0_a4() {} }; -class ActorUnk_ov000_020a8bb0_ec { +class ActorUnk_ov000_020a8bb0_EC { public: - void func_ov024_020d6668(); + /* 00 */ UnkStruct_027e0960_TableEntry *mUnk_00; + /* 04 */ u8 mUnk_04; + /* 05 */ u8 mUnk_05; + /* 06 */ bool mUnk_06; + /* 07 */ u8 mUnk_07; + /* 08 */ u16 mUnk_08; + /* 0C */ VecFx32 mUnk_0C; + /* 18 */ + + ActorUnk_ov000_020a8bb0_EC(); + ~ActorUnk_ov000_020a8bb0_EC() {} + + void func_ov024_020d6680(const VecFx32 *param1, u8 *param2); + void func_ov024_020d66c0(const VecFx32 *param1, unk32 param2); + bool func_ov024_020d6704(); + void func_ov024_020d6730(); + u16 *func_ov024_020d69d8(VecFx32 *pPos, s16 *pAngle, VecFx32 *pVel, unk32 param4, s16 param5, unk32 param6); + u16 *func_ov024_020d6b7c(VecFx32 *pPos, s16 *pAngle, VecFx32 *pVel, unk32 param4, s16 param5, unk32 param6); + u16 *func_ov024_020d6d80(VecFx32 *pPos, VecFx32 *pVel); }; class ActorUnk_ov000_020a8bb0 : public Actor { public: /* 000 (base) */ - /* 094 */ ActorUnk_ov000_020a8bb0_94 mUnk_094; + /* 094 */ ActorUnk_ov000_020a8bb0_94_Derived1 mUnk_094; /* 0A4 */ ActorUnk_ov000_020a8bb0_a4 mUnk_0A4; /* 0B0 */ u16 mUnk_0B0; /* 0B4 */ unk32 mUnk_0B4; /* 0B8 */ unk32 mUnk_0B8; /* 0BC */ ActorRef mUnk_0BC; - /* 0C0 */ VecFx32 mUnk_0C0; + /* 0C0 */ Vec3p mUnk_0C0; /* 0CC */ unk16 mUnk_0CC; /* 0CC */ unk16 mUnk_0CE; /* 0D0 */ unk32 mUnk_0D0; @@ -86,16 +119,8 @@ public: /* 0E4 */ unk32 mUnk_0E4; /* 0E8 */ unk16 mUnk_0E8; /* 0E8 */ unk16 mUnk_0EA; - /* 0EC */ ActorUnk_ov000_020a8bb0_ec mUnk_0EC; - /* 0F0 */ unk32 mUnk_0F0; - /* 0F4 */ unk32 mUnk_0F4; - /* 0F8 */ unk32 mUnk_0F8; - /* 0FC */ unk32 mUnk_0FC; - /* 100 */ unk32 mUnk_100; - /* 104 */ unk32 mUnk_104; - /* 108 */ unk32 mUnk_108; - /* 10C */ unk32 mUnk_10C; - /* 110 */ unk32 mUnk_110; + /* 0EC */ ActorUnk_ov000_020a8bb0_EC mUnk_0EC; + /* 104 */ Cylinder mUnk_104; /* 114 */ unk32 mUnk_114; /* 118 */ unk32 mUnk_118; /* 11C */ unk32 mUnk_11C; diff --git a/include/Game/GameModeManager.hpp b/include/Game/GameModeManager.hpp index 4185a781..ef1999de 100644 --- a/include/Game/GameModeManager.hpp +++ b/include/Game/GameModeManager.hpp @@ -175,10 +175,10 @@ public: void func_ov000_02060fc8(unk32 param1, unk32 param2, unk32 param3, unk32 param4); }; -extern TitleScreenManager_Base *data_027e0994; +extern TitleScreenManager_Base *gpCurrentGameModeMgr; class AdventureModeManager; static inline AdventureModeManager *GetAdventureModeManager() { - return (AdventureModeManager *) data_027e0994; + return (AdventureModeManager *) gpCurrentGameModeMgr; } diff --git a/include/MainGame/AdventureMode.hpp b/include/MainGame/AdventureMode.hpp index 51bf512c..d351f153 100644 --- a/include/MainGame/AdventureMode.hpp +++ b/include/MainGame/AdventureMode.hpp @@ -834,7 +834,7 @@ public: return 0; } - AdventureModeManager_1B8_Base(u8 bgType, bool param2, const AdventureModeManager_1B8_Base_1C *param3, bool param4, + AdventureModeManager_1B8_Base(u8 bgType, bool param2, const AdventureModeManager_1B8_Base_1C ¶m3, bool param4, bool param5); ~AdventureModeManager_1B8_Base(); @@ -979,7 +979,7 @@ public: void func_ov024_020c6770(SceneIndex sceneIndex, u8 param2, unk16 param3, unk16 param4); bool func_ov024_020c681c(); void func_ov024_020c6840(SceneIndex sceneIndex); - void func_ov024_020c68d4(); + void func_ov024_020c68d4(Vec2s *param1, unk32 param2); bool func_ov024_020c68ec(unk32 param1, unk32 param2); void func_ov024_020c6930(); bool func_ov024_020c6940(unk32 param1, unk32 param2); @@ -1010,3 +1010,34 @@ public: static void func_ov001_020c0874(); static void func_ov001_020c0894(); }; + +typedef struct UnkStruct_ov024_020d86a8 { + union { + struct { + /* 00 */ u8 mUnk_00_0 : 1; + /* 00 */ u8 mUnk_00_1 : 1; + }; + u32 data; + }; +} UnkStruct_ov024_020d86a8; + +extern const UnkStruct_ov024_020d86a8 data_ov024_020d78b8; + +extern void SetCreditsEndingType(u16 value); +extern u16 GetCreditsEndingType(); + +extern void func_ov024_020d51dc(Vec2s *param1, SceneIndex sceneIndex); +extern void func_ov024_020d524c(Vec2s *param1, SceneIndex sceneIndex); +extern bool func_ov024_020d5304(SceneIndex sceneIndex); +extern bool func_ov024_020d5340(SceneIndex sceneIndex); +extern bool func_ov024_020d5354(s32 *pFlagPos, s16 *pFlagValue, ItemId itemId); +extern bool func_ov024_020d5410(SceneIndex sceneIndex); +extern bool func_ov024_020d5434(SceneIndex sceneIndex); +extern bool func_ov024_020d5458(SceneIndex sceneIndex); +extern bool func_ov024_020d547c(SceneIndex sceneIndex); +extern const u16 data_ov024_020d7684[5][6]; + +extern const int data_ov024_020d7318; +extern const int data_ov024_020d731c; +extern const int data_ov024_020d7320; +extern const int data_ov024_020d7324; diff --git a/include/MainGame/CargoManager.hpp b/include/MainGame/CargoManager.hpp index 778b1152..dbb2c02d 100644 --- a/include/MainGame/CargoManager.hpp +++ b/include/MainGame/CargoManager.hpp @@ -92,4 +92,10 @@ public: static CargoManager *Create(); }; +struct UnkCargoStruct { + s16 type; + u16 requiredAmount; +}; + extern CargoManager *gpCargoManager; +extern const UnkCargoStruct data_ov024_020d78c0[]; diff --git a/include/MainGame/MiscAdvManager.hpp b/include/MainGame/MiscAdvManager.hpp index ddd8c6bf..404e8a45 100644 --- a/include/MainGame/MiscAdvManager.hpp +++ b/include/MainGame/MiscAdvManager.hpp @@ -64,7 +64,10 @@ public: /* 00 */ u16 mStampDates[StampType_Max]; /* 28 */ u16 mUnk_28; /* 2A */ u16 mPostDate; - /* 2C */ Vec2b mStampPositions[StampType_Max]; + /* 2C */ union { + Vec2b mStampPositions[StampType_Max]; + u16 mStampPos[StampType_Max]; + }; /* 54 */ s8 mObtainedLetters[LetterType_Max]; /* 68 */ s8 mObtainedStamps[StampType_Max]; /* 7C */ u8 mLastRandomNum; @@ -97,7 +100,7 @@ public: unk32 GetStamp(unk32 index); u16 *GetStampDate(unk32 index); Vec2b *GetStampPos(unk32 index); - void func_ov024_020d64b4(unk32 param1, unk32 param2, u16 *param3); + void func_ov024_020d64b4(s8 param1, unk32 param2, const u16 *param3); void func_ov024_020d6530(); unk32 GetNumPostcards(); void GivePriceCard(unk32 amount); diff --git a/include/MainGame/PassengerManager.hpp b/include/MainGame/PassengerManager.hpp index d1fd75e3..ac4d52ed 100644 --- a/include/MainGame/PassengerManager.hpp +++ b/include/MainGame/PassengerManager.hpp @@ -15,13 +15,14 @@ enum HappinessLevel_ { }; struct UnkStruct_Param1 { - ActorId actorId; - s16 mUnk_04; - SceneIndex_Half sceneIndex; - u8 roomIndex; - unk32 mUnk_0C; - unk32 happiness; - u16 mUnk_14; + /* 00 */ ActorId actorId; + /* 04 */ s16 mUnk_04; + /* 06 */ SceneIndex_Half sceneIndex; + /* 08 */ u8 roomIndex; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 happiness; + /* 14 */ u16 mUnk_14; + /* 18 */ }; class Passenger { @@ -58,7 +59,7 @@ public: static bool func_ov001_020bf870(); // overlay 24 - void func_ov024_020d41bc(UnkStruct_Param1 *pActorId); + void func_ov024_020d41bc(const UnkStruct_Param1 *pActorId); void func_ov024_020d41f4(UnkStruct_Param1 *param1); void func_ov024_020d4228(); void func_ov024_020d4258(); @@ -79,7 +80,7 @@ public: void Reset(); bool IsDateUnset(); s16 GetDate(); - u32 GetRandomIndex(u32 arg1, s32 arg2); + u32 GetRandomIndex(u32 param1, u32 seed); void SetFailedFlag(); static u32 GetPassengerInfoIndex(ActorId actorId); @@ -89,3 +90,4 @@ public: }; extern PassengerManager *gpPassengerManager; +extern const s16 data_ov024_020d7598[]; diff --git a/include/MainGame/UnkTrainSystems.hpp b/include/MainGame/UnkTrainSystems.hpp new file mode 100644 index 00000000..ac5e11d2 --- /dev/null +++ b/include/MainGame/UnkTrainSystems.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include "Render/ModelRender.hpp" +#include "Unknown/UnkStruct_027e0d00.hpp" + +#include + +class UnkTrainSystem1 { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 mUnk_10; + /* 14 */ unk32 mUnk_14; + /* 18 */ + + UnkTrainSystem1(); + ~UnkTrainSystem1(); + + void func_ov024_020d54f4(); + void func_ov024_020d562c(const VecFx32 *param1, fx32 param2); + bool func_ov024_020d586c(); + + static u8 func_ov024_020d54a0(s32 param1); +}; + +class UnkTrainSystem2 { + /* 00 */ unk32 mUnk_00; + /* 04 */ ModelRender mModelRender; + /* 64 */ s16 mUnk_64; + /* 66 */ s16 mUnk_66; + /* 68 */ + + void SetModel() { + this->mModelRender.vfunc_08(G3d_GetModelPtr(data_027e0d00->mUnk_0F4->mUnk_50)); + } + + void SetTransform(const Mat3p *param1, const VecFx32 *param2, fx32 param3) { + VecFx32 temp; + temp.x = param3; + temp.y = param3; + temp.z = param3; + this->mModelRender.vfunc_10(&temp, (Mat3p *) param1, (VecFx32 *) param2); + } + + UnkTrainSystem2(); + ~UnkTrainSystem2(); + + void func_ov024_020d5990(); + void func_ov024_020d5afc(const Mat3p *param1, const VecFx32 *param2, unk32 param3); + bool func_ov024_020d5c40(); +}; diff --git a/include/MapObject/MapObject.hpp b/include/MapObject/MapObject.hpp index 0a4e218c..9c7d3d6f 100644 --- a/include/MapObject/MapObject.hpp +++ b/include/MapObject/MapObject.hpp @@ -174,7 +174,7 @@ public: bool func_ov000_0209d144(Vec2s *param1, unk32 param2, unk32 param3); void func_ov000_0209d274(unk32 param1); bool func_ov000_0209d29c(unk32 param1); - void func_ov000_0209d2c4(unk32 param1, unk32 param2); + void func_ov000_0209d2c4(unk32 param1, bool param2); void func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3); void func_ov000_0209d3b4(unk32 param1, fx32 size); void func_ov000_0209d434(s8 *param1, UnkStruct_ov019_020d24c8_28_258_00 *param2, unk32 param3); diff --git a/include/Physics/Cylinder.hpp b/include/Physics/Cylinder.hpp index f3c23bfc..36886c57 100644 --- a/include/Physics/Cylinder.hpp +++ b/include/Physics/Cylinder.hpp @@ -5,8 +5,9 @@ #include "math.hpp" struct Cylinder { - VecFx32 pos; - fx32 size; // height and radius + /* 00 */ VecFx32 pos; + /* 0C */ fx32 size; // height and radius + /* 10 */ Cylinder() {} Cylinder(fx32 size) { diff --git a/include/Player/Player.hpp b/include/Player/Player.hpp index eee135c3..9fdd48ba 100644 --- a/include/Player/Player.hpp +++ b/include/Player/Player.hpp @@ -1,10 +1,38 @@ #pragma once +#include "LinkList.hpp" +#include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_ov000_0208f820.hpp" #include "math.hpp" #include "types.h" -// incomplete -class PlayerActor { +class PlayerActorBase_5C { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ void *mUnk_10; + /* 14 */ +}; + +class PlayerActorBase_70 { +public: + /* 000 */ STRUCT_PAD(0x00, 0x160); + /* 160 */ + + PlayerActorBase_70(); +}; + +class PlayerActorBase_74 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x34); + /* 34 */ + + PlayerActorBase_74(); +}; + +class PlayerActorBase { public: /* 00 */ VecFx32 mPos; /* 0C */ VecFx32 mPrevPos; @@ -13,6 +41,164 @@ public: /* 30 */ u16 mAngle; /* 32 */ u8 mInvincibilityTimer; /* 33 */ u8 mInvincibilityIconTimer; // the blinking icon on top-screen + /* 34 */ unk32 mUnk_34; + /* 38 */ UnkStruct_PlayerGet_64 mUnk_38; + /* 44 */ unk32 mUnk_44; + /* 48 */ unk32 mUnk_48; + /* 4C */ unk32 mUnk_4C; + /* 50 */ unk32 mUnk_50; + /* 54 */ unk32 mUnk_54; + /* 58 */ unk32 mUnk_58; + /* 5C */ PlayerActorBase_5C mUnk_5C; + /* 70 */ PlayerActorBase_70 *mUnk_70; + /* 74 */ PlayerActorBase_74 *mUnk_74; + /* 78 */ STRUCT_PAD(0x78, 0x84); + /* 84 */ UnkStruct_ov019_020d24c8_28_258 mUnk_84; + /* 9C */ - void func_ov001_020bc820(); // TODO: params + PlayerActorBase(); +}; + +class PlayerActor_9C { +public: + /* 000 (vtable) */ + /* 004 */ STRUCT_PAD(0x04, 0x154); + /* 154 */ + + PlayerActor_9C(); + + // data_ov000_020b2a8c + /* 00 */ virtual ~PlayerActor_9C(); +}; + +class PlayerActor_A0_38; + +class PlayerActor_A0_38_04_Base : public LinkList { +public: + /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ unk32 mUnk_0C; + /* 10 */ PlayerActor_A0_38 *mUnk_10; + /* 14 */ + + PlayerActor_A0_38_04_Base(PlayerActor_A0_38 *param1) { + this->mUnk_0C = 0; + this->mUnk_10 = param1; + } + + /* 00 */ virtual void vfunc_00(); +}; + +class PlayerActor_A0_38_04 : public PlayerActor_A0_38_04_Base { +public: + /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ + + PlayerActor_A0_38_04(PlayerActor_A0_38 *param1) : + PlayerActor_A0_38_04_Base(param1) {} + + // data_ov024_020d8250 + /* 00 */ virtual void vfunc_00() override; +}; + +class PlayerActor_A0_38_18 : public PlayerActor_A0_38_04_Base { +public: + /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ + + PlayerActor_A0_38_18(PlayerActor_A0_38 *param1) : + PlayerActor_A0_38_04_Base(param1) {} + + // data_ov024_020d8244 + /* 00 */ virtual void vfunc_00() override; +}; + +class PlayerActor_A0_38 { +public: + /* 00 */ unk16 mUnk_00; + /* 02 */ unk16 mUnk_02; + /* 04 */ PlayerActor_A0_38_04 mUnk_04; + /* 18 */ PlayerActor_A0_38_18 mUnk_18; + /* 2C */ Vec2s mUnk_2C; + /* 30 */ u16 mUnk_30; + /* 32 */ unk16 mUnk_32; + /* 34 */ u16 mUnk_34; + /* 36 */ bool mUnk_36; + /* 37 */ bool mUnk_37; + /* 38 */ + + PlayerActor_A0_38(); + ~PlayerActor_A0_38(); + + void func_ov024_020d19d8(); +}; + +class PlayerActor_A0 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x38); + /* 38 */ PlayerActor_A0_38 *mUnk_38; + /* 3C */ STRUCT_PAD(0x3C, 0x94); + /* 94 */ + + PlayerActor_A0(); +}; + +class PlayerActor_A4 { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk8 mUnk_08; + /* 09 */ unk8 mUnk_09; + /* 0A */ unk8 mUnk_0A; + /* 0B */ unk8 mUnk_0B; + /* 0C */ +}; + +class PlayerActor_134 { +public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ + + PlayerActor_134() { + this->mUnk_00 = 0; + this->mUnk_04 = 0; + } +}; + +class PlayerActor_1B0 : public UnkSystem7 { +public: + /* 00 (base) */ + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ + + PlayerActor_1B0(); + ~PlayerActor_1B0(); +}; + +class PlayerActor : public PlayerActorBase { +public: + /* 000 (base) */ + /* 09C */ PlayerActor_9C *mUnk_9C; + /* 0A0 */ PlayerActor_A0 *mUnk_A0; + /* 0A4 */ PlayerActor_A4 mUnk_A4; + /* 0B0 */ unk32 mUnk_B0; + /* 0B4 */ unk8 mUnk_B4; + /* 0B5 */ unk8 mUnk_B5; + /* 0B6 */ unk8 mUnk_B6; + /* 0B7 */ unk8 mUnk_B7; + /* 0B8 */ unk8 mUnk_B8; + /* 0B9 */ unk8 mUnk_B9; + /* 0BA */ unk8 mUnk_BA; + /* 0BB */ unk8 mUnk_BB; + /* 0BC */ UnkSubStruct19 mUnk_BC; + /* 134 */ PlayerActor_134 *mUnk_134; + /* 138 */ UnkSubStruct19 mUnk_138; // sanctuary link icon animation + /* 1B0 */ PlayerActor_1B0 mUnk_1B0[3]; + /* 1D4 */ + + PlayerActor(); //! TODO: params }; diff --git a/include/Render/ModelRender.hpp b/include/Render/ModelRender.hpp index fa3a4d92..b7855c6a 100644 --- a/include/Render/ModelRender.hpp +++ b/include/Render/ModelRender.hpp @@ -37,10 +37,10 @@ public: // data_ov000_020b1a98 /* 00 */ virtual ~ModelRenderBase(); /* 08 */ virtual void vfunc_08(G3d_Model *pModel); - /* 0C */ virtual void vfunc_0C() = 0; - /* 10 */ virtual void vfunc_10() = 0; - /* 14 */ virtual void vfunc_14(Mat3p *param1, VecFx32 *param2) = 0; - /* 18 */ virtual void vfunc_18() = 0; + /* 0C */ virtual void vfunc_0C() = 0; + /* 10 */ virtual void vfunc_10(VecFx32 *param1, Mat3p *param2, VecFx32 *param3) = 0; + /* 14 */ virtual void vfunc_14(Mat3p *param1, VecFx32 *param2) = 0; + /* 18 */ virtual void vfunc_18() = 0; /* 1C */ }; @@ -55,11 +55,11 @@ public: // data_ov000_020b1a6c /* 00 */ virtual ~ModelRender(); - /* 08 */ virtual void vfunc_08(G3d_Model *pModel); - /* 0C */ virtual void vfunc_0C(); - /* 10 */ virtual void vfunc_10(); - /* 14 */ virtual void vfunc_14(Mat3p *param1, VecFx32 *param2); // SetRotationTranslation? - /* 18 */ virtual void vfunc_18(); + /* 08 */ virtual void vfunc_08(G3d_Model *pModel) override; + /* 0C */ virtual void vfunc_0C() override; + /* 10 */ virtual void vfunc_10(VecFx32 *param1, Mat3p *param2, VecFx32 *param3) override; // SetTransform? + /* 14 */ virtual void vfunc_14(Mat3p *param1, VecFx32 *param2) override; // SetRotationTranslation? + /* 18 */ virtual void vfunc_18() override; /* 1C */ virtual void vfunc_1C(UnkSystem4_vfunc_1C *param1); /* 20 */ virtual void vfunc_20(); @@ -77,7 +77,7 @@ public: // data_ov000_020b1a48 /* 00 */ virtual ~UnkSystem6_Derived1() override {} - /* 10 */ virtual void vfunc_10() override; + /* 10 */ virtual void vfunc_10(VecFx32 *param1, Mat3p *param2, VecFx32 *param3) override; /* 14 */ virtual void vfunc_14(Mat3p *param1, VecFx32 *param2) override; /* 18 */ virtual void vfunc_18() override; }; @@ -117,3 +117,34 @@ public: void func_ov000_020577a4(unk32 param1, unk32 param2, unk32 param3); void func_ov000_020577f8(unk32 param1); }; + +class ModelRender_Derived1 : public ModelRender { +public: + /* 00 (base) */ + /* 60 */ unk32 mUnk_60; + /* 64 */ unk32 mUnk_64; + /* 68 */ unk32 mUnk_68; + /* 6C */ + + ModelRender_Derived1(G3d_Model *pModel, unk32 param2, void *param3); + + // data_ov000_020b1be4 + /* 00 */ virtual ~ModelRender_Derived1() override {} + /* 08 */ virtual void vfunc_08(G3d_Model *pModel) override; + /* 1C */ virtual void vfunc_1C(UnkSystem4_vfunc_1C *param1) override; + + unk32 func_ov000_0205a778(const char *param1); + void *func_ov000_0205a7a8(unk32 param1); +}; + +class ModelRender_Derived2 : public ModelRender_Derived1 { +public: + /* 00 (base) */ + /* 6C */ + + ModelRender_Derived2(G3d_Model *pModel, unk32 param2, void *param3) : + ModelRender_Derived1(pModel, param2, param3) {} + + // data_ov024_020d84bc + /* 00 */ virtual ~ModelRender_Derived2() override {} +}; diff --git a/include/Save/AdventureFlags.hpp b/include/Save/AdventureFlags.hpp index 2404c251..73745297 100644 --- a/include/Save/AdventureFlags.hpp +++ b/include/Save/AdventureFlags.hpp @@ -7,6 +7,7 @@ typedef u32 AdventureFlag; typedef u16 AdventureFlag_Half; enum AdventureFlag_ { + /* -1 */ AdventureFlag_Unset = 0xFFFF, /* 0x000 */ AdventureFlag_Nothing = FLAG(0, 0), /* 0x001 */ AdventureFlag_Unk_001 = FLAG(0, 1), /* 0x002 */ AdventureFlag_ObtainedSpiritTrain = FLAG(0, 2), diff --git a/include/Save/SaveFile.hpp b/include/Save/SaveFile.hpp index 986a2466..12bc0009 100644 --- a/include/Save/SaveFile.hpp +++ b/include/Save/SaveFile.hpp @@ -2,6 +2,7 @@ #include "Item/ItemManager.hpp" #include "MainGame/MiscAdvManager.hpp" +#include "MainGame/PassengerManager.hpp" #include "math.hpp" #include "types.h" @@ -17,11 +18,20 @@ struct SaveFile_00000_0000_Data_D8 { /* 00 */ unk32 unk_00; - /* 04 */ STRUCT_PAD(0x04, 0x6C); - /* 6C */ u32 trackFlags[2]; - /* 74 */ unk32 spiritTrackFlags[1]; - /* 78 */ unk32 unk_74; - /* 7C */ unk32 unk_78; + /* 04 */ STRUCT_PAD(0x04, 0x40); + /* 40 */ UnkStruct_Param1 unk_40; + /* 58 */ unk32 unk_58; + /* 5C */ unk32 unk_5C; + /* 60 */ s8 unk_60[4]; + /* 60 */ s8 unk_64[4]; + /* 68 */ unk8 unk_68; + /* 69 */ unk8 unk_69; + /* 6A */ unk8 unk_6A; + /* 6B */ unk8 unk_6B; + /* 6C */ u32 trackFlags[3]; + /* 78 */ unk32 spiritTrackFlags; + /* 7C */ unk16 cargoAmount; + /* 7E */ unk8 cargoType; /* 80 */ SaveFile_00000_0000_Data_D8(); @@ -116,7 +126,7 @@ struct SaveFile_00000_0000_Data_C84 { } }; -struct SaveFile_00000_0000_Data_TEST4 { +struct SaveFile_00000_0000_Data_D4C { /* D24 */ unk32 unk_D4C; /* D24 */ unk32 unk_D50; /* D24 */ unk32 unk_D54; @@ -128,7 +138,7 @@ struct SaveFile_00000_0000_Data_TEST4 { /* D6C */ unk8 unk_D6C[0x08]; /* D74 */ unk16 unk_D74; - SaveFile_00000_0000_Data_TEST4() { + SaveFile_00000_0000_Data_D4C() { MI_CpuFill32(0, this->unk_D6C, sizeof(this->unk_D6C)); this->unk_D74 = 0; } @@ -166,7 +176,7 @@ struct SaveInfoData { /* D24 */ unk32 unk_D40; /* D24 */ unk32 unk_D44; /* D24 */ unk32 unk_D48; - /* D4C */ SaveFile_00000_0000_Data_TEST4 unk_D4C; + /* D4C */ SaveFile_00000_0000_Data_D4C unk_D4C; /* D78 */ unk32 unk_D78; /* D7C */ unk32 unk_D7C; /* D80 */ unk32 unk_D80; diff --git a/include/Save/SaveManager.hpp b/include/Save/SaveManager.hpp index dde08b7a..bc52e595 100644 --- a/include/Save/SaveManager.hpp +++ b/include/Save/SaveManager.hpp @@ -9,8 +9,6 @@ #include "global.h" #include "types.h" -//! TODO: kinda draft state for now - #define SAVE_DATA_SIZE (sizeof(SaveSlot) + sizeof(u8) * NUM_UNK_BLOCKS * SIZE_UNK_BLOCK) enum { diff --git a/include/System/Random.hpp b/include/System/Random.hpp index 4d7def70..2280f4f2 100644 --- a/include/System/Random.hpp +++ b/include/System/Random.hpp @@ -17,6 +17,52 @@ struct Random { return *(u64 *) this->mRandomValue; } + /** + * @brief Sets the seed's value from a u64 + */ + void SetRandomValue(u64 value) { + *(u64 *) this->mRandomValue = value; + } + + /** + * @brief Sets the seed's value from a u16 array + */ + void SetRandomValue(u16 *value) { + this->SetRandomValue(*(u64 *) value); + } + + /** + * @brief Setup the randomizer with a set seed as a u64 + */ + void Setup(u64 initial) { + this->SetRandomValue(initial); + this->SetFactorAddend(); + } + + /** + * @brief Setup the randomizer with a set seed as a u16 array + */ + void Setup(u16 *initial) { + this->SetRandomValue(initial); + this->SetFactorAddend(); + } + + /** + * @brief Setup the randomizer without any specific seed + */ + void Setup() { + this->SetRandomValue((u64) 0); + this->SetFactorAddend(); + } + + /** + * @brief Sets the factor and addend values + */ + void SetFactorAddend() { + this->mFactor = 0x5D588B656C078965; + this->mAddend = 0x00269EC3; + } + /** * @brief Updates the seed's value */ @@ -25,43 +71,24 @@ struct Random { } /** - * @brief Generates a random number as a u16 + * @brief Generates a random number as u32 */ - u16 Next16() { + u32 Next32(u32 factor) { this->UpdateRandomValue(); - return this->GetRandomValue() >> 48; + u64 randomValue = this->GetRandomValue(); + + if (factor == 0) { + return randomValue >> 32; + } + + return ((randomValue >> 32) * factor) >> 32; } /** - * @brief Generates a random number from 0 (inclusive) to `max` (exclusive) as a u32 + * @brief Generates a random number as u32 then convert it to a u16 */ - u32 Next32(u64 min, u64 max) { - this->UpdateRandomValue(); - return (((this->GetRandomValue() >> 32) * (max - min)) >> 32) + min; - } - - u16 ConditionalNext16(u32 value) { - this->UpdateRandomValue(); - - u64 result = this->GetRandomValue() >> 32; - - if (value != 0) { - result = (result * value) >> 32; - } - - return result; - } - - u32 ConditionalNext32(u32 value) { - this->UpdateRandomValue(); - - u32 result = this->GetRandomValue() >> 32; - - if (value != 0) { - return ((u64) result * value) >> 32; - } - - return result; + u16 Next16(u32 factor) { + return this->Next32(factor) >> 16; } void Init(); diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index 3e16cfaa..0c4466ba 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -7,8 +7,8 @@ #include "math.hpp" #include "profile.hpp" #include "types.h" -#include +#include #include #include @@ -839,20 +839,24 @@ public: class UnkSystem3 { public: - /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; + /* 00 */ void *mUnk_00; + /* 04 */ void *mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ UnkSystem3(const char *path, unk32 param2); + UnkSystem3(const char *path, unk32 param2, unk32 param3, unk32 param4); ~UnkSystem3(); + void func_02015410(const char *path, unk32 param2); void func_02015460(const char *param1, void *param2, unk32 param3); }; class UnkStruct2 { public: - /* 00 */ unk8 pad[0x10]; + /* 00 */ unk32 mUnk_00; + /* 04 */ const char *mUnk_04; + /* 08 */ STRUCT_PAD(0x08, 0x10); /* 10 */ UnkStruct2(const char *path, unk32 param2); @@ -1078,20 +1082,124 @@ struct UnkDataStruct1 { } }; +struct UnkDataStruct4_14_2; struct UnkDataStruct2 { - /* 00 */ void *unk_00; + /* 00 */ UnkDataStruct4_14_2 *unk_00; /* 04 */ UnkDataStruct2(unk32 param1); ~UnkDataStruct2(); }; +#define UnkDataStruct4_14_Unk_Max 20 +typedef u8 UnkArrayDataType1[UnkDataStruct4_14_Unk_Max][15]; +struct UnkDataStruct4_14 { + /* 00 */ unk8 mUnk_00; + /* 01 */ s8 mStationSceneIndex; + /* 02 */ s8 mUnk_02[3]; + /* 05 */ unk8 mUnk_05; + /* 06 */ u16 mUnk_06[3]; + /* 0C */ u8 mUnk_0C[3]; + /* 0F */ u8 mUnk_0F[3]; + /* 12 */ u8 mUnk_12; + /* 13 */ u8 mUnk_13; + /* 14 */ + + s32 func_ov024_020d1c3c(unk32 *param1, unk32 param2) const; + void func_ov024_020d1c84(); + bool func_ov024_020d1cc8(unk32 param1, unk32 param2) const; + bool func_ov024_020d1cf4(unk32 param1) const; + bool func_ov024_020d1d30(unk32 param1, u16 param2) const; + u8 func_ov024_020d1d78() const; + u8 func_ov024_020d1da0() const; + bool func_ov024_020d1dc8(unk32 param1, unk32 param2) const; + bool func_ov024_020d1df4(unk32 param1) const; + void func_ov024_020d1f60(u32 param1); + unk32 func_ov024_020d1f70() const; + bool func_ov024_020d1fa4(unk32 param1) const; + void func_ov024_020d1fe8(); + bool func_ov024_020d2030(unk32 param1, unk32 param2); + u8 func_ov024_020d208c(unk32 param1) const; + void func_ov024_020d2098(unk32 param1, unk32 param2); + unk32 func_ov024_020d20c0(unk32 param1, unk32 param2) const; + bool IsStationDungeon() const; + bool func_ov024_020d21d8() const; + bool func_ov024_020d223c() const; + bool func_ov024_020d2270(unk32 param1, unk32 param2) const; + unk32 func_ov024_020d22ac(unk32 param1) const; + bool func_ov024_020d2320(unk32 param1) const; + unk32 func_ov024_020d2348(unk32 param1) const; + bool func_ov024_020d23bc() const; + bool func_ov024_020d239c() const; + bool func_ov024_020d23ec() const; + bool func_ov024_020d243c() const; + bool func_ov024_020d2448() const; + bool func_ov024_020d2464(bool param1) const; + + static const u8 func_ov024_020d1a18(unk32 param1); + static unk32 func_ov024_020d1a28(u8 param1); + static u8 func_ov024_020d1a98(unk32 param1, unk32 param2); + static void func_ov024_020d1ab8(unk32 param1, unk32 *param2, unk32 *param3); + static s32 func_ov024_020d1b98(unk32 *param1, unk32 param2); + static s32 func_ov024_020d1be0(s32 param1); + static void func_ov024_020d1e20(unk16 *param1, unk32 param2); + static u8 func_ov024_020d1eac(const unk32 param1); +}; + +struct UnkDataStruct4_14_2 { + /* 000 */ UnkDataStruct4_14 mUnk_00[15]; + /* 12C */ +}; + +struct UnkStruct_SceneChange1; +struct UnkDataStruct4 { + /* 00 (vtable) */ + /* 04 */ u16 mUnk_04; + /* 06 */ u16 mUnk_06; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 mUnk_10; + /* 14 */ UnkDataStruct4_14_2 *mUnk_14[20]; + /* 64 */ UnkDataStruct4_14_2 *mUnk_64; + /* 68 */ VecFx32 mUnk_68[8]; + /* C8 */ VecFx32 *mUnk_C8; + /* CC */ u32 mSceneIndex; + /* D0 */ + + UnkDataStruct4(); + + // data_ov024_020d8260 + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual void vfunc_04(); + /* 08 */ + + void func_ov024_020d2518(); + void func_ov024_020d251c(); + void func_ov024_020d2520(UnkStruct_SceneChange1 *param1); + void func_ov024_020d2538(u32 sceneIndex, u8 roomIndex, UnkDataStruct4_14_2 *param3); + void func_ov024_020d2564(); + void func_ov024_020d258c(u32 sceneIndex, u8 roomIndex); + void func_ov024_020d26b0(unk32 param1); + void func_ov024_020d277c(); + void func_ov024_020d27cc(); + void func_ov024_020d280c(); + void func_ov024_020d29b0(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); + bool func_ov024_020d2a18(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); + void func_ov024_020d2b08(unk32 param1, unk32 param2, VecFx32 *param3) const; + void func_ov024_020d2c54(UnkArrayDataType1 param1, unk32 param2); + void func_ov024_020d2cfc(UnkArrayDataType1 param1, unk32 param2, unk32 param3); + s32 func_ov024_020d3068() const; + bool func_ov024_020d308c(fx32 *param1, fx32 *param2, unk16 param3) const; + void func_ov024_020d3100(); + void func_ov024_020d3140(); + + static void func_ov024_020d2b40(Vec2s *param1, const UnkDataStruct4 *thisx); + static void func_ov024_020d2bcc(Vec2s *param1, const UnkDataStruct4 *thisx); +}; + struct UnkDataStruct3 { /* 00 */ UnkDataStruct2 mUnk_00; - /* 04 */ unk32 mUnk_04; - /* 08 */ STRUCT_PAD(0x08, 0xCC); - /* CC */ unk32 mUnk_CC; - /* D0 */ unk32 mUnk_D0; + /* 04 */ UnkDataStruct4 mUnk_04; /* D4 */ UnkDataStruct3(unk32 param1) : @@ -1107,34 +1215,29 @@ struct InputInformations { class MapObjectProfile_Derived2_20_Base_18 { public: - /* 00 */ unk32 mUnk_00; + /* 00 */ const char *mUnk_00; /* 04 */ unk32 mUnk_04; /* 08 */ MapObjectProfile_Derived2_20_Base_18(); // func_02016620 -}; - -class MapObjectProfile_Derived2_20_Base_20 { -public: - /* 00 */ void *mUnk_00; - /* 04 */ void *mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0C */ - - MapObjectProfile_Derived2_20_Base_20(unk32 param1, unk32 param2, unk32 param3, unk32 param4, - unk32 param5); // func_020153fc + ~MapObjectProfile_Derived2_20_Base_18(); }; class MapObjectProfile_Derived2_20_Base_54 { public: - /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; + /* 00 (vtable) */ + /* 04 */ const char *mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ unk32 mUnk_0C; /* 10 */ MapObjectProfile_Derived2_20_Base_54(); ~MapObjectProfile_Derived2_20_Base_54(); + + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual void vfunc_04(); + /* 08 */ virtual void vfunc_08(unk32 param1); + /* 0C */ virtual void vfunc_0C(); }; class MapObjectProfile_Derived2_20_Base { @@ -1149,7 +1252,7 @@ public: /* 16 */ u8 mUnk_16; /* 17 */ u8 mUnk_17; /* 18 */ MapObjectProfile_Derived2_20_Base_18 mUnk_18; - /* 20 */ MapObjectProfile_Derived2_20_Base_20 mUnk_20; + /* 20 */ UnkSystem3 mUnk_20; /* 2C */ UnkFileSystem3 mUnk_2C; /* 3C */ UnkFileSystem5 mUnk_3C; /* 50 */ BMDSectionModel *mUnk_50; @@ -1165,12 +1268,28 @@ public: /* 08 */ void func_ov000_020586b4(unk32 param1, unk32 param2, unk32 param3, unk32 param4); - void func_ov000_020588f0(void); + void func_ov000_020588f0(void *param1, unk32 param2, unk32 param3, void *param4); void func_ov000_02058900(void); - void func_ov000_02058914(unk32 param1); + void func_ov000_02058914(void *param1); void func_ov000_020589e4(void); unk32 func_ov000_02058a24(); void unc_ov000_02058a58(void); unk32 func_ov000_02058a84(unk32 param1, const char *param2); void func_ov000_02058ab0(void); }; + +class MapObjectProfile_Derived5 : public MapObjectProfile_Derived2_20_Base { +public: + /* 00 (base) */ + /* 94 */ + + MapObjectProfile_Derived5(s32 param1); + MapObjectProfile_Derived5(u32 param1); + MapObjectProfile_Derived5(const char *directory, const char *archiveName, const char *param3, const char *param4, + unk32 param5, unk32 param6) : + MapObjectProfile_Derived2_20_Base(directory, archiveName, param3, param4, param5, param6) {} + + // data_ov024_020d8350 + /* 00 */ virtual ~MapObjectProfile_Derived5() override; + /* 08 */ +}; diff --git a/include/Unknown/UnkStruct_020d8698.hpp b/include/Unknown/UICounterManager.hpp similarity index 87% rename from include/Unknown/UnkStruct_020d8698.hpp rename to include/Unknown/UICounterManager.hpp index c7be4e5d..39f9d32a 100644 --- a/include/Unknown/UnkStruct_020d8698.hpp +++ b/include/Unknown/UICounterManager.hpp @@ -17,7 +17,7 @@ struct UnkStructIterator1 { typedef Iterator UnkIterator1; -class UnkStruct_020d8698_1C { +class UICounter_Health { public: /* 000 */ UnkIterator1 mUnk_000; /* 008 */ u8 mUnk_008; @@ -48,7 +48,7 @@ public: this->mUnk_000.Get(index).mUnk_00 = value; } - UnkStruct_020d8698_1C(); + UICounter_Health(); void func_ov024_020cd768(); void func_ov024_020cd774(); @@ -60,7 +60,7 @@ public: void func_ov024_020cdfd8(); u8 func_ov024_020ce218(); u8 func_ov024_020ce260(); - u32 func_ov024_020ce2a8(); + u32 GetMaxHearts(); }; class UnkStruct_020d8698_24_5C_Base { @@ -99,7 +99,7 @@ public: void func_ov000_02065b8c(); }; -class UnkStruct_020d8698_24 { +class UICounter_Rupees { public: /* 000 */ UnkStruct_ov019_020d24c8_28_258 mUnk_000; /* 018 */ UnkSystem2_UnkSubSystem9 mUnk_018; @@ -111,7 +111,7 @@ public: /* 106 */ Vec2s mUnk_106; /* 10C */ - UnkStruct_020d8698_24(); + UICounter_Rupees(); void func_ov024_020ce518(); void func_ov024_020ce570(); @@ -145,7 +145,7 @@ public: void func_ov000_02060e3c(unk32 param1, const char *filename, wchar_t *param3); }; -class UnkStruct_020d8698_2C { +class UICounter_Cargo { public: /* 000 */ unk32 mUnk_000; /* 004 */ UnkStruct_ov019_020d24c8_28_258 mUnk_004; @@ -170,7 +170,7 @@ public: /* 218 */ Vec2s mUnk_218; /* 21C */ - UnkStruct_020d8698_2C(); + UICounter_Cargo(); void func_ov024_020ced54(); void func_ov024_020ceda8(); @@ -188,7 +188,7 @@ public: void func_ov024_020cf5a8(bool param1); }; -class UnkStruct_020d8698_34 { +class UICounter_SmallKeys { public: /* 00 */ UnkStruct_ov019_020d24c8_28_258 mUnk_00; /* 18 */ UnkSubStruct19 mUnk_18; @@ -196,36 +196,37 @@ public: /* 92 */ unk16 mUnk_92; /* 94 */ - UnkStruct_020d8698_34(); + UICounter_SmallKeys(); void func_ov024_020cf698(); void func_ov024_020cf6e4(); void func_ov024_020cf724(); }; -class UnkStruct_020d8698_3C { +class UICounter_TearsOfLight { public: /* 00 */ UnkStruct_ov019_020d24c8_28_258 mUnk_00; /* 18 */ UnkStruct_ov019_020d24c8_28_258 mUnk_18; /* 30 */ - UnkStruct_020d8698_3C(); + UICounter_TearsOfLight(); void func_ov024_020cf82c(); void func_ov024_020cf888(); void func_ov024_020cf88c(); }; -class UnkStruct_020d8698_44 : public LinkList { +// this is the item button, it's technically a counter because of arrows and bombs +class UICounter_Items : public LinkList { public: /* 008 */ STRUCT_PAD(0x0C, 0x18B); /* 18B */ bool mUnk_18B; /* 18C */ STRUCT_PAD(0x18C, 0x52C); /* 52C */ - UnkStruct_020d8698_44(); // overlay 31 + UICounter_Items(); // overlay 31 - /* 00 */ virtual ~UnkStruct_020d8698_44(); + /* 00 */ virtual ~UICounter_Items(); /* 08 */ void func_ov031_0210eeb4(); @@ -233,25 +234,25 @@ public: void func_ov031_0210f814(); }; -class UnkStruct_020d8698 : public GameModeManagerBase_104, AutoInstance { +class UICounterManager : public GameModeManagerBase_104, AutoInstance { public: /* 000 (base) */ - /* 01C */ UnkStruct_020d8698_1C *mUnk_01C; + /* 01C */ UICounter_Health *mpHealth; /* 020 */ bool mUnk_020; - /* 024 */ UnkStruct_020d8698_24 *mUnk_024; + /* 024 */ UICounter_Rupees *mpRupees; /* 028 */ bool mUnk_028; - /* 02C */ UnkStruct_020d8698_2C *mUnk_02C; + /* 02C */ UICounter_Cargo *mpCargo; /* 030 */ bool mUnk_030; - /* 034 */ UnkStruct_020d8698_34 *mUnk_034; + /* 034 */ UICounter_SmallKeys *mpKeys; /* 038 */ bool mUnk_038; - /* 03C */ UnkStruct_020d8698_3C *mUnk_03C; + /* 03C */ UICounter_TearsOfLight *mpTears; /* 040 */ bool mUnk_040; - /* 044 */ UnkStruct_020d8698_44 *mUnk_044; + /* 044 */ UICounter_Items *mpItems; /* 048 */ bool mUnk_048; - UnkStruct_020d8698(); + UICounterManager(); - /* 00 */ virtual ~UnkStruct_020d8698(); + /* 00 */ virtual ~UICounterManager(); /* 08 */ virtual void vfunc_08(Input *pButtons, TouchControl *pTouchControl); /* 10 */ virtual void vfunc_10(unk8 *param1); @@ -273,7 +274,7 @@ public: bool func_ov024_020cd5c0(u16 param1); bool func_ov024_020cd604(); - static UnkStruct_020d8698 *Create(); + static UICounterManager *Create(); }; -extern UnkStruct_020d8698 *data_ov024_020d8698; +extern UICounterManager *gpUICounterManager; diff --git a/include/Unknown/UnkStruct_027e0478.hpp b/include/Unknown/UnkStruct_027e0478.hpp deleted file mode 100644 index 79e7f747..00000000 --- a/include/Unknown/UnkStruct_027e0478.hpp +++ /dev/null @@ -1,35 +0,0 @@ -#pragma once - -#include "Item/ItemManager.hpp" -#include "Player/Player.hpp" -#include "Player/TouchControl.hpp" -#include "global.h" -#include - -// incomplete -class UnkStruct_027e0478 { -public: - /* 000 */ void *mUnk_000; // set to -1 on land and to a pointer on train? - /* 004 */ void *mUnk_004; - /* 008 */ ItemManager *mpItemManager; - /* 00C */ Input mButtons; - /* 012 */ unk16 mUnk_012; - /* 014 */ TouchControl mTouchControl; - /* 036 */ STRUCT_PAD(0x36, 0xF0); - /* 0F0 */ unk32 mUnk_0F0; // seems to be the walking speed of link?? - /* 0F4 */ unk32 mUnk_0F4; - /* 0F8 */ unk32 mUnk_0F8; - /* 0FC */ unk32 mUnk_0FC; - /* 100 */ unk32 mUnk_100; - /* 104 */ unk8 mUnk_104; - /* 105 */ unk8 mUnk_105; // set to 0 on idle, set to 3 when pulling out an item - /* 106 */ unk8 mUnk_106; - /* 107 */ unk8 mUnk_107; - /* 108 */ void *mUnk_108; // vtable - /* 10C */ void *mUnk_10C; // linklist? - /* 110 */ void *mUnk_110; - /* 114 */ STRUCT_PAD(0x114, 0x154); - /* 154 */ PlayerActor mPlayer; -}; - -extern UnkStruct_027e0478 data_027e0478; diff --git a/include/Unknown/UnkStruct_027e0960.hpp b/include/Unknown/UnkStruct_027e0960.hpp new file mode 100644 index 00000000..8067529a --- /dev/null +++ b/include/Unknown/UnkStruct_027e0960.hpp @@ -0,0 +1,74 @@ +#pragma once + +#include "files.h" +#include "global.h" +#include "iterator.hpp" +#include "types.h" + +class UnkStruct_027e0960_TableEntry_04_Base { +public: + /* 00 (vtable) */ + /* 04 */ unk8 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 mUnk_10; + /* 14 */ + + UnkStruct_027e0960_TableEntry_04_Base(); + + // data_02043ff0 + /* 00 */ virtual ~UnkStruct_027e0960_TableEntry_04_Base(); + /* 08 */ virtual void vfunc_08(); + /* 0C */ virtual void vfunc_0C(VecFx32 *param1) = 0; + /* 10 */ virtual void vfunc_10() = 0; + /* 14 */ virtual void vfunc_14() = 0; + /* 18 */ virtual void vfunc_18() = 0; + /* 1C */ virtual void vfunc_1C() = 0; + /* 20 */ +}; + +class UnkStruct_027e0960_TableEntry_04 : public UnkStruct_027e0960_TableEntry_04_Base { +public: + /* 00 (base) */ + /* 14 */ unk32 mUnk_14; + /* 18 */ unk32 mUnk_18; + /* 1C */ unk32 mUnk_1C; + /* 20 */ unk16 mUnk_20; + /* 22 */ unk16 mUnk_22; // pad? + /* 24 */ + + // data_ov000_020b1bbc + /* 00 */ virtual ~UnkStruct_027e0960_TableEntry_04() override; + /* 08 */ virtual void vfunc_08() override; + /* 0C */ virtual void vfunc_0C(VecFx32 *param1) override; + /* 10 */ virtual void vfunc_10() override; + /* 14 */ virtual void vfunc_14() override; + /* 18 */ virtual void vfunc_18() override; + /* 1C */ virtual void vfunc_1C() override; +}; + +class UnkStruct_027e0960_TableEntry { +public: + /* 00 */ ZMBEntryRALB *pRALB; + /* 04 */ Iterator mTable; + /* 0C */ + + UnkStruct_027e0960_TableEntry(); + ~UnkStruct_027e0960_TableEntry(); + + bool func_ov000_02059ccc(u8 param1, u8 param2); +}; + +class UnkStruct_027e0960 { +public: + /* 00 */ Iterator mTable; + /* 08 */ + + UnkStruct_027e0960(); + ~UnkStruct_027e0960(); + + UnkStruct_027e0960_TableEntry *func_ov000_0205a390(u8 param1); + UnkStruct_027e0960_TableEntry *func_ov000_0205a3fc(VecFx32 param1, unk32 param4); +}; + +extern UnkStruct_027e0960 *data_027e0960; diff --git a/include/Unknown/UnkStruct_027e0998.hpp b/include/Unknown/UnkStruct_027e0998.hpp index 1e51e678..f0e1ecce 100644 --- a/include/Unknown/UnkStruct_027e0998.hpp +++ b/include/Unknown/UnkStruct_027e0998.hpp @@ -7,9 +7,7 @@ class UnkStruct_027e0998_Base { public: /* 00 (vtable) */ - /* 04 */ unk16 mUnk_04; - /* 06 */ STRUCT_PAD(0x06, 0x42); - /* 42 */ unk16 mUnk_42; + /* 04 */ char mUnk_04[64]; // path to current scene's mapXX.bin /* 44 */ unk32 mUnk_44; /* 48 */ unk16 mUnk_48; /* 4A */ unk16 mUnk_4A; // pad? @@ -25,6 +23,7 @@ public: void func_ov000_02061764(); void func_ov000_02061768(); void func_ov000_02061850(unk32 param1); + bool func_ov000_02061a48(VecFx32 *param1, Vec2s *param2, Vec2s *param3); unk32 func_ov000_02061a70(); static void SetInstance(UnkStruct_027e0998_Base *pInstance); diff --git a/include/Unknown/UnkStruct_027e09a0.hpp b/include/Unknown/UnkStruct_027e09a0.hpp index ed4c4ae4..15b5737f 100644 --- a/include/Unknown/UnkStruct_027e09a0.hpp +++ b/include/Unknown/UnkStruct_027e09a0.hpp @@ -81,20 +81,23 @@ struct UnkStruct_func_ov000_020702a8 { }; struct CourseRoomEntry { - u8 roomIndex; - u8 mapPaintIndex; - u8 unk_02; - u8 unk_03; + /* 00 */ u8 roomIndex; + /* 01 */ u8 mapPaintIndex; + /* 02 */ u8 unk_02; + /* 03 */ u8 unk_03; + /* 04 */ }; struct CourseEntry { /* 00 */ const char name[16]; /* 10 */ unk32 unk_10; - /* 14 */ unk8 mNumRooms; + /* 14 */ unk8 numRooms; /* 15 */ unk8 unk_15; - /* 16 */ unk8 unk_16; - /* 17 */ u8 mSaveCourseIndex; - /* 18 */ STRUCT_PAD(0x18, 0x1D); + /* 16 */ unk8 titleCardMsgIndex; + /* 17 */ u8 saveCourseIndex; + /* 18 */ STRUCT_PAD(0x18, 0x1B); + /* 1B */ u8 unk_1B; + /* 1C */ u8 unk_1C; /* 1D */ u8 unk_1D; /* 1E */ u8 unk_1E; /* 1F */ u8 unk_1F; @@ -113,6 +116,7 @@ public: UnkStruct_func_ov000_020702a8 *func_ov000_020702a8(unk32 param1); unk32 GetRoomEntryIndex(); CourseRoomEntry *GetRoomEntry(u32 sceneIndex, unk32 param2); + u32 GetSceneIndexFromName(const char *sceneName); bool func_ov000_02070378(u32 param1); }; diff --git a/include/Unknown/UnkStruct_027e09a4.hpp b/include/Unknown/UnkStruct_027e09a4.hpp index bd464a38..0e305f88 100644 --- a/include/Unknown/UnkStruct_027e09a4.hpp +++ b/include/Unknown/UnkStruct_027e09a4.hpp @@ -3,6 +3,7 @@ #include "Cutscene/Cutscene.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkStruct_0204a060.hpp" +#include "Unknown/UnkStruct_027e09a0.hpp" #include "global.h" #include "types.h" @@ -145,18 +146,6 @@ enum SceneIndex_ { /* 121 */ SceneIndex_Max = 0x79 }; -struct UnkStruct_func_01ffd400 { - /* 00 */ STRUCT_PAD(0x00, 0x10); - /* 10 */ unk32 mUnk_10; - /* 14 */ unk16 mUnk_14; - /* 16 */ s8 mUnk_16; - /* 17 */ unk8 mUnk_17; - /* 18 */ unk8 mUnk_18; - /* 19 */ unk8 mUnk_19; - /* 1A */ unk8 mUnk_1A; - /* 1B */ u8 mUnk_1B; -}; - struct UnkStruct_SceneChange1_Base { /* 00 */ unk32 mSceneIndex; /* 04 */ unk32 mUnk_04; @@ -274,7 +263,7 @@ public: bool UnkCheck2() const { bool result = true; - if (this->func_01ffd400()->mUnk_10 != 1 && this->func_01ffd400()->mUnk_10 != 3) { + if (this->GetCurrentCourseEntry()->unk_10 != 1 && this->GetCurrentCourseEntry()->unk_10 != 3) { result = false; } @@ -311,9 +300,12 @@ public: ~UnkStruct_027e09a4(); - bool func_01ffd3d8(); // is on train? - UnkStruct_func_01ffd400 *func_01ffd400() const; + // itcm + bool IsLand(); + bool IsTrain(); + CourseEntry *GetCurrentCourseEntry() const; + // overlay 0 unk8 func_ov000_02070bd0(unk32 csIndex, unk32 param2); UnkStruct_SceneChange1 *func_ov000_02070560(); void func_ov000_020707a8(void *param1); @@ -329,6 +321,7 @@ public: bool func_ov000_0207056c(); void func_ov000_020705e8(SaveFile *param1, unk32 param2); + // overlay 17 void func_ov017_020bb994(void *param1); void func_ov017_020bb994(unk32 param1); void func_ov017_020bb994(void *, void *); diff --git a/include/Unknown/UnkStruct_027e09bc.hpp b/include/Unknown/UnkStruct_027e09bc.hpp index 00e56d5c..0b63c35d 100644 --- a/include/Unknown/UnkStruct_027e09bc.hpp +++ b/include/Unknown/UnkStruct_027e09bc.hpp @@ -1,9 +1,13 @@ #pragma once +#include "global.h" #include "types.h" -class UnkStruct_027e09bc_0c { +class UnkStruct_027e09bc_0C { public: + /* 00 */ STRUCT_PAD(0x00, 0x34); + /* 34 */ VecFx32 mUnk_34; + void func_ov000_02078230(unk32 param1); bool func_ov000_0207834c(VecFx32 *param1, unk32 param2, unk32 param3); bool func_ov000_02078764(VecFx32 *param1, void *param2, unk32 param3); @@ -12,9 +16,12 @@ public: class UnkStruct_027e09bc { public: /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; + /* 04 */ UnkStruct_027e09bc_0C *mUnk_04; /* 08 */ unk32 mUnk_08; - /* 0C */ UnkStruct_027e09bc_0c *mUnk_0C; + /* 0C */ UnkStruct_027e09bc_0C *mUnk_0C; + + UnkStruct_027e09bc(); + ~UnkStruct_027e09bc(); }; extern UnkStruct_027e09bc *data_027e09bc; diff --git a/include/Unknown/UnkStruct_027e0cd8.hpp b/include/Unknown/UnkStruct_027e0cd8.hpp index d835d135..1cc1c523 100644 --- a/include/Unknown/UnkStruct_027e0cd8.hpp +++ b/include/Unknown/UnkStruct_027e0cd8.hpp @@ -102,7 +102,7 @@ public: void func_ov000_020801b0(Vec2b *param1, unk32 param2, unk32 param3); void func_ov000_0208053c(u16 param1); void func_ov000_020803ec(u16 param1); - unk32 func_ov000_020802ec(u16 param1, VecFx32 *param2); + bool func_ov000_020802ec(u16 param1, VecFx32 *param2); VecFx32 *func_ov001_020b8a5c(unk32 spawnIndex, unk32 param1); }; @@ -143,7 +143,7 @@ public: /* 4C */ bool func_ov000_02081e30(unk32 param1, unk32 param2); - void func_ov000_02081d7c(unk32 param1, unk32 param2, unk32 param3); + void func_ov000_02081d7c(unk32 flagValue, unk32 param2, bool doSet); void func_ov000_02081ecc(unk16 param1, unk32 param2); void func_ov000_02081eec(unk16 param1, unk32 param2, unk32 param3); bool func_ov000_02081f3c(unk16 param1, unk32 param2); diff --git a/include/Unknown/UnkStruct_027e0ce0.hpp b/include/Unknown/UnkStruct_027e0ce0.hpp index 0c5d765b..f8e43ae4 100644 --- a/include/Unknown/UnkStruct_027e0ce0.hpp +++ b/include/Unknown/UnkStruct_027e0ce0.hpp @@ -4,51 +4,361 @@ #include "types.h" #include "Item/ItemManager.hpp" +#include "LinkList.hpp" +#include "Player/Player.hpp" +#include "Player/TouchControl.hpp" +#include "Save/SaveManager.hpp" #include "System/SysNew.hpp" +#include "input.hpp" + +#include class UnkStruct_027e0ce0_34 { public: - /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0C */ unk32 mUnk_0C; - /* 10 */ unk32 mUnk_10; - /* 14 */ unk32 mUnk_14; - /* 18 */ unk32 mUnk_18; - /* 1C */ unk32 mUnk_1C; + /* 00 */ unk32 mUnk_00[4]; + /* 10 */ unk32 mUnk_10[4]; /* 20 */ unk32 mUnk_20; /* 24 */ unk32 mUnk_24; /* 28 */ unk32 mUnk_28; - /* 2C */ unk32 mUnk_2C; - /* 30 */ + /* 2C */ s32 mUnk_2C; + /* 30 */ u32 mSpiritTrackFlags; + /* 34 */ unk32 mUnk_34; + /* 38 */ u32 mTrackFlags[3]; + /* 44 */ + // overlay 8 void func_ov008_020b6a50(); + // overlay 24 + void func_ov024_020d3c60(SaveFile_00000_0000_Data_D8 *param1); + unk32 func_ov024_020d3cf4(unk32 param1); + unk32 func_ov024_020d3d20(); + void func_ov024_020d3d80(unk32 param1); void func_ov024_020d3d98(unk32 param1, unk32 param2); - void func_ov024_020d3ee8(unk32 param1, u16 param2, unk32 param3); - unk32 func_ov024_020d3dcc(); + bool func_ov024_020d3da8(unk32 param1, unk32 param2); + u32 func_ov024_020d3dc0(unk32 param1, unk32 param2); + bool func_ov024_020d3dcc(); + unk32 func_ov024_020d3dec(unk32 param1); + unk32 func_ov024_020d3e0c(unk32 param1); + void func_ov024_020d3e30(unk32 param1, unk32 param2); + void *func_ov024_020d3e68(unk32 param1); + void SetTrackFlag(s32 flagPos, u16 flagValue, bool doSet); + bool func_ov024_020d3f4c(s8 param1, u16 param2); + void func_ov024_020d3f8c(); + void func_ov024_020d3fc8(); + void func_ov024_020d4008(unk32 param1); + void func_ov024_020d404c(); + void func_ov024_020d4098(s32 *param1, s32 *param2); + static s8 func_ov024_020d3c54(unk32 param1); + + // overlay 110 void func_ov110_02185d3c(ItemId itemId); }; +class UnkStruct_027e0ce0_38_Base { +public: + /* 00 (vtable) */ + /* 04 */ void *mUnk_04; + /* 08 */ void *mUnk_08; + /* 0C */ unk32 mUnk_0C; + /* 10 */ + + UnkStruct_027e0ce0_38_Base() { + this->mUnk_04 = NULL; + this->mUnk_08 = NULL; + this->mUnk_0C = 0; + } + + // data_ov000_020b2838 + /* 00 */ virtual ~UnkStruct_027e0ce0_38_Base(); + /* 08 */ virtual void vfunc_08(); + /* 0C */ virtual void vfunc_0C(); + /* 10 */ virtual void vfunc_10(); + /* 14 */ +}; + class UnkStruct_027e0ce0_38_10 { public: + /* 00 */ unk32 mUnk_00; + /* 04 */ unk16 mUnk_04; + /* 06 */ unk16 mUnk_06; + /* 08 */ unk16 mUnk_08; + /* 0A */ unk16 mUnk_0A; + /* 0C */ unk32 mUnk_0C; + /* 10 */ unk32 mUnk_10; + /* 14 */ TouchControl mUnk_14; + /* 38 */ unk32 mUnk_38; + /* 3C */ unk8 mUnk_3C; + /* 3D */ unk8 mUnk_3D; + /* 3E */ unk16 mUnk_3E; + /* 40 */ unk16 mUnk_40; + /* 42 */ Input mUnk_42; + /* 48 */ TouchControl mUnk_48; + /* 6A */ Input mUnk_6A; + /* 70 */ + + UnkStruct_027e0ce0_38_10(); + void func_ov026_020f4870(); }; +class UnkStruct_027e0ce0_38_58 { +public: + /* 000 */ STRUCT_PAD(0x00, 0x3D4); + /* 3D4 */ + + UnkStruct_027e0ce0_38_58(); +}; + +class UnkStruct_027e0ce0_38_5C { +public: + /* 000 */ STRUCT_PAD(0x00, 0x1A4); + /* 1A4 */ + + UnkStruct_027e0ce0_38_5C(); +}; + +class UnkStruct_027e0ce0_38_60 { +public: + /* 00 */ STRUCT_PAD(0x00, 0xD8); + /* D8 */ + + UnkStruct_027e0ce0_38_60(); +}; + class UnkStruct_027e0ce0_38_158 { public: + /* 000 */ STRUCT_PAD(0x00, 0x45C); + /* 45C */ + + UnkStruct_027e0ce0_38_158(); + void func_ov026_020dc2d0(); }; -class UnkStruct_027e0ce0_38 { +class UnkStruct_027e0ce0_38_174 { public: - /* 000 */ STRUCT_PAD(0x00, 0x10); + /* 00 */ STRUCT_PAD(0x00, 0x28); + /* 28 */ + + UnkStruct_027e0ce0_38_174(); +}; + +class UnkStruct_027e0ce0_38_19C { +public: + /* 00 */ STRUCT_PAD(0x00, 0x2C); + /* 2C */ + + UnkStruct_027e0ce0_38_19C(); +}; + +class UnkStruct_027e0ce0_38_1C8 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x34); + /* 34 */ + + UnkStruct_027e0ce0_38_1C8(); +}; + +// train player stuff +class UnkStruct_027e0ce0_38 : public UnkStruct_027e0ce0_38_Base { +public: + /* 000 (base) */ /* 010 */ UnkStruct_027e0ce0_38_10 *mUnk_010; - /* 014 */ STRUCT_PAD(0x14, 0x158); + /* 014 */ Input mUnk_014; + /* 01C */ VecFx32 mPos; + /* 028 */ VecFx32 mPrevPos; + /* 034 */ VecFx32 mVel; + /* 040 */ VecFx32 mAccel; + /* 04C */ unk32 mUnk_04C; + /* 050 */ unk32 mUnk_050; + /* 054 */ unk16 mUnk_054; + /* 056 */ unk16 mUnk_056; + /* 058 */ UnkStruct_027e0ce0_38_58 *mUnk_058; + /* 05C */ UnkStruct_027e0ce0_38_5C *mUnk_05C; + /* 060 */ UnkStruct_027e0ce0_38_60 mUnk_060; + /* 138 */ unk32 mUnk_138; + /* 13C */ unk32 mUnk_13C; + /* 140 */ unk32 mUnk_140; + /* 144 */ unk16 mUnk_144; + /* 146 */ unk8 mUnk_146; + /* 147 */ unk8 mUnk_147; + /* 148 */ unk8 mUnk_148; + /* 149 */ unk8 mUnk_149; + /* 14A */ unk8 mUnk_14A; + /* 14B */ unk8 mUnk_14B; + /* 14C */ unk8 mUnk_14C; + /* 150 */ unk32 mUnk_150; + /* 154 */ unk32 mUnk_154; /* 158 */ UnkStruct_027e0ce0_38_158 *mUnk_158; + /* 15C */ STRUCT_PAD(0x15C, 0x170); + /* 170 */ unk32 mUnk_170; + /* 174 */ UnkStruct_027e0ce0_38_174 mUnk_174; + /* 19C */ UnkStruct_027e0ce0_38_19C mUnk_19C; + /* 1C8 */ UnkStruct_027e0ce0_38_1C8 mUnk_1C8; + /* 1FC */ UnkSubStruct19 mUnk_1FC; + /* 274 */ UnkStruct_ov019_020d24c8_28_258_00 mUnk_274; + /* 280 */ + + UnkStruct_027e0ce0_38(); // data_ov026_0213562c + /* 00 */ virtual ~UnkStruct_027e0ce0_38() override; + /* 0C */ virtual void vfunc_0C() override; +}; + +class UnkStruct_027e0ce0_40_Base_14 { +public: + /* 00 */ TouchControl mTouchControl; + /* 22 */ STRUCT_PAD(0x22, 0x60); + /* 60 */ + + UnkStruct_027e0ce0_40_Base_14(); +}; + +class UnkStruct_027e0ce0_40_Base_74 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x5C); + /* 5C */ + + UnkStruct_027e0ce0_40_Base_74(); +}; + +class UnkStruct_027e0ce0_40_Base_78 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x04); + /* 04 */ + + UnkStruct_027e0ce0_40_Base_78(); +}; + +class UnkStruct_027e0ce0_40_Base_7C { +public: + /* 00 */ STRUCT_PAD(0x00, 0x18); + /* 18 */ + + UnkStruct_027e0ce0_40_Base_7C(); +}; + +class UnkStruct_027e0ce0_40_Base_94 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x5C); + /* 5C */ unk32 mUnk_5C; // seems to be the walking speed of link?? + /* 60 */ unk32 mUnk_60; + /* 64 */ unk32 mUnk_64; + /* 68 */ unk32 mUnk_68; + /* 6C */ unk32 mUnk_6C; + /* 70 */ + + UnkStruct_027e0ce0_40_Base_94(); +}; + +class UnkStruct_027e0ce0_40_Base { +public: + /* 000 */ unk32 mUnk_000; + /* 004 */ void *mUnk_004; + /* 008 */ ItemManager *mpItemManager; + /* 00C */ Input mButtons; + /* 012 */ unk16 mUnk_012; + /* 014 */ UnkStruct_027e0ce0_40_Base_14 mUnk_014; + /* 074 */ UnkStruct_027e0ce0_40_Base_74 *mUnk_074; + /* 078 */ UnkStruct_027e0ce0_40_Base_78 *mUnk_078; + /* 07C */ UnkStruct_027e0ce0_40_Base_7C mUnk_07C; + /* 094 */ UnkStruct_027e0ce0_40_Base_94 mUnk_094; + /* 104 */ unk16 mUnk_104; // set to 0 on idle, set to 3 when pulling out an item + /* 106 */ unk8 mUnk_106; + /* 107 */ unk8 mUnk_107; + /* 108 */ + + UnkStruct_027e0ce0_40_Base(unk32 param1, void *param2, ItemManager *param3); +}; + +class UnkStruct_027e0ce0_40_108_Base : public LinkList { +public: + /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ + + UnkStruct_027e0ce0_40_108_Base() { + this->SetPrev(NULL); + } + + // data_ov101_02183908 + /* 00 */ virtual void vfunc_00() = 0; +}; + +class UnkStruct_027e0ce0_40_108 : public UnkStruct_027e0ce0_40_108_Base { +public: + /* 00 (base) */ + /* 0C */ STRUCT_PAD(0x0C, 0x40); + /* 40 */ + + UnkStruct_027e0ce0_40_108() {} + + // data_ov031_02112b60 + /* 00 */ virtual void vfunc_00() override; +}; + +class UnkStruct_027e0ce0_40_14C { + /* 00 */ STRUCT_PAD(0x00, 0x94); + /* 94 */ + + UnkStruct_027e0ce0_40_14C(); +}; + +class UnkStruct_027e0ce0_40_150 { + /* 00 */ STRUCT_PAD(0x00, 0x0C); + /* 0C */ + + UnkStruct_027e0ce0_40_150(); +}; + +class UnkStruct_027e0ce0_40_328 { + /* 000 */ STRUCT_PAD(0x00, 0x154); + /* 154 */ + + UnkStruct_027e0ce0_40_328(); +}; + +// land player stuff +class UnkStruct_027e0ce0_40 : public UnkStruct_027e0ce0_40_Base { +public: + /* 000 (base) */ + /* 108 */ UnkStruct_027e0ce0_40_108 mUnk_108; + /* 148 */ void *mUnk_148; + /* 14C */ UnkStruct_027e0ce0_40_14C *mUnk_14C; + /* 150 */ UnkStruct_027e0ce0_40_150 *mUnk_150; + /* 154 */ PlayerActor mPlayer; + /* 328 */ UnkStruct_027e0ce0_40_328 *mUnk_328; + /* 32C */ PlayerActor *mpPlayer; // set to mPlayer + /* 330 */ UnkStruct_027e0ce0_40_328 *mUnk_330; // set to mUnk_328 + /* 334 */ ItemFlag mEquippedItem; + /* 338 */ bool mIsSceneTowerInteriorStairs; + /* 339 */ bool mIsSceneTowerExteriorStairs; + /* 33A */ bool mIsSceneBossByrne; + /* 33B */ unk8 mUnk_33B; + /* 33C */ + + // param2 is UnkStruct_027e0ce0::mUnk_20 + // param3 is UnkStruct_027e0ce0::mUnk_04 + // param4 is UnkStruct_027e0ce0::mUnk_28 + UnkStruct_027e0ce0_40(unk32 param1, void *param2, void *param3, ItemManager *param4); +}; + +union UnkStruct_027e0478 { + UnkStruct_027e0ce0_38 train; + UnkStruct_027e0ce0_40 land; +}; + +extern UnkStruct_027e0478 data_027e0478; + +class UnkStruct_027e0ce0_3C { +public: + /* 00 */ STRUCT_PAD(0x00, 0x98); + /* 98 */ + + UnkStruct_027e0ce0_3C(); }; // PlayerManager? @@ -72,8 +382,8 @@ public: /* 30 */ unk32 *mUnk_30; // ? /* 34 */ UnkStruct_027e0ce0_34 *mUnk_34; /* 38 */ UnkStruct_027e0ce0_38 *mUnk_38; // pointer to data_027e0478 when on the train - /* 3C */ unk32 mUnk_3C; - /* 40 */ unk32 *mUnk_40; // pointer to data_027e0478 when not on the train + /* 3C */ UnkStruct_027e0ce0_3C *mUnk_3C; // cutscene related + /* 40 */ UnkStruct_027e0ce0_40 *mUnk_40; // pointer to data_027e0478 when not on the train /* 44 */ VecFx32 *func_01fff148(unk32 param1); diff --git a/include/Unknown/UnkStruct_027e0cf8.hpp b/include/Unknown/UnkStruct_027e0cf8.hpp index fbb618b6..e301edaa 100644 --- a/include/Unknown/UnkStruct_027e0cf8.hpp +++ b/include/Unknown/UnkStruct_027e0cf8.hpp @@ -1,27 +1,52 @@ #pragma once +#include "MainGame/AdventureMode.hpp" +#include "Save/AdventureFlags.hpp" +#include "System/Random.hpp" #include "Unknown/Common.hpp" #include "global.h" #include "types.h" -struct UnkStruct_027e0cf8_00_18 { +struct UnkStruct_027e0cf8_00_18_00 { /* 00 */ UnkSubStruct19 mUnk_00; /* 78 */ unk32 mUnk_78; /* 7C */ unk32 mUnk_7C; /* 80 */ unk32 mUnk_80; + /* 84 */ +}; + +struct UnkStruct_027e0cf8_00_18 { + /* 0000 */ UnkStruct_027e0cf8_00_18_00 mUnk_00[48]; + /* 18C0 */ Vec2p mUnk_18C0; + /* 18C8 */ STRUCT_PAD(0x18C8, 0x2220); + /* 2220 */ }; class UnkStruct_027e0cf8_00 { public: - /* 0000 */ STRUCT_PAD(0x00, 0x18); - /* 0018 */ UnkStruct_027e0cf8_00_18 mUnk_0018[48]; - /* 18D8 */ STRUCT_PAD(0x18D8, 0x2258); + /* 0000 */ Random mRandom; + /* 0018 */ UnkStruct_027e0cf8_00_18 mUnk_0018; + /* 2238 */ Vec2p *mUnk_2238; + /* 223C */ unk32 mUnk_223C; + /* 2240 */ Vec2s mUnk_2240; + /* 2244 */ unk32 mUnk_2244; + /* 2248 */ unk32 mUnk_2248; + /* 224C */ unk32 mUnk_224C; + /* 2250 */ unk32 mUnk_2250; + /* 2254 */ unk32 mUnk_2254; /* 2258 */ UnkStruct_027e0cf8_00(); ~UnkStruct_027e0cf8_00(); - void func_ov024_020cfb7c(void *param1, Vec2s *param2, unk32 param3, u16 param4, unk32 param5, unk32 param6); + void func_ov024_020cf9d4(UnkStruct_027e0cf8_00_18_00 *param1); + void func_ov024_020cfb7c(UnkDataStruct4 *param1, Vec2s *param2, unk32 param3, u16 param4, unk32 param5, unk32 param6); + + static s32 func_ov024_020cfd54(s32 param1, s32 stationSceneIdx, s32 param3, s32 param4); + static bool func_ov024_020cfe24(s16 stationSceneIdx); + static s32 func_ov024_020cfe6c(s32 param1, s32 param2, s32 param3, s32 param4); + static s16 func_ov024_020cfe94(s32 param1); + static bool func_ov024_020cfed0(s16 sceneIndex); }; class UnkStruct_027e0cf8_04 { @@ -33,38 +58,123 @@ public: void func_ov026_020dc300(); }; +typedef Vec2s UnkArrayDataType2[7]; +// related to the rail positions (only on the minimap?) +class UnkStruct_027e0cf8_08_00 : public AdventureModeManager_1B8_Base { +public: + /* 000 (base) */ + /* 024 */ UnkArrayDataType2 mUnk_024; + /* 040 */ UnkArrayDataType2 mUnk_040; + /* 05C */ UnkArrayDataType2 mUnk_05C; + /* 078 */ UnkArrayDataType2 mUnk_078; + /* 094 */ UnkArrayDataType2 mUnk_094; + /* 0B0 */ UnkArrayDataType2 mUnk_0B0; + /* 0CC */ UnkArrayDataType2 mUnk_0CC; + /* 0E8 */ UnkArrayDataType2 mUnk_0E8; + /* 104 */ UnkArrayDataType2 mUnk_104; + /* 120 */ UnkArrayDataType2 mUnk_120; + /* 13C */ UnkArrayDataType2 mUnk_13C; + /* 158 */ UnkArrayDataType2 mUnk_158; + /* 174 */ Vec2s mUnk_174; + /* 178 */ Vec2s *mUnk_178[4][4]; + /* 1B8 */ + + UnkStruct_027e0cf8_08_00(u8 bgType); + ~UnkStruct_027e0cf8_08_00(); + + // overlay 1 + void func_ov001_020bfb20(); + + // overlay 24 + void func_ov024_020d3adc(Vec2s *param1, unk32 param2, unk32 param3, u8 param4, bool param5, u8 param6); + unk32 func_ov024_020d3bfc(UnkArrayDataType2 param1, unk32 param2, unk32 param3, bool param4); + + static bool func_ov024_020d3900(Vec2s *param1, fx32 *param2, fx32 *param3, unk32 param4, unk32 param5); + static bool func_ov024_020d3914(Vec2s *param1, Vec2s *param2, Vec2s *param3); + static bool func_ov024_020d3970(Vec2s *param1, fx32 *param2, fx32 *param3, unk32 param4, unk32 param5); + static bool func_ov024_020d39fc(Vec2s *param1, unk32 param2, unk32 param3); + static bool func_ov024_020d3a34(Vec2s *param1, unk32 param2, unk32 param3); + static void func_ov024_020d3a60(Vec2s *param1, Vec2s *param2, unk32 param3, unk32 param4); + static bool func_ov024_020d3a8c(Vec2s *param1); +}; + class UnkStruct_027e0cf8_08 { public: - /* 000 */ STRUCT_PAD(0x00, 0x26C); + /* 000 */ UnkStruct_027e0cf8_08_00 *mUnk_000; + /* 004 */ unk32 mUnk_004; + /* 008 */ unk32 mUnk_008; + /* 00C */ unk32 mUnk_00C; + /* 010 */ UnkArrayDataType1 mUnk_010; + /* 13C */ UnkArrayDataType1 mUnk_13C; + /* 268 */ u16 mUnk_268; + /* 26A */ u8 mUnk_26A; + /* 26B */ unk8 mUnk_26B; + /* 26C */ UnkStruct_027e0cf8_08(); ~UnkStruct_027e0cf8_08(); + void func_ov024_020d32b4(unk8 *param1); void func_ov024_020d32d8(); void func_ov024_020d32e8(Vec2s *param1); - void func_ov024_020d3324(void *param1); - void func_ov024_020d3348(void *param1, unk32 param2, u16 param3, unk32 param4, unk32 param5); + void func_ov024_020d3324(UnkDataStruct4 *param1); + void func_ov024_020d3348(UnkDataStruct4 *param1, unk32 param2, u16 param3, unk32 param4, unk32 param5); + void func_ov024_020d336c(UnkDataStruct4 *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); void func_ov024_020d340c(); - void func_ov024_020d341c(unk32 param1); + void func_ov024_020d341c(bool param1); + void func_ov024_020d3428(const UnkDataStruct4 *param1, unk32 param2, u8 param3); + void func_ov024_020d34a0(UnkArrayDataType1 param1, u8 param2); + void func_ov024_020d351c(unk32 param1, unk32 param2, unk32 *param3, unk32 param4, u8 param5); + + static u8 func_ov024_020d3158(SceneIndex sceneIndex); +}; + +class UnkStruct_027e0cf8_0C_00 { +public: + /* 00 */ UnkStruct_ov019_020d24c8_28_258_00 mUnk_00; + /* 08 */ unk32 mUnk_08; + /* 0C */ Vec2p mUnk_0C; + /* 14 */ unk16 mUnk_14; + /* 16 */ unk16 mUnk_16; + /* 18 */ bool mUnk_18; + /* 19 */ bool mUnk_19; + /* 1A */ bool mUnk_1A; + /* 1B */ bool mUnk_1B; + /* 1C */ + + UnkStruct_027e0cf8_0C_00() {} + + void func_ov024_020cff1c(); }; class UnkStruct_027e0cf8_0C { public: - /* 000 */ STRUCT_PAD(0x00, 0x170); + /* 000 */ UnkStruct_027e0cf8_0C_00 mUnk_000[12]; + /* 150 */ UnkStruct_ov019_020d24c8_28_258_00 mUnk_150; + /* 158 */ unk32 mUnk_158; + /* 15C */ UnkStruct_ov019_020d24c8_28_258_00 mUnk_15C; + /* 164 */ unk32 mUnk_164; + /* 168 */ Vec2s mUnk_168; + /* 16C */ unk32 mUnk_16C; + /* 170 */ UnkStruct_027e0cf8_0C(); ~UnkStruct_027e0cf8_0C(); - void func_ov024_020cff8c(void *param1, Vec2s *param2); + void func_ov024_020cff8c(UnkDataStruct4 *param1, Vec2s *param2); void func_ov024_020d0004(); - void func_ov024_020d02e0(); - void func_ov024_020d0340(); + void func_ov024_020d002c(const UnkDataStruct4 *param1); + void func_ov024_020d01c0(const UnkDataStruct4 *param1); + bool func_ov024_020d02e0(fx32 *pX, fx32 *pZ, s32 param3); + bool func_ov024_020d0340(Vec2s *param1, unk32 param2); void func_ov024_020d03f8(Vec2s *param1); - void func_ov024_020d041c(Vec2s *param1); - void func_ov024_020d05d0(unk32 param1, unk32 param2); + s32 func_ov024_020d041c(Vec2s *param1); + void func_ov024_020d05d0(unk32 param1, bool param2); + + static bool func_ov024_020d0510(s16 param1); }; -class UnkStruct_027e0cf8 : AutoInstance { +class UnkStruct_027e0cf8 : public AutoInstance { public: /* 00 */ UnkStruct_027e0cf8_00 *mUnk_00; /* 04 */ UnkStruct_027e0cf8_04 *mUnk_04; @@ -90,17 +200,17 @@ public: void func_ov017_020c397c(); void func_ov017_020c39d4(); - void func_ov024_020c755c(void *param1); - void func_ov024_020c75d0(void *param1, unk32 param2, u16 param3); + void func_ov024_020c755c(UnkDataStruct4 *param1); + void func_ov024_020c75d0(UnkDataStruct4 *param1, unk32 param2, u16 param3); void func_ov024_020c7724(); void func_ov024_020c7750(); void func_ov024_020c7780(); - void func_ov024_020c77b0(unk32 param1); - void func_ov024_020c77c0(); - void func_ov024_020c77d0(); + void func_ov024_020c77b0(bool param1); + bool func_ov024_020c77c0(fx32 *pX, fx32 *pZ, s32 param3); + bool func_ov024_020c77d0(Vec2s *param1, unk32 param2); void func_ov024_020c77e0(Vec2s *param1); void func_ov024_020c7804(Vec2s *param1); - void func_ov024_020c7828(unk32 param1); + void func_ov024_020c7828(ItemId itemId); void func_ov024_020c7878(unk32 param1, u16 param2); void func_ov024_020c7884(); void func_ov024_020c7898(); @@ -112,4 +222,28 @@ public: static UnkStruct_027e0cf8 *Create(); }; +struct UnkStruct_ov024_020d8098 { + /* 00 */ s16 mUnk_00; + /* 02 */ s16 mStationSceneIdx; + /* 04 */ Vec2sb mUnk_04; + /* 06 */ s16 mUnk_06; + /* 08 */ u16 mUnk_08; + /* 0A */ bool mUnk_0A; + /* 0B */ bool mUnk_0B; + /* 0C */ +}; + +struct UnkStruct_ov024_020d7454 { + /* 00 */ s16 mSceneIndex; + /* 02 */ unk16 mUnk_02; + /* 04 */ u16 mUnk_04; + /* 06 */ AdventureFlag_Half mAdvFlag; + /* 08 */ bool mUnk_08; + /* 09 */ bool mUnk_09; + /* 0A */ bool mUnk_0A; + /* 0B */ unk8 mUnk_0B; + /* 0C */ unk16 mUnk_0C; + /* 0E */ +}; + extern UnkStruct_027e0cf8 *data_027e0cf8; diff --git a/include/Unknown/UnkStruct_027e0d00.hpp b/include/Unknown/UnkStruct_027e0d00.hpp index a8068c9e..fe674e3f 100644 --- a/include/Unknown/UnkStruct_027e0d00.hpp +++ b/include/Unknown/UnkStruct_027e0d00.hpp @@ -1,19 +1,122 @@ #pragma once +#include "Unknown/Common.hpp" #include "global.h" #include "types.h" +#include + +#define MAX_TRAIN_PARTS 4 +#define MAX_TRAIN_SETS 8 + +struct UnkStruct_027e0d00_00 { + /* 00 */ STRUCT_PAD(0x00, 0x1B); + /* 1B */ u8 mUnk_1B; + /* 1C */ unk32 mUnk_1C; + /* 20 */ unk32 mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ +}; + +struct UnkStruct_027e0d00_10 { + /* 0000 */ STRUCT_PAD(0x00, 0x44C0); + /* 44C0 */ +}; + +class UnkStruct_027e0d00_20 : public MapObjectProfile_Derived2_20_Base { +public: + /* 00 (base) */ + /* 94 */ unk32 mUnk_94; + /* 98 */ unk32 mUnk_98; + /* 9C */ MapObjectProfile_Derived2_20_Base_18 mUnk_9C; + /* A4 */ UnkSystem3 mUnk_A4; + /* B0 */ unk32 mUnk_B0; + /* B4 */ unk32 mUnk_B4; + /* B8 */ + + UnkStruct_027e0d00_20(unk32 param1, unk32 param2); + + /* 00 */ virtual ~UnkStruct_027e0d00_20() override {} + + void func_ov024_020d4fa0(unk32 param1, unk32 param2); + void func_ov024_020d5174(); + + static void func_ov024_020d4e9c(wchar_t *param1, unk32 param2, bool param3); + static void func_ov024_020d4edc(wchar_t *param1, wchar_t *param2, unk32 param3); +}; + class UnkStruct_027e0d00 : public AutoInstance { public: - /* 00 */ unk32 mUnk_00; + /* 000 */ UnkStruct_027e0d00_00 *mUnk_000[MAX_TRAIN_PARTS]; + /* 010 */ UnkStruct_027e0d00_10 *mUnk_010[MAX_TRAIN_PARTS]; + /* 020 */ UnkStruct_027e0d00_20 *mUnk_020[MAX_TRAIN_PARTS][MAX_TRAIN_SETS]; + /* 0A0 */ unk32 mUnk_0A0[MAX_TRAIN_PARTS]; + /* 0B0 */ MapObjectProfile_Derived5 *mUnk_0B0[12]; // train parts models + /* 0E0 */ unk32 mUnk_0E0; + /* 0E4 */ UnkStruct_027e0d00_20 *mUnk_0E4[MAX_TRAIN_PARTS]; + /* 0F4 */ MapObjectProfile_Derived5 *mUnk_0F4; // cargo models + /* 0F8 */ UnkStruct_027e0d00_00 *mUnk_0F8; + /* 0FC */ void *mUnk_0FC; + /* 100 */ MapObjectProfile_Derived5 *mUnk_100; + /* 104 */ bool mUnk_104; + /* 104 */ unk8 mUnk_105; + /* 104 */ unk8 mUnk_106; + /* 104 */ unk8 mUnk_107; + /* 108 */ + + void DestroyUnk020(unk32 param1, unk32 param2) { + if (this->mUnk_020[param1][param2] != NULL) { + this->mUnk_020[param1][param2]->func_ov024_020d5174(); + this->mUnk_020[param1][param2]->func_ov000_020589e4(); + this->mUnk_020[param1][param2]->~UnkStruct_027e0d00_20(); + this->mUnk_020[param1][param2] = NULL; + } + } + + void DestroyUnk0F4() { + if (this->mUnk_0F4 != NULL) { + this->mUnk_0F4->func_ov000_020589e4(); + this->mUnk_0F4->~MapObjectProfile_Derived5(); + this->mUnk_0F4 = NULL; + } + } UnkStruct_027e0d00(); ~UnkStruct_027e0d00(); - void func_ov024_020d4cc0(unk32 type); - void func_ov024_020d4d10(); + // overlay 0 + static UnkStruct_027e0d00 *GetInstance(); - static UnkStruct_027e0d00 *func_ov000_0205c944(); + // overlay 24 + unk32 func_ov024_020d485c(unk32 param1, unk32 param2); + u8 func_ov024_020d48c8(unk32 param1); + void func_ov024_020d48d8(unk32 param1, unk32 param2); + void func_ov024_020d49ec(unk32 param1, unk32 param2); + void func_ov024_020d4a50(); + void func_ov024_020d4ab4(); + void func_ov024_020d4af4(); + unk32 func_ov024_020d4b9c(unk32 param1); + void func_ov024_020d4bf8(); + void func_ov024_020d4cc0(u32 cargoType); + void func_ov024_020d4d10(); + void func_ov024_020d4d44(); + void func_ov024_020d4d6c(unk32 param1); + void func_ov024_020d4df8(); + G3d_Model *func_ov024_020d4e3c(unk32 param1); + + static void func_ov024_020d47c4(unk32 *param1, unk32 *param2, unk32 param3); + static UnkStruct_027e0d00 *Create(); }; extern UnkStruct_027e0d00 *data_027e0d00; + +extern const unk32 data_ov024_020d766c[]; + +extern "C" { +typedef struct UnkStruct_ov024_020d7624 { + u8 unk_00; + u8 unk_01[7]; +} UnkStruct_ov024_020d7624; + +extern const UnkStruct_ov024_020d7624 data_ov024_020d7624; +} diff --git a/include/Unknown/UnkStruct_027e0d08.hpp b/include/Unknown/UnkStruct_027e0d08.hpp new file mode 100644 index 00000000..8789948a --- /dev/null +++ b/include/Unknown/UnkStruct_027e0d08.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include + +class UnkStruct_027e0d08 : public AutoInstance { +public: + /* 00 */ void *mUnk_00; + /* 04 */ s16 *mUnk_04; + /* 08 */ s16 *mUnk_08; + /* 0C */ s16 *mUnk_0C; + /* 10 */ s16 *mUnk_10; + /* 14 */ u32 mUnk_14; + /* 18 */ u32 mUnk_18; + /* 1C */ unk32 mUnk_1C; + /* 20 */ unk32 mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ unk32 mUnk_28; + /* 2C */ + + void ResetBuffers() { + MI_CpuClearFast(this->mUnk_00, 0x800); + MI_CpuClearFast(this->mUnk_04, 0x2000); + MI_CpuClearFast(this->mUnk_08, 0x2000); + MI_CpuClearFast(this->mUnk_0C, 0x10); + MI_CpuClearFast(this->mUnk_10, 0x10); + } + + UnkStruct_027e0d08(); + ~UnkStruct_027e0d08(); + + void func_ov024_020d5d10(unk32 param1); + void func_ov024_020d5d18(unk32 param1); + void func_ov024_020d5d34(unk32 param1); + void func_ov024_020d5d54(); + void func_ov024_020d5dd4(unk32 param1); + void func_ov024_020d5e20(); + void func_ov024_020d5fac(); + void func_ov024_020d5fe4(s16 *param1, s16 *param2, u32 param3); + + static UnkStruct_027e0d08 *Create(); + static void func_ov024_020d5fb8(s16 *param1, s16 *param2, u32 param3); +}; + +extern UnkStruct_027e0d08 *data_027e0d08; diff --git a/include/Unknown/UnkStruct_ov000_02067bc4.hpp b/include/Unknown/UnkStruct_ov000_02067bc4.hpp index 239a99c2..8871954d 100644 --- a/include/Unknown/UnkStruct_ov000_02067bc4.hpp +++ b/include/Unknown/UnkStruct_ov000_02067bc4.hpp @@ -158,13 +158,7 @@ public: UnkStruct_ov000_020b504c_Sub4_00 *func_ov000_02067bf0(); void func_ov000_02067b20(); void func_ov000_02068068(unk32 param1); - - //! TODO: figure this out - void func_ov000_0206807c(unk32 param1, void *param2, unk32 param3, unk32 param4); - void func_ov000_0206807c(unk32 param1, void *param2, unk32 param3); - void func_ov000_0206807c(unk32 param1, void *param2); - void func_ov000_0206807c(void *param1, void *param2); - void func_ov000_0206807c(void *param1, unk32 param2); + bool func_ov000_0206807c(unk32 param1, void *param2); void func_ov000_02067b60(); void func_ov001_020be510(); diff --git a/include/Unknown/UnkStruct_ov000_0208f820.hpp b/include/Unknown/UnkStruct_ov000_0208f820.hpp index f7235e78..e2577a69 100644 --- a/include/Unknown/UnkStruct_ov000_0208f820.hpp +++ b/include/Unknown/UnkStruct_ov000_0208f820.hpp @@ -26,8 +26,10 @@ public: class UnkStruct_PlayerGet_64 { public: /* 00 */ unk32 mUnk_00; - /* 3C */ unk32 mUnk_3C; - /* 40 */ u16 mUnk_40; + /* 04 */ unk32 mUnk_04; + /* 08 */ u16 mUnk_08; + /* 0A */ unk16 mUnk_0A; + /* 0C */ UnkStruct_PlayerGet_64(void *param1, unk32 param2); ~UnkStruct_PlayerGet_64(); @@ -48,12 +50,10 @@ public: class UnkStruct_ov000_0208f820_28_98 { public: /* 00 */ unk32 mUnk_00; - /* 00 */ unk32 mUnk_04; - /* 00 */ u16 mUnk_08; + /* 04 */ unk32 mUnk_04; + /* 08 */ u16 mUnk_08; /* 0C */ STRUCT_PAD(0x0C, 0x38); /* 38 */ UnkStruct_PlayerGet_64 mUnk_38; - // /* 3C */ unk32 mUnk_3C; - // /* 40 */ u16 mUnk_40; void func_ov093_0216f76c(VecFx32 *param1, unk32 param2); }; diff --git a/include/Unknown/UnkStruct_ov000_020b50c0.hpp b/include/Unknown/UnkStruct_ov000_020b50c0.hpp index 223bf432..9c3d8375 100644 --- a/include/Unknown/UnkStruct_ov000_020b50c0.hpp +++ b/include/Unknown/UnkStruct_ov000_020b50c0.hpp @@ -33,12 +33,12 @@ public: /* A4 */ unk16 mUnk_A4; /* A6 */ unk16 mUnk_A6; /* A8 */ unk32 mUnk_A8[9]; - /* CC */ unk32 mUnk_CC; - /* D0 */ unk32 mUnk_D0; - /* D4 */ unk32 mUnk_D4; - /* D8 */ unk32 mUnk_D8; - /* DC */ unk32 mUnk_DC; - /* E0 */ unk32 mUnk_E0; + /* CC */ void *mUnk_CC; + /* D0 */ void *mUnk_D0; + /* D4 */ void *mUnk_D4; + /* D8 */ void *mUnk_D8; + /* DC */ void *mUnk_DC; + /* E0 */ void *mUnk_E0; /* E4 */ unk32 mUnk_E4; UnkStruct_ov000_020b50c0(); @@ -46,8 +46,11 @@ public: void func_ov000_02069d3c(unk32 param1); void func_ov000_02069d7c(unk32 param1); void func_ov000_02069f58(void); - unk32 func_ov000_0206a5d8(unk32 param1); + bool func_ov000_0206a5cc(unk32 param1); + void *func_ov000_0206a5d8(unk32 param1); + void func_ov000_0206a5fc(void); void func_ov000_0206a6a4(unk32 param1); + void func_ov000_0206a740(void); void func_ov000_0206a758(void); void func_ov000_0206a77c(void); diff --git a/include/Unknown/UnkStruct_ov000_020b5214.hpp b/include/Unknown/UnkStruct_ov000_020b5214.hpp index 1349194f..d350ce36 100644 --- a/include/Unknown/UnkStruct_ov000_020b5214.hpp +++ b/include/Unknown/UnkStruct_ov000_020b5214.hpp @@ -48,6 +48,7 @@ public: void func_ov000_0206d6b4(unk32 param1, unk32 param2); void func_ov000_0206d83c(unk32 param1); void func_ov000_0206db44(unk32 param1); // play sfx? + void func_ov000_0206dc4c(unk32 param1); void func_ov000_0206e7e8(unk32 param1); }; diff --git a/include/Unknown/UnkStruct_ov000_020b5300.hpp b/include/Unknown/UnkStruct_ov000_020b5300.hpp index 69a0f6e2..5ddf5e74 100644 --- a/include/Unknown/UnkStruct_ov000_020b5300.hpp +++ b/include/Unknown/UnkStruct_ov000_020b5300.hpp @@ -7,13 +7,13 @@ class UnkStruct_ov000_020b5300 { public: /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; + /* 04 */ void *mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ unk32 mUnk_0C; /* 10 */ unk32 mUnk_10; /* 14 */ unk32 mUnk_14; /* 18 */ unk32 mUnk_18; - /* 1C */ unk32 mUnk_1C; + /* 1C */ void *mUnk_1C; /* 20 */ unk16 mUnk_20; /* 20 */ unk16 mUnk_22; /* 24 */ unk32 mUnk_24; @@ -32,7 +32,7 @@ public: UnkStruct_ov000_020b5300(); ~UnkStruct_ov000_020b5300(); - void func_ov018_020c583c(unk32 param1); + void func_ov018_020c583c(void *param1); }; extern UnkStruct_ov000_020b5300 data_ov000_020b5300; diff --git a/include/Unknown/UnkStruct_ov024_020d86a0.hpp b/include/Unknown/UnkStruct_ov024_020d86a0.hpp index 742a22ed..bea98b90 100644 --- a/include/Unknown/UnkStruct_ov024_020d86a0.hpp +++ b/include/Unknown/UnkStruct_ov024_020d86a0.hpp @@ -1,28 +1,52 @@ #pragma once +#include "Unknown/UnkStruct_0204a060.hpp" #include "global.h" #include "types.h" +class UnkStruct_ov024_020d86a0; + +class UnkStruct_ov024_020d86a0_00 : public UnkStruct_0204a060_Base { +public: + /* 00 (base) */ + /* 24 */ UnkStruct_ov024_020d86a0 *mpInstance; + /* 28 */ + + UnkStruct_ov024_020d86a0_00(UnkStruct_ov024_020d86a0 *pInstance); + + // data_ov024_020d8210 + /* 00 */ virtual ~UnkStruct_ov024_020d86a0_00() override; + /* 0C */ virtual bool vfunc_0C(void) override; +}; + class UnkStruct_ov024_020d86a0 : public AutoInstance { public: - /* 00 */ unk32 mUnk_00; + /* 00 */ UnkStruct_ov024_020d86a0_00 *mUnk_00; /* 04 */ unk32 mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ unk8 mUnk_0C; /* 0D */ unk8 mUnk_0D; /* 0E */ unk8 mUnk_0E; /* 0F */ bool mUnk_0F; + /* 10 */ unk8 mUnk_10; + /* 11 */ bool mUnk_11; + /* 14 */ UnkStruct_ov024_020d86a0(); ~UnkStruct_ov024_020d86a0(); + // overlay 1 void func_ov001_020bd818(); + // overlay 17 + bool func_ov017_020c3180(); + void func_ov017_020c31cc(); + + // overlay 24 void func_ov024_020d167c(); + static UnkStruct_ov024_020d86a0 *Create(); static void Destroy(); - static void SetInstance(UnkStruct_ov024_020d86a0 *pInstance); - static bool ClearInstance(); }; extern UnkStruct_ov024_020d86a0 *data_ov024_020d86a0; diff --git a/include/Unknown/UnkSystem1.hpp b/include/Unknown/UnkSystem1.hpp index fe1250e2..4acfb25d 100644 --- a/include/Unknown/UnkSystem1.hpp +++ b/include/Unknown/UnkSystem1.hpp @@ -21,6 +21,7 @@ public: /* 04 */ unk16 mUnk_04; /* 06 */ u16 mUnk_06; /* 08 */ unk32 mUnk_08; + /* 0C */ UnkSystem1_ov000_Base(unk32 param1); bool func_ov000_020669b4(u8 *param1); @@ -63,12 +64,24 @@ public: class UnkSystem1_ov000_Derived2 : public UnkSystem1_ov000_Base { public: /* 00 (base) */ + /* 0C */ unk16 mUnk_0C; + /* 10 */ unk32 mUnk_10; + /* 14 */ unk32 mUnk_14; + /* 18 */ unk8 mUnk_18; + /* 19 */ unk8 mUnk_19; + /* 1C */ unk32 mUnk_1C; + /* 20 */ unk32 mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ unk8 mUnk_28; + /* 2C */ unk32 mUnk_2C; + /* 30 */ unk32 mUnk_30; + /* 34 */ - UnkSystem1_ov000_Derived2(unk32 param1, unk32 param2); + UnkSystem1_ov000_Derived2(unk32 param1); - /* 08 */ virtual void vfunc_08(unk32 param1) override; // func_ov000_0209fbec - /* 0C */ virtual unk32 vfunc_0C() override; // func_ov000_0209fcdc - /* 24 */ virtual ~UnkSystem1_ov000_Derived2() override; // func_ov000_0209fb18 & func_ov000_0209fb5c + /* 08 */ virtual void vfunc_08(unk32 param1) override; + /* 0C */ virtual unk32 vfunc_0C() override; + /* 24 */ virtual ~UnkSystem1_ov000_Derived2() override; }; // data_ov010_020b8e10 diff --git a/include/files.h b/include/files.h index df1ef945..af6d84ec 100644 --- a/include/files.h +++ b/include/files.h @@ -3,10 +3,24 @@ #include "Map/MapObjectId.hpp" #include "types.h" -enum FileType { +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef u32 FileType; +enum FileType_ { FileType_ZOB = 'BLOZ', + FileType_ZTB = '1BTZ', + FileType_ZMB = '1BMZ', }; +typedef struct FileInfos { + /* 00 */ void *pFile; + /* 04 */ size_t size; +} FileInfos; + // .zob typedef struct ZeldaObjectList { /* 00 */ FileType type; // always "ZOLB" @@ -17,3 +31,142 @@ typedef struct ZeldaObjectList { /* 0E */ unk16 unk_0e; /* 10 */ u32 aIdList[]; // actor id or map object id } ZeldaObjectList; + +// .ztb +typedef u32 ZTBSectionType; +enum ZTBSectionType_ { + ZTBSectionType_GRDB = 'GRDB', // grid block? + ZTBSectionType_GRRL = 'GRRL', // grid rail? + ZTBSectionType_STAB = 'STAB', // station block + ZTBSectionType_LDMK = 'LDMK', // land mark? +}; + +typedef struct ZTBHeader { + /* 00 */ u32 magic; // 'MTRB' + /* 04 */ FileType type; // always "ZTB1" + /* 08 */ size_t nSize; + /* 0C */ u32 nEntries; + /* 10 */ u8 unused[0x10]; +} ZTBHeader; // size = 0x20 + +typedef struct ZTBSectionHeader { + /* 00 */ ZTBSectionType type; + /* 04 */ size_t nSize; + /* 08 */ union { + u16 nEntries; + struct { + u8 nEntries1; + u8 nEntries2; + }; + }; + /* 0A */ u8 unk_0A; + /* 0B */ u8 unk_0B; +} ZTBSectionHeader; // size = 0x0C + +typedef struct ZTBEntryGRDB { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ u8 unk_02; + /* 03 */ u8 unk_03; +} ZTBEntryGRDB; // size = 0x04 + +typedef struct ZTBEntryGRRL { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ u8 unk_02; + /* 03 */ u8 unk_03; + /* 04 */ u8 unk_04; + /* 05 */ u8 unk_05; + /* 06 */ u16 unk_06; +} ZTBEntryGRRL; // size = 0x08 + +typedef struct ZTBEntrySTAB { + /* 00 */ char sceneName[16]; + /* 10 */ u8 unk_10; + /* 11 */ u8 unk_11; + /* 12 */ u8 unk_12; + /* 13 */ u8 unk_13; +} ZTBEntrySTAB; // size = 0x14 + +typedef struct ZTBEntryLDMK { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ u8 unk_02; + /* 03 */ u8 unk_03; +} ZTBEntryLDMK; // size = 0x04 + +typedef struct ZTBSectionGRDB { + /* 00 */ ZTBSectionHeader header; + /* 0C */ ZTBEntryGRDB entries[]; +} ZTBSectionGRDB; + +typedef struct ZTBSectionGRRL { + /* 00 */ ZTBSectionHeader header; + /* 0C */ ZTBEntryGRRL entries[]; +} ZTBSectionGRRL; + +typedef struct ZTBSectionSTAB { + /* 00 */ ZTBSectionHeader header; + /* 0C */ ZTBEntrySTAB entries[]; +} ZTBSectionSTAB; + +typedef struct ZTBSectionLDMK { + /* 00 */ ZTBSectionHeader header; + /* 0C */ ZTBEntryLDMK entries[]; +} ZTBSectionLDMK; + +struct UnkDataStruct4; + +extern BOOL ZTB_ParseFile(FileInfos *pFileInfos, UnkDataStruct4 *pDst); +extern BOOL ZTB_ParseGRDB(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionGRDB *pGRDB); +extern BOOL ZTB_ParseGRRL(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionGRRL *pGRRL); +extern BOOL ZTB_ParseSTAB(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionSTAB *pSTAB); +extern BOOL ZTB_ParseLDMK(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionLDMK *pLDMK); + +// .zmb +typedef u32 ZMBSectionType; +enum ZMBSectionType_ { + ZMBSectionType_LDLB = 'LDLB', // related to script triggers + ZMBSectionType_ROMB = 'ROMB', // unknown + ZMBSectionType_ROOB = 'ROOM', // room settings + ZMBSectionType_ARAB = 'ARAB', // locations? (?) + ZMBSectionType_RALB = 'RALB', // paths? + ZMBSectionType_WARP = 'WARP', // exits? + ZMBSectionType_CAME = 'CAME', // camera settings? + ZMBSectionType_PLYR = 'PLYR', // player entrances? + ZMBSectionType_MPOB = 'MPOB', // map object list, parameters are stored here + ZMBSectionType_NPCA = 'NPCA', // actor list, same as above +}; + +typedef struct ZMBHeader { + /* 00 */ u32 magic; // 'MAPB' + /* 04 */ FileType type; // always "ZMB1" + /* 08 */ size_t nSize; + /* 0C */ u32 nEntries; + /* 10 */ u8 unused[0x10]; +} ZMBHeader; // size = 0x20 + +typedef struct ZMBSectionHeader { + /* 00 */ ZMBSectionType type; + /* 04 */ size_t nSize; + /* 08 */ u16 nEntries; + /* 0A */ u8 unk_0A; + /* 0B */ u8 unk_0B; +} ZMBSectionHeader; // size = 0x0C + +typedef struct ZMBEntryRALB { + /* 00 */ u8 unk_00; + /* 01 */ u8 unk_01; + /* 02 */ u8 unk_02; + /* 03 */ u8 unk_03; + /* 04 */ unk32 unk_04; +} ZMBEntryRALB; // size = 0x08 + +typedef struct ZMBSectionRALB { + /* 00 */ ZMBSectionHeader header; + /* 0C */ ZMBEntryRALB entries[]; +} ZMBSectionRALB; + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/include/flags.h b/include/flags.h index 585172ea..3bffe23f 100644 --- a/include/flags.h +++ b/include/flags.h @@ -20,6 +20,10 @@ #define SET_FLAG_ALT(arr, pos) ((arr)[(pos) >> 5] |= 1 << ((0x1F - ((pos) & 0x1F)))) #define UNSET_FLAG_ALT(arr, pos) ((arr)[(pos) >> 5] &= ~(1 << ((0x1F - ((pos) & 0x1F))))) +#define GET_FLAG_ALT2(arr, a, b) (((arr)[((u32) (a))] & (1 << (b))) != 0) +#define SET_FLAG_ALT2(arr, a, b) ((arr)[((u32) (a))] |= 1 << (b)) +#define UNSET_FLAG_ALT2(arr, a, b) ((arr)[((u32) (a))] &= ~(1 << (b))) + //! TODO: improve or remove? idk #define VA_NARGS_IMPL(_1, _2, _3, _4, N, ...) N #define VA_NARGS(...) VA_NARGS_IMPL(__VA_ARGS__, 4, 3, 2, 1) diff --git a/include/global.h b/include/global.h index 9c5d8bc1..ccbdb873 100644 --- a/include/global.h +++ b/include/global.h @@ -44,6 +44,31 @@ #define STRUCT_PAD(from, to) unsigned char _pad_##from[(to) - (from)] +#define DF_CONCAT3_(a, b, c) a##b##c +#define DF_CONCAT3(a, b, c) DF_CONCAT3_(a, b, c) +#define DF_UNIQUE_IDENT(ident_) DF_CONCAT3(ident_, _, __LINE__) + +// sometimes we need something in .bss +// to force things in .data to align properly +#define DATA_ALIGN_FIX() int DF_UNIQUE_IDENT(__data_align_fix) + +#ifndef typeof + #define typeof __typeof__ +#endif +#define DF_TYPEOF typeof +#define DF_FUNCTION_DECLARATOR_WITH_PROTO(ident_) \ + extern void(ident_)(void); \ + extern void(ident_)(void) +#define DF_FUNCTION_CALL(ident_, arg_) \ + extern void(ident_)(DF_TYPEOF(arg_)); \ + (ident_)(arg_) + +// prevents the linker from deadstripping a symbol (can be anything) +#define DECOMP_FORCE(arg_) \ + DF_FUNCTION_DECLARATOR_WITH_PROTO(DF_UNIQUE_IDENT(DECOMP_FORCE)) { \ + DF_FUNCTION_CALL(DF_UNIQUE_IDENT(DECOMP_FORCE_CALL), arg_); \ + } + #define SUBSCREEN_WIDTH 256 #define SUBSCREEN_HEIGHT 192 @@ -58,4 +83,11 @@ }; \ void _VTABLE_PAD_##name::dummy() {} +#define DELETE(ptr) \ + { \ + delete ptr; \ + ptr = NULL; \ + } \ + (void) 0 + #endif diff --git a/include/iterator.hpp b/include/iterator.hpp index 5ec49f2d..34e5259f 100644 --- a/include/iterator.hpp +++ b/include/iterator.hpp @@ -96,4 +96,16 @@ public: T &Get(int index) { return ((T *) this->begin)[index]; } + + T *GetPtr(int index) { + return ((T *) this->begin) + index; + } + + const int GetAllocSize() const { + return (int) this->end - (int) this->begin; + } + + const int GetLastIndex() const { + return (this->GetAllocSize() / (int) sizeof(T)) - 1; + } }; diff --git a/include/math.hpp b/include/math.hpp index 6be3023c..bdaf1c17 100644 --- a/include/math.hpp +++ b/include/math.hpp @@ -2,6 +2,17 @@ #include +//! TODO: find a way to make VecFx32 work in ctor init lists +struct Vec3p { + fx32 x, y, z; + + Vec3p(fx32 X, fx32 Y, fx32 Z) { + x = X; + y = Y; + z = Z; + } +}; + extern "C" { //! TODO: find a way to remove that typedef union Vec2sC { @@ -59,6 +70,22 @@ static inline void Vec2s_Add(const Vec2s *a, const Vec2s *b, Vec2s *dst) { dst->y = y; } +//! TODO: probably fake +static inline void Vec2s_Add2(const Vec2s *a, Vec2s *dst) { + s16 x1, y1, x2, y2; + + x1 = a->x; + x2 = dst->x; + y2 = dst->y; + y1 = a->y; + + x2 += x1; + dst->x = x2; + + dst->y = (s16) dst->y; + dst->y += y1; +} + static inline void Vec2s_Sub(const Vec2s *a, const Vec2s *b, Vec2s *dst) { s16 x = a->x - b->x; s16 y = a->y - b->y; @@ -306,3 +333,23 @@ extern "C" static inline Vec2s *Vec2s_GetCopy(Vec2s *src) { vec.y = src->y; return &vec; } + +union Vec2sb { + struct { + /* 0 */ s8 x; + /* 2 */ s8 y; + /* 4 */ + }; + s8 coords[2]; + + void operator=(const Vec2sb &from) { + this->x = from.x; + this->y = from.y; + } + + Vec2sb() {} + Vec2sb(u8 X, u8 Y) { + x = X; + y = Y; + } +}; diff --git a/libs/nitro/include/nitro/math.h b/libs/nitro/include/nitro/math.h index 185350d8..8b937730 100644 --- a/libs/nitro/include/nitro/math.h +++ b/libs/nitro/include/nitro/math.h @@ -73,6 +73,14 @@ typedef union Vec2p { #define Vec2p_Sub(a, b, dst) Vec2_Sub(Vec2p, a, b, dst) #define Vec2p_Set(a, dst) Vec2_Set(Vec2p, a, dst) #define Vec2p_Clear(dst) Vec2_Clear(fx32, dst) +static inline void Vec2p_Copy(const Vec2p *src, Vec2p *dst) { +#if __MWERKS__ + dst->coords = src->coords; +#else + dst->x = src->x; + dst->y = src->y; +#endif +} typedef struct Mat2p { /* 00 */ Vec2p xColumn; @@ -124,7 +132,7 @@ u32 CoRemainder(u32 a, u32 b); bool Approach(s32 *src, s32 dest, s32 step); bool Approach_thunk(s32 *src, s32 dest, s32 step); -extern fx16 gSinCosTable[]; +extern const fx16 gSinCosTable[]; extern const VecFx32 gVecFx32_ZERO; @@ -157,7 +165,7 @@ static inline void VecFx32_CopyXZ(VecFx32 *vec, VecFx32 *out) { out->z = z; } -static inline void VecFx32_Copy(VecFx32 *vec, VecFx32 *out) { +static inline void VecFx32_Copy(const VecFx32 *vec, VecFx32 *out) { out->x = vec->x; out->y = vec->y; out->z = vec->z; diff --git a/libs/nitro/include/nitro/snd.h b/libs/nitro/include/nitro/snd.h index 9b9e3152..8ac1765e 100644 --- a/libs/nitro/include/nitro/snd.h +++ b/libs/nitro/include/nitro/snd.h @@ -63,6 +63,8 @@ void SND_StartTimer(u32 channel, u32, u32 num, u32); u32 SND_GetCurrentCommandTag(void); void SND_WaitForCommandProc(u32 tag); +void SND_func_0013(int, int, int, int); + #ifdef __cplusplus } // extern "C" #endif diff --git a/src/000_Second/Actor/ActorUnkEFIK.cpp b/src/000_Second/Actor/ActorUnkEFIK.cpp index 75cf5318..0d37edb2 100644 --- a/src/000_Second/Actor/ActorUnkEFIK.cpp +++ b/src/000_Second/Actor/ActorUnkEFIK.cpp @@ -67,7 +67,7 @@ ARM void ActorUnkEFIK::vfunc_20() { bStack_40[1] = k; if (pUVar5->func_ov000_02080180(bStack_40) == 0x38) { - u16 random = gRandom.Next32(0, 6); + u16 random = gRandom.Next32(6); if (random == 0) { VecFx32 vec; diff --git a/src/000_Second/Actor/ActorUnkSWOB.cpp b/src/000_Second/Actor/ActorUnkSWOB.cpp index 0b40e98b..dd5ee0a7 100644 --- a/src/000_Second/Actor/ActorUnkSWOB.cpp +++ b/src/000_Second/Actor/ActorUnkSWOB.cpp @@ -75,7 +75,7 @@ ARM void ActorUnkSWOB::func_ov000_0209aa30(void) { s16 unk_78 = this->mUnk_5C.mUnk_1C_0; if (unk_78 > 0) { - data_027e0cd8->func_ov000_02081d7c((s16) (unk_78 - 1), this->mUnk_5C.mUnk_18.y, 1); + data_027e0cd8->func_ov000_02081d7c((s16) (unk_78 - 1), this->mUnk_5C.mUnk_18.y, true); } break; case 2: { @@ -100,9 +100,9 @@ ARM void ActorUnkSWOB::func_ov000_0209aa30(void) { if (gpActorManager->func_01fff3b4(this->mUnk_A4[i].mUnk_00) == NULL) { this->mUnk_A4[i].mUnk_00 = 0; - vec.x = INT_TO_FX32(gRandom.Next32(0, 11) - 5); + vec.x = INT_TO_FX32(gRandom.Next32(11) - 5); vec.y = 0; - vec.z = INT_TO_FX32(gRandom.Next32(0, 11) - 5); + vec.z = INT_TO_FX32(gRandom.Next32(11) - 5); VecFx32_Add(&vec, &vec2, &vec); diff --git a/src/000_Second/Actor/ActorUnkSWTM.cpp b/src/000_Second/Actor/ActorUnkSWTM.cpp index 8091a122..13591a92 100644 --- a/src/000_Second/Actor/ActorUnkSWTM.cpp +++ b/src/000_Second/Actor/ActorUnkSWTM.cpp @@ -184,7 +184,7 @@ ARM void ActorUnkSWTM::func_ov000_0209b160(void) { ARM void ActorUnkSWTM::func_ov000_0209b184(void) { for (int i = this->mUnk_9E; i < this->mUnk_A0; i++) { - data_027e0cd8->func_ov000_02081d7c(i, this->mUnk_A2, 0); + data_027e0cd8->func_ov000_02081d7c(i, this->mUnk_A2, false); } } diff --git a/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp b/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp index 23b8a40d..a125e736 100644 --- a/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp +++ b/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp @@ -14,47 +14,36 @@ ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ae0(fx32 param1) { this->mVel.y = posY; } -ARM ActorUnk_ov000_020a8bb0::ActorUnk_ov000_020a8bb0(ModelRender *param1, unk32 param2) { - unk32 uVar2; - - this->mUnk_0B0 = 0; - this->mUnk_094.mUnk_0C = param2; - this->mUnk_0A4.mUnk_00 = param1; - this->mUnk_0A4.mUnk_04 = 0; - this->mUnk_0A4.mUnk_08 = 0; - this->mUnk_0B4 = -1; - this->mUnk_0B8 = 0; - this->mUnk_0BC.Reset(); - this->mUnk_0C0.x = 0; - this->mUnk_0C0.y = 0; - this->mUnk_0C0.z = 0; - this->mUnk_0CC = 0; - this->mUnk_0CE = 0; - this->mUnk_0D0 = 0; - this->mUnk_0D4 = 0; - this->mUnk_0D8 = 0; - this->mUnk_0DA = 0; - this->mUnk_0DC = 0x2AAB; - this->mUnk_0DE = 0xEAAB; - this->mUnk_0E0 = 0x1555; - this->mUnk_0E4 = 0; - this->mUnk_0E8 = 0; - this->mUnk_0EA = 0; - this->mUnk_0EC.func_ov024_020d6668(); - uVar2 = this->mUnk_34->size; - this->mUnk_114 = -1; - this->mUnk_118 = 0x1000; - this->mUnk_11C = 0x019A; - this->mUnk_104 = 0; - this->mUnk_108 = uVar2; - this->mUnk_10C = 0; - this->mUnk_110 = uVar2; - this->mUnk_30 = (Cylinder *) &this->mUnk_104; +ARM ActorUnk_ov000_020a8bb0::ActorUnk_ov000_020a8bb0(ModelRender *param1, unk32 param2) : + mUnk_094(param2), + mUnk_0A4(param1), + mUnk_0B0(0), + mUnk_0B4(-1), + mUnk_0B8(0), + mUnk_0BC(0), + mUnk_0C0(0, 0, 0), + mUnk_0CC(0), + mUnk_0CE(0), + mUnk_0D0(0), + mUnk_0D4(0), + mUnk_0D8(0), + mUnk_0DA(0), + mUnk_0DC(0x2AAB), + mUnk_0DE(0xEAAB), + mUnk_0E0(0x1555), + mUnk_0E4(0), + mUnk_0E8(0), + mUnk_0EA(0), + mUnk_104(this->mUnk_34->size), + mUnk_114(-1), + mUnk_118(0x1000), + mUnk_11C(0x019A) { + this->mUnk_30 = &this->mUnk_104; this->mUnk_4A = 5; this->mUnk_44 = 0x1F; this->mUnk_094.mUnk_08 = 3; this->mUnk_38 = &this->mUnk_094.mUnk_00; - this->mUnk_0B0 |= 8; + this->mUnk_0B0 |= 0x08; } ARM ActorUnk_ov000_020a8bb0::~ActorUnk_ov000_020a8bb0() {} @@ -65,8 +54,8 @@ ARM bool ActorUnk_ov000_020a8bb0::vfunc_18(unk32 param1) { } if (this->mUnk_0B0 & 8) { - this->mUnk_0A4.mUnk_00->func_ov000_02057c38(6, 2); - this->mUnk_0A4.mUnk_00->func_ov000_0209a7b8(this, ActorUnk_ov000_020a8bb0::func_ov000_020a9804); + this->mUnk_0A4.mpModelRender->func_ov000_02057c38(6, 2); + this->mUnk_0A4.mpModelRender->func_ov000_0209a7b8(this, ActorUnk_ov000_020a8bb0::func_ov000_020a9804); } this->vfunc_54(param1); diff --git a/src/000_Second/Item/ItemManager.cpp b/src/000_Second/Item/ItemManager.cpp index 263be1ae..6e3ecfbf 100644 --- a/src/000_Second/Item/ItemManager.cpp +++ b/src/000_Second/Item/ItemManager.cpp @@ -1,5 +1,5 @@ #include "Item/ItemManager.hpp" -#include "Unknown/UnkStruct_020d8698.hpp" +#include "Unknown/UICounterManager.hpp" #include "global.h" const u8 gQuiverCapacities[UpgradeCapacity_Max] = { @@ -82,7 +82,7 @@ ARM void ItemManager::GiveRupees(s32 amount, bool param2, bool param3) { this->mNumRupees = newAmount; if (param3) { - data_ov024_020d8698->func_ov024_020cd368(param2 && prevNumRupees != this->mNumRupees, true); + gpUICounterManager->func_ov024_020cd368(param2 && prevNumRupees != this->mNumRupees, true); } } @@ -128,7 +128,7 @@ ARM bool ItemManager::TryEquipForcedItem() { if (this->mForcedItem != ItemFlag_None) { this->mEquippedItem = this->mForcedItem; this->mForcedItem = ItemFlag_None; - data_ov024_020d8698->func_ov024_020cd458(this->mEquippedItem, false); + gpUICounterManager->func_ov024_020cd458(this->mEquippedItem, false); return true; } diff --git a/src/000_Second/Item/TreasureManager.cpp b/src/000_Second/Item/TreasureManager.cpp index 1d7adf2e..0a58c56a 100644 --- a/src/000_Second/Item/TreasureManager.cpp +++ b/src/000_Second/Item/TreasureManager.cpp @@ -174,7 +174,7 @@ ARM void TreasureManager::func_ov000_020a9cbc(TreasureType type, s32 amount) { } ARM u32 TreasureManager::func_ov000_020a9cfc(u8 *param1, u8 param2) { - s32 uVar2 = gRandom.Next32(0, 100); + s32 uVar2 = gRandom.Next32(100); s32 iVar1 = 0; for (int i = 0; i < param2; i++) { @@ -203,7 +203,7 @@ ARM unk32 TreasureManager::func_ov000_020a9d78(unk32 param1) { } u32 var_r3; - var_r3 = gRandom.ConditionalNext32(temp_r4); + var_r3 = gRandom.Next32(temp_r4); return data_ov000_020afec4[var_r3]; } @@ -222,7 +222,7 @@ ARM unk32 TreasureManager::func_ov000_020a9e14(unk32 param1) { } u32 var_r3; - var_r3 = gRandom.ConditionalNext32(temp_r4); + var_r3 = gRandom.Next32(temp_r4); return data_ov000_020afeb0[var_r3]; } @@ -241,12 +241,12 @@ ARM unk32 TreasureManager::func_ov000_020a9eb0(unk32 param1) { } u32 var_r3; - var_r3 = gRandom.ConditionalNext32(temp_r4); + var_r3 = gRandom.Next32(temp_r4); return data_ov000_020afea0[var_r3]; } ARM unk32 TreasureManager::func_ov000_020a9f4c(unk32 param1) { - if ((s32) gRandom.Next32(0, 100) < 80) { + if ((s32) gRandom.Next32(100) < 80) { return TreasureManager::func_ov000_020a9eb0(param1); } @@ -264,7 +264,7 @@ ARM unk32 TreasureManager::func_ov000_020a9f4c(unk32 param1) { } u32 var_r3; - var_r3 = gRandom.ConditionalNext32(temp_r4); + var_r3 = gRandom.Next32(temp_r4); return data_ov000_020afe98[var_r3]; } diff --git a/src/000_Second/MapObject/MapObject.cpp b/src/000_Second/MapObject/MapObject.cpp index 51d32025..7858031c 100644 --- a/src/000_Second/MapObject/MapObject.cpp +++ b/src/000_Second/MapObject/MapObject.cpp @@ -142,7 +142,7 @@ ARM bool MapObject::func_ov000_0209d29c(unk32 param1) { return data_027e0cd8->func_ov000_02081e30(this->mUnk_20.mUnk_0A[param1], this->mUnk_20.mUnk_08[param1]); } -ARM void MapObject::func_ov000_0209d2c4(unk32 param1, unk32 param2) { +ARM void MapObject::func_ov000_0209d2c4(unk32 param1, bool param2) { data_027e0cd8->func_ov000_02081d7c(this->mUnk_20.mUnk_0A[param1], this->mUnk_20.mUnk_08[param1], param2); } diff --git a/src/000_Second/MapObject/MapObjectProfile.cpp b/src/000_Second/MapObject/MapObjectProfile.cpp index 96a9b742..e0813716 100644 --- a/src/000_Second/MapObject/MapObjectProfile.cpp +++ b/src/000_Second/MapObject/MapObjectProfile.cpp @@ -211,8 +211,7 @@ ARM void MapObjectProfile_Derived1::vfunc_0C() { ARM void MapObjectProfile_Derived1::vfunc_10() { for (MapObjectProfile_Derived2_20 **ptr = this->mUnk_20; ptr != &this->mUnk_20[ARRAY_LEN(this->mUnk_20)]; ptr++) { if (*ptr != NULL) { - delete *ptr; - *ptr = NULL; + DELETE(*ptr); } } } diff --git a/src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp b/src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp index 3b7d5eb7..d5a1bb80 100644 --- a/src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp +++ b/src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp @@ -10,8 +10,8 @@ unk32 func_02012fa8(const char *); ARM MapObjectProfile_Derived2_20::MapObjectProfile_Derived2_20(MapObjectId mapObjId2) : MapObjectProfile_Derived2_20_Base("MapObj", (const char *) &mUnk_94, (const char *) &mUnk_94, (const char *) &mUnk_94, 0, 0), - unk_94(0), - unk_98(0), + unk_94(L'\0'), + unk_98(L'\0'), mUnk_B0(false), mUnk_B1(0) { func_02015ea8(mapObjId2, &this->mUnk_94); diff --git a/src/000_Second/MapObject/MapObjectSwitchStep.cpp b/src/000_Second/MapObject/MapObjectSwitchStep.cpp index c2d421e2..d3e26d10 100644 --- a/src/000_Second/MapObject/MapObjectSwitchStep.cpp +++ b/src/000_Second/MapObject/MapObjectSwitchStep.cpp @@ -101,7 +101,7 @@ ARM MapObjectSwitchStep::MapObjectSwitchStep() : ARM MapObjectSwitchStep::~MapObjectSwitchStep() { if (this->mUnk_20.mUnk_00[0] == 2) { this->func_ov000_0209e11c(0, 1); - this->func_ov000_0209d2c4(0, 0); + this->func_ov000_0209d2c4(0, false); } } @@ -135,7 +135,7 @@ ARM void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) { switch (this->mUnk_16) { case 0: if (param2 == 0) { - this->func_ov000_0209d2c4(0, 0); + this->func_ov000_0209d2c4(0, false); data_027e09a8->func_ov000_02071b30(0x123, &this->mPos, 0); } @@ -151,7 +151,7 @@ ARM void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) { break; case 2: this->mUnk_40.mUnk_60 = -0x19A; - this->func_ov000_0209d2c4(0, 1); + this->func_ov000_0209d2c4(0, true); this->mUnk_40.mUnk_62 = 0; if (param2 == 0) { @@ -168,7 +168,7 @@ ARM void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) { this->mUnk_A4.func_ov000_020577f8(0x1000); break; case 3: - this->func_ov000_0209d2c4(0, 0); + this->func_ov000_0209d2c4(0, false); break; default: break; diff --git a/src/000_Second/code_020657fc.cpp b/src/000_Second/code_020657fc.cpp index 2cb4cbb5..6030e3e9 100644 --- a/src/000_Second/code_020657fc.cpp +++ b/src/000_Second/code_020657fc.cpp @@ -1,4 +1,4 @@ -#include "Unknown/UnkStruct_020d8698.hpp" +#include "Unknown/UICounterManager.hpp" // non-matching UnkStruct_020d8698_24_5C_Base::UnkStruct_020d8698_24_5C_Base(unk32 param1, const u16 *param2, u16 param3, unk32 param4) { diff --git a/src/001_SceneInit/Actor/ActorManager_001.cpp b/src/001_SceneInit/Actor/ActorManager_001.cpp index 6be12ef5..77f1ea7a 100644 --- a/src/001_SceneInit/Actor/ActorManager_001.cpp +++ b/src/001_SceneInit/Actor/ActorManager_001.cpp @@ -16,8 +16,6 @@ void func_ov001_020ba59c(void *); void func_ov021_020f8818(); void func_ov031_020ea100(); void func_ov071_0215e8d4(); -unk32 func_01ffd3b0(); -unk32 func_01ffd3d8(); } struct UnkStruct_ov000_020ab1ac { @@ -120,7 +118,7 @@ THUMB void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param if (data_027e09a4->mUnk_60 != 2) { unk32 iVar5; - if (func_01ffd3b0() != 0) { + if (data_027e09a4->IsLand() != 0) { iVar5 = data_027e09a4->mUnk_00.mSceneIndex; if (iVar5 == SceneIndex_f_rabbit) { @@ -186,7 +184,7 @@ THUMB void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param auStack_64.func_ov000_02059270(0x32, "zeldahit", 0x29200000); auStack_64.func_ov000_02059270(0x33, "zeldatarget", 0x2D200000); } - } else if (func_01ffd3d8() != 0) { + } else if (data_027e09a4->IsTrain()) { UnkStruct_StackTitleScreen auStack_78("Npc/Tex.bin", 1); auStack_78.func_ov000_02059270(0x12, "rupy0", 0x2D200000); auStack_78.func_ov000_02059288(0x13, "rupy1", 0x12); @@ -223,7 +221,7 @@ THUMB void ActorManager::func_ov001_020bb414(ActorManager *instance) { THUMB void ActorManager::func_ov001_020bb488() { if (data_027e09a4->IsNotCutscene()) { - switch (data_027e09a4->func_01ffd400()->mUnk_10) { + switch (data_027e09a4->GetCurrentCourseEntry()->unk_10) { case 0x00: case 0x01: case 0x03: @@ -288,7 +286,7 @@ THUMB void ActorManager::func_ov001_020bb630() { if (iVar4->mUnk_38 != 0) { run_vfunc_08 = true; } else { - if (iVar4->mActorId == ActorId_BSFC && data_027e09a4->func_01ffd400()->mUnk_1B & 0x10) { + if (iVar4->mActorId == ActorId_BSFC && data_027e09a4->GetCurrentCourseEntry()->unk_1B & 0x10) { run_vfunc_08 = true; } } diff --git a/src/001_SceneInit/CargoManager_001.cpp b/src/001_SceneInit/CargoManager_001.cpp index abcd18cf..64e6849c 100644 --- a/src/001_SceneInit/CargoManager_001.cpp +++ b/src/001_SceneInit/CargoManager_001.cpp @@ -12,7 +12,7 @@ CargoManager::CargoManager() { CargoManager::~CargoManager() {} void CargoManager::func_ov001_020bf830() { - if (this->mCargo.mAmount == 0 && !data_027e09a4->func_01ffd3d8()) { + if (this->mCargo.mAmount == 0 && !data_027e09a4->IsTrain()) { this->mCargo.mType = CargoType_None; } diff --git a/src/001_SceneInit/Game/AdventureModeManager_001.cpp b/src/001_SceneInit/Game/AdventureModeManager_001.cpp index 12f08078..6d2e0d39 100644 --- a/src/001_SceneInit/Game/AdventureModeManager_001.cpp +++ b/src/001_SceneInit/Game/AdventureModeManager_001.cpp @@ -3,8 +3,8 @@ #include "MainGame/AdventureMode.hpp" #include "Save/SaveManager.hpp" #include "System/OverlayManager.hpp" +#include "Unknown/UICounterManager.hpp" #include "Unknown/UnkStruct_0204a110.hpp" -#include "Unknown/UnkStruct_020d8698.hpp" #include "Unknown/UnkStruct_027e0998.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_027e0cf8.hpp" @@ -105,7 +105,7 @@ void AdventureModeManager::vfunc_14() { data_027e09a4->func_ov000_0207056c(); UnkStruct_027e0cf8::Create(); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { this->mUnk_004.func_ov001_020bd734(&data_ov001_020c276c); if (data_027e09a4->IsNotCutscene()) { @@ -122,7 +122,7 @@ void AdventureModeManager::vfunc_14() { } } - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { if (DSProt_DetectEmulator(AdventureModeManager::func_ov001_020c0194) == 0) { AdventureModeManager::func_ov001_020c0104(); } @@ -175,11 +175,11 @@ void AdventureModeManager::vfunc_14() { func_ov000_02066294(); } - UnkStruct_020d8698::Create(); + UICounterManager::Create(); if (data_027e09a4->IsNotCutscene()) { GameModeManagerBase_104 *pList = GetLinkListRef(this->mUnk_104); - UnkStruct_020d8698 *ptr = data_ov024_020d8698; + UICounterManager *ptr = gpUICounterManager; pList->Append(ptr); ptr->vfunc_18(); @@ -199,87 +199,53 @@ void AdventureModeManager::vfunc_14() { } void AdventureModeManager::vfunc_18() { - delete this->mUnk_1B8; - this->mUnk_1B8 = NULL; - - delete this->mUnk_160; - this->mUnk_160 = NULL; - - delete this->mUnk_190; - this->mUnk_190 = NULL; - - delete this->mUnk_18C; - this->mUnk_18C = NULL; - - delete this->mUnk_180; - this->mUnk_180 = NULL; - - delete this->mUnk_17C; - this->mUnk_17C = NULL; - - delete this->mUnk_178; - this->mUnk_178 = NULL; - - delete this->mUnk_174; - this->mUnk_174 = NULL; - - delete this->mUnk_184; - this->mUnk_184 = NULL; + DELETE(this->mUnk_1B8); + DELETE(this->mUnk_160); + DELETE(this->mUnk_190); + DELETE(this->mUnk_18C); + DELETE(this->mUnk_180); + DELETE(this->mUnk_17C); + DELETE(this->mUnk_178); + DELETE(this->mUnk_174); + DELETE(this->mUnk_184); AdventureModeManager::func_ov001_020c083c(); - if (data_ov024_020d8698 != NULL) { + if (gpUICounterManager != NULL) { AdventureModeManager::func_ov001_020c0894(); this->mUnk_1B4 = false; } - if (data_027e09a4->func_01ffd3d8()) { - delete this->mUnk_16C; - this->mUnk_16C = NULL; - - delete this->mUnk_19C; - this->mUnk_19C = NULL; - - delete this->mUnk_164; - this->mUnk_164 = NULL; + if (data_027e09a4->IsTrain()) { + DELETE(this->mUnk_16C); + DELETE(this->mUnk_19C); + DELETE(this->mUnk_164); } else { if (data_027e09a4->IsCutscene()) { AdventureModeManager::func_ov001_020c0824(); } - delete this->mUnk_1B0; - this->mUnk_1B0 = NULL; + DELETE(this->mUnk_1B0); this->mUnk_1B5 = false; if (this->mUnk_168 != NULL) { - delete this->mUnk_168; - this->mUnk_168 = NULL; + DELETE(this->mUnk_168); } - delete this->mUnk_188; - this->mUnk_188 = NULL; + DELETE(this->mUnk_188); AdventureModeManager::func_ov001_020c0854(); - delete this->mUnk_1BC; - this->mUnk_1BC = NULL; - - delete this->mUnk_198; - this->mUnk_198 = NULL; - - delete this->mUnk_194; - this->mUnk_194 = NULL; + DELETE(this->mUnk_1BC); + DELETE(this->mUnk_198); + DELETE(this->mUnk_194); if (gOverlayManager.mLoadedOverlays[8] == OverlayIndex_Village) { - delete this->mUnk_1A0; - this->mUnk_1A0 = NULL; - - delete this->mUnk_1A4; - this->mUnk_1A4 = NULL; + DELETE(this->mUnk_1A0); + DELETE(this->mUnk_1A4); } if (data_027e09a4->IsCutscene()) { - delete this->mUnk_1A8; - this->mUnk_1A8 = NULL; + DELETE(this->mUnk_1A8); } } @@ -292,10 +258,10 @@ void AdventureModeManager::vfunc_1C() { this->mUnk_1BC->func_ov093_02175514(); } - data_ov024_020d8698->func_ov024_020cd094(); - data_ov024_020d8698->func_ov024_020cd150(); + gpUICounterManager->func_ov024_020cd094(); + gpUICounterManager->func_ov024_020cd150(); - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { this->mUnk_1B0->func_ov031_0210fad0(); } } @@ -334,8 +300,8 @@ void AdventureModeManager::func_ov001_020c0874() { } void AdventureModeManager::func_ov001_020c0894() { - if (data_ov024_020d8698 != NULL) { - delete data_ov024_020d8698; + if (gpUICounterManager != NULL) { + delete gpUICounterManager; } } diff --git a/src/001_SceneInit/Item/ItemManager_001.cpp b/src/001_SceneInit/Item/ItemManager_001.cpp index 990569d7..6ab369a3 100644 --- a/src/001_SceneInit/Item/ItemManager_001.cpp +++ b/src/001_SceneInit/Item/ItemManager_001.cpp @@ -11,8 +11,8 @@ THUMB void ItemManager::func_ov001_020bb9f8() { CourseEntry *pEntry = data_027e09a0->GetCourseEntry(data_027e09a4->mUnk_00.mSceneIndex); - if (pEntry->mSaveCourseIndex < SaveCourseIndex_Max) { - this->mKeyAmount = gSaveManager.mUnk_000->mUnk_36[pEntry->mSaveCourseIndex].mKeyAmount; + if (pEntry->saveCourseIndex < SaveCourseIndex_Max) { + this->mKeyAmount = gSaveManager.mUnk_000->mUnk_36[pEntry->saveCourseIndex].mKeyAmount; } else { this->mKeyAmount = 0; } diff --git a/src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp b/src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp new file mode 100644 index 00000000..73cd3be4 --- /dev/null +++ b/src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp @@ -0,0 +1,75 @@ +#include "Unknown/UnkStruct_027e0cf8.hpp" + +extern s16 data_ov001_020c2750[]; +extern s16 data_ov001_020c275e[]; + +THUMB_BEGIN + +UnkStruct_027e0cf8_08_00::UnkStruct_027e0cf8_08_00(u8 bgType) : + AdventureModeManager_1B8_Base(bgType, true, AdventureModeManager_1B8_Base_1C(0x00, 0x00, 0x100, 0xC0), true, true) { + this->func_ov001_020bfb20(); + + if (bgType == 1) { + this->mUnk_08 = true; + } + + Vec2s *local_58[4][4] = { + {NULL, this->mUnk_024, this->mUnk_040, this->mUnk_05C}, + {this->mUnk_0B0, NULL, this->mUnk_078, this->mUnk_094}, + {this->mUnk_0E8, this->mUnk_104, NULL, this->mUnk_0CC}, + {this->mUnk_120, this->mUnk_13C, this->mUnk_158, NULL}, + }; + + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + this->mUnk_178[i][j] = local_58[i][j]; + } + } +} + +UnkStruct_027e0cf8_08_00::~UnkStruct_027e0cf8_08_00() {} + +void UnkStruct_027e0cf8_08_00::func_ov001_020bfb20() { + for (int i = 0; i <= ARRAY_LEN(this->mUnk_0CC) - 1; i++) { + this->mUnk_0CC[i].x = data_ov001_020c2750[i]; + this->mUnk_0CC[i].y = data_ov001_020c275e[i]; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_104) - 1; i++) { + this->mUnk_104[i].x = -this->mUnk_0CC[i].x; + this->mUnk_104[i].y = this->mUnk_0CC[i].y; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_05C) - 1; i++) { + this->mUnk_05C[i].x = this->mUnk_0CC[i].x; + this->mUnk_05C[i].y = -this->mUnk_0CC[i].y; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_024) - 1; i++) { + this->mUnk_024[i].x = -this->mUnk_0CC[i].x; + this->mUnk_024[i].y = -this->mUnk_0CC[i].y; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_0E8) - 1; i++) { + this->mUnk_0E8[i].x = 0; + this->mUnk_0E8[i].y = ((i * 12) / 6) - 6; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_13C) - 1; i++) { + this->mUnk_13C[i].x = ((i * 12) / 6) - 6; + this->mUnk_13C[i].y = 0; + } + + for (int i = 0; i <= ARRAY_LEN(this->mUnk_0CC) - 1; i++) { + s32 iVar2 = 6 - i; + + Vec2s_Copy(&this->mUnk_0CC[i], &this->mUnk_158[iVar2]); + Vec2s_Copy(&this->mUnk_104[i], &this->mUnk_078[iVar2]); + Vec2s_Copy(&this->mUnk_05C[i], &this->mUnk_120[iVar2]); + Vec2s_Copy(&this->mUnk_024[i], &this->mUnk_0B0[iVar2]); + Vec2s_Copy(&this->mUnk_0E8[i], &this->mUnk_040[iVar2]); + Vec2s_Copy(&this->mUnk_13C[i], &this->mUnk_094[iVar2]); + } +} + +THUMB_END diff --git a/src/017_CourseExec/CargoManager_017.cpp b/src/017_CourseExec/CargoManager_017.cpp index 472ce26e..7ce9b666 100644 --- a/src/017_CourseExec/CargoManager_017.cpp +++ b/src/017_CourseExec/CargoManager_017.cpp @@ -1,6 +1,6 @@ #include "MainGame/CargoManager.hpp" #include "Save/AdventureFlags.hpp" -#include "Unknown/UnkStruct_020d8698.hpp" +#include "Unknown/UICounterManager.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_027e0cd8.hpp" #include "Unknown/UnkStruct_027e0ce0.hpp" @@ -83,7 +83,7 @@ bool CargoManager::IsNotUsingTimer(unk32 type) { } void CargoManager::Update() { - if (UnkStruct_027e0ce0::func_ov000_0205c904()->func_ov024_020d3dcc() == 0) { + if (!UnkStruct_027e0ce0::func_ov000_0205c904()->func_ov024_020d3dcc()) { return; } @@ -98,7 +98,7 @@ void CargoManager::Update() { } } else if (type == CargoType_MegaIce || type == CargoType_Fish) { // the timer won't increase if we are in snow realm - if (data_027e09a4->func_01ffd400()->mUnk_1B & 0x20) { + if (data_027e09a4->GetCurrentCourseEntry()->unk_1B & 0x20) { this->mCargo.mDecayTimer++; } } else { @@ -108,15 +108,15 @@ void CargoManager::Update() { if (this->mCargo.mDecayTimer >= sCargoInfos[this->mCargo.mType].timerMax) { this->RemoveAmount(1); this->mCargo.mDecayTimer = 0; - data_ov024_020d8698->func_ov024_020cd3f0(true); + gpUICounterManager->func_ov024_020cd3f0(true); } } } if (this->mCargo.mAmount <= sCargoInfos[this->mCargo.mType].amount) { - data_ov024_020d8698->func_ov024_020cd3e0(true); + gpUICounterManager->func_ov024_020cd3e0(true); } else { - data_ov024_020d8698->func_ov024_020cd3e0(false); + gpUICounterManager->func_ov024_020cd3e0(false); } if (this->mUnk_18 > 0) { @@ -127,25 +127,25 @@ void CargoManager::Update() { void CargoManager::Reset() { this->mCargo.Clear(); this->mCargo2.Clear(); - UnkStruct_027e0d00::func_ov000_0205c944()->func_ov024_020d4d10(); + UnkStruct_027e0d00::GetInstance()->func_ov024_020d4d10(); } void CargoManager::Init(unk32 type, unk32 amount) { this->mCargo.Set(type, amount); this->mCargo2.Set(type, amount); - UnkStruct_027e0d00 *pUnkStruct_027e0d00 = UnkStruct_027e0d00::func_ov000_0205c944(); + UnkStruct_027e0d00 *pUnkStruct_027e0d00 = UnkStruct_027e0d00::GetInstance(); pUnkStruct_027e0d00->func_ov024_020d4d10(); pUnkStruct_027e0d00->func_ov024_020d4cc0(this->mCargo.mType); - data_ov024_020d8698->func_ov024_020cd410(); - data_ov024_020d8698->func_ov024_020cd3f0(true); + gpUICounterManager->func_ov024_020cd410(); + gpUICounterManager->func_ov024_020cd3f0(true); } void CargoManager::func_ov017_020bebdc() { if (this->mCargo.mType > CargoType_None && this->mCargo.mType < CargoType_Max) { this->RemoveAmount(sCargoInfos[this->mCargo.mType].amountDecr); - data_ov024_020d8698->func_ov024_020cd3d0(); + gpUICounterManager->func_ov024_020cd3d0(); } } @@ -153,7 +153,7 @@ void CargoManager::func_ov017_020bec20() { if (this->mCargo.mType > CargoType_None && this->mCargo.mType < CargoType_Max) { this->mUnk_18 = 0x1E; this->RemoveAmount(sCargoInfos[this->mCargo.mType].amountDamageDecr); - data_ov024_020d8698->func_ov024_020cd3d0(); + gpUICounterManager->func_ov024_020cd3d0(); } } @@ -172,7 +172,7 @@ void CargoManager::RemoveAmount(unk32 decr) { } bool CargoManager::func_ov017_020bec9c() { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { return data_027e0cd8->mUnk_0C->mUnk_160->func_ov026_02106aa8(); } diff --git a/src/018_StartUp/StartUpInitializers.cpp b/src/018_StartUp/StartUpInitializers.cpp index 3c64d5a1..8fb7658c 100644 --- a/src/018_StartUp/StartUpInitializers.cpp +++ b/src/018_StartUp/StartUpInitializers.cpp @@ -361,7 +361,7 @@ ARM UnkStruct_ov000_020b5300::UnkStruct_ov000_020b5300() { #endif } -ARM void UnkStruct_ov000_020b5300::func_ov018_020c583c(unk32 param1) { +ARM void UnkStruct_ov000_020b5300::func_ov018_020c583c(void *param1) { this->mUnk_1C = param1; this->mUnk_00 = 0; this->mUnk_04 = param1; diff --git a/src/019_MainSelect/FileSelectManager.cpp b/src/019_MainSelect/FileSelectManager.cpp index dc9165ca..20791985 100644 --- a/src/019_MainSelect/FileSelectManager.cpp +++ b/src/019_MainSelect/FileSelectManager.cpp @@ -18,17 +18,10 @@ ARM FileSelectManager::~FileSelectManager() { data_0204a110.mUnk_DA4 = 1; this->mUnk_004.func_ov001_020bd784(); - delete this->mUnk_164; - this->mUnk_164 = NULL; - - delete this->mUnk_160; - this->mUnk_160 = NULL; - - delete this->mUnk_15C; - this->mUnk_15C = NULL; - - delete this->mUnk_158; - this->mUnk_158 = NULL; + DELETE(this->mUnk_164); + DELETE(this->mUnk_160); + DELETE(this->mUnk_15C); + DELETE(this->mUnk_158); } ARM void FileSelectManager::vfunc_10(unk32 param1, unk32 param2, unk32 param3) { diff --git a/src/019_MainSelect/FileSelectOptions.cpp b/src/019_MainSelect/FileSelectOptions.cpp index 965fe5c5..83ac7074 100644 --- a/src/019_MainSelect/FileSelectOptions.cpp +++ b/src/019_MainSelect/FileSelectOptions.cpp @@ -111,11 +111,8 @@ ARM FileSelectOptionsManager::FileSelectOptionsManager(void *param1, s32 saveSlo } ARM FileSelectOptionsManager::~FileSelectOptionsManager() { - delete this->mpMicTest; - this->mpMicTest = NULL; - - delete this->mpOptions; - this->mpOptions = NULL; + DELETE(this->mpMicTest); + DELETE(this->mpOptions); } ARM void FileSelectOptionsManager::vfunc_08(Input *pButtons, TouchControl *pTouchControl) { diff --git a/src/019_MainSelect/FileSelectSubScreen.cpp b/src/019_MainSelect/FileSelectSubScreen.cpp index 4eb30738..b02afaac 100644 --- a/src/019_MainSelect/FileSelectSubScreen.cpp +++ b/src/019_MainSelect/FileSelectSubScreen.cpp @@ -166,14 +166,14 @@ ARM FileSelect_UnkClass7::FileSelect_UnkClass7() { Random *pRandom = &gRandom; for (int i = 0; i < ARRAY_LEN(this->mUnk_004.mUnk_000); i++) { - this->mUnk_004.mUnk_000[i].func_ov000_0206082c(0x8F, data_ov019_020d1bcc[gRandom.Next32(0, 3)]); + this->mUnk_004.mUnk_000[i].func_ov000_0206082c(0x8F, data_ov019_020d1bcc[gRandom.Next32(3)]); - u16 value = gRandom.ConditionalNext16(this->mUnk_004.mUnk_000[i].func_ov000_02060c28()); + u16 value = gRandom.Next32(this->mUnk_004.mUnk_000[i].func_ov000_02060c28()); this->mUnk_004.mUnk_000[i].func_ov000_02060bd8(value); Vec2us pos; - pos.x = pRandom->Next32(0, SUBSCREEN_WIDTH); - pos.y = pRandom->Next32(0, SUBSCREEN_HEIGHT); + pos.x = pRandom->Next32(SUBSCREEN_WIDTH); + pos.y = pRandom->Next32(SUBSCREEN_HEIGHT); Vec2us *pVec = &this->mUnk_004.mUnk_E10[i]; pVec->x = pos.x; @@ -189,8 +189,8 @@ ARM void FileSelect_UnkClass7::vfunc_00() { this->mUnk_004.mUnk_000[i].func_ov000_02060b64(); Vec2us pos; - pos.x = gRandom.Next32(0, SUBSCREEN_WIDTH); - pos.y = gRandom.Next32(0, SUBSCREEN_HEIGHT); + pos.x = gRandom.Next32(SUBSCREEN_WIDTH); + pos.y = gRandom.Next32(SUBSCREEN_HEIGHT); Vec2us *pVec = &this->mUnk_004.mUnk_E10[i]; pVec->x = pos.x; diff --git a/src/019_MainSelect/GameModeFileSelect.cpp b/src/019_MainSelect/GameModeFileSelect.cpp index 940418ce..1e943749 100644 --- a/src/019_MainSelect/GameModeFileSelect.cpp +++ b/src/019_MainSelect/GameModeFileSelect.cpp @@ -37,7 +37,7 @@ ARM void GameModeFileSelect::vfunc_08() { const UnkStruct_ov019_020d1d80 *ptr2 = &data_ov019_020d1d80; this->mUnk_04.mUnk_14 = gSaveManager.mpSaveFile; - data_ov000_020b504c.func_ov000_0206807c((void *) &data_ov019_020d1d80, &this->mUnk_04); + data_ov000_020b504c.func_ov000_0206807c(ptr2->mUnk_00, &this->mUnk_04); data_ov000_020b50c0.func_ov001_020bd8ac(); data_ov000_020b51b8.func_ov000_0206c9a8(3, 0, 0x7F, 0); diff --git a/src/024_MainGame/Actor/ActorUnkOBPC.cpp b/src/024_MainGame/Actor/ActorUnkOBPC.cpp index c599c9b9..3b269c8f 100644 --- a/src/024_MainGame/Actor/ActorUnkOBPC.cpp +++ b/src/024_MainGame/Actor/ActorUnkOBPC.cpp @@ -1,7 +1,12 @@ -//! TODO: This file was generated automatically and might contain errors - #include "Actor/ActorUnkOBPC.hpp" +#include "Actor/ActorManager.hpp" #include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" +#include "Unknown/UnkStruct_ov000_02067bc4.hpp" + +extern unk32 data_ov000_020b3000; ARM DECL_PROFILE(ActorProfileUnkOBPC); @@ -12,14 +17,163 @@ ARM Actor *ActorProfileUnkOBPC::Create() { ARM ActorProfileUnkOBPC::ActorProfileUnkOBPC() : ActorProfile(ActorId_OBPC) {} -ARM ActorUnkOBPC::ActorUnkOBPC() {} +ARM ActorUnkOBPC::ActorUnkOBPC() : + mUnk_94(0), + mUnk_98(0), + mUnk_9C(0) {} -ARM void ActorUnkOBPC::func_ov024_020d6f28(void) {} -ARM void ActorUnkOBPC::func_ov024_020d6f74(void) {} -ARM void ActorUnkOBPC::func_ov024_020d6f94(void) {} -ARM void ActorUnkOBPC::func_ov024_020d7050(void) {} -ARM void ActorUnkOBPC::func_ov024_020d7064(void) {} -ARM void ActorUnkOBPC::func_ov024_020d7154(void) {} +ARM bool ActorUnkOBPC::vfunc_18(unk32 param1) { + this->mUnk_94 = this->mUnk_5C.mParams[1]; + this->mUnk_98 = this->mUnk_5C.mParams[3]; + + if (!this->func_ov024_020d6f74()) { + this->func_ov024_020d7064(0x00, 0x01); + } else { + this->func_ov024_020d7064(0x01, 0x01); + } + + return true; +} + +ARM bool ActorUnkOBPC::func_ov024_020d6f74(void) { + if (this->mUnk_5C.mUnk_1C_0 != 0) { + return this->func_ov000_02098a60(1); + } + + return false; +} + +ARM void ActorUnkOBPC::vfunc_20(void) { + switch (this->mUnk_4C) { + case 0: + if (this->func_ov024_020d7154()) { + if (this->mUnk_5C.mUnk_20 == 0) { + this->func_ov024_020d7064(0x01, 0x00); + } else if (data_ov000_020b504c.func_ov000_0206807c(this->mUnk_5C.mUnk_20, &this->mUnk_9C)) { + this->func_ov024_020d7064(0x01, 0x00); + } + } + break; + case 1: + if (this->mUnk_5C.mParams[2] != 0 && !this->func_ov024_020d7154()) { + this->func_ov024_020d7064(0x00, 0x00); + } + break; + default: + break; + } + + if ((u16) this->mUnk_9C.mUnk_08 != 0xFFFF) { + this->mUnk_9C.vfunc_04(); + } +} + +ARM void ActorUnkOBPC::vfunc_24(void) { + this->vfunc_20(); +} + +ARM void ActorUnkOBPC::func_ov024_020d7064(s16 param1, unk32 param2) { + this->mUnk_4C = param1; + + switch (this->mUnk_4C) { + case 0: + if (this->mUnk_5C.mParams[2] == 0 || this->mUnk_5C.mParams[2] == 2) { + break; + } + + switch (this->mUnk_98) { + case 1: + this->func_ov000_02098a88(0, 1); + break; + case 2: + break; + case 0: + default: + this->func_ov000_02098a88(0, 0); + break; + } + break; + case 1: + switch (this->mUnk_98) { + case 1: + this->func_ov000_02098a88(0, 0); + break; + case 2: + if (this->func_ov000_02098a60(0)) { + this->func_ov000_02098a88(0, 0); + } else { + this->func_ov000_02098a88(0, 1); + } + break; + case 0: + default: + this->func_ov000_02098a88(0, 1); + break; + } + break; + default: + break; + } +} + +ARM bool ActorUnkOBPC::func_ov024_020d7154(void) { + u8 temp_r4 = this->mUnk_5C.mParams[0]; + UnkStruct_027e0cd8_0c *temp_r5 = data_027e0cd8->mUnk_0C; + ActorManager *pActorMgr; + VecFx32 sp10; + + switch (this->mUnk_94) { + case 0: + if (data_027e09a4->IsTrain()) { + VecFx32_Copy(&data_027e0ce0->mUnk_38->mPos, &sp10); + } else { + VecFx32_Copy(data_027e0ce0->func_01fff148(0), &sp10); + } + break; + case 2: { + struct { + void *ptr; + unk32 actorId; + } sp8; + + sp8.ptr = &data_ov000_020b3000; + sp8.actorId = ActorId_KEYB; + pActorMgr = gpActorManager; + + Actor **ppActor = pActorMgr->func_01fff350(&sp8, pActorMgr->mActorTable); + + if (ppActor == pActorMgr->mUnk_08) { + return false; + } + + VecFx32_Copy(&(*ppActor)->mPos, &sp10); + break; + } + default: { + struct { + void *ptr; + unk32 actorId; + } sp0; + + sp0.ptr = &data_ov000_020b3000; + sp0.actorId = ActorId_KEYT; + pActorMgr = gpActorManager; + + Actor **ppActor = pActorMgr->func_01fff350(&sp0, pActorMgr->mActorTable); + + if (ppActor == pActorMgr->mUnk_08) { + return false; + } + + VecFx32_Copy(&(*ppActor)->mPos, &sp10); + break; + } + } + + sp10.y = 0; + return temp_r5->func_ov000_020802ec(temp_r4, &sp10); +} ARM ActorUnkOBPC::~ActorUnkOBPC() {} + ARM ActorProfileUnkOBPC::~ActorProfileUnkOBPC() {} diff --git a/src/024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp b/src/024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp new file mode 100644 index 00000000..bc8bbf97 --- /dev/null +++ b/src/024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp @@ -0,0 +1,301 @@ +#include "Actor/ActorUnk_ov000_020a8bb0.hpp" +#include "Unknown/UnkStruct_027e0960.hpp" + +struct UnkFuncStruct1 { + s16 unk_00; +}; + +extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, void *); +extern "C" u16 func_01ffbbe0(fx32 x, fx32 z); +extern "C" void func_01ff930c(s16 *, unk16, unk32); +extern "C" unk32 func_01ff9258(int, int); +extern "C" fx32 func_02017f54(s16 *pAngle, UnkFuncStruct1); + +//! TODO: probably not there? +bool data_ov024_020d86b4 = false; + +THUMB_BEGIN + +ActorUnk_ov000_020a8bb0_EC::ActorUnk_ov000_020a8bb0_EC() { + this->mUnk_00 = 0; + this->mUnk_04 = 0; + this->mUnk_05 = 0; + this->mUnk_06 = false; + this->mUnk_07 = 0; + this->mUnk_08 = 0; + this->mUnk_0C.x = 0; + this->mUnk_0C.y = 0; + this->mUnk_0C.z = 0; +} + +THUMB_END + +void ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6680(const VecFx32 *param1, u8 *param2) { + this->mUnk_00 = data_027e0960->func_ov000_0205a390(*param2); + VecFx32_Copy(param1, &this->mUnk_0C); +} + +void ActorUnk_ov000_020a8bb0_EC::func_ov024_020d66c0(const VecFx32 *param1, unk32 param2) { + this->mUnk_00 = data_027e0960->func_ov000_0205a3fc(*param1, param2); + VecFx32_Copy(param1, &this->mUnk_0C); +} + +bool ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6704() { + if (this->mUnk_08 & 0x10 || this->mUnk_08 & 0x08 || this->mUnk_08 & 0x04) { + return true; + } + + return false; +} + +void ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6730() { + BOOL var_r0; + + this->mUnk_08 |= 0x02; + this->mUnk_05 = *(volatile u8 *) &this->mUnk_04; + + switch (this->mUnk_00->pRALB->unk_02) { + case 1: + if (this->mUnk_06) { + if (this->mUnk_04 == 0) { + var_r0 = true; + } else { + var_r0 = false; + } + + if (var_r0) { + this->mUnk_08 |= 0x04; + } else { + this->mUnk_08 |= 0x02; + this->mUnk_04--; + } + } else { + if (this->mUnk_04 == this->mUnk_00->mTable.GetLastIndex()) { + var_r0 = true; + } else { + var_r0 = false; + } + + if (var_r0) { + this->mUnk_08 |= 0x04; + } else { + this->mUnk_08 |= 0x02; + this->mUnk_04++; + } + } + + break; + case 2: + if (this->mUnk_06) { + if (*(volatile u8 *) &this->mUnk_04 == 0) { + var_r0 = true; + } else { + var_r0 = false; + } + + // required + u16 unk_08 = this->mUnk_08; + u16 unk_04 = this->mUnk_04; + + if (var_r0) { + this->mUnk_08 = unk_08 | 0x08; + this->mUnk_04 = unk_04 + 1; + } else { + this->mUnk_08 = unk_08 | 0x02; + this->mUnk_04 = unk_04 - 1; + } + } else { + if (this->mUnk_04 == this->mUnk_00->mTable.GetLastIndex()) { + var_r0 = true; + } else { + var_r0 = false; + } + + if (var_r0) { + this->mUnk_04--; + this->mUnk_08 |= 0x10; + } else { + this->mUnk_08 |= 0x02; + this->mUnk_04++; + } + } + + if (this->func_ov024_020d6704()) { + if (this->mUnk_06) { + this->mUnk_06 = false; + } else { + this->mUnk_06 = true; + } + } + + break; + case 0: + if (this->mUnk_06) { + if (this->mUnk_04 == 0) { + var_r0 = true; + } else { + var_r0 = false; + } + + if (var_r0) { + this->mUnk_08 |= 0x08; + this->mUnk_04 = this->mUnk_00->mTable.GetLastIndex(); + } else { + this->mUnk_08 |= 0x02; + this->mUnk_04--; + } + } else { + if (this->mUnk_04 == this->mUnk_00->mTable.GetLastIndex()) { + var_r0 = true; + } else { + var_r0 = false; + } + + if (var_r0) { + this->mUnk_04 = 0; + this->mUnk_08 |= 0x10; + } else { + this->mUnk_08 |= 0x02; + this->mUnk_04++; + } + } + + break; + default: + break; + } +} + +u16 *ActorUnk_ov000_020a8bb0_EC::func_ov024_020d69d8(VecFx32 *pPos, s16 *pAngle, VecFx32 *pVel, unk32 param4, s16 param5, + unk32 param6) { + VecFx32 sp1C; + VecFx32 sp10; + VecFx32 sp4; + UnkFuncStruct1 sp0; + s16 temp_r1; + s32 var_r0; + s32 temp_r4; + + if (param4 == 0 || this->mUnk_08 & 0x04) { + pVel->x = pVel->z = 0; + return &this->mUnk_08; + } + + this->mUnk_08 = 0; + this->mUnk_00->mTable.Get(this->mUnk_04).vfunc_0C(&sp1C); + + func_01ffb714(&sp1C, pPos, &sp10); + + temp_r1 = func_01ffbbe0(sp10.x, sp10.z); + sp0.unk_00 = temp_r1; + func_01ff930c((s16 *) pAngle, temp_r1, param5); + + temp_r4 = func_01ff9258(sp1C.x - pPos->x, sp1C.z - pPos->z); + + var_r0 = MUL_FX32(param4, func_02017f54((s16 *) pAngle, sp0)); + if (var_r0 < param6) { + var_r0 = param6; + } + + if (temp_r4 < param4) { + func_01ffb714(&sp1C, pPos, &sp4); + pVel->x = sp4.x; + pVel->z = sp4.z; + this->func_ov024_020d6730(); + } else { + u16 angle = *pAngle; + + fx16 sin = SIN(angle); + fx16 cos = COS(angle); + + pVel->x = MUL_FX32(sin, var_r0); + pVel->z = MUL_FX32(cos, var_r0); + } + + return &this->mUnk_08; +} + +u16 *ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6b7c(VecFx32 *pPos, s16 *pAngle, VecFx32 *pVel, unk32 param4, s16 param5, + unk32 param6) { + VecFx32 sp28; + VecFx32 sp1C; + VecFx32 sp10; + VecFx32 sp4; + UnkFuncStruct1 sp0; + s16 temp_r1; + s32 var_r0; + s32 temp_r4; + + if (param4 == 0 || this->mUnk_08 & 0x04) { + pVel->x = pVel->z = 0; + return &this->mUnk_08; + } + + this->mUnk_08 = 0; + this->mUnk_00->mTable.Get(this->mUnk_04).vfunc_0C(&sp28); + + func_01ffb714(&sp28, pPos, &sp1C); + func_01ffb714(&sp28, &this->mUnk_0C, &sp10); + + temp_r1 = func_01ffbbe0(sp1C.x, sp1C.z); + sp0.unk_00 = temp_r1; + func_01ff930c((s16 *) pAngle, temp_r1, param5); + + temp_r4 = func_01ff9258(sp28.x - pPos->x, sp28.z - pPos->z); + + var_r0 = MUL_FX32(param4, func_02017f54((s16 *) pAngle, sp0)); + if (var_r0 < param6) { + var_r0 = param6; + } + + if (temp_r4 < param4 && this->mUnk_00->func_ov000_02059ccc(this->mUnk_04, this->mUnk_00->pRALB->unk_02)) { + func_01ffb714(&sp28, pPos, &sp4); + pVel->x = sp4.x; + pVel->z = sp4.z; + VecFx32_Copy(&sp28, &this->mUnk_0C); + this->func_ov024_020d6730(); + } else if (VecFx32_Dot(&sp1C, &sp10) < 0 || temp_r4 < param4) { + VecFx32_Copy(&sp28, &this->mUnk_0C); + this->func_ov024_020d6730(); + } else { + u16 angle = *pAngle; + + fx16 sin = SIN(angle); + fx16 cos = COS(angle); + + pVel->x = MUL_FX32(sin, var_r0); + pVel->z = MUL_FX32(cos, var_r0); + } + + return &this->mUnk_08; +} + +u16 *ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6d80(VecFx32 *pPos, VecFx32 *pVel) { + VecFx32 sp18; + VecFx32 spC; + VecFx32 sp0; + s32 temp_r4; + + if ((pVel->x == 0 && pVel->y == 0 && pVel->z == 0) || this->mUnk_08 & 0x04) { + return &this->mUnk_08; + } + + this->mUnk_08 = 0; + this->mUnk_00->mTable.Get(this->mUnk_04).vfunc_0C(&sp18); + + func_01ffb714(&sp18, &this->mUnk_0C, &spC); + func_01ffb714(&sp18, pPos, &sp0); + + temp_r4 = func_01ff9258(sp18.x - pPos->x, sp18.z - pPos->z); + sp0.y = spC.y = 0; + + if (temp_r4 <= VecFx32_Length(pVel)) { + VecFx32_Copy(&sp18, &this->mUnk_0C); + this->func_ov024_020d6730(); + } else if (VecFx32_Dot(&sp0, &spC) < 0) { + VecFx32_Copy(&sp18, &this->mUnk_0C); + this->func_ov024_020d6730(); + } + + return &this->mUnk_08; +} diff --git a/src/024_MainGame/Game/UnkActorSystem1_024.cpp b/src/024_MainGame/Actor/UnkActorSystem1_024.cpp similarity index 100% rename from src/024_MainGame/Game/UnkActorSystem1_024.cpp rename to src/024_MainGame/Actor/UnkActorSystem1_024.cpp diff --git a/src/024_MainGame/Game/UnkActorSystem2_024.cpp b/src/024_MainGame/Actor/UnkActorSystem2_024.cpp similarity index 100% rename from src/024_MainGame/Game/UnkActorSystem2_024.cpp rename to src/024_MainGame/Actor/UnkActorSystem2_024.cpp diff --git a/src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp b/src/024_MainGame/Actor/UnkStruct_ov024_020d8660_024.cpp similarity index 95% rename from src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp rename to src/024_MainGame/Actor/UnkStruct_ov024_020d8660_024.cpp index c06ac3b8..b36d86a6 100644 --- a/src/024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp +++ b/src/024_MainGame/Actor/UnkStruct_ov024_020d8660_024.cpp @@ -1,7 +1,7 @@ #include "Actor/Actor.hpp" #include "Actor/ActorManager.hpp" +#include "Unknown/UICounterManager.hpp" #include "Unknown/UnkStruct_0204a110.hpp" -#include "Unknown/UnkStruct_020d8698.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" #include "Unknown/UnkStruct_ov000_020b51b8.hpp" @@ -47,7 +47,7 @@ void UnkStruct_ov024_020d8660::func_ov024_020c4b4c(unk32 param1) { void UnkStruct_ov024_020d8660::func_ov024_020c4ba0() { if (this->mUnk_00 != NULL) { this->mUnk_00->vfunc_20(1); - data_ov024_020d8698->func_ov024_020cd150(); + gpUICounterManager->func_ov024_020cd150(); } if (this->mUnk_00 != NULL && !this->mUnk_00->mUnk_04) { @@ -101,7 +101,7 @@ void UnkStruct_ov024_020d8660::func_ov024_020c4cc8() { this->mUnk_00 = NULL; this->mUnk_1C = 0; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_0204a110.func_02019538(4, 1); } else { data_0204a110.func_02019538(0, 1); @@ -111,7 +111,7 @@ void UnkStruct_ov024_020d8660::func_ov024_020c4cc8() { GX_func_0008(®_BLDCNT, 0x2F, 0); GX_func_0008(®_BLDCNT_SUB, 0x3F, 0); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_0204a110.mUnk_D9C.func_0201c494(1); } else { data_0204a110.mUnk_D9C.func_0201c494(0); diff --git a/src/024_MainGame/CreditsEndingType.cpp b/src/024_MainGame/CreditsEndingType.cpp new file mode 100644 index 00000000..d6857ba7 --- /dev/null +++ b/src/024_MainGame/CreditsEndingType.cpp @@ -0,0 +1,11 @@ +#include "types.h" + +static s16 sCreditsEndingType = 2; + +void SetCreditsEndingType(s16 value) { + sCreditsEndingType = value; +} + +s16 GetCreditsEndingType() { + return sCreditsEndingType; +} diff --git a/src/024_MainGame/Game/AdventureModeManager_024.cpp b/src/024_MainGame/Game/AdventureModeManager_024.cpp index be2f67c5..0708d666 100644 --- a/src/024_MainGame/Game/AdventureModeManager_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_024.cpp @@ -3,11 +3,11 @@ #include "MainGame/AdventureMode.hpp" #include "System/OverlayManager.hpp" #include "Unknown/Common.hpp" +#include "Unknown/UICounterManager.hpp" #include "Unknown/UnkFileSystem.hpp" #include "Unknown/UnkStruct_0204a088.hpp" #include "Unknown/UnkStruct_0204a110.hpp" #include "Unknown/UnkStruct_0204e5f8.hpp" -#include "Unknown/UnkStruct_020d8698.hpp" #include "Unknown/UnkStruct_027e0998.hpp" #include "Unknown/UnkStruct_027e09a0.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" @@ -34,12 +34,8 @@ extern "C" { void func_02019b3c(); void func_02019c4c(); void func_02019a74(); -unk32 func_ov024_020d5304(unk32 sceneIndex); void func_0200a7b0(unk32 param1, void *param2, void *param3, void *param4, unk32 param5, unk32 param6, unk32 param7, unk32 param8); -void func_ov024_020d24d4(void *); -void func_ov024_020d2538(void *, SceneIndex, unk32, void *); -void func_ov024_020d2518(void *); } extern void *data_ov000_020b64f8; @@ -113,7 +109,7 @@ void AdventureModeManager::func_ov024_020c53e8() { data_0204a110.mUnk_D9C.func_0201c494(1); break; case 3: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { this->func_ov024_020c5364(); } else { this->func_ov024_020c52f4(); @@ -127,7 +123,7 @@ void AdventureModeManager::func_ov024_020c53e8() { } break; case 4: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { this->func_ov024_020c5364(); } else { this->func_ov024_020c52f4(); @@ -142,7 +138,7 @@ void AdventureModeManager::func_ov024_020c53e8() { } break; case 5: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { this->func_ov024_020c537c(); } else { this->func_ov024_020c530c(); @@ -179,7 +175,7 @@ void AdventureModeManager::vfunc_24() { this->mUnk_15C->func_ov017_020c3c64(); } - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_ov026_0213f578->func_ov026_020f4844(); } @@ -248,7 +244,7 @@ void AdventureModeManager::vfunc_24() { return; } - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_027e0ce0->mUnk_38->mUnk_010->func_ov026_020f4870(); } @@ -395,7 +391,7 @@ void AdventureModeManager::vfunc_24() { } } - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { return; } @@ -425,10 +421,10 @@ void AdventureModeManager::vfunc_24() { } void AdventureModeManager::func_ov024_020c5cec() { - data_ov024_020d8698->func_ov024_020cd420(); + gpUICounterManager->func_ov024_020cd420(); - if (!data_027e09a4->func_01ffd3d8()) { - data_ov024_020d8698->func_ov024_020cd458(data_027e0ce0->mUnk_2C->mEquippedItem, true); + if (!data_027e09a4->IsTrain()) { + gpUICounterManager->func_ov024_020cd458(data_027e0ce0->mUnk_2C->mEquippedItem, true); if (gOverlayManager.IsPlayerSub() && data_0204a088->mUnk_00 == OverlayIndex_SceneInit) { this->mUnk_168->func_ov031_0210df60(1); @@ -450,8 +446,8 @@ bool AdventureModeManager::func_ov024_020c5dac() { !data_027e09b8->func_ov000_020732dc(3) && !data_027e09b8->func_ov000_020732dc(4)) { if (data_0204e5f8.mUnk_00.GetNextTarget() == GetLinkListOrigin(data_0204e5f8.mUnk_00) && (unk_00 != 1 || this->func_ov024_020c69d0() != 0) && - (data_027e09a4->func_01ffd3d8() || this->mUnk_168->func_ov031_0210dfd8() == 0) && - (!data_027e09a4->func_01ffd3d8() || data_ov026_02138d10->func_ov026_020e18fc() != 0)) { + (data_027e09a4->IsTrain() || this->mUnk_168->func_ov031_0210dfd8() == 0) && + (!data_027e09a4->IsTrain() || data_ov026_02138d10->func_ov026_020e18fc() != 0)) { return true; } } @@ -462,7 +458,7 @@ bool AdventureModeManager::func_ov024_020c5dac() { bool AdventureModeManager::func_ov024_020c5ecc() { if (data_ov026_02138d10->func_ov026_020e13f4() != 0 && data_027e09b8->func_01ffd420() == 0 && - func_ov024_020d5304(data_027e09a4->mUnk_00.mSceneIndex) != 0 && + func_ov024_020d5304(data_027e09a4->mUnk_00.mSceneIndex) && (data_ov024_020d8660 == NULL || data_ov024_020d8660->mUnk_00 == NULL) && this->func_ov024_020c6a20() != 0 && data_ov026_0213f590.func_ov026_020f7cc0() == 0) { return true; @@ -474,7 +470,7 @@ bool AdventureModeManager::func_ov024_020c5ecc() { bool AdventureModeManager::func_ov024_020c5f70() { bool var_r4 = false; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { var_r4 = true; } else if (data_027e0d34 != NULL) { var_r4 = data_027e0d34->func_ov031_020d97f4(); @@ -487,8 +483,7 @@ bool AdventureModeManager::func_ov024_020c5f70() { if (data_0204e5f8.mUnk_00.GetNextTarget() == GetLinkListOrigin(data_0204e5f8.mUnk_00) && (unk_00 == 1 || unk_00 - 6 <= 1) && (unk_00 != 1 || this->func_ov024_020c69d0() != 0) && (data_ov024_020d8660 == NULL || data_ov024_020d8660->mUnk_00 == NULL) && - (data_027e09a4->func_01ffd3d8() || this->mUnk_168->func_ov031_0210dfd8() == 0) && - !data_027e09a4->IsDarkRealm()) { + (data_027e09a4->IsTrain() || this->mUnk_168->func_ov031_0210dfd8() == 0) && !data_027e09a4->IsDarkRealm()) { return true; } } @@ -500,7 +495,7 @@ bool AdventureModeManager::func_ov024_020c5f70() { bool AdventureModeManager::func_ov024_020c60f4() { bool var_r4 = false; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { var_r4 = true; } else if (data_027e0d34 != NULL) { var_r4 = data_027e0d34->func_ov031_020d97e4(); @@ -523,7 +518,7 @@ bool AdventureModeManager::func_ov024_020c623c() { u32 scene = data_027e09a4->mUnk_00.mSceneIndex; if ((gOverlayManager.IsMapA6() && ActorUnkTUTO::func_ov037_02120a64() != 0) || - (data_027e09a4->func_01ffd400()->mUnk_10 == 6 && scene == SceneIndex_f_trnnpc) || + (data_027e09a4->GetCurrentCourseEntry()->unk_10 == 6 && scene == SceneIndex_f_trnnpc) || (data_ov024_020d8660 != NULL && data_ov024_020d8660->mUnk_00 != NULL) || (scene - SceneIndex_b_last1 <= 3)) { return false; } @@ -667,7 +662,7 @@ void AdventureModeManager::func_ov024_020c66c0() { void AdventureModeManager::func_ov024_020c671c() { this->func_ov024_020c6770(this->mUnk_1C4.sceneIndex, this->mUnk_1C4.unk_04, 1, this->mUnk_1C4.unk_06); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_027e0ce0->mUnk_38->mUnk_158->func_ov026_020dc2d0(); } } @@ -675,7 +670,7 @@ void AdventureModeManager::func_ov024_020c671c() { void AdventureModeManager::func_ov024_020c6770(SceneIndex sceneIndex, u8 param2, unk16 param3, unk16 param4) { this->func_ov024_020c6514(sceneIndex, param2, param3, param4); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_027e0cf8->func_ov024_020c77b0(1); } else { data_027e0cf8->func_ov024_020c77b0(0); @@ -710,15 +705,14 @@ void AdventureModeManager::func_ov024_020c6840(SceneIndex sceneIndex) { { UnkDataStruct3 uStack_e8(0x1770); - func_ov024_020d24d4(&uStack_e8.mUnk_04); - func_ov024_020d2538(&uStack_e8.mUnk_04, sceneIndex, 0, uStack_e8.mUnk_00.unk_00); + uStack_e8.mUnk_04.func_ov024_020d2538(sceneIndex, 0, uStack_e8.mUnk_00.unk_00); data_027e0cf8->func_ov024_020c755c(&uStack_e8.mUnk_04); - func_ov024_020d2518(&uStack_e8.mUnk_04); + uStack_e8.mUnk_04.func_ov024_020d2518(); } } -void AdventureModeManager::func_ov024_020c68d4() { - data_027e0cf8->func_ov024_020c77d0(); +void AdventureModeManager::func_ov024_020c68d4(Vec2s *param1, unk32 param2) { + data_027e0cf8->func_ov024_020c77d0(param1, param2); } bool AdventureModeManager::func_ov024_020c68ec(unk32 param1, unk32 param2) { @@ -762,7 +756,7 @@ void AdventureModeManager::func_ov024_020c699c() { } unk32 AdventureModeManager::func_ov024_020c69d0() { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { unk32 uVar2 = 0; if (this->mUnk_16C != NULL && this->mUnk_16C->func_ov026_020d8e30() != 0) { @@ -791,17 +785,17 @@ void AdventureModeManager::func_ov024_020c6a48(unk32 param1, bool param2) { case 1: case 2: case 3: - data_ov024_020d8698->func_ov024_020cd4e4(param1, param2); + gpUICounterManager->func_ov024_020cd4e4(param1, param2); break; case 4: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { this->mUnk_16C->func_ov026_020d8dd4(param2); } else { this->mUnk_168->func_ov031_0210df70(param2); } break; case 5: - data_ov024_020d8698->func_ov024_020cd4e4(param1, param2); + gpUICounterManager->func_ov024_020cd4e4(param1, param2); this->func_ov024_020c6a48(4, param2); break; default: @@ -815,13 +809,13 @@ bool AdventureModeManager::func_ov024_020c6af4(unk32 param1) { case 1: case 2: case 3: - if (data_ov024_020d8698 == NULL) { + if (gpUICounterManager == NULL) { return false; } - return data_ov024_020d8698->func_ov024_020cd5c0(param1); + return gpUICounterManager->func_ov024_020cd5c0(param1); case 4: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { if (this->mUnk_16C != NULL) { return this->mUnk_16C->mUnk_1C; } @@ -842,23 +836,23 @@ bool AdventureModeManager::func_ov024_020c6af4(unk32 param1) { } void AdventureModeManager::func_ov024_020c6b8c() { - if (this->mUnk_1B4 && data_ov024_020d8698 != NULL) { - data_ov024_020d8698->Detach(); + if (this->mUnk_1B4 && gpUICounterManager != NULL) { + gpUICounterManager->Detach(); } - if (data_ov024_020d8698 != NULL) { - UnkStruct_020d8698 *ptr = data_ov024_020d8698; + if (gpUICounterManager != NULL) { + UICounterManager *ptr = gpUICounterManager; this->mUnk_104.Append(ptr); ptr->vfunc_18(); if (!this->mUnk_1B4) { - data_ov024_020d8698->func_ov024_020cd094(); + gpUICounterManager->func_ov024_020cd094(); } this->mUnk_1B4 = true; } - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { if (!this->mUnk_1B5 && this->mUnk_1B0 != NULL) { AdventureModeManager_1B0 *ptr = this->mUnk_1B0; this->mUnk_104.Append(ptr); @@ -870,12 +864,12 @@ void AdventureModeManager::func_ov024_020c6b8c() { } void AdventureModeManager::func_ov024_020c6c60() { - if (this->mUnk_1B4 && data_ov024_020d8698 != NULL) { - data_ov024_020d8698->Detach(); + if (this->mUnk_1B4 && gpUICounterManager != NULL) { + gpUICounterManager->Detach(); this->mUnk_1B4 = false; } - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { if (this->mUnk_1B5 && this->mUnk_1B0 != NULL) { this->mUnk_1B0->Detach(); this->mUnk_1B5 = false; diff --git a/src/024_MainGame/Game/AdventureModeManager_160_024.cpp b/src/024_MainGame/Game/AdventureModeManager_160_024.cpp index 207f036c..242c3771 100644 --- a/src/024_MainGame/Game/AdventureModeManager_160_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_160_024.cpp @@ -160,7 +160,7 @@ void AdventureModeManager_160::func_ov024_020c7d4c(unk32 param1) { this->mUnk_0C = 7; if (param1 == 6) { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_0204a110.func_02019538(4, 1); } else { data_0204a110.func_02019538(0, 1); @@ -335,7 +335,7 @@ void AdventureModeManager_160::vfunc_20(unk32 param1, unk32 param2) { this->mUnk_70.mUnk_27 = false; SceneIndex sceneIndex = GetAdventureModeManager()->mUnk_1C4.sceneIndex; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c555c(1); } else { if (data_027e09a0->func_ov000_02070378(sceneIndex)) { diff --git a/src/024_MainGame/Game/AdventureModeManager_174_Base_024.cpp b/src/024_MainGame/Game/AdventureModeManager_174_Base_024.cpp index 9a326623..878ac41d 100644 --- a/src/024_MainGame/Game/AdventureModeManager_174_Base_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_174_Base_024.cpp @@ -96,7 +96,7 @@ void AdventureModeManager_174_Base::func_ov024_020c8b2c() { data_027e0cd8->func_ov000_02081c28(); AdventureModeManager *pAdvMgr = GetAdventureModeManager(); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c555c(1); } else { if (data_027e0998->func_ov024_020c7354()) { @@ -117,14 +117,14 @@ void AdventureModeManager_174_Base::func_ov024_020c8b2c() { if (data_027e09a4->IsDarkRealm()) { data_0204a110.func_02019538(6, 1); } else { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_0204a110.func_02019538(4, 1); } else { data_0204a110.func_02019538(0, 1); } } - if (data_027e09a4->func_01ffd3d8() || data_027e0998->func_ov024_020c7354()) { + if (data_027e09a4->IsTrain() || data_027e0998->func_ov024_020c7354()) { pAdvMgr->func_ov024_020c671c(); } else { pAdvMgr->func_ov024_020c66c0(); diff --git a/src/024_MainGame/Game/AdventureModeManager_180_024.cpp b/src/024_MainGame/Game/AdventureModeManager_180_024.cpp index 04fa9f69..d79f2654 100644 --- a/src/024_MainGame/Game/AdventureModeManager_180_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_180_024.cpp @@ -185,7 +185,7 @@ void AdventureModeManager_180::vfunc_20(unk32 param1, unk32 param2) { GetAdventureModeManager()->func_ov024_020c555c(0); GetAdventureModeManager()->func_ov024_020c53e8(); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c671c(); } else { GetAdventureModeManager()->func_ov024_020c66c0(); diff --git a/src/024_MainGame/Game/AdventureModeManager_184_024.cpp b/src/024_MainGame/Game/AdventureModeManager_184_024.cpp index c5bb9300..aef5e7b6 100644 --- a/src/024_MainGame/Game/AdventureModeManager_184_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_184_024.cpp @@ -1,8 +1,8 @@ #include "MainGame/AdventureMode.hpp" +#include "Unknown/UICounterManager.hpp" #include "Unknown/UnkStruct_0204a088.hpp" #include "Unknown/UnkStruct_0204a110.hpp" #include "Unknown/UnkStruct_0204e5f8.hpp" -#include "Unknown/UnkStruct_020d8698.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" #include "Unknown/UnkStruct_ov000_02067bc4.hpp" @@ -26,7 +26,7 @@ AdventureModeManager_184::AdventureModeManager_184(GameModeManagerBase_104 *para AdventureModeManager_184::~AdventureModeManager_184() {} void AdventureModeManager_184::vfunc_08(unk32 param1) { - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { this->func_ov024_020c979c(param1); } } @@ -36,16 +36,15 @@ void AdventureModeManager_184::vfunc_0C(unk32 param1) { this->mUnk_18 = false; if (data_ov024_020d8660->mUnk_1C == 5) { - data_027e0994->mUnk_004.func_0201c0c4(0x25); + gpCurrentGameModeMgr->mUnk_004.func_0201c0c4(0x25); } data_0204a088->func_ov000_02061248(); MapObjectId mapObjId = data_027e09b8->mUnk_0C->mMapObjId; - if (data_027e09a4->func_01ffd3d8() || - (data_027e09b8->func_ov000_020732dc(2) && - (mapObjId != MapObjectId_WDST || - (mapObjId == MapObjectId_WDST && !data_ov000_020b504c.func_ov000_02067f88(0, 0))))) { + if (data_027e09a4->IsTrain() || (data_027e09b8->func_ov000_020732dc(2) && + (mapObjId != MapObjectId_WDST || + (mapObjId == MapObjectId_WDST && !data_ov000_020b504c.func_ov000_02067f88(0, 0))))) { this->mUnk_10 = func_ov010_020b65fc(&this->mUnk_0C); } else { this->mUnk_10 = func_ov010_020b6520(&this->mUnk_0C); @@ -56,8 +55,8 @@ void AdventureModeManager_184::vfunc_0C(unk32 param1) { } this->mUnk_10->func_ov010_020b7008(); - data_ov024_020d8698->func_ov024_020cd368(false, false); - data_ov024_020d8698->func_ov024_020cd3f0(false); + gpUICounterManager->func_ov024_020cd368(false, false); + gpUICounterManager->func_ov024_020cd3f0(false); } if (this->mUnk_10 != NULL && this->mUnk_10->vfunc_20()) { @@ -80,7 +79,7 @@ void AdventureModeManager_184::func_ov024_020c979c(unk32 param1) { MapObjectId mapObjId = data_027e09b8->mUnk_0C->mMapObjId; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { if (data_027e09a4->IsDarkRealm()) { data_0204a110.func_02019538(7, 0); } else { @@ -101,13 +100,13 @@ void AdventureModeManager_184::vfunc_18(unk32 param1) { this->mUnk_10->func_ov010_020b7054(); if (data_ov000_020b504c.func_ov000_02067f88(0, 0)) { - data_ov024_020d8698->func_ov024_020cd3a4(); - data_ov024_020d8698->func_ov024_020cd400(); + gpUICounterManager->func_ov024_020cd3a4(); + gpUICounterManager->func_ov024_020cd400(); } break; case 2: - data_ov024_020d8698->func_ov024_020cd3a4(); - data_ov024_020d8698->func_ov024_020cd400(); + gpUICounterManager->func_ov024_020cd3a4(); + gpUICounterManager->func_ov024_020cd400(); GetAdventureModeManager()->func_ov024_020c6c60(); data_ov000_020b504c.func_ov000_02067f5c(0); break; @@ -124,7 +123,7 @@ void AdventureModeManager_184::vfunc_1C(unk32 param1) { switch (param1) { case 1: if (this->mUnk_10 != NULL && this->mUnk_10->vfunc_20()) { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { data_0204a088->func_ov000_02061224(); } else { data_0204a088->func_ov000_02061230(); @@ -149,8 +148,8 @@ void AdventureModeManager_184::vfunc_20(unk32 param1, unk32 param2) { case 5: case 8: case 9: - data_ov024_020d8698->func_ov024_020cd3a4(); - data_ov024_020d8698->func_ov024_020cd400(); + gpUICounterManager->func_ov024_020cd3a4(); + gpUICounterManager->func_ov024_020cd400(); GetAdventureModeManager()->func_ov024_020c6c60(); data_ov000_020b504c.func_ov000_02067f5c(0); break; diff --git a/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp b/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp index ff634cc9..2e6b751b 100644 --- a/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_18C_024.cpp @@ -179,7 +179,7 @@ void AdventureModeManager_18C::vfunc_10(unk32 param1, unk32 param2) { void AdventureModeManager_18C::func_ov024_020c9c6c() { GetAdventureModeManager()->func_ov024_020c699c(); - data_027e0994->mUnk_004.func_0201c0c4(0x65); + gpCurrentGameModeMgr->mUnk_004.func_0201c0c4(0x65); if (this->mUnk_3A) { this->mUnk_10 = func_ov011_020b6520(&this->mUnk_0C, this->mUnk_4C); @@ -289,11 +289,11 @@ void AdventureModeManager_18C::vfunc_20(unk32 param1, unk32 param2) { switch (param1) { case 1: { - if (!data_027e09a4->func_01ffd3d8()) { + if (!data_027e09a4->IsTrain()) { GetAdventureModeManager()->mUnk_004.func_0201c0c4(0x68); } - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c555c(1); } else if (data_027e0998->func_ov024_020c7354()) { GetAdventureModeManager()->func_ov024_020c555c(4); @@ -303,7 +303,7 @@ void AdventureModeManager_18C::vfunc_20(unk32 param1, unk32 param2) { GetAdventureModeManager()->func_ov024_020c53e8(); - if (data_027e09a4->func_01ffd3d8() || data_027e0998->func_ov024_020c7354()) { + if (data_027e09a4->IsTrain() || data_027e0998->func_ov024_020c7354()) { GetAdventureModeManager()->func_ov024_020c671c(); } else { GetAdventureModeManager()->func_ov024_020c66c0(); diff --git a/src/024_MainGame/Game/AdventureModeManager_190_024.cpp b/src/024_MainGame/Game/AdventureModeManager_190_024.cpp index ca08dce5..ad8b2cf0 100644 --- a/src/024_MainGame/Game/AdventureModeManager_190_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_190_024.cpp @@ -62,7 +62,7 @@ void AdventureModeManager_190::vfunc_20(unk32 param1, unk32 param2) { this->mUnk_10 = NULL; data_0204a088->func_ov000_02061248(); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c555c(1); GetAdventureModeManager()->func_ov024_020c53e8(); } else { @@ -70,7 +70,7 @@ void AdventureModeManager_190::vfunc_20(unk32 param1, unk32 param2) { GetAdventureModeManager()->func_ov024_020c53e8(); } - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { GetAdventureModeManager()->func_ov024_020c671c(); } else { GetAdventureModeManager()->func_ov024_020c66c0(); diff --git a/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp b/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp index 16b4d104..cf28bceb 100644 --- a/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp @@ -27,7 +27,7 @@ static u16 data_ov024_020d869c; static const AdventureModeManager_1B8_Base_1C data_ov024_020d8200(0x14, 0x08, 0xD8, 0xB0); AdventureModeManager_1B8_Base::AdventureModeManager_1B8_Base(u8 bgType, bool param2, - const AdventureModeManager_1B8_Base_1C *param3, bool param4, + const AdventureModeManager_1B8_Base_1C ¶m3, bool param4, bool param5) { this->mUnk_00 = ADVMGR_UNK; this->mUnk_04 = ADVMGR_UNK; @@ -39,9 +39,9 @@ AdventureModeManager_1B8_Base::AdventureModeManager_1B8_Base(u8 bgType, bool par this->mBGType = bgType; this->mIsTopScreen = param2; this->mUnk_10 = param4; - this->mUnk_14 = GetUnkValue_ImplS(param3->mUnk_06, param4); + this->mUnk_14 = GetUnkValue_ImplS(param3.mUnk_06, param4); this->mUnk_18 = (u8 *) ::operator new(this->mUnk_14, HeapIndex_1, 4); - MI_CpuCopy16((void *) param3, &this->mUnk_1C, sizeof(AdventureModeManager_1B8_Base_1C)); + MI_CpuCopy16((void *) ¶m3, &this->mUnk_1C, sizeof(AdventureModeManager_1B8_Base_1C)); this->func_ov024_020d0698(); } @@ -432,7 +432,7 @@ unk32 AdventureModeManager_1B8_Base::func_ov024_020d0f2c(unk32 param1, unk32 par } AdventureModeManager_1B8::AdventureModeManager_1B8(u8 bgType, bool param2, bool param3) : - AdventureModeManager_1B8_Base(bgType, param2, &data_ov024_020d8200, param3, false) { + AdventureModeManager_1B8_Base(bgType, param2, data_ov024_020d8200, param3, false) { this->mUnk_24 = 0xFF; this->mUnk_28 = NULL; this->func_ov024_020d0e64(&data_ov024_020d869c, sizeof(data_ov024_020d869c)); diff --git a/src/024_MainGame/Game/GameModeAdventure_024.cpp b/src/024_MainGame/Game/GameModeAdventure_024.cpp index e08d9256..95ea1c72 100644 --- a/src/024_MainGame/Game/GameModeAdventure_024.cpp +++ b/src/024_MainGame/Game/GameModeAdventure_024.cpp @@ -17,12 +17,8 @@ THUMB_BEGIN GameModeAdventure::~GameModeAdventure() { UnkStruct_027e09a4::Destroy(); - - delete gSaveManager.mUnk_000; - gSaveManager.mUnk_000 = NULL; - + DELETE(gSaveManager.mUnk_000); func_0200e234(); - data_ov000_020b504c.func_ov001_020be6f4(); data_ov000_020b50c0.func_ov001_020bd87c(); } diff --git a/src/024_MainGame/MiscAdvManager.cpp b/src/024_MainGame/MiscAdvManager.cpp index 595d406b..7327bbf4 100644 --- a/src/024_MainGame/MiscAdvManager.cpp +++ b/src/024_MainGame/MiscAdvManager.cpp @@ -6,6 +6,8 @@ extern "C" u8 func_ov000_020a9a50(); +MiscAdvManager *gpMiscAdvManager = NULL; + MiscAdvManager *MiscAdvManager::Create() { return new(HeapIndex_1) MiscAdvManager(); } @@ -111,27 +113,38 @@ Vec2b *MiscAdvManager::GetStampPos(unk32 index) { return (Vec2b *) &this->mStampPositions[index]; } -// non-matching -void MiscAdvManager::func_ov024_020d64b4(unk32 param1, unk32 param2, u16 *param3) { +void MiscAdvManager::func_ov024_020d64b4(s8 param1, unk32 param2, const u16 *param3) { if (param2 < 0) { return; } - if ((u32) param2 >= StampType_Max || (u32) param1 >= StampType_Max) { + if ((u32) param2 >= 20 || (u32) param1 >= 20) { return; } - for (u32 i = 0; i < ARRAY_LEN(this->mObtainedStamps); i++) { + u32 i; + for (i = 0; i < 20; i++) { if (param1 == this->mObtainedStamps[i]) { this->mObtainedStamps[i] = -1; } } u16 local_18; - data_02049bac.func_02014a34((void *) &local_18); - this->mObtainedStamps[param2] = param1; - this->mStampDates[param2] = local_18; - *(u16 *) &this->mStampPositions[param2] = *param3; + data_02049bac.func_02014a34(&local_18); + + this->mObtainedStamps[param2] = param1; + + u16 new_var2 = this->mStampDates[param2]; + u16 temp = local_18; + this->mStampDates[param2] = temp; + this->mStampDates[param2] = new_var2; + this->mStampDates[param2] = temp; + + u16 new_var3 = this->mStampPos[param2]; + u16 temp2 = *param3; + this->mStampPos[param2] = temp2; + this->mStampPos[param2] = new_var3; + this->mStampPos[param2] = temp2; } void MiscAdvManager::func_ov024_020d6530() { diff --git a/src/024_MainGame/Player/PlayerActor_A0_38_024.cpp b/src/024_MainGame/Player/PlayerActor_A0_38_024.cpp new file mode 100644 index 00000000..2b000a7a --- /dev/null +++ b/src/024_MainGame/Player/PlayerActor_A0_38_024.cpp @@ -0,0 +1,142 @@ +#include "Player/Player.hpp" + +extern "C" void func_ov000_0205be34(void *thisx, unk16 param1); +extern "C" void func_ov000_0205be44(void *thisx, Vec2s *param1, Vec2s *param2, bool param3, bool param4); + +struct UnkStruct_auStack_14 { + unk16 unk_00; + unk8 unk_02; +}; + +int dummy; //! TODO: remove +static const Vec2s data_ov024_020d8238(0x40, 0x10); +static const Vec2s data_ov024_020d8234(0x40, 0x10); +static const Vec2s data_ov024_020d8230(0x20, 0x20); +static const Vec2s data_ov024_020d822c(0x20, 0x10); +static const Vec2s data_ov024_020d8228(0x20, 0x40); +static const Vec2s data_ov024_020d8224(0x40, 0x40); + +void PlayerActor_A0_38_04::vfunc_00() { + UnkStruct_auStack_14 spC; + Vec2s sp8; + Vec2s sp4; + bool var_r3; + bool var_r4; + + func_ov000_0205be34(&spC, 0x28); + + if (this->mUnk_10->mUnk_34 & 0x02) { + var_r4 = true; + } else { + var_r4 = false; + } + + if (this->mUnk_10->mUnk_34 & 0x01) { + var_r3 = true; + } else { + var_r3 = false; + } + + sp4.x = data_ov024_020d8224.x; + sp4.y = data_ov024_020d8224.y; + + sp8.x = this->mUnk_10->mUnk_2C.x; + sp8.y = this->mUnk_10->mUnk_2C.y; + + func_ov000_0205be44(&spC, &sp8, &sp4, var_r3, var_r4); +} + +void PlayerActor_A0_38_18::vfunc_00() { + UnkStruct_auStack_14 sp3C; + UnkStruct_auStack_14 sp38; + UnkStruct_auStack_14 sp34; + UnkStruct_auStack_14 sp30; + Vec2s sp2C; + Vec2s sp28; + Vec2s sp24; + Vec2s sp20; + Vec2s sp1C; + Vec2s sp18; + Vec2s sp14; + Vec2s sp10; + Vec2s spC; + Vec2s sp8; + Vec2s sp4; + + s16 temp_r6 = this->mUnk_10->mUnk_2C.x; + s16 temp_r7 = this->mUnk_10->mUnk_2C.y; + + if (this->mUnk_10->mUnk_36) { + func_ov000_0205be34(&sp3C, 0x2A); + sp3C.unk_02 = 0x14; + sp24.x = data_ov024_020d8238.x; + sp24.y = data_ov024_020d8238.y; + sp28.x = temp_r6; + sp28.y = temp_r7 + 0x17; + func_ov000_0205be44(&sp3C, &sp28, &sp24, false, false); + + func_ov000_0205be34(&sp38, 0x29); + sp38.unk_02 = 0x1E; + + Vec2us temp1; + Vec2us temp2; + temp1.x = data_ov024_020d8228.x; + temp1.y = data_ov024_020d8228.y; + temp2.x = (temp_r6 + 0x18) + ROUND_FX32(MUL_FX32(SIN(this->mUnk_10->mUnk_30), FLOAT_TO_FX32(16.0f))); + temp2.y = temp_r7 - 0x18; + temp2.y = temp2.y & 0xFFFF; //! TODO: fake match? + + sp1C.x = temp1.x; + sp1C.y = temp1.y; + sp20.x = temp2.x; + sp20.y = temp2.y; + + func_ov000_0205be44(&sp38, &sp20, &sp1C, false, false); + + func_ov000_0205be34(&sp34, 0x2D); + sp34.unk_02 = 0x1E; + sp14.x = data_ov024_020d8234.x; + sp14.y = data_ov024_020d8234.y; + sp18.x = temp_r6; + sp18.y = temp_r7 + 0x28; + func_ov000_0205be44(&sp34, &sp18, &sp14, false, false); + } else { + func_ov000_0205be34(&sp30, 0x2B); + spC.x = data_ov024_020d8230.x; + spC.y = data_ov024_020d8230.y; + sp10.x = temp_r6 + 0x10; + sp10.y = temp_r7 + 0x18; + func_ov000_0205be44(&sp30, &sp10, &spC, false, false); + + func_ov000_0205be34(&sp2C, 0x2C); + sp4.x = data_ov024_020d822c.x; + sp4.y = data_ov024_020d822c.y; + sp8.x = temp_r6 + 0x10u; + sp8.y = temp_r7 + 0x08; + func_ov000_0205be44(&sp2C, &sp8, &sp4, false, false); + } +} + +THUMB_BEGIN + +PlayerActor_A0_38::PlayerActor_A0_38() : + mUnk_00(0xC0), + mUnk_02(0x80), + mUnk_04(this), + mUnk_18(this) { + this->func_ov024_020d19d8(); +} + +PlayerActor_A0_38::~PlayerActor_A0_38() {} + +void PlayerActor_A0_38::func_ov024_020d19d8() { + this->mUnk_2C.x = 0x8000; + this->mUnk_2C.y = 0x8000; + this->mUnk_30 = 0; + this->mUnk_32 = 0; + this->mUnk_34 = 0; + this->mUnk_36 = false; + this->mUnk_37 = false; +} + +THUMB_END diff --git a/src/024_MainGame/UnkStruct_ov024_020d8694_024.cpp b/src/024_MainGame/TitleCard/UnkStruct_ov024_020d8694_024.cpp similarity index 98% rename from src/024_MainGame/UnkStruct_ov024_020d8694_024.cpp rename to src/024_MainGame/TitleCard/UnkStruct_ov024_020d8694_024.cpp index e6c50e41..cc54f7a2 100644 --- a/src/024_MainGame/UnkStruct_ov024_020d8694_024.cpp +++ b/src/024_MainGame/TitleCard/UnkStruct_ov024_020d8694_024.cpp @@ -165,11 +165,11 @@ void UnkStruct_ov024_020d8694::vfunc_10(unk8 *param1) { } void UnkStruct_ov024_020d8694::func_ov024_020cb178(unk32 param1) { - data_027e0994->func_02018aac(param1, true); + gpCurrentGameModeMgr->func_02018aac(param1, true); } void UnkStruct_ov024_020d8694::func_ov024_020cb194(unk16 param1) { - data_027e0994->func_02018ac4(param1); + gpCurrentGameModeMgr->func_02018ac4(param1); data_0204a110.mUnk_010.func_0201ca28(0); data_0204a110.mUnk_010.func_0201ca28(1); } diff --git a/src/024_MainGame/UnkTitleCardSystem1_024.cpp b/src/024_MainGame/TitleCard/UnkTitleCardSystem1_024.cpp similarity index 99% rename from src/024_MainGame/UnkTitleCardSystem1_024.cpp rename to src/024_MainGame/TitleCard/UnkTitleCardSystem1_024.cpp index 261433f3..c66a2ff5 100644 --- a/src/024_MainGame/UnkTitleCardSystem1_024.cpp +++ b/src/024_MainGame/TitleCard/UnkTitleCardSystem1_024.cpp @@ -329,7 +329,7 @@ void UnkTitleCardSystem1_Derived1::vfunc_0C() { } void UnkTitleCardSystem1_Derived1::vfunc_10() { - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { if (data_0204a110.mUnk_DF4 == 0) { this->mUnk_004 = 0x07; } else { @@ -379,7 +379,7 @@ void UnkTitleCardSystem1_Derived1::func_ov024_020cbeb8() { index = TC_SceneMsgIdx_LostAtSeaStation; } } else { - index = data_027e09a4->func_01ffd400()->mUnk_16; + index = data_027e09a4->GetCurrentCourseEntry()->titleCardMsgIndex; } if (index >= 0) { @@ -454,7 +454,7 @@ bool UnkTitleCardSystem1_Derived1::func_ov024_020cc0b4() { return false; } - return !data_027e0994->IsUnk150(); + return !gpCurrentGameModeMgr->IsUnk150(); } unk32 UnkTitleCardSystem1_Derived1::vfunc_18() { diff --git a/src/024_MainGame/CargoManager_024.cpp b/src/024_MainGame/Train/CargoManager_024.cpp similarity index 79% rename from src/024_MainGame/CargoManager_024.cpp rename to src/024_MainGame/Train/CargoManager_024.cpp index 6972143f..89984a64 100644 --- a/src/024_MainGame/CargoManager_024.cpp +++ b/src/024_MainGame/Train/CargoManager_024.cpp @@ -1,6 +1,10 @@ +#include "MainGame/AdventureMode.hpp" #include "MainGame/CargoManager.hpp" #include "System/SysNew.hpp" +// probably doesn't belong here but it's just to make data line up properly +const UnkStruct_ov024_020d86a8 data_ov024_020d78b8 = {0}; + CargoManager *CargoManager::Create() { return new(HeapIndex_1) CargoManager(); } diff --git a/src/024_MainGame/Train/MapObjectProfile_Derived5.cpp b/src/024_MainGame/Train/MapObjectProfile_Derived5.cpp new file mode 100644 index 00000000..341253fe --- /dev/null +++ b/src/024_MainGame/Train/MapObjectProfile_Derived5.cpp @@ -0,0 +1,24 @@ +#include "MainGame/UnkTrainSystems.hpp" +#include "Unknown/Common.hpp" + +static const char *data_ov024_020d8374[] = { + "pillar", "seaPillar", "stopper", "bubble", "blastLava", "blastSand", + "blastSnow", "blastSoil", "blastWater", "super", "darkPillar", "cannonball", +}; + +static const char *data_ov024_020d8358[] = { + "ice", "wood", "iron", "fish", "kokko", "jar", "ore", +}; + +const char *func_ov024_020d46b4(unk32 param1) { + return data_ov024_020d8374[param1]; +} + +MapObjectProfile_Derived5::MapObjectProfile_Derived5(s32 param1) : + MapObjectProfile_Derived2_20_Base("Train", func_ov024_020d46b4(param1), "model", "anm", 1, + UnkTrainSystem1::func_ov024_020d54a0(param1)) {} + +MapObjectProfile_Derived5::MapObjectProfile_Derived5(u32 param1) : + MapObjectProfile_Derived2_20_Base("Train/mat", data_ov024_020d8358[param1], "model", "", 1, 0) {} + +MapObjectProfile_Derived5::~MapObjectProfile_Derived5() {} diff --git a/src/024_MainGame/PassengerManager.cpp b/src/024_MainGame/Train/PassengerManager.cpp similarity index 91% rename from src/024_MainGame/PassengerManager.cpp rename to src/024_MainGame/Train/PassengerManager.cpp index 8a50ef8c..76a40012 100644 --- a/src/024_MainGame/PassengerManager.cpp +++ b/src/024_MainGame/Train/PassengerManager.cpp @@ -1,4 +1,5 @@ #include "MainGame/PassengerManager.hpp" +#include "System/Random.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkStruct_02049bac.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" @@ -6,6 +7,8 @@ extern "C" SceneIndex func_ov000_0205c984(); extern "C" u32 func_ov000_0205c9b4(); +const s16 data_ov024_020d7598[] = {0x29, 0x2F, 0x2B, 0x2C, 0x2E}; + struct PassengerInfos { ActorId actorId; AdventureFlag_Half flagBoard; @@ -129,24 +132,13 @@ PassengerManager *PassengerManager::Create() { return new(HeapIndex_1) PassengerManager(); } -// non-matching -void PassengerManager::func_ov024_020d41bc(UnkStruct_Param1 *param1) { - ActorId actorId = param1->actorId; - s16 mUnk_04 = param1->mUnk_04; - - s16 sceneIndex = param1->sceneIndex; - this->mPassenger.mActorId = actorId; - this->mPassenger.mUnk_04 = mUnk_04; - - u8 roomIndex = param1->roomIndex; - unk32 happiness = param1->happiness; - u16 mUnk_14 = param1->mUnk_14; - - this->mPassenger.mSceneIndex = sceneIndex; - this->mPassenger.mRoomIndex = roomIndex; - this->mPassenger.mHappiness = happiness; - this->mDate = mUnk_14; - +void PassengerManager::func_ov024_020d41bc(const UnkStruct_Param1 *param1) { + this->mPassenger.mActorId = param1->actorId; + this->mPassenger.mUnk_04 = param1->mUnk_04; + this->mPassenger.mSceneIndex = (s16) param1->sceneIndex; + this->mPassenger.mRoomIndex = param1->roomIndex; + this->mPassenger.mHappiness = param1->happiness; + this->mDate = param1->mUnk_14; this->func_ov024_020d4228(); } @@ -333,17 +325,10 @@ s16 PassengerManager::GetDate() { return date; } -// non-matching -u32 PassengerManager::GetRandomIndex(u32 arg1, s32 arg2) { - u64 factor = 0x5D588B656C078965; - u64 addend = 0x00269EC3; - - u64 seed = (u32) arg2; - u64 seed2 = addend + (factor * seed); - - u32 thing = seed2 >> 32; - - return thing % arg1; +u32 PassengerManager::GetRandomIndex(u32 param1, u32 seed) { + Random random; + random.Setup(seed); + return random.Next32(0) % param1; } void PassengerManager::SetFailedFlag() { diff --git a/src/024_MainGame/Train/UnkDataStruct4.cpp b/src/024_MainGame/Train/UnkDataStruct4.cpp new file mode 100644 index 00000000..303e5f04 --- /dev/null +++ b/src/024_MainGame/Train/UnkDataStruct4.cpp @@ -0,0 +1,425 @@ +#include "MainGame/AdventureMode.hpp" +#include "Unknown/Common.hpp" +#include "Unknown/UnkFileSystem.hpp" +#include "Unknown/UnkStruct_027e09a0.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "files.h" + +#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); + +static const u8 data_ov024_020d756c[] = {0x01, 0x04, 0x10, 0x40}; + +UnkDataStruct4::UnkDataStruct4() { + this->mUnk_04 = 0x14; + this->mUnk_06 = 0x0F; + this->mUnk_08 = 0; + this->mUnk_0C = 0; + this->mUnk_10 = 0; + this->mUnk_C8 = this->mUnk_68; + this->mSceneIndex = SceneIndex_None; +} + +void UnkDataStruct4::func_ov024_020d2518() {} + +void UnkDataStruct4::func_ov024_020d251c() {} + +void UnkDataStruct4::func_ov024_020d2520(UnkStruct_SceneChange1 *param1) { + this->func_ov024_020d2538(param1->mSceneIndex, param1->mRoomIndex, NULL); +} + +void UnkDataStruct4::func_ov024_020d2538(u32 sceneIndex, u8 roomIndex, UnkDataStruct4_14_2 *param3) { + this->mUnk_64 = param3; + this->func_ov024_020d258c(sceneIndex, roomIndex); + this->func_ov024_020d3140(); + this->vfunc_00(); +} + +void UnkDataStruct4::func_ov024_020d2564() { + this->vfunc_04(); + this->func_ov024_020d277c(); + this->mUnk_C8 = this->mUnk_68; +} + +void UnkDataStruct4::func_ov024_020d258c(u32 sceneIndex, u8 roomIndex) { + wchar_t sp34[16]; + wchar_t sp10[2]; + FileInfos sp8; + CourseEntry *pEntry; + + this->mSceneIndex = sceneIndex; + + sp10[0] = L'\0'; + sp10[1] = L'\0'; + func_02026800(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); + + 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); + + UnkFileSystem3 sp14((char *) sp34); + sp14.vfunc_08(0x10); + sp8.pFile = sp14.mpFile; + sp8.size = sp14.mFileSize; + ZTB_ParseFile(&sp8, this); +} + +void UnkDataStruct4::func_ov024_020d26b0(unk32 param1) { + fx32 pos1 = INT_TO_FX32(param1); + fx32 pos3 = MUL_FX32(pos1 >> 1, INT_TO_FX32(this->mUnk_06)); + fx32 pos2 = MUL_FX32(pos1 >> 1, INT_TO_FX32(this->mUnk_04)); + + this->mUnk_08 = pos1; + this->mUnk_0C = pos2; + this->mUnk_10 = pos3; + + if (this->mUnk_64 != NULL) { + for (int i = 0; i < ARRAY_LEN(this->mUnk_14); i++) { + this->mUnk_14[i] = &this->mUnk_64[i]; + } + } else { + for (UnkDataStruct4_14_2 **ptr = this->mUnk_14; ptr != &this->mUnk_14[ARRAY_LEN(this->mUnk_14)]; ptr++) { + *ptr = new(HeapIndex_1) UnkDataStruct4_14_2(); + } + } + + this->func_ov024_020d27cc(); +} + +void UnkDataStruct4::func_ov024_020d277c() { + if (this->mUnk_64 == NULL) { + for (UnkDataStruct4_14_2 **ptr = this->mUnk_14; ptr != &this->mUnk_14[ARRAY_LEN(this->mUnk_14)]; ptr++) { + delete *ptr; + } + } + + this->mUnk_08 = INT_TO_FX32(0); + this->mUnk_0C = INT_TO_FX32(0); + this->mUnk_10 = INT_TO_FX32(0); + this->mSceneIndex = SceneIndex_None; +} + +void UnkDataStruct4::func_ov024_020d27cc() { + UnkDataStruct4_14_2 **new_var; + UnkDataStruct4_14_2 **new_var2; + + for (int i = 0; i < ARRAY_LEN(this->mUnk_14); i++) { + for (int j = 0; j < ARRAY_LEN(this->mUnk_14[0]->mUnk_00); j++) { + new_var2 = &this->mUnk_14[i]; + new_var = new_var2; + (*new_var)->mUnk_00[j].func_ov024_020d1fe8(); + } + } +} + +void UnkDataStruct4::func_ov024_020d280c() { + UnkDataStruct4_14_2 **ppUnk_14; + int i; + int j; + int k; + int temp_r8; + int temp_r9; + + for (i = 0; i < ARRAY_LEN(this->mUnk_14); i++) { + temp_r8 = i + 1; + + for (j = 0; j < ARRAY_LEN(this->mUnk_14[0]->mUnk_00); j++) { + ppUnk_14 = this->mUnk_14; + + if (ppUnk_14[i]->mUnk_00[j].func_ov024_020d1da0() != 0 ? true : false) { + temp_r9 = j + 1; + + for (k = 0; k < 3; k++) { + if (!ppUnk_14[i]->mUnk_00[j].func_ov024_020d1fa4(k)) { + if (temp_r8 >= 0 && temp_r8 < this->mUnk_04 && j >= 0 && j < this->mUnk_06 && + !this->mUnk_14[temp_r8]->mUnk_00[j].func_ov024_020d1fa4(k) && + this->func_ov024_020d2a18(i, j, temp_r8, j, k)) { + this->func_ov024_020d29b0(i, j, temp_r8, j, k); + } + + u32 new_var2 = temp_r9; + if (i >= 0 && i < this->mUnk_04 && temp_r9 >= 0 && temp_r9 < this->mUnk_06 && + !ppUnk_14[i]->mUnk_00[new_var2].func_ov024_020d1fa4(k) && + this->func_ov024_020d2a18(i, j, i, temp_r9, k)) { + this->func_ov024_020d29b0(i, j, i, temp_r9, k); + } + } + } + } + } + } +} + +void UnkDataStruct4::func_ov024_020d29b0(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5) { + unk32 iVar1 = func_ov000_0205c7ac(param3 - param1, param4 - param2); + this->mUnk_14[param1]->mUnk_00[param2].func_ov024_020d2030(iVar1, param5); + this->mUnk_14[param3]->mUnk_00[param4].func_ov024_020d2030((iVar1 + 2) & 0x03, param5); +} + +bool UnkDataStruct4::func_ov024_020d2a18(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5) { + if (param1 >= 0 && param1 < this->mUnk_04 && param2 >= 0 && param2 < this->mUnk_06 && param3 >= 0 && + param3 < this->mUnk_04 && param4 >= 0 && param4 < this->mUnk_06 && + func_ov000_0205c74c(param1, param2, param3, param4)) { + unk32 temp_r5 = func_ov000_0205c7ac(param3 - param1, param4 - param2); + unk32 temp_r4 = func_ov000_0205c7ac(param1 - param3, param2 - param4); + + if (this->mUnk_14[param1]->mUnk_00[param2].func_ov024_020d1dc8(temp_r5, param5) && + this->mUnk_14[param3]->mUnk_00[param4].func_ov024_020d1dc8(temp_r4, param5)) { + return true; + } + + return false; + } + + return false; +} + +void UnkDataStruct4::func_ov024_020d2b08(unk32 param1, unk32 param2, VecFx32 *param3) const { + VecFx32 result; + result.x = param1 * this->mUnk_08 - this->mUnk_0C + (this->mUnk_08 >> 1); + result.y = 0; + result.z = param2 * this->mUnk_08 - this->mUnk_10 + (this->mUnk_08 >> 1); + VecFx32_Copy(&result, param3); +} + +void UnkDataStruct4::func_ov024_020d2b40(Vec2s *param1, const UnkDataStruct4 *thisx) { + param1->x = -1; + param1->y = -1; + + switch (thisx->mSceneIndex) { + case SceneIndex_t_area0: + param1->x = 0x12; + param1->y = 0x02; + break; + case SceneIndex_t_area1: + param1->x = 0x12; + param1->y = 0x0C; + break; + case SceneIndex_t_area2: + param1->x = 0x01; + param1->y = 0x02; + break; + case SceneIndex_t_area3: + param1->x = 0x01; + param1->y = 0x0C; + break; + default: + break; + } +} + +void UnkDataStruct4::func_ov024_020d2bcc(Vec2s *param1, const UnkDataStruct4 *thisx) { + param1->x = -1; + param1->y = -1; + + switch (thisx->mSceneIndex) { + case SceneIndex_t_area0: + param1->x = 0x12; + param1->y = 0x01; + break; + case SceneIndex_t_area1: + param1->x = 0x12; + param1->y = 0x0D; + break; + case SceneIndex_t_area2: + param1->x = 0x01; + param1->y = 0x01; + break; + case SceneIndex_t_area3: + param1->x = 0x01; + param1->y = 0x0D; + break; + default: + break; + } +} + +void UnkDataStruct4::func_ov024_020d2c54(UnkArrayDataType1 param1, unk32 param2) { + MI_CpuFill8(param1, 0, sizeof(UnkArrayDataType1)); + UnkDataStruct4_14_2 **ppUnk_14 = this->mUnk_14; + + for (int k = 0; k < ARRAY_LEN(data_ov024_020d7684) - 2; k++) { + //! TODO: fake match, how is this accessed?? + if (GET_FLAG2(data_ov024_020d7684[k][12], param2)) { + for (int i = 0; i < ARRAY_LEN(this->mUnk_14); i++) { + for (int j = 0; j < ARRAY_LEN(this->mUnk_14[0]->mUnk_00); j++) { + param1[i][j] |= ppUnk_14[i]->mUnk_00[j].func_ov024_020d208c(k); + } + } + } + } +} + +void UnkDataStruct4::func_ov024_020d2cfc(UnkArrayDataType1 param1, unk32 param2, unk32 param3) { + u8 sp44[4]; + unk32 sp40; + unk32 sp3C; + u8 sp38[4]; + UnkDataStruct4_14_2 **sp24; + unk32 sp20; + UnkDataStruct4_14 *sp1C; + unk32 sp18; + unk32 var_r9; + u8 temp_r10; + unk32 temp_r8; + unk32 temp_r4; + UnkDataStruct4_14 *temp_r5; + unk32 var_r7; + unk32 var_r11; + UnkDataStruct4_14_2 **dummy; + UnkDataStruct4_14_2 *ptr; + + MI_CpuFill8(param1, 0, sizeof(UnkArrayDataType1)); + +#if __MWERKS__ + sp38 = data_ov024_020d756c; +#else + sp38[0] = data_ov024_020d756c[0]; + sp38[1] = data_ov024_020d756c[1]; + sp38[2] = data_ov024_020d756c[2]; + sp38[3] = data_ov024_020d756c[3]; +#endif + + for (sp20 = 0; sp20 < ARRAY_LEN(this->mUnk_14); sp20++) { + for (var_r9 = 0; var_r9 < ARRAY_LEN(this->mUnk_14[0]->mUnk_00); var_r9++) { + sp24 = this->mUnk_14; + dummy = sp24; // somehow required to match + ptr = sp24[sp20]; + + for (var_r7 = 0; var_r7 < 3; var_r7++) { + sp1C = &ptr->mUnk_00[var_r9]; + + if (param2 == sp1C->mUnk_02[var_r7] && param3 == sp1C->mUnk_06[var_r7]) { + sp18 = sp1C->mUnk_0C[var_r7]; + +#if __MWERKS__ + sp44 = sp38; +#else + sp44[0] = sp38[0]; + sp44[1] = sp38[1]; + sp44[2] = sp38[2]; + sp44[3] = sp38[3]; +#endif + + for (var_r11 = 0; var_r11 < 4; var_r11++) { + temp_r10 = sp44[var_r11]; + + if (sp18 & temp_r10) { + sp40 = 0; + sp3C = 0; + UnkDataStruct4_14::func_ov024_020d1ab8(temp_r10, &sp40, &sp3C); + temp_r8 = sp20 + sp40; + temp_r4 = var_r9 + sp3C; + + if (this->func_ov024_020d2a18(sp20, var_r9, temp_r8, temp_r4, var_r7)) { + temp_r5 = &this->mUnk_14[temp_r8]->mUnk_00[temp_r4]; + + if (func_02032784(temp_r5->func_ov024_020d1d78()) > 0) { + param1[sp20][var_r9] |= temp_r10; + param1[temp_r8][temp_r4] |= UnkDataStruct4_14::func_ov024_020d1eac(temp_r10); + param1[temp_r8][temp_r4] |= temp_r5->func_ov024_020d1d78(); + } else if (param2 == temp_r5->mUnk_02[var_r7] && param3 == temp_r5->mUnk_06[var_r7]) { + param1[sp20][var_r9] |= temp_r10; + param1[temp_r8][temp_r4] |= UnkDataStruct4_14::func_ov024_020d1eac(temp_r10); + } + } + } + } + } + } + } + } + + if (func_ov024_020d5434(this->mSceneIndex)) { + for (int i = 0; i < 20; i++) { + if (param1[i][0] & 0x01) { + param1[i][0] |= 0x10; + } + } + } + + if (func_ov024_020d5410(this->mSceneIndex)) { + for (int i = 0; i < 20; i++) { + if (param1[i][14] & 0x10) { + param1[i][14] |= 0x01; + } + } + } + + if (func_ov024_020d5458(this->mSceneIndex)) { + for (int i = 0; i < 15; i++) { + if (param1[0][i] & 0x04) { + param1[0][i] |= 0x40; + } + } + } + + if (func_ov024_020d547c(this->mSceneIndex)) { + for (int i = 0; i < 15; i++) { + if (param1[19][i] & 0x40) { + param1[19][i] |= 0x04; + } + } + } +} + +void UnkDataStruct4::vfunc_00() {} + +void UnkDataStruct4::vfunc_04() {} + +s32 UnkDataStruct4::func_ov024_020d3068() const { + return ((s32) this->mUnk_C8 - (s32) this->mUnk_68) / (s32) sizeof(VecFx32); +} + +bool UnkDataStruct4::func_ov024_020d308c(fx32 *param1, fx32 *param2, unk16 param3) const { + s32 arrayLen = this->func_ov024_020d3068(); + + for (int i = 0; i < arrayLen; i++) { + const VecFx32 *pUnk_68 = &this->mUnk_68[i]; + + if (pUnk_68->x == param3) { + if (param1 != NULL) { + *param1 = pUnk_68->y; + } + + if (param2 != NULL) { + *param2 = pUnk_68->z; + } + + return true; + } + } + + return false; +} + +void UnkDataStruct4::func_ov024_020d3100() { + UnkDataStruct4_14_2 **new_var; + UnkDataStruct4_14_2 **new_var2; + + for (int i = 0; i < ARRAY_LEN(this->mUnk_14); i++) { + for (int j = 0; j < ARRAY_LEN(this->mUnk_14[0]->mUnk_00); j++) { + new_var2 = &this->mUnk_14[i]; + new_var = new_var2; + (*new_var)->mUnk_00[j].func_ov024_020d1c84(); + } + } +} + +void UnkDataStruct4::func_ov024_020d3140() { + this->func_ov024_020d280c(); + this->func_ov024_020d3100(); +} diff --git a/src/024_MainGame/Train/UnkDataStruct4_14.cpp b/src/024_MainGame/Train/UnkDataStruct4_14.cpp new file mode 100644 index 00000000..64efa978 --- /dev/null +++ b/src/024_MainGame/Train/UnkDataStruct4_14.cpp @@ -0,0 +1,489 @@ +#include "MainGame/AdventureMode.hpp" +#include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" + +extern "C" unk32 func_02032784(unk32 param1); +extern "C" u8 func_020157f0(unk32 param1, unk32 param2); +extern "C" u8 func_020157c0(unk32 param1, unk32 param2); + +static const u8 data_ov024_020d7550[] = {0x01, 0x04, 0x10, 0x40, 0x00}; +static const u8 data_ov024_020d7555[] = {0x20, 0x10, 0x08, 0x40, 0x00, 0x04, 0x80, 0x01, 0x02, 0x00, 0x00}; +static const unk32 data_ov024_020d7560[] = {0x01, 0x00, 0x02}; + +const u8 UnkDataStruct4_14::func_ov024_020d1a18(unk32 param1) { + return data_ov024_020d7550[param1]; +} + +unk32 UnkDataStruct4_14::func_ov024_020d1a28(u8 param1) { + switch (param1) { + case 0x10: + return 2; + case 0x01: + return 0; + case 0x40: + return 3; + case 0x04: + return 1; + case 0x00: + return 4; + default: + break; + } + + return 4; +} + +u8 UnkDataStruct4_14::func_ov024_020d1a98(unk32 param1, unk32 param2) { + return data_ov024_020d7555[param1 + 1 + ((param2 + 1) * 3)]; +} + +void UnkDataStruct4_14::func_ov024_020d1ab8(unk32 param1, unk32 *param2, unk32 *param3) { + switch (param1) { + case 0x10: + *param2 = 0; + *param3 = -1; + break; + case 0x40: + *param2 = -1; + *param3 = 0; + break; + case 0x80: + *param2 = -1; + *param3 = 1; + break; + case 0x00: + *param2 = 0; + *param3 = 0; + break; + case 0x01: + *param2 = 0; + *param3 = 1; + break; + case 0x04: + *param2 = 1; + *param3 = 0; + break; + case 0x08: + *param2 = 1; + *param3 = -1; + break; + case 0x20: + *param2 = -1; + *param3 = -1; + break; + case 0x02: + *param2 = 1; + *param3 = 1; + break; + default: + break; + } +} + +s32 UnkDataStruct4_14::func_ov024_020d1b98(unk32 *param1, unk32 param2) { + s32 var_r3 = 0; + + if (param2 & 0x01) { + param1[var_r3++] = 0x00; + } + + if (param2 & 0x04) { + param1[var_r3++] = 0x01; + } + + if (param2 & 0x10) { + param1[var_r3++] = 0x02; + } + + if (param2 & 0x40) { + param1[var_r3++] = 0x03; + } + + return var_r3; +} + +s32 UnkDataStruct4_14::func_ov024_020d1be0(s32 param1) { + switch (param1) { + case 0x54: + return 0x01; + case 0x51: + return 0x04; + case 0x45: + return 0x10; + case 0x15: + return 0x40; + default: + break; + } + + return 0x00; +} + +s32 UnkDataStruct4_14::func_ov024_020d1c3c(unk32 *param1, unk32 param2) const { + s32 j = 0; + + for (int i = 0; i < 4; i++) { + if (this->func_ov024_020d1cc8(i, param2)) { + param1[j] = i; + j++; + } + } + + return j; +} + +void UnkDataStruct4_14::func_ov024_020d1c84() { + for (int i = 0; i < ARRAY_LEN(this->mUnk_0F); i++) { + if (func_02032784(this->mUnk_0F[i]) == 1 && func_02032784(this->mUnk_0C[i]) == 2) { + this->mUnk_0F[i] = this->mUnk_0C[i]; + } + } +} + +bool UnkDataStruct4_14::func_ov024_020d1cc8(unk32 param1, unk32 param2) const { + const u8 value = func_ov024_020d1a18(param1); + return this->mUnk_0F[param2] & value; +} + +bool UnkDataStruct4_14::func_ov024_020d1cf4(unk32 param1) const { + const u8 value = func_ov024_020d1a18(param1); + + for (int i = 0; i < ARRAY_LEN(this->mUnk_0F); i++) { + if (this->mUnk_0F[i] & value) { + return true; + } + } + + return false; +} + +bool UnkDataStruct4_14::func_ov024_020d1d30(unk32 param1, u16 param2) const { + for (int i = 0; i < ARRAY_LEN(this->mUnk_0C); i++) { + if (this->mUnk_0C[i] != 0) { + if (param1 == this->mUnk_02[i] && param2 == this->mUnk_06[i]) { + return true; + } + } + } + + return false; +} + +u8 UnkDataStruct4_14::func_ov024_020d1d78() const { + u8 value = 0; + + for (int i = 0; i < ARRAY_LEN(this->mUnk_0F); i++) { + value |= this->mUnk_0F[i]; + } + + return value; +} + +u8 UnkDataStruct4_14::func_ov024_020d1da0() const { + u8 value = 0; + + for (int i = 0; i < ARRAY_LEN(this->mUnk_0C); i++) { + value |= this->mUnk_0C[i]; + } + + return value; +} + +bool UnkDataStruct4_14::func_ov024_020d1dc8(unk32 param1, unk32 param2) const { + const u8 value = func_ov024_020d1a18(param1); + return this->mUnk_0C[param2] & value; +} + +bool UnkDataStruct4_14::func_ov024_020d1df4(unk32 param1) const { + return func_ov024_020d1a18(param1) & this->func_ov024_020d1da0(); +} + +void UnkDataStruct4_14::func_ov024_020d1e20(unk16 *param1, unk32 param2) { + switch (param2) { + case 0x10: + param1[0] = 0; + param1[1] = -1; + break; + case 0x01: + param1[0] = 0; + param1[1] = 1; + break; + case 0x40: + param1[0] = -1; + param1[1] = 0; + break; + case 0x04: + param1[0] = 1; + param1[1] = 0; + break; + default: + param1[0] = 0; + param1[1] = 0; + break; + } +} + +u8 UnkDataStruct4_14::func_ov024_020d1eac(const unk32 param1) { + switch (param1) { + case 0x10: + return 0x01; + case 0x01: + return 0x10; + case 0x04: + return 0x40; + case 0x40: + return 0x04; + case 0x08: + return 0x80; + case 0x20: + return 0x02; + case 0x02: + return 0x20; + case 0x80: + return 0x08; + default: + break; + } + + return 0x00; +} + +void UnkDataStruct4_14::func_ov024_020d1f60(u32 param1) { + if (param1 >= 0x78) { + param1 = 0; + } + + this->mUnk_12 = param1; +} + +unk32 UnkDataStruct4_14::func_ov024_020d1f70() const { + u8 val = this->mUnk_12; + + if (this->mUnk_12 == 0) { + return 0x6000; + } + + return (this->mUnk_12 * 0xC000) / 120; +} + +bool UnkDataStruct4_14::func_ov024_020d1fa4(unk32 param1) const { + if (this->mUnk_0C[param1] != 0) { + if (this->mUnk_06[param1] != 0 && !this->func_ov024_020d2320(param1)) { + return true; + } + + return false; + } + + return false; +} + +void UnkDataStruct4_14::func_ov024_020d1fe8() { + this->mUnk_00 = 0; + this->mStationSceneIndex = SceneIndex_Max; + + for (int i = 0; i < ARRAY_LEN(this->mUnk_0C); i++) { + this->mUnk_0C[i] = 0; + this->mUnk_0F[i] = 0; + this->mUnk_02[i] = -1; + this->mUnk_06[i] = 0; + } + + this->mUnk_12 = 0; +} + +bool UnkDataStruct4_14::func_ov024_020d2030(unk32 param1, unk32 param2) { + if (this->func_ov024_020d1dc8(param1, param2) && !this->func_ov024_020d1cc8(param1, param2)) { + this->mUnk_0F[param2] |= func_ov024_020d1a18(param1); + return true; + } + + return false; +} + +u8 UnkDataStruct4_14::func_ov024_020d208c(unk32 param1) const { + return this->mUnk_0F[param1]; +} + +void UnkDataStruct4_14::func_ov024_020d2098(unk32 param1, unk32 param2) { + this->mUnk_0C[param2] |= func_ov024_020d1a18(param1); +} + +unk32 UnkDataStruct4_14::func_ov024_020d20c0(unk32 param1, unk32 param2) const { + u8 var_r6; + s32 var_r7; + s32 temp_r8; + + var_r6 = func_ov024_020d1a18(param1); + temp_r8 = this->func_ov024_020d1d78(); + + switch (func_02032784(temp_r8)) { + case 0: + return 4; + case 1: + return 4; + case 2: + return func_ov024_020d1a28(temp_r8 & ~var_r6); + case 3: + if ((param2 == 1) || (param2 == 3)) { + for (var_r7 = 1; var_r7 < 4; var_r7++) { + if (param2 == 1) { + var_r6 = func_020157f0(var_r6, 2); + } else { + var_r6 = func_020157c0(var_r6, 2); + } + + if (temp_r8 & var_r6) { + return func_ov024_020d1a28(var_r6); + } + } + + return 4; + } + + return 4; + default: + break; + } + + return 4; +} + +bool UnkDataStruct4_14::IsStationDungeon() const { + switch (this->mStationSceneIndex) { + case SceneIndex_d_forest: + case SceneIndex_d_snow26: + case SceneIndex_d_water27: + case SceneIndex_d_flame: + case SceneIndex_d_sand: + return true; + default: + break; + } + + return false; +} + +bool UnkDataStruct4_14::func_ov024_020d21d8() const { + switch (this->func_ov024_020d1da0()) { + case 0x01: + case 0x04: + case 0x44: + case 0x40: + case 0x11: + case 0x10: + return true; + default: + break; + } + + return false; +} + +bool UnkDataStruct4_14::func_ov024_020d223c() const { + if (!this->func_ov024_020d21d8() && func_02032784(this->func_ov024_020d1da0()) == 2) { + return true; + } + + return false; +} + +bool UnkDataStruct4_14::func_ov024_020d2270(unk32 param1, unk32 param2) const { + u8 value = func_ov024_020d1a18(param1); + + if (this->mUnk_0C[param2] & value && !(this->mUnk_0F[param2] & value)) { + return true; + } + + return false; +} + +unk32 UnkDataStruct4_14::func_ov024_020d22ac(unk32 param1) const { + u8 temp_r7 = func_ov024_020d1a18(param1); + bool var_r5 = false; + + for (int i = 0; i < ARRAY_LEN(data_ov024_020d7560); i++) { + unk32 temp_r2 = data_ov024_020d7560[i]; + + if (this->mUnk_0F[temp_r2] & temp_r7) { + return temp_r2; + } + + if (this->func_ov024_020d2270(param1, temp_r2)) { + var_r5 = true; + } + } + + return var_r5 ? -1 : -2; +} + +bool UnkDataStruct4_14::func_ov024_020d2320(unk32 param1) const { + UnkStruct_027e0ce0::func_ov000_0205c904()->func_ov024_020d3f4c(this->mUnk_02[param1], this->mUnk_06[param1]); +} + +unk32 UnkDataStruct4_14::func_ov024_020d2348(unk32 param1) const { + unk32 var_r6 = 0; + + for (int i = 0; i < ARRAY_LEN(data_ov024_020d7684) - 1; i++) { + //! TODO: fake match, how is this accessed?? + if (GET_FLAG2(data_ov024_020d7684[this->func_ov024_020d22ac(i)][12], param1)) { + var_r6++; + } + } + + return var_r6; +} + +bool UnkDataStruct4_14::func_ov024_020d239c() const { + u8 temp_r0 = func_ov024_020d1da0(); + + if (temp_r0 == 4 || temp_r0 == 0x40 || temp_r0 == 0x44) { + return true; + } + + return false; +} + +bool UnkDataStruct4_14::func_ov024_020d23bc() const { + u8 temp_r0 = func_ov024_020d1da0() + 0xFF; + bool var_r0 = false; + + if (temp_r0 > 0x10) { + return false; + } + + if (GET_FLAG2(0x18001, temp_r0)) { + var_r0 = true; + } + + return var_r0; +} + +bool UnkDataStruct4_14::func_ov024_020d23ec() const { + bool var_r4 = false; + u8 value = this->func_ov024_020d1d78(); + + if (func_02032784(value) == 3 && (this->func_ov024_020d2464(1) || this->func_ov024_020d2464(0))) { + var_r4 = true; + } + + return var_r4; +} + +bool UnkDataStruct4_14::func_ov024_020d243c() const { + return this->func_ov024_020d23ec(); +} + +bool UnkDataStruct4_14::func_ov024_020d2448() const { + u8 value = this->func_ov024_020d1da0(); + return value == 0x11 || value == 0x44 ? true : false; +} + +bool UnkDataStruct4_14::func_ov024_020d2464(bool param1) const { + if (param1) { + return this->mUnk_13 == 0x01; + } + + return this->mUnk_13 == 0x02; +} diff --git a/src/024_MainGame/Train/UnkStruct_027e0ce0_34_024.cpp b/src/024_MainGame/Train/UnkStruct_027e0ce0_34_024.cpp new file mode 100644 index 00000000..d6253a79 --- /dev/null +++ b/src/024_MainGame/Train/UnkStruct_027e0ce0_34_024.cpp @@ -0,0 +1,262 @@ +#include "MainGame/CargoManager.hpp" +#include "MainGame/PassengerManager.hpp" +#include "Unknown/Common.hpp" +#include "Unknown/UICounterManager.hpp" +#include "Unknown/UnkStruct_027e0cd8.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" +#include "Unknown/UnkStruct_027e0d00.hpp" + +#include + +static const s8 data_ov024_020d7570[] = {0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08}; +static const s32 data_ov024_020d7578[4] = {0, 0, -1, -1}; +static const s32 data_ov024_020d7588[4] = {0, 2, -1, -1}; + +THUMB_BEGIN + +s8 UnkStruct_027e0ce0_34::func_ov024_020d3c54(unk32 param1) { + return data_ov024_020d7570[param1]; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3c60(SaveFile_00000_0000_Data_D8 *param1) { + param1->spiritTrackFlags = this->mSpiritTrackFlags; + + for (s32 i = 0; i < ARRAY_LEN(param1->unk_60); i++) { + if (i < this->mUnk_2C) { + param1->unk_60[i] = this->mUnk_00[i]; + param1->unk_64[i] = this->mUnk_10[i]; + } else { + param1->unk_60[i] = -1; + param1->unk_64[i] = -1; + } + } + + gpPassengerManager->func_ov024_020d41f4(¶m1->unk_40); + param1->unk_69 = this->mUnk_34; + + for (u32 i = 0; i < ARRAY_LEN(param1->trackFlags); i++) { + param1->trackFlags[i] = this->mTrackFlags[i]; + } + + unk32 cargoType = CargoType_None; + unk32 cargoAmount = 0; + gpCargoManager->GetTypeAndAmount(&cargoType, &cargoAmount); + + param1->cargoType = cargoType; + param1->cargoAmount = cargoAmount; +} + +unk32 UnkStruct_027e0ce0_34::func_ov024_020d3cf4(unk32 param1) { + unk32 iVar1 = this->func_ov024_020d3dec(param1); + unk32 iVar2 = this->func_ov024_020d3e0c(param1); + return data_027e0d00->mUnk_020[iVar1][iVar2]->mUnk_B0; +} + +unk32 UnkStruct_027e0ce0_34::func_ov024_020d3d20() { + unk32 iVar1 = this->mUnk_2C; + + if (iVar1 == 4) { + unk32 iVar2 = this->func_ov024_020d3e0c(0); + bool bVar1 = true; + + for (int i = 1; i < 4; i++) { + if (iVar2 != this->func_ov024_020d3e0c(i)) { + bVar1 = false; + break; + } + } + + if (bVar1) { + return UnkStruct_027e0ce0_34::func_ov024_020d3c54(iVar2); + } + } + + for (int i = 0; i < iVar1; i++) { + if (this->func_ov024_020d3e0c(i) != 0) { + return 0x05; + } + } + + return 4; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3d80(unk32 param1) { + unk32 *puVar1; + + this->mUnk_24 = param1; + + if (this->mUnk_24 < this->mUnk_28) { + puVar1 = &this->mUnk_24; + } else { + puVar1 = &this->mUnk_28; + } + + this->mUnk_28 = *puVar1; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3d98(unk32 param1, unk32 param2) { + this->mSpiritTrackFlags |= this->func_ov024_020d3dc0(param1, param2); +} + +bool UnkStruct_027e0ce0_34::func_ov024_020d3da8(unk32 param1, unk32 param2) { + if (this->mSpiritTrackFlags & this->func_ov024_020d3dc0(param1, param2)) { + return true; + } + + return false; +} + +u32 UnkStruct_027e0ce0_34::func_ov024_020d3dc0(unk32 param1, unk32 param2) { + return 1 << (param1 + param2 * 4); +} + +bool UnkStruct_027e0ce0_34::func_ov024_020d3dcc() { + //! TODO: fake match? + for (int i = 0; i < *(volatile unk32 *) &this->mUnk_2C; i++) { + if (this->mUnk_00[i] == 3) { + return true; + } + } + + return false; +} + +THUMB_END + +unk32 UnkStruct_027e0ce0_34::func_ov024_020d3dec(unk32 param1) { + if (param1 >= 0 && param1 < this->mUnk_2C) { + return this->mUnk_00[param1]; + } + + return -1; +} + +unk32 UnkStruct_027e0ce0_34::func_ov024_020d3e0c(unk32 param1) { + if (param1 >= 0 && param1 < this->mUnk_2C) { + return this->mUnk_10[param1]; + } + + return -1; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3e30(unk32 param1, unk32 param2) { + if (param1 < 0) { + return; + } + + if (param1 >= this->mUnk_2C) { + return; + } + + this->mUnk_10[param1] = param2; + this->func_ov024_020d3d80(this->func_ov024_020d3d20()); +} + +void *UnkStruct_027e0ce0_34::func_ov024_020d3e68(unk32 param1) { + unk32 iVar1 = this->func_ov024_020d3e0c(param1); + unk32 iVar2 = this->func_ov024_020d3dec(param1); + return G3d_GetModelPtr(data_027e0d00->mUnk_020[iVar2][iVar1]->mUnk_50); +} + +void UnkStruct_027e0ce0_34::SetTrackFlag(s32 flagPos, u16 flagValue, bool doSet) { + if (flagPos == ARRAY_LEN(this->mTrackFlags)) { + // glyphs + data_027e0cd8->func_ov000_02081d7c(flagValue, 0x03, doSet); + return; + } + + // force gems + if (doSet) { + SET_FLAG_ALT2(this->mTrackFlags, flagPos, flagValue); + } else { + UNSET_FLAG_ALT2(this->mTrackFlags, flagPos, flagValue); + } +} + +bool UnkStruct_027e0ce0_34::func_ov024_020d3f4c(s8 param1, u16 param2) { + if (param1 == ARRAY_LEN(this->mTrackFlags)) { + return data_027e0cd8->func_ov000_02081e30(param2, 0x03); + } + + return GET_FLAG_ALT2(this->mTrackFlags, param1, param2); +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3f8c() { + this->func_ov024_020d3d98(1, 0); + this->mUnk_2C = 3; + this->mUnk_00[1] = 1; + this->mUnk_10[1] = 0; + this->mUnk_00[2] = 2; + this->mUnk_10[2] = 0; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d3fc8() { + this->func_ov024_020d3d98(3, 0); + this->mUnk_00[this->mUnk_2C] = 3; + this->mUnk_10[this->mUnk_2C] = 0; + this->mUnk_2C++; +} + +void UnkStruct_027e0ce0_34::func_ov024_020d4008(unk32 param1) { + unk32 temp_r2; + unk32 var_r3; + unk32 temp_ip; + + temp_r2 = this->mUnk_24; + temp_ip = this->mUnk_28; + var_r3 = temp_ip + param1; + + if (var_r3 > temp_r2) { + var_r3 = temp_r2; + } else if (var_r3 < 0) { + var_r3 = 0; + } + + this->mUnk_28 = var_r3; + gpUICounterManager->func_ov024_020cd348(temp_ip, var_r3); +} + +void UnkStruct_027e0ce0_34::func_ov024_020d404c() { + s32 temp1[4]; + s32 temp2[4]; + +#if __MWERKS__ + temp1 = data_ov024_020d7588; + temp2 = data_ov024_020d7578; +#else + temp1[0] = data_ov024_020d7588[0]; + temp1[1] = data_ov024_020d7588[1]; + temp1[2] = data_ov024_020d7588[2]; + temp1[3] = data_ov024_020d7588[3]; + + temp2[0] = data_ov024_020d7578[0]; + temp2[1] = data_ov024_020d7578[1]; + temp2[2] = data_ov024_020d7578[2]; + temp2[3] = data_ov024_020d7578[3]; +#endif + + this->func_ov024_020d4098(temp1, temp2); +} + +void UnkStruct_027e0ce0_34::func_ov024_020d4098(s32 *param1, s32 *param2) { + s32 value1; + s32 value2; + s32 var_r6 = 0; + + for (int i = 0; i < 4; i++) { + value1 = param1[i]; + + if (value1 > -1 && value1 < 4 && (value2 = param2[i]) > -1 && value2 < 8) { + this->mUnk_00[i] = value1; + this->mUnk_10[i] = value2; + this->func_ov024_020d3d98(value1, value2); + var_r6++; + } else { + this->mUnk_00[i] = -1; + this->mUnk_10[i] = -1; + break; + } + } + + this->mUnk_2C = var_r6; +} diff --git a/src/024_MainGame/Train/UnkStruct_027e0cf8_00_0C_024.cpp b/src/024_MainGame/Train/UnkStruct_027e0cf8_00_0C_024.cpp new file mode 100644 index 00000000..a104c5ea --- /dev/null +++ b/src/024_MainGame/Train/UnkStruct_027e0cf8_00_0C_024.cpp @@ -0,0 +1,716 @@ +#include "Unknown/UnkStruct_027e0998.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e09b8.hpp" +#include "Unknown/UnkStruct_027e0cf8.hpp" +#include "versions.h" + +extern "C" bool func_ov000_0205ca18(unk32 param1, unk32 param2); +extern "C" bool func_ov000_0205c9d0(unk32 stationSceneIdx); +extern VecFx32 data_027e07d4; + +static const Vec2sb data_ov024_020d8094(0x7F, 0x7F); + +static const UnkStruct_ov024_020d8098 data_ov024_020d8098[] = { + {-1, SceneIndex_d_main_f, data_ov024_020d8094, 0x00, 0x03, false, false}, + {-1, SceneIndex_f_htown, data_ov024_020d8094, 0x01, 0x02, true, false}, + {-1, SceneIndex_f_first, data_ov024_020d8094, 0x02, 0x0A, true, false}, + {-1, SceneIndex_f_forest1, data_ov024_020d8094, 0x03, 0x0B, true, false}, + {-1, SceneIndex_f_snow, data_ov024_020d8094, 0x04, 0x0C, true, false}, + {-1, SceneIndex_f_water, data_ov024_020d8094, 0x05, 0x0E, true, false}, + {-1, SceneIndex_f_flame5, data_ov024_020d8094, 0x06, 0x0D, true, false}, + {-1, SceneIndex_f_forest2, data_ov024_020d8094, 0x07, 0x13, true, true}, + {-1, SceneIndex_f_snow2, data_ov024_020d8094, 0x08, 0x14, true, true}, + {-1, SceneIndex_f_water2, data_ov024_020d8094, 0x09, 0x15, true, true}, + {-1, SceneIndex_f_flame2, data_ov024_020d8094, 0x0A, 0x16, true, true}, + {-1, SceneIndex_d_forest, data_ov024_020d8094, 0x0B, 0x05, false, false}, + {-1, SceneIndex_d_snow26, data_ov024_020d8094, 0x0C, 0x06, false, false}, + {0x0A, SceneIndex_d_water27, data_ov024_020d8094, 0x0E, 0x1D, false, false}, + {0x06, SceneIndex_d_water27, data_ov024_020d8094, 0x0D, 0x07, false, false}, + {-1, SceneIndex_d_flame, data_ov024_020d8094, 0x0F, 0x08, false, false}, + {-1, SceneIndex_d_sand, data_ov024_020d8094, 0x1B, 0x09, false, false}, + {-1, SceneIndex_f_tetsuo, data_ov024_020d8094, 0x10, 0x1F, true, true}, + {-1, SceneIndex_f_bridge, data_ov024_020d8094, 0x11, 0x1E, true, true}, + {-1, SceneIndex_f_bridge2, data_ov024_020d8094, 0x12, 0x19, true, true}, + {-1, SceneIndex_f_flame3, data_ov024_020d8094, 0x1C, 0x20, true, false}, + {-1, SceneIndex_f_ajito, data_ov024_020d8094, 0x1D, 0x26, true, true}, + {-1, SceneIndex_f_sand, data_ov024_020d8094, 0x1E, 0x17, true, true}, + {-1, SceneIndex_f_flame4, data_ov024_020d8094, 0x1F, 0x24, true, true}, + {-1, SceneIndex_f_rabbit, data_ov024_020d8094, 0x20, 0x25, true, true}, + {-1, SceneIndex_f_kakushi1, Vec2sb(0x01, 0x01), 0x26, 0x29, true, true}, + {-1, SceneIndex_f_kakushi2, data_ov024_020d8094, 0x27, 0x21, true, true}, + {-1, SceneIndex_f_kakushi3, data_ov024_020d8094, 0x28, 0x22, true, true}, + {-1, SceneIndex_f_water3, data_ov024_020d8094, 0x29, 0x1C, true, true}, + {-1, SceneIndex_f_kakushi1, Vec2sb(0x0E, 0x01), 0x38, 0x29, true, true}, +}; + +static const UnkStruct_ov024_020d7454 data_ov024_020d7454[] = { + { + .mSceneIndex = SceneIndex_t_area1, + .mUnk_02 = 0x000B, + .mUnk_04 = 0x1B, + .mAdvFlag = AdventureFlag_AnoukiPuzzleComplete, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x14, + }, + { + .mSceneIndex = SceneIndex_t_area2, + .mUnk_02 = 0x000A, + .mUnk_04 = 0x1A, + .mAdvFlag = AdventureFlag_OpenedMarineTemplePath, + .mUnk_08 = true, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x15, + }, + { + .mSceneIndex = SceneIndex_t_area3, + .mUnk_02 = 0xFFFF, + .mUnk_04 = 0x1B, + .mAdvFlag = AdventureFlag_ObtainedThreeKeysToMountainTemple, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x16, + }, + { + .mSceneIndex = SceneIndex_t_area0, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x28, + .mAdvFlag = AdventureFlag_ZeldaTextAfterCompassOfLight, + .mUnk_08 = true, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x21, + }, + { + .mSceneIndex = SceneIndex_t_area0, + .mUnk_02 = 0x0014, + .mUnk_04 = 0x0F, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x17, + }, + { + .mSceneIndex = SceneIndex_t_area1, + .mUnk_02 = 0x0014, + .mUnk_04 = 0x11, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x18, + }, + { + .mSceneIndex = SceneIndex_t_area2, + .mUnk_02 = 0x0014, + .mUnk_04 = 0x12, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x19, + }, + { + .mSceneIndex = SceneIndex_t_area3, + .mUnk_02 = 0x0014, + .mUnk_04 = 0x10, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x1A, + }, + { + .mSceneIndex = SceneIndex_t_smarine, + .mUnk_02 = 0x0006, + .mUnk_04 = 0x1A, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x22, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2A, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2B, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2C, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2D, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2E, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x2F, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x36, + }, + { + .mSceneIndex = SceneIndex_t_dark, + .mUnk_02 = 0x000F, + .mUnk_04 = 0x04, + .mAdvFlag = AdventureFlag_Unset, + .mUnk_08 = false, + .mUnk_09 = false, + .mUnk_0A = false, + .mUnk_0B = 0x00, + .mUnk_0C = 0x37, + }, +}; + +UnkStruct_027e0cf8_00::UnkStruct_027e0cf8_00() { + this->mUnk_2238 = &this->mUnk_0018.mUnk_18C0; + this->mUnk_223C = 0; + this->mUnk_2240.x = 0; + this->mUnk_2240.y = 0; + this->mUnk_2244 = 0; + this->mUnk_2248 = 0; + this->mUnk_224C = 0; + this->mUnk_2250 = 0; + this->mUnk_2254 = 1; +} + +UnkStruct_027e0cf8_00::~UnkStruct_027e0cf8_00() {} + +void UnkStruct_027e0cf8_00::func_ov024_020cf9d4(UnkStruct_027e0cf8_00_18_00 *param1) { + switch (this->mRandom.Next32(3)) { + case 0: + param1->mUnk_00.func_ov000_0206082c(0x64, 0x00); + break; + case 1: + param1->mUnk_00.func_ov000_0206082c(0x64, 0x01); + break; + case 2: + param1->mUnk_00.func_ov000_0206082c(0x64, 0x02); + break; + default: + break; + } + + u32 value1 = this->mRandom.Next32(((u8 *) this->mUnk_2238 - (u8 *) &this->mUnk_0018.mUnk_18C0) / 8); + + u32 value2 = this->mRandom.Next32(17); + u32 value3 = *(u32 *) ((u8 *) &this->mUnk_0018.mUnk_18C0 + (value1 << 3)); + param1->mUnk_78 = value3 + ((value2 - 8) << 12); + + u32 value4 = this->mRandom.Next32(17); + u32 value5 = *(u32 *) ((u8 *) &this->mUnk_0018.mUnk_18C0 + (value1 << 3) + 4); + param1->mUnk_7C = value5 + ((value4 - 8) << 12); + + param1->mUnk_80 = this->mRandom.Next32(25); +} + +void UnkStruct_027e0cf8_00::func_ov024_020cfb7c(UnkDataStruct4 *param1, Vec2s *param2, unk32 param3, u16 param4, unk32 param5, + unk32 param6) { + this->mUnk_224C = 0; + this->mUnk_2244 = param5; + this->mUnk_2248 = param6; + + if (param3 == -1) { + this->mUnk_223C = 0; + return; + } + + Vec2s_Copy(param2, &this->mUnk_2240); + this->mRandom.Setup(); + this->mUnk_2238 = &this->mUnk_0018.mUnk_18C0; + + VecFx32 spC = data_027e07d4; + + for (s16 i = 0; i < ARRAY_LEN(param1->mUnk_14); i++) { + UnkDataStruct4_14_2 **pUnk_14 = param1->mUnk_14; + + for (s16 j = 0; j < ARRAY_LEN(param1->mUnk_14[0]->mUnk_00); j++) { + if (pUnk_14[i]->mUnk_00[j].func_ov024_020d1d30(param3, param4)) { + param1->func_ov024_020d2b08(i, j, &spC); + + Vec2p temp2; + temp2.x = spC.x; + temp2.y = spC.z; + + Vec2p *unk_2238 = this->mUnk_2238; + if (unk_2238 != NULL) { + Vec2p_Copy(&temp2, unk_2238); + Vec2p_Copy(&temp2, unk_2238); //! TODO: fake match? + } + + this->mUnk_2238++; + } + } + } + + s32 value = (((u8 *) this->mUnk_2238 - (u8 *) &this->mUnk_0018.mUnk_18C0) / 8) * 2; + + if (value > ARRAY_LEN(this->mUnk_0018.mUnk_00)) { + value = ARRAY_LEN(this->mUnk_0018.mUnk_00); + } + + this->mUnk_223C = value; + + for (int i = 0; i < value; i++) { + this->func_ov024_020cf9d4(&this->mUnk_0018.mUnk_00[i]); + value = this->mUnk_223C; + } + + this->mUnk_2250 = value; +} + +s32 UnkStruct_027e0cf8_00::func_ov024_020cfd54(s32 param1, s32 stationSceneIdx, s32 param3, s32 param4) { + u32 i; + const UnkStruct_ov024_020d8098 *ptr; + bool var_r8; + bool var_r9; + bool var_r10; + + for (i = 0; i < ARRAY_LEN(data_ov024_020d8098); i++) { + ptr = &data_ov024_020d8098[i]; + + var_r8 = 1; + if (ptr->mUnk_00 != -1 && ptr->mUnk_00 != param1) { + var_r8 = 0; + } + + var_r10 = 1; + if (ptr->mStationSceneIdx != stationSceneIdx) { + var_r10 = 0; + } + + var_r9 = 1; + if (ptr->mUnk_04.x != data_ov024_020d8094.x || ptr->mUnk_04.y != data_ov024_020d8094.y) { + s8 temp[2]; + temp[0] = param3; + temp[1] = param4; + + s8 *new_var4 = temp; + if (ptr->mUnk_04.x != new_var4[0] || ptr->mUnk_04.y != new_var4[1]) { + var_r9 = 0; + } + } + + if (var_r8 && var_r10 && var_r9) { + return i; + } + } + + return -1; +} + +bool UnkStruct_027e0cf8_00::func_ov024_020cfe24(s16 stationSceneIdx) { + for (u32 i = 0; i < ARRAY_LEN(data_ov024_020d8098); i++) { + if (stationSceneIdx == data_ov024_020d8098[i].mStationSceneIdx) { + return data_ov024_020d8098[i].mUnk_0A; + } + } + + return false; +} + +s32 UnkStruct_027e0cf8_00::func_ov024_020cfe6c(s32 param1, s32 param2, s32 param3, s32 param4) { + s32 index = UnkStruct_027e0cf8_00::func_ov024_020cfd54(param1, param2, param3, param4); + + if (index >= 0) { + return data_ov024_020d8098[index].mUnk_06; + } + + return -1; +} + +s16 UnkStruct_027e0cf8_00::func_ov024_020cfe94(s32 param1) { + for (u32 i = 0; i < ARRAY_LEN(data_ov024_020d8098); i++) { + const UnkStruct_ov024_020d8098 *ptr = &data_ov024_020d8098[i]; + + if (ptr->mUnk_06 == param1) { + return ptr->mStationSceneIdx; + } + } + + return SceneIndex_None; +} + +bool UnkStruct_027e0cf8_00::func_ov024_020cfed0(s16 sceneIndex) { + for (u32 i = 0; i < ARRAY_LEN(data_ov024_020d8098); i++) { + if (sceneIndex == data_ov024_020d8098[i].mStationSceneIdx) { + return data_ov024_020d8098[i].mUnk_0B; + } + } + + func_ov024_020d5340(sceneIndex); + return false; +} + +void UnkStruct_027e0cf8_0C_00::func_ov024_020cff1c() { + this->mUnk_0C.x = 0; + this->mUnk_0C.y = 0; + this->mUnk_14 = -1; + this->mUnk_16 = -1; + this->mUnk_18 = false; + this->mUnk_19 = false; + this->mUnk_1A = false; + this->mUnk_1B = false; +} + +UnkStruct_027e0cf8_0C::UnkStruct_027e0cf8_0C() { + this->mUnk_168.x = 0; + this->mUnk_168.y = 0; + this->mUnk_16C = 0; +} + +UnkStruct_027e0cf8_0C::~UnkStruct_027e0cf8_0C() {} + +void UnkStruct_027e0cf8_0C::func_ov024_020cff8c(UnkDataStruct4 *param1, Vec2s *param2) { + Vec2s_Copy(param2, &this->mUnk_168); + this->mUnk_150.func_ov000_0205fc20(0x66, 0x00, NULL, NULL); + this->mUnk_15C.func_ov000_0205fc20(0x66, 0x01, NULL, NULL); + this->mUnk_16C = 0; + this->func_ov024_020d002c(param1); + this->func_ov024_020d01c0(param1); +} + +void UnkStruct_027e0cf8_0C::func_ov024_020d0004() { + for (int i = 0; i < ARRAY_LEN(this->mUnk_000); i++) { + this->mUnk_000[i].func_ov024_020cff1c(); + } +} + +void UnkStruct_027e0cf8_0C::func_ov024_020d002c(const UnkDataStruct4 *param1) { + int i; + int j; + unk32 unk_16C; + const UnkStruct_ov024_020d8098 *temp_r6; + UnkStruct_027e0cf8_0C_00 *temp_r9; + s8 temp_r8; + UnkDataStruct4_14_2 *const *sp8; + const UnkDataStruct4_14 *pUnk_14; + const UnkDataStruct4_14 *new_var; + SceneIndex temp_r11; + VecFx32 spC; + s32 temp_r0; + bool var_r0_2; + bool var_r0_3; + + temp_r11 = param1->mSceneIndex; + spC.x = 0; + spC.y = 0; + spC.z = 0; + + for (i = 0; i < ARRAY_LEN(param1->mUnk_14); i++) { + for (j = 0; j < ARRAY_LEN(param1->mUnk_14[0]->mUnk_00); j++) { + sp8 = param1->mUnk_14; + pUnk_14 = sp8[i]->mUnk_00; + temp_r8 = sp8[i]->mUnk_00[j].mStationSceneIndex; + new_var = &pUnk_14[j]; + + if (temp_r8 == SceneIndex_Max) { + continue; + } + + temp_r0 = UnkStruct_027e0cf8_00::func_ov024_020cfd54(temp_r11, temp_r8, i, j); + if (temp_r0 < 0) { + continue; + } + + temp_r6 = &data_ov024_020d8098[temp_r0]; + + if (temp_r8 == SceneIndex_Max) { + continue; + } + + unk_16C = this->mUnk_16C; + this->mUnk_000[unk_16C].mUnk_18 = UnkStruct_027e0cf8_0C::func_ov024_020d0510(temp_r6->mUnk_06); + + if (temp_r6->mUnk_08 != 0xFFFF) { + this->mUnk_000[unk_16C].mUnk_00.func_ov000_0205fc20(0x66, temp_r6->mUnk_08, NULL, NULL); + this->mUnk_000[unk_16C].mUnk_1B = true; + } else { + this->mUnk_000[unk_16C].mUnk_1B = false; + } + + param1->func_ov024_020d2b08(i, j, &spC); + + this->mUnk_000[unk_16C].mUnk_0C.x = spC.x; + this->mUnk_000[unk_16C].mUnk_0C.y = spC.z; + +#if IS_JP + if (temp_r8 == SceneIndex_d_main_f) { + if (param1->mSceneIndex == SceneIndex_t_area1 || param1->mSceneIndex == SceneIndex_t_area3) { + this->mUnk_000[unk_16C].mUnk_0C.y -= 0xC000; + } + } +#endif + + this->mUnk_000[unk_16C].mUnk_14 = UnkStruct_027e0cf8_00::func_ov024_020cfe6c(temp_r11, temp_r8, i, j); + this->mUnk_000[unk_16C].mUnk_16 = temp_r8; + + if (new_var->func_ov024_020d23bc() && UnkStruct_027e0cf8_00::func_ov024_020cfe24(temp_r8)) { + var_r0_2 = true; + } else { + var_r0_2 = false; + } + this->mUnk_000[unk_16C].mUnk_19 = var_r0_2; + + if (new_var->func_ov024_020d239c() && UnkStruct_027e0cf8_00::func_ov024_020cfe24(temp_r8)) { + var_r0_3 = true; + } else { + var_r0_3 = false; + } + this->mUnk_000[unk_16C].mUnk_1A = var_r0_3; + + this->mUnk_16C++; + } + } +} + +void UnkStruct_027e0cf8_0C::func_ov024_020d01c0(const UnkDataStruct4 *param1) { + SceneIndex sceneIndex = param1->mSceneIndex; + + for (u32 i = 0; i < ARRAY_LEN(data_ov024_020d7454); i++) { + const UnkStruct_ov024_020d7454 *temp_r7 = &data_ov024_020d7454[i]; + + if (sceneIndex == temp_r7->mSceneIndex) { + UnkStruct_027e0cf8_0C_00 *temp_r8 = &this->mUnk_000[this->mUnk_16C]; + + if (temp_r7->mAdvFlag == AdventureFlag_Unset) { + temp_r8->mUnk_18 = true; + } else { + bool var_r1; + + if (data_027e09b8->HasAdventureFlag(temp_r7->mAdvFlag)) { + var_r1 = true; + } else { + var_r1 = false; + } + + if (temp_r7->mUnk_08 == var_r1) { + temp_r8->mUnk_18 = true; + } else { + temp_r8->mUnk_18 = false; + } + } + + temp_r8->mUnk_00.func_ov000_0205fc20(0x66, temp_r7->mUnk_04, NULL, NULL); + + if (!param1->func_ov024_020d308c(&temp_r8->mUnk_0C.x, &temp_r8->mUnk_0C.y, temp_r7->mUnk_0C)) { + temp_r8->mUnk_0C.x = 0; + temp_r8->mUnk_0C.y = 0; + } + + temp_r8->mUnk_14 = temp_r7->mUnk_0C; + temp_r8->mUnk_16 = temp_r7->mUnk_02; + temp_r8->mUnk_19 = temp_r7->mUnk_09; + temp_r8->mUnk_1A = temp_r7->mUnk_0A; + temp_r8->mUnk_1B = true; + this->mUnk_16C++; + } + } +} + +bool UnkStruct_027e0cf8_0C::func_ov024_020d02e0(fx32 *pX, fx32 *pZ, s32 param3) { + //! TODO: fake match? + for (int i = 0; i < *(volatile unk32 *) &this->mUnk_16C; i++) { + UnkStruct_027e0cf8_0C_00 *iVar2 = &this->mUnk_000[i]; + + if (iVar2->mUnk_14 == param3) { + if (pX != NULL) { + *pX = iVar2->mUnk_0C.x; + } + + if (pZ != NULL) { + *pZ = iVar2->mUnk_0C.y; + } + + return true; + } + } + + return false; +} + +bool UnkStruct_027e0cf8_0C::func_ov024_020d0340(Vec2s *param1, unk32 param2) { + VecFx32 sp4 = data_027e07d4; + + if (this->func_ov024_020d02e0(&sp4.x, &sp4.z, param2)) { + Vec2s local_28; + local_28.x = 0x200; + local_28.y = 0x000; + + if (!data_027e0998->func_ov000_02061a48(&sp4, param1, &local_28)) { + return false; + } + + Vec2s_Add2(&this->mUnk_168, param1); + return true; + } + + return false; +} + +void UnkStruct_027e0cf8_0C::func_ov024_020d03f8(Vec2s *param1) { + Vec2s local_8; + local_8.x = param1->x; + local_8.y = param1->y; + UnkStruct_027e0cf8_00::func_ov024_020cfe94(this->func_ov024_020d041c(&local_8)); +} + +s32 UnkStruct_027e0cf8_0C::func_ov024_020d041c(Vec2s *param1) { + Vec2s sp0; + s16 var_r0; + s16 var_r2; + s16 var_r6; + s16 var_r7; + + for (int i = 0; i < 0x39; i++) { + switch (i) { + case 0x02: + var_r6 = 0; + var_r7 = -8; + break; + case 0x1D: + case 0x20: + var_r6 = -8; + var_r7 = 0; + break; + default: + var_r6 = 0; + var_r7 = 8; + break; + } + + if (this->func_ov024_020d0340(&sp0, i)) { + sp0.x -= var_r6; + sp0.y -= var_r7; + + sp0.x -= param1->x; + sp0.y -= param1->y; + + var_r2 = sp0.x; + if (var_r2 < 0) { + var_r2 = -var_r2; + } + + if (var_r2 < 12) { + var_r0 = sp0.y; + if (var_r0 < 0) { + var_r0 = -var_r0; + } + + if (var_r0 < 12) { + return i; + } + } + } + } + + return -1; +} + +bool UnkStruct_027e0cf8_0C::func_ov024_020d0510(s16 param1) { + for (u32 i = 0; i < ARRAY_LEN(data_ov024_020d8098); i++) { + const UnkStruct_ov024_020d8098 *ptr = &data_ov024_020d8098[i]; + + if (ptr->mUnk_06 == param1) { + if (ptr->mUnk_0B) { + if (param1 == 0x26) { + return func_ov000_0205ca18(0x3F, 0x00); + } + + if (param1 == 0x38) { + return func_ov000_0205ca18(0x3F, 0x0A); + } + + if (param1 == 0x29) { + return func_ov000_0205ca18(0x39, 0x0A); + } + + return func_ov000_0205c9d0(ptr->mStationSceneIdx); + } + + return true; + } + } + + return false; +} + +void UnkStruct_027e0cf8_0C::func_ov024_020d05d0(unk32 param1, bool param2) { + for (int i = 0; i < this->mUnk_16C; i++) { + if (param1 == this->mUnk_000[i].mUnk_14) { + this->mUnk_000[i].mUnk_18 = param2; + break; + } + } +} diff --git a/src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp b/src/024_MainGame/Train/UnkStruct_027e0cf8_024.cpp similarity index 80% rename from src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp rename to src/024_MainGame/Train/UnkStruct_027e0cf8_024.cpp index 80bd8dc4..24327642 100644 --- a/src/024_MainGame/Game/UnkStruct_027e0cf8_024.cpp +++ b/src/024_MainGame/Train/UnkStruct_027e0cf8_024.cpp @@ -3,10 +3,6 @@ #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_027e0cf8.hpp" -extern "C" bool func_ov024_020d5354(unk32 *param1, unk16 *param2, ItemId itemId); -extern "C" void func_ov024_020d524c(Vec2us *param1, unk32 param2); -extern "C" void func_ov024_020d51dc(Vec2us *param1, unk32 param2); - UnkStruct_027e0cf8 *UnkStruct_027e0cf8::Create() { return new(HeapIndex_1) UnkStruct_027e0cf8(); } @@ -36,21 +32,15 @@ UnkStruct_027e0cf8::~UnkStruct_027e0cf8() { this->func_ov024_020c7750(); if (data_027e09a4->IsDarkRealm()) { - delete this->mUnk_04; - this->mUnk_04 = NULL; + DELETE(this->mUnk_04); } - delete this->mUnk_0C; - this->mUnk_0C = NULL; - - delete this->mUnk_08; - this->mUnk_08 = NULL; - - delete this->mUnk_00; - this->mUnk_00 = NULL; + DELETE(this->mUnk_0C); + DELETE(this->mUnk_08); + DELETE(this->mUnk_00); } -void UnkStruct_027e0cf8::func_ov024_020c755c(void *param1) { +void UnkStruct_027e0cf8::func_ov024_020c755c(UnkDataStruct4 *param1) { unk32 local_1c = -1; unk16 local_20 = 0; @@ -63,16 +53,15 @@ void UnkStruct_027e0cf8::func_ov024_020c755c(void *param1) { } } -void UnkStruct_027e0cf8::func_ov024_020c75d0(void *param1, unk32 param2, u16 param3) { +void UnkStruct_027e0cf8::func_ov024_020c75d0(UnkDataStruct4 *param1, unk32 param2, u16 param3) { if (this->mUnk_1C) { UnkStruct_027e0cf8::func_ov024_020c7724(); } - //! TODO: confirm what UnkDataStruct3 is so we can remove the cast - unk32 uVar1 = ((UnkDataStruct3 *) param1)->mUnk_CC; + SceneIndex sceneIndex = param1->mSceneIndex; volatile Vec2us local_1c; - func_ov024_020d524c((Vec2us *) &local_1c, uVar1); + func_ov024_020d524c((Vec2s *) &local_1c, sceneIndex); Vec2us result; result.x = local_1c.x; @@ -81,7 +70,7 @@ void UnkStruct_027e0cf8::func_ov024_020c75d0(void *param1, unk32 param2, u16 par this->mUnk_10.y = result.y; volatile Vec2us local_20; - func_ov024_020d51dc((Vec2us *) &local_20, uVar1); + func_ov024_020d51dc((Vec2s *) &local_20, sceneIndex); result.x = local_20.x; result.y = local_20.y; @@ -144,16 +133,16 @@ void UnkStruct_027e0cf8::func_ov024_020c7780() { } } -void UnkStruct_027e0cf8::func_ov024_020c77b0(unk32 param1) { +void UnkStruct_027e0cf8::func_ov024_020c77b0(bool param1) { this->mUnk_08->func_ov024_020d341c(param1); } -void UnkStruct_027e0cf8::func_ov024_020c77c0() { - this->mUnk_0C->func_ov024_020d02e0(); +bool UnkStruct_027e0cf8::func_ov024_020c77c0(fx32 *pX, fx32 *pZ, s32 param3) { + return this->mUnk_0C->func_ov024_020d02e0(pX, pZ, param3); } -void UnkStruct_027e0cf8::func_ov024_020c77d0() { - this->mUnk_0C->func_ov024_020d0340(); +bool UnkStruct_027e0cf8::func_ov024_020c77d0(Vec2s *param1, unk32 param2) { + return this->mUnk_0C->func_ov024_020d0340(param1, param2); } void UnkStruct_027e0cf8::func_ov024_020c77e0(Vec2s *param1) { @@ -217,13 +206,13 @@ void UnkStruct_027e0cf8::func_ov024_020c78d0() { void UnkStruct_027e0cf8::func_ov024_020c78e4(unk32 param1) { if (this->mUnk_0C != NULL) { - this->mUnk_0C->func_ov024_020d05d0(param1, 1); + this->mUnk_0C->func_ov024_020d05d0(param1, true); } } void UnkStruct_027e0cf8::func_ov024_020c7900(unk32 param1) { if (this->mUnk_0C != NULL) { - this->mUnk_0C->func_ov024_020d05d0(param1, 0); + this->mUnk_0C->func_ov024_020d05d0(param1, false); } } diff --git a/src/024_MainGame/Train/UnkStruct_027e0cf8_08_00_024.cpp b/src/024_MainGame/Train/UnkStruct_027e0cf8_08_00_024.cpp new file mode 100644 index 00000000..2cb0d680 --- /dev/null +++ b/src/024_MainGame/Train/UnkStruct_027e0cf8_08_00_024.cpp @@ -0,0 +1,133 @@ +#include "Unknown/UnkStruct_027e0cf8.hpp" + +#include + +extern "C" fx32 func_01ffb66c(unk32, unk32); + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d3900(Vec2s *param1, fx32 *param2, fx32 *param3, unk32 param4, unk32 param5) { + return UnkStruct_027e0cf8_08_00::func_ov024_020d3970(param1, param2, param3, param4, param5); +} + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d3914(Vec2s *param1, Vec2s *param2, Vec2s *param3) { + fx32 x = 0; + fx32 y = 0; + + if (UnkStruct_027e0cf8_08_00::func_ov024_020d3900(param1, &x, &y, param3->x, param3->y)) { + param2->x = x; + param2->y = y; + return true; + } + + return false; +} + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d3970(Vec2s *param1, fx32 *param2, fx32 *param3, unk32 param4, unk32 param5) { + if (UnkStruct_027e0cf8_08_00::func_ov024_020d39fc(param1, param4, param5)) { + fx32 temp1 = param4 - param1->x; + fx32 temp2 = param5 - param1->y; + + fx32 temp_r5 = func_01ffb66c(temp1, 0x0C); + fx32 temp_r0 = func_01ffb66c(temp2, 0x0C); + + if (UnkStruct_027e0cf8_08_00::func_ov024_020d3a34(param1, temp_r5, temp_r0)) { + *param2 = temp_r5; + *param3 = temp_r0; + return true; + } + + return false; + } + + return false; +} + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d39fc(Vec2s *param1, unk32 param2, unk32 param3) { + unk32 temp_r1 = param2 - param1->x; + unk32 temp_r0 = param3 - param1->y; + + if (temp_r1 >= 0 && temp_r1 < 0xF0 && temp_r0 >= 0 && temp_r0 < 0xB4) { + return true; + } + + return false; +} + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d3a34(Vec2s *param1, unk32 param2, unk32 param3) { + if (param2 >= 0 && param2 < 0x14 && param3 >= 0 && param3 < 0x0F) { + return true; + } + + return false; +} + +void UnkStruct_027e0cf8_08_00::func_ov024_020d3a60(Vec2s *param1, Vec2s *param2, unk32 param3, unk32 param4) { + fx32 x = param2->x + (param3 * 0x0C) + 0x06; + fx32 y = param2->y + (param4 * 0x0C) + 0x06; + param1->x = x; + param1->y = y; +} + +bool UnkStruct_027e0cf8_08_00::func_ov024_020d3a8c(Vec2s *param1) { + bool var_r2 = true; + bool var_r3 = true; + bool var_ip = true; + + if (param1->x >= 0x03 && param1->x <= 0xFD) { + var_ip = false; + } + + if (!var_ip && param1->y >= 0x03) { + var_r3 = false; + } + + if (!var_r3 && param1->y <= 0xBD) { + var_r2 = false; + } + + return var_r2; +} + +void UnkStruct_027e0cf8_08_00::func_ov024_020d3adc(Vec2s *param1, unk32 param2, unk32 param3, u8 param4, bool param5, + u8 param6) { + UnkArrayDataType2 sp10; + Vec2s spC; + s32 temp_r0; + Vec2s temp_r5; + + MI_CpuFill32(0, &sp10, sizeof(sp10)); + + temp_r0 = this->func_ov024_020d3bfc(sp10, param2, param3, param5); + + for (int i = 0; i < temp_r0; i++) { + s16 x1 = sp10[i].x; + s16 y1 = sp10[i].y; + + temp_r5.x = x1 + param1->x; + temp_r5.y = y1 + param1->y; + + if (i == 0 || i == temp_r0 - 1) { + spC.x = temp_r5.x; + spC.y = temp_r5.y; + + if (UnkStruct_027e0cf8_08_00::func_ov024_020d3a8c(&spC)) { + this->func_ov024_020d0924(temp_r5.x, temp_r5.y, param4, param6); + } else { + this->func_ov024_020d0924(temp_r5.x, temp_r5.y, param4, param6 - 2); + } + } else { + this->func_ov024_020d0924(temp_r5.x, temp_r5.y, param4, param6); + } + } +} + +unk32 UnkStruct_027e0cf8_08_00::func_ov024_020d3bfc(UnkArrayDataType2 param1, unk32 param2, unk32 param3, bool param4) { + int i; + Vec2s *temp_r5 = this->mUnk_178[param2][param3]; + s32 arrayLen = param4 ? 4 : 7; + + for (i = 0; i < arrayLen; i++) { + Vec2s_Copy(&temp_r5[i], ¶m1[i]); + } + + return arrayLen; +} diff --git a/src/024_MainGame/Train/UnkStruct_027e0cf8_08_024.cpp b/src/024_MainGame/Train/UnkStruct_027e0cf8_08_024.cpp new file mode 100644 index 00000000..36b9cc2f --- /dev/null +++ b/src/024_MainGame/Train/UnkStruct_027e0cf8_08_024.cpp @@ -0,0 +1,192 @@ +#include "Unknown/UnkStruct_027e0cf8.hpp" + +#include + +extern "C" void func_02019cec(u16 param1, unk32 param2); + +u8 UnkStruct_027e0cf8_08::func_ov024_020d3158(SceneIndex sceneIndex) { + switch (sceneIndex) { + case SceneIndex_test_trn: + break; + case SceneIndex_test_trn2: + break; + case SceneIndex_test_pre: + break; + case SceneIndex_test_iwa: + break; + case SceneIndex_t_area0: + case SceneIndex_t_tutorial: + return 0x06; + case SceneIndex_t_area1: + return 0x07; + case SceneIndex_t_area2: + return 0x08; + case SceneIndex_t_area3: + return 0x09; + case SceneIndex_t_forest: + break; + case SceneIndex_t_smarine: + return 0x0A; + case SceneIndex_t_smount: + break; + case SceneIndex_t_smount2: + break; + case SceneIndex_t_smount3: + break; + case SceneIndex_t_dark: + return 0x0B; + case SceneIndex_t_eviltrain: + case SceneIndex_t_eviltrain2: + case SceneIndex_t_eviltrain3: + return 0x0C; + case SceneIndex_t_minigame: + return 0x0D; + default: + break; + } + + return 0x01; +} + +UnkStruct_027e0cf8_08::UnkStruct_027e0cf8_08() { + UnkStruct_027e0cf8_08_00 *ptr = new(HeapIndex_1) UnkStruct_027e0cf8_08_00(1); + this->mUnk_000 = ptr; + this->mUnk_004 = -1; + this->mUnk_008 = 0; + this->mUnk_00C = 0; + this->mUnk_26A = 0; + Vec2s_Clear(&ptr->mUnk_174); + MI_CpuFill8(this->mUnk_010, 0, sizeof(this->mUnk_010)); + MI_CpuFill8(this->mUnk_13C, 0, sizeof(this->mUnk_13C)); +} + +UnkStruct_027e0cf8_08::~UnkStruct_027e0cf8_08() { + DELETE(this->mUnk_000); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d32b4(unk8 *param1) { + this->mUnk_000->func_ov024_020d072c(param1); + func_02019cec(this->mUnk_268, 0x0F); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d32d8() { + this->mUnk_000->func_ov024_020d06d0(); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d32e8(Vec2s *param1) { + Vec2s temp; + temp.x = param1->x; + temp.y = param1->y; + Vec2s_Copy(&temp, &this->mUnk_000->mUnk_174); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d3324(UnkDataStruct4 *param1) { + this->func_ov024_020d336c(param1, -1, 0, 0, 0); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d3348(UnkDataStruct4 *param1, unk32 param2, u16 param3, unk32 param4, unk32 param5) { + this->func_ov024_020d336c(param1, param2, param3, param4, param5); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d336c(UnkDataStruct4 *param1, unk32 param2, unk32 param3, unk32 param4, + unk32 param5) { + this->mUnk_26A = UnkStruct_027e0cf8_08::func_ov024_020d3158(param1->mSceneIndex); + this->mUnk_008 = param4; + this->mUnk_00C = param5; + + if (param2 == -1) { + this->mUnk_004 = -1; + } else { + this->mUnk_004 = 0; + this->mUnk_268 = 0x8000 - 1; + param1->func_ov024_020d2cfc(this->mUnk_13C, param2, param3); + } + + this->func_ov024_020d3428(param1, 0x02, 0x03); + param1->func_ov024_020d2c54(this->mUnk_010, 0); + this->func_ov024_020d34a0(this->mUnk_010, this->mUnk_26A); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d340c() { + this->mUnk_000->func_ov024_020d0698(); +} + +void UnkStruct_027e0cf8_08::func_ov024_020d341c(bool param1) { + this->mUnk_000->mUnk_08 = param1; +} + +void UnkStruct_027e0cf8_08::func_ov024_020d3428(const UnkDataStruct4 *param1, unk32 param2, u8 param3) { + UnkDataStruct4_14_2 *const *pUnk_14 = NULL; + unk32 auStack_30[3]; + + for (int i = 0; i < ARRAY_LEN(param1->mUnk_14); i++) { + for (int j = 0; j < ARRAY_LEN(param1->mUnk_14[0]->mUnk_00); j++) { + pUnk_14 = param1->mUnk_14; + UnkDataStruct4_14_2 *const *dummy = pUnk_14; // somehow required to match + this->func_ov024_020d351c(i, j, auStack_30, pUnk_14[i]->mUnk_00[j].func_ov024_020d1c3c(auStack_30, param2), + param3); + } + } +} + +void UnkStruct_027e0cf8_08::func_ov024_020d34a0(UnkArrayDataType1 param1, u8 param2) { + unk32 auStack_30[3]; + + for (int i = 0; i < UnkDataStruct4_14_Unk_Max; i++) { + for (int j = 0; j < 15; j++) { + unk32 iVar1 = UnkDataStruct4_14::func_ov024_020d1b98(auStack_30, param1[i][j]); + + if (iVar1 > 0) { + this->func_ov024_020d351c(i, j, auStack_30, iVar1, param2); + } + } + } +} + +void UnkStruct_027e0cf8_08::func_ov024_020d351c(unk32 param1, unk32 param2, unk32 *param3, unk32 param4, u8 param5) { + unk16 sVar1; + unk16 sVar2; + + //! TODO: fake match? + sVar2 = param2 * 12 + this->mUnk_000->mUnk_174.y + 6; + sVar1 = param1 * 12 + this->mUnk_000->mUnk_174.x + 6; + + switch (param4) { + case 1: { + u32 val = param3[0]; + + Vec2s temp; + temp.x = sVar1; + temp.y = sVar2; + this->mUnk_000->func_ov024_020d3adc(&temp, param3[0], (val + 2) & 3, param5, true, 4); + break; + } + case 2: { + Vec2s temp; + temp.x = sVar1; + temp.y = sVar2; + this->mUnk_000->func_ov024_020d3adc(&temp, param3[0], param3[1], param5, false, 4); + break; + } + case 3: { + Vec2s temp1; + temp1.x = sVar1; + temp1.y = sVar2; + this->mUnk_000->func_ov024_020d3adc(&temp1, param3[0], param3[1], param5, false, 4); + + Vec2s temp2; + temp2.x = sVar1; + temp2.y = sVar2; + this->mUnk_000->func_ov024_020d3adc(&temp2, param3[1], param3[2], param5, false, 4); + + Vec2s temp3; + temp3.x = sVar1; + temp3.y = sVar2; + this->mUnk_000->func_ov024_020d3adc(&temp3, param3[2], param3[0], param5, false, 4); + break; + } + case 0: + default: + break; + } +} diff --git a/src/024_MainGame/Train/UnkStruct_027e0d00.cpp b/src/024_MainGame/Train/UnkStruct_027e0d00.cpp new file mode 100644 index 00000000..edeab07b --- /dev/null +++ b/src/024_MainGame/Train/UnkStruct_027e0d00.cpp @@ -0,0 +1,208 @@ +#include "Unknown/UnkStruct_027e0d00.hpp" +#include "MainGame/CargoManager.hpp" +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" +#include "versions.h" + +extern "C" bool func_ov026_020f4be0(int, int); +extern "C" unk32 func_02012fc4(unk32); + +const UnkStruct_ov024_020d7624 data_ov024_020d7624 = {0x13, {0}}; +static const unk32 data_ov024_020d764c[] = {0x0320, 0x0300, 0x0500, 0x0200}; +static const unk32 data_ov024_020d763c[] = {0x0270, 0x0140, 0x0240, 0x0100}; +static const unk32 data_ov024_020d762c[] = {0x444C, 0x2178, 0x203C, 0x15B8}; +static const unk32 data_ov024_020d765c[] = {0x0080, 0x0000, 0x0000, 0x0000}; +const unk32 data_ov024_020d766c[] = {0x0004, 0x0610, 0x03F0, 0x0450}; + +void UnkStruct_027e0d00::func_ov024_020d47c4(unk32 *param1, unk32 *param2, unk32 param3) { + UnkStruct_027e0ce0_34 *ptr = UnkStruct_027e0ce0::func_ov000_0205c904(); + + if (param3 < ptr->mUnk_2C) { + *param1 = ptr->func_ov024_020d3dec(param3); + *param2 = ptr->func_ov024_020d3e0c(param3); + } else if (param3 == 2) { + *param1 = 1; + *param2 = 0; + } else if (param3 == 3) { + *param1 = 3; + *param2 = 0; + } +} + +UnkStruct_027e0d00 *UnkStruct_027e0d00::Create() { + return new(HeapIndex_1) UnkStruct_027e0d00(); +} + +unk32 UnkStruct_027e0d00::func_ov024_020d485c(unk32 param1, unk32 param2) { + switch (param2) { + case 0: + return data_ov024_020d765c[param1]; + case 1: + return data_ov024_020d764c[param1]; + case 2: + return data_ov024_020d763c[param1]; + case 3: + return func_02012fc4(data_ov024_020d762c[param1]); + default: + break; + } + + return 0; +} + +u8 UnkStruct_027e0d00::func_ov024_020d48c8(unk32 param1) { + return data_ov024_020d7624.unk_01[param1]; +} + +void UnkStruct_027e0d00::func_ov024_020d48d8(unk32 param1, unk32 param2) { + for (int i = 0; i < MAX_TRAIN_SETS; i++) { + this->DestroyUnk020(param1, i); + } + + this->mUnk_020[param1][param2] = new(this->mUnk_0E4[param1]) UnkStruct_027e0d00_20(param1, param2); + this->mUnk_020[param1][param2]->func_ov000_020588f0(this->mUnk_010[param1], this->func_ov024_020d485c(param1, 0x03), 0x01, + this->mUnk_000[param1]); + this->mUnk_020[param1][param2]->func_ov024_020d4fa0(this->mUnk_0A0[param1], data_ov024_020d766c[param1]); +} + +void UnkStruct_027e0d00::func_ov024_020d49ec(unk32 param1, unk32 param2) { + this->DestroyUnk020(param1, param2); +} + +void UnkStruct_027e0d00::func_ov024_020d4a50() { + UnkStruct_027e0ce0_34 *ptr = UnkStruct_027e0ce0::func_ov000_0205c904(); + + for (int i = 0; i < MAX_TRAIN_PARTS; i++) { + unk32 local_1c = -1; + unk32 local_20 = -1; + + UnkStruct_027e0d00::func_ov024_020d47c4(&local_1c, &local_20, i); + this->func_ov024_020d48d8(local_1c, local_20); + } + + this->func_ov024_020d4bf8(); +} + +void UnkStruct_027e0d00::func_ov024_020d4ab4() { + int j; + int i; + + for (i = 0; i < MAX_TRAIN_PARTS; i++) { + for (j = 0; j < MAX_TRAIN_SETS; j++) { + this->func_ov024_020d49ec(i, j); + } + } +} + +#if IS_JP +extern "C" void func_ov000_0205a1f4(void *, int, int, int, int); +#endif + +void UnkStruct_027e0d00::func_ov024_020d4af4() { + if (!this->mUnk_104) { + return; + } + + if (data_027e09a4->IsTrain()) { + return; + } + + for (int i = 0; i < MAX_TRAIN_PARTS; i++) { + unk32 local_1c = -1; + unk32 local_20 = -1; + + UnkStruct_027e0d00::func_ov024_020d47c4(&local_1c, &local_20, i); + UnkStruct_027e0d00_20 *pUnk20 = this->mUnk_020[local_1c][local_20]; + + if (pUnk20 != NULL && pUnk20->mUnk_20.mUnk_04 != NULL) { +#if IS_JP + UnkStruct_027e0d00_00 *ptr = this->mUnk_000[local_1c]; + func_ov000_0205a1f4(ptr, ptr->mUnk_1C, ptr->mUnk_20, ptr->mUnk_24, ptr->mUnk_1B); +#endif + + pUnk20->func_ov000_02058914(this->mUnk_000[local_1c]); + } + } + + this->func_ov024_020d4bf8(); +} + +unk32 UnkStruct_027e0d00::func_ov024_020d4b9c(unk32 param1) { + switch (param1) { + case 0x00: + return 0x18; // meant to be 0x17? + case 0x01: + return 0x18; + case 0x02: + return 0x19; + case 0x03: + return 0x1A; + case 0x04: + return 0x1B; + case 0x05: + return 0x1C; + default: + break; + } + +#if IS_JP + return 0x40; +#else + return 0x3F; +#endif +} + +void UnkStruct_027e0d00::func_ov024_020d4bf8() { + UnkStruct_StackTitleScreen auStack_20("Npc/Tex.bin", 1); + auStack_20.func_ov000_02059270(0x17, "feel_e", 0x2D200000); + auStack_20.func_ov000_02059270(0x18, "feel0", 0x2D200000); + auStack_20.func_ov000_02059270(0x19, "feel1", 0x2D200000); + auStack_20.func_ov000_02059270(0x1A, "feel2", 0x2D200000); + auStack_20.func_ov000_02059270(0x1B, "feel3", 0x2D200000); + auStack_20.func_ov000_02059270(0x1C, "feel4", 0x2D200000); +} + +void UnkStruct_027e0d00::func_ov024_020d4cc0(u32 cargoType) { + if (cargoType != CargoType_None && this->mUnk_100 != NULL) { + this->mUnk_0F4 = new(this->mUnk_100) MapObjectProfile_Derived5(cargoType); + this->mUnk_0F4->func_ov000_020588f0(this->mUnk_0FC, 0xD30, 0x01, this->mUnk_0F8); + } +} + +void UnkStruct_027e0d00::func_ov024_020d4d10() { + this->DestroyUnk0F4(); +} + +void UnkStruct_027e0d00::func_ov024_020d4d44() { + if (this->mUnk_0F4 != NULL && this->mUnk_0F4->mUnk_20.mUnk_04 != NULL) { +#if IS_JP + UnkStruct_027e0d00_00 *ptr = this->mUnk_0F8; + func_ov000_0205a1f4(ptr, ptr->mUnk_1C, ptr->mUnk_20, ptr->mUnk_24, ptr->mUnk_1B); +#endif + this->mUnk_0F4->func_ov000_02058914(this->mUnk_0F8); + } +} + +void UnkStruct_027e0d00::func_ov024_020d4d6c(unk32 param1) { + for (int i = 0; i < ARRAY_LEN(this->mUnk_0B0); i++) { + if (func_ov026_020f4be0(param1, i)) { + this->mUnk_0B0[i] = new(HeapIndex_1) MapObjectProfile_Derived5(i); + this->mUnk_0B0[i]->func_ov000_020586b4(0, 0, 0, 0); + } + } +} + +void UnkStruct_027e0d00::func_ov024_020d4df8() { + for (int i = 0; i < ARRAY_LEN(this->mUnk_0B0); i++) { + DELETE(this->mUnk_0B0[i]); + } +} + +G3d_Model *UnkStruct_027e0d00::func_ov024_020d4e3c(unk32 param1) { + if (this->mUnk_0B0[param1] != NULL) { + return G3d_GetModelPtr(this->mUnk_0B0[param1]->mUnk_50); + } + + return NULL; +} diff --git a/src/024_MainGame/Train/UnkStruct_027e0d00_20.cpp b/src/024_MainGame/Train/UnkStruct_027e0d00_20.cpp new file mode 100644 index 00000000..dc56b584 --- /dev/null +++ b/src/024_MainGame/Train/UnkStruct_027e0d00_20.cpp @@ -0,0 +1,81 @@ +// clang-format off +// ModelRender must be placed before the other one for vtable ordering purposes +#include "Render/ModelRender.hpp" +#include "Unknown/UnkStruct_027e0d00.hpp" +// clang-format on + +extern "C" void func_02026800(void *, int, const char *, ...); +extern const char *data_ov000_020aa244; // ".narc" +extern const char *data_ov000_020aa24c; // ".bin" +extern const char *data_ov000_020aa250[4]; + +static const char *data_ov024_020d8474[] = { + "Train/loco", + "Train/cann", + "Train/pass", + "Train/flat", +}; + +static const char *data_ov024_020d8484[] = { + "lord", "wood", "iron", "bone", "euro", "fest", "cute", "gold", +}; + +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); +} + +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]); +} + +UnkStruct_027e0d00_20::UnkStruct_027e0d00_20(unk32 param1, unk32 param2) : + MapObjectProfile_Derived2_20_Base(data_ov024_020d8474[param1], data_ov024_020d8484[param2], "model", "anm", 1, 0), + mUnk_94(param1), + mUnk_98(param2), + mUnk_A4(NULL, 0, 1, 1), + mUnk_B0(0), + mUnk_B4(0) {} + +void UnkStruct_027e0d00_20::func_ov024_020d4fa0(unk32 param1, unk32 param2) { + u8 unknown[0x90]; + ModelRender_Derived2 local_120(G3d_GetModelPtr(this->mUnk_50), 0x0C, unknown); + void *iVar2; + void *iVar3; + s32 temp; + + iVar2 = local_120.func_ov000_0205a7a8(local_120.func_ov000_0205a778("rear_point")); + iVar3 = local_120.func_ov000_0205a7a8(local_120.func_ov000_0205a778("front_point")); + temp = (*(u32 *) ((u8 *) iVar3 + 8)) - (*(u32 *) ((u8 *) iVar2 + 8)); + this->mUnk_B0 = temp; + + iVar2 = local_120.func_ov000_0205a7a8(local_120.func_ov000_0205a778("rear_point")); + iVar3 = local_120.func_ov000_0205a7a8(local_120.func_ov000_0205a778("front_point")); + temp = (*(u32 *) ((u8 *) iVar3 + 8)) + (*(u32 *) ((u8 *) iVar2 + 8)); + this->mUnk_B4 = temp / 2; + + if (*(volatile unk32 *) &this->mUnk_94 != 0) { + wchar_t local_160[32]; + UnkStruct_027e0d00_20::func_ov024_020d4e9c(local_160, this->mUnk_94, true); + this->mUnk_A4.~UnkSystem3(); + this->mUnk_A4.mUnk_00 = local_160; + this->mUnk_A4.func_02015460((const char *) &this->mUnk_9C.mUnk_00, (void *) param1, param2); + + for (int i = 0; i < ARRAY_LEN(data_ov000_020aa250); i++) { + UnkStruct_027e0d00_20::func_ov024_020d4edc(local_160, (wchar_t *) &this->mUnk_9C.mUnk_00, i); + + MapObjectProfile_Derived2_20_Base_54 *ptr = &this->mUnk_54[i]; + ptr->vfunc_0C(); + this->mUnk_54[i].mUnk_04 = (const char *) local_160; + ptr->vfunc_08(0x10); + } + } +} + +void UnkStruct_027e0d00_20::func_ov024_020d5174() { + if (this->mUnk_A4.mUnk_04 != NULL) { + this->mUnk_A4.~UnkSystem3(); + } +} diff --git a/src/024_MainGame/Train/UnkTrainSystem1_024.cpp b/src/024_MainGame/Train/UnkTrainSystem1_024.cpp new file mode 100644 index 00000000..c3e1e52c --- /dev/null +++ b/src/024_MainGame/Train/UnkTrainSystem1_024.cpp @@ -0,0 +1,177 @@ +#include "MainGame/AdventureMode.hpp" +#include "MainGame/PassengerManager.hpp" +#include "MainGame/UnkTrainSystems.hpp" +#include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_027e09bc.hpp" +#include "Unknown/UnkStruct_027e0d00.hpp" +#include "Unknown/UnkStruct_ov024_020d86a0.hpp" +#include "types.h" +#include "versions.h" + +extern "C" void func_ov000_0205c1f0(unk32 *, u16); +extern "C" void func_ov000_0205c204(void *, VecFx32 *, int, int, u8); + +struct UnkStruct_ov024_020d86a8_Mgr { + const UnkStruct_ov024_020d86a8 *pInstance; + + UnkStruct_ov024_020d86a8_Mgr(const UnkStruct_ov024_020d86a8 *pInstance) { + this->pInstance = pInstance; + } +}; + +UnkStruct_ov024_020d86a8_Mgr data_ov024_020d86a8(&data_ov024_020d78b8); + +static const u8 data_ov024_020d78ac[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00}; + +u8 UnkTrainSystem1::func_ov024_020d54a0(s32 param1) { + return data_ov024_020d78ac[param1]; +} + +UnkTrainSystem1::UnkTrainSystem1() { + this->mUnk_00 = 0; + this->mUnk_04 = 0; + this->mUnk_08 = 0; + this->mUnk_0C = 0; + this->mUnk_10 = 0x1F; + this->mUnk_14 = 0; + + if (this->func_ov024_020d586c()) { + this->mUnk_04 = 0x214; + } +} + +UnkTrainSystem1::~UnkTrainSystem1() {} + +void UnkTrainSystem1::func_ov024_020d54f4() { + if (this->func_ov024_020d586c()) { + if (this->mUnk_04 == 0 && this->mUnk_0C == 0) { + this->mUnk_0C = 0xCD; + } + + if (this->mUnk_04 != 0x214 || this->mUnk_0C > 0) { + this->mUnk_04 += this->mUnk_0C; + this->mUnk_0C -= 0x21; + + if (this->mUnk_04 <= 0x214 && this->mUnk_0C < 0) { + this->mUnk_04 = 0x214; + this->mUnk_0C = 0; + } + } else { + if (this->mUnk_00 <= 0) { + this->mUnk_08 = 0x10; + } + + this->mUnk_00 += this->mUnk_08; + this->mUnk_08 -= 2; + } + + PassengerManager *pPassengerMgr = gpPassengerManager; + if (pPassengerMgr->CanCompleteTrip()) { + UnkStruct_027e0d00 *ptr = data_027e0d00; + this->mUnk_14 = ptr->func_ov024_020d4b9c(pPassengerMgr->GetHappinessCond()); + } + } else { + this->mUnk_04 += this->mUnk_0C; + this->mUnk_0C -= 0x21; + if (this->mUnk_04 <= 0) { + this->mUnk_04 = 0; + this->mUnk_0C = 0; + } + + this->mUnk_00 += this->mUnk_08; + this->mUnk_08 -= 2; + if (this->mUnk_00 <= 0) { + this->mUnk_00 = 0; + this->mUnk_08 = 0; + } + } +} + +void UnkTrainSystem1::func_ov024_020d562c(const VecFx32 *param1, fx32 param2) { + VecFx32 sp44; + VecFx32 sp38; + VecFx32 sp2C; + VecFx32 sp20; + VecFx32 sp14; + VecFx32 sp8; + unk32 sp4[1]; + fx32 new_var3; + fx32 new_var5; + fx32 new_var6; + VecFx32 temp_r1_3; + + if (this->mUnk_04 <= 0) { + return; + } + + func_ov000_0205c1f0(sp4, this->mUnk_14); + + if (data_ov024_020d86a8.pInstance->mUnk_00_1 == 0) { + UnkStruct_027e09bc *ptr = data_027e09bc; + fx32 temp = this->mUnk_00 + this->mUnk_04; + fx32 temp_r1 = MUL_FX32(temp, param2); + new_var3 = MUL_FX32(param2, 0x266); + + new_var5 = param1->z; + new_var6 = param1->y + new_var3; + + sp44.x = param1->x; + sp44.y = new_var6; + sp44.z = new_var5; + +#if IS_JP + UnkStruct_027e09bc_0C *temp_r8_2 = data_027e09bc->mUnk_04; +#else + UnkStruct_027e09bc_0C *temp_r8_2 = data_027e09bc->mUnk_0C; +#endif + + temp_r1_3.x = temp_r8_2->mUnk_34.x; + temp_r1_3.z = temp_r8_2->mUnk_34.z; + temp_r1_3.y = temp_r8_2->mUnk_34.y; + + fx32 x = temp_r1_3.x - param1->x; + temp_r1_3.x = x; + temp_r1_3.z -= param1->z; + temp_r1_3.y -= param1->y; + + sp14.x = MUL_FX32(temp_r1_3.x, 0x2E1); + sp14.y = MUL_FX32(temp_r1_3.y, 0x2E1); + sp14.z = MUL_FX32(temp_r1_3.z, 0x2E1); + + sp20 = sp14; + + sp8.x = sp44.x + sp20.x; + sp8.y = sp44.y + sp20.y; + sp8.z = sp44.z + sp20.z; + + sp2C = sp8; + + sp44.x = sp2C.x; + sp44.y = sp2C.y; + sp44.z = sp2C.z; + + func_ov000_0205c204(sp4, &sp44, temp_r1, temp_r1, 0x1F); + } else { + fx32 calcul_x = this->mUnk_04 + (this->mUnk_00 + 0x266); + fx32 thumb_y = (fx32) (((((s64) this->mUnk_04) * ((s64) param2)) + 0x800) >> 12); + unk32 new_var10 = this->mUnk_10; + + fx32 x = param1->x; + fx32 z = param1->z; + fx32 y = param1->y + (fx32) (((((s64) calcul_x) * ((s64) param2)) + 0x800) >> 12); + + sp38.x = x; + sp38.y = y; + sp38.z = z; + + func_ov000_0205c204(sp4, &sp38, thumb_y, thumb_y, (u8) new_var10); + } +} + +bool UnkTrainSystem1::func_ov024_020d586c() { + if (gpPassengerManager->CanCompleteTrip() || data_ov024_020d86a8.pInstance->mUnk_00_0 != 0) { + return true; + } + + return false; +} diff --git a/src/024_MainGame/Train/UnkTrainSystem2_024.cpp b/src/024_MainGame/Train/UnkTrainSystem2_024.cpp new file mode 100644 index 00000000..71c73e45 --- /dev/null +++ b/src/024_MainGame/Train/UnkTrainSystem2_024.cpp @@ -0,0 +1,101 @@ +#include "MainGame/AdventureMode.hpp" +#include "MainGame/CargoManager.hpp" +#include "MainGame/UnkTrainSystems.hpp" +#include "System/Random.hpp" +#include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e09b8.hpp" +#include "Unknown/UnkStruct_027e0d00.hpp" +#include "Unknown/UnkStruct_ov000_020b5214.hpp" + +extern "C" void func_01ffcb94(unk16, unk16, Mat3p *); +extern "C" void func_01ffa60c(const Mat3p *, Mat3p *, Mat3p *); + +const UnkStruct_ov024_020d86a8 data_ov024_020d78bc = {0}; + +const UnkCargoStruct data_ov024_020d78c0[] = { + {.type = CargoType_MegaIce, .requiredAmount = 1}, {.type = CargoType_DarkOre, .requiredAmount = 5}, + {.type = CargoType_MegaIce, .requiredAmount = 10}, {.type = CargoType_Iron, .requiredAmount = 5}, + {.type = CargoType_Fish, .requiredAmount = 10}, {.type = CargoType_Cuccos, .requiredAmount = 10}, + {.type = CargoType_Wood, .requiredAmount = 15}, {.type = CargoType_Vessel, .requiredAmount = 1}, + {.type = CargoType_Cuccos, .requiredAmount = 5}, {.type = CargoType_MegaIce, .requiredAmount = 10}, +}; + +struct UnkStruct_ov024_020d86a8_Mgr { + const UnkStruct_ov024_020d86a8 *pInstance; + + UnkStruct_ov024_020d86a8_Mgr(const UnkStruct_ov024_020d86a8 *pInstance) { + this->pInstance = pInstance; + } +}; + +UnkStruct_ov024_020d86a8_Mgr data_ov024_020d86ac(&data_ov024_020d78bc); + +UnkTrainSystem2::UnkTrainSystem2() : + mUnk_00(0), + mModelRender(NULL), + mUnk_64(0), + mUnk_66(0) { + if (this->func_ov024_020d5c40()) { + this->mUnk_00 = 0x1000; + } +} + +UnkTrainSystem2::~UnkTrainSystem2() {} + +extern "C" void func_01ff916c(void *, int, int); + +void UnkTrainSystem2::func_ov024_020d5990() { + if (this->func_ov024_020d5c40()) { + this->mUnk_00 = 0x1000; + } else { + unk32 temp_r6 = this->mUnk_00; + func_01ff916c(&this->mUnk_00, 0, 0x7B); + + if (data_027e09a4->IsTrain() && temp_r6 != 0 && this->mUnk_00 == 0 && gpCargoManager->mUnk_1C) { + data_ov000_020b5214.func_ov000_0206dc4c(0x141); + } + } + + if (data_027e09b8->func_01ffd420() == 0) { + if (gpCargoManager->mUnk_18 <= 0) { + this->mUnk_64 = 0; + this->mUnk_66 = 0; + } else { + this->mUnk_64 = ((s16) gRandom.Next16(0) + this->mUnk_64 / 2) >> 4; + this->mUnk_66 = ((s16) gRandom.Next16(0) + this->mUnk_66 / 2) >> 4; + } + } +} + +void UnkTrainSystem2::func_ov024_020d5afc(const Mat3p *param1, const VecFx32 *param2, unk32 param3) { + if (this->mUnk_00 <= 0) { + return; + } + + if (data_027e0d00->mUnk_0F4 == NULL) { + return; + } + + fx32 scale = MUL_FX32(this->mUnk_00, param3); + this->SetModel(); + + if (gpCargoManager->mUnk_18 > 0) { + Mat3p auStack_40; + VecFx32 temp; + func_01ffcb94(this->mUnk_64, this->mUnk_66, &auStack_40); + func_01ffa60c(param1, &auStack_40, &auStack_40); + this->SetTransform(&auStack_40, param2, scale); + } else { + this->SetTransform(param1, param2, scale); + } +} + +bool UnkTrainSystem2::func_ov024_020d5c40() { + if (gpCargoManager->GetCargo()->IsTypeSet() && gpCargoManager->GetCargo()->GetAmount() != 0 || + data_ov024_020d86ac.pInstance->mUnk_00_0 != 0) { + return true; + } + + return false; +} diff --git a/src/024_MainGame/Train/code_020d51dc_024.cpp b/src/024_MainGame/Train/code_020d51dc_024.cpp new file mode 100644 index 00000000..a43a4d70 --- /dev/null +++ b/src/024_MainGame/Train/code_020d51dc_024.cpp @@ -0,0 +1,374 @@ +#include "MainGame/AdventureMode.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "math.hpp" +#include "types.h" +#include "versions.h" + +typedef struct UnkStruct_ov024_020d774c { + /* 00 */ s16 unk_00; + /* 02 */ s16 flagValue; + /* 04 */ s16 unk_04; + /* 06 */ bool unk_06; + /* 06 */ bool unk_07; + /* 08 */ s16 unk_08; + /* 0A */ s16 unk_0A; + /* 0C */ s16 unk_0C; + /* 0E */ s16 unk_0E; +} UnkStruct_ov024_020d774c; // size = 0x10 + +typedef struct UnkStruct_ov024_020d76c0 { + s16 itemId : 12; + s16 flagPos : 4; + u16 flagValue; +} UnkStruct_ov024_020d76c0; // size = 0x04 + +extern char data_ov024_020d8550[]; +extern char data_ov024_020d8558[]; +extern char data_ov024_020d8560[]; +extern char data_ov024_020d8568[]; +extern char data_ov024_020d8570[]; +extern char data_ov024_020d8578[]; +extern char data_ov024_020d8580[]; +extern char data_ov024_020d8588[]; +extern char data_ov024_020d8590[]; +extern char data_ov024_020d859c[]; +extern char data_ov024_020d85a8[]; +extern char data_ov024_020d85bc[]; + +// unused, probably a debug leftover? +const char *data_ov024_020d8520[] = { + data_ov024_020d8588, data_ov024_020d8590, data_ov024_020d8560, data_ov024_020d8568, + data_ov024_020d859c, data_ov024_020d8570, data_ov024_020d8580, data_ov024_020d8558, + data_ov024_020d8550, data_ov024_020d85a8, data_ov024_020d85bc, data_ov024_020d8578, +}; +DECOMP_FORCE(data_ov024_020d8520); + +static const u8 data_ov024_020d767c[] = {0x0A, 0x09, 0x06, 0x05, 0x0A}; + +// clang-format off +const u16 data_ov024_020d7684[5][6] = { +#if IS_JP + {0x00, 0x00, 0x40, 0x00, 0x01, 0x00}, {0x00, 0x00, 0x40, 0x00, 0x02, 0x00}, +#else + {0x00, 0x00, 0x3F, 0x00, 0x01, 0x00}, {0x00, 0x00, 0x3F, 0x00, 0x02, 0x00}, +#endif + {0x87, 0x00, 0x05, 0x00, 0x03, 0x00}, + {0x87, 0x00, 0x06, 0x00, 0x04, 0x00}, + {0x80, 0x00, 0x05, 0x00, 0x00, 0x00}, +}; +// clang-format on + +static const UnkStruct_ov024_020d774c data_ov024_020d774c[] = { + {SceneIndex_e3_train, 0x001D, 0x0000, true, false, 0x0000, 0x0000, 0x09A5, 0x0000}, + {SceneIndex_e3_smount, 0x001D, 0x0000, false, false, 0x00FF, 0x0000, 0x0800, 0x0000}, + {SceneIndex_test_trn, 0x001D, 0x0000, true, true, 0x0000, 0x0000, 0x09A5, 0x0000}, + {SceneIndex_test_trn2, 0x001D, 0x0000, true, true, 0x0000, 0x0000, 0x09A5, 0x0000}, + {SceneIndex_t_area0, 0x001D, 0x0014, true, true, 0x0000, 0x0000, 0x09A5, 0x0000}, + {SceneIndex_t_area1, 0x001D, 0x0014, true, true, 0x0000, 0x0000, 0x09C5, 0x0000}, + {SceneIndex_t_area2, 0x001D, 0x0014, true, true, 0x0000, 0x0000, 0x09A5, 0x0000}, + {SceneIndex_t_area3, 0x001D, 0x0014, true, true, 0x0000, 0x0000, 0x08B5, 0x0000}, + {SceneIndex_t_tutorial, 0x001D, 0x0014, false, false, 0x0000, 0x0000, 0x09A5, 0x0000}, + {SceneIndex_t_forest, 0x001D, 0x0000, false, false, 0x0000, 0x0000, 0x0881, 0x0000}, +#if IS_JP + {SceneIndex_t_smarine, 0x0000, 0x0000, true, true, 0x0001, 0x0000, 0x000A, 0x0000}, +#else + {SceneIndex_t_smarine, 0x0000, 0x0000, true, false, 0x0001, 0x0000, 0x000A, 0x0000}, +#endif + {SceneIndex_t_smount, 0x001D, 0x0000, false, false, 0x00FF, 0x0000, 0x0800, 0x0000}, + {SceneIndex_t_smount2, 0x001D, 0x0000, false, false, 0x00FF, 0x0000, 0x0830, 0x0000}, + {SceneIndex_t_smount3, 0x001D, 0x0000, false, false, 0x00FF, 0x0000, 0x0830, 0x0000}, + {SceneIndex_test_hiratsu, 0x001D, 0x0000, true, true, 0x0000, 0x0000, 0x09A5, 0x0000}, + {SceneIndex_test_kato, 0x001D, 0x0000, true, true, 0x0000, 0x0000, 0x09A5, 0x0000}, + {SceneIndex_t_minigame, 0x0029, 0x0000, false, false, 0x0000, 0x0000, 0x0885, 0x0000}, + {SceneIndex_test_slope, 0x001D, 0x0000, false, false, 0x0000, 0x0000, 0x09A5, 0x0000}, + {SceneIndex_t_dark, 0x0000, 0x0000, true, false, 0x0002, 0x0000, 0x0E00, 0x0000}, + {SceneIndex_t_eviltrain, 0x0000, 0x0000, false, false, 0x00FF, 0x0000, 0x0800, 0x0000}, + {SceneIndex_t_eviltrain2, 0x0000, 0x0000, false, false, 0x00FF, 0x0000, 0x0800, 0x0000}, + {SceneIndex_t_eviltrain3, 0x0000, 0x0000, false, false, 0x00FF, 0x0000, 0x0800, 0x0000}, +}; + +static const UnkStruct_ov024_020d76c0 data_ov024_020d76c0[] = { + { + .itemId = ItemId_RestoredForestGlyph, + .flagPos = 0, + .flagValue = 0x01, + }, + { + .itemId = ItemId_RestoredSnowGlyph, + .flagPos = 0, + .flagValue = 0x02, + }, + { + .itemId = ItemId_RestoredOceanGlyph, + .flagPos = 0, + .flagValue = 0x03, + }, + { + .itemId = ItemId_RestoredFireGlyph, + .flagPos = 0, + .flagValue = 0x04, + }, + { + .itemId = ItemId_RestoredDesertOceanGlyph, + .flagPos = 0, + .flagValue = 0x05, + }, + { + .itemId = ItemId_FinalTrack, + .flagPos = 0, + .flagValue = 0x06, + }, + { + .itemId = ItemId_ForceGem_43, + .flagPos = 1, + .flagValue = 0x01, + }, + { + .itemId = ItemId_ForceGem_44, + .flagPos = 1, + .flagValue = 0x02, + }, + { + .itemId = ItemId_ForceGem_45, + .flagPos = 1, + .flagValue = 0x03, + }, + { + .itemId = ItemId_ForceGem_46, + .flagPos = 1, + .flagValue = 0x04, + }, + { + .itemId = ItemId_ForceGem_47, + .flagPos = 1, + .flagValue = 0x05, + }, + { + .itemId = ItemId_ForceGem_48, + .flagPos = 1, + .flagValue = 0x06, + }, + { + .itemId = ItemId_ForceGem_49, + .flagPos = 1, + .flagValue = 0x07, + }, + { + .itemId = ItemId_ForceGem_50, + .flagPos = 1, + .flagValue = 0x08, + }, + { + .itemId = ItemId_ForceGem_51, + .flagPos = 1, + .flagValue = 0x09, + }, + { + .itemId = ItemId_ForceGem_52, + .flagPos = 1, + .flagValue = 0x0A, + }, + { + .itemId = ItemId_ForceGem_53, + .flagPos = 1, + .flagValue = 0x0B, + }, + { + .itemId = ItemId_ForceGem_54, + .flagPos = 1, + .flagValue = 0x0C, + }, + { + .itemId = ItemId_ForceGem_55, + .flagPos = 1, + .flagValue = 0x0D, + }, + { + .itemId = ItemId_ForceGem_56, + .flagPos = 1, + .flagValue = 0x0E, + }, + { + .itemId = ItemId_ForceGem_18, + .flagPos = 1, + .flagValue = 0x0F, + }, + { + .itemId = ItemId_ForceGem_19, + .flagPos = 1, + .flagValue = 0x10, + }, + { + .itemId = ItemId_ForceGem_20, + .flagPos = 1, + .flagValue = 0x11, + }, + { + .itemId = ItemId_ForceGem_35, + .flagPos = 1, + .flagValue = 0x12, + }, + { + .itemId = ItemId_ForceGem_36, + .flagPos = 1, + .flagValue = 0x13, + }, + { + .itemId = ItemId_ForceGem_37, + .flagPos = 1, + .flagValue = 0x14, + }, + { + .itemId = ItemId_ForceGem_57, + .flagPos = 1, + .flagValue = 0x15, + }, + { + .itemId = ItemId_ForceGem_58, + .flagPos = 1, + .flagValue = 0x16, + }, + { + .itemId = ItemId_ForceGem_59, + .flagPos = 1, + .flagValue = 0x17, + }, + { + .itemId = ItemId_ForceGem_60, + .flagPos = 1, + .flagValue = 0x18, + }, + { + .itemId = ItemId_ForceGem_61, + .flagPos = 1, + .flagValue = 0x19, + }, + { + .itemId = ItemId_ForestGlyph, + .flagPos = 3, + .flagValue = 0x0F, + }, + { + .itemId = ItemId_SnowGlyph, + .flagPos = 3, + .flagValue = 0x10, + }, + { + .itemId = ItemId_OceanGlyph, + .flagPos = 3, + .flagValue = 0x11, + }, + { + .itemId = ItemId_FireGlyph, + .flagPos = 3, + .flagValue = 0x12, + }, +}; + +void func_ov024_020d51dc(Vec2s *param1, SceneIndex sceneIndex) { + static const Vec2s data_ov024_020d851c(-8, -6); + + Vec2s local_10; + Vec2s *ptr = (Vec2s *) &local_10; + func_ov024_020d524c(ptr, sceneIndex); + + Vec2s temp; + temp.x = ptr->x + data_ov024_020d851c.x; + temp.y = ptr->y + data_ov024_020d851c.y; + + param1->x = temp.x; + param1->y = temp.y; +} + +void func_ov024_020d524c(Vec2s *param1, SceneIndex sceneIndex) { + switch ((s32) sceneIndex) { + case SceneIndex_t_area0: + case SceneIndex_t_tutorial: + case SceneIndex_t_forest: + case SceneIndex_e3_train: + case SceneIndex_e3_smount: + param1->x = 0x10; + param1->y = 0x00; + break; + case SceneIndex_t_area1: + case SceneIndex_t_smount: + param1->x = 0x10; + param1->y = 0x0C; + break; + case SceneIndex_t_area2: + case SceneIndex_t_smount2: + param1->x = 0x00; + param1->y = 0x00; + break; + case SceneIndex_t_area3: + case SceneIndex_t_smount3: + param1->x = 0x00; + param1->y = 0x0C; + break; + default: + param1->x = 0x08; + param1->y = 0x06; + break; + } +} + +bool func_ov024_020d5304(SceneIndex sceneIndex) { + for (u32 i = 0; i < ARRAY_LEN(data_ov024_020d774c); i++) { + if (data_ov024_020d774c[i].unk_00 == sceneIndex) { + return data_ov024_020d774c[i].unk_06; + } + } + + return false; +} + +bool func_ov024_020d5340(SceneIndex sceneIndex) { + return sceneIndex - SceneIndex_t_area0 <= SceneIndex_t_area3 - SceneIndex_t_area0; +} + +bool func_ov024_020d5354(s32 *pFlagPos, s16 *pFlagValue, ItemId itemId) { + for (int i = 0; i < ARRAY_LEN(data_ov024_020d76c0); i++) { + if (data_ov024_020d76c0[i].itemId == itemId) { + *pFlagPos = data_ov024_020d76c0[i].flagPos; + *pFlagValue = data_ov024_020d76c0[i].flagValue; + return true; + } + } + + return false; +} + +static s32 func_ov024_020d53b0(SceneIndex sceneIndex) { + switch (sceneIndex) { + case SceneIndex_t_area0: + return 0x00; + case SceneIndex_t_area1: + return 0x01; + case SceneIndex_t_area2: + return 0x02; + case SceneIndex_t_area3: + return 0x03; + case SceneIndex_t_tutorial: + return 0x04; + default: + break; + } + + return -1; +} + +bool func_ov024_020d5410(SceneIndex sceneIndex) { + return data_ov024_020d767c[func_ov024_020d53b0(sceneIndex)] & 0x01; +} + +bool func_ov024_020d5434(SceneIndex sceneIndex) { + return data_ov024_020d767c[func_ov024_020d53b0(sceneIndex)] & 0x02; +} + +bool func_ov024_020d5458(SceneIndex sceneIndex) { + return data_ov024_020d767c[func_ov024_020d53b0(sceneIndex)] & 0x04; +} + +bool func_ov024_020d547c(SceneIndex sceneIndex) { + return data_ov024_020d767c[func_ov024_020d53b0(sceneIndex)] & 0x08; +} diff --git a/src/024_MainGame/Train/data_ov024_020d8550.cpp b/src/024_MainGame/Train/data_ov024_020d8550.cpp new file mode 100644 index 00000000..3f47d781 --- /dev/null +++ b/src/024_MainGame/Train/data_ov024_020d8550.cpp @@ -0,0 +1,15 @@ +#include "types.h" + +// unused, probably a debug leftover? +char data_ov024_020d8560[] = "客車"; // "Passenger Car" +char data_ov024_020d8568[] = "貨車"; // "Freight Car" +char data_ov024_020d8570[] = "木製"; // "Wooden" +char data_ov024_020d8550[] = "中世"; // "Medieval Times" +char data_ov024_020d8558[] = "骨製"; // "Made of Bone" +char data_ov024_020d8578[] = "黄金製"; // "Golden" +char data_ov024_020d8580[] = "鋼鉄製"; // "Steel" +char data_ov024_020d8588[] = "機関車"; // "Locomotive" +char data_ov024_020d859c[] = "神の汽車"; // "God's Train" +char data_ov024_020d8590[] = "砲台車輌"; // "Artillery Vehicle" +char data_ov024_020d85a8[] = "お祭り(民族風?)"; // "Festival (ethnic style?)" +char data_ov024_020d85bc[] = "キュート(お菓子?)"; // "Cute (candy?)" diff --git a/src/024_MainGame/UnkStruct_020d8698_024.cpp b/src/024_MainGame/UICounterManager.cpp similarity index 79% rename from src/024_MainGame/UnkStruct_020d8698_024.cpp rename to src/024_MainGame/UICounterManager.cpp index 7cb89980..cbbe0001 100644 --- a/src/024_MainGame/UnkStruct_020d8698_024.cpp +++ b/src/024_MainGame/UICounterManager.cpp @@ -1,8 +1,8 @@ +#include "Unknown/UICounterManager.hpp" #include "MainGame/CargoManager.hpp" #include "Unknown/UnkStruct_0204a110.hpp" #include "Unknown/UnkStruct_0204af1c.hpp" #include "Unknown/UnkStruct_0204e5f8.hpp" -#include "Unknown/UnkStruct_020d8698.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" #include "Unknown/UnkStruct_027e0ce0.hpp" @@ -14,7 +14,7 @@ extern "C" s16 func_020196b0(unk32 param1); extern "C" unk32 func_02015788(u16 param1); -UnkStruct_020d8698 *data_ov024_020d8698 = NULL; +UICounterManager *gpUICounterManager = NULL; static const u16 data_ov024_020d73d8[] = { 0x09, @@ -46,73 +46,64 @@ static const u16 data_ov024_020d7432[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x00, }; -UnkStruct_020d8698 *UnkStruct_020d8698::Create() { - return new(HeapIndex_1) UnkStruct_020d8698(); +UICounterManager *UICounterManager::Create() { + return new(HeapIndex_1) UICounterManager(); } -UnkStruct_020d8698::UnkStruct_020d8698() : - mUnk_01C(NULL), +UICounterManager::UICounterManager() : + mpHealth(NULL), mUnk_020(true), - mUnk_024(NULL), + mpRupees(NULL), mUnk_028(true), - mUnk_02C(NULL), + mpCargo(NULL), mUnk_030(true), - mUnk_034(NULL), + mpKeys(NULL), mUnk_038(true), - mUnk_03C(NULL), + mpTears(NULL), mUnk_040(true), - mUnk_044(NULL), + mpItems(NULL), mUnk_048(true) { this->mUnk_18 = true; this->mUnk_19 = true; - this->mUnk_01C = new(HeapIndex_1) UnkStruct_020d8698_1C(); - this->mUnk_024 = new(HeapIndex_1) UnkStruct_020d8698_24(); - this->mUnk_02C = new(HeapIndex_1) UnkStruct_020d8698_2C(); + this->mpHealth = new(HeapIndex_1) UICounter_Health(); + this->mpRupees = new(HeapIndex_1) UICounter_Rupees(); + this->mpCargo = new(HeapIndex_1) UICounter_Cargo(); - if (!data_027e09a4->func_01ffd3d8()) { - this->mUnk_034 = new(HeapIndex_1) UnkStruct_020d8698_34(); - this->mUnk_044 = new(HeapIndex_1) UnkStruct_020d8698_44(); + if (!data_027e09a4->IsTrain()) { + this->mpKeys = new(HeapIndex_1) UICounter_SmallKeys(); + this->mpItems = new(HeapIndex_1) UICounter_Items(); if (this->mUnk_048) { - this->mUnk_0C.Append(this->mUnk_044); + this->mUnk_0C.Append(this->mpItems); } } if (data_027e09a4->IsDungeonTower() && !GET_FLAG(data_027e0ce0->mUnk_2C->mFlags, ItemFlag_LokomoSword)) { - this->mUnk_03C = new(HeapIndex_1) UnkStruct_020d8698_3C(); + this->mpTears = new(HeapIndex_1) UICounter_TearsOfLight(); } - this->mUnk_01C->func_ov024_020cdec8(); + this->mpHealth->func_ov024_020cdec8(); } -UnkStruct_020d8698::~UnkStruct_020d8698() { - delete this->mUnk_01C; - this->mUnk_01C = NULL; +UICounterManager::~UICounterManager() { + DELETE(this->mpHealth); + DELETE(this->mpRupees); + DELETE(this->mpCargo); - delete this->mUnk_024; - this->mUnk_024 = NULL; - - delete this->mUnk_02C; - this->mUnk_02C = NULL; - - if (!data_027e09a4->func_01ffd3d8()) { - delete this->mUnk_034; - this->mUnk_034 = NULL; - - delete this->mUnk_044; - this->mUnk_044 = NULL; + if (!data_027e09a4->IsTrain()) { + DELETE(this->mpKeys); + DELETE(this->mpItems); } - if (this->mUnk_03C != NULL) { - delete this->mUnk_03C; - this->mUnk_03C = NULL; + if (this->mpTears != NULL) { + DELETE(this->mpTears); } } -void UnkStruct_020d8698::func_ov024_020cd094() { - this->mUnk_01C->func_ov024_020cd768(); - this->mUnk_024->func_ov024_020ce518(); - this->mUnk_02C->func_ov024_020ced54(); +void UICounterManager::func_ov024_020cd094() { + this->mpHealth->func_ov024_020cd768(); + this->mpRupees->func_ov024_020ce518(); + this->mpCargo->func_ov024_020ced54(); if (data_ov000_020b504c.func_ov000_02067f88(0, 0) || data_027e09b8->func_ov000_020732dc(0)) { return; @@ -141,137 +132,137 @@ void UnkStruct_020d8698::func_ov024_020cd094() { } } -void UnkStruct_020d8698::func_ov024_020cd150() { +void UICounterManager::func_ov024_020cd150() { if (data_027e09a4->IsCutscene()) { return; } - this->mUnk_01C->func_ov024_020cd774(); - this->mUnk_024->func_ov024_020ce570(); - this->mUnk_02C->func_ov024_020ceda8(); + this->mpHealth->func_ov024_020cd774(); + this->mpRupees->func_ov024_020ce570(); + this->mpCargo->func_ov024_020ceda8(); - if (!data_027e09a4->func_01ffd3d8()) { - this->mUnk_034->func_ov024_020cf698(); - this->mUnk_044->func_ov031_0210eeb4(); - data_ov024_020d8698->func_ov024_020cd458(data_027e0ce0->mUnk_2C->mEquippedItem, true); + if (!data_027e09a4->IsTrain()) { + this->mpKeys->func_ov024_020cf698(); + this->mpItems->func_ov031_0210eeb4(); + gpUICounterManager->func_ov024_020cd458(data_027e0ce0->mUnk_2C->mEquippedItem, true); } - if (this->mUnk_03C != NULL) { - this->mUnk_03C->func_ov024_020cf82c(); + if (this->mpTears != NULL) { + this->mpTears->func_ov024_020cf82c(); } } -void UnkStruct_020d8698::vfunc_08(Input *pButtons, TouchControl *pTouchControl) { +void UICounterManager::vfunc_08(Input *pButtons, TouchControl *pTouchControl) { if (this->mUnk_020 && !this->func_ov024_020cd604()) { - this->mUnk_01C->func_ov024_020cd9f0(); + this->mpHealth->func_ov024_020cd9f0(); } if (this->mUnk_028) { - this->mUnk_024->func_ov024_020ce5cc(); + this->mpRupees->func_ov024_020ce5cc(); } if (this->mUnk_030) { - this->mUnk_02C->func_ov024_020cef58(); + this->mpCargo->func_ov024_020cef58(); } - if (!data_027e09a4->func_01ffd3d8() && this->mUnk_038) { - this->mUnk_034->func_ov024_020cf6e4(); + if (!data_027e09a4->IsTrain() && this->mUnk_038) { + this->mpKeys->func_ov024_020cf6e4(); } - if (this->mUnk_03C != NULL && this->mUnk_040) { - this->mUnk_03C->func_ov024_020cf888(); + if (this->mpTears != NULL && this->mUnk_040) { + this->mpTears->func_ov024_020cf888(); } } -void UnkStruct_020d8698::vfunc_10(unk8 *param1) { +void UICounterManager::vfunc_10(unk8 *param1) { if (data_0204a110.mUnk_DF4 == 0 && !this->func_ov024_020cd604()) { if (this->mUnk_020) { - this->mUnk_01C->func_ov024_020cdaac(); + this->mpHealth->func_ov024_020cdaac(); } if (this->mUnk_028) { - this->mUnk_024->func_ov024_020ce88c(param1); + this->mpRupees->func_ov024_020ce88c(param1); } if (this->mUnk_030 && data_ov024_020d8660->mUnk_1C != 5) { - this->mUnk_02C->func_ov024_020cf2b8(param1); + this->mpCargo->func_ov024_020cf2b8(param1); } - if (!data_027e09a4->func_01ffd3d8() && this->mUnk_038) { - this->mUnk_034->func_ov024_020cf724(); + if (!data_027e09a4->IsTrain() && this->mUnk_038) { + this->mpKeys->func_ov024_020cf724(); } } - if (this->mUnk_03C != NULL && this->mUnk_040) { - this->mUnk_03C->func_ov024_020cf88c(); + if (this->mpTears != NULL && this->mUnk_040) { + this->mpTears->func_ov024_020cf88c(); } } -void UnkStruct_020d8698::func_ov024_020cd348(u8 param1, u8 param2) { - this->mUnk_01C->func_ov024_020cdd3c(param1, param2); +void UICounterManager::func_ov024_020cd348(u8 param1, u8 param2) { + this->mpHealth->func_ov024_020cdd3c(param1, param2); } -void UnkStruct_020d8698::func_ov024_020cd358(u8 param1) { - this->mUnk_01C->func_ov024_020cde54(param1); +void UICounterManager::func_ov024_020cd358(u8 param1) { + this->mpHealth->func_ov024_020cde54(param1); } -void UnkStruct_020d8698::func_ov024_020cd368(bool param1, bool param2) { +void UICounterManager::func_ov024_020cd368(bool param1, bool param2) { if (!data_027e09a4->func_ov000_0207056c()) { - this->mUnk_024->func_ov024_020ce990(param1, param2); + this->mpRupees->func_ov024_020ce990(param1, param2); } } -void UnkStruct_020d8698::func_ov024_020cd3a4() { +void UICounterManager::func_ov024_020cd3a4() { if (!data_027e09a4->func_ov000_0207056c()) { - this->mUnk_024->func_ov024_020ce9ac(); + this->mpRupees->func_ov024_020ce9ac(); } } -void UnkStruct_020d8698::func_ov024_020cd3d0() { - this->mUnk_02C->func_ov024_020cf514(); +void UICounterManager::func_ov024_020cd3d0() { + this->mpCargo->func_ov024_020cf514(); } -void UnkStruct_020d8698::func_ov024_020cd3e0(bool param1) { - this->mUnk_02C->func_ov024_020cf53c(param1); +void UICounterManager::func_ov024_020cd3e0(bool param1) { + this->mpCargo->func_ov024_020cf53c(param1); } -void UnkStruct_020d8698::func_ov024_020cd3f0(bool param1) { - this->mUnk_02C->func_ov024_020cf494(param1); +void UICounterManager::func_ov024_020cd3f0(bool param1) { + this->mpCargo->func_ov024_020cf494(param1); } -void UnkStruct_020d8698::func_ov024_020cd400() { - this->mUnk_02C->func_ov024_020cf4c4(); +void UICounterManager::func_ov024_020cd400() { + this->mpCargo->func_ov024_020cf4c4(); } -void UnkStruct_020d8698::func_ov024_020cd410() { - this->mUnk_02C->func_ov024_020cee58(); +void UICounterManager::func_ov024_020cd410() { + this->mpCargo->func_ov024_020cee58(); } -void UnkStruct_020d8698::func_ov024_020cd420() { +void UICounterManager::func_ov024_020cd420() { if (data_027e09a4->IsNotCutscene() && !data_027e09a4->func_ov000_0207056c()) { - this->mUnk_02C->func_ov024_020cee64(); + this->mpCargo->func_ov024_020cee64(); } } -void UnkStruct_020d8698::func_ov024_020cd458(ItemFlag itemFlag, bool param2) { - if (!data_027e09a4->func_01ffd3d8() && data_027e09a4->IsNotCutscene()) { - this->mUnk_044->func_ov031_0210f7e4(itemFlag, param2); +void UICounterManager::func_ov024_020cd458(ItemFlag itemFlag, bool param2) { + if (!data_027e09a4->IsTrain() && data_027e09a4->IsNotCutscene()) { + this->mpItems->func_ov031_0210f7e4(itemFlag, param2); } } -void UnkStruct_020d8698::func_ov024_020cd4a4(bool param1) { - if (data_027e09a4->func_01ffd3d8()) { +void UICounterManager::func_ov024_020cd4a4(bool param1) { + if (data_027e09a4->IsTrain()) { return; } if (param1) { - this->mUnk_044->mUnk_18B = true; + this->mpItems->mUnk_18B = true; } else { - this->mUnk_044->mUnk_18B = false; + this->mpItems->mUnk_18B = false; } } -void UnkStruct_020d8698::func_ov024_020cd4e4(u16 param1, bool param2) { +void UICounterManager::func_ov024_020cd4e4(u16 param1, bool param2) { switch (param1) { case 0: this->mUnk_020 = param2; @@ -283,14 +274,14 @@ void UnkStruct_020d8698::func_ov024_020cd4e4(u16 param1, bool param2) { this->mUnk_030 = param2; break; case 2: - if (!data_027e09a4->func_01ffd3d8() && param2 != this->mUnk_048) { + if (!data_027e09a4->IsTrain() && param2 != this->mUnk_048) { this->mUnk_048 = param2; - if (this->mUnk_044 != NULL) { + if (this->mpItems != NULL) { if (param2) { - this->mUnk_0C.Append(this->mUnk_044); + this->mUnk_0C.Append(this->mpItems); } else { - this->mUnk_044->Detach(); + this->mpItems->Detach(); } } } @@ -306,7 +297,7 @@ void UnkStruct_020d8698::func_ov024_020cd4e4(u16 param1, bool param2) { } } -bool UnkStruct_020d8698::func_ov024_020cd5c0(u16 param1) { +bool UICounterManager::func_ov024_020cd5c0(u16 param1) { switch (param1) { case 0: return this->mUnk_020; @@ -323,7 +314,7 @@ bool UnkStruct_020d8698::func_ov024_020cd5c0(u16 param1) { return false; } -bool UnkStruct_020d8698::func_ov024_020cd604() { +bool UICounterManager::func_ov024_020cd604() { if (data_027e09b8 != NULL) { if (data_027e09b8->func_ov000_020732dc(0) || data_027e09b8->func_ov000_020732dc(4) || data_0204e5f8.mUnk_18 || data_0204e5f8.mUnk_3A != 0 || data_0204e5f8.mUnk_3E != 0) { @@ -334,17 +325,17 @@ bool UnkStruct_020d8698::func_ov024_020cd604() { return false; } -UnkStruct_020d8698_1C::UnkStruct_020d8698_1C() { - this->mUnk_000.Init(this->func_ov024_020ce2a8()); +UICounter_Health::UICounter_Health() { + this->mUnk_000.Init(this->GetMaxHearts()); this->func_ov024_020cd774(); } -void UnkStruct_020d8698_1C::func_ov024_020cd768() { +void UICounter_Health::func_ov024_020cd768() { this->func_ov024_020cdec8(); } -void UnkStruct_020d8698_1C::func_ov024_020cd774() { - if (data_027e09a4->func_01ffd3d8()) { +void UICounter_Health::func_ov024_020cd774() { + if (data_027e09a4->IsTrain()) { s32 sVar1 = func_020196b0(0x34); s32 sVar2 = func_020196b0(0x27); @@ -380,7 +371,7 @@ void UnkStruct_020d8698_1C::func_ov024_020cd774() { } } -void UnkStruct_020d8698_1C::func_ov024_020cd9f0() { +void UICounter_Health::func_ov024_020cd9f0() { this->mUnk_024.func_ov000_020609c4(); this->mUnk_114.func_ov000_020609c4(); this->mUnk_18C.func_ov000_020609c4(); @@ -407,8 +398,8 @@ void UnkStruct_020d8698_1C::func_ov024_020cd9f0() { } } -void UnkStruct_020d8698_1C::func_ov024_020cdaac() { - unk32 temp_r0 = this->func_ov024_020ce2a8(); +void UICounter_Health::func_ov024_020cdaac() { + unk32 temp_r0 = this->GetMaxHearts(); for (int var_r8 = 0; var_r8 < temp_r0; var_r8++) { unk32 temp_r1 = (this->func_ov024_020ce260() / 4) - 1; @@ -428,7 +419,7 @@ void UnkStruct_020d8698_1C::func_ov024_020cdaac() { } Vec2s sp4; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { UnkStruct_ov019_020d24c8_28_258 sp20(func_020196b0(0x34), data_ov024_020d73fa[var_r7]); sp4.x = sp20.mPosU.x; sp4.y = sp20.mPosU.y; @@ -484,11 +475,11 @@ void UnkStruct_020d8698_1C::func_ov024_020cdaac() { } } -void UnkStruct_020d8698_1C::func_ov024_020cdd3c(u8 param1, u8 param2) { +void UICounter_Health::func_ov024_020cdd3c(u8 param1, u8 param2) { u8 var_r4 = param2; u8 var_r5 = param1; - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { var_r5 *= 4; var_r4 *= 4; } @@ -579,10 +570,10 @@ void UnkStruct_020d8698_1C::func_ov024_020cdd3c(u8 param1, u8 param2) { this->func_ov024_020cdec8(); } -void UnkStruct_020d8698_1C::func_ov024_020cde54(u8 param1) { +void UICounter_Health::func_ov024_020cde54(u8 param1) { u8 var_r5 = param1; - if (data_027e09a4->func_01ffd3d8() != 0) { + if (data_027e09a4->IsTrain() != 0) { var_r5 *= 4; } @@ -597,7 +588,7 @@ void UnkStruct_020d8698_1C::func_ov024_020cde54(u8 param1) { this->func_ov024_020cdd3c(this->func_ov024_020ce218(), var_r5); } -void UnkStruct_020d8698_1C::func_ov024_020cdec8() { +void UICounter_Health::func_ov024_020cdec8() { s32 temp_r5 = this->func_ov024_020ce218(); s32 temp_r0 = this->func_ov024_020ce260(); @@ -605,7 +596,7 @@ void UnkStruct_020d8698_1C::func_ov024_020cdec8() { s32 temp_r5_2 = temp_r5 % 4; s32 temp_r7 = temp_r0 / 4; - s32 temp_r0_2 = this->func_ov024_020ce2a8(); + s32 temp_r0_2 = this->GetMaxHearts(); for (int var_r8 = 0; var_r8 < temp_r0_2; var_r8++) { if (var_r8 < temp_r7) { @@ -641,8 +632,8 @@ void UnkStruct_020d8698_1C::func_ov024_020cdec8() { } } -void UnkStruct_020d8698_1C::func_ov024_020cdfd8() { - s32 temp_r0 = this->func_ov024_020ce2a8(); +void UICounter_Health::func_ov024_020cdfd8() { + s32 temp_r0 = this->GetMaxHearts(); for (int var_r7 = 0; var_r7 < temp_r0; var_r7++) { switch (this->GetIterValue(var_r7)) { @@ -682,7 +673,7 @@ void UnkStruct_020d8698_1C::func_ov024_020cdfd8() { this->SetIterValue(var_r7, 0x01); if (this->mUnk_008 == this->mUnk_009) { - if (this->mUnk_008 == (data_027e09a4->func_01ffd3d8() ? 0x08 : 0x10) || + if (this->mUnk_008 == (data_027e09a4->IsTrain() ? 0x08 : 0x10) || this->GetIterValue(this->mUnk_008) == 0x0B || this->GetIterValue(this->mUnk_008) == 0x00) { this->mUnk_024.func_ov000_02060b64(); @@ -758,32 +749,32 @@ void UnkStruct_020d8698_1C::func_ov024_020cdfd8() { } } -u8 UnkStruct_020d8698_1C::func_ov024_020ce218() { - if (data_027e09a4->func_01ffd3d8()) { +u8 UICounter_Health::func_ov024_020ce218() { + if (data_027e09a4->IsTrain()) { return data_027e0ce0->mUnk_34->mUnk_28 * 4; } return data_027e0ce0->mHealth; } -u8 UnkStruct_020d8698_1C::func_ov024_020ce260() { - if (data_027e09a4->func_01ffd3d8()) { +u8 UICounter_Health::func_ov024_020ce260() { + if (data_027e09a4->IsTrain()) { return data_027e0ce0->mUnk_34->mUnk_24 * 4; } return data_027e0ce0->mHealthMax; } -u32 UnkStruct_020d8698_1C::func_ov024_020ce2a8() { - if (data_027e09a4->func_01ffd3d8()) { - return 0x08; +u32 UICounter_Health::GetMaxHearts() { + if (data_027e09a4->IsTrain()) { + return 8; } - return 0x10; + return 16; } //! TODO: remove the volatile casts? -UnkStruct_020d8698_24::UnkStruct_020d8698_24() : +UICounter_Rupees::UICounter_Rupees() : mUnk_000(func_020196b0(0x1B), 0), mUnk_05C(0x18, data_ov024_020d740a, 0, 1), mUnk_100(0), @@ -832,19 +823,19 @@ UnkStruct_020d8698_24::UnkStruct_020d8698_24() : } } -void UnkStruct_020d8698_24::func_ov024_020ce518() { +void UICounter_Rupees::func_ov024_020ce518() { this->mUnk_018.Subprocess2_UnkValueSets(); this->mUnk_018.UnkOperations3(); this->mUnk_05C.func_ov000_02065b48(data_027e0ce0->mUnk_2C->mNumRupees, 0); this->mUnk_104 = false; } -void UnkStruct_020d8698_24::func_ov024_020ce570() { +void UICounter_Rupees::func_ov024_020ce570() { this->mUnk_000.UnknownAction(func_020196b0(0x1B), 0); this->mUnk_05C.func_ov000_02065988(0x18, data_ov024_020d740a); } -void UnkStruct_020d8698_24::func_ov024_020ce5cc() { +void UICounter_Rupees::func_ov024_020ce5cc() { bool var_r2 = false; bool var_r3 = false; @@ -909,7 +900,7 @@ void UnkStruct_020d8698_24::func_ov024_020ce5cc() { } } -void UnkStruct_020d8698_24::func_ov024_020ce88c(unk8 *param1) { +void UICounter_Rupees::func_ov024_020ce88c(unk8 *param1) { UnkDataStruct1 sp14; Vec2s sp10; Vec2s spC; @@ -932,7 +923,7 @@ void UnkStruct_020d8698_24::func_ov024_020ce88c(unk8 *param1) { this->mUnk_05C.func_ov000_020659d0(param1, &sp14); } -void UnkStruct_020d8698_24::func_ov024_020ce990(bool param1, bool param2) { +void UICounter_Rupees::func_ov024_020ce990(bool param1, bool param2) { this->mUnk_105 = param1; if (param2) { @@ -942,16 +933,16 @@ void UnkStruct_020d8698_24::func_ov024_020ce990(bool param1, bool param2) { } } -void UnkStruct_020d8698_24::func_ov024_020ce9ac() { +void UICounter_Rupees::func_ov024_020ce9ac() { this->mUnk_104 = false; - if (data_ov024_020d8698->func_ov024_020cd604()) { + if (gpUICounterManager->func_ov024_020cd604()) { this->mUnk_018.Subprocess2_UnkValueSets(); this->mUnk_018.UnkOperations3(); } } -UnkStruct_020d8698_2C::UnkStruct_020d8698_2C() : +UICounter_Cargo::UICounter_Cargo() : mUnk_000(0), mUnk_004(func_020196b0(0x1B), 6), mUnk_01C(func_020196b0(0x1B), 5), @@ -1010,21 +1001,21 @@ UnkStruct_020d8698_2C::UnkStruct_020d8698_2C() : this->func_ov024_020cee84(); } - if (data_027e09a4->func_01ffd3d8() && gpCargoManager->GetCargo()->IsTypeSet()) { + if (data_027e09a4->IsTrain() && gpCargoManager->GetCargo()->IsTypeSet()) { this->mUnk_141 = true; } else { this->mUnk_141 = false; } } -void UnkStruct_020d8698_2C::func_ov024_020ced54() { +void UICounter_Cargo::func_ov024_020ced54() { this->mUnk_04C.Subprocess2_UnkValueSets(); this->mUnk_04C.UnkOperations3(); this->mUnk_090.func_ov000_02065b48(gpCargoManager->GetCargo()->GetAmount(), 0); this->mUnk_140 = false; } -void UnkStruct_020d8698_2C::func_ov024_020ceda8() { +void UICounter_Cargo::func_ov024_020ceda8() { s16 sVar1 = func_020196b0(0x1B); this->mUnk_004.UnknownAction((volatile s32) sVar1, 0x06); this->mUnk_01C.UnknownAction((volatile s32) sVar1, 0x05); @@ -1032,11 +1023,11 @@ void UnkStruct_020d8698_2C::func_ov024_020ceda8() { this->mUnk_090.func_ov000_02065988(0x18, data_ov024_020d740a); } -void UnkStruct_020d8698_2C::func_ov024_020cee58() { +void UICounter_Cargo::func_ov024_020cee58() { this->func_ov024_020cee84(); } -void UnkStruct_020d8698_2C::func_ov024_020cee64() { +void UICounter_Cargo::func_ov024_020cee64() { if (gpCargoManager->GetCargo()->IsTypeSet()) { this->mUnk_143 = true; } else { @@ -1048,8 +1039,8 @@ void UnkStruct_020d8698_2C::func_ov024_020cee64() { } } -void UnkStruct_020d8698_2C::func_ov024_020cee84() { - if (!data_027e0994->mUnk_004.func_0201c2b0(func_020196b0(0x1B))) { +void UICounter_Cargo::func_ov024_020cee84() { + if (!gpCurrentGameModeMgr->mUnk_004.func_0201c2b0(func_020196b0(0x1B))) { return; } @@ -1073,7 +1064,7 @@ void UnkStruct_020d8698_2C::func_ov024_020cee84() { this->mUnk_14C.func_ov000_02060d7c(0x1D, data_ov024_020d73de[eType]); } -void UnkStruct_020d8698_2C::func_ov024_020cef58() { +void UICounter_Cargo::func_ov024_020cef58() { this->mUnk_090.func_ov000_02065b8c(); this->mUnk_090.func_ov000_02065b48(gpCargoManager->GetCargo()->GetAmount(), 1); @@ -1149,7 +1140,7 @@ void UnkStruct_020d8698_2C::func_ov024_020cef58() { } } - if (this->mUnk_143 && data_027e0994->func_02018ad4()) { + if (this->mUnk_143 && gpCurrentGameModeMgr->func_02018ad4()) { this->func_ov024_020cee84(); this->mUnk_143 = false; } @@ -1163,7 +1154,7 @@ void UnkStruct_020d8698_2C::func_ov024_020cef58() { } } -void UnkStruct_020d8698_2C::func_ov024_020cf2b8(unk8 *param1) { +void UICounter_Cargo::func_ov024_020cf2b8(unk8 *param1) { UnkDataStruct1 sp24; Vec2s sp20; Vec2s sp1C; @@ -1200,7 +1191,7 @@ void UnkStruct_020d8698_2C::func_ov024_020cf2b8(unk8 *param1) { this->mUnk_090.func_ov000_020659d0(param1, &sp24); } -void UnkStruct_020d8698_2C::func_ov024_020cf494(bool param1) { +void UICounter_Cargo::func_ov024_020cf494(bool param1) { if (gpCargoManager->GetCargo()->IsTypeSet()) { if (param1) { this->mUnk_13C = 0x4B; @@ -1210,22 +1201,22 @@ void UnkStruct_020d8698_2C::func_ov024_020cf494(bool param1) { } } -void UnkStruct_020d8698_2C::func_ov024_020cf4c4() { +void UICounter_Cargo::func_ov024_020cf4c4() { this->mUnk_140 = false; - if (data_ov024_020d8698->func_ov024_020cd604()) { + if (gpUICounterManager->func_ov024_020cd604()) { this->mUnk_04C.Subprocess2_UnkValueSets(); this->mUnk_04C.UnkOperations3(); } } -void UnkStruct_020d8698_2C::func_ov024_020cf514() { +void UICounter_Cargo::func_ov024_020cf514() { this->mUnk_000 = 0x02; this->func_ov024_020cf5a8(true); this->mUnk_144 = 0x4B; } -void UnkStruct_020d8698_2C::func_ov024_020cf53c(bool param1) { +void UICounter_Cargo::func_ov024_020cf53c(bool param1) { if (this->mUnk_146 != param1) { this->mUnk_146 = param1; @@ -1239,18 +1230,18 @@ void UnkStruct_020d8698_2C::func_ov024_020cf53c(bool param1) { } } -void UnkStruct_020d8698_2C::func_ov024_020cf570() { +void UICounter_Cargo::func_ov024_020cf570() { this->mUnk_000 = 0x00; this->func_ov024_020cf5a8(false); } -void UnkStruct_020d8698_2C::func_ov024_020cf584() { +void UICounter_Cargo::func_ov024_020cf584() { this->mUnk_000 = 0x01; this->func_ov024_020cf5a8(true); this->mUnk_148 = 0x00; } -void UnkStruct_020d8698_2C::func_ov024_020cf5a8(bool param1) { +void UICounter_Cargo::func_ov024_020cf5a8(bool param1) { if (param1) { this->mUnk_090.func_ov000_02065988(0x18, data_ov024_020d741e); } else { @@ -1258,7 +1249,7 @@ void UnkStruct_020d8698_2C::func_ov024_020cf5a8(bool param1) { } } -UnkStruct_020d8698_34::UnkStruct_020d8698_34() { +UICounter_SmallKeys::UICounter_SmallKeys() { this->mUnk_90 = 0; this->mUnk_92 = 0; this->func_ov024_020cf698(); @@ -1267,12 +1258,12 @@ UnkStruct_020d8698_34::UnkStruct_020d8698_34() { this->mUnk_90 = local_44.mPos.x - local_2c.mPos.x; } -void UnkStruct_020d8698_34::func_ov024_020cf698() { +void UICounter_SmallKeys::func_ov024_020cf698() { this->mUnk_00.UnknownAction(0x5E, 0x04); this->mUnk_18.func_ov000_0206082c(0x5E, 0x00); } -void UnkStruct_020d8698_34::func_ov024_020cf6e4() { +void UICounter_SmallKeys::func_ov024_020cf6e4() { this->mUnk_18.func_ov000_020609c4(); u8 amount = data_027e0ce0->mUnk_2C->GetKeyAmount(); @@ -1282,7 +1273,7 @@ void UnkStruct_020d8698_34::func_ov024_020cf6e4() { } } -void UnkStruct_020d8698_34::func_ov024_020cf724() { +void UICounter_SmallKeys::func_ov024_020cf724() { const s32 amount = data_027e0ce0->mUnk_2C->GetKeyAmount(); if (amount <= 0) { @@ -1304,18 +1295,18 @@ void UnkStruct_020d8698_34::func_ov024_020cf724() { } } -UnkStruct_020d8698_3C::UnkStruct_020d8698_3C() { +UICounter_TearsOfLight::UICounter_TearsOfLight() { this->func_ov024_020cf82c(); } -void UnkStruct_020d8698_3C::func_ov024_020cf82c() { +void UICounter_TearsOfLight::func_ov024_020cf82c() { this->mUnk_00.UnknownAction(0x5E, 0x09); this->mUnk_18.UnknownAction(0x5E, 0x0B); } -void UnkStruct_020d8698_3C::func_ov024_020cf888() {} +void UICounter_TearsOfLight::func_ov024_020cf888() {} -void UnkStruct_020d8698_3C::func_ov024_020cf88c() { +void UICounter_TearsOfLight::func_ov024_020cf88c() { const s32 amount = data_027e0ce0->mUnk_2C->GetTearsAmount(); for (int i = 0; i < MAX_TEARS_OF_LIGHT; i++) { @@ -1329,4 +1320,4 @@ void UnkStruct_020d8698_3C::func_ov024_020cf88c() { } } -DECL_INSTANCE(UnkStruct_020d8698, data_ov024_020d8698); +DECL_INSTANCE(UICounterManager, gpUICounterManager); diff --git a/src/024_MainGame/UnkStruct_027e0ce0_34_024.cpp b/src/024_MainGame/UnkStruct_027e0ce0_34_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp b/src/024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/UnkStruct_027e0cf8_08_024.cpp b/src/024_MainGame/UnkStruct_027e0cf8_08_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/UnkStruct_027e0d00.cpp b/src/024_MainGame/UnkStruct_027e0d00.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/UnkStruct_027e0d08_024.cpp b/src/024_MainGame/UnkStruct_027e0d08_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/UnkStruct_ov024_020d86a0_024.cpp b/src/024_MainGame/UnkStruct_ov024_020d86a0_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/UnkAdventureModeSystem1_024.cpp b/src/024_MainGame/Unknown/UnkAdventureModeSystem1_024.cpp similarity index 100% rename from src/024_MainGame/UnkAdventureModeSystem1_024.cpp rename to src/024_MainGame/Unknown/UnkAdventureModeSystem1_024.cpp diff --git a/src/024_MainGame/Game/UnkStruct_027e0998_024.cpp b/src/024_MainGame/Unknown/UnkStruct_027e0998_024.cpp similarity index 92% rename from src/024_MainGame/Game/UnkStruct_027e0998_024.cpp rename to src/024_MainGame/Unknown/UnkStruct_027e0998_024.cpp index b8008a98..22cb1007 100644 --- a/src/024_MainGame/Game/UnkStruct_027e0998_024.cpp +++ b/src/024_MainGame/Unknown/UnkStruct_027e0998_024.cpp @@ -7,8 +7,6 @@ #include "Unknown/UnkStruct_ov024_020d86a0.hpp" #include "Unknown/UnkStruct_ov026_02138d10.hpp" -extern "C" void func_ov024_020d51dc(Vec2s *param1, u32 param2); - void UnkStruct_ov024_020d86a0::Destroy() { delete data_ov024_020d86a0; } @@ -40,7 +38,7 @@ bool UnkStruct_027e0998::vfunc_00(VecFx32 *pPos, Vec2s *param2, u16 *param3) { return false; } - if (data_027e09a4->func_01ffd3d8() && data_ov026_02138d10->func_ov026_020e6a6c()) { + if (data_027e09a4->IsTrain() && data_ov026_02138d10->func_ov026_020e6a6c()) { return false; } @@ -52,7 +50,7 @@ bool UnkStruct_027e0998::vfunc_00(VecFx32 *pPos, Vec2s *param2, u16 *param3) { case 3: return this->func_ov024_020c727c(param2, param3); case 4: - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { u32 value = *(u32 *) param3; // position? param3 could be a Vec2us @@ -106,7 +104,7 @@ bool UnkStruct_027e0998::func_ov024_020c716c() { bool UnkStruct_027e0998::func_ov024_020c7214(VecFx32 *pPos, Vec2s *param2, u16 *param3) { bool temp_r4 = this->UnkStruct_027e0998_Base::vfunc_00(pPos, param2, param3); - if (data_027e09a4->func_01ffd3d8()) { + if (data_027e09a4->IsTrain()) { Vec2s sp0; func_ov024_020d51dc(&sp0, data_027e09a4->CurrentSceneIndex()); @@ -158,7 +156,7 @@ bool UnkStruct_027e0998::func_ov024_020c7300(unk32 param1) { } bool UnkStruct_027e0998::func_ov024_020c7354() { - if (data_027e09a4->func_01ffd400()->mUnk_10 == 6 && !data_027e09a4->IsPirate()) { + if (data_027e09a4->GetCurrentCourseEntry()->unk_10 == 6 && !data_027e09a4->IsPirate()) { return true; } diff --git a/src/024_MainGame/Unknown/UnkStruct_027e0d08_024.cpp b/src/024_MainGame/Unknown/UnkStruct_027e0d08_024.cpp new file mode 100644 index 00000000..9d2a5cd4 --- /dev/null +++ b/src/024_MainGame/Unknown/UnkStruct_027e0d08_024.cpp @@ -0,0 +1,200 @@ +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e0d08.hpp" +#include "Unknown/UnkStruct_ov000_020b50c0.hpp" + +#include +#include + +extern "C" BOOL func_0200169c(void *, int, int, int, int, void *, int); +extern "C" void func_0200174c(); + +UnkStruct_027e0d08::UnkStruct_027e0d08() { + this->mUnk_00 = NULL; + this->mUnk_04 = NULL; + this->mUnk_08 = NULL; + this->mUnk_0C = NULL; + this->mUnk_10 = NULL; + this->mUnk_14 = 0; + this->mUnk_18 = 0; + this->mUnk_1C = 0; + this->mUnk_20 = 0; + this->mUnk_24 = 0; + this->mUnk_28 = 0; +} + +UnkStruct_027e0d08::~UnkStruct_027e0d08() { + this->func_ov024_020d5fac(); +} + +UnkStruct_027e0d08 *UnkStruct_027e0d08::Create() { + return new(HeapIndex_1) UnkStruct_027e0d08(); +} + +void UnkStruct_027e0d08::func_ov024_020d5d10(unk32 param1) { + this->mUnk_18 = param1; +} + +void UnkStruct_027e0d08::func_ov024_020d5d18(unk32 param1) { + this->mUnk_1C = param1; + this->mUnk_24 = this->mUnk_20 / param1; +} + +void UnkStruct_027e0d08::func_ov024_020d5d34(unk32 param1) { + this->mUnk_20 = param1; + this->mUnk_24 = param1 / this->mUnk_1C; +} + +void UnkStruct_027e0d08::func_ov024_020d5d54() { + if (data_ov000_020b50c0.func_ov000_0206a5cc(4)) { + this->ResetBuffers(); + } +} + +void UnkStruct_027e0d08::func_ov024_020d5dd4(unk32 param1) { + data_ov000_020b50c0.func_ov000_0206a5fc(); + this->mUnk_00 = data_ov000_020b50c0.mUnk_CC; + this->mUnk_04 = (s16 *) data_ov000_020b50c0.mUnk_D4; + this->mUnk_08 = (s16 *) data_ov000_020b50c0.mUnk_D8; + this->mUnk_0C = (s16 *) data_ov000_020b50c0.mUnk_DC; + this->mUnk_10 = (s16 *) data_ov000_020b50c0.mUnk_E0; + this->mUnk_28 = param1; +} + +void UnkStruct_027e0d08::func_ov024_020d5e20() { + if (!data_ov000_020b50c0.func_ov000_0206a5cc(0x04)) { + return; + } + + data_ov000_020b50c0.func_ov000_0206a740(); + this->mUnk_14 = 0; + + switch (this->mUnk_28) { + case 0: + this->func_ov024_020d5d10(0xC4E); + this->func_ov024_020d5d18(0x06); + this->func_ov024_020d5d34(0x1C0); + break; + case 4: + default: + this->func_ov024_020d5d10(0xF6E); + this->func_ov024_020d5d18(0x04); + this->func_ov024_020d5d34(0x1F4); + break; + } + + this->ResetBuffers(); + + if (func_0200169c(this->mUnk_00, 0x800, 0, 0x3FEC, 0x04, UnkStruct_027e0d08::func_ov024_020d5fb8, 0)) { + SND_func_0013(0, 0, 0, 0); + MI_CpuClearFast(this->mUnk_04, 0x2000); + MI_CpuClearFast(this->mUnk_08, 0x2000); + MI_CpuFill32(0, this->mUnk_0C, 0x10); + MI_CpuFill32(0, this->mUnk_10, 0x10); + } +} + +void UnkStruct_027e0d08::func_ov024_020d5fac() { + func_0200174c(); +} + +void UnkStruct_027e0d08::func_ov024_020d5fb8(s16 *param1, s16 *param2, u32 param3) { + data_027e0d08->func_ov024_020d5fe4(param1, param2, param3); +} + +void UnkStruct_027e0d08::func_ov024_020d5fe4(s16 *param1, s16 *param2, u32 param3) { + s32 var_ip; + s32 var_r3; + u32 spC; + u32 temp_r1; + s16 *var_r5_2; + s16 *var_r7; + s32 temp_r5; + u32 temp_r6_2; + u32 temp_r7_3; + s32 var_r8_2; + + spC = param3 / 2; + temp_r1 = this->mUnk_14; + var_ip = 0; + var_r3 = 0; + + s16 *var_r2 = &this->mUnk_0C[8] - this->mUnk_1C; + s16 *var_r5 = &this->mUnk_10[8] - this->mUnk_1C; + for (int var_r6 = 0; var_r6 < this->mUnk_1C; var_r2++, var_r5++, var_r6++) { + var_ip += *var_r2; + var_r3 += *var_r5; + } + + s16 *new_var; + s16 *var_r9_2; + s16 *var_r10; + s16 *var_r6_2 = &this->mUnk_04[temp_r1]; + s16 *var_r8 = &this->mUnk_08[temp_r1]; + s16 *temp_lr = &this->mUnk_04[0x1000]; + var_r5_2 = param1; + var_r7 = param2; + + var_r9_2 = &this->mUnk_0C[8] - this->mUnk_1C; + var_r10 = &this->mUnk_10[8] - this->mUnk_1C; + for (int var_r1 = 0; var_r1 < this->mUnk_1C; var_r1++) { + var_ip = var_ip + *var_r5_2++ - *var_r9_2++; + new_var = var_r6_2++; + var_r3 = var_r3 + *var_r7++ - *var_r10++; + + *new_var = (var_ip * this->mUnk_24) / 1024; + *var_r8++ = (var_r3 * this->mUnk_24) / 1024; + + if (var_r6_2 >= temp_lr) { + var_r6_2 -= 0x1000; + var_r8 -= 0x1000; + } + } + + var_r9_2 = param1; + var_r10 = param2; + for (int var_r0 = this->mUnk_1C; var_r0 < spC; var_r0++) { + var_ip = var_ip + *var_r5_2++ - *var_r9_2++; + new_var = var_r6_2++; + var_r3 = var_r3 + *var_r7++ - *var_r10++; + + *new_var = (var_ip * this->mUnk_24) / 1024; + *var_r8++ = (var_r3 * this->mUnk_24) / 1024; + + if (var_r6_2 >= temp_lr) { + var_r6_2 -= 0x1000; + var_r8 -= 0x1000; + } + } + + MI_CpuCopy32(¶m1[spC - 8], this->mUnk_0C, 0x10); + MI_CpuCopy32(¶m2[spC - 8], this->mUnk_10, 0x10); + + var_r8_2 = this->mUnk_14 - this->mUnk_18; + if (var_r8_2 < 0) { + var_r8_2 += 0x1000; + } + + if ((var_r8_2 + spC) < 0x1000) { + MI_CpuCopyFast(&this->mUnk_04[var_r8_2], param1, param3); + MI_CpuCopyFast(&this->mUnk_08[var_r8_2], param2, param3); + } else { + temp_r5 = 0x1000 - var_r8_2; + temp_r7_3 = temp_r5 * sizeof(u16); + temp_r6_2 = (var_r8_2 + spC - 0x1000) * sizeof(u16); + + MI_CpuCopyFast(&this->mUnk_04[var_r8_2], param1, temp_r7_3); + MI_CpuCopyFast(&this->mUnk_08[var_r8_2], param2, temp_r7_3); + MI_CpuCopyFast(this->mUnk_04, ¶m1[temp_r5], temp_r6_2); + MI_CpuCopyFast(this->mUnk_08, ¶m2[temp_r5], temp_r6_2); + } + + this->mUnk_14 += spC; + if (this->mUnk_14 >= 0x1000) { + this->mUnk_14 -= 0x1000; + } + + DC_func_0004(param1, param3); + DC_func_0004(param2, param3); +} + +DECL_INSTANCE(UnkStruct_027e0d08, data_027e0d08); diff --git a/src/024_MainGame/Unknown/UnkStruct_ov024_020d86a0_024.cpp b/src/024_MainGame/Unknown/UnkStruct_ov024_020d86a0_024.cpp new file mode 100644 index 00000000..ae1704e7 --- /dev/null +++ b/src/024_MainGame/Unknown/UnkStruct_ov024_020d86a0_024.cpp @@ -0,0 +1,24 @@ +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_ov024_020d86a0.hpp" + +UnkStruct_ov024_020d86a0 *data_ov024_020d86a0 = NULL; + +UnkStruct_ov024_020d86a0 *UnkStruct_ov024_020d86a0::Create() { + return new(HeapIndex_1) UnkStruct_ov024_020d86a0(); +} + +void UnkStruct_ov024_020d86a0::func_ov024_020d167c() { + if (this->mUnk_11) { + this->func_ov017_020c31cc(); + } +} + +UnkStruct_ov024_020d86a0_00::UnkStruct_ov024_020d86a0_00(UnkStruct_ov024_020d86a0 *pInstance) { + this->mpInstance = pInstance; +} + +UnkStruct_ov024_020d86a0_00::~UnkStruct_ov024_020d86a0_00() {} + +bool UnkStruct_ov024_020d86a0_00::vfunc_0C() { + return this->mpInstance->func_ov017_020c3180(); +} diff --git a/src/024_MainGame/ZeldaTrainBinary.cpp b/src/024_MainGame/ZeldaTrainBinary.cpp new file mode 100644 index 00000000..86b5aca3 --- /dev/null +++ b/src/024_MainGame/ZeldaTrainBinary.cpp @@ -0,0 +1,128 @@ +#include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_027e09a0.hpp" +#include "files.h" + +THUMB_BEGIN + +BOOL ZTB_ParseFile(FileInfos *pFileInfos, UnkDataStruct4 *pDst) { + ZTBHeader *pHeader = (ZTBHeader *) pFileInfos->pFile; + ZTBSectionHeader *pSection = (ZTBSectionHeader *) ((u8 *) pHeader + sizeof(ZTBHeader)); + + for (int i = 0; i < pHeader->nEntries; i++) { + switch (pSection->type) { + case ZTBSectionType_GRDB: + ZTB_ParseGRDB(pFileInfos, pDst, (ZTBSectionGRDB *) pSection); + break; + case ZTBSectionType_STAB: + ZTB_ParseSTAB(pFileInfos, pDst, (ZTBSectionSTAB *) pSection); + break; + case ZTBSectionType_LDMK: + ZTB_ParseLDMK(pFileInfos, pDst, (ZTBSectionLDMK *) pSection); + break; + case ZTBSectionType_GRRL: + ZTB_ParseGRRL(pFileInfos, pDst, (ZTBSectionGRRL *) pSection); + break; + default: + break; + } + + pSection = (ZTBSectionHeader *) ((u8 *) pSection + pSection->nSize); + } + + return true; +} + +BOOL ZTB_ParseGRDB(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionGRDB *pGRDB) { + pDst->func_ov024_020d26b0(pGRDB->header.unk_0A); + + for (u16 i = 0; i < pGRDB->header.nEntries1; i++) { + for (u16 j = 0; j < pGRDB->header.nEntries2; j++) { + ZTBEntryGRDB entry = pGRDB->entries[i * pGRDB->header.nEntries2 + j]; + pDst->mUnk_14[i]->mUnk_00[j].mUnk_00 = entry.unk_01; + } + } + + return true; +} + +BOOL ZTB_ParseGRRL(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionGRRL *pGRRL) { + for (int i = 0; i < pGRRL->header.nEntries; i++) { + ZTBEntryGRRL entry = pGRRL->entries[i]; + ZTBEntryGRRL *pEntry = &entry; + + u8 var_r4 = entry.unk_04; + UnkDataStruct4_14 *temp_r5 = &pDst->mUnk_14[pGRRL->entries[i].unk_00]->mUnk_00[pGRRL->entries[i].unk_01]; + u8 *new_var = &pEntry->unk_02; + u8 new_var2 = pGRRL->entries[i].unk_01; + + if (var_r4 == 0x03) { + pDst->mUnk_14[pGRRL->entries[i].unk_00]->mUnk_00[new_var2].mUnk_13 = 1; + var_r4 = 0x00; + } else if (var_r4 == 0x04) { + temp_r5->mUnk_13 = 2; + var_r4 = 0x00; + } else if (var_r4 == 0x05) { + temp_r5->mUnk_13 = 3; + var_r4 = 0x00; + } else { + temp_r5->mUnk_13 = 0; + } + + if (*new_var & 0x01) { + temp_r5->func_ov024_020d2098(0, var_r4); + } + + if (*new_var & 0x10) { + temp_r5->func_ov024_020d2098(2, var_r4); + } + + if (*new_var & 0x04) { + temp_r5->func_ov024_020d2098(1, var_r4); + } + + if (*new_var & 0x40) { + temp_r5->func_ov024_020d2098(3, var_r4); + } + + temp_r5->mUnk_02[var_r4] = entry.unk_05; + temp_r5->mUnk_06[var_r4] = entry.unk_06; + temp_r5->func_ov024_020d1f60(entry.unk_03); + } + + return true; +} + +BOOL ZTB_ParseSTAB(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionSTAB *pSTAB) { + for (int i = 0; i < pSTAB->header.nEntries; i++) { + ZTBEntrySTAB entry = pSTAB->entries[i]; + + u8 new_var4 = pSTAB->entries[i].unk_11; + new_var4 = new_var4 & 0xFF; + + UnkDataStruct4_14 *ptr = &pDst->mUnk_14[pSTAB->entries[i].unk_10]->mUnk_00[new_var4]; + ptr->mStationSceneIndex = data_027e09a0->GetSceneIndexFromName(entry.sceneName); + } + + return true; +} + +BOOL ZTB_ParseLDMK(FileInfos *pFileInfos, UnkDataStruct4 *pDst, ZTBSectionLDMK *pLDMK) { + for (int i = 0; i < pLDMK->header.nEntries; i++) { + ZTBEntryLDMK entry = pLDMK->entries[i]; + + VecFx32 temp; + temp.x = entry.unk_00; + temp.y = (entry.unk_01 - 0x80) * 0x1000; + temp.z = (entry.unk_02 - 0x60) * 0x1000; + + if (pDst->mUnk_C8 != NULL) { + *pDst->mUnk_C8 = temp; + } + + pDst->mUnk_C8++; + } + + return true; +} + +THUMB_END diff --git a/src/024_MainGame/code_020d16fc_024.cpp b/src/024_MainGame/code_020d16fc_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/code_020d24d4_024.cpp b/src/024_MainGame/code_020d24d4_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/code_020d3670_024.cpp b/src/024_MainGame/code_020d3670_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/code_020d46b4_024.cpp b/src/024_MainGame/code_020d46b4_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/code_020d4e9c_024.cpp b/src/024_MainGame/code_020d4e9c_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/code_020d51dc_024.cpp b/src/024_MainGame/code_020d51dc_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/code_020d54b0_024.cpp b/src/024_MainGame/code_020d54b0_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/code_020d5938_024.cpp b/src/024_MainGame/code_020d5938_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/code_020d6650_024.cpp b/src/024_MainGame/code_020d6650_024.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/src/024_MainGame/data_ov024_020d7f40.cpp b/src/024_MainGame/data_ov024_020d7f40.cpp new file mode 100644 index 00000000..ed18c732 --- /dev/null +++ b/src/024_MainGame/data_ov024_020d7f40.cpp @@ -0,0 +1,34 @@ +#include "MainGame/AdventureMode.hpp" +#include "Message/BMG.hpp" +#include "math.hpp" + +class UnkStruct_ov024_020d7f40 { +public: + /* 00 */ s16 mUnk_00; + /* 02 */ s16 mUnk_02; + /* 04 */ s16 mUnk_04; + /* 06 */ s16 mUnk_06; + /* 08 */ s16 mUnk_08; + /* 0A */ s16 mUnk_0A; + /* 0C */ s16 mUnk_0C; + /* 0E */ s16 mUnk_0E; + /* 10 */ + + UnkStruct_ov024_020d7f40() { + this->mUnk_0C = 0xFF00; + this->mUnk_0E = 0x0000; + this->mUnk_08 = 0x0100; + this->mUnk_0A = 0x0000; + this->mUnk_04 = 0x0100; + this->mUnk_06 = 0x0000; + this->mUnk_00 = 0xFF00; + this->mUnk_02 = 0x0000; + } +}; + +const UnkStruct_ov024_020d7f40 data_ov024_020d7f40; + +const int data_ov024_020d7320 = BMG_ID(BMGGroup_maingame, MsgIndex_SnowdriftStation); +const int data_ov024_020d731c = BMG_ID(BMGGroup_maingame, MsgIndex_SlipperyStation); +const int data_ov024_020d7324 = BMG_ID(BMGGroup_maingame, MsgIndex_ThreeQuestionMarks); +const int data_ov024_020d7318 = BMG_ID(BMGGroup_maingame, MsgIndex_LostAtSeaStation); diff --git a/src/025_Title/TitleScreenManager.cpp b/src/025_Title/TitleScreenManager.cpp index 63f53072..6bc042d4 100644 --- a/src/025_Title/TitleScreenManager.cpp +++ b/src/025_Title/TitleScreenManager.cpp @@ -19,9 +19,7 @@ ARM void TitleScreenManager::vfunc_14() { ARM void TitleScreenManager::vfunc_18() { this->mUnk_004.func_ov001_020bd784(); - - delete this->mpGameMode; - this->mpGameMode = NULL; + DELETE(this->mpGameMode); } ARM void TitleScreenManager::vfunc_24() { diff --git a/src/031_Land/Actor/ActorHeart.cpp b/src/031_Land/Actor/ActorHeart.cpp index f88eeaaa..20c4af68 100644 --- a/src/031_Land/Actor/ActorHeart.cpp +++ b/src/031_Land/Actor/ActorHeart.cpp @@ -77,7 +77,7 @@ ARM ActorHeart::ActorHeart() : mUnk_94(0), mUnk_96(6), mUnk_B8(0), - mUnk_BA(gRandom.ConditionalNext32(0) & 0x80000000 ? 0x666 : ~0x665), + mUnk_BA(gRandom.Next32(0) & 0x80000000 ? 0x666 : ~0x665), mUnk_BC(0), mUnk_BE(0), mUnk_C0(0), diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp index a0380e6e..d28ff582 100644 --- a/src/031_Land/Actor/ActorRupee.cpp +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -100,12 +100,10 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { this->mUnk_94 = 0; { VecFx32 vel; - vel.x = 0; - vel.y = 0; - vel.z = 0; - this->mVel.x = vel.x; - this->mVel.y = vel.y; - this->mVel.z = vel.z; + vel.x = 0; + vel.y = 0; + vel.z = 0; + VecFx32_Copy(&vel, &this->mVel); } this->func_ov031_020e9904(0); break; @@ -116,18 +114,16 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { { VecFx32 vel; - fx32 vx = gRandom.Next32(0, 0x223) - 0x111; + fx32 vx = gRandom.Next32(0x223) - 0x111; vel.x = vx; - fx32 vy = gRandom.Next32(0, 0x333) + 0x555; + fx32 vy = gRandom.Next32(0x333) + 0x555; vel.y = vy; - fx32 vz = gRandom.Next32(0, 0x223) - 0x111; + fx32 vz = gRandom.Next32(0x223) - 0x111; vel.z = vz; - this->mVel.x = vel.x; - this->mVel.y = vel.y; - this->mVel.z = vel.z; + VecFx32_Copy(&vel, &this->mVel); } this->func_ov031_020e9904(0); break; @@ -209,14 +205,15 @@ ARM void ActorRupee::func_ov031_020e9068() { ARM void ActorRupee::func_ov031_020e9108() { VecFx32 vel; - vel.x = gRandom.Next32(0, 0x19B); - vel.y = gRandom.Next32(0, 0x19A); - vel.z = gRandom.Next32(0, 0x19B); + vel.x = gRandom.Next32(0x19B); + vel.y = gRandom.Next32(0x19A); + vel.z = gRandom.Next32(0x19B); - this->mVel.x = vel.x - 0xCD; - this->mVel.y = vel.y + 0x9A + 0x100; - this->mVel.z = vel.z - 0xCD; + vel.x -= 0xCD; + vel.y += 0x9A + 0x100; + vel.z -= 0xCD; + VecFx32_Copy(&vel, &this->mVel); SET_FLAG(this->mFlags, ActorFlag_Visible); } diff --git a/src/031_Land/MapObject/MapObjectDoorBase.cpp b/src/031_Land/MapObject/MapObjectDoorBase.cpp index 2ea79395..840580f7 100644 --- a/src/031_Land/MapObject/MapObjectDoorBase.cpp +++ b/src/031_Land/MapObject/MapObjectDoorBase.cpp @@ -614,7 +614,7 @@ ARM void MapObjectDoorBase::vfunc_80() { } ARM void MapObjectDoorBase::func_ov031_020fcd40() { - this->func_ov000_0209d2c4(1, 1); + this->func_ov000_0209d2c4(1, true); this->func_ov000_0209d614(1); } diff --git a/src/031_Land/MapObject/MapObjectDoorClick.cpp b/src/031_Land/MapObject/MapObjectDoorClick.cpp index 288bd3d7..0b2fe95c 100644 --- a/src/031_Land/MapObject/MapObjectDoorClick.cpp +++ b/src/031_Land/MapObject/MapObjectDoorClick.cpp @@ -40,7 +40,7 @@ ARM MapObjectDoorClick::MapObjectDoorClick() : this->mUnk_8F = true; SET_FLAG(this->mFlags, MapObjFlag_9); this->mUnk_18[0] = 0x0E; - this->func_ov000_0209d2c4(1, 1); + this->func_ov000_0209d2c4(1, true); } ARM u16 MapObjectDoorClick::vfunc2_1C(unk32 param1) { @@ -268,7 +268,7 @@ ARM void MapObjectDoorClick::vfunc_5C(unk32 param1, unk32 param2) { UNSET_FLAG(this->mFlags, MapObjFlag_9); this->vfunc2_18(); - this->func_ov000_0209d2c4(1, 1); + this->func_ov000_0209d2c4(1, true); } break; diff --git a/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp b/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp index 593ac24f..715ab7ad 100644 --- a/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp +++ b/src/031_Land/MapObject/MapObjectDoorDangerSpawn.cpp @@ -128,7 +128,7 @@ ARM void MapObjectDoorDangerSpawn::vfunc_04(void) { ptr->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]); this->vfunc_5C(0, 0); - UnkStruct_027e09bc_0c *uVar5 = data_027e09bc->mUnk_0C; + UnkStruct_027e09bc_0C *uVar5 = data_027e09bc->mUnk_0C; MapObjectDoorDangerSpawn::func_ov031_020fe5fc(&auStack_20, this); uVar5->func_ov000_0207834c(&auStack_20, (unk32) func_ov000_02077590(0), 0); @@ -182,7 +182,7 @@ ARM void MapObjectDoorDangerSpawn::vfunc_08(void) { sp3C = *temp_r0_3; ((unk16 *) sp3C.data)[3] = this->mUnk_14; - UnkStruct_027e09bc_0c *temp_r5 = data_027e09bc->mUnk_0C; + UnkStruct_027e09bc_0C *temp_r5 = data_027e09bc->mUnk_0C; this->func_ov031_020fe5fc(&sp10, this); temp_r5->func_ov000_02078764(&sp10, &sp3C, 0); @@ -196,7 +196,7 @@ ARM void MapObjectDoorDangerSpawn::vfunc_08(void) { sp1C = *temp_r0_3; - UnkStruct_027e09bc_0c *temp_r7_2 = data_027e09bc->mUnk_0C; + UnkStruct_027e09bc_0C *temp_r7_2 = data_027e09bc->mUnk_0C; this->func_ov031_020fe5fc(&sp4, this); temp_r7_2->func_ov000_02078764(&sp4, &sp1C, 0); } @@ -247,7 +247,7 @@ ARM void MapObjectDoorDangerSpawn::vfunc_08(void) { unk32 temp = data_027e0cd8->mUnk_0C->func_ov000_02080a44(); data_ov000_020b51b8.func_ov000_0206d0ec(temp, 0x78, 0x7F, -1); - this->func_ov000_0209d2c4(1, 1); + this->func_ov000_0209d2c4(1, true); return; } break; @@ -335,8 +335,8 @@ ARM void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) { this->MapObjectDoorBase::vfunc_5C(param1, param2); break; case 0: - this->func_ov000_0209d2c4(1, 0); - this->func_ov000_0209d2c4(0, 1); + this->func_ov000_0209d2c4(1, false); + this->func_ov000_0209d2c4(0, true); if (this->mUnk_A2 == 0) { data_ov000_020b51b8.func_ov000_0206d134(0x0F); @@ -385,7 +385,7 @@ ARM void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) { case 8: ptr = &data_027e0cd8; this->MapObjectDoorBase::vfunc_5C(param1, param2); - this->func_ov000_0209d2c4(0, 0); + this->func_ov000_0209d2c4(0, false); if (param2 == 0) { (*ptr)->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]); @@ -415,7 +415,7 @@ ARM bool MapObjectDoorDangerSpawn::vfunc_64(void) { } pUVar4 = data_027e0cd8->mUnk_0C; - if (pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], data_027e0ce0->func_01fff148(0)) == 0) { + if (!pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], data_027e0ce0->func_01fff148(0))) { return true; } @@ -493,7 +493,7 @@ ARM bool MapObjectDoorDangerSpawn::vfunc_6C(void) { } } - if (pUVar5->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], data_027e0ce0->func_01fff148(0)) != 0) { + if (pUVar5->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], data_027e0ce0->func_01fff148(0))) { pUVar5->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]); return true; } @@ -550,7 +550,7 @@ ARM bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) { pUVar4 = data_027e0cd8->mUnk_0C; uVar3 = pUVar4->func_ov001_020b8a5c(data_027e09a4->func_ov000_02070560()->mSpawnIndex, 0); - if (pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], uVar3) != 0) { + if (pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], uVar3)) { return true; } diff --git a/src/110_PlayerGet/PlayerGet.cpp b/src/110_PlayerGet/PlayerGet.cpp index 1df6b98a..055ae7cf 100644 --- a/src/110_PlayerGet/PlayerGet.cpp +++ b/src/110_PlayerGet/PlayerGet.cpp @@ -3,13 +3,14 @@ #include "Actor/ActorId.hpp" #include "Actor/ActorManager.hpp" #include "Actor/ActorUnkNSHD.hpp" +#include "MainGame/AdventureMode.hpp" #include "MainGame/MiscAdvManager.hpp" #include "MapObject/MapObjectChestBase.hpp" #include "MapObject/MapObjectManager.hpp" #include "Player/PlayerGet.hpp" #include "System/OverlayManager.hpp" #include "Unknown/Common.hpp" -#include "Unknown/UnkStruct_020d8698.hpp" +#include "Unknown/UICounterManager.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" #include "Unknown/UnkStruct_027e09bc.hpp" @@ -37,7 +38,6 @@ extern "C" void func_ov000_0205ca74(unk32); extern "C" void func_01ffb6e4(unk32, const void *, void *); extern "C" void func_01ffc5a0(ModelRender *, unk32, u16, void *, unk32); extern "C" void func_ov000_0208f820(); -extern "C" unk32 func_ov024_020d5354(unk32 *, u16 *); extern "C" void func_ov000_02058fc4(unk32 *, UnkStruct_PlayerGet_74 *, VecFx32 *); extern unk32 *data_027e0958; extern "C" void func_ov000_0208ba10(void *, void *, unk32); @@ -155,7 +155,7 @@ ARM bool ItemManager::func_ov110_02184a40(ItemId itemId) { if (this->mEquippedItem == ItemFlag_None) { this->mEquippedItem = itemFlag; - data_ov024_020d8698->func_ov024_020cd458(this->mEquippedItem, false); + gpUICounterManager->func_ov024_020cd458(this->mEquippedItem, false); } } else { itemFlag = GetItemFlag(itemId); @@ -466,9 +466,9 @@ ARM PlayerGet::~PlayerGet() { UnkStruct_ov000_0208f820_28_98 *pUnk_28_98 = this->mUnk_28->mUnk_98; if (pUnk_28_98 != 0) { - pUnk_28_98->mUnk_38.mUnk_40 &= ~0x10; + pUnk_28_98->mUnk_38.mUnk_08 &= ~0x10; - if (pUnk_28_98->mUnk_38.mUnk_40 == 0) { + if (pUnk_28_98->mUnk_38.mUnk_08 == 0) { // real? pUnk_28_98->mUnk_38.~UnkStruct_PlayerGet_64(); } @@ -629,7 +629,7 @@ ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) { } } - UnkStruct_027e09bc_0c *uVar11 = data_027e09bc->mUnk_0C; + UnkStruct_027e09bc_0C *uVar11 = data_027e09bc->mUnk_0C; uVar11->func_ov000_0207834c(this->mUnk_34, func_ov000_02077590(4), 0); UnkStruct_PlayerGet_48 *pUnk_48 = this->mUnk_48; @@ -677,7 +677,7 @@ ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) { if (pUnk28_98 != NULL) { UnkStruct_PlayerGet_64 *ptr = &pUnk28_98->mUnk_38; - ptr->mUnk_40 |= 0x10; + ptr->mUnk_08 |= 0x10; this->mUnk_64.func_ov000_0208a100(); } } @@ -1022,30 +1022,29 @@ ARM void PlayerGet::vfunc_18(unk32 param1, unk32 param2, unk32 param3) { ARM UnkStruct_PlayerGet_ec::UnkStruct_PlayerGet_ec() : UnkSystem7(NULL) {} -// non-matching THUMB void UnkStruct_027e0ce0_34::func_ov110_02185d3c(ItemId itemId) { - unk32 uStack_14; - u16 auStack_18[2]; + s32 flagPos; + s16 flagValue; switch (itemId) { case ItemId_SpiritTrain: this->func_ov024_020d3d98(0, 0); - this->mUnk_2C = 1; - this->mUnk_00 = 0; - this->mUnk_10 = 0; + this->mUnk_2C = 1; + this->mUnk_00[0] = 0; + this->mUnk_10[0] = 0; break; case ItemId_SpiritTrainCar: this->func_ov024_020d3d98(2, 0); - this->mUnk_2C = 2; - this->mUnk_04 = 2; - this->mUnk_14 = 0; + this->mUnk_2C = 2; + this->mUnk_00[1] = 2; + this->mUnk_10[1] = 0; break; default: - uStack_14 = -1; - auStack_18[0] = 0; + flagPos = -1; + flagValue = 0; - if (func_ov024_020d5354(&uStack_14, auStack_18) != 0) { - this->func_ov024_020d3ee8(uStack_14, auStack_18[0], 1); + if (func_ov024_020d5354(&flagPos, &flagValue, itemId)) { + this->SetTrackFlag(flagPos, flagValue, true); } break; } diff --git a/src/112_PlayerSceneChange/PlayerSceneChange.cpp b/src/112_PlayerSceneChange/PlayerSceneChange.cpp index bf415015..66fe3890 100644 --- a/src/112_PlayerSceneChange/PlayerSceneChange.cpp +++ b/src/112_PlayerSceneChange/PlayerSceneChange.cpp @@ -37,9 +37,9 @@ ARM PlayerSceneChange::PlayerSceneChange() { ARM PlayerSceneChange::~PlayerSceneChange() { UnkStruct_ov000_0208f820_28 *pUnk_28 = this->mUnk_28; - pUnk_28->mUnk_38.mUnk_40 &= 0xFFFD; + pUnk_28->mUnk_38.mUnk_08 &= 0xFFFD; - if (pUnk_28->mUnk_38.mUnk_40 == 0) { + if (pUnk_28->mUnk_38.mUnk_08 == 0) { pUnk_28->mUnk_38.~UnkStruct_PlayerGet_64(); } @@ -77,7 +77,7 @@ extern "C" void func_01ff930c(UnkStruct_ov000_0208f820_40 *, unk16, unk32); // https://decomp.me/scratch/c7PhN ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) { - fx16 *pSinCosTable = gSinCosTable; + const fx16 *pSinCosTable = gSinCosTable; Vec2b stack4; s16 stack3; Vec2b stack2; @@ -648,7 +648,7 @@ ARM void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) { this->mUnk_6C--; if (this->mUnk_6C < 0x37) { - this->mUnk_28->mUnk_38.mUnk_40 |= 0x02; + this->mUnk_28->mUnk_38.mUnk_08 |= 0x02; break; } diff --git a/src/Main/System/Random.cpp b/src/Main/System/Random.cpp index ae9951cf..31f65e43 100644 --- a/src/Main/System/Random.cpp +++ b/src/Main/System/Random.cpp @@ -13,7 +13,5 @@ ARM void Random::Init() { randomValue[i] = func_02032920(&auStack_38[i], sizeof(u64)); } - *(u64 *) &this->mRandomValue = *(u64 *) &randomValue; - this->mFactor = 0x5D588B656C078965; - this->mAddend = 0x00269EC3; + this->Setup(randomValue); } diff --git a/src/Main/func_02017ea4.cpp b/src/Main/func_02017ea4.cpp index 0e098927..6e35e7ae 100644 --- a/src/Main/func_02017ea4.cpp +++ b/src/Main/func_02017ea4.cpp @@ -2,9 +2,9 @@ #include "types.h" ARM extern "C" void func_02017ea4(u16 *param1) { - *param1 = gRandom.Next16(); + *param1 = gRandom.Next32(0) >> 16; } ARM extern "C" void func_02017ee4(u16 *param1) { - *param1 = gRandom.Next32(0, 4) << 14; + *param1 = gRandom.Next32(4) << 14; } diff --git a/tools/configure.py b/tools/configure.py index e677bc87..7f825f8c 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -22,6 +22,7 @@ config = ProjectConfig("st", args.compiler, "dsi/1.2p1", args.wine, args.dsd, Pa config.dsd_tag = "v0.11.0" config.wibo_tag = "1.1.0" config.objdiff_tag = "v3.7.1" +config.sjiswrap_tag = "v1.2.2" GAME_VERSIONS = [ "eur", @@ -189,6 +190,7 @@ config.libs = [ Object("001_SceneInit/Item/ItemManager_001.cpp"), Object("001_SceneInit/CargoManager_001.cpp"), Object("001_SceneInit/PassengerManager_001.cpp"), + Object("001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp"), Object("001_SceneInit/Game/AdventureModeManager_001.cpp"), Object("001_SceneInit/Game/GameModeAdventure_001.cpp"), ] @@ -245,12 +247,12 @@ config.libs = [ "Overlay 24", [ Object("024_MainGame/Game/GameModeAdventure_024.cpp"), - Object("024_MainGame/Game/UnkStruct_ov000_020d8660_024.cpp"), - Object("024_MainGame/Game/UnkActorSystem1_024.cpp"), - Object("024_MainGame/Game/UnkActorSystem2_024.cpp"), + Object("024_MainGame/Actor/UnkStruct_ov024_020d8660_024.cpp"), + Object("024_MainGame/Actor/UnkActorSystem1_024.cpp"), + Object("024_MainGame/Actor/UnkActorSystem2_024.cpp"), Object("024_MainGame/Game/AdventureModeManager_024.cpp"), - Object("024_MainGame/Game/UnkStruct_027e0998_024.cpp"), - Object("024_MainGame/Game/UnkStruct_027e0cf8_024.cpp"), + Object("024_MainGame/Unknown/UnkStruct_027e0998_024.cpp"), + Object("024_MainGame/Train/UnkStruct_027e0cf8_024.cpp"), Object("024_MainGame/Game/AdventureModeManager_160_024.cpp"), Object("024_MainGame/Game/AdventureModeManager_170_024.cpp"), Object("024_MainGame/Game/AdventureModeManager_174_Base_024.cpp"), @@ -262,29 +264,34 @@ config.libs = [ Object("024_MainGame/Game/AdventureModeManager_18C_024.cpp"), Object("024_MainGame/Game/AdventureModeManager_190_024.cpp"), Object("024_MainGame/Game/AdventureModeManager_15C_20_00_024.cpp"), - Object("024_MainGame/UnkAdventureModeSystem1_024.cpp"), - Object("024_MainGame/UnkStruct_ov024_020d8694_024.cpp"), - Object("024_MainGame/UnkTitleCardSystem1_024.cpp"), - Object("024_MainGame/UnkStruct_020d8698_024.cpp"), - Object("024_MainGame/UnkStruct_027e0cf8_00_0C_024.cpp"), + Object("024_MainGame/Unknown/UnkAdventureModeSystem1_024.cpp"), + Object("024_MainGame/TitleCard/UnkStruct_ov024_020d8694_024.cpp"), + Object("024_MainGame/TitleCard/UnkTitleCardSystem1_024.cpp"), + Object("024_MainGame/UICounterManager.cpp"), + Object("024_MainGame/data_ov024_020d7f40.cpp"), + Object("024_MainGame/Train/UnkStruct_027e0cf8_00_0C_024.cpp"), Object("024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp"), - Object("024_MainGame/UnkStruct_ov024_020d86a0_024.cpp"), - Object("024_MainGame/code_020d16fc_024.cpp"), - Object("024_MainGame/code_020d24d4_024.cpp"), - Object("024_MainGame/UnkStruct_027e0cf8_08_024.cpp"), - Object("024_MainGame/code_020d3670_024.cpp"), - Object("024_MainGame/UnkStruct_027e0ce0_34_024.cpp"), - Object("024_MainGame/PassengerManager.cpp"), - Object("024_MainGame/code_020d46b4_024.cpp"), - Object("024_MainGame/UnkStruct_027e0d00.cpp"), - Object("024_MainGame/code_020d4e9c_024.cpp"), - Object("024_MainGame/code_020d51dc_024.cpp"), - Object("024_MainGame/code_020d54b0_024.cpp"), - Object("024_MainGame/CargoManager_024.cpp"), - Object("024_MainGame/code_020d5938_024.cpp"), - Object("024_MainGame/UnkStruct_027e0d08_024.cpp"), + Object("024_MainGame/Unknown/UnkStruct_ov024_020d86a0_024.cpp"), + Object("024_MainGame/Player/PlayerActor_A0_38_024.cpp"), + Object("024_MainGame/CreditsEndingType.cpp"), + Object("024_MainGame/Train/UnkDataStruct4_14.cpp"), + Object("024_MainGame/Train/UnkDataStruct4.cpp"), + Object("024_MainGame/Train/UnkStruct_027e0cf8_08_024.cpp"), + Object("024_MainGame/ZeldaTrainBinary.cpp"), + Object("024_MainGame/Train/UnkStruct_027e0cf8_08_00_024.cpp"), + Object("024_MainGame/Train/UnkStruct_027e0ce0_34_024.cpp"), + Object("024_MainGame/Train/PassengerManager.cpp"), + Object("024_MainGame/Train/MapObjectProfile_Derived5.cpp"), + Object("024_MainGame/Train/UnkStruct_027e0d00.cpp"), + Object("024_MainGame/Train/UnkStruct_027e0d00_20.cpp"), + Object("024_MainGame/Train/code_020d51dc_024.cpp"), + Object("024_MainGame/Train/UnkTrainSystem1_024.cpp"), + Object("024_MainGame/Train/CargoManager_024.cpp"), + Object("024_MainGame/Train/UnkTrainSystem2_024.cpp"), + Object("024_MainGame/Unknown/UnkStruct_027e0d08_024.cpp"), Object("024_MainGame/MiscAdvManager.cpp"), - Object("024_MainGame/code_020d6650_024.cpp"), + Object("024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp"), + Object("024_MainGame/Train/data_ov024_020d8550.cpp", extra_cflags=["-ipa file", "-enc shift-jis"]), Object("024_MainGame/Actor/ActorUnkOBPC.cpp"), ] ), diff --git a/tools/courselist.py b/tools/courselist.py new file mode 100644 index 00000000..f5cd3d2b --- /dev/null +++ b/tools/courselist.py @@ -0,0 +1,106 @@ +import struct +import yaml + +from pathlib import Path +from dataclasses import dataclass, field + + +@dataclass +class CourseRoomEntry: + roomIndex: int + mapPaintIndex: int + unk_02: int + unk_03: int + + def to_yaml(self): + return { + f"room_index_{self.roomIndex}": { + "mapPaintIndex": self.mapPaintIndex, + "unk_02": f"0x{self.unk_02:02X}", + "unk_03": f"0x{self.unk_03:02X}", + } + } + + +@dataclass +class CourseEntry: + size: int + name: str + unk_10: int + numRooms: int + unk_15: int + titleCardMsgIndex: int + saveCourseIndex: int + unk_18: int + unk_19: int + unk_1A: int + unk_1B: int + unk_1C: int + unk_1D: int + unk_1E: int + unk_1F: int + defaultMapPaintIndex: int + roomEntries: list[CourseRoomEntry] = field(default_factory=list) + + def to_yaml(self): + room_data = {} + + for room in self.roomEntries: + room_data.update(room.to_yaml()) + + return { + self.name: { + "unk_10": f"0x{self.unk_10:02X}", + "numRooms": self.numRooms, + "unk_15": f"0x{self.unk_15:02X}", + "titleCardMsgIndex": self.titleCardMsgIndex, + "saveCourseIndex": self.saveCourseIndex, + "unk_18": f"0x{self.unk_18:02X}", + "unk_19": f"0x{self.unk_19:02X}", + "unk_1A": f"0x{self.unk_1A:02X}", + "unk_1B": f"0x{self.unk_1B:02X}", + "unk_1C": f"0x{self.unk_1C:02X}", + "unk_1D": f"0x{self.unk_1D:02X}", + "unk_1E": f"0x{self.unk_1E:02X}", + "unk_1F": f"0x{self.unk_1F:02X}", + "defaultMapPaintIndex": self.defaultMapPaintIndex, + "roomEntries": room_data, + } + } + + +def get_entries(): + course_entries: list[CourseEntry] = [] + + clb_path = Path("extract/eur/files/Course/courselist.clb").resolve() + assert clb_path.exists() + clb_data = clb_path.read_bytes() + + magic, unk_04, unk_08, unk_0C = struct.unpack("<4sIII", clb_data[0x00:0x10]) + start = 0x10 + + for _ in range(unk_08): + new_entry = CourseEntry(*struct.unpack(" str: def objdiff_url(tag: str) -> str: return f'https://github.com/encounter/objdiff/releases/download/{tag}/objdiff-cli-{platform.system}-{platform.machine}{platform.exe}' +def sjiswrap_url(tag: str) -> str: + return f'https://github.com/encounter/sjiswrap/releases/download/{tag}/sjiswrap-windows-x86.exe' + TOOLS = { "dsd": dsd_url, "mwccarm": mwccarm_url, "wibo": wibo_url, "objdiff": objdiff_url, + "sjiswrap": sjiswrap_url, } diff --git a/tools/project.py b/tools/project.py index f45d12c8..4a813d41 100644 --- a/tools/project.py +++ b/tools/project.py @@ -112,6 +112,7 @@ class ProjectConfig: self.dsd_tag: Optional[str] = None self.wibo_tag: Optional[str] = None self.objdiff_tag: Optional[str] = None + self.sjiswrap_tag: Optional[str] = None self.mwcc_tag = mwcc_tag self.mwcc_root = Path(mwcc_root).resolve() if mwcc_root is not None else self.tools_path / "mwccarm" self.cfg_script = cfg_script @@ -125,6 +126,7 @@ class ProjectConfig: self.wine_path = wine if self.platform.system != "windows" else "" self.dsd_path = (Path(dsd) if dsd is not None else (self.root_path / f"dsd{self.platform.exe}")).resolve() self.objdiff_path = (self.root_path / f"objdiff-cli{self.platform.exe}").resolve() + self.sjiswrap_path = (self.root_path / "tools" / "sjiswrap.exe").resolve() self.cc_path = (self.mwcc_path / "mwccarm.exe").resolve() self.ld_path = (self.mwcc_path / "mwldarm.exe").resolve() self.python_path = Path(sys.executable).resolve() @@ -413,6 +415,18 @@ def add_download_tool_builds(cfg: ProjectConfig, n: ninja_syntax.Writer, args: A ) n.newline() + if cfg.sjiswrap_tag is not None: + downloads.append(str(cfg.sjiswrap_path)) + n.build( + rule="download_tool", + outputs=str(cfg.sjiswrap_path), + variables={ + "tool": "sjiswrap", + "tag": cfg.sjiswrap_tag, + "path": str(cfg.sjiswrap_path), + } + ) + n.build( inputs=downloads, rule="phony", @@ -786,8 +800,8 @@ def process_project(cfg: ProjectConfig, args: Any): n.newline() # -MMD excludes all includes instead of just system includes for some reason, so use -MD instead. - mwcc_cmd = f'{cfg.wine_path} "{cfg.cc_path}" $cc_flags {cfg.includes} -DVERSION=$game_version -MD -c $in -o $basedir' - mwcc_implicit = [str(cfg.cc_path)] + mwcc_cmd = f'{cfg.wine_path} {cfg.sjiswrap_path} "{cfg.cc_path}" $cc_flags {cfg.includes} -DVERSION=$game_version -MD -c $in -o $basedir' + mwcc_implicit = [str(cfg.cc_path), str(cfg.sjiswrap_path)] if cfg.platform.system != "windows": transform_dep = "tools/transform_dep.py" mwcc_cmd += f" && $python {transform_dep} $basefile.d $basefile.d" @@ -959,6 +973,7 @@ def process_project(cfg: ProjectConfig, args: Any): implicit=cmds, ) - n.default(["format", "objdiff", *defaults]) + # n.default(["format", "objdiff", *defaults]) + n.default(["objdiff", *defaults]) else: n.default(["download_tools"])