From f0dfb70749c0443e41d3755e44c34b8ec19e2202 Mon Sep 17 00:00:00 2001 From: Yanis <35189056+Yanis002@users.noreply.github.com> Date: Thu, 2 Jul 2026 20:56:08 +0200 Subject: [PATCH] Decompile overlay 1 (Part 4) (#97) * UnkStruct_027e095c_001 OK * UnkStruct_027e095c_001 OK (JP) * SysNew_001 OK * SaveManager_001 98% * UnkStruct_027e09bc_001 OK * MapObjectManager_001 OK * ActorManager_001 OK * remove useless thumb pragmas * ItemManager_001 OK * fix regressions * fix build issues --- config/eur/arm9/overlays/ov000/symbols.txt | 54 ++--- config/eur/arm9/overlays/ov001/delinks.txt | 6 + config/eur/arm9/overlays/ov001/relocs.txt | 11 +- config/eur/arm9/overlays/ov001/symbols.txt | 126 +++++------ config/eur/arm9/overlays/ov060/symbols.txt | 2 +- config/eur/arm9/overlays/ov071/symbols.txt | 2 +- config/eur/arm9/overlays/ov096/symbols.txt | 2 +- config/eur/arm9/overlays/ov110/symbols.txt | 2 +- config/eur/arm9/symbols.txt | 10 +- config/jp/arm9/overlays/ov000/symbols.txt | 60 ++--- config/jp/arm9/overlays/ov001/delinks.txt | 6 + config/jp/arm9/overlays/ov001/relocs.txt | 9 +- config/jp/arm9/overlays/ov001/symbols.txt | 127 ++++++----- config/jp/arm9/overlays/ov020/symbols.txt | 2 +- config/jp/arm9/overlays/ov021/symbols.txt | 2 +- config/jp/arm9/overlays/ov026/symbols.txt | 2 +- config/jp/arm9/overlays/ov031/symbols.txt | 2 +- config/jp/arm9/overlays/ov060/symbols.txt | 2 +- config/jp/arm9/overlays/ov071/symbols.txt | 4 +- config/jp/arm9/overlays/ov096/symbols.txt | 2 +- config/jp/arm9/overlays/ov110/symbols.txt | 2 +- config/jp/arm9/symbols.txt | 14 +- include/Actor/Actor.hpp | 6 +- include/Actor/ActorUnkPMST.hpp | 3 +- include/Actor/ActorUnkPMTT.hpp | 3 +- include/Course/Course.hpp | 4 +- include/Game/Game.hpp | 2 +- include/Item/Item.hpp | 1 + include/Item/ItemManager.hpp | 123 ++++++++-- include/MapObject/MapObject.hpp | 4 +- include/MapObject/MapObjectManager.hpp | 8 +- include/MapObject/MapObjectProfile.hpp | 3 +- include/Save/SaveFile.hpp | 8 + include/Save/SaveManager.hpp | 24 +- include/System/OverlayManager.hpp | 27 ++- include/System/SysNew.hpp | 38 +++- include/Unknown/Common.hpp | 10 + include/Unknown/UnkStruct_02049b80.hpp | 1 + include/Unknown/UnkStruct_027e095c.hpp | 21 +- include/Unknown/UnkStruct_027e09a0.hpp | 1 + include/Unknown/UnkStruct_027e09bc.hpp | 47 +++- include/Unknown/UnkStruct_ov000_020b5d34.hpp | 2 + include/Unknown/UnkStruct_ov020_020e8544.hpp | 24 ++ src/000_Second/Item/ItemManager.cpp | 45 ++-- src/001_SceneInit/Actor/ActorManager_001.cpp | 37 ++- src/001_SceneInit/CargoManager_001.cpp | 4 - .../Game/AdventureModeManager_001.cpp | 4 - .../Game/GameModeAdventure_001.cpp | 4 - src/001_SceneInit/Item/ItemManager_001.cpp | 120 +++++++++- .../MapObject/MapObjectManager_001.cpp | 211 ++++++++++++++++++ src/001_SceneInit/PassengerManager_001.cpp | 4 - src/001_SceneInit/Save/SaveManager_001.cpp | 97 +++++++- src/001_SceneInit/SceneInitializers_001.cpp | 6 - src/001_SceneInit/SysNew_001.cpp | 57 +++++ src/001_SceneInit/UnkStruct_027e095c_001.cpp | 24 ++ src/001_SceneInit/UnkStruct_027e09bc_001.cpp | 91 ++++++++ .../UnkStruct_027e0cd8_0C_001.cpp | 2 +- .../UnkStruct_027e0cf8_08_00_001.cpp | 4 - src/018_StartUp/StartUpInitializers.cpp | 12 +- src/019_MainSelect/019_SaveManager.cpp | 20 +- .../Game/AdventureModeManager_024.cpp | 2 +- .../Train/UnkTrainSystem1_024.cpp | 6 +- src/024_MainGame/UICounterManager.cpp | 10 +- src/031_Land/Actor/ActorItemBoomerang.cpp | 2 +- src/031_Land/Actor/ActorItemDrop.cpp | 8 +- src/031_Land/Actor/ActorRupee.cpp | 2 +- src/031_Land/MapObject/MapObjectChestBase.cpp | 2 +- src/031_Land/MapObject/MapObjectDoorKey.cpp | 6 +- src/036_MapA5/Actor/ActorUnkGORY.cpp | 4 +- src/036_MapA5/Actor/ActorUnkSHIT.cpp | 26 +-- src/110_PlayerGet/PlayerGet.cpp | 38 ++-- .../PlayerSceneChange.cpp | 2 +- src/Main/Game/Game.cpp | 4 +- 73 files changed, 1223 insertions(+), 440 deletions(-) create mode 100644 include/Unknown/UnkStruct_ov020_020e8544.hpp diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index fabaccdc..e5fc9dc1 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -1218,10 +1218,10 @@ func_ov000_02076d54 kind:function(arm,size=0x1fc) addr:0x02076d54 func_ov000_02076f50 kind:function(arm,size=0x58) addr:0x02076f50 func_ov000_02076fa8 kind:function(arm,size=0xa0) addr:0x02076fa8 func_ov000_02077048 kind:function(arm,size=0x114) addr:0x02077048 -func_ov000_0207715c kind:function(arm,size=0x2c) addr:0x0207715c +_ZN21UnkStruct_027e09bc_24C1Ev kind:function(arm,size=0x2c) addr:0x0207715c func_ov000_02077188 kind:function(arm,size=0x14) addr:0x02077188 func_ov000_0207719c kind:function(arm,size=0x1c) addr:0x0207719c -func_ov000_020771b8 kind:function(arm,size=0x10) addr:0x020771b8 +_ZN18UnkStruct_027e09bc19func_ov000_020771b8Ei kind:function(arm,size=0x10) addr:0x020771b8 _ZN18UnkStruct_027e09bc19func_ov000_020771c8Ev kind:function(arm,size=0x188) addr:0x020771c8 func_ov000_02077350 kind:function(arm,size=0xf4) addr:0x02077350 func_ov000_02077444 kind:function(arm,size=0x24) addr:0x02077444 @@ -1233,7 +1233,7 @@ func_ov000_020774c0 kind:function(arm,size=0xd0) addr:0x020774c0 func_ov000_02077590 kind:function(arm,size=0x48) addr:0x02077590 func_ov000_020775d8 kind:function(arm,size=0x60) addr:0x020775d8 func_ov000_02077638 kind:function(arm,size=0x3c) addr:0x02077638 -func_ov000_02077674 kind:function(arm,size=0x1bc) addr:0x02077674 +_ZN21UnkStruct_027e09bc_0CC1Ei kind:function(arm,size=0x1bc) addr:0x02077674 _ZN19func_ov000_02077830D1Ev kind:function(arm,size=0x54) addr:0x02077830 _ZN19func_ov000_02077884D0Ev kind:function(arm,size=0x5c) addr:0x02077884 func_ov000_020778e0 kind:function(arm,size=0x34) addr:0x020778e0 @@ -1286,11 +1286,11 @@ func_ov000_02078b28 kind:function(arm,size=0x10) addr:0x02078b28 func_ov000_02078b38 kind:function(arm,size=0x18) addr:0x02078b38 func_ov000_02078b50 kind:function(arm,size=0x38) addr:0x02078b50 func_ov000_02078b88 kind:function(arm,size=0x1c) addr:0x02078b88 -func_ov000_02078ba4 kind:function(arm,size=0x54) addr:0x02078ba4 +_ZN21UnkStruct_027e09bc_0C19func_ov000_02078ba4Ev kind:function(arm,size=0x54) addr:0x02078ba4 func_ov000_02078bf8 kind:function(arm,size=0x30) addr:0x02078bf8 func_ov000_02078c28 kind:function(arm,size=0x70) addr:0x02078c28 func_ov000_02078c98 kind:function(arm,size=0x54) addr:0x02078c98 -func_ov000_02078cec kind:function(arm,size=0xc) addr:0x02078cec +_ZN21UnkStruct_027e09bc_0C19func_ov000_02078cecEv kind:function(arm,size=0xc) addr:0x02078cec func_ov000_02078cf8 kind:function(arm,size=0x4) addr:0x02078cf8 func_ov000_02078cfc kind:function(arm,size=0x34) addr:0x02078cfc func_ov000_02078d30 kind:function(arm,size=0x4) addr:0x02078d30 @@ -2496,11 +2496,11 @@ func_ov000_0209c348 kind:function(arm,size=0x24) addr:0x0209c348 func_ov000_0209c36c kind:function(arm,size=0x3c) addr:0x0209c36c _ZN16MapObjectManager19func_ov000_0209c3a8Ev kind:function(arm,size=0x40) addr:0x0209c3a8 _ZN16MapObjectManager19func_ov000_0209c3e8Ev kind:function(arm,size=0x5c) addr:0x0209c3e8 -_ZN16MapObjectManager19func_ov000_0209c444Ev kind:function(arm,size=0x4c) addr:0x0209c444 +_ZN16MapObjectManager19func_ov000_0209c444Ei kind:function(arm,size=0x4c) addr:0x0209c444 _ZN16MapObjectManager19func_ov000_0209c490Ev kind:function(arm,size=0x94) addr:0x0209c490 _ZN16MapObjectManager17AllocateMapObjectEj5Vec2btih kind:function(arm,size=0x17c) addr:0x0209c524 -func_ov000_0209c6a0 kind:function(arm,size=0xc) addr:0x0209c6a0 -func_ov000_0209c6ac kind:function(arm,size=0xc) addr:0x0209c6ac +_ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c6a0Ev kind:function(arm,size=0xc) addr:0x0209c6a0 +_ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c6acEv kind:function(arm,size=0xc) addr:0x0209c6ac _ZN24UnkStruct_ov000_020b5d3416GetProfileFromIdEj kind:function(arm,size=0x38) addr:0x0209c6b8 _ZN24UnkStruct_ov000_020b5d3415CreateMapObjectEj kind:function(arm,size=0x28) addr:0x0209c6f0 _ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c718Ej kind:function(arm,size=0x78) addr:0x0209c718 @@ -2992,23 +2992,23 @@ func_ov000_020a84a8 kind:function(arm,size=0x7c) addr:0x020a84a8 func_ov000_020a8524 kind:function(arm,size=0x48) addr:0x020a8524 func_ov000_020a856c kind:function(arm,size=0x50) addr:0x020a856c func_ov000_020a85bc kind:function(thumb,size=0x80) addr:0x020a85bc -_ZN11ItemManager7SetFlagEj kind:function(arm,size=0x20) addr:0x020a863c -_ZN11ItemManager9ClearFlagEj kind:function(arm,size=0x24) addr:0x020a865c -_ZN11ItemManager17HasRecruitUniformEv kind:function(arm,size=0x24) addr:0x020a8680 -_ZN11ItemManager19func_ov000_020a86a4Ev kind:function(arm,size=0x2c) addr:0x020a86a4 -_ZN11ItemManager13GetItemAmountEj kind:function(arm,size=0x58) addr:0x020a86d0 -_ZN11ItemManager17GetQuiverCapacityEv kind:function(arm,size=0x20) addr:0x020a8728 -_ZN11ItemManager18GetBombBagCapacityEv kind:function(arm,size=0x20) addr:0x020a8748 -_ZN11ItemManager10GiveRupeesEibb kind:function(arm,size=0x60) addr:0x020a8768 -_ZN11ItemManager13GiveSmallKeysEi kind:function(arm,size=0x24) addr:0x020a87c8 -_ZN11ItemManager10GiveArrowsEi kind:function(arm,size=0x34) addr:0x020a87ec -_ZN11ItemManager9GiveBombsEi kind:function(arm,size=0x34) addr:0x020a8820 -_ZN11ItemManager18TryEquipForcedItemEv kind:function(arm,size=0x38) addr:0x020a8854 -_ZN11ItemManager10GivePotionEj kind:function(arm,size=0x3c) addr:0x020a888c -_ZN11ItemManager9HasPotionEv kind:function(arm,size=0x2c) addr:0x020a88c8 -_ZN11ItemManager15HasPurplePotionEv kind:function(arm,size=0x2c) addr:0x020a88f4 -_ZN11ItemManager18RemovePurplePotionEv kind:function(arm,size=0x28) addr:0x020a8920 -_ZN11ItemManager15PotionSlotsFullEv kind:function(arm,size=0x2c) addr:0x020a8948 +_ZN9Inventory7SetFlagEj kind:function(arm,size=0x20) addr:0x020a863c +_ZN9Inventory9ClearFlagEj kind:function(arm,size=0x24) addr:0x020a865c +_ZN9Inventory17HasRecruitUniformEv kind:function(arm,size=0x24) addr:0x020a8680 +_ZN9Inventory19func_ov000_020a86a4Ev kind:function(arm,size=0x2c) addr:0x020a86a4 +_ZN9Inventory13GetItemAmountEj kind:function(arm,size=0x58) addr:0x020a86d0 +_ZN9Inventory17GetQuiverCapacityEv kind:function(arm,size=0x20) addr:0x020a8728 +_ZN9Inventory18GetBombBagCapacityEv kind:function(arm,size=0x20) addr:0x020a8748 +_ZN9Inventory10GiveRupeesEibb kind:function(arm,size=0x60) addr:0x020a8768 +_ZN9Inventory13GiveSmallKeysEi kind:function(arm,size=0x24) addr:0x020a87c8 +_ZN9Inventory10GiveArrowsEi kind:function(arm,size=0x34) addr:0x020a87ec +_ZN9Inventory9GiveBombsEi kind:function(arm,size=0x34) addr:0x020a8820 +_ZN9Inventory18TryEquipForcedItemEv kind:function(arm,size=0x38) addr:0x020a8854 +_ZN9Inventory10GivePotionEj kind:function(arm,size=0x3c) addr:0x020a888c +_ZN9Inventory9HasPotionEv kind:function(arm,size=0x2c) addr:0x020a88c8 +_ZN9Inventory15HasPurplePotionEv kind:function(arm,size=0x2c) addr:0x020a88f4 +_ZN9Inventory18RemovePurplePotionEv kind:function(arm,size=0x28) addr:0x020a8920 +_ZN9Inventory15PotionSlotsFullEv kind:function(arm,size=0x2c) addr:0x020a8948 _ZN11ItemManager19func_ov000_020a8974Ej kind:function(arm,size=0x10) addr:0x020a8974 _ZN11ItemManager19GetEquippedItemFlagEi kind:function(arm,size=0x38) addr:0x020a8984 _ZN11ItemManager19func_ov000_020a89bcEv kind:function(thumb,size=0x18) addr:0x020a89bc @@ -3513,11 +3513,11 @@ _ZTV19data_ov000_020b2398 kind:data(any) addr:0x020b2398 data_ov000_020b23cc kind:data(any) addr:0x020b23cc data_ov000_020b2450 kind:data(any) addr:0x020b2450 data_ov000_020b2468 kind:data(any) addr:0x020b2468 -data_ov000_020b2478 kind:data(any) addr:0x020b2478 +_ZTV18UnkStruct_027e09bc kind:data(any) addr:0x020b2470 _ZTV19data_ov000_020b2480 kind:data(any) addr:0x020b2480 data_ov000_020b249c kind:data(any) addr:0x020b249c data_ov000_020b24b4 kind:data(any) addr:0x020b24b4 -data_ov000_020b24cc kind:data(any) addr:0x020b24cc +_ZTV10UnkSystem9 kind:data(any) addr:0x020b24c4 data_ov000_020b24d8 kind:data(any) addr:0x020b24d8 data_ov000_020b2504 kind:data(any) addr:0x020b2504 data_ov000_020b2528 kind:data(any) addr:0x020b2528 diff --git a/config/eur/arm9/overlays/ov001/delinks.txt b/config/eur/arm9/overlays/ov001/delinks.txt index 78ac244b..cebc10d9 100644 --- a/config/eur/arm9/overlays/ov001/delinks.txt +++ b/config/eur/arm9/overlays/ov001/delinks.txt @@ -41,26 +41,32 @@ src/001_SceneInit/ZeldaMapBinary.cpp: .text start:0x020b94b0 end:0x020ba50c src/001_SceneInit/UnkStruct_027e095c_001.cpp: + complete .text start:0x020ba50c end:0x020ba588 src/001_SceneInit/SysNew_001.cpp: + complete .text start:0x020ba588 end:0x020ba670 src/001_SceneInit/Save/SaveManager_001.cpp: .text start:0x020ba670 end:0x020ba9b8 src/001_SceneInit/UnkStruct_027e09bc_001.cpp: + complete .text start:0x020ba9b8 end:0x020bac40 src/001_SceneInit/MapObject/MapObjectManager_001.cpp: + complete .text start:0x020bac40 end:0x020baf64 src/001_SceneInit/Actor/ActorManager_001.cpp: + complete .text start:0x020baf64 end:0x020bb87c .rodata start:0x020c2624 end:0x020c264c .data start:0x020c2b3c end:0x020c2c70 src/001_SceneInit/Item/ItemManager_001.cpp: + complete .text start:0x020bb87c end:0x020bbac4 src/001_SceneInit/Player/PlayerActorBase_70_001.cpp: diff --git a/config/eur/arm9/overlays/ov001/relocs.txt b/config/eur/arm9/overlays/ov001/relocs.txt index 9429d627..906b2e5d 100644 --- a/config/eur/arm9/overlays/ov001/relocs.txt +++ b/config/eur/arm9/overlays/ov001/relocs.txt @@ -911,14 +911,14 @@ from:0x020baa90 kind:thumb_call_arm to:0x02011f3c module:main from:0x020baa9a kind:thumb_call_arm to:0x02077674 module:overlay(0) from:0x020baaa8 kind:thumb_call_arm to:0x02011f3c module:main from:0x020baab2 kind:thumb_call_arm to:0x02077674 module:overlay(0) -from:0x020baad0 kind:load to:0x020b2478 module:overlay(0) -from:0x020baad4 kind:load to:0x020b24cc module:overlay(0) +from:0x020baad0 kind:load to:0x020b2470 module:overlay(0) add:0x8 +from:0x020baad4 kind:load to:0x020b24c4 module:overlay(0) add:0x8 from:0x020baad8 kind:load to:0x027e09a4 module:dtcm from:0x020baadc kind:load to:0x020e8544 module:overlay(20) from:0x020bab42 kind:thumb_call_arm to:0x02016694 module:main from:0x020bab4a kind:thumb_call_arm to:0x0201bacc module:main from:0x020bab50 kind:thumb_call to:0x020bac34 module:overlay(1) -from:0x020bab58 kind:load to:0x020b2478 module:overlay(0) +from:0x020bab58 kind:load to:0x020b2470 module:overlay(0) add:0x8 from:0x020babb8 kind:thumb_call_arm to:0x02078cec module:overlay(0) from:0x020babc0 kind:load to:0x027e09a4 module:dtcm from:0x020babc4 kind:load to:0x027e09bc module:dtcm @@ -1120,7 +1120,7 @@ from:0x020bb820 kind:load to:0x020b539c module:overlay(0) from:0x020bb832 kind:thumb_call_arm to:0x020f8c98 module:overlay(21) from:0x020bb838 kind:thumb_call_arm to:0x02011ff4 module:main from:0x020bb840 kind:load to:0x027e0cf4 module:dtcm -from:0x020bb852 kind:thumb_call_arm to:0x0215ea90 module:overlays(60,71) +from:0x020bb852 kind:thumb_call_arm to:0x0215ea90 module:overlay(71) from:0x020bb858 kind:thumb_call_arm to:0x02011ff4 module:main from:0x020bb860 kind:load to:0x027e0d70 module:dtcm from:0x020bb86c kind:load to:0x027e0ce4 module:dtcm @@ -1136,7 +1136,7 @@ from:0x020bba44 kind:load to:0x027e09a4 module:dtcm from:0x020bba48 kind:load to:0x02043e50 module:main from:0x020bba4c kind:load to:0x027e09a0 module:dtcm from:0x020bba50 kind:load to:0x020b62a8 module:overlay(0) -from:0x020bba62 kind:thumb_call_arm to:0x02179b20 module:overlays(95,96) +from:0x020bba62 kind:thumb_call_arm to:0x02179b20 module:overlay(96) from:0x020bba68 kind:load to:0x02043e50 module:main from:0x020bba82 kind:thumb_call_arm to:0x01fff350 module:itcm from:0x020bba9c kind:thumb_call_arm to:0x020984f0 module:overlay(0) @@ -2329,7 +2329,6 @@ from:0x020c1224 kind:load to:0x020c2f4c module:overlay(1) from:0x020c1338 kind:load to:0x020c2fc4 module:overlay(1) from:0x020c1590 kind:load to:0x020c4701 module:overlay(1) from:0x020c1608 kind:load to:0x020c4701 module:overlay(1) -from:0x020c1614 kind:load to:0x020c2624 add:0x4 module:overlay(1) from:0x020c1680 kind:load to:0x020c4701 module:overlay(1) from:0x020c168c kind:load to:0x020c273c module:overlay(1) from:0x020c16f8 kind:load to:0x020c4701 module:overlay(1) diff --git a/config/eur/arm9/overlays/ov001/symbols.txt b/config/eur/arm9/overlays/ov001/symbols.txt index c43ead49..a37e44e1 100644 --- a/config/eur/arm9/overlays/ov001/symbols.txt +++ b/config/eur/arm9/overlays/ov001/symbols.txt @@ -133,33 +133,33 @@ func_ov001_020ba4a4 kind:function(thumb,size=0x28) addr:0x020ba4a4 _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED1Ev kind:function(thumb,size=0x1c) addr:0x020ba4cc func_ov001_020ba4e8 kind:function(thumb,size=0x24) addr:0x020ba4e8 _ZN18UnkStruct_027e095c6CreateEv kind:function(thumb,size=0x1c) addr:0x020ba50c -func_ov001_020ba528 kind:function(thumb,size=0x54) addr:0x020ba528 -func_ov001_020ba57c kind:function(thumb,size=0xc) addr:0x020ba57c -func_ov001_020ba588 kind:function(thumb,size=0x12) addr:0x020ba588 -func_ov001_020ba59c kind:function(thumb,size=0x10) addr:0x020ba59c -func_ov001_020ba5ac kind:function(thumb,size=0x12) addr:0x020ba5ac -func_ov001_020ba5c0 kind:function(thumb,size=0x10) addr:0x020ba5c0 -func_ov001_020ba5d0 kind:function(thumb,size=0x38) addr:0x020ba5d0 -func_ov001_020ba608 kind:function(thumb,size=0x18) addr:0x020ba608 -func_ov001_020ba620 kind:function(thumb,size=0x20) addr:0x020ba620 -func_ov001_020ba640 kind:function(thumb,size=0x16) addr:0x020ba640 -func_ov001_020ba658 kind:function(thumb,size=0x18) addr:0x020ba658 +_ZN18UnkStruct_027e095cC1Ev kind:function(thumb,size=0x54) addr:0x020ba528 +_ZN8InstanceI18UnkStruct_027e095cEC2Ev kind:function(thumb,size=0xc) addr:0x020ba57c +_ZN18UnkStruct_02011e1019func_ov001_020ba588Eii kind:function(thumb,size=0x12) addr:0x020ba588 +_ZN18UnkStruct_02011e1019func_ov001_020ba59cEv kind:function(thumb,size=0x10) addr:0x020ba59c +_ZN18UnkStruct_02011e1019func_ov001_020ba5acEii kind:function(thumb,size=0x12) addr:0x020ba5ac +_ZN18UnkStruct_02011e1019func_ov001_020ba5c0Ev kind:function(thumb,size=0x10) addr:0x020ba5c0 +_ZN18UnkStruct_02011e1019func_ov001_020ba5d0Ev kind:function(thumb,size=0x38) addr:0x020ba5d0 +_ZN18UnkStruct_02011e1019func_ov001_020ba608Ev kind:function(thumb,size=0x18) addr:0x020ba608 +_ZN18UnkStruct_02011e1019func_ov001_020ba620Ev kind:function(thumb,size=0x20) addr:0x020ba620 +_ZN18UnkStruct_02011e1019func_ov001_020ba640Ev kind:function(thumb,size=0x16) addr:0x020ba640 +_ZN18UnkStruct_02011e1019func_ov001_020ba658Ev kind:function(thumb,size=0x18) addr:0x020ba658 _ZN11SaveManager19func_ov001_020ba670Ev kind:function(thumb,size=0x138) addr:0x020ba670 _ZN11SaveManager19func_ov001_020ba7a8Ev kind:function(thumb,size=0x20) addr:0x020ba7a8 _ZN11SaveManager19func_ov001_020ba7c8Et kind:function(thumb,size=0x90) addr:0x020ba7c8 -func_ov001_020ba858 kind:function(thumb,size=0x15c) addr:0x020ba858 -func_ov001_020ba9b4 kind:function(thumb,size=0x2) addr:0x020ba9b4 +_ZN11SaveManager19func_ov001_020ba858Ev kind:function(thumb,size=0x15c) addr:0x020ba858 +_ZN15SaveManager_244C1Ev kind:function(thumb,size=0x2) addr:0x020ba9b4 _ZN18UnkStruct_027e09bc6CreateEv kind:function(thumb,size=0x16) addr:0x020ba9b8 -func_ov001_020ba9d0 kind:function(thumb,size=0x110) addr:0x020ba9d0 +_ZN18UnkStruct_027e09bcC1Ev kind:function(thumb,size=0x110) addr:0x020ba9d0 _ZN18UnkStruct_027e09bcD1Ev kind:function(thumb,size=0x7c) addr:0x020baae0 _ZN18UnkStruct_027e09bc19func_ov001_020bab5cEv kind:function(thumb,size=0x6c) addr:0x020bab5c _ZN18UnkStruct_027e09bc19func_ov001_020babc8Ev kind:function(thumb,size=0x20) addr:0x020babc8 _ZN18UnkStruct_027e09bc19func_ov001_020babe8Ev kind:function(thumb,size=0x20) addr:0x020babe8 _ZN18UnkStruct_027e09bc19func_ov001_020bac08Ev kind:function(thumb,size=0x20) addr:0x020bac08 -func_ov001_020bac28 kind:function(thumb,size=0xc) addr:0x020bac28 -func_ov001_020bac34 kind:function(thumb,size=0xc) addr:0x020bac34 +_ZN8InstanceI18UnkStruct_027e09bcEC2Ev kind:function(thumb,size=0xc) addr:0x020bac28 +_ZN8InstanceI18UnkStruct_027e09bcED2Ev kind:function(thumb,size=0xc) addr:0x020bac34 _ZN16MapObjectManager6CreateEv kind:function(thumb,size=0x16) addr:0x020bac40 -func_ov001_020bac58 kind:function(thumb,size=0x1e) addr:0x020bac58 +_ZN16MapObjectManagerC1Ev kind:function(thumb,size=0x1e) addr:0x020bac58 _ZN16MapObjectManagerD1Ev kind:function(thumb,size=0x22) addr:0x020bac78 _ZN16MapObjectManager19func_ov001_020bac9cEv kind:function(thumb,size=0x3c) addr:0x020bac9c _ZN16MapObjectManager19func_ov001_020bacd8EP9ZOBHeader kind:function(thumb,size=0xa8) addr:0x020bacd8 @@ -169,10 +169,10 @@ _ZN16MapObjectManager19func_ov001_020badb4Ev kind:function(thumb,size=0x2c) addr _ZN16MapObjectManager19func_ov001_020bade0Ev kind:function(thumb,size=0x60) addr:0x020bade0 _ZN16MapObjectManager19func_ov001_020bae40EP15ZeldaObjectList kind:function(thumb,size=0x2c) addr:0x020bae40 _ZN16MapObjectManager19func_ov001_020bae6cEv kind:function(thumb,size=0x34) addr:0x020bae6c -_ZN16MapObjectManager19func_ov001_020baea0EP5Vec2s kind:function(thumb,size=0x88) addr:0x020baea0 +_ZN16MapObjectManager19func_ov001_020baea0EPt kind:function(thumb,size=0x88) addr:0x020baea0 _ZN16MapObjectManager19func_ov001_020baf28Ev kind:function(thumb,size=0x22) addr:0x020baf28 -func_ov001_020baf4c kind:function(thumb,size=0xc) addr:0x020baf4c -func_ov001_020baf58 kind:function(thumb,size=0xc) addr:0x020baf58 +_ZN8InstanceI16MapObjectManagerEC2Ev kind:function(thumb,size=0xc) addr:0x020baf4c +_ZN8InstanceI16MapObjectManagerED2Ev kind:function(thumb,size=0xc) addr:0x020baf58 _ZN12ActorManager6CreateEv kind:function(thumb,size=0x16) addr:0x020baf64 _ZN12ActorManagerC1Ev kind:function(thumb,size=0x46) addr:0x020baf7c _ZN12ActorManagerD1Ev kind:function(thumb,size=0x18) addr:0x020bafc4 @@ -190,12 +190,12 @@ _ZN12ActorManager19func_ov001_020bb824Ev kind:function(thumb,size=0x20) addr:0x0 _ZN12ActorManager19func_ov001_020bb844Ev kind:function(thumb,size=0x20) addr:0x020bb844 _ZN8InstanceI12ActorManagerEC2Ev kind:function(thumb,size=0xc) addr:0x020bb864 _ZN8InstanceI12ActorManagerED2Ev kind:function(thumb,size=0xc) addr:0x020bb870 -func_ov001_020bb87c kind:function(thumb,size=0x3c) addr:0x020bb87c -func_ov001_020bb8b8 kind:function(thumb,size=0x2) addr:0x020bb8b8 -func_ov001_020bb8bc kind:function(thumb,size=0x13c) addr:0x020bb8bc -_ZN11ItemManager19func_ov001_020bb9f8Ev kind:function(thumb,size=0x5c) addr:0x020bb9f8 -func_ov001_020bba54 kind:function(thumb,size=0x18) addr:0x020bba54 -func_ov001_020bba6c kind:function(thumb,size=0x58) addr:0x020bba6c +_ZN9InventoryC1Ev kind:function(thumb,size=0x3c) addr:0x020bb87c +_ZN9InventoryD1Ev kind:function(thumb,size=0x2) addr:0x020bb8b8 +_ZN9Inventory19func_ov001_020bb8bcEPK13InvImportData kind:function(thumb,size=0x13c) addr:0x020bb8bc +_ZN9Inventory19func_ov001_020bb9f8Ev kind:function(thumb,size=0x5c) addr:0x020bb9f8 +_ZN9Inventory19func_ov001_020bba54Ev kind:function(thumb,size=0x18) addr:0x020bba54 +_ZN9Inventory19func_ov001_020bba6cEv kind:function(thumb,size=0x58) addr:0x020bba6c func_ov001_020bbac4 kind:function(thumb,size=0x5c) addr:0x020bbac4 _ZN18PlayerActorBase_70C1Ev kind:function(thumb,size=0x260) addr:0x020bbb20 func_ov001_020bbd80 kind:function(thumb,size=0x96) addr:0x020bbd80 @@ -212,7 +212,7 @@ func_ov001_020bbfcc kind:function(thumb,size=0x5a) addr:0x020bbfcc _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 +_ZN11ItemManagerC1Ev kind:function(thumb,size=0x16) addr:0x020bc234 func_ov001_020bc24c kind:function(thumb,size=0x30) addr:0x020bc24c func_ov001_020bc27c kind:function(thumb,size=0x1e) addr:0x020bc27c func_ov001_020bc29c kind:function(thumb,size=0x1a) addr:0x020bc29c @@ -494,9 +494,9 @@ NitroStaticInit kind:function(arm,size=0x50,unknown) addr:0x020c2570 local data_ov001_020c25c0 kind:data(any) addr:0x020c25c0 data_ov001_020c25d4 kind:data(any) addr:0x020c25d4 data_ov001_020c25fc kind:data(any) addr:0x020c25fc -data_ov001_020c2624 kind:data(any) addr:0x020c2624 -data_ov001_020c262e kind:data(any) addr:0x020c262e -data_ov001_020c2638 kind:data(any) addr:0x020c2638 +data_ov001_020c2624 kind:data(any) addr:0x020c2624 local +data_ov001_020c262e kind:data(any) addr:0x020c262e local +data_ov001_020c2638 kind:data(any) addr:0x020c2638 local data_ov001_020c264c kind:data(any) addr:0x020c264c data_ov001_020c26bc kind:data(any) addr:0x020c26bc data_ov001_020c273c kind:data(any) addr:0x020c273c @@ -535,39 +535,39 @@ data_ov001_020c2a40 kind:data(any) addr:0x020c2a40 @3288 kind:data(byte[28]) addr:0x020c2af0 local @3292 kind:data(byte[23]) addr:0x020c2b0c local @3293 kind:data(byte[21]) addr:0x020c2b24 local -data_ov001_020c2b3c kind:data(any) addr:0x020c2b3c -data_ov001_020c2b48 kind:data(any) addr:0x020c2b48 -data_ov001_020c2b58 kind:data(any) addr:0x020c2b58 -data_ov001_020c2b64 kind:data(any) addr:0x020c2b64 -data_ov001_020c2b6c kind:data(any) addr:0x020c2b6c -data_ov001_020c2b74 kind:data(any) addr:0x020c2b74 -data_ov001_020c2b7c kind:data(any) addr:0x020c2b7c -data_ov001_020c2b84 kind:data(any) addr:0x020c2b84 -data_ov001_020c2b8c kind:data(any) addr:0x020c2b8c -data_ov001_020c2b94 kind:data(any) addr:0x020c2b94 -data_ov001_020c2b9c kind:data(any) addr:0x020c2b9c -data_ov001_020c2ba4 kind:data(any) addr:0x020c2ba4 -data_ov001_020c2bac kind:data(any) addr:0x020c2bac -data_ov001_020c2bb4 kind:data(any) addr:0x020c2bb4 -data_ov001_020c2bbc kind:data(any) addr:0x020c2bbc -data_ov001_020c2bc4 kind:data(any) addr:0x020c2bc4 -data_ov001_020c2bcc kind:data(any) addr:0x020c2bcc -data_ov001_020c2bd4 kind:data(any) addr:0x020c2bd4 -data_ov001_020c2bdc kind:data(any) addr:0x020c2bdc -data_ov001_020c2be4 kind:data(any) addr:0x020c2be4 -data_ov001_020c2bec kind:data(any) addr:0x020c2bec -data_ov001_020c2bf4 kind:data(any) addr:0x020c2bf4 -data_ov001_020c2bfc kind:data(any) addr:0x020c2bfc -data_ov001_020c2c04 kind:data(any) addr:0x020c2c04 -data_ov001_020c2c10 kind:data(any) addr:0x020c2c10 -data_ov001_020c2c18 kind:data(any) addr:0x020c2c18 -data_ov001_020c2c2c kind:data(any) addr:0x020c2c2c -data_ov001_020c2c34 kind:data(any) addr:0x020c2c34 -data_ov001_020c2c38 kind:data(any) addr:0x020c2c38 -data_ov001_020c2c44 kind:data(any) addr:0x020c2c44 -data_ov001_020c2c50 kind:data(any) addr:0x020c2c50 -data_ov001_020c2c5c kind:data(any) addr:0x020c2c5c -data_ov001_020c2c68 kind:data(any) addr:0x020c2c68 +@5615 kind:data(byte[0x0C]) addr:0x020c2b3c local +@5616 kind:data(byte[0x0D]) addr:0x020c2b48 local +@5617 kind:data(byte[0x0C]) addr:0x020c2b58 local +@5618 kind:data(byte[0x05]) addr:0x020c2b64 local +@5619 kind:data(byte[0x06]) addr:0x020c2b6c local +@5620 kind:data(byte[0x06]) addr:0x020c2b74 local +@5621 kind:data(byte[0x06]) addr:0x020c2b7c local +@5622 kind:data(byte[0x06]) addr:0x020c2b84 local +@5623 kind:data(byte[0x06]) addr:0x020c2b8c local +@5624 kind:data(byte[0x06]) addr:0x020c2b94 local +@5625 kind:data(byte[0x05]) addr:0x020c2b9c local +@5626 kind:data(byte[0x05]) addr:0x020c2ba4 local +@5627 kind:data(byte[0x06]) addr:0x020c2bac local +@5628 kind:data(byte[0x06]) addr:0x020c2bb4 local +@5629 kind:data(byte[0x06]) addr:0x020c2bbc local +@5630 kind:data(byte[0x06]) addr:0x020c2bc4 local +@5631 kind:data(byte[0x06]) addr:0x020c2bcc local +@5632 kind:data(byte[0x06]) addr:0x020c2bd4 local +@5633 kind:data(byte[0x06]) addr:0x020c2bdc local +@5634 kind:data(byte[0x06]) addr:0x020c2be4 local +@5635 kind:data(byte[0x07]) addr:0x020c2bec local +@5636 kind:data(byte[0x07]) addr:0x020c2bf4 local +@5637 kind:data(byte[0x07]) addr:0x020c2bfc local +@5638 kind:data(byte[0x0B]) addr:0x020c2c04 local +@5639 kind:data(byte[0x07]) addr:0x020c2c10 local +@5640 kind:data(byte[0x11]) addr:0x020c2c18 local +@5641 kind:data(byte[0x07]) addr:0x020c2c2c local +@5642 kind:data(byte[0x04]) addr:0x020c2c34 local +@5643 kind:data(byte[0x09]) addr:0x020c2c38 local +@5644 kind:data(byte[0x0C]) addr:0x020c2c44 local +@5645 kind:data(byte[0x09]) addr:0x020c2c50 local +@5646 kind:data(byte[0x0C]) addr:0x020c2c5c local +@5647 kind:data(byte[0x06]) addr:0x020c2c68 local data_ov001_020c2c70 kind:data(any) addr:0x020c2c70 data_ov001_020c2c78 kind:data(any) addr:0x020c2c78 data_ov001_020c2c80 kind:data(any) addr:0x020c2c80 diff --git a/config/eur/arm9/overlays/ov060/symbols.txt b/config/eur/arm9/overlays/ov060/symbols.txt index 17a651f7..27d14a10 100644 --- a/config/eur/arm9/overlays/ov060/symbols.txt +++ b/config/eur/arm9/overlays/ov060/symbols.txt @@ -249,7 +249,7 @@ _ZN19ActorProfileUnkCASL10GetProfileEv kind:function(arm,size=0xc) addr:0x0215e9 _ZN19ActorProfileUnkCASL6CreateEv kind:function(arm,size=0x24) addr:0x0215e980 _ZN19ActorProfileUnkCASLC1Ev kind:function(arm,size=0x28) addr:0x0215e9a4 _ZN12ActorUnkCASLC1Ev kind:function(arm,size=0xc4) addr:0x0215e9cc -_ZN18UnkStruct_027e0d70D1Ev kind:function(arm,size=0x6c) addr:0x0215ea90 +_ZN12ActorUnkCASL19func_ov060_021607d0Ev kind:function(arm,size=0x6c) addr:0x0215ea90 _ZN12ActorUnkCASL19func_ov060_0215eafcEv kind:function(arm,size=0x14) addr:0x0215eafc _ZN12ActorUnkCASL19func_ov060_0215eb10Ev kind:function(arm,size=0x14) addr:0x0215eb10 _ZN12ActorUnkCASL19func_ov060_0215eb24Ev kind:function(arm,size=0x20) addr:0x0215eb24 diff --git a/config/eur/arm9/overlays/ov071/symbols.txt b/config/eur/arm9/overlays/ov071/symbols.txt index 2d06f339..48927533 100644 --- a/config/eur/arm9/overlays/ov071/symbols.txt +++ b/config/eur/arm9/overlays/ov071/symbols.txt @@ -267,7 +267,7 @@ _ZN18UnkStruct_027e0d7019func_ov071_0215e8f8Ev kind:function(arm,size=0x70) addr func_ov071_0215e968 kind:function(arm,size=0x44) addr:0x0215e968 _ZN18UnkStruct_027e0d7019func_ov071_0215e9acEv kind:function(arm,size=0x68) addr:0x0215e9ac func_ov071_0215ea14 kind:function(arm,size=0x7c) addr:0x0215ea14 -func_ov071_0215ea90 kind:function(arm,size=0x38) addr:0x0215ea90 +_ZN18UnkStruct_027e0d70D1Ev kind:function(arm,size=0x38) addr:0x0215ea90 _ZN18UnkStruct_027e0d7019func_ov071_0215eac8Ev kind:function(arm,size=0x50) addr:0x0215eac8 func_ov071_0215eb18 kind:function(arm,size=0xc) addr:0x0215eb18 func_ov071_0215eb24 kind:function(arm,size=0x27c) addr:0x0215eb24 diff --git a/config/eur/arm9/overlays/ov096/symbols.txt b/config/eur/arm9/overlays/ov096/symbols.txt index 806004e8..60ee187c 100644 --- a/config/eur/arm9/overlays/ov096/symbols.txt +++ b/config/eur/arm9/overlays/ov096/symbols.txt @@ -1,4 +1,4 @@ -func_ov096_02179b20 kind:function(arm,size=0x9c) addr:0x02179b20 +_ZN9Inventory19func_ov096_02179b20Ev kind:function(arm,size=0x9c) addr:0x02179b20 func_ov096_02179bbc kind:function(thumb,size=0x20) addr:0x02179bbc func_ov096_02179bdc kind:function(thumb,size=0x20) addr:0x02179bdc func_ov096_02179bfc kind:function(thumb,size=0xc) addr:0x02179bfc diff --git a/config/eur/arm9/overlays/ov110/symbols.txt b/config/eur/arm9/overlays/ov110/symbols.txt index f18da444..a9aea18e 100644 --- a/config/eur/arm9/overlays/ov110/symbols.txt +++ b/config/eur/arm9/overlays/ov110/symbols.txt @@ -1,4 +1,4 @@ -_ZN11ItemManager19func_ov110_02184a40Ei kind:function(arm,size=0x36c) addr:0x02184a40 +_ZN9Inventory19func_ov110_02184a40Ei kind:function(arm,size=0x36c) addr:0x02184a40 _ZN22UnkStruct_PlayerGet_748vfunc_00Eiii kind:function(arm,size=0x30) addr:0x02184dac _ZN9PlayerGetC2Ev kind:function(arm,size=0xa0) addr:0x02184ddc _ZN9PlayerGetD1Ev kind:function(arm,size=0xc4) addr:0x02184e7c diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 03b4edde..be464981 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -642,7 +642,7 @@ _ZN18UnkStruct_02011e1013func_020130d4Ei kind:function(arm,size=0x1c) addr:0x020 func_020130f0 kind:function(arm,size=0x28) addr:0x020130f0 func_02013118 kind:function(arm,size=0x30) addr:0x02013118 func_02013148 kind:function(arm,size=0x1c) addr:0x02013148 -func_02013164 kind:function(arm,size=0x20) addr:0x02013164 +_ZN18UnkStruct_02011e10D1Ev kind:function(arm,size=0x20) addr:0x02013164 func_02013184 kind:function(arm,size=0x2c) addr:0x02013184 func_020131b0 kind:function(arm,size=0x3c) addr:0x020131b0 func_020131ec kind:function(arm,size=0x28) addr:0x020131ec @@ -682,7 +682,7 @@ func_02013e44 kind:function(arm,size=0x3c) addr:0x02013e44 func_02013e80 kind:function(arm,size=0x4c) addr:0x02013e80 _ZN18UnkStruct_02049b8013func_02013eccEiPFvtEi kind:function(arm,size=0x1c) addr:0x02013ecc _ZN18UnkStruct_02049b8013func_02013ee8Eii kind:function(arm,size=0x98) addr:0x02013ee8 -func_02013f80 kind:function(arm,size=0x6c) addr:0x02013f80 +_ZN18UnkStruct_02049b8013func_02013f80Ei kind:function(arm,size=0x6c) addr:0x02013f80 func_02013fec kind:function(arm,size=0xc) addr:0x02013fec func_02013ff8 kind:function(arm,size=0x12c) addr:0x02013ff8 _ZN12TouchControl11UpdateStateEP10TouchStatePK6TPData kind:function(arm,size=0xb8) addr:0x02014124 @@ -696,8 +696,8 @@ _ZN12TouchControl13func_02014414Etb kind:function(arm,size=0x64) addr:0x02014414 _ZN12TouchControl13func_02014478EP10TouchStatet kind:function(arm,size=0x28) addr:0x02014478 func_020144a0 kind:function(thumb,size=0x10) addr:0x020144a0 func_020144b0 kind:function(thumb,size=0x1c) addr:0x020144b0 -func_020144cc kind:function(thumb,size=0x6c) addr:0x020144cc -func_02014538 kind:function(thumb,size=0x34) addr:0x02014538 +_ZN21UnkStruct_02011e10_2C13func_020144ccEiii kind:function(thumb,size=0x6c) addr:0x020144cc +_ZN21UnkStruct_02011e10_2C13func_02014538Ev kind:function(thumb,size=0x34) addr:0x02014538 func_0201456c kind:function(arm,size=0x44) addr:0x0201456c func_020145b0 kind:function(arm,size=0x80) addr:0x020145b0 func_02014630 kind:function(arm,size=0x58) addr:0x02014630 @@ -2116,7 +2116,7 @@ __register_global_object kind:function(arm,size=0x20) addr:0x0203ce74 func_0203ce94 kind:function(arm,size=0x1b4) addr:0x0203ce94 func_0203d048 kind:function(arm,size=0x48) addr:0x0203d048 func_0203d090 kind:function(arm,size=0x14) addr:0x0203d090 -func_0203d0a4 kind:function(arm,size=0xbc) addr:0x0203d0a4 +__cxa_vec_newinit kind:function(arm,size=0xbc) addr:0x0203d0a4 __cxa_vec_ctor kind:function(arm,size=0xb0) addr:0x0203d160 __cxa_vec_cleanup kind:function(arm,size=0x48) addr:0x0203d210 func_0203d258 kind:function(arm,size=0x14) addr:0x0203d258 diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index 9bd3f599..4f14121b 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -1216,10 +1216,10 @@ func_ov000_0207840c kind:function(arm,size=0x1fc) addr:0x0207840c func_ov000_02078608 kind:function(arm,size=0x58) addr:0x02078608 func_ov000_02078660 kind:function(arm,size=0xa0) addr:0x02078660 func_ov000_02078700 kind:function(arm,size=0x114) addr:0x02078700 -func_ov000_02078814 kind:function(arm,size=0x2c) addr:0x02078814 +_ZN21UnkStruct_027e09bc_24C1Ev kind:function(arm,size=0x2c) addr:0x02078814 func_ov000_02078840 kind:function(arm,size=0x14) addr:0x02078840 func_ov000_02078854 kind:function(arm,size=0x1c) addr:0x02078854 -func_ov000_02078870 kind:function(arm,size=0x10) addr:0x02078870 +_ZN18UnkStruct_027e09bc19func_ov000_020771b8Ei kind:function(arm,size=0x10) addr:0x02078870 _ZN18UnkStruct_027e09bc19func_ov000_020771c8Ev kind:function(arm,size=0x188) addr:0x02078880 func_ov000_02078a08 kind:function(arm,size=0xf4) addr:0x02078a08 func_ov000_02078afc kind:function(arm,size=0x24) addr:0x02078afc @@ -1231,7 +1231,7 @@ func_ov000_02078b78 kind:function(arm,size=0xd0) addr:0x02078b78 func_ov000_02078c48 kind:function(arm,size=0x48) addr:0x02078c48 func_ov000_02078c90 kind:function(arm,size=0x60) addr:0x02078c90 func_ov000_02078cf0 kind:function(arm,size=0x3c) addr:0x02078cf0 -func_ov000_02078d2c kind:function(arm,size=0x1bc) addr:0x02078d2c +_ZN21UnkStruct_027e09bc_0CC1Ei kind:function(arm,size=0x1bc) addr:0x02078d2c _ZN19func_ov000_02078ee8D1Ev kind:function(arm,size=0x54) addr:0x02078ee8 _ZN19func_ov000_02078f3cD0Ev kind:function(arm,size=0x5c) addr:0x02078f3c func_ov000_02078f98 kind:function(arm,size=0x34) addr:0x02078f98 @@ -1284,11 +1284,11 @@ func_ov000_0207a1e0 kind:function(arm,size=0x10) addr:0x0207a1e0 func_ov000_0207a1f0 kind:function(arm,size=0x18) addr:0x0207a1f0 func_ov000_0207a208 kind:function(arm,size=0x38) addr:0x0207a208 func_ov000_0207a240 kind:function(arm,size=0x1c) addr:0x0207a240 -func_ov000_0207a25c kind:function(arm,size=0x54) addr:0x0207a25c +_ZN21UnkStruct_027e09bc_0C19func_ov000_02078ba4Ev kind:function(arm,size=0x54) addr:0x0207a25c func_ov000_0207a2b0 kind:function(arm,size=0x30) addr:0x0207a2b0 func_ov000_0207a2e0 kind:function(arm,size=0x70) addr:0x0207a2e0 func_ov000_0207a350 kind:function(arm,size=0x54) addr:0x0207a350 -func_ov000_0207a3a4 kind:function(arm,size=0xc) addr:0x0207a3a4 +_ZN21UnkStruct_027e09bc_0C19func_ov000_02078cecEv kind:function(arm,size=0xc) addr:0x0207a3a4 func_ov000_0207a3b0 kind:function(arm,size=0x4) addr:0x0207a3b0 func_ov000_0207a3b4 kind:function(arm,size=0x34) addr:0x0207a3b4 func_ov000_0207a3e8 kind:function(arm,size=0x4) addr:0x0207a3e8 @@ -2211,7 +2211,7 @@ func_ov000_020976d0 kind:function(arm,size=0x34) addr:0x020976d0 _ZN19func_ov000_02097704D1Ev kind:function(arm,size=0x34) addr:0x02097704 _ZN19func_ov000_02097738D0Ev kind:function(arm,size=0x3c) addr:0x02097738 func_ov000_02097774 kind:function(arm,size=0x70) addr:0x02097774 -func_ov000_020977e4 kind:function(arm,size=0x124) addr:0x020977e4 +func_ov000_020977e4_jp kind:function(arm,size=0x124) addr:0x020977e4 func_ov000_02097908 kind:function(arm,size=0x6c) addr:0x02097908 func_ov000_02097974 kind:function(arm,size=0x2c) addr:0x02097974 func_ov000_020979a0 kind:function(arm,size=0x170) addr:0x020979a0 @@ -2265,7 +2265,7 @@ _ZN12ActorProfileD2Ev kind:function(arm,size=0x28) addr:0x02098ecc _ZN12ActorProfile8vfunc_04Ev kind:function(arm,size=0x8) addr:0x02098ef4 _ZN12ActorProfile8vfunc_08Ev kind:function(arm,size=0x7c) addr:0x02098efc _ZN12ActorProfile8vfunc_0CEv kind:function(arm,size=0x14) addr:0x02098f78 -func_ov000_02098f8c kind:function(arm,size=0x2c) addr:0x02098f8c +func_ov000_020977e4 kind:function(arm,size=0x2c) addr:0x02098f8c _ZN12ActorProfile8vfunc_10Ev kind:function(arm,size=0x4) addr:0x02098fb8 _ZN12ActorProfile8vfunc_14Ev kind:function(arm,size=0x4) addr:0x02098fbc _ZN12ActorProfile8vfunc_18Ev kind:function(arm,size=0x4) addr:0x02098fc0 @@ -2493,11 +2493,11 @@ func_ov000_0209db14 kind:function(arm,size=0x24) addr:0x0209db14 func_ov000_0209db38 kind:function(arm,size=0x3c) addr:0x0209db38 _ZN16MapObjectManager19func_ov000_0209c3a8Ev kind:function(arm,size=0x40) addr:0x0209db74 _ZN16MapObjectManager19func_ov000_0209c3e8Ev kind:function(arm,size=0x5c) addr:0x0209dbb4 -_ZN16MapObjectManager19func_ov000_0209c444Ev kind:function(arm,size=0x4c) addr:0x0209dc10 +_ZN16MapObjectManager19func_ov000_0209c444Ei kind:function(arm,size=0x4c) addr:0x0209dc10 _ZN16MapObjectManager19func_ov000_0209c490Ev kind:function(arm,size=0x94) addr:0x0209dc5c _ZN16MapObjectManager17AllocateMapObjectEj5Vec2btih kind:function(arm,size=0x17c) addr:0x0209dcf0 -func_ov000_0209de6c kind:function(arm,size=0xc) addr:0x0209de6c -func_ov000_0209de78 kind:function(arm,size=0xc) addr:0x0209de78 +_ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c6a0Ev kind:function(arm,size=0xc) addr:0x0209de6c +_ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c6acEv kind:function(arm,size=0xc) addr:0x0209de78 _ZN24UnkStruct_ov000_020b5d3416GetProfileFromIdEj kind:function(arm,size=0x38) addr:0x0209de84 _ZN24UnkStruct_ov000_020b5d3415CreateMapObjectEj kind:function(arm,size=0x28) addr:0x0209debc _ZN24UnkStruct_ov000_020b5d3419func_ov000_0209c718Ej kind:function(arm,size=0x78) addr:0x0209dee4 @@ -2991,23 +2991,23 @@ func_ov000_020a9ca8 kind:function(arm,size=0x7c) addr:0x020a9ca8 func_ov000_020a9d24 kind:function(arm,size=0x48) addr:0x020a9d24 func_ov000_020a9d6c kind:function(arm,size=0x50) addr:0x020a9d6c func_ov000_020a9dbc kind:function(thumb,size=0x80) addr:0x020a9dbc -_ZN11ItemManager7SetFlagEj kind:function(arm,size=0x20) addr:0x020a9e3c -_ZN11ItemManager9ClearFlagEj kind:function(arm,size=0x24) addr:0x020a9e5c -_ZN11ItemManager17HasRecruitUniformEv kind:function(arm,size=0x24) addr:0x020a9e80 -_ZN11ItemManager19func_ov000_020a86a4Ev kind:function(arm,size=0x2c) addr:0x020a9ea4 -_ZN11ItemManager13GetItemAmountEj kind:function(arm,size=0x58) addr:0x020a9ed0 -_ZN11ItemManager17GetQuiverCapacityEv kind:function(arm,size=0x20) addr:0x020a9f28 -_ZN11ItemManager18GetBombBagCapacityEv kind:function(arm,size=0x20) addr:0x020a9f48 -_ZN11ItemManager10GiveRupeesEibb kind:function(arm,size=0x60) addr:0x020a9f68 -_ZN11ItemManager13GiveSmallKeysEi kind:function(arm,size=0x24) addr:0x020a9fc8 -_ZN11ItemManager10GiveArrowsEi kind:function(arm,size=0x34) addr:0x020a9fec -_ZN11ItemManager9GiveBombsEi kind:function(arm,size=0x34) addr:0x020aa020 -_ZN11ItemManager18TryEquipForcedItemEv kind:function(arm,size=0x38) addr:0x020aa054 -_ZN11ItemManager10GivePotionEj kind:function(arm,size=0x3c) addr:0x020aa08c -_ZN11ItemManager9HasPotionEv kind:function(arm,size=0x2c) addr:0x020aa0c8 -_ZN11ItemManager15HasPurplePotionEv kind:function(arm,size=0x2c) addr:0x020aa0f4 -_ZN11ItemManager18RemovePurplePotionEv kind:function(arm,size=0x28) addr:0x020aa120 -_ZN11ItemManager15PotionSlotsFullEv kind:function(arm,size=0x2c) addr:0x020aa148 +_ZN9Inventory7SetFlagEj kind:function(arm,size=0x20) addr:0x020a9e3c +_ZN9Inventory9ClearFlagEj kind:function(arm,size=0x24) addr:0x020a9e5c +_ZN9Inventory17HasRecruitUniformEv kind:function(arm,size=0x24) addr:0x020a9e80 +_ZN9Inventory19func_ov000_020a86a4Ev kind:function(arm,size=0x2c) addr:0x020a9ea4 +_ZN9Inventory13GetItemAmountEj kind:function(arm,size=0x58) addr:0x020a9ed0 +_ZN9Inventory17GetQuiverCapacityEv kind:function(arm,size=0x20) addr:0x020a9f28 +_ZN9Inventory18GetBombBagCapacityEv kind:function(arm,size=0x20) addr:0x020a9f48 +_ZN9Inventory10GiveRupeesEibb kind:function(arm,size=0x60) addr:0x020a9f68 +_ZN9Inventory13GiveSmallKeysEi kind:function(arm,size=0x24) addr:0x020a9fc8 +_ZN9Inventory10GiveArrowsEi kind:function(arm,size=0x34) addr:0x020a9fec +_ZN9Inventory9GiveBombsEi kind:function(arm,size=0x34) addr:0x020aa020 +_ZN9Inventory18TryEquipForcedItemEv kind:function(arm,size=0x38) addr:0x020aa054 +_ZN9Inventory10GivePotionEj kind:function(arm,size=0x3c) addr:0x020aa08c +_ZN9Inventory9HasPotionEv kind:function(arm,size=0x2c) addr:0x020aa0c8 +_ZN9Inventory15HasPurplePotionEv kind:function(arm,size=0x2c) addr:0x020aa0f4 +_ZN9Inventory18RemovePurplePotionEv kind:function(arm,size=0x28) addr:0x020aa120 +_ZN9Inventory15PotionSlotsFullEv kind:function(arm,size=0x2c) addr:0x020aa148 _ZN11ItemManager19func_ov000_020a8974Ej kind:function(arm,size=0x10) addr:0x020aa174 _ZN11ItemManager19GetEquippedItemFlagEi kind:function(arm,size=0x38) addr:0x020aa184 _ZN11ItemManager19func_ov000_020a89bcEv kind:function(thumb,size=0x18) addr:0x020aa1bc @@ -3173,7 +3173,7 @@ data_ov000_020ac870 kind:data(any) addr:0x020ac870 data_ov000_020ac890 kind:data(any) addr:0x020ac890 data_ov000_020ac8bc kind:data(any) addr:0x020ac8bc data_ov000_020ac918 kind:data(any) addr:0x020ac918 -data_ov000_020ac9ac kind:data(any) addr:0x020ac9ac +data_ov000_020ab1ac kind:data(any) addr:0x020ac9ac data_ov000_020acb14 kind:data(any) addr:0x020acb14 data_ov000_020acb18 kind:data(any) addr:0x020acb18 data_ov000_020acb1c kind:data(any) addr:0x020acb1c @@ -3513,11 +3513,11 @@ _ZTV19data_ov000_020b3b98 kind:data(any) addr:0x020b3b98 data_ov000_020b3bcc kind:data(any) addr:0x020b3bcc data_ov000_020b3c50 kind:data(any) addr:0x020b3c50 data_ov000_020b3c68 kind:data(any) addr:0x020b3c68 -data_ov000_020b3c78 kind:data(any) addr:0x020b3c78 +_ZTV18UnkStruct_027e09bc kind:data(any) addr:0x020b3c70 _ZTV19data_ov000_020b3c80 kind:data(any) addr:0x020b3c80 data_ov000_020b3c9c kind:data(any) addr:0x020b3c9c data_ov000_020b3cb4 kind:data(any) addr:0x020b3cb4 -data_ov000_020b3ccc kind:data(any) addr:0x020b3ccc +_ZTV10UnkSystem9 kind:data(any) addr:0x020b3cc4 data_ov000_020b3cd8 kind:data(any) addr:0x020b3cd8 data_ov000_020b3d04 kind:data(any) addr:0x020b3d04 data_ov000_020b3d28 kind:data(any) addr:0x020b3d28 diff --git a/config/jp/arm9/overlays/ov001/delinks.txt b/config/jp/arm9/overlays/ov001/delinks.txt index d6af797a..5daa9819 100644 --- a/config/jp/arm9/overlays/ov001/delinks.txt +++ b/config/jp/arm9/overlays/ov001/delinks.txt @@ -41,26 +41,32 @@ src/001_SceneInit/ZeldaMapBinary.cpp: .text start:0x020bacf0 end:0x020bbd4c src/001_SceneInit/UnkStruct_027e095c_001.cpp: + complete .text start:0x020bbd4c end:0x020bbdc4 src/001_SceneInit/SysNew_001.cpp: + complete .text start:0x020bbdc4 end:0x020bbeac src/001_SceneInit/Save/SaveManager_001.cpp: .text start:0x020bbeac end:0x020bc1f4 src/001_SceneInit/UnkStruct_027e09bc_001.cpp: + complete .text start:0x020bc1f4 end:0x020bc47c src/001_SceneInit/MapObject/MapObjectManager_001.cpp: + complete .text start:0x020bc47c end:0x020bc7ac src/001_SceneInit/Actor/ActorManager_001.cpp: + complete .text start:0x020bc7ac end:0x020bd0c4 .rodata start:0x020c3e78 end:0x020c3ea0 .data start:0x020c437c end:0x020c44b0 src/001_SceneInit/Item/ItemManager_001.cpp: + complete .text start:0x020bd0c4 end:0x020bd30c src/001_SceneInit/Player/PlayerActorBase_70_001.cpp: diff --git a/config/jp/arm9/overlays/ov001/relocs.txt b/config/jp/arm9/overlays/ov001/relocs.txt index e89b9b2a..31839b86 100644 --- a/config/jp/arm9/overlays/ov001/relocs.txt +++ b/config/jp/arm9/overlays/ov001/relocs.txt @@ -911,14 +911,14 @@ from:0x020bc2cc kind:thumb_call_arm to:0x02011f3c module:main from:0x020bc2d6 kind:thumb_call_arm to:0x02078d2c module:overlay(0) from:0x020bc2e4 kind:thumb_call_arm to:0x02011f3c module:main from:0x020bc2ee kind:thumb_call_arm to:0x02078d2c module:overlay(0) -from:0x020bc30c kind:load to:0x020b3c78 module:overlay(0) -from:0x020bc310 kind:load to:0x020b3ccc module:overlay(0) +from:0x020bc30c kind:load to:0x020b3c70 module:overlay(0) add:0x8 +from:0x020bc310 kind:load to:0x020b3cc4 module:overlay(0) add:0x8 from:0x020bc314 kind:load to:0x027e09a4 module:dtcm from:0x020bc318 kind:load to:0x020e9dc4 module:overlay(20) from:0x020bc37e kind:thumb_call_arm to:0x0201662c module:main from:0x020bc386 kind:thumb_call_arm to:0x0201b8bc module:main from:0x020bc38c kind:thumb_call to:0x020bc470 module:overlay(1) -from:0x020bc394 kind:load to:0x020b3c78 module:overlay(0) +from:0x020bc394 kind:load to:0x020b3c70 module:overlay(0) add:0x8 from:0x020bc3f4 kind:thumb_call_arm to:0x0207a3a4 module:overlay(0) from:0x020bc3fc kind:load to:0x027e09a4 module:dtcm from:0x020bc400 kind:load to:0x027e09bc module:dtcm @@ -1137,7 +1137,7 @@ from:0x020bd28c kind:load to:0x027e09a4 module:dtcm from:0x020bd290 kind:load to:0x020453b0 module:main from:0x020bd294 kind:load to:0x027e09a0 module:dtcm from:0x020bd298 kind:load to:0x020b7ab8 module:overlay(0) -from:0x020bd2aa kind:thumb_call_arm to:0x0217bde0 module:overlays(95,96) +from:0x020bd2aa kind:thumb_call_arm to:0x0217bde0 module:overlay(96) from:0x020bd2b0 kind:load to:0x020453b0 module:main from:0x020bd2ca kind:thumb_call_arm to:0x01fff350 module:itcm from:0x020bd2e4 kind:thumb_call_arm to:0x02099c98 module:overlay(0) @@ -2332,7 +2332,6 @@ from:0x020c2a78 kind:load to:0x020c47a0 module:overlay(1) from:0x020c2b8c kind:load to:0x020c4818 module:overlay(1) from:0x020c2de4 kind:load to:0x020c5f41 module:overlay(1) from:0x020c2e5c kind:load to:0x020c5f41 module:overlay(1) -from:0x020c2e68 kind:load to:0x020c3e78 add:0x4 module:overlay(1) from:0x020c2ed4 kind:load to:0x020c5f41 module:overlay(1) from:0x020c2ee0 kind:load to:0x020c3f90 module:overlay(1) from:0x020c2f4c kind:load to:0x020c5f41 module:overlay(1) diff --git a/config/jp/arm9/overlays/ov001/symbols.txt b/config/jp/arm9/overlays/ov001/symbols.txt index cb4aca9e..72559b6d 100644 --- a/config/jp/arm9/overlays/ov001/symbols.txt +++ b/config/jp/arm9/overlays/ov001/symbols.txt @@ -133,33 +133,33 @@ func_ov001_020ba4a4 kind:function(thumb,size=0x28) addr:0x020bbce4 _ZNSt13__vec_deleterIP38UnkStruct_027e0cd8_0C_Base_148_00_BaseSaIS1_EED1Ev kind:function(thumb,size=0x1c) addr:0x020bbd0c func_ov001_020ba4e8 kind:function(thumb,size=0x24) addr:0x020bbd28 _ZN18UnkStruct_027e095c6CreateEv kind:function(thumb,size=0x1c) addr:0x020bbd4c -func_ov001_020ba528 kind:function(thumb,size=0x50) addr:0x020bbd68 -func_ov001_020ba57c kind:function(thumb,size=0xc) addr:0x020bbdb8 -func_ov001_020ba588 kind:function(thumb,size=0x12) addr:0x020bbdc4 -func_ov001_020ba59c kind:function(thumb,size=0x10) addr:0x020bbdd8 -func_ov001_020ba5ac kind:function(thumb,size=0x12) addr:0x020bbde8 -func_ov001_020ba5c0 kind:function(thumb,size=0x10) addr:0x020bbdfc -func_ov001_020ba5d0 kind:function(thumb,size=0x38) addr:0x020bbe0c -func_ov001_020ba608 kind:function(thumb,size=0x18) addr:0x020bbe44 -func_ov001_020ba620 kind:function(thumb,size=0x20) addr:0x020bbe5c -func_ov001_020ba640 kind:function(thumb,size=0x16) addr:0x020bbe7c -func_ov001_020ba658 kind:function(thumb,size=0x18) addr:0x020bbe94 +_ZN18UnkStruct_027e095cC1Ev kind:function(thumb,size=0x50) addr:0x020bbd68 +_ZN8InstanceI18UnkStruct_027e095cEC2Ev kind:function(thumb,size=0xc) addr:0x020bbdb8 +_ZN18UnkStruct_02011e1019func_ov001_020ba588Eii kind:function(thumb,size=0x12) addr:0x020bbdc4 +_ZN18UnkStruct_02011e1019func_ov001_020ba59cEv kind:function(thumb,size=0x10) addr:0x020bbdd8 +_ZN18UnkStruct_02011e1019func_ov001_020ba5acEii kind:function(thumb,size=0x12) addr:0x020bbde8 +_ZN18UnkStruct_02011e1019func_ov001_020ba5c0Ev kind:function(thumb,size=0x10) addr:0x020bbdfc +_ZN18UnkStruct_02011e1019func_ov001_020ba5d0Ev kind:function(thumb,size=0x38) addr:0x020bbe0c +_ZN18UnkStruct_02011e1019func_ov001_020ba608Ev kind:function(thumb,size=0x18) addr:0x020bbe44 +_ZN18UnkStruct_02011e1019func_ov001_020ba620Ev kind:function(thumb,size=0x20) addr:0x020bbe5c +_ZN18UnkStruct_02011e1019func_ov001_020ba640Ev kind:function(thumb,size=0x16) addr:0x020bbe7c +_ZN18UnkStruct_02011e1019func_ov001_020ba658Ev kind:function(thumb,size=0x18) addr:0x020bbe94 _ZN11SaveManager19func_ov001_020ba670Ev kind:function(thumb,size=0x138) addr:0x020bbeac _ZN11SaveManager19func_ov001_020ba7a8Ev kind:function(thumb,size=0x20) addr:0x020bbfe4 _ZN11SaveManager19func_ov001_020ba7c8Et kind:function(thumb,size=0x90) addr:0x020bc004 -func_ov001_020ba858 kind:function(thumb,size=0x15c) addr:0x020bc094 -func_ov001_020ba9b4 kind:function(thumb,size=0x2) addr:0x020bc1f0 +_ZN11SaveManager19func_ov001_020ba858Ev kind:function(thumb,size=0x15c) addr:0x020bc094 +_ZN15SaveManager_244C1Ev kind:function(thumb,size=0x2) addr:0x020bc1f0 _ZN18UnkStruct_027e09bc6CreateEv kind:function(thumb,size=0x16) addr:0x020bc1f4 -func_ov001_020ba9d0 kind:function(thumb,size=0x110) addr:0x020bc20c +_ZN18UnkStruct_027e09bcC1Ev kind:function(thumb,size=0x110) addr:0x020bc20c _ZN18UnkStruct_027e09bcD1Ev kind:function(thumb,size=0x7c) addr:0x020bc31c _ZN18UnkStruct_027e09bc19func_ov001_020bab5cEv kind:function(thumb,size=0x6c) addr:0x020bc398 _ZN18UnkStruct_027e09bc19func_ov001_020babc8Ev kind:function(thumb,size=0x20) addr:0x020bc404 _ZN18UnkStruct_027e09bc19func_ov001_020babe8Ev kind:function(thumb,size=0x20) addr:0x020bc424 _ZN18UnkStruct_027e09bc19func_ov001_020bac08Ev kind:function(thumb,size=0x20) addr:0x020bc444 -func_ov001_020bac28 kind:function(thumb,size=0xc) addr:0x020bc464 -func_ov001_020bac34 kind:function(thumb,size=0xc) addr:0x020bc470 +_ZN8InstanceI18UnkStruct_027e09bcEC2Ev kind:function(thumb,size=0xc) addr:0x020bc464 +_ZN8InstanceI18UnkStruct_027e09bcED2Ev kind:function(thumb,size=0xc) addr:0x020bc470 _ZN16MapObjectManager6CreateEv kind:function(thumb,size=0x16) addr:0x020bc47c -func_ov001_020bac58 kind:function(thumb,size=0x1e) addr:0x020bc494 +_ZN16MapObjectManagerC1Ev kind:function(thumb,size=0x1e) addr:0x020bc494 _ZN16MapObjectManagerD1Ev kind:function(thumb,size=0x22) addr:0x020bc4b4 _ZN16MapObjectManager19func_ov001_020bac9cEv kind:function(thumb,size=0x3c) addr:0x020bc4d8 _ZN16MapObjectManager19func_ov001_020bacd8EP9ZOBHeader kind:function(thumb,size=0xa8) addr:0x020bc514 @@ -169,10 +169,10 @@ _ZN16MapObjectManager19func_ov001_020badb4Ev kind:function(thumb,size=0x2c) addr _ZN16MapObjectManager19func_ov001_020bade0Ev kind:function(thumb,size=0x60) addr:0x020bc628 _ZN16MapObjectManager19func_ov001_020bae40EP15ZeldaObjectList kind:function(thumb,size=0x2c) addr:0x020bc688 _ZN16MapObjectManager19func_ov001_020bae6cEv kind:function(thumb,size=0x34) addr:0x020bc6b4 -_ZN16MapObjectManager19func_ov001_020baea0EP5Vec2s kind:function(thumb,size=0x88) addr:0x020bc6e8 +_ZN16MapObjectManager19func_ov001_020baea0EPt kind:function(thumb,size=0x88) addr:0x020bc6e8 _ZN16MapObjectManager19func_ov001_020baf28Ev kind:function(thumb,size=0x22) addr:0x020bc770 -func_ov001_020baf4c kind:function(thumb,size=0xc) addr:0x020bc794 -func_ov001_020baf58 kind:function(thumb,size=0xc) addr:0x020bc7a0 +_ZN8InstanceI16MapObjectManagerEC2Ev kind:function(thumb,size=0xc) addr:0x020bc794 +_ZN8InstanceI16MapObjectManagerED2Ev kind:function(thumb,size=0xc) addr:0x020bc7a0 _ZN12ActorManager6CreateEv kind:function(thumb,size=0x16) addr:0x020bc7ac _ZN12ActorManagerC1Ev kind:function(thumb,size=0x46) addr:0x020bc7c4 _ZN12ActorManagerD1Ev kind:function(thumb,size=0x18) addr:0x020bc80c @@ -190,12 +190,12 @@ _ZN12ActorManager19func_ov001_020bb824Ev kind:function(thumb,size=0x20) addr:0x0 _ZN12ActorManager19func_ov001_020bb844Ev kind:function(thumb,size=0x20) addr:0x020bd08c _ZN8InstanceI12ActorManagerEC2Ev kind:function(thumb,size=0xc) addr:0x020bd0ac _ZN8InstanceI12ActorManagerED2Ev kind:function(thumb,size=0xc) addr:0x020bd0b8 -func_ov001_020bb87c kind:function(thumb,size=0x3c) addr:0x020bd0c4 -func_ov001_020bb8b8 kind:function(thumb,size=0x2) addr:0x020bd100 -func_ov001_020bb8bc kind:function(thumb,size=0x13c) addr:0x020bd104 -_ZN11ItemManager19func_ov001_020bb9f8Ev kind:function(thumb,size=0x5c) addr:0x020bd240 -func_ov001_020bba54 kind:function(thumb,size=0x18) addr:0x020bd29c -func_ov001_020bba6c kind:function(thumb,size=0x58) addr:0x020bd2b4 +_ZN9InventoryC1Ev kind:function(thumb,size=0x3c) addr:0x020bd0c4 +_ZN9InventoryD1Ev kind:function(thumb,size=0x2) addr:0x020bd100 +_ZN9Inventory19func_ov001_020bb8bcEPK13InvImportData kind:function(thumb,size=0x13c) addr:0x020bd104 +_ZN9Inventory19func_ov001_020bb9f8Ev kind:function(thumb,size=0x5c) addr:0x020bd240 +_ZN9Inventory19func_ov001_020bba54Ev kind:function(thumb,size=0x18) addr:0x020bd29c +_ZN9Inventory19func_ov001_020bba6cEv kind:function(thumb,size=0x58) addr:0x020bd2b4 func_ov001_020bbac4 kind:function(thumb,size=0x5c) addr:0x020bd30c _ZN18PlayerActorBase_70C1Ev kind:function(thumb,size=0x260) addr:0x020bd368 func_ov001_020bbd80 kind:function(thumb,size=0x96) addr:0x020bd5c8 @@ -212,7 +212,7 @@ func_ov001_020bbfcc kind:function(thumb,size=0x5a) addr:0x020bd814 _ZN26UnkStruct_027e0ce0_40_BaseC2Ev kind:function(thumb,size=0x88) addr:0x020bd870 func_ov001_020bc0b0 kind:function(thumb,size=0x30) addr:0x020bd8f8 func_ov001_020bc0e0 kind:function(thumb,size=0x154) addr:0x020bd928 -func_ov001_020bc234 kind:function(thumb,size=0x16) addr:0x020bda7c +_ZN11ItemManagerC1Ev kind:function(thumb,size=0x16) addr:0x020bda7c func_ov001_020bc24c kind:function(thumb,size=0x30) addr:0x020bda94 func_ov001_020bc27c kind:function(thumb,size=0x1e) addr:0x020bdac4 func_ov001_020bc29c kind:function(thumb,size=0x1a) addr:0x020bdae4 @@ -494,10 +494,9 @@ NitroStaticInit kind:function(arm,size=0x50,unknown) addr:0x020c3dc4 local data_ov001_020c25c0 kind:data(any) addr:0x020c3e14 data_ov001_020c25d4 kind:data(any) addr:0x020c3e28 data_ov001_020c25fc kind:data(any) addr:0x020c3e50 -data_ov001_020c3e78 kind:data(any) addr:0x020c3e78 -data_ov001_020c3e7c kind:data(any) addr:0x020c3e7c -data_ov001_020c3e82 kind:data(any) addr:0x020c3e82 -data_ov001_020c3e8c kind:data(any) addr:0x020c3e8c +data_ov001_020c2624 kind:data(any) addr:0x020c3e78 local +data_ov001_020c262e kind:data(any) addr:0x020c3e82 local +data_ov001_020c2638 kind:data(any) addr:0x020c3e8c local data_ov001_020c3ea0 kind:data(any) addr:0x020c3ea0 data_ov001_020c3f10 kind:data(any) addr:0x020c3f10 data_ov001_020c3f90 kind:data(any) addr:0x020c3f90 @@ -536,39 +535,39 @@ data_ov001_020c2a40 kind:data(any) addr:0x020c4280 @3288 kind:data(byte[28]) addr:0x020c4330 local @3292 kind:data(byte[23]) addr:0x020c434c local @3293 kind:data(byte[21]) addr:0x020c4364 local -data_ov001_020c437c kind:data(any) addr:0x020c437c -data_ov001_020c4388 kind:data(any) addr:0x020c4388 -data_ov001_020c4398 kind:data(any) addr:0x020c4398 -data_ov001_020c43a4 kind:data(any) addr:0x020c43a4 -data_ov001_020c43ac kind:data(any) addr:0x020c43ac -data_ov001_020c43b4 kind:data(any) addr:0x020c43b4 -data_ov001_020c43bc kind:data(any) addr:0x020c43bc -data_ov001_020c43c4 kind:data(any) addr:0x020c43c4 -data_ov001_020c43cc kind:data(any) addr:0x020c43cc -data_ov001_020c43d4 kind:data(any) addr:0x020c43d4 -data_ov001_020c43dc kind:data(any) addr:0x020c43dc -data_ov001_020c43e4 kind:data(any) addr:0x020c43e4 -data_ov001_020c43ec kind:data(any) addr:0x020c43ec -data_ov001_020c43f4 kind:data(any) addr:0x020c43f4 -data_ov001_020c43fc kind:data(any) addr:0x020c43fc -data_ov001_020c4404 kind:data(any) addr:0x020c4404 -data_ov001_020c440c kind:data(any) addr:0x020c440c -data_ov001_020c4414 kind:data(any) addr:0x020c4414 -data_ov001_020c441c kind:data(any) addr:0x020c441c -data_ov001_020c4424 kind:data(any) addr:0x020c4424 -data_ov001_020c442c kind:data(any) addr:0x020c442c -data_ov001_020c4434 kind:data(any) addr:0x020c4434 -data_ov001_020c443c kind:data(any) addr:0x020c443c -data_ov001_020c4444 kind:data(any) addr:0x020c4444 -data_ov001_020c4450 kind:data(any) addr:0x020c4450 -data_ov001_020c4458 kind:data(any) addr:0x020c4458 -data_ov001_020c446c kind:data(any) addr:0x020c446c -data_ov001_020c4474 kind:data(any) addr:0x020c4474 -data_ov001_020c4478 kind:data(any) addr:0x020c4478 -data_ov001_020c4484 kind:data(any) addr:0x020c4484 -data_ov001_020c4490 kind:data(any) addr:0x020c4490 -data_ov001_020c449c kind:data(any) addr:0x020c449c -data_ov001_020c44a8 kind:data(any) addr:0x020c44a8 +@5615 kind:data(byte[0x0C]) addr:0x020c437c local +@5616 kind:data(byte[0x0D]) addr:0x020c4388 local +@5617 kind:data(byte[0x0C]) addr:0x020c4398 local +@5618 kind:data(byte[0x05]) addr:0x020c43a4 local +@5619 kind:data(byte[0x06]) addr:0x020c43ac local +@5620 kind:data(byte[0x06]) addr:0x020c43b4 local +@5621 kind:data(byte[0x06]) addr:0x020c43bc local +@5622 kind:data(byte[0x06]) addr:0x020c43c4 local +@5623 kind:data(byte[0x06]) addr:0x020c43cc local +@5624 kind:data(byte[0x06]) addr:0x020c43d4 local +@5625 kind:data(byte[0x05]) addr:0x020c43dc local +@5626 kind:data(byte[0x05]) addr:0x020c43e4 local +@5627 kind:data(byte[0x06]) addr:0x020c43ec local +@5628 kind:data(byte[0x06]) addr:0x020c43f4 local +@5629 kind:data(byte[0x06]) addr:0x020c43fc local +@5630 kind:data(byte[0x06]) addr:0x020c4404 local +@5631 kind:data(byte[0x06]) addr:0x020c440c local +@5632 kind:data(byte[0x06]) addr:0x020c4414 local +@5633 kind:data(byte[0x06]) addr:0x020c441c local +@5634 kind:data(byte[0x06]) addr:0x020c4424 local +@5635 kind:data(byte[0x07]) addr:0x020c442c local +@5636 kind:data(byte[0x07]) addr:0x020c4434 local +@5637 kind:data(byte[0x07]) addr:0x020c443c local +@5638 kind:data(byte[0x0B]) addr:0x020c4444 local +@5639 kind:data(byte[0x07]) addr:0x020c4450 local +@5640 kind:data(byte[0x11]) addr:0x020c4458 local +@5641 kind:data(byte[0x07]) addr:0x020c446c local +@5642 kind:data(byte[0x04]) addr:0x020c4474 local +@5643 kind:data(byte[0x09]) addr:0x020c4478 local +@5644 kind:data(byte[0x0C]) addr:0x020c4484 local +@5645 kind:data(byte[0x09]) addr:0x020c4490 local +@5646 kind:data(byte[0x0C]) addr:0x020c449c local +@5647 kind:data(byte[0x06]) addr:0x020c44a8 local data_ov001_020c44b0 kind:data(any) addr:0x020c44b0 data_ov001_020c44b8 kind:data(any) addr:0x020c44b8 data_ov001_020c44c0 kind:data(any) addr:0x020c44c0 diff --git a/config/jp/arm9/overlays/ov020/symbols.txt b/config/jp/arm9/overlays/ov020/symbols.txt index 39a589f2..2f6cee77 100644 --- a/config/jp/arm9/overlays/ov020/symbols.txt +++ b/config/jp/arm9/overlays/ov020/symbols.txt @@ -883,7 +883,7 @@ data_ov020_020e9cc8 kind:bss addr:0x020e9cc8 ambiguous data_ov020_020e9d58 kind:bss addr:0x020e9d58 ambiguous data_ov020_020e9d74 kind:bss addr:0x020e9d74 ambiguous data_ov020_020e9dc0 kind:bss addr:0x020e9dc0 -data_ov020_020e9dc4 kind:bss addr:0x020e9dc4 +data_ov020_020e8544 kind:bss addr:0x020e9dc4 data_ov020_020e9dc8 kind:bss addr:0x020e9dc8 ambiguous data_ov020_020e9dd0 kind:bss addr:0x020e9dd0 data_ov020_020e9ddc kind:bss addr:0x020e9ddc diff --git a/config/jp/arm9/overlays/ov021/symbols.txt b/config/jp/arm9/overlays/ov021/symbols.txt index 10a864aa..81e47787 100644 --- a/config/jp/arm9/overlays/ov021/symbols.txt +++ b/config/jp/arm9/overlays/ov021/symbols.txt @@ -441,7 +441,7 @@ func_ov021_020fa0d8 kind:function(arm,size=0x3c) addr:0x020fa0d8 func_ov021_020fa114 kind:function(arm,size=0x20) addr:0x020fa114 func_ov021_020fa134 kind:function(arm,size=0x18) addr:0x020fa134 func_ov021_020fa14c kind:function(arm,size=0x64) addr:0x020fa14c -func_ov021_020fa1b0 kind:function(arm,size=0x28) addr:0x020fa1b0 +func_ov021_020f8818 kind:function(arm,size=0x28) addr:0x020fa1b0 func_ov021_020fa1d8 kind:function(arm,size=0x458) addr:0x020fa1d8 _ZN18UnkStruct_027e0cf4D1Ev kind:function(arm,size=0x44) addr:0x020fa630 _ZN18UnkStruct_027e0cf419func_ov021_020f8cdcEv kind:function(arm,size=0x44) addr:0x020fa674 diff --git a/config/jp/arm9/overlays/ov026/symbols.txt b/config/jp/arm9/overlays/ov026/symbols.txt index f973bfb8..1fd7b7c1 100644 --- a/config/jp/arm9/overlays/ov026/symbols.txt +++ b/config/jp/arm9/overlays/ov026/symbols.txt @@ -1426,7 +1426,7 @@ func_ov026_0210ee50 kind:function(arm,size=0x488) addr:0x0210ee50 func_ov026_0210f2d8 kind:function(arm,size=0x150) addr:0x0210f2d8 func_ov026_0210f428 kind:function(arm,size=0x30) addr:0x0210f428 func_ov026_0210f458 kind:function(arm,size=0x468) addr:0x0210f458 -func_ov026_0210f8c0 kind:function(arm,size=0x3b8) addr:0x0210f8c0 +func_ov026_0210d664 kind:function(arm,size=0x3b8) addr:0x0210f8c0 func_ov026_0210fc78 kind:function(arm,size=0x690) addr:0x0210fc78 func_ov026_02110308 kind:function(arm,size=0x80) addr:0x02110308 func_ov026_02110388 kind:function(arm,size=0x3c) addr:0x02110388 diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index dc9906e2..f87cec07 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -615,7 +615,7 @@ _ZN19ActorProfileUnkZLSLC1Ev kind:function(thumb,size=0x3c) addr:0x020eba64 func_ov031_020ebaa0 kind:function(thumb,size=0x30) addr:0x020ebaa0 func_ov031_020ebad0 kind:function(thumb,size=0x14) addr:0x020ebad0 func_ov031_020ebae4 kind:function(thumb,size=0x8) addr:0x020ebae4 -func_ov031_020ebaec kind:function(thumb,size=0x40) addr:0x020ebaec +func_ov031_020ea100 kind:function(thumb,size=0x40) addr:0x020ebaec func_ov031_020ebb2c kind:function(thumb,size=0x3b4) addr:0x020ebb2c func_ov031_020ebee0 kind:function(thumb,size=0xc) addr:0x020ebee0 func_ov031_020ebeec kind:function(thumb,size=0xc) addr:0x020ebeec diff --git a/config/jp/arm9/overlays/ov060/symbols.txt b/config/jp/arm9/overlays/ov060/symbols.txt index d190633a..40fd58cd 100644 --- a/config/jp/arm9/overlays/ov060/symbols.txt +++ b/config/jp/arm9/overlays/ov060/symbols.txt @@ -249,7 +249,7 @@ _ZN19ActorProfileUnkCASL10GetProfileEv kind:function(arm,size=0xc) addr:0x021606 _ZN19ActorProfileUnkCASL6CreateEv kind:function(arm,size=0x24) addr:0x021606c0 _ZN19ActorProfileUnkCASLC1Ev kind:function(arm,size=0x28) addr:0x021606e4 _ZN12ActorUnkCASLC1Ev kind:function(arm,size=0xc4) addr:0x0216070c -_ZN18UnkStruct_027e0d70D1Ev kind:function(arm,size=0x6c) addr:0x021607d0 +_ZN12ActorUnkCASL19func_ov060_021607d0Ev kind:function(arm,size=0x6c) addr:0x021607d0 _ZN12ActorUnkCASL19func_ov060_0215eafcEv kind:function(arm,size=0x14) addr:0x0216083c _ZN12ActorUnkCASL19func_ov060_0215eb10Ev kind:function(arm,size=0x14) addr:0x02160850 _ZN12ActorUnkCASL19func_ov060_0215eb24Ev kind:function(arm,size=0x20) addr:0x02160864 diff --git a/config/jp/arm9/overlays/ov071/symbols.txt b/config/jp/arm9/overlays/ov071/symbols.txt index 9a62af83..e5c67cfa 100644 --- a/config/jp/arm9/overlays/ov071/symbols.txt +++ b/config/jp/arm9/overlays/ov071/symbols.txt @@ -263,12 +263,12 @@ func_ov071_02160994 kind:function(arm,size=0x4) addr:0x02160994 func_ov071_02160998 kind:function(arm,size=0x44) addr:0x02160998 func_ov071_021609dc kind:function(arm,size=0xc) addr:0x021609dc func_ov071_021609e8 kind:function(arm,size=0xd8) addr:0x021609e8 -func_ov071_02160ac0 kind:function(arm,size=0x24) addr:0x02160ac0 +func_ov071_0215e8d4 kind:function(arm,size=0x24) addr:0x02160ac0 _ZN18UnkStruct_027e0d7019func_ov071_0215e8f8Ev kind:function(arm,size=0x70) addr:0x02160ae4 func_ov071_02160b54 kind:function(arm,size=0x44) addr:0x02160b54 _ZN18UnkStruct_027e0d7019func_ov071_0215e9acEv kind:function(arm,size=0x68) addr:0x02160b98 func_ov071_02160c00 kind:function(arm,size=0x7c) addr:0x02160c00 -func_ov071_02160c7c kind:function(arm,size=0x38) addr:0x02160c7c +_ZN18UnkStruct_027e0d70D1Ev kind:function(arm,size=0x38) addr:0x02160c7c _ZN18UnkStruct_027e0d7019func_ov071_0215eac8Ev kind:function(arm,size=0x50) addr:0x02160cb4 func_ov071_02160d04 kind:function(arm,size=0xc) addr:0x02160d04 func_ov071_02160d10 kind:function(arm,size=0x27c) addr:0x02160d10 diff --git a/config/jp/arm9/overlays/ov096/symbols.txt b/config/jp/arm9/overlays/ov096/symbols.txt index 10483c34..1b4fc1d2 100644 --- a/config/jp/arm9/overlays/ov096/symbols.txt +++ b/config/jp/arm9/overlays/ov096/symbols.txt @@ -1,4 +1,4 @@ -func_ov096_0217bde0 kind:function(arm,size=0x9c) addr:0x0217bde0 +_ZN9Inventory19func_ov096_02179b20Ev kind:function(arm,size=0x9c) addr:0x0217bde0 func_ov096_0217be7c kind:function(thumb,size=0x20) addr:0x0217be7c func_ov096_0217be9c kind:function(thumb,size=0x20) addr:0x0217be9c func_ov096_0217bebc kind:function(thumb,size=0xc) addr:0x0217bebc diff --git a/config/jp/arm9/overlays/ov110/symbols.txt b/config/jp/arm9/overlays/ov110/symbols.txt index 98152091..2aebd470 100644 --- a/config/jp/arm9/overlays/ov110/symbols.txt +++ b/config/jp/arm9/overlays/ov110/symbols.txt @@ -1,4 +1,4 @@ -_ZN11ItemManager19func_ov110_02184a40Ei kind:function(arm,size=0x36c) addr:0x021865c0 +_ZN9Inventory19func_ov110_02184a40Ei kind:function(arm,size=0x36c) addr:0x021865c0 _ZN22UnkStruct_PlayerGet_748vfunc_00Eiii kind:function(arm,size=0x30) addr:0x0218692c _ZN9PlayerGetC2Ev kind:function(arm,size=0xa0) addr:0x0218695c _ZN9PlayerGetD1Ev kind:function(arm,size=0xc4) addr:0x021869fc diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index 6a1391df..0a310e28 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -642,7 +642,7 @@ _ZN18UnkStruct_02011e1013func_020130d4Ei kind:function(arm,size=0x1c) addr:0x020 func_020130f0 kind:function(arm,size=0x28) addr:0x020130f0 func_02013118 kind:function(arm,size=0x30) addr:0x02013118 func_02013148 kind:function(arm,size=0x1c) addr:0x02013148 -func_02013164 kind:function(arm,size=0x20) addr:0x02013164 +_ZN18UnkStruct_02011e10D1Ev kind:function(arm,size=0x20) addr:0x02013164 func_02013184 kind:function(arm,size=0x2c) addr:0x02013184 func_020131b0 kind:function(arm,size=0x3c) addr:0x020131b0 func_020131ec kind:function(arm,size=0x28) addr:0x020131ec @@ -682,7 +682,7 @@ func_02013e48 kind:function(arm,size=0x3c) addr:0x02013e48 func_02013e84 kind:function(arm,size=0x4c) addr:0x02013e84 _ZN18UnkStruct_02049b8013func_02013eccEiPFvtEi kind:function(arm,size=0x1c) addr:0x02013ed0 _ZN18UnkStruct_02049b8013func_02013ee8Eii kind:function(arm,size=0x98) addr:0x02013eec -func_02013f84 kind:function(arm,size=0x6c) addr:0x02013f84 +_ZN18UnkStruct_02049b8013func_02013f80Ei kind:function(arm,size=0x6c) addr:0x02013f84 func_02013ff0 kind:function(arm,size=0xc) addr:0x02013ff0 func_02013ffc kind:function(arm,size=0x12c) addr:0x02013ffc _ZN12TouchControl11UpdateStateEP10TouchStatePK6TPData kind:function(arm,size=0xb8) addr:0x02014128 @@ -696,8 +696,8 @@ _ZN12TouchControl13func_02014414Etb kind:function(arm,size=0x64) addr:0x02014418 _ZN12TouchControl13func_02014478EP10TouchStatet kind:function(arm,size=0x28) addr:0x0201447c func_020144a4 kind:function(thumb,size=0x10) addr:0x020144a4 func_020144b4 kind:function(thumb,size=0x1c) addr:0x020144b4 -func_020144d0 kind:function(thumb,size=0x6c) addr:0x020144d0 -func_0201453c kind:function(thumb,size=0x34) addr:0x0201453c +_ZN21UnkStruct_02011e10_2C13func_020144ccEiii kind:function(thumb,size=0x6c) addr:0x020144d0 +_ZN21UnkStruct_02011e10_2C13func_02014538Ev kind:function(thumb,size=0x34) addr:0x0201453c func_02014570 kind:function(arm,size=0x44) addr:0x02014570 func_020145b4 kind:function(arm,size=0x80) addr:0x020145b4 func_02014634 kind:function(arm,size=0x58) addr:0x02014634 @@ -1365,8 +1365,8 @@ GX_DisableBankForLCDC kind:function(arm,size=0x14) addr:0x0202591c func_02025930 kind:function(arm,size=0x10) addr:0x02025930 func_02025940 kind:function(arm,size=0x54) addr:0x02025940 func_02025994 kind:function(arm,size=0x18) addr:0x02025994 -func_020259ac kind:function(arm,size=0x18) addr:0x020259ac -func_020259c4 kind:function(arm,size=0x18) addr:0x020259c4 +func_0202447c kind:function(arm,size=0x18) addr:0x020259ac +func_02024494 kind:function(arm,size=0x18) addr:0x020259c4 func_020259dc kind:function(arm,size=0x18) addr:0x020259dc G2_func_0001 kind:function(arm,size=0x34) addr:0x020259f4 G2S_func_0001 kind:function(arm,size=0x20) addr:0x02025a28 @@ -2137,7 +2137,7 @@ __register_global_object kind:function(arm,size=0x20) addr:0x0203e3a4 func_0203e3c4 kind:function(arm,size=0x1b4) addr:0x0203e3c4 func_0203e578 kind:function(arm,size=0x48) addr:0x0203e578 func_0203e5c0 kind:function(arm,size=0x14) addr:0x0203e5c0 -func_0203e5d4 kind:function(arm,size=0xbc) addr:0x0203e5d4 +__cxa_vec_newinit kind:function(arm,size=0xbc) addr:0x0203e5d4 __cxa_vec_ctor kind:function(arm,size=0xb0) addr:0x0203e690 __cxa_vec_cleanup kind:function(arm,size=0x48) addr:0x0203e740 func_0203e788 kind:function(arm,size=0x14) addr:0x0203e788 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 4af7e49c..f407bb9c 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -156,9 +156,9 @@ public: /* 0C */ virtual unk8 vfunc_0C(); /* 10 */ virtual void vfunc_10(VecFx32 *param1); /* 14 */ virtual void vfunc_14(); - /* 18 */ virtual bool vfunc_18(unk32 param1); - /* 1C */ virtual void vfunc_1C(); - /* 20 */ virtual void vfunc_20(); + /* 18 */ virtual bool vfunc_18(unk32 param1); // Init? + /* 1C */ virtual void vfunc_1C(); // Setup + /* 20 */ virtual void vfunc_20(); // Update? /* 24 */ virtual void vfunc_24(); /* 28 */ virtual void vfunc_28(); /* 2C */ virtual void vfunc_2C(unk32 param1); diff --git a/include/Actor/ActorUnkPMST.hpp b/include/Actor/ActorUnkPMST.hpp index 428fe233..55293c79 100644 --- a/include/Actor/ActorUnkPMST.hpp +++ b/include/Actor/ActorUnkPMST.hpp @@ -26,7 +26,6 @@ public: /* 4C */ virtual ~ActorUnkPMST() override; - void func_ov077_02159db4(void); void func_ov077_02159ddc(void); void func_ov077_02159e14(void); void func_ov077_02159e40(void); @@ -47,6 +46,8 @@ public: void func_ov077_0215aa20(void); void func_ov077_0215aa44(void); void func_ov077_0215aa88(void); + + static void func_ov077_02159db4(void); }; class ActorProfileUnkPMST : public ActorProfile_Derived1 { diff --git a/include/Actor/ActorUnkPMTT.hpp b/include/Actor/ActorUnkPMTT.hpp index bc47439b..05faaf85 100644 --- a/include/Actor/ActorUnkPMTT.hpp +++ b/include/Actor/ActorUnkPMTT.hpp @@ -26,7 +26,6 @@ public: /* 4C */ virtual ~ActorUnkPMTT() override; - void func_ov042_0212d8a4(void); void func_ov042_0212d8cc(void); void func_ov042_0212d904(void); void func_ov042_0212d930(void); @@ -44,6 +43,8 @@ public: void func_ov042_0212e4d8(void); void func_ov042_0212e4f8(void); void func_ov042_0212e53c(void); + + static void func_ov042_0212d8a4(void); }; class ActorProfileUnkPMTT : public ActorProfile { diff --git a/include/Course/Course.hpp b/include/Course/Course.hpp index 72f7b1a8..17ddc27b 100644 --- a/include/Course/Course.hpp +++ b/include/Course/Course.hpp @@ -94,8 +94,8 @@ enum SceneIndex_ { /* 75 */ SceneIndex_tekiya05 = 0x4B, // take em all on? /* 76 */ SceneIndex_tekiya06 = 0x4C, // take em all on? /* 77 */ SceneIndex_tekiya07 = 0x4D, // take em all on? - /* 78 */ SceneIndex_tekiya08 = 0x4E, // take em all on? - /* 79 */ SceneIndex_tekiya09 = 0x4F, // take em all on? + /* 78 */ SceneIndex_tekiya08 = 0x4E, // take em all on - fire boss + /* 79 */ SceneIndex_tekiya09 = 0x4F, // take em all on - sand boss /* 80 */ SceneIndex_demo_train = 0x50, // title screen? /* 81 */ SceneIndex_e3_train = 0x51, // ? /* 82 */ SceneIndex_e3_dungeon = 0x52, // ? diff --git a/include/Game/Game.hpp b/include/Game/Game.hpp index 6cfaadbd..f8f6ca37 100644 --- a/include/Game/Game.hpp +++ b/include/Game/Game.hpp @@ -33,7 +33,7 @@ public: /* 04 */ GameModeCreateCallback createCallback; /* 08 */ GameUnkCallback1 mUnk_08; // seems related to entering and leaving houses/grottos?? /* 0C */ unk32 mFrameCounter; - /* 10 */ SaveSlot *mpSaveSlot; + /* 10 */ GameSaveSlot *mpSaveSlot; /* 14 */ GameUnkCallback2 mUnk_14; // only set for wireless stuff? /* 18 */ GameUnkCallback3 mUnk_18; // same as above /* 1C */ UnkStruct_02049a2c_1C mUnk_1C; diff --git a/include/Item/Item.hpp b/include/Item/Item.hpp index d825d1ea..c58c753a 100644 --- a/include/Item/Item.hpp +++ b/include/Item/Item.hpp @@ -5,6 +5,7 @@ #define MAX_KEYS 8 #define MAX_TEARS_OF_LIGHT 3 +#define MAX_RUPEES 9999 #define CAPACITY_QUIVER_TIER_1 20 #define CAPACITY_QUIVER_TIER_2 30 diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp index 0524057d..f6b23490 100644 --- a/include/Item/ItemManager.hpp +++ b/include/Item/ItemManager.hpp @@ -54,8 +54,23 @@ public: bool func_ov031_020db8f8(); }; -class ItemManager { -public: +struct InvImportData { + /* 00 */ u32 quiverCapacity : 2; + /* */ u32 bombBagCapacity : 2; + /* */ u32 arrowAmount : 6; + /* */ u32 bombsAmount : 6; + /* */ u32 pad : 12; + /* */ u32 potion1 : 2; + /* */ u32 potion2 : 2; + /* 04 */ u32 flags[2]; + /* 0C */ u16 numRupees; + /* 0E */ u16 unk_0E; + /* 10 */ s8 equippedItem; + /* 14 */ +}; + +class Inventory { +private: /* 00 */ ItemFlag mEquippedItem; /* 04 */ ItemFlag mForcedItem; /* 08 */ u32 mFlags[2]; // inventory items bitfield & collection/equipment bitfield @@ -69,25 +84,47 @@ public: /* 1A */ u8 mArrowAmount; /* 1B */ u8 mBombAmount; /* 1C */ u8 mPotions[MAX_POTIONS]; - /* 1E */ unk16 mUnk_1E; - /* 20 */ UnkStruct_ItemManager_20 *mUnk_20; - /* 24 */ unk8 mUnk_24; - /* 24 */ unk8 mUnk_25; - /* 24 */ unk8 mUnk_26; - /* 24 */ unk8 mUnk_27; - /* 28 */ + /* 1E */ unk16 mUnk_1E; // pad? + /* 20 */ - u8 GetTearsAmount() const { - return this->mTearsAmount; +public: + // clang-format off + const ItemFlag GetCurrentItem() const { return this->mEquippedItem; } + const bool HasItem(int flag) const { return GET_FLAG(this->mFlags, flag); } + const u16 GetNumRupees() const { return this->mNumRupees; } + const u16 GetRestrictions() const { return this->mItemRestrictions; } + const bool HasUnk12(int value) const { return (this->mUnk_12 & value) != 0; } + const bool HasRestriction(int flag) const { return IS_ITEM_RESTRICTED(this->mItemRestrictions, flag); } + const u8 GetTearsAmount() const { return this->mTearsAmount; } + const u8 GetKeyAmount() const { return this->mKeyAmount; } + const UpgradeCapacity GetQuiverCap() const { return this->mQuiverCapacity; } + const UpgradeCapacity GetBombsCap() const { return this->mBombBagCapacity; } + const UpgradeCapacity GetArrowAmount() const { return this->mArrowAmount; } + const UpgradeCapacity GetBombAmount() const { return this->mBombAmount; } + + void FlipUnk12(int value) { this->mUnk_12 ^= value; } + // clang-format on + + void SetNextQuiverCapacity() { + if (this->mQuiverCapacity < UpgradeCapacity_Tier3) { + this->mQuiverCapacity++; + } + + this->mArrowAmount = this->GetQuiverCapacity(); } - u8 GetKeyAmount() const { - return this->mKeyAmount; + void SetNextBombBagCapacity() { + if (this->mBombBagCapacity < UpgradeCapacity_Tier3) { + this->mBombBagCapacity++; + } + + this->mBombAmount = this->GetBombBagCapacity(); } - ItemManager(); - ~ItemManager(); + Inventory(); + ~Inventory(); + // overlay 0 void SetFlag(ItemFlag itemFlag); void ClearFlag(ItemFlag itemFlag); bool HasRecruitUniform(); @@ -105,8 +142,55 @@ public: bool HasPurplePotion(); void RemovePurplePotion(); bool PotionSlotsFull(); - static UnkStruct_ov000_020afc48 *func_ov000_020a8974(ItemFlag itemFlag); - static ItemFlag GetEquippedItemFlag(ItemId itemId); + + // overlay 1 + void func_ov001_020bb8bc(const InvImportData *pSrc); + void func_ov001_020bb9f8(); + void func_ov001_020bba54(); + void func_ov001_020bba6c(); + + // overlay 96 + void func_ov096_02179b20(); + + // overlay 110 + bool func_ov110_02184a40(ItemId itemId); +}; + +class ItemManager { +private: + /* 00 */ Inventory mInventory; + /* 20 */ UnkStruct_ItemManager_20 *mUnk_20; + /* 24 */ unk8 mUnk_24; + /* 24 */ unk8 mUnk_25; + /* 24 */ unk8 mUnk_26; + /* 24 */ unk8 mUnk_27; + /* 28 */ + +public: + // clang-format off + Inventory* GetInventory() { return &this->mInventory; } + const Inventory* GetInventory() const { return &this->mInventory; } + + const ItemFlag GetCurrentItem() const { return this->GetInventory()->GetCurrentItem(); } + const bool HasItem(int flag) const { return this->GetInventory()->HasItem(flag); } + const u16 GetNumRupees() const { return this->GetInventory()->GetNumRupees(); } + const u16 GetRestrictions() const { return this->GetInventory()->GetRestrictions(); } + const bool HasUnk12(int value) const { return this->GetInventory()->HasUnk12(value); } + const bool HasRestriction(int flag) const { return this->GetInventory()->HasRestriction(flag); } + const u8 GetTearsAmount() const { return this->GetInventory()->GetTearsAmount(); } + const u8 GetKeyAmount() const { return this->GetInventory()->GetKeyAmount(); } + const UpgradeCapacity GetQuiverCap() const { return this->GetInventory()->GetQuiverCap(); } + const UpgradeCapacity GetBombsCap() const { return this->GetInventory()->GetBombsCap(); } + const UpgradeCapacity GetArrowAmount() const { return this->GetInventory()->GetArrowAmount(); } + const UpgradeCapacity GetBombAmount() const { return this->GetInventory()->GetBombAmount(); } + + void FlipUnk12(int value) { this->GetInventory()->FlipUnk12(value); } + // clang-format on + + ItemManager(); + ~ItemManager() {} + + // overlay 0 void func_ov000_020a89bc(); bool func_ov000_020a89d4(); bool func_ov000_020a8a0c(); @@ -117,9 +201,10 @@ public: unk32 func_ov000_020a8ab8(); unk32 func_ov000_020a8acc(); - void func_ov001_020bb9f8(); + static UnkStruct_ov000_020afc48 *func_ov000_020a8974(ItemFlag itemFlag); + static ItemFlag GetEquippedItemFlag(ItemId itemId); - bool func_ov110_02184a40(ItemId itemId); + // overlay 110 static u32 GetBmgIDFromItem(ItemId itemId); static AdventureFlag GetAdvFlagFromItem(ItemId itemId); }; diff --git a/include/MapObject/MapObject.hpp b/include/MapObject/MapObject.hpp index 9efca9ab..d9552597 100644 --- a/include/MapObject/MapObject.hpp +++ b/include/MapObject/MapObject.hpp @@ -132,8 +132,8 @@ public: /* 40 */ // data_ov000_020b3590 - /* 00 */ virtual bool vfunc_00(); // Init? the newly-created map object is deleted if this returns false - /* 04 */ virtual void vfunc_04(); + /* 00 */ virtual bool vfunc_00(); // Init + /* 04 */ virtual void vfunc_04(); // Setup /* 08 */ virtual void vfunc_08(); /* 0C */ virtual void vfunc_0C(); /* 10 */ virtual void vfunc_10(); diff --git a/include/MapObject/MapObjectManager.hpp b/include/MapObject/MapObjectManager.hpp index 9158775c..ee75ca73 100644 --- a/include/MapObject/MapObjectManager.hpp +++ b/include/MapObject/MapObjectManager.hpp @@ -24,8 +24,8 @@ public: /* 04 */ MapObject **mMapObjTableEnd; /* 08 */ MapObject **mUnk_08; // pointer to first available slot? /* 0C */ s16 **mUnk_0C; // unknown table - /* 10 */ void **mUnk_10; // unknown table end - /* 14 */ void *mUnk_14; + /* 10 */ s16 **mUnk_10; // unknown table end + /* 14 */ s16 *mUnk_14; /* 18 */ unk16 mUnk_18; /* 1A */ unk16 mUnk_1A; /* 1C */ unk16 mUnk_1C; @@ -47,7 +47,7 @@ public: // overlay 0 MapObjectId func_ov000_0209c3a8(Vec2bCpp *param1); void func_ov000_0209c3e8(); - void func_ov000_0209c444(); + void func_ov000_0209c444(unk32 param1); MapObject *AllocateMapObject(MapObjectId mapObjId, Vec2b param2, u16 param3, unk32 param4, u8 param5); static void func_ov000_0209c490(); @@ -59,9 +59,9 @@ public: void func_ov001_020bada0(); void func_ov001_020badb4(); void func_ov001_020bade0(); - void func_ov001_020baea0(Vec2s *param1); void func_ov001_020bae40(ZeldaObjectList *pObjList); void func_ov001_020bae6c(); + void func_ov001_020baea0(u16 *param1); void func_ov001_020baf28(); static MapObjectManager *Create(); diff --git a/include/MapObject/MapObjectProfile.hpp b/include/MapObject/MapObjectProfile.hpp index 01c089f9..e282a018 100644 --- a/include/MapObject/MapObjectProfile.hpp +++ b/include/MapObject/MapObjectProfile.hpp @@ -26,7 +26,7 @@ public: /* 10 */ MapObjectId mMapObjId; /* 14 */ MapObjectId mUnk_14; /* 18 */ unk32 mUnk_18; - /* 1C */ unk8 mUnk_1C; + /* 1C */ u8 mUnk_1C; /* 1D */ unk8 mUnk_1D; /* 1E */ u16 mUnk_1E; /* 20 */ @@ -48,6 +48,7 @@ public: static unk32 func_ov000_0209c820(); static void func_ov000_0209c8ec(MapObjectProfile *thisx); + void func_ov000_0209c8ec(); }; class MapObjectProfile_Derived1 : public MapObjectProfile { diff --git a/include/Save/SaveFile.hpp b/include/Save/SaveFile.hpp index b6f26214..3eca1ba0 100644 --- a/include/Save/SaveFile.hpp +++ b/include/Save/SaveFile.hpp @@ -332,6 +332,14 @@ struct SaveFile_00000_2600_Data { /* 80 */ }; +struct GameSaveSlot { + /* 0000 */ SaveInfoData mInfoData; + /* 0E00 */ SaveTreasureData mTreasureData; + /* 0E80 */ SaveFile_00000_2600_Data mUnk_2600; + /* 0F00 */ SaveFile_00000_1D00_Data mUnk_1D00; + /* 1300 */ +}; + class SaveSlot { public: /* 0000 */ SaveInfoData mInfoData[COUNT_DATA]; diff --git a/include/Save/SaveManager.hpp b/include/Save/SaveManager.hpp index d9d4588f..71b9f803 100644 --- a/include/Save/SaveManager.hpp +++ b/include/Save/SaveManager.hpp @@ -9,6 +9,7 @@ #include "global.h" #include "types.h" +#include #include #define SAVE_DATA_SIZE (sizeof(SaveSlot) + sizeof(u8) * NUM_UNK_BLOCKS * SIZE_UNK_BLOCK) @@ -36,23 +37,37 @@ struct SaveManager_00 { unk_B78(param1) {} }; +class SaveManager_244 { +public: + /* 00 */ STRUCT_PAD(0x00, 0x7E); + /* 7E */ u16 mUnk_7E; + /* 80 */ + + SaveManager_244(); +}; + class SaveManager { public: /* 000 */ SaveManager_00 *mUnk_000; // related to mUnk_184, allocated from func_ov001_020ba670 /* 004 */ unk32 mUnk_004; /* 008 */ STRUCT_PAD(0x08, 0x204); - /* 204 */ unk16 mUnk_204; - /* 206 */ unk16 mUnk_206; + /* 204 */ u16 mCardId; + /* 206 */ s16 mUnk_206; // this is a save slot index? /* 208 */ unk16 mUnk_208; /* 20A */ u8 mUnk_20A; // bool? /* 20B */ unk8 mUnk_20B; - /* 20C */ unk32 mUnk_20C; + /* 20C */ CARDResult mResultCode; /* 210 */ unk32 mUnk_210; /* 214 */ unk32 mUnk_214; /* 218 */ SaveFile *mpSaveFile; /* 21C */ SaveFile_00000_0000_Data_D9C mUnk_21C; /* 23C */ PTMF::PTMFCallback mUnk_23C; - /* 244 */ void *mUnk_244; + /* 244 */ SaveManager_244 *mUnk_244; + /* 248 */ + + const size_t GetOffset() const { + return mUnk_206 * 0x7A700; + } bool IsUnk20A() { return this->mUnk_20A == 0; @@ -94,6 +109,7 @@ public: void func_ov019_020d09dc(u16 saveSlotIndex); void func_ov019_020d0a04(u16 saveSlotIndex); void func_ov019_020d0ae0(unk32 param1); + void func_ov001_020ba858(void); static void func_ov019_020d086c(u16 param1); static void func_ov019_020d0a2c(u16 param1); diff --git a/include/System/OverlayManager.hpp b/include/System/OverlayManager.hpp index 716e157e..4664bc82 100644 --- a/include/System/OverlayManager.hpp +++ b/include/System/OverlayManager.hpp @@ -387,21 +387,24 @@ public: /* 00 */ OverlayIndex mLoadedOverlays[OverlaySlot_COUNT]; /* 48 */ - bool IsPlayerSub() { - return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_PlayerSub; - } + // clang-format off + const bool IsTower() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_Tower; } + const bool IsBossDesert() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossDesert; } + const bool IsBossDeago() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossDeago; } + const bool IsBossLast1() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossLast1; } + const bool IsBossLast2() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossLast2; } + const bool IsDungeonForest() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_DgnForest; } + const bool IsPirateHideout() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_FldAjito; } - bool IsMapA6() { - return this->mLoadedOverlays[OverlaySlot_13] == OverlayIndex_MapA6; - } + const bool IsASR() const { return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_ASR; } + const bool IsPlayerSub() const { return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_PlayerSub; } - bool IsPirateHideout() { - return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_FldAjito; - } + const bool IsPlayerZelda() const { return this->mLoadedOverlays[OverlaySlot_10] == OverlayIndex_PlayerZelda; } - bool IsASR() { - return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_ASR; - } + const bool IsMapA6() const { return this->mLoadedOverlays[OverlaySlot_13] == OverlayIndex_MapA6; } + + const bool IsMapB3() const { return this->mLoadedOverlays[OverlaySlot_14] == OverlayIndex_MapB3; } + // clang-format on void Load(OverlaySlot slot, OverlayIndex index); void LoadIfNotLoaded(OverlaySlot slot, OverlayIndex index); diff --git a/include/System/SysNew.hpp b/include/System/SysNew.hpp index 31f35f13..7f95fdda 100644 --- a/include/System/SysNew.hpp +++ b/include/System/SysNew.hpp @@ -35,7 +35,9 @@ enum HeapIndex_ { }; void *operator new(size_t length, u32 id, u32 idLength = 4); -void *operator new[](size_t length, u32 id, u32 idLength = 4); +inline void *operator new[](size_t length, u32 id, u32 idLength = 4) { + return ::operator new(length, id, idLength); +} class UnkStruct_02011e10_Sub1 { public: @@ -53,15 +55,29 @@ public: /* 2C */ unk8 mUnk_2C[0x60 - 0x2C]; }; +class UnkStruct_02011e10_2C { +public: + /* 00 */ UnkStruct_02011e10_Sub1 *mUnk_00; + /* 04 */ STRUCT_PAD(0x04, 0x18); + /* 18 */ + + UnkStruct_02011e10_2C(); + + // main + void func_020144cc(unk32 param1, unk32 param2, unk32 param3); + void func_02014538(); +}; + class UnkStruct_02011e10 { public: /* 00 */ UnkStruct_02011e10_Sub1 *mUnk_00[HeapIndex_Max]; // the pointer seems to match arena lo /* 24 */ unk32 mUnk_24[2]; - /* 28 */ STRUCT_PAD(0x2C, 0x5C); + /* 2C */ UnkStruct_02011e10_2C mUnk_2C; + /* 44 */ UnkStruct_02011e10_2C mUnk_44; /* 5C */ unk32 mUnk_5C; /* 60 */ unk32 mUnk_60; - /* 64 */ unk32 mUnk_64; - /* 68 */ unk32 mUnk_68; + /* 64 */ void *mUnk_64; + /* 68 */ void *mUnk_68; /* 6C */ unk32 mUnk_6C; /* 70 */ unk32 mUnk_70; /* 74 */ unk32 mUnk_74; @@ -75,12 +91,26 @@ public: /* 82 */ unk8 mUnk_82; /* 83 */ unk8 mUnk_83; + UnkStruct_02011e10() {} + ~UnkStruct_02011e10(); + + // main unk32 func_02013014(); bool func_02013070(); void func_020130d4(unk32 param1); + // overlay 1 void func_ov001_020ba588(unk32 param1, unk32 param2); + void func_ov001_020ba59c(); + void func_ov001_020ba5ac(unk32 param1, unk32 param2); + void func_ov001_020ba5c0(); + void func_ov001_020ba5d0(); + void func_ov001_020ba608(); + void func_ov001_020ba620(); + void func_ov001_020ba640(); + void func_ov001_020ba658(); + // overlay 18 void func_ov018_020c4980(); void func_ov018_020c4a5c(); }; diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index b389d8b8..dd2b7906 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -1210,3 +1210,13 @@ public: // data_ov000_020b2940 /* 00 */ virtual void vfunc_00(); }; + +class UnkSystem9 : public LinkList { +public: + /* 00 (vtable) */ + /* 04 (base) */ + /* 0C */ + + // data_ov000_020b24c4 + /* 00 */ virtual void vfunc_00(); +}; diff --git a/include/Unknown/UnkStruct_02049b80.hpp b/include/Unknown/UnkStruct_02049b80.hpp index 2ac5d51c..6c3f6bbd 100644 --- a/include/Unknown/UnkStruct_02049b80.hpp +++ b/include/Unknown/UnkStruct_02049b80.hpp @@ -15,6 +15,7 @@ public: UnkStruct_02049b80(); void func_02013ecc(unk32 param1, UnkCallback param2, unk32 param3); void func_02013ee8(unk32 param1, unk32 param2); + void func_02013f80(unk32 param1); }; extern UnkStruct_02049b80 data_02049b80; diff --git a/include/Unknown/UnkStruct_027e095c.hpp b/include/Unknown/UnkStruct_027e095c.hpp index f449d3d4..10ac8025 100644 --- a/include/Unknown/UnkStruct_027e095c.hpp +++ b/include/Unknown/UnkStruct_027e095c.hpp @@ -1,12 +1,31 @@ #pragma once #include "global.h" +#include "math.hpp" #include "types.h" +#include "versions.h" class UnkStruct_027e095c : public AutoInstance { public: - /* 000 */ unk32 mUnk_000; +#if IS_JP + /* 000 */ VecFx32 mUnk_000[64]; + /* 300 */ unk32 mUnk_2F4; + /* 304 */ STRUCT_PAD(0x304, 0x900); + /* 900 */ void *mUnk_8DC; + /* 904 */ unk32 mUnk_8E0; + /* 908 */ STRUCT_PAD(0x908, 0x964); + /* 960 */ void *mUnk_940; + /* 968 */ +#else + /* 000 */ VecFx32 mUnk_000[63]; + /* 2F4 */ unk32 mUnk_2F4; + /* 2F8 */ STRUCT_PAD(0x2F8, 0x8DC); + /* 8DC */ void *mUnk_8DC; + /* 8E0 */ unk32 mUnk_8E0; + /* 8E4 */ STRUCT_PAD(0x8E4, 0x940); + /* 940 */ void *mUnk_940; /* 944 */ +#endif UnkStruct_027e095c(); ~UnkStruct_027e095c() {} diff --git a/include/Unknown/UnkStruct_027e09a0.hpp b/include/Unknown/UnkStruct_027e09a0.hpp index 10e47d28..01da7ad6 100644 --- a/include/Unknown/UnkStruct_027e09a0.hpp +++ b/include/Unknown/UnkStruct_027e09a0.hpp @@ -12,6 +12,7 @@ struct UnkStruct_func_ov000_020702a8 { /* 10 */ Vec2s mUnk_10; /* 14 */ STRUCT_PAD(0x14, 0x20); /* 20 */ unk16 mUnk_20; + /* 22 */ unk16 mUnk_22; }; class CourseInitBinary { diff --git a/include/Unknown/UnkStruct_027e09bc.hpp b/include/Unknown/UnkStruct_027e09bc.hpp index ac017188..ef243cc3 100644 --- a/include/Unknown/UnkStruct_027e09bc.hpp +++ b/include/Unknown/UnkStruct_027e09bc.hpp @@ -1,33 +1,70 @@ #pragma once #include "Unknown/Common.hpp" +#include "Unknown/UnkStruct_0204a060.hpp" #include "global.h" #include "types.h" class UnkStruct_027e09bc_0C { public: - /* 00 */ STRUCT_PAD(0x00, 0x34); - /* 34 */ VecFx32 mUnk_34; + /* 000 (vtable) */ + /* 004 */ STRUCT_PAD(0x04, 0x34); + /* 034 */ VecFx32 mUnk_034; + /* 040 */ STRUCT_PAD(0x40, 0x264); + /* 264 */ unk32 mUnk_264; + /* 268 */ STRUCT_PAD(0x268, 0x280); + /* 280 */ unk32 mUnk_280; + /* 284 */ + UnkStruct_027e09bc_0C(unk32 param1); + + // data_ov000_020b24b4 + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual void vfunc_04(); + /* 08 */ virtual ~UnkStruct_027e09bc_0C(); + /* 10 */ + + // itcm bool func_01ffd640(VecFx32 *param1); + + // overlay 0 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); + void func_ov000_02078ba4(); + void func_ov000_02078cec(); +}; + +class UnkStruct_027e09bc_24 : public UnkStruct_0204a060_Base { +public: + /* 00 (base) */ + /* 24 */ + + UnkStruct_027e09bc_24(); + + // data_ov000_020b2488 + /* 0C */ virtual bool vfunc_0C(void) override; }; class UnkStruct_027e09bc : public AutoInstance { public: - /* 00 */ unk32 mUnk_00; + /* 00 (vtable) */ /* 04 */ UnkStruct_027e09bc_0C *mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ UnkStruct_027e09bc_0C *mUnk_0C; - /* 10 */ STRUCT_PAD(0x10, 0x48); - /* 48 */ UnkSystem8 mUnk_48; + /* 10 */ UnkStruct_027e09bc_0C *mUnk_10; + /* 14 */ UnkStruct_027e09bc_0C *mUnk_14[4]; + /* 24 */ UnkStruct_027e09bc_24 mUnk_24; + /* 48 */ UnkSystem9 mUnk_48; UnkStruct_027e09bc(); ~UnkStruct_027e09bc(); + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual void vfunc_04(); + // overlay 0 + void func_ov000_020771b8(unk32 param1); void func_ov000_020771c8(); // overlay 1 diff --git a/include/Unknown/UnkStruct_ov000_020b5d34.hpp b/include/Unknown/UnkStruct_ov000_020b5d34.hpp index 05d472a2..2f4056d8 100644 --- a/include/Unknown/UnkStruct_ov000_020b5d34.hpp +++ b/include/Unknown/UnkStruct_ov000_020b5d34.hpp @@ -30,6 +30,8 @@ public: MapObjectProfile *GetProfileFromId(MapObjectId mapObjId); MapObject *CreateMapObject(MapObjectId mapObjId); + MapObjectProfile **func_ov000_0209c6a0(); + MapObjectProfile **func_ov000_0209c6ac(); static unk32 func_ov000_0209c718(u32 param1); }; diff --git a/include/Unknown/UnkStruct_ov020_020e8544.hpp b/include/Unknown/UnkStruct_ov020_020e8544.hpp new file mode 100644 index 00000000..51fb18f7 --- /dev/null +++ b/include/Unknown/UnkStruct_ov020_020e8544.hpp @@ -0,0 +1,24 @@ +#pragma once + +#include "global.h" +#include "types.h" + +class UnkStruct_ov020_020e8544 { +public: + /* 00 (vtable) */ + + UnkStruct_ov020_020e8544(); + ~UnkStruct_ov020_020e8544(); + + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual void vfunc_04(); + /* 08 */ virtual void vfunc_08(); + /* 0C */ virtual void vfunc_0C(); + /* 10 */ virtual void vfunc_10(); + /* 14 */ virtual void vfunc_14(); + /* 18 */ virtual void vfunc_18(); + /* 1C */ virtual void vfunc_1C(); + /* 20 */ virtual unk32 vfunc_20(); +}; + +extern UnkStruct_ov020_020e8544 *data_ov020_020e8544; diff --git a/src/000_Second/Item/ItemManager.cpp b/src/000_Second/Item/ItemManager.cpp index 5df407d6..f71e7b5f 100644 --- a/src/000_Second/Item/ItemManager.cpp +++ b/src/000_Second/Item/ItemManager.cpp @@ -14,19 +14,19 @@ const u8 gBombBagCapacities[UpgradeCapacity_Max] = { CAPACITY_BOMB_BAG_TIER_3, }; -void ItemManager::SetFlag(ItemFlag itemFlag) { +void Inventory::SetFlag(ItemFlag itemFlag) { SET_FLAG(this->mFlags, itemFlag); } -void ItemManager::ClearFlag(ItemFlag itemFlag) { +void Inventory::ClearFlag(ItemFlag itemFlag) { UNSET_FLAG(this->mFlags, itemFlag); } -bool ItemManager::HasRecruitUniform() { +bool Inventory::HasRecruitUniform() { return GET_FLAG(this->mFlags, ItemFlag_RecruitUniform) && (this->mUnk_12 & 1); } -unk32 ItemManager::func_ov000_020a86a4() { +unk32 Inventory::func_ov000_020a86a4() { if (GET_FLAG(this->mFlags, ItemFlag_AncientShield) && (this->mUnk_12 & 2)) { return 1; } @@ -38,7 +38,7 @@ unk32 ItemManager::func_ov000_020a86a4() { return -1; } -u32 ItemManager::GetItemAmount(ItemFlag itemFlag) { +u32 Inventory::GetItemAmount(ItemFlag itemFlag) { bool canUse = GET_FLAG(this->mFlags, itemFlag); switch (itemFlag) { @@ -53,7 +53,7 @@ u32 ItemManager::GetItemAmount(ItemFlag itemFlag) { return canUse; } -u8 ItemManager::GetQuiverCapacity() { +u8 Inventory::GetQuiverCapacity() { if (GET_FLAG(this->mFlags, ItemFlag_Bow) == 0) { return 0; } @@ -61,7 +61,7 @@ u8 ItemManager::GetQuiverCapacity() { return gQuiverCapacities[this->mQuiverCapacity]; } -u8 ItemManager::GetBombBagCapacity() { +u8 Inventory::GetBombBagCapacity() { if (GET_FLAG(this->mFlags, ItemFlag_Bombs) == 0) { return 0; } @@ -69,12 +69,12 @@ u8 ItemManager::GetBombBagCapacity() { return gBombBagCapacities[this->mBombBagCapacity]; } -void ItemManager::GiveRupees(s32 amount, bool param2, bool param3) { +void Inventory::GiveRupees(s32 amount, bool param2, bool param3) { u16 prevNumRupees = this->mNumRupees; s32 newAmount = this->mNumRupees + amount; - if (newAmount > 9999) { - newAmount = 9999; + if (newAmount > MAX_RUPEES) { + newAmount = MAX_RUPEES; } else if (newAmount < 0) { newAmount = 0; } @@ -86,7 +86,7 @@ void ItemManager::GiveRupees(s32 amount, bool param2, bool param3) { } } -void ItemManager::GiveSmallKeys(s32 amount) { +void Inventory::GiveSmallKeys(s32 amount) { s32 newAmount = this->mKeyAmount + amount; if (newAmount > MAX_KEYS) { @@ -98,7 +98,7 @@ void ItemManager::GiveSmallKeys(s32 amount) { this->mKeyAmount = newAmount; } -void ItemManager::GiveArrows(s32 amount) { +void Inventory::GiveArrows(s32 amount) { s32 maxArrows = this->GetQuiverCapacity(); s32 newAmount = this->mArrowAmount + amount; @@ -111,7 +111,7 @@ void ItemManager::GiveArrows(s32 amount) { this->mArrowAmount = newAmount; } -void ItemManager::GiveBombs(s32 amount) { +void Inventory::GiveBombs(s32 amount) { s32 maxBombs = this->GetBombBagCapacity(); s32 newAmount = this->mBombAmount + amount; @@ -124,7 +124,7 @@ void ItemManager::GiveBombs(s32 amount) { this->mBombAmount = newAmount; } -bool ItemManager::TryEquipForcedItem() { +bool Inventory::TryEquipForcedItem() { if (this->mForcedItem != ItemFlag_None) { this->mEquippedItem = this->mForcedItem; this->mForcedItem = ItemFlag_None; @@ -135,7 +135,7 @@ bool ItemManager::TryEquipForcedItem() { return false; } -void ItemManager::GivePotion(PotionType type) { +void Inventory::GivePotion(PotionType type) { switch (type) { case PotionType_Red: case PotionType_Purple: @@ -152,7 +152,7 @@ void ItemManager::GivePotion(PotionType type) { } } -bool ItemManager::HasPotion() { +bool Inventory::HasPotion() { for (u32 i = 0; i < ARRAY_LEN(this->mPotions); i++) { if (this->mPotions[i] != PotionType_None) { return true; @@ -162,7 +162,7 @@ bool ItemManager::HasPotion() { return false; } -bool ItemManager::HasPurplePotion() { +bool Inventory::HasPurplePotion() { for (u32 i = 0; i < ARRAY_LEN(this->mPotions); i++) { if (this->mPotions[i] == PotionType_Purple) { return true; @@ -172,7 +172,7 @@ bool ItemManager::HasPurplePotion() { return false; } -void ItemManager::RemovePurplePotion() { +void Inventory::RemovePurplePotion() { for (s32 i = ARRAY_LEN(this->mPotions) - 1; i >= 0; i--) { if (this->mPotions[i] == PotionType_Purple) { this->mPotions[i] = PotionType_None; @@ -181,7 +181,7 @@ void ItemManager::RemovePurplePotion() { } } -bool ItemManager::PotionSlotsFull() { +bool Inventory::PotionSlotsFull() { for (u32 i = 0; i < ARRAY_LEN(this->mPotions); i++) { if (this->mPotions[i] == PotionType_None) { return false; @@ -228,12 +228,13 @@ bool ItemManager::func_ov000_020a89d4() { } bool ItemManager::func_ov000_020a8a0c() { - if (this->mUnk_20 == NULL || this->mEquippedItem == ItemFlag_None || - IS_ITEM_RESTRICTED(this->mItemRestrictions, this->mEquippedItem) || this->GetItemAmount(this->mEquippedItem) == 0) { + if (this->mUnk_20 == NULL || this->GetCurrentItem() == ItemFlag_None || + IS_ITEM_RESTRICTED(this->GetRestrictions(), this->GetCurrentItem()) || + this->mInventory.GetItemAmount(this->GetCurrentItem()) == 0) { return false; } - return this->mUnk_20->func_ov031_020db874(this->mEquippedItem); + return this->mUnk_20->func_ov031_020db874(this->GetCurrentItem()); } void ItemManager::func_ov000_020a8a5c() { diff --git a/src/001_SceneInit/Actor/ActorManager_001.cpp b/src/001_SceneInit/Actor/ActorManager_001.cpp index 1d77c3c6..5678ae08 100644 --- a/src/001_SceneInit/Actor/ActorManager_001.cpp +++ b/src/001_SceneInit/Actor/ActorManager_001.cpp @@ -12,7 +12,6 @@ extern "C" { void func_ov000_020977e4(); -void func_ov001_020ba59c(void *); void func_ov021_020f8818(); void func_ov031_020ea100(); void func_ov071_0215e8d4(); @@ -31,8 +30,6 @@ const ActorId data_ov001_020c2638[] = {ActorId_FOMC, ActorId_FOMA, ActorId_FOMB, const u16 data_ov001_020c2624[] = {0x01AE, 0x01AF, 0x01B0, 0x01B1, 0x01B2}; const u16 data_ov001_020c262e[] = {0x01CB, 0x01CC, 0x01CD, 0x01CE, 0x01CF}; -THUMB_BEGIN - ActorManager *ActorManager::Create() { return new(1, 4) ActorManager(); } @@ -82,7 +79,6 @@ void ActorManager::func_ov001_020bafdc() { } } -// https://decomp.me/scratch/UywfM void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) { u16 unk_0A = pHeader->unk_0A; u16 unk_08 = pHeader->unk_08; @@ -109,19 +105,17 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) { } this->mActorTable = (Actor **) ::operator new(allocCount * 4, HeapIndex_1); - this->mActorTableEnd = this->mActorTable + allocCount * 4; + this->mActorTableEnd = (Actor **) ((uintptr_t) this->mActorTable + allocCount * 4); - size_t iVar9 = ((this->mActorTable + allocCount * 4) - this->mActorTable); - MI_CpuFill32(0, this->mActorTable, (iVar9 * 4)); + MI_CpuFill32(0, this->mActorTable, (this->mActorTableEnd - this->mActorTable) * 4); this->mUnk_08 = this->mActorTable; data_0204999c.func_ov001_020ba588(aligned08 + iVar5, 0x100); // it's 2 when we are on the title screen and 0 during normal gameplay, is it the game mode ? if (data_027e09a4->mUnk_60 != 2) { - unk32 iVar5; - if (data_027e09a4->IsLand() != 0) { - iVar5 = data_027e09a4->CurrentSceneIndex(); + unk32 iVar5 = data_027e09a4->CurrentSceneIndex(); + OverlayManager *pMgr; if (iVar5 == SceneIndex_f_rabbit) { this->mUnk_34 = 0xFFFFECCD; // ~0x1332 @@ -135,13 +129,17 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) { auStack_28.func_ov000_02059270(0x08, "zdf_sword02", 0x19150000); auStack_28.func_ov000_02059270(0x0A, "whip", 0x28000000); - auStack_28.func_ov000_02059270(0x0C, "rupy0", 0x2D200000); + char *str = "rupy0"; + auStack_28.func_ov000_02059270(0x0C, str, 0x2D200000); auStack_28.func_ov000_02059288(0x0D, "rupy1", 0x0C); auStack_28.func_ov000_02059288(0x0E, "rupy2", 0x0C); auStack_28.func_ov000_02059288(0x0F, "rupy3", 0x0C); auStack_28.func_ov000_02059270(0x10, "life0", 0x2D200000); auStack_28.func_ov000_02059270(0x1D, "arrow", 0x2D200000); + + pMgr = &gOverlayManager; + auStack_28.func_ov000_02059270(0x1E, "bomb", 0x2D200000); auStack_28.func_ov000_02059270(0x1F, "drug", 0x2D200000); auStack_28.func_ov000_02059270(0x20, "drop0", 0x2D200000); @@ -160,31 +158,32 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) { auStack_28.func_ov000_02059270(0x3C, "mic_ng", 0x35B00000); } - if (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossDeago) { + if (pMgr->IsBossDeago()) { auStack_28.func_ov000_02059270(0x09, "bdga_chain", 0x28000000); } - if (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossLast1) { + if (pMgr->IsBossLast1()) { auStack_28.func_ov000_02059270(0x0B, "kimrat", 0x28000000); } } - if (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_Tower) { + if (pMgr->IsTower()) { UnkStruct_StackTitleScreen auStack_3c("Screen/tex2d.bin", 1); auStack_3c.func_ov000_02059270(0x34, "baloon", 0x28A00000); auStack_3c.func_ov000_02059270(0x35, "dot", 0x28000000); } - if (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossDeago) { + if (pMgr->IsBossDeago()) { UnkStruct_StackTitleScreen auStack_50("Screen/tex2d.bin", 1); auStack_50.func_ov000_02059270(0x30, "deagohit", 0x29200000); auStack_50.func_ov000_02059270(0x31, "deagotarget", 0x29200000); } - if (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossLast2) { + if (pMgr->IsBossLast2()) { UnkStruct_StackTitleScreen auStack_64("Screen/tex2d.bin", 1); auStack_64.func_ov000_02059270(0x32, "zeldahit", 0x29200000); - auStack_64.func_ov000_02059270(0x33, "zeldatarget", 0x2D200000); + char *str = "zeldatarget"; + auStack_64.func_ov000_02059270(0x33, str, 0x2D200000); } } else if (data_027e09a4->IsTrain()) { UnkStruct_StackTitleScreen auStack_78("Npc/Tex.bin", 1); @@ -207,7 +206,7 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) { } void ActorManager::func_ov001_020bb414() { - func_ov001_020ba59c(&data_0204999c); + data_0204999c.func_ov001_020ba59c(); if (data_027e09a4->UnkCheck(data_027e09a4->CurrentSceneIndex())) { this->func_ov001_020bb844(); @@ -400,5 +399,3 @@ void ActorManager::func_ov001_020bb844() { } DECL_INSTANCE(ActorManager, gpActorManager); - -THUMB_END diff --git a/src/001_SceneInit/CargoManager_001.cpp b/src/001_SceneInit/CargoManager_001.cpp index 64e6849c..3c4e6917 100644 --- a/src/001_SceneInit/CargoManager_001.cpp +++ b/src/001_SceneInit/CargoManager_001.cpp @@ -2,8 +2,6 @@ #include "Unknown/UnkStruct_027e09a4.hpp" #include "global.h" -THUMB_BEGIN - CargoManager::CargoManager() { this->mUnk_18 = 0; this->mUnk_1C = 0; @@ -21,5 +19,3 @@ void CargoManager::func_ov001_020bf830() { } DECL_INSTANCE(CargoManager, gpCargoManager); - -THUMB_END diff --git a/src/001_SceneInit/Game/AdventureModeManager_001.cpp b/src/001_SceneInit/Game/AdventureModeManager_001.cpp index 6d2e0d39..923ac489 100644 --- a/src/001_SceneInit/Game/AdventureModeManager_001.cpp +++ b/src/001_SceneInit/Game/AdventureModeManager_001.cpp @@ -23,8 +23,6 @@ void *func_ov000_02066294(); extern int data_ov001_020c27a8; extern int data_ov001_020c276c; -THUMB_BEGIN - AdventureModeManager *AdventureModeManager::Create(unk32 param1) { return new(HeapIndex_1) AdventureModeManager(param1); } @@ -325,5 +323,3 @@ AdventureModeManager_15C::AdventureModeManager_15C() : AdventureModeManager_15C::~AdventureModeManager_15C() { delete this->mUnk_20.mUnk_00; } - -THUMB_END diff --git a/src/001_SceneInit/Game/GameModeAdventure_001.cpp b/src/001_SceneInit/Game/GameModeAdventure_001.cpp index 1de80851..e2fad3a5 100644 --- a/src/001_SceneInit/Game/GameModeAdventure_001.cpp +++ b/src/001_SceneInit/Game/GameModeAdventure_001.cpp @@ -11,8 +11,6 @@ void func_0201659c(); extern int data_ov001_020c27a8; extern int data_ov001_020c276c; -THUMB_BEGIN - GameModeAdventure::GameModeAdventure() { func_0201659c(); gGame.func_02013370(2); @@ -21,5 +19,3 @@ GameModeAdventure::GameModeAdventure() { gSaveManager.func_ov001_020ba7a8(); func_ov020_020c4ac0(UnkStruct_027e09a4::Create(0)); } - -THUMB_END diff --git a/src/001_SceneInit/Item/ItemManager_001.cpp b/src/001_SceneInit/Item/ItemManager_001.cpp index 5e6a9d3f..f9f45a90 100644 --- a/src/001_SceneInit/Item/ItemManager_001.cpp +++ b/src/001_SceneInit/Item/ItemManager_001.cpp @@ -1,12 +1,104 @@ +#include "Actor/ActorManager.hpp" #include "Item/ItemManager.hpp" #include "Save/SaveManager.hpp" #include "System/OverlayManager.hpp" #include "Unknown/UnkStruct_027e09a0.hpp" #include "Unknown/UnkStruct_027e09a4.hpp" -THUMB_BEGIN +#include -void ItemManager::func_ov001_020bb9f8() { +extern unk32 data_ov000_020b3000; + +Inventory::Inventory() { + this->mEquippedItem = ItemFlag_None; + this->mForcedItem = ItemFlag_None; + MI_CpuFill32(0, this->mFlags, sizeof(this->mFlags)); + this->mNumRupees = 0; + this->mUnk_12 = 0; + this->mItemRestrictions = 0; + this->mTearsAmount = 0; + this->mKeyAmount = 0; + this->mQuiverCapacity = 0; + this->mBombBagCapacity = 0; + this->mArrowAmount = 0; + this->mBombAmount = 0; + + for (u32 i = 0; i < ARRAY_LEN(this->mPotions); i++) { + this->mPotions[i] = 0; + } +} + +Inventory::~Inventory() {} + +void Inventory::func_ov001_020bb8bc(const InvImportData *pSrc) { + this->mEquippedItem = pSrc->equippedItem; + + MI_CpuCopy32((void *) &pSrc->flags, this->mFlags, sizeof(this->mFlags)); + + this->mNumRupees = pSrc->numRupees; + vu16 stack_unused = pSrc->unk_0E; + this->mUnk_12 = pSrc->unk_0E; + + this->mQuiverCapacity = pSrc->quiverCapacity; + this->mBombBagCapacity = pSrc->bombBagCapacity; + this->mArrowAmount = pSrc->arrowAmount; + this->mBombAmount = pSrc->bombsAmount; + this->mPotions[0] = pSrc->potion1; + this->mPotions[1] = pSrc->potion2; + + if ((s32) this->mEquippedItem < ItemFlag_None) { + this->mEquippedItem = ItemFlag_None; + } + + if ((s32) this->mEquippedItem > ItemFlag_SandRod) { + this->mEquippedItem = ItemFlag_SandRod; + } + + if ((s32) this->mEquippedItem != ItemFlag_None) { + if (!GET_FLAG(this->mFlags, this->mEquippedItem)) { + this->mEquippedItem = ItemFlag_None; + } + } + + if (this->mEquippedItem == ItemFlag_None) { + for (u32 i = 0; i < ItemFlag_EQUIP_COUNT; i++) { + if (GET_FLAG(this->mFlags, i)) { + this->mEquippedItem = i; + break; + } + } + } + + if (this->mNumRupees > MAX_RUPEES) { + this->mNumRupees = MAX_RUPEES; + } + + if ((*(vu16 *) &this->mUnk_12 & 0x01) && !GET_FLAG(this->mFlags, ItemFlag_RecruitUniform)) { + this->mUnk_12 &= ~0x01; + } + + if ((*(vu16 *) &this->mUnk_12 & 0x02) && !GET_FLAG(this->mFlags, ItemFlag_AncientShield)) { + this->mUnk_12 &= ~0x02; + } + + if (this->mQuiverCapacity > UpgradeCapacity_Tier3) { + this->mQuiverCapacity = UpgradeCapacity_Tier3; + } + + if (this->mBombBagCapacity > UpgradeCapacity_Tier3) { + this->mBombBagCapacity = UpgradeCapacity_Tier3; + } + + if (this->mArrowAmount > this->GetQuiverCapacity()) { + this->mArrowAmount = this->GetQuiverCapacity(); + } + + if (this->mBombAmount > this->GetBombBagCapacity()) { + this->mBombAmount = this->GetBombBagCapacity(); + } +} + +void Inventory::func_ov001_020bb9f8() { if (data_027e09a4->IsNotCutscene() && gOverlayManager.mLoadedOverlays[OverlaySlot_10] != OverlayIndex_PlayerPhantom) { this->mTearsAmount = 0; } @@ -24,4 +116,26 @@ void ItemManager::func_ov001_020bb9f8() { } } -THUMB_END +void Inventory::func_ov001_020bba54() { + this->mItemRestrictions = 0; + + if (gOverlayManager.IsPlayerZelda()) { + this->func_ov096_02179b20(); + } +} + +void Inventory::func_ov001_020bba6c() { + struct { + void *ptr; + unk32 actorId; + } uStack_18; + uStack_18.ptr = &data_ov000_020b3000; + uStack_18.actorId = ActorId_SZKU; + + Actor **ppActor = gpActorManager->func_01fff350(&uStack_18, gpActorManager->mActorTable); + while (ppActor != gpActorManager->mUnk_08) { + UNSET_FLAG((*ppActor)->mFlags, ActorFlag_Alive); + (*ppActor)->func_ov000_020984f0(); + ppActor = gpActorManager->func_01fff350(&uStack_18, ppActor + 1); + } +} diff --git a/src/001_SceneInit/MapObject/MapObjectManager_001.cpp b/src/001_SceneInit/MapObject/MapObjectManager_001.cpp index e69de29b..5188c7cf 100644 --- a/src/001_SceneInit/MapObject/MapObjectManager_001.cpp +++ b/src/001_SceneInit/MapObject/MapObjectManager_001.cpp @@ -0,0 +1,211 @@ +#include "Actor/ActorUnkPMST.hpp" +#include "Actor/ActorUnkPMTT.hpp" +#include "MapObject/MapObjectManager.hpp" +#include "System/OverlayManager.hpp" +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_ov000_020b5d34.hpp" +#include "versions.h" + +#include + +extern "C" bool func_ov026_0210d664(SceneIndex sceneIndex, MapObjectId mapObjId); + +MapObjectManager *MapObjectManager::Create() { + return new(HeapIndex_1) MapObjectManager(); +} + +MapObjectManager::MapObjectManager() { + this->mMapObjTable = NULL; + this->mMapObjTableEnd = NULL; + this->mUnk_0C = NULL; + this->mUnk_10 = NULL; + this->mUnk_14 = NULL; + this->mUnk_6C = &this->mUnk_1C; +} + +MapObjectManager::~MapObjectManager() { + if (this->mUnk_0C != NULL) { + delete this->mUnk_0C; + } + + if (this->mMapObjTable != NULL) { + delete this->mMapObjTable; + } +} + +void MapObjectManager::func_ov001_020bac9c() { + MapObject **ppMapObjTable = this->mMapObjTable; + + while (ppMapObjTable != this->mUnk_08) { + MapObject *pMapObj = *ppMapObjTable; + + if (pMapObj != NULL) { + // alive and uninitialized? + if (GET_FLAG(pMapObj->mFlags, MapObjFlag_Alive) && !GET_FLAG(pMapObj->mFlags, MapObjFlag_4)) { + pMapObj->vfunc_04(); + SET_FLAG(pMapObj->mFlags, MapObjFlag_4); + } + } + + ppMapObjTable++; + } +} + +void MapObjectManager::func_ov001_020bacd8(ZOBHeader *pHeader) { + u16 unk_0A = pHeader->unk_0A; + u16 unk_08 = pHeader->unk_08; + + this->mUnk_18 = 0; + this->mUnk_1A = 0; + + int aligned0A = ALIGN_NEXT(unk_0A, 8); + int aligned08 = ALIGN_NEXT(unk_08, 8); + + int iVar5 = data_027e09a0->func_ov000_020702a8(data_027e09a4->CurrentSceneIndex())->mUnk_22; + + s32 allocCount; + if (data_027e09a4->IsTrain()) { + if (data_027e09a4->GetCurrentCourseEntry()->unk_10 == 4) { + allocCount = aligned0A + 0x80; + } else { + allocCount = aligned0A + 0x40; + } + } else if (gOverlayManager.IsBossDesert()) { + allocCount = aligned0A + 0x40; + } else { + allocCount = aligned0A + 0x18; + } + + if (this->mMapObjTable != NULL) { + delete this->mMapObjTable; + } + + this->mMapObjTable = (MapObject **) ::operator new(allocCount * 4, HeapIndex_1); + this->mMapObjTableEnd = (MapObject **) ((uintptr_t) this->mMapObjTable + allocCount * 4); + + MI_CpuFill32(0, this->mMapObjTable, (this->mMapObjTableEnd - this->mMapObjTable) * 4); + this->mUnk_08 = this->mMapObjTable; + data_0204999c.func_ov001_020ba5ac(aligned08 + iVar5, 0x80); +} + +void MapObjectManager::func_ov001_020bad80() { + data_0204999c.func_ov001_020ba5c0(); + + if (this->mMapObjTable != 0) { + delete this->mMapObjTable; + } + + this->mMapObjTable = NULL; + this->mMapObjTableEnd = NULL; +} + +void MapObjectManager::func_ov001_020bada0() { + if (gOverlayManager.IsDungeonForest()) { + ActorUnkPMST::func_ov077_02159db4(); + } + +#if IS_JP + if (gOverlayManager.IsMapB3()) { + ActorUnkPMTT::func_ov042_0212d8a4(); + } +#endif +} + +void MapObjectManager::func_ov001_020badb4() { + int i = 0; + MapObject **ppMapObjTable = this->mMapObjTable; + + while (ppMapObjTable < this->mUnk_08) { + MapObject *pMapObj = *ppMapObjTable; + + if (pMapObj != NULL) { + this->func_ov000_0209c444(i); + } + + ppMapObjTable++; + i++; + } + + this->mUnk_08 = this->mMapObjTable; +} + +void MapObjectManager::func_ov001_020bade0() { + MapObjectProfile **ptr1 = data_ov000_020b5d34.func_ov000_0209c6a0(); + MapObjectProfile **ptr2 = data_ov000_020b5d34.func_ov000_0209c6ac(); + + while (ptr1 != ptr2) { + + if (*ptr1 != NULL) { + bool iVar4 = false; + + if (data_027e09a4->IsTrain()) { + iVar4 = func_ov026_0210d664(data_027e09a4->CurrentSceneIndex(), (*ptr1)->mMapObjId); + } + + if ((*ptr1)->mUnk_1C && !iVar4) { + MapObjectProfile::func_ov000_0209c8ec((*ptr1)); + } + } + + ptr1++; + ptr2 = data_ov000_020b5d34.func_ov000_0209c6ac(); + } +} + +void MapObjectManager::func_ov001_020bae40(ZeldaObjectList *pObjList) { + for (s32 i = 0; i < pObjList->header.nEntries; i++) { + MapObjectProfile::func_ov000_0209c8ec(data_ov000_020b5d34.GetProfileFromId(pObjList->aIdList[i])); + } +} + +void MapObjectManager::func_ov001_020bae6c() { + MapObjectProfile **ptr1 = data_ov000_020b5d34.func_ov000_0209c6a0(); + MapObjectProfile **ptr2 = data_ov000_020b5d34.func_ov000_0209c6ac(); + + while (ptr1 != ptr2) { + if (*ptr1 != NULL) { + (*ptr1)->func_ov000_0209c970(); + } + + ptr1++; + ptr2 = data_ov000_020b5d34.func_ov000_0209c6ac(); + } +} + +void MapObjectManager::func_ov001_020baea0(u16 *param1) { + this->mUnk_14 = (s16 *) ::operator new(param1[0] * param1[1] * sizeof(s16), HeapIndex_1); + MI_CpuFill16(0xFFFF, this->mUnk_14, param1[0] * param1[1] * 2); + + u16 param1_1 = param1[1]; + + if (this->mUnk_0C != NULL) { + delete this->mUnk_0C; + } + + this->mUnk_0C = (s16 **) ::operator new(param1_1 * 4, HeapIndex_1); + this->mUnk_10 = (s16 **) ((uintptr_t) this->mUnk_0C + param1_1 * 4); + + for (u32 i = 0; i < this->mUnk_10 - this->mUnk_0C; i++) { + this->mUnk_0C[i] = &this->mUnk_14[param1[0] * i]; + } + + this->mUnk_18 = param1[0]; + this->mUnk_1A = param1[1]; +} + +void MapObjectManager::func_ov001_020baf28() { + if (this->mUnk_0C != NULL) { + delete this->mUnk_0C; + } + + this->mUnk_0C = NULL; + this->mUnk_10 = NULL; + + DELETE(this->mUnk_14); + + this->mUnk_18 = 0; + this->mUnk_1A = 0; +} + +DECL_INSTANCE(MapObjectManager, gpMapObjManager); diff --git a/src/001_SceneInit/PassengerManager_001.cpp b/src/001_SceneInit/PassengerManager_001.cpp index 263fdecb..03b33d16 100644 --- a/src/001_SceneInit/PassengerManager_001.cpp +++ b/src/001_SceneInit/PassengerManager_001.cpp @@ -1,7 +1,5 @@ #include "MainGame/PassengerManager.hpp" -THUMB_BEGIN - inline bool Test(s32 val) { bool ret = false; @@ -79,5 +77,3 @@ bool PassengerManager::func_ov001_020bfa1c() { } DECL_INSTANCE(PassengerManager, gpPassengerManager); - -THUMB_END diff --git a/src/001_SceneInit/Save/SaveManager_001.cpp b/src/001_SceneInit/Save/SaveManager_001.cpp index 3f8af919..31600b2a 100644 --- a/src/001_SceneInit/Save/SaveManager_001.cpp +++ b/src/001_SceneInit/Save/SaveManager_001.cpp @@ -1,28 +1,101 @@ #include "Game/Game.hpp" #include "Save/SaveManager.hpp" +#include "Unknown/UnkStruct_02049b80.hpp" +#include "Unknown/UnkStruct_ov000_020b50c0.hpp" -THUMB_BEGIN +extern "C" unk32 func_020328c8(void *, void *, size_t); void SaveManager::func_ov001_020ba670() { this->mUnk_000 = new(HeapIndex_1) SaveManager_00(0); - SaveSlot *pSaveSlot = gGame.mpSaveSlot; - this->mUnk_000->unk_00 = pSaveSlot->mInfoData[0].unk_000; - MI_CpuCopyFast(&pSaveSlot->mInfoData[0].unk_158, &this->mUnk_000->unk_004, sizeof(SaveFile_00000_0000_Data_158)); + GameSaveSlot *pGameSlot = gGame.mpSaveSlot; + this->mUnk_000->unk_00 = pGameSlot->mInfoData.unk_000; + MI_CpuCopyFast(&pGameSlot->mInfoData.unk_158, &this->mUnk_000->unk_004, sizeof(SaveFile_00000_0000_Data_158)); for (int i = 0; i < ARRAY_LEN(this->mUnk_000->unk_030); i++) { - MI_CpuCopy32(&pSaveSlot->mInfoData[0].unk_184[i], &this->mUnk_000->unk_030[i], sizeof(SaveFile_00000_0000_Data_184)); + MI_CpuCopy32(&pGameSlot->mInfoData.unk_184[i], &this->mUnk_000->unk_030[i], sizeof(SaveFile_00000_0000_Data_184)); } for (int i = 0; i < ARRAY_LEN(this->mUnk_000->unk_330); i++) { - MI_CpuCopy32(&pSaveSlot->mInfoData[0].unk_484[i], &this->mUnk_000->unk_330[i], sizeof(SaveFile_00000_0000_Data_484)); + MI_CpuCopy32(&pGameSlot->mInfoData.unk_484[i], &this->mUnk_000->unk_330[i], sizeof(SaveFile_00000_0000_Data_484)); } - MI_CpuCopy32(&pSaveSlot->mInfoData[0].unk_C84, &this->mUnk_000->unk_B30, sizeof(SaveFile_00000_0000_Data_C84)); - MI_CpuCopyFast(&pSaveSlot->mInfoData[0].unk_D24, &this->mUnk_000->unk_B40, sizeof(SaveFile_00000_0000_Data_D24)); - MI_CpuCopy32(&pSaveSlot->mInfoData[0].unk_D8C, &this->mUnk_000->unk_B68, sizeof(SaveFile_00000_0000_Data_D8C)); - MI_CpuCopyFast(&pSaveSlot->mInfoData[0].unk_D4C, &this->mUnk_000->unk_B78, sizeof(SaveFile_00000_0000_Data_D4C)); - MI_CpuCopyFast(&pSaveSlot->mInfoData[0].unk_D9C, &this->mUnk_21C, sizeof(SaveFile_00000_0000_Data_D9C)); + MI_CpuCopy32(&pGameSlot->mInfoData.unk_C84, &this->mUnk_000->unk_B30, sizeof(SaveFile_00000_0000_Data_C84)); + MI_CpuCopyFast(&pGameSlot->mInfoData.unk_D24, &this->mUnk_000->unk_B40, sizeof(SaveFile_00000_0000_Data_D24)); + MI_CpuCopy32(&pGameSlot->mInfoData.unk_D8C, &this->mUnk_000->unk_B68, sizeof(SaveFile_00000_0000_Data_D8C)); + MI_CpuCopyFast(&pGameSlot->mInfoData.unk_D4C, &this->mUnk_000->unk_B78, sizeof(SaveFile_00000_0000_Data_D4C)); + MI_CpuCopyFast(&pGameSlot->mInfoData.unk_D9C, &this->mUnk_21C, sizeof(SaveFile_00000_0000_Data_D9C)); } -THUMB_END +void SaveManager::func_ov001_020ba7a8() { + data_ov000_020b50c0.func_ov000_0206a6a4(gGame.mpSaveSlot->mUnk_2600.unk_01); +} + +void SaveManager::func_ov001_020ba7c8(u16 saveSlotIndex) { + SaveSlot *pMgrSlot = &this->mpSaveFile->mSlots[saveSlotIndex]; + GameSaveSlot *pGameSlot = gGame.mpSaveSlot; + + MI_CpuCopyFast(pMgrSlot->mInfoData, &pGameSlot->mInfoData, sizeof(SaveInfoData)); + MI_CpuCopyFast(pMgrSlot->mTreasureData, &pGameSlot->mTreasureData, sizeof(SaveTreasureData)); + MI_CpuCopyFast(pMgrSlot->mUnk_2600, &pGameSlot->mUnk_2600, sizeof(SaveFile_00000_2600_Data)); + MI_CpuCopyFast(pMgrSlot->mUnk_1D00, &pGameSlot->mUnk_1D00, sizeof(SaveFile_00000_1D00_Data)); + + data_02049b80.func_02013f80(0x00); + DELETE(this->mpSaveFile); + + if (this->mUnk_214 == 0) { + this->mUnk_206 = saveSlotIndex; + } +} + +// https://decomp.me/scratch/PykmO +void SaveManager::func_ov001_020ba858(void) { + if (this->mUnk_244 != NULL) { + return; + } + + this->mUnk_244 = new(HeapIndex_1) SaveManager_244[2]; + MI_CpuClearFast(&this->mUnk_244[0], sizeof(this->mUnk_244[0])); + MI_CpuClearFast(&this->mUnk_244[1], sizeof(this->mUnk_244[1])); + + if (this->mUnk_206 >= 0 && this->mUnk_214 == 0) { + CARD_LockBackup(this->mCardId); + CARD_ReadFlashAsync(this->mUnk_206 * 0x7A700 + offsetof(SaveSlot, mUnk_2500), this->mUnk_244, + sizeof(SaveManager_244) * 2, NULL, NULL); + this->mResultCode = CARD_GetResultCode(); + CARD_UnlockBackup(this->mCardId); + + if (this->mResultCode != CARD_RESULT_SUCCESS) { + this->mUnk_214 = 1; + } + + unk32 uVar3 = func_020328c8(&this->mUnk_004, &this->mUnk_244[0], sizeof(SaveManager_244) - 2); + unk32 uVar4 = func_020328c8(&this->mUnk_004, &this->mUnk_244[1], sizeof(SaveManager_244) - 2); + + bool unk_7E_0 = uVar3 == this->mUnk_244[0].mUnk_7E; + bool unk_7E_1 = uVar4 == this->mUnk_244[1].mUnk_7E; + + if (!unk_7E_0 && !unk_7E_1) { + MI_CpuClearFast(&this->mUnk_244[0], sizeof(SaveManager_244)); + MI_CpuClearFast(&this->mUnk_244[1], sizeof(SaveManager_244)); + return; + } + + if (!unk_7E_0) { + MI_CpuCopyFast(&this->mUnk_244[1], &this->mUnk_244[0], sizeof(SaveManager_244)); + return; + } + + if (!unk_7E_1) { + MI_CpuCopyFast(&this->mUnk_244[0], &this->mUnk_244[1], sizeof(SaveManager_244)); + return; + } + + if (uVar3 != uVar4) { + MI_CpuCopyFast(&this->mUnk_244[1], &this->mUnk_244[0], sizeof(SaveManager_244)); + return; + } + } +} + +SaveManager_244::SaveManager_244() {} diff --git a/src/001_SceneInit/SceneInitializers_001.cpp b/src/001_SceneInit/SceneInitializers_001.cpp index f78b193b..3c4a4e65 100644 --- a/src/001_SceneInit/SceneInitializers_001.cpp +++ b/src/001_SceneInit/SceneInitializers_001.cpp @@ -1,7 +1,3 @@ -#include "global.h" - -THUMB_BEGIN - #include "Actor/ActorManager.hpp" #include "Cutscene/Cutscene.hpp" #include "Game/GameModeManager.hpp" @@ -615,5 +611,3 @@ bool UnkStruct_WarpUnk1::func_ov001_020b7144() { return iVar9; } - -THUMB_END diff --git a/src/001_SceneInit/SysNew_001.cpp b/src/001_SceneInit/SysNew_001.cpp index e69de29b..c9859bc2 100644 --- a/src/001_SceneInit/SysNew_001.cpp +++ b/src/001_SceneInit/SysNew_001.cpp @@ -0,0 +1,57 @@ +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" + +extern "C" UnkStruct_02011e10_Sub1 *func_02001098(void *, size_t, unk32); +extern "C" UnkStruct_02011e10_Sub1 *func_020012e0(void *, size_t, unk32); +extern "C" void func_020010b8(void *); +extern "C" void func_02001300(void *); +extern "C" unk32 func_020013ac(void *param1); +extern "C" size_t func_020010e0(UnkStruct_02011e10_Sub1 *heapID, void *pFile, unk32 param3); + +void UnkStruct_02011e10::func_ov001_020ba588(unk32 param1, unk32 param2) { + this->mUnk_2C.func_020144cc(param1, param2, 0x01); + this->mUnk_00[HeapIndex_2] = this->mUnk_2C.mUnk_00; +} + +void UnkStruct_02011e10::func_ov001_020ba59c() { + this->mUnk_2C.func_02014538(); + this->mUnk_00[HeapIndex_2] = NULL; +} + +void UnkStruct_02011e10::func_ov001_020ba5ac(unk32 param1, unk32 param2) { + this->mUnk_44.func_020144cc(param1, param2, 0x01); + this->mUnk_00[HeapIndex_ITCM] = this->mUnk_44.mUnk_00; +} + +void UnkStruct_02011e10::func_ov001_020ba5c0() { + this->mUnk_44.func_02014538(); + this->mUnk_00[HeapIndex_ITCM] = NULL; +} + +void UnkStruct_02011e10::func_ov001_020ba5d0() { + size_t size = data_027e09a4->mUnk_60 == 2 ? 0xBB800 : 0x6A400; + this->mUnk_64 = ::operator new(size, HeapIndex_1); + this->mUnk_00[HeapIndex_DTCM] = func_02001098(this->mUnk_64, size, 0x02); +} + +void UnkStruct_02011e10::func_ov001_020ba608() { + func_020010b8(this->mUnk_00[HeapIndex_DTCM]); + DELETE(this->mUnk_64); + this->mUnk_00[HeapIndex_DTCM] = NULL; +} + +void UnkStruct_02011e10::func_ov001_020ba620() { + size_t size = 0x40000; + this->mUnk_68 = ::operator new(size, HeapIndex_1); + this->mUnk_00[HeapIndex_5] = func_020012e0(this->mUnk_68, size, 0x02); +} + +void UnkStruct_02011e10::func_ov001_020ba640() { + func_020010e0(this->mUnk_00[HeapIndex_1], this->mUnk_68, func_020013ac(this->mUnk_00[HeapIndex_5])); +} + +void UnkStruct_02011e10::func_ov001_020ba658() { + func_02001300(this->mUnk_00[HeapIndex_5]); + this->mUnk_00[HeapIndex_5] = NULL; + DELETE(this->mUnk_68); +} diff --git a/src/001_SceneInit/UnkStruct_027e095c_001.cpp b/src/001_SceneInit/UnkStruct_027e095c_001.cpp index e69de29b..9c26d0f0 100644 --- a/src/001_SceneInit/UnkStruct_027e095c_001.cpp +++ b/src/001_SceneInit/UnkStruct_027e095c_001.cpp @@ -0,0 +1,24 @@ +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e095c.hpp" + +extern "C" u32 func_0202447c(); +extern "C" u32 func_02024494(); +extern "C" void func_02006d8c(u16, unk32); +extern "C" void func_02006aa8(unk32, unk32); + +UnkStruct_027e095c *UnkStruct_027e095c::Create() { + return new(HeapIndex_1) UnkStruct_027e095c(); +} + +UnkStruct_027e095c::UnkStruct_027e095c() { + this->mUnk_8DC = &this->mUnk_2F4; + this->mUnk_940 = &this->mUnk_8E0; + func_02006d8c(func_0202447c() >> 0x11, 0x01); + func_02006aa8(func_02024494(), 0x01); + + for (VecFx32 *pIt = this->mUnk_000; pIt != &this->mUnk_000[ARRAY_LEN(this->mUnk_000)]; pIt++) { + VecFx32_Init(0, 0, 0, pIt); + } +} + +DECL_INSTANCE_CTOR(UnkStruct_027e095c, data_027e095c); diff --git a/src/001_SceneInit/UnkStruct_027e09bc_001.cpp b/src/001_SceneInit/UnkStruct_027e09bc_001.cpp index e69de29b..c8c07919 100644 --- a/src/001_SceneInit/UnkStruct_027e09bc_001.cpp +++ b/src/001_SceneInit/UnkStruct_027e09bc_001.cpp @@ -0,0 +1,91 @@ +#include "System/SysNew.hpp" +#include "Unknown/UnkStruct_027e09a4.hpp" +#include "Unknown/UnkStruct_027e09bc.hpp" +#include "Unknown/UnkStruct_ov020_020e8544.hpp" + +UnkStruct_027e09bc *UnkStruct_027e09bc::Create() { + return new(HeapIndex_1) UnkStruct_027e09bc(); +} + +UnkStruct_027e09bc::UnkStruct_027e09bc() { + this->mUnk_04 = NULL; + this->mUnk_08 = 0; + this->mUnk_0C = NULL; + this->mUnk_10 = NULL; + this->mUnk_14[0] = NULL; + this->mUnk_14[1] = NULL; + this->mUnk_14[2] = NULL; + this->mUnk_14[3] = NULL; + + if (data_027e09a4->mUnk_60 == 0) { + this->mUnk_0C = new(HeapIndex_1) UnkStruct_027e09bc_0C(0); + this->mUnk_10 = new(HeapIndex_1) UnkStruct_027e09bc_0C(1); + this->func_ov000_020771b8(0x00); + this->func_ov000_020771b8(0x01); + } else if (data_027e09a4->mUnk_60 == 1) { + this->mUnk_14[0] = new(HeapIndex_1) UnkStruct_027e09bc_0C(0); + this->mUnk_14[1] = new(HeapIndex_1) UnkStruct_027e09bc_0C(1); + this->mUnk_14[2] = new(HeapIndex_1) UnkStruct_027e09bc_0C(2); + this->mUnk_14[3] = new(HeapIndex_1) UnkStruct_027e09bc_0C(3); + this->mUnk_04 = this->mUnk_14[data_ov020_020e8544->vfunc_20()]; + } +} + +UnkStruct_027e09bc::~UnkStruct_027e09bc() { + delete this->mUnk_0C; + delete this->mUnk_10; + delete this->mUnk_14[0]; + delete this->mUnk_14[1]; + delete this->mUnk_14[2]; + delete this->mUnk_14[3]; + + this->mUnk_0C = NULL; + this->mUnk_10 = NULL; + this->mUnk_14[0] = NULL; + this->mUnk_14[1] = NULL; + this->mUnk_14[2] = NULL; + this->mUnk_14[3] = NULL; +} + +void UnkStruct_027e09bc::func_ov001_020bab5c() { + switch ((s32) data_027e09a4->CurrentSceneIndex()) { + case SceneIndex_b_sand: + case SceneIndex_tekiya09: + data_027e09bc->mUnk_10->mUnk_264 = 0x7B; + break; + case SceneIndex_b_last2: + data_027e09bc->mUnk_10->mUnk_264 = 0x00; + break; + case SceneIndex_b_last22: + data_027e09bc->mUnk_10->mUnk_264 = 0x00; + break; + default: + if (data_027e09a4->mUnk_60 == 0) { + data_027e09bc->mUnk_10->func_ov000_02078cec(); + } + break; + } +} + +void UnkStruct_027e09bc::func_ov001_020babc8() { + if (data_027e09a4->mUnk_60 == 0) { + this->mUnk_0C->func_ov000_02078ba4(); + this->mUnk_10->func_ov000_02078ba4(); + } +} + +void UnkStruct_027e09bc::func_ov001_020babe8() { + if (data_027e09a4->mUnk_60 == 0) { + this->mUnk_0C->mUnk_280 = 0; + this->mUnk_10->mUnk_280 = 0; + } +} + +void UnkStruct_027e09bc::func_ov001_020bac08() { + if (data_027e09a4->mUnk_60 == 0) { + this->mUnk_0C->mUnk_280 = 0; + this->mUnk_10->mUnk_280 = 0; + } +} + +DECL_INSTANCE(UnkStruct_027e09bc, data_027e09bc); diff --git a/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp b/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp index 6f55f427..cf89d57e 100644 --- a/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp +++ b/src/001_SceneInit/UnkStruct_027e0cd8_0C_001.cpp @@ -124,7 +124,7 @@ UnkStruct_027e0cd8_0C_Base::UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param this->mUnk_13C.Init(data_ov001_020c40f4, 0x40); Vec2s_Copy((Vec2s *) &this->mUnk_09C, &local_30); - gpMapObjManager->func_ov001_020baea0(&local_30); + gpMapObjManager->func_ov001_020baea0((u16 *) &local_30); data_027e095c->func_ov000_020592a0(); } diff --git a/src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp b/src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp index 73cd3be4..b06e9ebe 100644 --- a/src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp +++ b/src/001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp @@ -3,8 +3,6 @@ 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(); @@ -71,5 +69,3 @@ void UnkStruct_027e0cf8_08_00::func_ov001_020bfb20() { Vec2s_Copy(&this->mUnk_13C[i], &this->mUnk_094[iVar2]); } } - -THUMB_END diff --git a/src/018_StartUp/StartUpInitializers.cpp b/src/018_StartUp/StartUpInitializers.cpp index eccfdb58..e3389bc6 100644 --- a/src/018_StartUp/StartUpInitializers.cpp +++ b/src/018_StartUp/StartUpInitializers.cpp @@ -127,9 +127,9 @@ SaveManager::SaveManager() { func_020327c8(&this->mUnk_004, 0x1021); - this->mUnk_204 = OS_GetLockID(); - int uVar8 = 1; - CARD_LockBackup(this->mUnk_204); + this->mCardId = OS_GetLockID(); + int uVar8 = 1; + CARD_LockBackup(this->mCardId); if (CARD_IdentifyBackup(CARD_BACKUP_TYPE_FLASH_8MBITS)) { stack_struct stack[MAX_SAVE_SLOTS]; @@ -163,10 +163,10 @@ SaveManager::SaveManager() { } } - this->mUnk_20C = CARD_GetResultCode(); - CARD_UnlockBackup(this->mUnk_204); + this->mResultCode = CARD_GetResultCode(); + CARD_UnlockBackup(this->mCardId); - if (this->mUnk_20C != 0) { + if (this->mResultCode != CARD_RESULT_SUCCESS) { this->mUnk_214 = uVar8; } } diff --git a/src/019_MainSelect/019_SaveManager.cpp b/src/019_MainSelect/019_SaveManager.cpp index 73ad9078..e84ef927 100644 --- a/src/019_MainSelect/019_SaveManager.cpp +++ b/src/019_MainSelect/019_SaveManager.cpp @@ -26,13 +26,13 @@ const unk32 data_ov019_020d1be8[] = { }; void SaveManager::func_ov019_020d086c(u16 param1) { - CARD_LockBackup(gSaveManager.mUnk_204); + CARD_LockBackup(gSaveManager.mCardId); STATIC_PTMFCALLBACK(PTMF, gSaveManager.mUnk_23C, gSaveManager.mpSaveFile); - gSaveManager.mUnk_20C = CARD_GetResultCode(); - CARD_UnlockBackup(gSaveManager.mUnk_204); + gSaveManager.mResultCode = CARD_GetResultCode(); + CARD_UnlockBackup(gSaveManager.mCardId); - if (gSaveManager.mUnk_20C != 0) { + if (gSaveManager.mResultCode != CARD_RESULT_SUCCESS) { gSaveManager.mUnk_214 = gSaveManager.mUnk_210; } @@ -79,25 +79,25 @@ void SaveManager::func_ov019_020d0a04(u16 saveSlotIndex) { void SaveManager::func_ov019_020d0a2c(u16 saveSlotIndex) { data_02049bd4.mUnk_04++; gSaveManager.mpSaveFile->mSaveSlotIndex = saveSlotIndex; - CARD_LockBackup(gSaveManager.mUnk_204); + CARD_LockBackup(gSaveManager.mCardId); gSaveManager.mUnk_210 = 1; gSaveManager.mpSaveFile->func_ov019_020d1634(); - gSaveManager.mUnk_20C = CARD_GetResultCode(); + gSaveManager.mResultCode = CARD_GetResultCode(); - if (gSaveManager.mUnk_20C != 0) { + if (gSaveManager.mResultCode != CARD_RESULT_SUCCESS) { gSaveManager.mUnk_214 = gSaveManager.mUnk_210; return; } gSaveManager.mUnk_210 = 2; gSaveManager.mpSaveFile->func_ov019_020d16d0(); - gSaveManager.mUnk_20C = CARD_GetResultCode(); + gSaveManager.mResultCode = CARD_GetResultCode(); - if (gSaveManager.mUnk_20C != 0) { + if (gSaveManager.mResultCode != CARD_RESULT_SUCCESS) { gSaveManager.mUnk_214 = gSaveManager.mUnk_210; } - CARD_UnlockBackup(gSaveManager.mUnk_204); + CARD_UnlockBackup(gSaveManager.mCardId); gSaveManager.mUnk_210 = 0; data_02049bd4.mUnk_04--; } diff --git a/src/024_MainGame/Game/AdventureModeManager_024.cpp b/src/024_MainGame/Game/AdventureModeManager_024.cpp index 428353c9..d643fa4b 100644 --- a/src/024_MainGame/Game/AdventureModeManager_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_024.cpp @@ -424,7 +424,7 @@ void AdventureModeManager::func_ov024_020c5cec() { gpUICounterManager->func_ov024_020cd420(); if (!data_027e09a4->IsTrain()) { - gpUICounterManager->func_ov024_020cd458(data_027e0ce0->mUnk_2C->mEquippedItem, true); + gpUICounterManager->func_ov024_020cd458(data_027e0ce0->mUnk_2C->GetCurrentItem(), true); if (gOverlayManager.IsPlayerSub() && data_0204a088->mUnk_00 == OverlayIndex_SceneInit) { this->mUnk_168->func_ov031_0210df60(1); diff --git a/src/024_MainGame/Train/UnkTrainSystem1_024.cpp b/src/024_MainGame/Train/UnkTrainSystem1_024.cpp index c3e1e52c..ab153cee 100644 --- a/src/024_MainGame/Train/UnkTrainSystem1_024.cpp +++ b/src/024_MainGame/Train/UnkTrainSystem1_024.cpp @@ -125,9 +125,9 @@ void UnkTrainSystem1::func_ov024_020d562c(const VecFx32 *param1, fx32 param2) { 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; + temp_r1_3.x = temp_r8_2->mUnk_034.x; + temp_r1_3.z = temp_r8_2->mUnk_034.z; + temp_r1_3.y = temp_r8_2->mUnk_034.y; fx32 x = temp_r1_3.x - param1->x; temp_r1_3.x = x; diff --git a/src/024_MainGame/UICounterManager.cpp b/src/024_MainGame/UICounterManager.cpp index 6624575c..3f963067 100644 --- a/src/024_MainGame/UICounterManager.cpp +++ b/src/024_MainGame/UICounterManager.cpp @@ -78,7 +78,7 @@ UICounterManager::UICounterManager() : } } - if (data_027e09a4->IsDungeonTower() && !GET_FLAG(data_027e0ce0->mUnk_2C->mFlags, ItemFlag_LokomoSword)) { + if (data_027e09a4->IsDungeonTower() && !data_027e0ce0->mUnk_2C->HasItem(ItemFlag_LokomoSword)) { this->mpTears = new(HeapIndex_1) UICounter_TearsOfLight(); } @@ -144,7 +144,7 @@ void UICounterManager::func_ov024_020cd150() { if (!data_027e09a4->IsTrain()) { this->mpKeys->func_ov024_020cf698(); this->mpItems->func_ov031_0210eeb4(); - gpUICounterManager->func_ov024_020cd458(data_027e0ce0->mUnk_2C->mEquippedItem, true); + gpUICounterManager->func_ov024_020cd458(data_027e0ce0->mUnk_2C->GetCurrentItem(), true); } if (this->mpTears != NULL) { @@ -793,7 +793,7 @@ UICounter_Rupees::UICounter_Rupees() : Vec2s_CopySub(&local_30.mPos, &local_60.mPos, &this->mUnk_0FC); - this->mUnk_05C.func_ov000_02065b48(data_027e0ce0->mUnk_2C->mNumRupees, 0); + this->mUnk_05C.func_ov000_02065b48(data_027e0ce0->mUnk_2C->GetNumRupees(), 0); UnkStruct_ov019_020d24c8_28_258 local_78((volatile s32) sVar2, 4); s16 temp_r0 = local_78.mPos.x + local_78.mUnk_0E.x; @@ -826,7 +826,7 @@ UICounter_Rupees::UICounter_Rupees() : 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_05C.func_ov000_02065b48(data_027e0ce0->mUnk_2C->GetNumRupees(), 0); this->mUnk_104 = false; } @@ -864,7 +864,7 @@ void UICounter_Rupees::func_ov024_020ce5cc() { } this->mUnk_018.UpdateLogic(); - this->mUnk_05C.func_ov000_02065b48(data_027e0ce0->mUnk_2C->mNumRupees, 1); + this->mUnk_05C.func_ov000_02065b48(data_027e0ce0->mUnk_2C->GetNumRupees(), 1); if (data_0204a110.mUnk_000 == 1) { switch (func_02015788(this->mUnk_05C.mUnk_94)) { diff --git a/src/031_Land/Actor/ActorItemBoomerang.cpp b/src/031_Land/Actor/ActorItemBoomerang.cpp index 4e201a14..7021feaf 100644 --- a/src/031_Land/Actor/ActorItemBoomerang.cpp +++ b/src/031_Land/Actor/ActorItemBoomerang.cpp @@ -128,7 +128,7 @@ void ActorItemBoomerang::vfunc_20() { func_01ffe6c4(&sp54, this->mRef, &this->mPos, &this->mPrevPos, 0x1F, NULL, &this->mUnk_11C); if ((tmp | sp54->func_ov000_0207e294((Cylinder *) &this->mUnk_10C)) == 0 && !var1) { - if (data_027e0ce0->mUnk_2C->mEquippedItem != ItemFlag_Boomerang) { + if (data_027e0ce0->mUnk_2C->GetCurrentItem() != ItemFlag_Boomerang) { this->SetState(ActorItemBoomerangState_1); return; } diff --git a/src/031_Land/Actor/ActorItemDrop.cpp b/src/031_Land/Actor/ActorItemDrop.cpp index b074346e..d6786a79 100644 --- a/src/031_Land/Actor/ActorItemDrop.cpp +++ b/src/031_Land/Actor/ActorItemDrop.cpp @@ -106,7 +106,7 @@ ActorItemDrop::ActorItemDrop() : switch (this->GetActorId()) { case ActorId_ArrowDrop: - if (GET_FLAG(data_027e0ce0->mUnk_2C->mFlags, ItemFlag_Bow)) { + if (data_027e0ce0->mUnk_2C->HasItem(ItemFlag_Bow)) { this->mItemTypeId = ItemDropType_Arrow; this->mUnk_D8 = FLOAT_TO_FX32(0.5f); } else { @@ -114,7 +114,7 @@ ActorItemDrop::ActorItemDrop() : } break; case ActorId_BombDrop: - if (GET_FLAG(data_027e0ce0->mUnk_2C->mFlags, ItemFlag_Bombs)) { + if (data_027e0ce0->mUnk_2C->HasItem(ItemFlag_Bombs)) { this->mItemTypeId = ItemDropType_Bomb; this->mUnk_D8 = FLOAT_TO_FX32(0.3f); } else { @@ -433,10 +433,10 @@ void ActorItemDrop::func_ov031_020fa72c() { bool executeFunction = true; switch (this->mItemTypeId) { case ItemDropType_Arrow: - data_027e0ce0->mUnk_2C->GiveArrows(5); + data_027e0ce0->mUnk_2C->GetInventory()->GiveArrows(5); break; case ItemDropType_Bomb: - data_027e0ce0->mUnk_2C->GiveBombs(3); + data_027e0ce0->mUnk_2C->GetInventory()->GiveBombs(3); break; case ItemDropType_RedPotion: executeFunction = data_027e0d34->TryItemGive(ItemId_RedPotion); diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp index 55f44f74..805a9acd 100644 --- a/src/031_Land/Actor/ActorRupee.cpp +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -176,7 +176,7 @@ void ActorRupee::func_ov031_020e9068() { break; default: { ItemManager *pItemManager = data_027e0ce0->mUnk_2C; - pItemManager->GiveRupees(func_02017158(), false, true); + pItemManager->GetInventory()->GiveRupees(func_02017158(), false, true); var_r4 = true; break; } diff --git a/src/031_Land/MapObject/MapObjectChestBase.cpp b/src/031_Land/MapObject/MapObjectChestBase.cpp index a603a13b..08a12a97 100644 --- a/src/031_Land/MapObject/MapObjectChestBase.cpp +++ b/src/031_Land/MapObject/MapObjectChestBase.cpp @@ -222,7 +222,7 @@ ItemId MapObjectChestBase::func_ov031_021037d0() { this->vfunc_38(7, 0); - if ((u32) this->mItemId - ItemId_RedPotion <= 2 && data_027e0ce0->mUnk_2C->PotionSlotsFull()) { + if ((u32) this->mItemId - ItemId_RedPotion <= 2 && data_027e0ce0->mUnk_2C->GetInventory()->PotionSlotsFull()) { return ItemId_BigGreenRupee; } diff --git a/src/031_Land/MapObject/MapObjectDoorKey.cpp b/src/031_Land/MapObject/MapObjectDoorKey.cpp index 425cd51d..6e47e8bc 100644 --- a/src/031_Land/MapObject/MapObjectDoorKey.cpp +++ b/src/031_Land/MapObject/MapObjectDoorKey.cpp @@ -98,7 +98,7 @@ void MapObjectDoorKey::vfunc_5C(unk32 param1, unk32 param2) { switch (this->mUnk_16) { case 3: if (param2 == 0) { - data_027e0ce0->mUnk_2C->GiveSmallKeys(-1); + data_027e0ce0->mUnk_2C->GetInventory()->GiveSmallKeys(-1); } UNSET_FLAG(this->mFlags, MapObjFlag_9); @@ -117,7 +117,7 @@ bool MapObjectDoorKey::func_ov031_020fea88(void) { return false; } - if (data_027e0ce0->mUnk_2C->mKeyAmount != 0) { + if (data_027e0ce0->mUnk_2C->GetKeyAmount() != 0) { return true; } @@ -129,7 +129,7 @@ unk32 MapObjectDoorKey::vfunc_28(void) { return -1; } - if (data_027e0ce0->mUnk_2C->mKeyAmount == 0) { + if (data_027e0ce0->mUnk_2C->GetKeyAmount() == 0) { return -1; } diff --git a/src/036_MapA5/Actor/ActorUnkGORY.cpp b/src/036_MapA5/Actor/ActorUnkGORY.cpp index dca2085c..6581bd52 100644 --- a/src/036_MapA5/Actor/ActorUnkGORY.cpp +++ b/src/036_MapA5/Actor/ActorUnkGORY.cpp @@ -35,9 +35,9 @@ ItemId ActorUnkGORY::func_ov036_0211bcb0(unk32 param1) { return ItemId_TenPriceCard; } - if (data_027e0ce0->mUnk_2C->mQuiverCapacity == UpgradeCapacity_Tier1) { + if (data_027e0ce0->mUnk_2C->GetQuiverCap() == UpgradeCapacity_Tier1) { return ItemId_QuiverMedium; - } else if (data_027e0ce0->mUnk_2C->mQuiverCapacity == UpgradeCapacity_Tier2) { + } else if (data_027e0ce0->mUnk_2C->GetQuiverCap() == UpgradeCapacity_Tier2) { return ItemId_QuiverLarge; } else { return ItemId_TenPriceCard; diff --git a/src/036_MapA5/Actor/ActorUnkSHIT.cpp b/src/036_MapA5/Actor/ActorUnkSHIT.cpp index 8074258b..4f601870 100644 --- a/src/036_MapA5/Actor/ActorUnkSHIT.cpp +++ b/src/036_MapA5/Actor/ActorUnkSHIT.cpp @@ -108,7 +108,7 @@ u16 ActorUnkSHIT::func_ov036_0211ceec(void) { break; } - return 9999; + return MAX_RUPEES; } unk32 ActorUnkSHIT::func_ov036_0211d0a8(void) { @@ -177,7 +177,7 @@ bool ActorUnkSHIT::func_ov036_0211d2dc(void) { switch (this->mItemId) { case ItemId_NormalShield: - if (GET_FLAG(pIVar4->mFlags, ItemFlag_Shield)) { + if (pIVar4->HasItem(ItemFlag_Shield)) { return false; } @@ -185,7 +185,7 @@ bool ActorUnkSHIT::func_ov036_0211d2dc(void) { case ItemId_RedPotion: case ItemId_PurplePotion: case ItemId_YellowPotion: - if (pIVar4->PotionSlotsFull()) { + if (pIVar4->GetInventory()->PotionSlotsFull()) { return false; } @@ -231,26 +231,26 @@ bool ActorUnkSHIT::func_ov036_0211d2dc(void) { break; case ItemId_BombsRefill: - if (!GET_FLAG(pIVar4->mFlags, ItemFlag_Bombs)) { + if (!pIVar4->HasItem(ItemFlag_Bombs)) { return false; } { - u8 amount = pIVar4->mBombAmount; - if (amount >= pIVar4->GetBombBagCapacity()) { + u8 amount = pIVar4->GetBombAmount(); + if (amount >= pIVar4->GetInventory()->GetBombBagCapacity()) { return false; } } break; case ItemId_ArrowsRefill: - if (!GET_FLAG(pIVar4->mFlags, ItemFlag_Bow)) { + if (!pIVar4->HasItem(ItemFlag_Bow)) { return false; } { - u8 amount = pIVar4->mArrowAmount; - if (amount >= pIVar4->GetQuiverCapacity()) { + u8 amount = pIVar4->GetArrowAmount(); + if (amount >= pIVar4->GetInventory()->GetQuiverCapacity()) { return false; } } @@ -258,7 +258,7 @@ bool ActorUnkSHIT::func_ov036_0211d2dc(void) { break; case ItemId_QuiverMedium: case ItemId_QuiverLarge: - if (!GET_FLAG(pIVar4->mFlags, ItemFlag_Bow)) { + if (!pIVar4->HasItem(ItemFlag_Bow)) { return false; } @@ -324,10 +324,10 @@ void ActorUnkSHIT::func_ov036_0211d570(unk32 param1) { this->mUnk_2D3 = true; break; case ItemId_BombsRefill: - pIVar4->GiveBombs(10); + pIVar4->GetInventory()->GiveBombs(10); break; case ItemId_ArrowsRefill: - pIVar4->GiveArrows(10); + pIVar4->GetInventory()->GiveArrows(10); break; case ItemId_QuiverMedium: case ItemId_QuiverLarge: @@ -345,7 +345,7 @@ void ActorUnkSHIT::func_ov036_0211d570(unk32 param1) { } if (param1 == 0) { - pIVar4->GiveRupees(-this->func_ov036_0211cddc(), false, false); + pIVar4->GetInventory()->GiveRupees(-this->func_ov036_0211cddc(), false, false); } } diff --git a/src/110_PlayerGet/PlayerGet.cpp b/src/110_PlayerGet/PlayerGet.cpp index 894505e4..021185e6 100644 --- a/src/110_PlayerGet/PlayerGet.cpp +++ b/src/110_PlayerGet/PlayerGet.cpp @@ -70,7 +70,7 @@ static inline s16 GetItemFlag(ItemId itemId) { return ItemFlag_None; } -bool ItemManager::func_ov110_02184a40(ItemId itemId) { +bool Inventory::func_ov110_02184a40(ItemId itemId) { switch (itemId) { case ItemId_NormalKey: this->GiveSmallKeys(1); @@ -98,19 +98,11 @@ bool ItemManager::func_ov110_02184a40(ItemId itemId) { break; case ItemId_QuiverMedium: case ItemId_QuiverLarge: - if (this->mQuiverCapacity < UpgradeCapacity_Tier3) { - this->mQuiverCapacity++; - } - - this->mArrowAmount = this->GetQuiverCapacity(); + this->SetNextQuiverCapacity(); break; case ItemId_BombBagMedium: case ItemId_BombBagLarge: - if (this->mBombBagCapacity < UpgradeCapacity_Tier3) { - this->mBombBagCapacity++; - } - - this->mBombAmount = this->GetBombBagCapacity(); + this->SetNextBombBagCapacity(); break; case ItemId_RedPotion: this->GivePotion(PotionType_Red); @@ -479,12 +471,12 @@ PlayerGet::~PlayerGet() { bool PlayerGet::func_ov110_02186b8c() { switch (this->mUnk_54.mItemId) { case ItemId_NormalShield: - if (this->mUnk_28->pItemManager->mUnk_12 & 2) { + if (this->mUnk_28->pItemManager->HasUnk12(2)) { return true; } break; case ItemId_AncientShield: - if (!(this->mUnk_28->pItemManager->mUnk_12 & 2)) { + if (!(this->mUnk_28->pItemManager->HasUnk12(2))) { return true; } break; @@ -520,22 +512,22 @@ void PlayerGet::vfunc_0C(UnkStruct_PlayerGet_vfunc_0C_param1 *param1) { case ItemId_BombBag: case ItemId_BombBagMedium: case ItemId_BombBagLarge: - if (GET_FLAG(pItemManager->mFlags, ItemFlag_Bombs) == 0) { + if (!pItemManager->HasItem(ItemFlag_Bombs)) { itemId = ItemId_BombBag; - } else if (pItemManager->mBombBagCapacity == UpgradeCapacity_Tier1) { + } else if (pItemManager->GetBombsCap() == UpgradeCapacity_Tier1) { itemId = ItemId_BombBagMedium; - } else if (pItemManager->mBombBagCapacity == UpgradeCapacity_Tier2) { + } else if (pItemManager->GetBombsCap() == UpgradeCapacity_Tier2) { itemId = ItemId_BombBagLarge; } break; case ItemId_NormalBow: case ItemId_QuiverMedium: case ItemId_QuiverLarge: - if (GET_FLAG(pItemManager->mFlags, ItemFlag_Bow) == 0) { + if (!pItemManager->HasItem(ItemFlag_Bow)) { itemId = ItemId_NormalBow; - } else if (pItemManager->mQuiverCapacity == UpgradeCapacity_Tier1) { + } else if (pItemManager->GetQuiverCap() == UpgradeCapacity_Tier1) { itemId = ItemId_QuiverMedium; - } else if (pItemManager->mQuiverCapacity == UpgradeCapacity_Tier2) { + } else if (pItemManager->GetQuiverCap() == UpgradeCapacity_Tier2) { itemId = ItemId_QuiverLarge; } break; @@ -850,7 +842,7 @@ void PlayerGet::vfunc_10(unk32 param1, unk32 param2) { } if (this->mUnk_72 == 0 && var_r1_2) { - temp_r6 = this->mUnk_28->pItemManager->func_ov110_02184a40(this->mUnk_54.mItemId); + temp_r6 = this->mUnk_28->pItemManager->GetInventory()->func_ov110_02184a40(this->mUnk_54.mItemId); switch (this->mUnk_54.mItemId) { case ItemId_NormalShield: @@ -862,7 +854,7 @@ void PlayerGet::vfunc_10(unk32 param1, unk32 param2) { if ((temp_r0_3 != NULL) && (temp_r0_3->GetActorId() == ActorId_NormalShield)) { if (this->func_ov110_02186b8c()) { - this->mUnk_28->pItemManager->mUnk_12 ^= 2; + this->mUnk_28->pItemManager->FlipUnk12(2); } temp_r0_3->func_ov062_02158ce8(); @@ -870,11 +862,11 @@ void PlayerGet::vfunc_10(unk32 param1, unk32 param2) { } else { if (this->mUnk_54.mItemId == ItemId_AncientShield) { if (this->func_ov110_02186b8c()) { - this->mUnk_28->pItemManager->mUnk_12 ^= 2; + this->mUnk_28->pItemManager->FlipUnk12(2); } } else if (this->mUnk_54.mItemId == ItemId_NormalShield) { if (this->func_ov110_02186b8c()) { - this->mUnk_28->pItemManager->mUnk_12 ^= 2; + this->mUnk_28->pItemManager->FlipUnk12(2); } } } diff --git a/src/112_PlayerSceneChange/PlayerSceneChange.cpp b/src/112_PlayerSceneChange/PlayerSceneChange.cpp index 857d15a7..b61ef973 100644 --- a/src/112_PlayerSceneChange/PlayerSceneChange.cpp +++ b/src/112_PlayerSceneChange/PlayerSceneChange.cpp @@ -322,7 +322,7 @@ void PlayerSceneChange::vfunc_0C(UnkStruct_PlayerGet_vfunc_0C_param1 *param1) { } } - if ((this->mUnk_24->mUnk_104 & 0x10) || this->mUnk_28->pItemManager->mTearsAmount == 3) { + if ((this->mUnk_24->mUnk_104 & 0x10) || this->mUnk_28->pItemManager->GetTearsAmount() == MAX_TEARS_OF_LIGHT) { struct { unk32 actorId; void *ptr; diff --git a/src/Main/Game/Game.cpp b/src/Main/Game/Game.cpp index dd9d7a42..ea537d00 100644 --- a/src/Main/Game/Game.cpp +++ b/src/Main/Game/Game.cpp @@ -35,8 +35,8 @@ void Game::Run() { data_0204999c.func_02013014(); { - UnkDataStruct2 local_28(0x1300); - this->mpSaveSlot = (SaveSlot *) local_28.unk_00; + UnkDataStruct2 local_28(sizeof(GameSaveSlot)); + this->mpSaveSlot = (GameSaveSlot *) local_28.unk_00; if (this->mpCurrentGameMode != NULL) { delete this->mpCurrentGameMode;