From 453db24d4183ce0f2cc59de9493c1493e631b081 Mon Sep 17 00:00:00 2001 From: Yanis <35189056+Yanis002@users.noreply.github.com> Date: Wed, 17 Jun 2026 22:20:45 +0200 Subject: [PATCH] Misc Stuff 6 (#78) * gcc fixes * document random things in UnkStruct_027e09b8_00 * match func_ov001_020ba670 and rabbit docs * match func_ov026_0211f394 * fix build issues * match func_ov026_0211e3e0 * match func_ov026_02102924 * move structs to header * document train rope thing * MapObject OK and ActorRef stuff * match more actor funcs * fix regressions * fix build issues * more regressions fixes * name keyt grab func * UnkSubStruct19 -> CellAnimObject (based on the only assert string) * fix build issues due to merge * Actor::mUnk_4C -> Actor::mState + related changes * create GetActorPtr template inline for Actor_c4 * ActorUnk_ov000_020a8bb0 -> Actor_Derived1 * actor: add comments about mUnk_50/52 and change type of mAngle --- config/eur/arm9/itcm/delinks.txt | 3 + config/eur/arm9/itcm/symbols.txt | 2 +- config/eur/arm9/overlays/ov000/delinks.txt | 3 +- config/eur/arm9/overlays/ov000/symbols.txt | 142 +++++++-------- config/eur/arm9/overlays/ov001/delinks.txt | 3 + config/eur/arm9/overlays/ov024/delinks.txt | 2 +- config/eur/arm9/overlays/ov024/symbols.txt | 20 +-- config/eur/arm9/overlays/ov026/delinks.txt | 4 + config/eur/arm9/overlays/ov026/symbols.txt | 4 +- config/eur/arm9/overlays/ov031/symbols.txt | 18 +- config/eur/arm9/overlays/ov041/symbols.txt | 2 +- config/eur/arm9/overlays/ov057/relocs.txt | 2 +- config/eur/arm9/symbols.txt | 2 +- config/jp/arm9/itcm/delinks.txt | 3 + config/jp/arm9/itcm/symbols.txt | 2 +- config/jp/arm9/overlays/ov000/delinks.txt | 3 +- config/jp/arm9/overlays/ov000/symbols.txt | 142 +++++++-------- config/jp/arm9/overlays/ov001/delinks.txt | 3 + config/jp/arm9/overlays/ov024/delinks.txt | 2 +- config/jp/arm9/overlays/ov024/symbols.txt | 20 +-- config/jp/arm9/overlays/ov026/delinks.txt | 4 + config/jp/arm9/overlays/ov026/symbols.txt | 6 +- config/jp/arm9/overlays/ov031/symbols.txt | 18 +- config/jp/arm9/overlays/ov041/symbols.txt | 2 +- config/jp/arm9/symbols.txt | 2 +- include/Actor/Actor.hpp | 42 +++-- include/Actor/ActorEventIcon.hpp | 2 +- include/Actor/ActorHeart.hpp | 15 +- include/Actor/ActorItemDrop.hpp | 58 +++--- include/Actor/ActorManager.hpp | 5 +- include/Actor/ActorRupee.hpp | 21 ++- include/Actor/ActorUnkKEYT.hpp | 2 +- include/Actor/ActorUnkOBPC.hpp | 10 +- include/Actor/ActorUnkRB1T.hpp | 33 +++- include/Actor/ActorUnkSWOB.hpp | 12 +- include/Actor/ActorUnkSWTM.hpp | 11 +- ..._ov000_020a8bb0.hpp => Actor_Derived1.hpp} | 46 ++--- include/Animation/CellAnimObject.hpp | 47 +++++ include/FileSelect/FileSelect.hpp | 2 +- include/FileSelect/FileSelectMain.hpp | 4 +- include/FileSelect/UnkSubStruct9.hpp | 20 +-- include/Game/Game.hpp | 2 +- include/MapObject/MapObject.hpp | 3 +- include/MapObject/MapObjectChestBase.hpp | 2 +- include/Message/BMG.hpp | 2 +- include/Player/Player.hpp | 13 +- include/Save/SaveFile.hpp | 167 +++++++++++++----- include/Save/SaveManager.hpp | 41 +++-- include/System/SysNew.hpp | 2 +- include/TitleScreen/TitleScreen.hpp | 12 +- include/Unknown/Common.hpp | 103 ++++------- include/Unknown/UICounterManager.hpp | 20 +-- include/Unknown/UnkStruct_0204af1c.hpp | 4 +- include/Unknown/UnkStruct_027e09b8.hpp | 7 +- include/Unknown/UnkStruct_027e0ce0.hpp | 22 ++- include/Unknown/UnkStruct_027e0cf8.hpp | 2 +- include/Unknown/UnkStruct_ov000_0208f820.hpp | 27 ++- include/Unknown/UnkStruct_ov000_020b51b8.hpp | 2 +- include/Unknown/UnkSystem1.hpp | 3 +- include/math.hpp | 4 +- libs/nitro/include/nitro/gx.h | 2 +- libs/nns/include/nns/anim.h | 55 ++++++ src/000_Second/Actor/Actor.cpp | 83 ++++----- src/000_Second/Actor/ActorUnkSWOB.cpp | 21 +-- src/000_Second/Actor/ActorUnkSWTM.cpp | 44 +++-- ..._ov000_020a8bb0.cpp => Actor_Derived1.cpp} | 114 ++++++------ src/000_Second/MapObject/MapObject.cpp | 43 ++--- src/000_Second/UnkSystem1_Base.cpp | 4 +- src/001_SceneInit/Item/ItemManager_001.cpp | 2 +- src/001_SceneInit/Save/SaveManager_001.cpp | 28 +++ src/018_StartUp/GameModeStartUp.cpp | 2 +- src/019_MainSelect/019_SaveManager.cpp | 2 +- src/024_MainGame/Actor/ActorUnkOBPC.cpp | 26 ++- ...0_EC_024.cpp => Actor_Derived1_EC_024.cpp} | 22 +-- .../AdventureModeManager_1B8_Base_024.cpp | 4 +- src/024_MainGame/UICounterManager.cpp | 2 +- src/026_Train/Actor/ActorUnkRB1T.cpp | 49 ++++- src/026_Train/code_02102924.cpp | 100 +++++++++++ src/031_Land/Actor/ActorHeart.cpp | 99 +++++------ src/031_Land/Actor/ActorItemDrop.cpp | 106 ++++++----- src/031_Land/Actor/ActorRupee.cpp | 151 ++++++---------- src/031_Land/MapObject/MapObjectChestBase.cpp | 2 +- src/031_Land/MapObject/MapObjectDoorBase.cpp | 6 +- src/041_MapB2/Actor/ActorUnkKEYT.cpp | 2 +- src/110_PlayerGet/PlayerGet.cpp | 45 +++-- .../PlayerSceneChange.cpp | 18 +- src/ITCM/ITCM_ActorManager.cpp | 16 ++ src/Main/Game/Game.cpp | 4 +- tools/configure.py | 9 +- 89 files changed, 1318 insertions(+), 925 deletions(-) rename include/Actor/{ActorUnk_ov000_020a8bb0.hpp => Actor_Derived1.hpp} (83%) create mode 100644 include/Animation/CellAnimObject.hpp create mode 100644 libs/nns/include/nns/anim.h rename src/000_Second/Actor/{ActorUnk_ov000_020a8bb0.cpp => Actor_Derived1.cpp} (56%) create mode 100644 src/001_SceneInit/Save/SaveManager_001.cpp rename src/024_MainGame/Actor/{ActorUnk_ov000_020a8bb0_EC_024.cpp => Actor_Derived1_EC_024.cpp} (89%) create mode 100644 src/026_Train/code_02102924.cpp create mode 100644 src/ITCM/ITCM_ActorManager.cpp diff --git a/config/eur/arm9/itcm/delinks.txt b/config/eur/arm9/itcm/delinks.txt index d87fbca5..d07293d0 100644 --- a/config/eur/arm9/itcm/delinks.txt +++ b/config/eur/arm9/itcm/delinks.txt @@ -3,3 +3,6 @@ src/ITCM/ITCM_MapObjectManager.cpp: .text start:0x01fff498 end:0x01fff5d0 + +src/ITCM/ITCM_ActorManager.cpp: + .text start:0x01fff350 end:0x01fff440 diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt index 837825cb..2959fdf7 100644 --- a/config/eur/arm9/itcm/symbols.txt +++ b/config/eur/arm9/itcm/symbols.txt @@ -212,7 +212,7 @@ _ZN9MapObject13func_01fff590Ei kind:function(arm,size=0x40) addr:0x01fff590 _ZN5Actor13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0 _ZN18UnkStruct_027e09b413func_01fff60cEiiihii kind:function(arm,size=0x8c) addr:0x01fff60c func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698 -_ZN21UnkStruct_027e0cd8_1013func_01fff6d0EP7VecFx32PiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0 +_ZN16MapObjectManager13func_01fff6d0EP7VecFx32PiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0 func_01fff744 kind:function(arm,size=0x20) addr:0x01fff744 func_01fff764 kind:function(arm,size=0xec) addr:0x01fff764 func_01fff850 kind:function(arm,size=0x158) addr:0x01fff850 diff --git a/config/eur/arm9/overlays/ov000/delinks.txt b/config/eur/arm9/overlays/ov000/delinks.txt index 4ba37315..0747ab2e 100644 --- a/config/eur/arm9/overlays/ov000/delinks.txt +++ b/config/eur/arm9/overlays/ov000/delinks.txt @@ -76,6 +76,7 @@ src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp: .data start:0x020b3560 end:0x020b3588 src/000_Second/MapObject/MapObject.cpp: + complete .text start:0x0209cfe0 end:0x0209d700 .data start:0x020b3588 end:0x020b35c8 @@ -110,7 +111,7 @@ src/000_Second/Item/ItemManager.cpp: .text start:0x020a863c end:0x020a8ae0 .rodata start:0x020afc40 end:0x020afc48 -src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp: +src/000_Second/Actor/Actor_Derived1.cpp: .text start:0x020a8ae0 end:0x020a9b10 .data start:0x020b4d88 end:0x020b4e4c diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 9faa9e8e..23d5132f 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -423,20 +423,20 @@ func_ov000_020606f0 kind:function(arm,size=0x48) addr:0x020606f0 func_ov000_02060738 kind:function(arm,size=0x24) addr:0x02060738 func_ov000_0206075c kind:function(arm,size=0x80) addr:0x0206075c func_ov000_020607dc kind:function(arm,size=0x28) addr:0x020607dc -_ZN14UnkSubStruct19C1Ev kind:function(arm,size=0x28) addr:0x02060804 -_ZN14UnkSubStruct1919func_ov000_0206082cEsi kind:function(arm,size=0x124) addr:0x0206082c -_ZN14UnkSubStruct1919func_ov000_02060950Ev kind:function(arm,size=0x60) addr:0x02060950 -_ZN14UnkSubStruct1919func_ov000_020609b0Ev kind:function(arm,size=0x14) addr:0x020609b0 -_ZN14UnkSubStruct1919func_ov000_020609c4Ev kind:function(arm,size=0xd4) addr:0x020609c4 -_ZN14UnkSubStruct1919func_ov000_02060a98Ei kind:function(arm,size=0x38) addr:0x02060a98 -_ZN14UnkSubStruct1919func_ov000_02060ad0Ev kind:function(arm,size=0x28) addr:0x02060ad0 -_ZN14UnkSubStruct1919func_ov000_02060af8Ev kind:function(arm,size=0x58) addr:0x02060af8 -_ZN14UnkSubStruct1919func_ov000_02060b50Ev kind:function(arm,size=0x14) addr:0x02060b50 -_ZN14UnkSubStruct1919func_ov000_02060b64Ev kind:function(arm,size=0x20) addr:0x02060b64 +_ZN14CellAnimObjectC1Ev kind:function(arm,size=0x28) addr:0x02060804 +_ZN14CellAnimObject19func_ov000_0206082cEsi kind:function(arm,size=0x124) addr:0x0206082c +_ZN14CellAnimObject19func_ov000_02060950Ev kind:function(arm,size=0x60) addr:0x02060950 +_ZN14CellAnimObject19func_ov000_020609b0Ev kind:function(arm,size=0x14) addr:0x020609b0 +_ZN14CellAnimObject19func_ov000_020609c4Ev kind:function(arm,size=0xd4) addr:0x020609c4 +_ZN14CellAnimObject19func_ov000_02060a98Ei kind:function(arm,size=0x38) addr:0x02060a98 +_ZN14CellAnimObject19func_ov000_02060ad0Ev kind:function(arm,size=0x28) addr:0x02060ad0 +_ZN14CellAnimObject19func_ov000_02060af8Ev kind:function(arm,size=0x58) addr:0x02060af8 +_ZN14CellAnimObject19func_ov000_02060b50Ev kind:function(arm,size=0x14) addr:0x02060b50 +_ZN14CellAnimObject19func_ov000_02060b64Ev kind:function(arm,size=0x20) addr:0x02060b64 func_ov000_02060b84 kind:function(arm,size=0x28) addr:0x02060b84 -_ZN14UnkSubStruct1919func_ov000_02060bacEv kind:function(arm,size=0x2c) addr:0x02060bac -_ZN14UnkSubStruct1919func_ov000_02060bd8Ei kind:function(arm,size=0x50) addr:0x02060bd8 -_ZN14UnkSubStruct1919func_ov000_02060c28Ev kind:function(arm,size=0xc) addr:0x02060c28 +_ZN14CellAnimObject19func_ov000_02060bacEv kind:function(arm,size=0x2c) addr:0x02060bac +_ZN14CellAnimObject19func_ov000_02060bd8Ei kind:function(arm,size=0x50) addr:0x02060bd8 +_ZN14CellAnimObject19func_ov000_02060c28Ev kind:function(arm,size=0xc) addr:0x02060c28 _ZN25UnkStruct_020d8698_2C_14CC1Ev kind:function(arm,size=0x1c) addr:0x02060c34 _ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060c50EPKwP25UnkStruct_020d8698_2C_198iP34UnkStruct_ov019_020d24c8_28_258_00 kind:function(arm,size=0x2c) addr:0x02060c50 _ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060c7cEi kind:function(arm,size=0x100) addr:0x02060c7c @@ -696,7 +696,7 @@ _ZN21UnkSystem1_ov000_Base8vfunc_18Ev kind:function(arm,size=0x4) addr:0x020669d _ZN21UnkSystem1_ov000_Base19func_ov000_020669dcEv kind:function(arm,size=0x2c) addr:0x020669dc _ZN21UnkSystem1_ov000_Base19func_ov000_02066a08EP10UnkStruct5 kind:function(arm,size=0x54) addr:0x02066a08 _ZN21UnkSystem1_ov000_Base8vfunc_10EPt kind:function(arm,size=0x3a0) addr:0x02066a5c -_ZN21UnkSystem1_ov000_Base8vfunc_14EPv kind:function(arm,size=0x438) addr:0x02066dfc +_ZN21UnkSystem1_ov000_Base8vfunc_14EP9FLW1Instr kind:function(arm,size=0x438) addr:0x02066dfc _ZN21UnkSystem1_ov000_Base8vfunc_1CEjii kind:function(arm,size=0x8) addr:0x02067234 _ZN21UnkSystem1_ov000_Base8vfunc_20Eiii kind:function(arm,size=0x8) addr:0x0206723c _ZN25UnkSystem1_ov000_Derived1C2EiPN24UnkStruct_ov000_02067bc410UnkStruct1E kind:function(arm,size=0x34) addr:0x02067244 @@ -1496,9 +1496,9 @@ _ZN19func_ov000_0207ed10D2Ev kind:function(arm,size=0x30) addr:0x0207ed10 func_ov000_0207ed40 kind:function(arm,size=0x44) addr:0x0207ed40 func_ov000_0207ed84 kind:function(arm,size=0x8) addr:0x0207ed84 func_ov000_0207ed8c kind:function(arm,size=0x20) addr:0x0207ed8c -_ZN26ActorUnk_ov000_020a8bb0_94C2Ev kind:function(arm,size=0x20) addr:0x0207edac +_ZN17Actor_Derived1_94C2Ev kind:function(arm,size=0x20) addr:0x0207edac func_ov000_0207edcc kind:function(arm,size=0x1c) addr:0x0207edcc -_ZN26ActorUnk_ov000_020a8bb0_94D2Ev kind:function(arm,size=0x30) addr:0x0207ede8 +_ZN17Actor_Derived1_94D2Ev kind:function(arm,size=0x30) addr:0x0207ede8 _ZN19func_ov000_0207ee18D0Ev kind:function(arm,size=0x38) addr:0x0207ee18 _ZN19func_ov000_0207ee50D2Ev kind:function(arm,size=0x30) addr:0x0207ee50 func_ov000_0207ee80 kind:function(arm,size=0x4) addr:0x0207ee80 @@ -2326,13 +2326,13 @@ _ZN5Actor8vfunc_30Ev kind:function(arm,size=0x4) addr:0x020984c4 _ZN5Actor8vfunc_34Ev kind:function(arm,size=0x8) addr:0x020984c8 _ZN5Actor19func_ov000_020984d0Ev kind:function(arm,size=0x20) addr:0x020984d0 _ZN5Actor19func_ov000_020984f0Ev kind:function(arm,size=0x28) addr:0x020984f0 -_ZN5Actor8vfunc_00EP7VecFx32 kind:function(arm,size=0x24) addr:0x02098518 +_ZNK5Actor12GetOffsetPosEP7VecFx32 kind:function(arm,size=0x24) addr:0x02098518 _ZN5Actor19func_ov000_0209853cEi kind:function(arm,size=0x18) addr:0x0209853c _ZN5Actor8vfunc_04Ev kind:function(arm,size=0x18) addr:0x02098554 _ZN5Actor8vfunc_08Ev kind:function(arm,size=0xc) addr:0x0209856c _ZN5Actor8vfunc_0cEv kind:function(arm,size=0xc) addr:0x02098578 -_ZN5Actor8vfunc_38Ei kind:function(arm,size=0x6c) addr:0x02098584 -_ZN5Actor8vfunc_3cEiP7VecFx32 kind:function(arm,size=0x3c) addr:0x020985f0 +_ZN5Actor4GrabE15ActorGrabParams kind:function(arm,size=0x6c) addr:0x02098584 +_ZN5Actor4DropE15ActorGrabParamsPK7VecFx32 kind:function(arm,size=0x3c) addr:0x020985f0 _ZN5Actor19func_ov000_0209862cEi kind:function(arm,size=0x28) addr:0x0209862c func_ov000_02098654 kind:function(arm,size=0x28) addr:0x02098654 func_ov000_0209867c kind:function(arm,size=0x38) addr:0x0209867c @@ -2437,7 +2437,7 @@ _ZN19ActorProfileUnkSWOB6CreateEv kind:function(arm,size=0x24) addr:0x0209a8c4 _ZN19ActorProfileUnkSWOBC1Ev kind:function(arm,size=0x28) addr:0x0209a8e8 _ZN12ActorUnkSWOBC1Ev kind:function(arm,size=0x38) addr:0x0209a910 _ZN12ActorUnkSWOB8vfunc_18Ei kind:function(arm,size=0x6c) addr:0x0209a948 -_ZN12ActorUnkSWOB19func_ov000_0209a9b4Ei kind:function(arm,size=0x7c) addr:0x0209a9b4 +_ZN12ActorUnkSWOB8SetStateEs kind:function(arm,size=0x7c) addr:0x0209a9b4 _ZN12ActorUnkSWOB19func_ov000_0209aa30Ev kind:function(arm,size=0x234) addr:0x0209aa30 _ZN12ActorUnkSWOBD1Ev kind:function(arm,size=0x14) addr:0x0209ac64 _ZN12ActorUnkSWOBD0Ev kind:function(arm,size=0x1c) addr:0x0209ac78 @@ -2451,7 +2451,7 @@ _ZN12ActorUnkSWTMD0Ev kind:function(arm,size=0x50) addr:0x0209ada4 _ZN12ActorUnkSWTM8vfunc_18Ei kind:function(arm,size=0x74) addr:0x0209adf4 _ZN12ActorUnkSWTM8vfunc_20Ev kind:function(arm,size=0xe8) addr:0x0209ae68 _ZN12ActorUnkSWTM8vfunc_24Ev kind:function(arm,size=0x4) addr:0x0209af50 -_ZN12ActorUnkSWTM19func_ov000_0209af54Ei kind:function(arm,size=0x90) addr:0x0209af54 +_ZN12ActorUnkSWTM8SetStateEs kind:function(arm,size=0x90) addr:0x0209af54 _ZN12ActorUnkSWTM19func_ov000_0209afe4Ev kind:function(arm,size=0x54) addr:0x0209afe4 _ZN12ActorUnkSWTM19func_ov000_0209b038Ev kind:function(arm,size=0x128) addr:0x0209b038 _ZN12ActorUnkSWTM19func_ov000_0209b160Ev kind:function(arm,size=0x24) addr:0x0209b160 @@ -2570,7 +2570,7 @@ _ZN9MapObject19func_ov000_0209d2f0EiiP5Vec2b kind:function(arm,size=0xc4) addr:0 _ZN9MapObject19func_ov000_0209d3b4Eii kind:function(arm,size=0x80) addr:0x0209d3b4 _ZN9MapObject19func_ov000_0209d434EPcP34UnkStruct_ov019_020d24c8_28_258_00i kind:function(arm,size=0xe4) addr:0x0209d434 _ZN9MapObject19func_ov000_0209d518Eiiih kind:function(arm,size=0x34) addr:0x0209d518 -_ZN9MapObject19func_ov000_0209d54cEPvPS_iP7VecFx32ii kind:function(arm,size=0x7c) addr:0x0209d54c +_ZN9MapObject19func_ov000_0209d54cEP8ActorRefPS_tPK7VecFx32st kind:function(arm,size=0x7c) addr:0x0209d54c _ZN9MapObject19func_ov000_0209d5c8E8ActorRef kind:function(arm,size=0x4c) addr:0x0209d5c8 _ZN9MapObject19func_ov000_0209d614Ei kind:function(arm,size=0x54) addr:0x0209d614 _ZN9MapObject19func_ov000_0209d668Ev kind:function(arm,size=0x44) addr:0x0209d668 @@ -2716,7 +2716,7 @@ func_ov000_020a0f78 kind:function(thumb,size=0xc) addr:0x020a0f78 func_ov000_020a0f84 kind:function(thumb,size=0x30) addr:0x020a0f84 func_ov000_020a0fb4 kind:function(thumb,size=0x10) addr:0x020a0fb4 func_ov000_020a0fc4 kind:function(thumb,size=0x3c) addr:0x020a0fc4 -_ZN15SaveManager_21C19func_ov000_020a1000Ev kind:function(thumb,size=0x28) addr:0x020a1000 +_ZN28SaveFile_00000_0000_Data_D9C19func_ov000_020a1000Ev kind:function(thumb,size=0x28) addr:0x020a1000 _ZN8SaveSlot19func_ov000_020a1028EP12SaveInfoData kind:function(thumb,size=0xcc) addr:0x020a1028 _ZN8SaveSlot19func_ov000_020a10f4EP24SaveFile_00000_2600_Data kind:function(arm,size=0x30) addr:0x020a10f4 _ZN8SaveSlot19func_ov000_020a1124Ev kind:function(arm,size=0x13c) addr:0x020a1124 @@ -3020,56 +3020,56 @@ _ZN11ItemManager19func_ov000_020a8a90Ev kind:function(arm,size=0x14) addr:0x020a _ZN11ItemManager19func_ov000_020a8aa4Ev kind:function(arm,size=0x14) addr:0x020a8aa4 _ZN11ItemManager19func_ov000_020a8ab8Ev kind:function(arm,size=0x14) addr:0x020a8ab8 _ZN11ItemManager19func_ov000_020a8accEv kind:function(arm,size=0x14) addr:0x020a8acc -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8ae0Ei kind:function(arm,size=0x14) addr:0x020a8ae0 +_ZN14Actor_Derived119func_ov000_020a8ae0Ei kind:function(arm,size=0x14) addr:0x020a8ae0 func_ov000_020a8af4 kind:function(arm,size=0x54) addr:0x020a8af4 func_ov000_020a8b48 kind:function(arm,size=0x34) addr:0x020a8b48 func_ov000_020a8b7c kind:function(arm,size=0x34) addr:0x020a8b7c -_ZN23ActorUnk_ov000_020a8bb0C1EP11ModelRenderi kind:function(arm,size=0x110) addr:0x020a8bb0 -_ZN23ActorUnk_ov000_020a8bb0D1Ev kind:function(arm,size=0x20) addr:0x020a8cc0 -_ZN23ActorUnk_ov000_020a8bb0D0Ev kind:function(arm,size=0x28) addr:0x020a8ce0 -_ZN23ActorUnk_ov000_020a8bb0D2Ev kind:function(arm,size=0x20) addr:0x020a8d08 -_ZN23ActorUnk_ov000_020a8bb08vfunc_18Ei kind:function(arm,size=0x78) addr:0x020a8d28 -_ZN23ActorUnk_ov000_020a8bb08vfunc_54Ei kind:function(arm,size=0x4) addr:0x020a8da0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_1cEv kind:function(arm,size=0xc) addr:0x020a8da4 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8db0Ev kind:function(arm,size=0x20) addr:0x020a8db0 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8dd0Ev kind:function(arm,size=0x20) addr:0x020a8dd0 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8df0E8ActorRefi kind:function(arm,size=0x94) addr:0x020a8df0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_b4Ev kind:function(arm,size=0x18) addr:0x020a8e84 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8e9cEP7VecFx32 kind:function(arm,size=0x24) addr:0x020a8e9c -_ZN23ActorUnk_ov000_020a8bb08vfunc_b0Ev kind:function(arm,size=0x94) addr:0x020a8ec0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_88Ev kind:function(arm,size=0x8) addr:0x020a8f54 -_ZN23ActorUnk_ov000_020a8bb08vfunc_8cEv kind:function(arm,size=0x8) addr:0x020a8f5c -_ZN23ActorUnk_ov000_020a8bb08vfunc_90Ev kind:function(arm,size=0x8) addr:0x020a8f64 -_ZN23ActorUnk_ov000_020a8bb08vfunc_94Ev kind:function(arm,size=0xc) addr:0x020a8f6c -_ZN23ActorUnk_ov000_020a8bb08vfunc_60Ev kind:function(arm,size=0x68) addr:0x020a8f78 -_ZN23ActorUnk_ov000_020a8bb08vfunc_64Ev kind:function(arm,size=0x14) addr:0x020a8fe0 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8ff4Ev kind:function(arm,size=0x158) addr:0x020a8ff4 -_ZN23ActorUnk_ov000_020a8bb08vfunc_6cEv kind:function(arm,size=0x4) addr:0x020a914c -_ZN23ActorUnk_ov000_020a8bb08vfunc_68Ev kind:function(arm,size=0x50) addr:0x020a9150 -_ZN23ActorUnk_ov000_020a8bb08vfunc_7cEv kind:function(arm,size=0x8) addr:0x020a91a0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_80Ev kind:function(arm,size=0x8) addr:0x020a91a8 -_ZN23ActorUnk_ov000_020a8bb08vfunc_84Ev kind:function(arm,size=0x8) addr:0x020a91b0 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a91b8EP7VecFx32i kind:function(arm,size=0x48) addr:0x020a91b8 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a9200Ev kind:function(arm,size=0x1c) addr:0x020a9200 -_ZN23ActorUnk_ov000_020a8bb08vfunc_70Ev kind:function(arm,size=0x24) addr:0x020a921c -_ZN23ActorUnk_ov000_020a8bb08vfunc_74Ev kind:function(arm,size=0x4) addr:0x020a9240 -_ZN23ActorUnk_ov000_020a8bb08vfunc_78Ev kind:function(arm,size=0x4) addr:0x020a9244 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a9248Ev kind:function(arm,size=0x88) addr:0x020a9248 -_ZN23ActorUnk_ov000_020a8bb08vfunc_5cEv kind:function(arm,size=0x178) addr:0x020a92d0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_98Ev kind:function(arm,size=0x68) addr:0x020a9448 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a94b0Ev kind:function(arm,size=0xe8) addr:0x020a94b0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_9cEv kind:function(arm,size=0x2c) addr:0x020a9598 -_ZN23ActorUnk_ov000_020a8bb08vfunc_a0Ev kind:function(arm,size=0x10) addr:0x020a95c4 -_ZN23ActorUnk_ov000_020a8bb08vfunc_acEv kind:function(arm,size=0x4) addr:0x020a95d4 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a95d8Ev kind:function(arm,size=0xc) addr:0x020a95d8 -_ZN23ActorUnk_ov000_020a8bb08vfunc_a4Ev kind:function(arm,size=0x218) addr:0x020a95e4 -_ZN23ActorUnk_ov000_020a8bb08vfunc_a8Ev kind:function(arm,size=0x8) addr:0x020a97fc -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a9804Ev kind:function(arm,size=0xec) addr:0x020a9804 -_ZN23ActorUnk_ov000_020a8bb08vfunc_20Ev kind:function(arm,size=0x4) addr:0x020a98f0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_24Ev kind:function(arm,size=0x68) addr:0x020a98f4 -_ZN23ActorUnk_ov000_020a8bb08vfunc_2cEi kind:function(arm,size=0x48) addr:0x020a995c -_ZN23ActorUnk_ov000_020a8bb08vfunc_b8Ev kind:function(arm,size=0x34) addr:0x020a99a4 -_ZN23ActorUnk_ov000_020a8bb08vfunc_14Ev kind:function(arm,size=0x48) addr:0x020a99d8 +_ZN14Actor_Derived1C1EP11ModelRenderi kind:function(arm,size=0x110) addr:0x020a8bb0 +_ZN14Actor_Derived1D1Ev kind:function(arm,size=0x20) addr:0x020a8cc0 +_ZN14Actor_Derived1D0Ev kind:function(arm,size=0x28) addr:0x020a8ce0 +_ZN14Actor_Derived1D2Ev kind:function(arm,size=0x20) addr:0x020a8d08 +_ZN14Actor_Derived18vfunc_18Ei kind:function(arm,size=0x78) addr:0x020a8d28 +_ZN14Actor_Derived18vfunc_54Ei kind:function(arm,size=0x4) addr:0x020a8da0 +_ZN14Actor_Derived18vfunc_1cEv kind:function(arm,size=0xc) addr:0x020a8da4 +_ZN14Actor_Derived119func_ov000_020a8db0Ev kind:function(arm,size=0x20) addr:0x020a8db0 +_ZN14Actor_Derived119func_ov000_020a8dd0Ev kind:function(arm,size=0x20) addr:0x020a8dd0 +_ZN14Actor_Derived119func_ov000_020a8df0E8ActorRefi kind:function(arm,size=0x94) addr:0x020a8df0 +_ZN14Actor_Derived18vfunc_b4Ev kind:function(arm,size=0x18) addr:0x020a8e84 +_ZN14Actor_Derived119func_ov000_020a8e9cEP7VecFx32 kind:function(arm,size=0x24) addr:0x020a8e9c +_ZN14Actor_Derived18vfunc_b0Ev kind:function(arm,size=0x94) addr:0x020a8ec0 +_ZN14Actor_Derived18vfunc_88Ev kind:function(arm,size=0x8) addr:0x020a8f54 +_ZN14Actor_Derived18vfunc_8cEv kind:function(arm,size=0x8) addr:0x020a8f5c +_ZN14Actor_Derived18vfunc_90Ev kind:function(arm,size=0x8) addr:0x020a8f64 +_ZN14Actor_Derived18vfunc_94Ev kind:function(arm,size=0xc) addr:0x020a8f6c +_ZN14Actor_Derived18vfunc_60Ev kind:function(arm,size=0x68) addr:0x020a8f78 +_ZN14Actor_Derived18vfunc_64Ev kind:function(arm,size=0x14) addr:0x020a8fe0 +_ZN14Actor_Derived119func_ov000_020a8ff4Ev kind:function(arm,size=0x158) addr:0x020a8ff4 +_ZN14Actor_Derived18vfunc_6cEv kind:function(arm,size=0x4) addr:0x020a914c +_ZN14Actor_Derived18vfunc_68Ev kind:function(arm,size=0x50) addr:0x020a9150 +_ZN14Actor_Derived18vfunc_7cEv kind:function(arm,size=0x8) addr:0x020a91a0 +_ZN14Actor_Derived18vfunc_80Ev kind:function(arm,size=0x8) addr:0x020a91a8 +_ZN14Actor_Derived18vfunc_84Ev kind:function(arm,size=0x8) addr:0x020a91b0 +_ZN14Actor_Derived119func_ov000_020a91b8EP7VecFx32i kind:function(arm,size=0x48) addr:0x020a91b8 +_ZN14Actor_Derived119func_ov000_020a9200Ev kind:function(arm,size=0x1c) addr:0x020a9200 +_ZN14Actor_Derived18vfunc_70Ev kind:function(arm,size=0x24) addr:0x020a921c +_ZN14Actor_Derived18vfunc_74Ev kind:function(arm,size=0x4) addr:0x020a9240 +_ZN14Actor_Derived18vfunc_78Ev kind:function(arm,size=0x4) addr:0x020a9244 +_ZN14Actor_Derived119func_ov000_020a9248Ev kind:function(arm,size=0x88) addr:0x020a9248 +_ZN14Actor_Derived18vfunc_5cEv kind:function(arm,size=0x178) addr:0x020a92d0 +_ZN14Actor_Derived18vfunc_98Ei kind:function(arm,size=0x68) addr:0x020a9448 +_ZN14Actor_Derived119func_ov000_020a94b0Ev kind:function(arm,size=0xe8) addr:0x020a94b0 +_ZN14Actor_Derived18vfunc_9cEv kind:function(arm,size=0x2c) addr:0x020a9598 +_ZN14Actor_Derived18vfunc_a0Ev kind:function(arm,size=0x10) addr:0x020a95c4 +_ZN14Actor_Derived18vfunc_acEv kind:function(arm,size=0x4) addr:0x020a95d4 +_ZN14Actor_Derived119func_ov000_020a95d8Ev kind:function(arm,size=0xc) addr:0x020a95d8 +_ZN14Actor_Derived18vfunc_a4Ev kind:function(arm,size=0x218) addr:0x020a95e4 +_ZN14Actor_Derived18vfunc_a8Ev kind:function(arm,size=0x8) addr:0x020a97fc +_ZN14Actor_Derived119func_ov000_020a9804Ev kind:function(arm,size=0xec) addr:0x020a9804 +_ZN14Actor_Derived18vfunc_20Ev kind:function(arm,size=0x4) addr:0x020a98f0 +_ZN14Actor_Derived18vfunc_24Ev kind:function(arm,size=0x68) addr:0x020a98f4 +_ZN14Actor_Derived18vfunc_2cEi kind:function(arm,size=0x48) addr:0x020a995c +_ZN14Actor_Derived18vfunc_b8Ev kind:function(arm,size=0x34) addr:0x020a99a4 +_ZN14Actor_Derived18vfunc_14Ev kind:function(arm,size=0x48) addr:0x020a99d8 _ZN19func_ov000_020a9a20D1Ev kind:function(arm,size=0x14) addr:0x020a9a20 _ZN19func_ov000_020a9a34D0Ev kind:function(arm,size=0x1c) addr:0x020a9a34 func_ov000_020a9a50 kind:function(arm,size=0x44) addr:0x020a9a50 @@ -3999,7 +3999,7 @@ data_ov000_020b4d48 kind:data(any) addr:0x020b4d48 data_ov000_020b4d54 kind:data(any) addr:0x020b4d54 data_ov000_020b4d58 kind:data(any) addr:0x020b4d58 data_ov000_020b4d64 kind:data(any) addr:0x020b4d64 -_ZTV23ActorUnk_ov000_020a8bb0 kind:data(any) addr:0x020b4d88 +_ZTV14Actor_Derived1 kind:data(any) addr:0x020b4d88 data_ov000_020b4e4c kind:data(any) addr:0x020b4e4c data_ov000_020b4e60 kind:data(any) addr:0x020b4e60 data_ov000_020b4e74 kind:data(any) addr:0x020b4e74 diff --git a/config/eur/arm9/overlays/ov001/delinks.txt b/config/eur/arm9/overlays/ov001/delinks.txt index b5d37133..49d35222 100644 --- a/config/eur/arm9/overlays/ov001/delinks.txt +++ b/config/eur/arm9/overlays/ov001/delinks.txt @@ -5,6 +5,9 @@ .data start:0x020c2940 end:0x020c2fe0 kind:data align:32 .bss start:0x020c2fe0 end:0x020c4720 kind:bss align:32 +src/001_SceneInit/Save/SaveManager_001.cpp: + .text start:0x020ba670 end:0x020ba858 + src/001_SceneInit/Actor/ActorManager_001.cpp: .text start:0x020baf64 end:0x020bb87c .rodata start:0x020c2624 end:0x020c264c diff --git a/config/eur/arm9/overlays/ov024/delinks.txt b/config/eur/arm9/overlays/ov024/delinks.txt index 880ec0f8..4e60ae3b 100644 --- a/config/eur/arm9/overlays/ov024/delinks.txt +++ b/config/eur/arm9/overlays/ov024/delinks.txt @@ -243,7 +243,7 @@ src/024_MainGame/MiscAdvManager.cpp: .text start:0x020d62b4 end:0x020d6650 .bss start:0x020d86b0 end:0x020d86b4 -src/024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp: +src/024_MainGame/Actor/Actor_Derived1_EC_024.cpp: complete .text start:0x020d6650 end:0x020d6e9c .bss start:0x020d86b4 end:0x020d86b8 diff --git a/config/eur/arm9/overlays/ov024/symbols.txt b/config/eur/arm9/overlays/ov024/symbols.txt index 7840b72d..3b61d936 100644 --- a/config/eur/arm9/overlays/ov024/symbols.txt +++ b/config/eur/arm9/overlays/ov024/symbols.txt @@ -697,15 +697,15 @@ _ZN14MiscAdvManager13PostPriceCardEii kind:function(arm,size=0x74) addr:0x020d65 _ZN14MiscAdvManager19func_ov024_020d6610Ev kind:function(arm,size=0x1c) addr:0x020d6610 _ZN8InstanceI14MiscAdvManagerEC2Ev kind:function(arm,size=0x10) addr:0x020d662c _ZN8InstanceI14MiscAdvManagerED2Ev kind:function(arm,size=0x14) addr:0x020d663c -_ZN26ActorUnk_ov000_020a8bb0_ECC2Ev kind:function(thumb,size=0x16) addr:0x020d6650 -_ZN26ActorUnk_ov000_020a8bb0_ECC1Ev kind:function(thumb,size=0x16) addr:0x020d6668 -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6680EPK7VecFx32Ph kind:function(arm,size=0x40) addr:0x020d6680 -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d66c0EPK7VecFx32i kind:function(arm,size=0x44) addr:0x020d66c0 -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6704Ev kind:function(arm,size=0x2c) addr:0x020d6704 -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6730Ev kind:function(arm,size=0x2a8) addr:0x020d6730 -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d69d8EP7VecFx32PsS1_isi kind:function(arm,size=0x1a4) addr:0x020d69d8 -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6b7cEP7VecFx32PsS1_isi kind:function(arm,size=0x204) addr:0x020d6b7c -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6d80EP7VecFx32S1_ kind:function(arm,size=0x11c) addr:0x020d6d80 +_ZN17Actor_Derived1_ECC2Ev kind:function(thumb,size=0x16) addr:0x020d6650 +_ZN17Actor_Derived1_ECC1Ev kind:function(thumb,size=0x16) addr:0x020d6668 +_ZN17Actor_Derived1_EC19func_ov024_020d6680EPK7VecFx32Ph kind:function(arm,size=0x40) addr:0x020d6680 +_ZN17Actor_Derived1_EC19func_ov024_020d66c0EPK7VecFx32i kind:function(arm,size=0x44) addr:0x020d66c0 +_ZN17Actor_Derived1_EC19func_ov024_020d6704Ev kind:function(arm,size=0x2c) addr:0x020d6704 +_ZN17Actor_Derived1_EC19func_ov024_020d6730Ev kind:function(arm,size=0x2a8) addr:0x020d6730 +_ZN17Actor_Derived1_EC19func_ov024_020d69d8EP7VecFx32PsS1_isi kind:function(arm,size=0x1a4) addr:0x020d69d8 +_ZN17Actor_Derived1_EC19func_ov024_020d6b7cEP7VecFx32PsS1_isi kind:function(arm,size=0x204) addr:0x020d6b7c +_ZN17Actor_Derived1_EC19func_ov024_020d6d80EP7VecFx32S1_ kind:function(arm,size=0x11c) addr:0x020d6d80 _ZN19ActorProfileUnkOBPC10GetProfileEv kind:function(arm,size=0xc) addr:0x020d6e9c _ZN19ActorProfileUnkOBPC6CreateEv kind:function(arm,size=0x24) addr:0x020d6ea8 _ZN19ActorProfileUnkOBPCC1Ev kind:function(arm,size=0x28) addr:0x020d6ecc @@ -714,7 +714,7 @@ _ZN12ActorUnkOBPC8vfunc_18Ei kind:function(arm,size=0x4c) addr:0x020d6f28 _ZN12ActorUnkOBPC19func_ov024_020d6f74Ev kind:function(arm,size=0x20) addr:0x020d6f74 _ZN12ActorUnkOBPC8vfunc_20Ev kind:function(arm,size=0xbc) addr:0x020d6f94 _ZN12ActorUnkOBPC8vfunc_24Ev kind:function(arm,size=0x14) addr:0x020d7050 -_ZN12ActorUnkOBPC19func_ov024_020d7064Esi kind:function(arm,size=0xf0) addr:0x020d7064 +_ZN12ActorUnkOBPC8SetStateEsi kind:function(arm,size=0xf0) addr:0x020d7064 _ZN12ActorUnkOBPC19func_ov024_020d7154Ev kind:function(arm,size=0x168) addr:0x020d7154 _ZN12ActorUnkOBPCD1Ev kind:function(arm,size=0x20) addr:0x020d72bc _ZN12ActorUnkOBPCD0Ev kind:function(arm,size=0x28) addr:0x020d72dc diff --git a/config/eur/arm9/overlays/ov026/delinks.txt b/config/eur/arm9/overlays/ov026/delinks.txt index be36993e..095c892b 100644 --- a/config/eur/arm9/overlays/ov026/delinks.txt +++ b/config/eur/arm9/overlays/ov026/delinks.txt @@ -5,6 +5,10 @@ .data start:0x02135280 end:0x02138ce0 kind:data align:32 .bss start:0x02138ce0 end:0x021419e0 kind:bss align:32 +src/026_Train/code_02102924.cpp: + .text start:0x02102924 end:0x02102934 + .data start:0x02135fec end:0x0213616c + src/026_Train/Actor/ActorUnkDKCL.cpp: .text start:0x02104f00 end:0x021050cc .init start:0x02134038 end:0x02134088 diff --git a/config/eur/arm9/overlays/ov026/symbols.txt b/config/eur/arm9/overlays/ov026/symbols.txt index 0a598e13..40f796ff 100644 --- a/config/eur/arm9/overlays/ov026/symbols.txt +++ b/config/eur/arm9/overlays/ov026/symbols.txt @@ -1011,7 +1011,7 @@ func_ov026_02102884 kind:function(arm,size=0x50) addr:0x02102884 func_ov026_021028d4 kind:function(arm,size=0x18) addr:0x021028d4 _ZN19func_ov026_021028ecD0Ev kind:function(arm,size=0x1c) addr:0x021028ec _ZN19func_ov026_02102908D0Ev kind:function(arm,size=0x1c) addr:0x02102908 -func_ov026_02102924 kind:function(arm,size=0x10) addr:0x02102924 +_Z19func_ov026_02102924i kind:function(arm,size=0x10) addr:0x02102924 func_ov026_02102934 kind:function(arm,size=0x14) addr:0x02102934 func_ov026_02102948 kind:function(arm,size=0x3c) addr:0x02102948 _ZN19func_ov026_02102984D1Ev kind:function(arm,size=0x28) addr:0x02102984 @@ -1833,7 +1833,7 @@ _ZN19ActorProfileUnkRB1T6CreateEv kind:function(arm,size=0x24) addr:0x0211e104 _ZN19ActorProfileUnkRB1TC1Ev kind:function(arm,size=0x70) addr:0x0211e128 _ZN12ActorUnkRB1TC1Ev kind:function(arm,size=0x234) addr:0x0211e198 _ZN12ActorUnkRB1T19func_ov026_0211e3ccEv kind:function(arm,size=0x14) addr:0x0211e3cc -_ZN12ActorUnkRB1T19func_ov026_0211e3e0Ev kind:function(arm,size=0xe8) addr:0x0211e3e0 +_ZN12ActorUnkRB1T19func_ov026_0211e3e0Ei kind:function(arm,size=0xe8) addr:0x0211e3e0 _ZN12ActorUnkRB1T19func_ov026_0211e4c8Ev kind:function(arm,size=0x8c) addr:0x0211e4c8 _ZN12ActorUnkRB1T19func_ov026_0211e554Ev kind:function(arm,size=0x178) addr:0x0211e554 _ZN12ActorUnkRB1T19func_ov026_0211e6ccEv kind:function(arm,size=0x18) addr:0x0211e6cc diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index a18cdabd..03baefd8 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -590,7 +590,7 @@ _ZN10ActorRupee19func_ov031_020e970cEv kind:function(arm,size=0x34) addr:0x020e9 _ZN10ActorRupee19func_ov031_020e9740Ev kind:function(arm,size=0xf8) addr:0x020e9740 _ZN10ActorRupee19func_ov031_020e9838Ev kind:function(arm,size=0x8c) addr:0x020e9838 _ZN10ActorRupee19func_ov031_020e98c4Ev kind:function(arm,size=0x40) addr:0x020e98c4 -_ZN10ActorRupee19func_ov031_020e9904Ei kind:function(arm,size=0x54) addr:0x020e9904 +_ZN10ActorRupee8SetStateEs kind:function(arm,size=0x54) addr:0x020e9904 _ZN10ActorRupee8vfunc_20Ev kind:function(arm,size=0x230) addr:0x020e9958 _ZN10ActorRupee19func_ov031_020e9b88Ev kind:function(arm,size=0x60) addr:0x020e9b88 _ZN10ActorRupee19func_ov031_020e9be8Ev kind:function(arm,size=0x44) addr:0x020e9be8 @@ -735,7 +735,7 @@ _ZN10ActorHeart19func_ov031_020eed64EP8ActorRefPK7VecFx32jS0_ kind:function(arm, _ZN10ActorHeartC1Ev kind:function(arm,size=0xf8) addr:0x020eede0 _ZN10ActorHeart8vfunc_18Ei kind:function(arm,size=0x10) addr:0x020eeed8 _ZN10ActorHeart8vfunc_20Ev kind:function(arm,size=0x2cc) addr:0x020eeee8 -_ZN10ActorHeart19func_ov031_020ef1b4Es kind:function(arm,size=0x54) addr:0x020ef1b4 +_ZN10ActorHeart8SetStateEs kind:function(arm,size=0x54) addr:0x020ef1b4 _ZN10ActorHeart19func_ov031_020ef208Ev kind:function(arm,size=0xe4) addr:0x020ef208 _ZN10ActorHeart19func_ov031_020ef2ecEv kind:function(arm,size=0xc) addr:0x020ef2ec _ZN10ActorHeart19func_ov031_020ef2f8Ev kind:function(arm,size=0x28) addr:0x020ef2f8 @@ -1173,7 +1173,7 @@ _ZN13ActorItemDrop8vfunc_18Ei kind:function(arm,size=0x30) addr:0x020fa20c _ZN13ActorItemDrop8vfunc_20Ev kind:function(arm,size=0xc) addr:0x020fa23c _ZN13ActorItemDrop8vfunc_24Ev kind:function(arm,size=0x18) addr:0x020fa248 _ZN13ActorItemDrop19func_ov031_020fa260Ev kind:function(arm,size=0x1c4) addr:0x020fa260 -_ZN13ActorItemDrop19func_ov031_020fa424Es kind:function(arm,size=0x44) addr:0x020fa424 +_ZN13ActorItemDrop8SetStateEs kind:function(arm,size=0x44) addr:0x020fa424 _ZN13ActorItemDrop19func_ov031_020fa468Ev kind:function(arm,size=0x4) addr:0x020fa468 _ZN13ActorItemDrop19func_ov031_020fa46cEv kind:function(arm,size=0x28) addr:0x020fa46c _ZN13ActorItemDrop19func_ov031_020fa494Ev kind:function(arm,size=0xc) addr:0x020fa494 @@ -1190,11 +1190,11 @@ _ZN13ActorItemDrop19func_ov031_020fa6c8Ev kind:function(arm,size=0x64) addr:0x02 _ZN13ActorItemDrop19func_ov031_020fa72cEv kind:function(arm,size=0x110) addr:0x020fa72c _ZN13ActorItemDrop8vfunc_2cEi kind:function(arm,size=0xc4) addr:0x020fa83c _ZN13ActorItemDrop19func_ov031_020fa900Ev kind:function(arm,size=0xf8) addr:0x020fa900 -_ZN19ActorDroppedItem_c4C1EP5Actor kind:function(arm,size=0x38) addr:0x020fa9f8 -_ZN19ActorDroppedItem_c48vfunc_00E8ActorRefi kind:function(arm,size=0x44) addr:0x020faa30 -_ZN19ActorDroppedItem_c48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020faa74 -_ZN19ActorDroppedItem_c48vfunc_0cEi kind:function(arm,size=0x28) addr:0x020faa94 -_ZN19ActorDroppedItem_c48vfunc_08Ev kind:function(arm,size=0x20) addr:0x020faabc +_ZN16ActorItemDrop_c4C1EP5Actor kind:function(arm,size=0x38) addr:0x020fa9f8 +_ZN16ActorItemDrop_c48vfunc_00E8ActorRefi kind:function(arm,size=0x44) addr:0x020faa30 +_ZN16ActorItemDrop_c48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020faa74 +_ZN16ActorItemDrop_c48vfunc_0cEi kind:function(arm,size=0x28) addr:0x020faa94 +_ZN16ActorItemDrop_c48vfunc_08Ev kind:function(arm,size=0x20) addr:0x020faabc _ZN13ActorItemDropD1Ev kind:function(arm,size=0x14) addr:0x020faadc _ZN13ActorItemDropD0Ev kind:function(arm,size=0x1c) addr:0x020faaf0 _ZN21ActorProfileArrowDropD1Ev kind:function(arm,size=0x14) addr:0x020fab0c @@ -2394,7 +2394,7 @@ _ZTV19data_ov031_02114b44 kind:data(any) addr:0x02114b44 data_ov031_02114ba0 kind:data(any) addr:0x02114ba0 local data_ov031_02114bb0 kind:data(any) addr:0x02114bb0 local data_ov031_02114be8 kind:data(any) addr:0x02114be8 local -_ZTV19ActorDroppedItem_c4 kind:data(any) addr:0x02114c20 +_ZTV16ActorItemDrop_c4 kind:data(any) addr:0x02114c20 _ZTV21ActorProfileArrowDrop kind:data(any) addr:0x02114c38 _ZTV24ActorProfileTreasureDrop kind:data(any) addr:0x02114c5c _ZTV25ActorProfileRedPotionDrop kind:data(any) addr:0x02114c80 diff --git a/config/eur/arm9/overlays/ov041/symbols.txt b/config/eur/arm9/overlays/ov041/symbols.txt index 82c81ed7..f60667e3 100644 --- a/config/eur/arm9/overlays/ov041/symbols.txt +++ b/config/eur/arm9/overlays/ov041/symbols.txt @@ -29,7 +29,7 @@ _ZN12ActorUnkKEYTD0Ev kind:function(arm,size=0x38) addr:0x02123cc0 _ZN12ActorUnkKEYT19func_ov041_02123cf8Ev kind:function(arm,size=0x48) addr:0x02123cf8 _ZN12ActorUnkKEYT19func_ov041_02123d40Ev kind:function(arm,size=0x48) addr:0x02123d40 _ZN12ActorUnkKEYT19func_ov041_02123d88Ev kind:function(arm,size=0x130) addr:0x02123d88 -_ZN12ActorUnkKEYT19func_ov041_02123eb8Ev kind:function(arm,size=0x140) addr:0x02123eb8 +_ZN12ActorUnkKEYT4GrabE15ActorGrabParams kind:function(arm,size=0x140) addr:0x02123eb8 _ZN12ActorUnkKEYT19func_ov041_02123ff8Ev kind:function(arm,size=0x9c) addr:0x02123ff8 _ZN12ActorUnkKEYT19func_ov041_02124094Ev kind:function(arm,size=0x2c) addr:0x02124094 _ZN12ActorUnkKEYT19func_ov041_021240c0Ev kind:function(arm,size=0xa4) addr:0x021240c0 diff --git a/config/eur/arm9/overlays/ov057/relocs.txt b/config/eur/arm9/overlays/ov057/relocs.txt index e4db9946..1b757724 100644 --- a/config/eur/arm9/overlays/ov057/relocs.txt +++ b/config/eur/arm9/overlays/ov057/relocs.txt @@ -196,7 +196,7 @@ from:0x0213a3c0 kind:load to:0x0213bf60 module:overlay(57) from:0x0213a3c4 kind:load to:0x0213befa module:overlay(57) from:0x0213a3c8 kind:load to:0x0213bf04 module:overlay(57) from:0x0213a3cc kind:load to:0x0213b8ee module:overlay(57) -from:0x0213a3dc kind:arm_call to:0x020f750c module:overlays(26,31) +from:0x0213a3dc kind:arm_call to:0x020f750c module:overlay(31) from:0x0213a3ec kind:arm_call to:0x0213a1d4 module:overlay(57) from:0x0213a3f4 kind:arm_call to:0x0207f47c module:overlay(0) from:0x0213a410 kind:arm_call to:0x0203d160 module:main diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 12d73e1d..222d4301 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1012,7 +1012,7 @@ func_0201a87c kind:function(arm,size=0xf8) addr:0x0201a87c func_0201a974 kind:function(arm,size=0xd0) addr:0x0201a974 _ZN18UnkStruct_0204af1c13func_0201aa44EP34UnkStruct_ov019_020d24c8_28_258_00PviS2_ kind:function(arm,size=0x48) addr:0x0201aa44 _ZN18UnkStruct_0204af1c13func_0201aa8cEP34UnkStruct_ov019_020d24c8_28_258_00iiii kind:function(arm,size=0x44) addr:0x0201aa8c -_ZN18UnkStruct_0204af1c13func_0201aad0EP14UnkSubStruct19PviS2_ kind:function(arm,size=0x1a0) addr:0x0201aad0 +_ZN18UnkStruct_0204af1c13func_0201aad0EP14CellAnimObjectPviS2_ kind:function(arm,size=0x1a0) addr:0x0201aad0 func_0201ac70 kind:function(arm,size=0x13c) addr:0x0201ac70 func_0201adac kind:function(arm,size=0x50) addr:0x0201adac func_0201adfc kind:function(arm,size=0xb0) addr:0x0201adfc diff --git a/config/jp/arm9/itcm/delinks.txt b/config/jp/arm9/itcm/delinks.txt index d87fbca5..d07293d0 100644 --- a/config/jp/arm9/itcm/delinks.txt +++ b/config/jp/arm9/itcm/delinks.txt @@ -3,3 +3,6 @@ src/ITCM/ITCM_MapObjectManager.cpp: .text start:0x01fff498 end:0x01fff5d0 + +src/ITCM/ITCM_ActorManager.cpp: + .text start:0x01fff350 end:0x01fff440 diff --git a/config/jp/arm9/itcm/symbols.txt b/config/jp/arm9/itcm/symbols.txt index 837825cb..2959fdf7 100644 --- a/config/jp/arm9/itcm/symbols.txt +++ b/config/jp/arm9/itcm/symbols.txt @@ -212,7 +212,7 @@ _ZN9MapObject13func_01fff590Ei kind:function(arm,size=0x40) addr:0x01fff590 _ZN5Actor13func_01fff5d0Eii kind:function(arm,size=0x3c) addr:0x01fff5d0 _ZN18UnkStruct_027e09b413func_01fff60cEiiihii kind:function(arm,size=0x8c) addr:0x01fff60c func_01fff698 kind:function(arm,size=0x38) addr:0x01fff698 -_ZN21UnkStruct_027e0cd8_1013func_01fff6d0EP7VecFx32PiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0 +_ZN16MapObjectManager13func_01fff6d0EP7VecFx32PiS2_ kind:function(arm,size=0x74) addr:0x01fff6d0 func_01fff744 kind:function(arm,size=0x20) addr:0x01fff744 func_01fff764 kind:function(arm,size=0xec) addr:0x01fff764 func_01fff850 kind:function(arm,size=0x158) addr:0x01fff850 diff --git a/config/jp/arm9/overlays/ov000/delinks.txt b/config/jp/arm9/overlays/ov000/delinks.txt index 0cf9ed9b..aea489e9 100644 --- a/config/jp/arm9/overlays/ov000/delinks.txt +++ b/config/jp/arm9/overlays/ov000/delinks.txt @@ -74,6 +74,7 @@ src/000_Second/MapObject/MapObjectProfile_Derived2_20.cpp: .data start:0x020b4d60 end:0x020b4d88 src/000_Second/MapObject/MapObject.cpp: + complete .text start:0x0209e7a4 end:0x0209eec4 .data start:0x020b4d88 end:0x020b4dc8 @@ -108,7 +109,7 @@ src/000_Second/Item/ItemManager.cpp: .text start:0x020a9e3c end:0x020aa2e0 .rodata start:0x020b1450 end:0x020b1458 -src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp: +src/000_Second/Actor/Actor_Derived1.cpp: .text start:0x020aa2e0 end:0x020ab310 .data start:0x020b6588 end:0x020b664c diff --git a/config/jp/arm9/overlays/ov000/symbols.txt b/config/jp/arm9/overlays/ov000/symbols.txt index c3f5f5bf..bb6a0367 100644 --- a/config/jp/arm9/overlays/ov000/symbols.txt +++ b/config/jp/arm9/overlays/ov000/symbols.txt @@ -423,20 +423,20 @@ func_ov000_02061c78 kind:function(arm,size=0x48) addr:0x02061c78 func_ov000_02061cc0 kind:function(arm,size=0x24) addr:0x02061cc0 func_ov000_02061ce4 kind:function(arm,size=0x80) addr:0x02061ce4 func_ov000_02061d64 kind:function(arm,size=0x28) addr:0x02061d64 -_ZN14UnkSubStruct19C1Ev kind:function(arm,size=0x28) addr:0x02061d8c -_ZN14UnkSubStruct1919func_ov000_0206082cEsi kind:function(arm,size=0x124) addr:0x02061db4 -_ZN14UnkSubStruct1919func_ov000_02060950Ev kind:function(arm,size=0x60) addr:0x02061ed8 -_ZN14UnkSubStruct1919func_ov000_020609b0Ev kind:function(arm,size=0x14) addr:0x02061f38 -_ZN14UnkSubStruct1919func_ov000_020609c4Ev kind:function(arm,size=0xd4) addr:0x02061f4c -_ZN14UnkSubStruct1919func_ov000_02060a98Ei kind:function(arm,size=0x38) addr:0x02062020 -_ZN14UnkSubStruct1919func_ov000_02060ad0Ev kind:function(arm,size=0x28) addr:0x02062058 -_ZN14UnkSubStruct1919func_ov000_02060af8Ev kind:function(arm,size=0x58) addr:0x02062080 -_ZN14UnkSubStruct1919func_ov000_02060b50Ev kind:function(arm,size=0x14) addr:0x020620d8 -_ZN14UnkSubStruct1919func_ov000_02060b64Ev kind:function(arm,size=0x20) addr:0x020620ec +_ZN14CellAnimObjectC1Ev kind:function(arm,size=0x28) addr:0x02061d8c +_ZN14CellAnimObject19func_ov000_0206082cEsi kind:function(arm,size=0x124) addr:0x02061db4 +_ZN14CellAnimObject19func_ov000_02060950Ev kind:function(arm,size=0x60) addr:0x02061ed8 +_ZN14CellAnimObject19func_ov000_020609b0Ev kind:function(arm,size=0x14) addr:0x02061f38 +_ZN14CellAnimObject19func_ov000_020609c4Ev kind:function(arm,size=0xd4) addr:0x02061f4c +_ZN14CellAnimObject19func_ov000_02060a98Ei kind:function(arm,size=0x38) addr:0x02062020 +_ZN14CellAnimObject19func_ov000_02060ad0Ev kind:function(arm,size=0x28) addr:0x02062058 +_ZN14CellAnimObject19func_ov000_02060af8Ev kind:function(arm,size=0x58) addr:0x02062080 +_ZN14CellAnimObject19func_ov000_02060b50Ev kind:function(arm,size=0x14) addr:0x020620d8 +_ZN14CellAnimObject19func_ov000_02060b64Ev kind:function(arm,size=0x20) addr:0x020620ec func_ov000_0206210c kind:function(arm,size=0x28) addr:0x0206210c -_ZN14UnkSubStruct1919func_ov000_02060bacEv kind:function(arm,size=0x2c) addr:0x02062134 -_ZN14UnkSubStruct1919func_ov000_02060bd8Ei kind:function(arm,size=0x50) addr:0x02062160 -_ZN14UnkSubStruct1919func_ov000_02060c28Ev kind:function(arm,size=0xc) addr:0x020621b0 +_ZN14CellAnimObject19func_ov000_02060bacEv kind:function(arm,size=0x2c) addr:0x02062134 +_ZN14CellAnimObject19func_ov000_02060bd8Ei kind:function(arm,size=0x50) addr:0x02062160 +_ZN14CellAnimObject19func_ov000_02060c28Ev kind:function(arm,size=0xc) addr:0x020621b0 _ZN25UnkStruct_020d8698_2C_14CC1Ev kind:function(arm,size=0x1c) addr:0x020621bc _ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060c50EPKwP25UnkStruct_020d8698_2C_198iP34UnkStruct_ov019_020d24c8_28_258_00 kind:function(arm,size=0x2c) addr:0x020621d8 _ZN25UnkStruct_020d8698_2C_14C19func_ov000_02060c7cEi kind:function(arm,size=0x100) addr:0x02062204 @@ -696,7 +696,7 @@ _ZN21UnkSystem1_ov000_Base8vfunc_18Ev kind:function(arm,size=0x4) addr:0x02067f6 _ZN21UnkSystem1_ov000_Base19func_ov000_020669dcEv kind:function(arm,size=0x2c) addr:0x02067f64 _ZN21UnkSystem1_ov000_Base19func_ov000_02066a08EP10UnkStruct5 kind:function(arm,size=0x54) addr:0x02067f90 _ZN21UnkSystem1_ov000_Base8vfunc_10EPt kind:function(arm,size=0x3a0) addr:0x02067fe4 -_ZN21UnkSystem1_ov000_Base8vfunc_14EPv kind:function(arm,size=0x44c) addr:0x02068384 +_ZN21UnkSystem1_ov000_Base8vfunc_14EP9FLW1Instr kind:function(arm,size=0x44c) addr:0x02068384 _ZN21UnkSystem1_ov000_Base8vfunc_1CEjii kind:function(arm,size=0x8) addr:0x020687d0 _ZN21UnkSystem1_ov000_Base8vfunc_20Eiii kind:function(arm,size=0x8) addr:0x020687d8 _ZN25UnkSystem1_ov000_Derived1C2EiPN24UnkStruct_ov000_02067bc410UnkStruct1E kind:function(arm,size=0x34) addr:0x020687e0 @@ -1494,9 +1494,9 @@ _ZN19func_ov000_020803c8D2Ev kind:function(arm,size=0x30) addr:0x020803c8 func_ov000_020803f8 kind:function(arm,size=0x44) addr:0x020803f8 func_ov000_0208043c kind:function(arm,size=0x8) addr:0x0208043c func_ov000_02080444 kind:function(arm,size=0x20) addr:0x02080444 -_ZN26ActorUnk_ov000_020a8bb0_94C2Ev kind:function(arm,size=0x20) addr:0x02080464 +_ZN17Actor_Derived1_94C2Ev kind:function(arm,size=0x20) addr:0x02080464 func_ov000_02080484 kind:function(arm,size=0x1c) addr:0x02080484 -_ZN26ActorUnk_ov000_020a8bb0_94D2Ev kind:function(arm,size=0x30) addr:0x020804a0 +_ZN17Actor_Derived1_94D2Ev kind:function(arm,size=0x30) addr:0x020804a0 _ZN19func_ov000_020804d0D0Ev kind:function(arm,size=0x38) addr:0x020804d0 _ZN19func_ov000_02080508D2Ev kind:function(arm,size=0x30) addr:0x02080508 func_ov000_02080538 kind:function(arm,size=0x4) addr:0x02080538 @@ -2323,13 +2323,13 @@ _ZN5Actor8vfunc_30Ev kind:function(arm,size=0x4) addr:0x02099c6c _ZN5Actor8vfunc_34Ev kind:function(arm,size=0x8) addr:0x02099c70 _ZN5Actor19func_ov000_020984d0Ev kind:function(arm,size=0x20) addr:0x02099c78 _ZN5Actor19func_ov000_020984f0Ev kind:function(arm,size=0x28) addr:0x02099c98 -_ZN5Actor8vfunc_00EP7VecFx32 kind:function(arm,size=0x24) addr:0x02099cc0 +_ZNK5Actor12GetOffsetPosEP7VecFx32 kind:function(arm,size=0x24) addr:0x02099cc0 _ZN5Actor19func_ov000_0209853cEi kind:function(arm,size=0x18) addr:0x02099ce4 _ZN5Actor8vfunc_04Ev kind:function(arm,size=0x18) addr:0x02099cfc _ZN5Actor8vfunc_08Ev kind:function(arm,size=0xc) addr:0x02099d14 _ZN5Actor8vfunc_0cEv kind:function(arm,size=0xc) addr:0x02099d20 -_ZN5Actor8vfunc_38Ei kind:function(arm,size=0x6c) addr:0x02099d2c -_ZN5Actor8vfunc_3cEiP7VecFx32 kind:function(arm,size=0x3c) addr:0x02099d98 +_ZN5Actor4GrabE15ActorGrabParams kind:function(arm,size=0x6c) addr:0x02099d2c +_ZN5Actor4DropE15ActorGrabParamsPK7VecFx32 kind:function(arm,size=0x3c) addr:0x02099d98 _ZN5Actor19func_ov000_0209862cEi kind:function(arm,size=0x28) addr:0x02099dd4 func_ov000_02099dfc kind:function(arm,size=0x28) addr:0x02099dfc func_ov000_02099e24 kind:function(arm,size=0x38) addr:0x02099e24 @@ -2434,7 +2434,7 @@ _ZN19ActorProfileUnkSWOB6CreateEv kind:function(arm,size=0x24) addr:0x0209c090 _ZN19ActorProfileUnkSWOBC1Ev kind:function(arm,size=0x28) addr:0x0209c0b4 _ZN12ActorUnkSWOBC1Ev kind:function(arm,size=0x38) addr:0x0209c0dc _ZN12ActorUnkSWOB8vfunc_18Ei kind:function(arm,size=0x6c) addr:0x0209c114 -_ZN12ActorUnkSWOB19func_ov000_0209a9b4Ei kind:function(arm,size=0x7c) addr:0x0209c180 +_ZN12ActorUnkSWOB8SetStateEs kind:function(arm,size=0x7c) addr:0x0209c180 _ZN12ActorUnkSWOB19func_ov000_0209aa30Ev kind:function(arm,size=0x234) addr:0x0209c1fc _ZN12ActorUnkSWOBD1Ev kind:function(arm,size=0x14) addr:0x0209c430 _ZN12ActorUnkSWOBD0Ev kind:function(arm,size=0x1c) addr:0x0209c444 @@ -2448,7 +2448,7 @@ _ZN12ActorUnkSWTMD0Ev kind:function(arm,size=0x50) addr:0x0209c570 _ZN12ActorUnkSWTM8vfunc_18Ei kind:function(arm,size=0x74) addr:0x0209c5c0 _ZN12ActorUnkSWTM8vfunc_20Ev kind:function(arm,size=0xe8) addr:0x0209c634 _ZN12ActorUnkSWTM8vfunc_24Ev kind:function(arm,size=0x4) addr:0x0209c71c -_ZN12ActorUnkSWTM19func_ov000_0209af54Ei kind:function(arm,size=0x90) addr:0x0209c720 +_ZN12ActorUnkSWTM8SetStateEs kind:function(arm,size=0x90) addr:0x0209c720 _ZN12ActorUnkSWTM19func_ov000_0209afe4Ev kind:function(arm,size=0x54) addr:0x0209c7b0 _ZN12ActorUnkSWTM19func_ov000_0209b038Ev kind:function(arm,size=0x128) addr:0x0209c804 _ZN12ActorUnkSWTM19func_ov000_0209b160Ev kind:function(arm,size=0x24) addr:0x0209c92c @@ -2566,7 +2566,7 @@ _ZN9MapObject19func_ov000_0209d2f0EiiP5Vec2b kind:function(arm,size=0xc4) addr:0 _ZN9MapObject19func_ov000_0209d3b4Eii kind:function(arm,size=0x80) addr:0x0209eb78 _ZN9MapObject19func_ov000_0209d434EPcP34UnkStruct_ov019_020d24c8_28_258_00i kind:function(arm,size=0xe4) addr:0x0209ebf8 _ZN9MapObject19func_ov000_0209d518Eiiih kind:function(arm,size=0x34) addr:0x0209ecdc -_ZN9MapObject19func_ov000_0209d54cEPvPS_iP7VecFx32ii kind:function(arm,size=0x7c) addr:0x0209ed10 +_ZN9MapObject19func_ov000_0209d54cEP8ActorRefPS_tPK7VecFx32st kind:function(arm,size=0x7c) addr:0x0209ed10 _ZN9MapObject19func_ov000_0209d5c8E8ActorRef kind:function(arm,size=0x4c) addr:0x0209ed8c _ZN9MapObject19func_ov000_0209d614Ei kind:function(arm,size=0x54) addr:0x0209edd8 _ZN9MapObject19func_ov000_0209d668Ev kind:function(arm,size=0x44) addr:0x0209ee2c @@ -2714,7 +2714,7 @@ func_ov000_020a2750 kind:function(thumb,size=0xc) addr:0x020a2750 func_ov000_020a275c kind:function(thumb,size=0x30) addr:0x020a275c func_ov000_020a278c kind:function(thumb,size=0x10) addr:0x020a278c func_ov000_020a279c kind:function(thumb,size=0x3c) addr:0x020a279c -_ZN15SaveManager_21C19func_ov000_020a1000Ev kind:function(thumb,size=0x28) addr:0x020a27d8 +_ZN28SaveFile_00000_0000_Data_D9C19func_ov000_020a1000Ev kind:function(thumb,size=0x28) addr:0x020a27d8 _ZN8SaveSlot19func_ov000_020a1028EP12SaveInfoData kind:function(thumb,size=0xcc) addr:0x020a2800 _ZN8SaveSlot19func_ov000_020a10f4EP24SaveFile_00000_2600_Data kind:function(arm,size=0x30) addr:0x020a28cc _ZN8SaveSlot19func_ov000_020a1124Ev kind:function(arm,size=0x13c) addr:0x020a28fc @@ -3019,56 +3019,56 @@ _ZN11ItemManager19func_ov000_020a8a90Ev kind:function(arm,size=0x14) addr:0x020a _ZN11ItemManager19func_ov000_020a8aa4Ev kind:function(arm,size=0x14) addr:0x020aa2a4 _ZN11ItemManager19func_ov000_020a8ab8Ev kind:function(arm,size=0x14) addr:0x020aa2b8 _ZN11ItemManager19func_ov000_020a8accEv kind:function(arm,size=0x14) addr:0x020aa2cc -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8ae0Ei kind:function(arm,size=0x14) addr:0x020aa2e0 +_ZN14Actor_Derived119func_ov000_020a8ae0Ei kind:function(arm,size=0x14) addr:0x020aa2e0 func_ov000_020aa2f4 kind:function(arm,size=0x54) addr:0x020aa2f4 func_ov000_020aa348 kind:function(arm,size=0x34) addr:0x020aa348 func_ov000_020aa37c kind:function(arm,size=0x34) addr:0x020aa37c -_ZN23ActorUnk_ov000_020a8bb0C1EP11ModelRenderi kind:function(arm,size=0x110) addr:0x020aa3b0 -_ZN23ActorUnk_ov000_020a8bb0D1Ev kind:function(arm,size=0x20) addr:0x020aa4c0 -_ZN23ActorUnk_ov000_020a8bb0D0Ev kind:function(arm,size=0x28) addr:0x020aa4e0 -_ZN23ActorUnk_ov000_020a8bb0D2Ev kind:function(arm,size=0x20) addr:0x020aa508 -_ZN23ActorUnk_ov000_020a8bb08vfunc_18Ei kind:function(arm,size=0x78) addr:0x020aa528 -_ZN23ActorUnk_ov000_020a8bb08vfunc_54Ei kind:function(arm,size=0x4) addr:0x020aa5a0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_1cEv kind:function(arm,size=0xc) addr:0x020aa5a4 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8db0Ev kind:function(arm,size=0x20) addr:0x020aa5b0 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8dd0Ev kind:function(arm,size=0x20) addr:0x020aa5d0 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8df0E8ActorRefi kind:function(arm,size=0x94) addr:0x020aa5f0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_b4Ev kind:function(arm,size=0x18) addr:0x020aa684 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8e9cEP7VecFx32 kind:function(arm,size=0x24) addr:0x020aa69c -_ZN23ActorUnk_ov000_020a8bb08vfunc_b0Ev kind:function(arm,size=0x94) addr:0x020aa6c0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_88Ev kind:function(arm,size=0x8) addr:0x020aa754 -_ZN23ActorUnk_ov000_020a8bb08vfunc_8cEv kind:function(arm,size=0x8) addr:0x020aa75c -_ZN23ActorUnk_ov000_020a8bb08vfunc_90Ev kind:function(arm,size=0x8) addr:0x020aa764 -_ZN23ActorUnk_ov000_020a8bb08vfunc_94Ev kind:function(arm,size=0xc) addr:0x020aa76c -_ZN23ActorUnk_ov000_020a8bb08vfunc_60Ev kind:function(arm,size=0x68) addr:0x020aa778 -_ZN23ActorUnk_ov000_020a8bb08vfunc_64Ev kind:function(arm,size=0x14) addr:0x020aa7e0 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a8ff4Ev kind:function(arm,size=0x158) addr:0x020aa7f4 -_ZN23ActorUnk_ov000_020a8bb08vfunc_6cEv kind:function(arm,size=0x4) addr:0x020aa94c -_ZN23ActorUnk_ov000_020a8bb08vfunc_68Ev kind:function(arm,size=0x50) addr:0x020aa950 -_ZN23ActorUnk_ov000_020a8bb08vfunc_7cEv kind:function(arm,size=0x8) addr:0x020aa9a0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_80Ev kind:function(arm,size=0x8) addr:0x020aa9a8 -_ZN23ActorUnk_ov000_020a8bb08vfunc_84Ev kind:function(arm,size=0x8) addr:0x020aa9b0 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a91b8EP7VecFx32i kind:function(arm,size=0x48) addr:0x020aa9b8 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a9200Ev kind:function(arm,size=0x1c) addr:0x020aaa00 -_ZN23ActorUnk_ov000_020a8bb08vfunc_70Ev kind:function(arm,size=0x24) addr:0x020aaa1c -_ZN23ActorUnk_ov000_020a8bb08vfunc_74Ev kind:function(arm,size=0x4) addr:0x020aaa40 -_ZN23ActorUnk_ov000_020a8bb08vfunc_78Ev kind:function(arm,size=0x4) addr:0x020aaa44 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a9248Ev kind:function(arm,size=0x88) addr:0x020aaa48 -_ZN23ActorUnk_ov000_020a8bb08vfunc_5cEv kind:function(arm,size=0x178) addr:0x020aaad0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_98Ev kind:function(arm,size=0x68) addr:0x020aac48 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a94b0Ev kind:function(arm,size=0xe8) addr:0x020aacb0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_9cEv kind:function(arm,size=0x2c) addr:0x020aad98 -_ZN23ActorUnk_ov000_020a8bb08vfunc_a0Ev kind:function(arm,size=0x10) addr:0x020aadc4 -_ZN23ActorUnk_ov000_020a8bb08vfunc_acEv kind:function(arm,size=0x4) addr:0x020aadd4 -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a95d8Ev kind:function(arm,size=0xc) addr:0x020aadd8 -_ZN23ActorUnk_ov000_020a8bb08vfunc_a4Ev kind:function(arm,size=0x218) addr:0x020aade4 -_ZN23ActorUnk_ov000_020a8bb08vfunc_a8Ev kind:function(arm,size=0x8) addr:0x020aaffc -_ZN23ActorUnk_ov000_020a8bb019func_ov000_020a9804Ev kind:function(arm,size=0xec) addr:0x020ab004 -_ZN23ActorUnk_ov000_020a8bb08vfunc_20Ev kind:function(arm,size=0x4) addr:0x020ab0f0 -_ZN23ActorUnk_ov000_020a8bb08vfunc_24Ev kind:function(arm,size=0x68) addr:0x020ab0f4 -_ZN23ActorUnk_ov000_020a8bb08vfunc_2cEi kind:function(arm,size=0x48) addr:0x020ab15c -_ZN23ActorUnk_ov000_020a8bb08vfunc_b8Ev kind:function(arm,size=0x34) addr:0x020ab1a4 -_ZN23ActorUnk_ov000_020a8bb08vfunc_14Ev kind:function(arm,size=0x48) addr:0x020ab1d8 +_ZN14Actor_Derived1C1EP11ModelRenderi kind:function(arm,size=0x110) addr:0x020aa3b0 +_ZN14Actor_Derived1D1Ev kind:function(arm,size=0x20) addr:0x020aa4c0 +_ZN14Actor_Derived1D0Ev kind:function(arm,size=0x28) addr:0x020aa4e0 +_ZN14Actor_Derived1D2Ev kind:function(arm,size=0x20) addr:0x020aa508 +_ZN14Actor_Derived18vfunc_18Ei kind:function(arm,size=0x78) addr:0x020aa528 +_ZN14Actor_Derived18vfunc_54Ei kind:function(arm,size=0x4) addr:0x020aa5a0 +_ZN14Actor_Derived18vfunc_1cEv kind:function(arm,size=0xc) addr:0x020aa5a4 +_ZN14Actor_Derived119func_ov000_020a8db0Ev kind:function(arm,size=0x20) addr:0x020aa5b0 +_ZN14Actor_Derived119func_ov000_020a8dd0Ev kind:function(arm,size=0x20) addr:0x020aa5d0 +_ZN14Actor_Derived119func_ov000_020a8df0E8ActorRefi kind:function(arm,size=0x94) addr:0x020aa5f0 +_ZN14Actor_Derived18vfunc_b4Ev kind:function(arm,size=0x18) addr:0x020aa684 +_ZN14Actor_Derived119func_ov000_020a8e9cEP7VecFx32 kind:function(arm,size=0x24) addr:0x020aa69c +_ZN14Actor_Derived18vfunc_b0Ev kind:function(arm,size=0x94) addr:0x020aa6c0 +_ZN14Actor_Derived18vfunc_88Ev kind:function(arm,size=0x8) addr:0x020aa754 +_ZN14Actor_Derived18vfunc_8cEv kind:function(arm,size=0x8) addr:0x020aa75c +_ZN14Actor_Derived18vfunc_90Ev kind:function(arm,size=0x8) addr:0x020aa764 +_ZN14Actor_Derived18vfunc_94Ev kind:function(arm,size=0xc) addr:0x020aa76c +_ZN14Actor_Derived18vfunc_60Ev kind:function(arm,size=0x68) addr:0x020aa778 +_ZN14Actor_Derived18vfunc_64Ev kind:function(arm,size=0x14) addr:0x020aa7e0 +_ZN14Actor_Derived119func_ov000_020a8ff4Ev kind:function(arm,size=0x158) addr:0x020aa7f4 +_ZN14Actor_Derived18vfunc_6cEv kind:function(arm,size=0x4) addr:0x020aa94c +_ZN14Actor_Derived18vfunc_68Ev kind:function(arm,size=0x50) addr:0x020aa950 +_ZN14Actor_Derived18vfunc_7cEv kind:function(arm,size=0x8) addr:0x020aa9a0 +_ZN14Actor_Derived18vfunc_80Ev kind:function(arm,size=0x8) addr:0x020aa9a8 +_ZN14Actor_Derived18vfunc_84Ev kind:function(arm,size=0x8) addr:0x020aa9b0 +_ZN14Actor_Derived119func_ov000_020a91b8EP7VecFx32i kind:function(arm,size=0x48) addr:0x020aa9b8 +_ZN14Actor_Derived119func_ov000_020a9200Ev kind:function(arm,size=0x1c) addr:0x020aaa00 +_ZN14Actor_Derived18vfunc_70Ev kind:function(arm,size=0x24) addr:0x020aaa1c +_ZN14Actor_Derived18vfunc_74Ev kind:function(arm,size=0x4) addr:0x020aaa40 +_ZN14Actor_Derived18vfunc_78Ev kind:function(arm,size=0x4) addr:0x020aaa44 +_ZN14Actor_Derived119func_ov000_020a9248Ev kind:function(arm,size=0x88) addr:0x020aaa48 +_ZN14Actor_Derived18vfunc_5cEv kind:function(arm,size=0x178) addr:0x020aaad0 +_ZN14Actor_Derived18vfunc_98Ei kind:function(arm,size=0x68) addr:0x020aac48 +_ZN14Actor_Derived119func_ov000_020a94b0Ev kind:function(arm,size=0xe8) addr:0x020aacb0 +_ZN14Actor_Derived18vfunc_9cEv kind:function(arm,size=0x2c) addr:0x020aad98 +_ZN14Actor_Derived18vfunc_a0Ev kind:function(arm,size=0x10) addr:0x020aadc4 +_ZN14Actor_Derived18vfunc_acEv kind:function(arm,size=0x4) addr:0x020aadd4 +_ZN14Actor_Derived119func_ov000_020a95d8Ev kind:function(arm,size=0xc) addr:0x020aadd8 +_ZN14Actor_Derived18vfunc_a4Ev kind:function(arm,size=0x218) addr:0x020aade4 +_ZN14Actor_Derived18vfunc_a8Ev kind:function(arm,size=0x8) addr:0x020aaffc +_ZN14Actor_Derived119func_ov000_020a9804Ev kind:function(arm,size=0xec) addr:0x020ab004 +_ZN14Actor_Derived18vfunc_20Ev kind:function(arm,size=0x4) addr:0x020ab0f0 +_ZN14Actor_Derived18vfunc_24Ev kind:function(arm,size=0x68) addr:0x020ab0f4 +_ZN14Actor_Derived18vfunc_2cEi kind:function(arm,size=0x48) addr:0x020ab15c +_ZN14Actor_Derived18vfunc_b8Ev kind:function(arm,size=0x34) addr:0x020ab1a4 +_ZN14Actor_Derived18vfunc_14Ev kind:function(arm,size=0x48) addr:0x020ab1d8 _ZN19func_ov000_020ab220D1Ev kind:function(arm,size=0x14) addr:0x020ab220 _ZN19func_ov000_020ab234D0Ev kind:function(arm,size=0x1c) addr:0x020ab234 func_ov000_020a9a50 kind:function(arm,size=0x44) addr:0x020ab250 @@ -3999,7 +3999,7 @@ data_ov000_020b6548 kind:data(any) addr:0x020b6548 data_ov000_020b6554 kind:data(any) addr:0x020b6554 data_ov000_020b6558 kind:data(any) addr:0x020b6558 data_ov000_020b6564 kind:data(any) addr:0x020b6564 -_ZTV23ActorUnk_ov000_020a8bb0 kind:data(any) addr:0x020b6588 +_ZTV14Actor_Derived1 kind:data(any) addr:0x020b6588 data_ov000_020b664c kind:data(any) addr:0x020b664c data_ov000_020b6660 kind:data(any) addr:0x020b6660 data_ov000_020b6674 kind:data(any) addr:0x020b6674 diff --git a/config/jp/arm9/overlays/ov001/delinks.txt b/config/jp/arm9/overlays/ov001/delinks.txt index b252f193..14974ba6 100644 --- a/config/jp/arm9/overlays/ov001/delinks.txt +++ b/config/jp/arm9/overlays/ov001/delinks.txt @@ -5,6 +5,9 @@ .data start:0x020c4180 end:0x020c4820 kind:data align:32 .bss start:0x020c4820 end:0x020c5f60 kind:bss align:32 +src/001_SceneInit/Save/SaveManager_001.cpp: + .text start:0x020bbeac end:0x020bc094 + src/001_SceneInit/Actor/ActorManager_001.cpp: .text start:0x020bc7ac end:0x020bd0c4 .rodata start:0x020c3e78 end:0x020c3ea0 diff --git a/config/jp/arm9/overlays/ov024/delinks.txt b/config/jp/arm9/overlays/ov024/delinks.txt index 1e9cdb9c..ade8a52c 100644 --- a/config/jp/arm9/overlays/ov024/delinks.txt +++ b/config/jp/arm9/overlays/ov024/delinks.txt @@ -243,7 +243,7 @@ src/024_MainGame/MiscAdvManager.cpp: .text start:0x020d7c58 end:0x020d7ff4 .bss start:0x020da050 end:0x020da054 -src/024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp: +src/024_MainGame/Actor/Actor_Derived1_EC_024.cpp: complete .text start:0x020d7ff4 end:0x020d8840 .bss start:0x020da054 end:0x020da058 diff --git a/config/jp/arm9/overlays/ov024/symbols.txt b/config/jp/arm9/overlays/ov024/symbols.txt index 96774863..f0defd6f 100644 --- a/config/jp/arm9/overlays/ov024/symbols.txt +++ b/config/jp/arm9/overlays/ov024/symbols.txt @@ -697,15 +697,15 @@ _ZN14MiscAdvManager13PostPriceCardEii kind:function(arm,size=0x74) addr:0x020d7f _ZN14MiscAdvManager19func_ov024_020d6610Ev kind:function(arm,size=0x1c) addr:0x020d7fb4 _ZN8InstanceI14MiscAdvManagerEC2Ev kind:function(arm,size=0x10) addr:0x020d7fd0 _ZN8InstanceI14MiscAdvManagerED2Ev kind:function(arm,size=0x14) addr:0x020d7fe0 -_ZN26ActorUnk_ov000_020a8bb0_ECC2Ev kind:function(thumb,size=0x16) addr:0x020d7ff4 -_ZN26ActorUnk_ov000_020a8bb0_ECC1Ev kind:function(thumb,size=0x16) addr:0x020d800c -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6680EPK7VecFx32Ph kind:function(arm,size=0x40) addr:0x020d8024 -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d66c0EPK7VecFx32i kind:function(arm,size=0x44) addr:0x020d8064 -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6704Ev kind:function(arm,size=0x2c) addr:0x020d80a8 -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6730Ev kind:function(arm,size=0x2a8) addr:0x020d80d4 -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d69d8EP7VecFx32PsS1_isi kind:function(arm,size=0x1a4) addr:0x020d837c -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6b7cEP7VecFx32PsS1_isi kind:function(arm,size=0x204) addr:0x020d8520 -_ZN26ActorUnk_ov000_020a8bb0_EC19func_ov024_020d6d80EP7VecFx32S1_ kind:function(arm,size=0x11c) addr:0x020d8724 +_ZN17Actor_Derived1_ECC2Ev kind:function(thumb,size=0x16) addr:0x020d7ff4 +_ZN17Actor_Derived1_ECC1Ev kind:function(thumb,size=0x16) addr:0x020d800c +_ZN17Actor_Derived1_EC19func_ov024_020d6680EPK7VecFx32Ph kind:function(arm,size=0x40) addr:0x020d8024 +_ZN17Actor_Derived1_EC19func_ov024_020d66c0EPK7VecFx32i kind:function(arm,size=0x44) addr:0x020d8064 +_ZN17Actor_Derived1_EC19func_ov024_020d6704Ev kind:function(arm,size=0x2c) addr:0x020d80a8 +_ZN17Actor_Derived1_EC19func_ov024_020d6730Ev kind:function(arm,size=0x2a8) addr:0x020d80d4 +_ZN17Actor_Derived1_EC19func_ov024_020d69d8EP7VecFx32PsS1_isi kind:function(arm,size=0x1a4) addr:0x020d837c +_ZN17Actor_Derived1_EC19func_ov024_020d6b7cEP7VecFx32PsS1_isi kind:function(arm,size=0x204) addr:0x020d8520 +_ZN17Actor_Derived1_EC19func_ov024_020d6d80EP7VecFx32S1_ kind:function(arm,size=0x11c) addr:0x020d8724 _ZN19ActorProfileUnkOBPC10GetProfileEv kind:function(arm,size=0xc) addr:0x020d8840 _ZN19ActorProfileUnkOBPC6CreateEv kind:function(arm,size=0x24) addr:0x020d884c _ZN19ActorProfileUnkOBPCC1Ev kind:function(arm,size=0x28) addr:0x020d8870 @@ -714,7 +714,7 @@ _ZN12ActorUnkOBPC8vfunc_18Ei kind:function(arm,size=0x4c) addr:0x020d88cc _ZN12ActorUnkOBPC19func_ov024_020d6f74Ev kind:function(arm,size=0x20) addr:0x020d8918 _ZN12ActorUnkOBPC8vfunc_20Ev kind:function(arm,size=0xbc) addr:0x020d8938 _ZN12ActorUnkOBPC8vfunc_24Ev kind:function(arm,size=0x14) addr:0x020d89f4 -_ZN12ActorUnkOBPC19func_ov024_020d7064Esi kind:function(arm,size=0xf0) addr:0x020d8a08 +_ZN12ActorUnkOBPC8SetStateEsi kind:function(arm,size=0xf0) addr:0x020d8a08 _ZN12ActorUnkOBPC19func_ov024_020d7154Ev kind:function(arm,size=0x168) addr:0x020d8af8 _ZN12ActorUnkOBPCD1Ev kind:function(arm,size=0x20) addr:0x020d8c60 _ZN12ActorUnkOBPCD0Ev kind:function(arm,size=0x28) addr:0x020d8c80 diff --git a/config/jp/arm9/overlays/ov026/delinks.txt b/config/jp/arm9/overlays/ov026/delinks.txt index 52025f77..54e700d0 100644 --- a/config/jp/arm9/overlays/ov026/delinks.txt +++ b/config/jp/arm9/overlays/ov026/delinks.txt @@ -5,6 +5,10 @@ .data start:0x02137600 end:0x0213b060 kind:data align:32 .bss start:0x0213b060 end:0x02143d60 kind:bss align:32 +src/026_Train/code_02102924.cpp: + .text start:0x02104b74 end:0x02104b84 + .data start:0x0213836c end:0x021384ec + src/026_Train/Actor/ActorUnkDKCL.cpp: .text start:0x02107150 end:0x0210731c .init start:0x021363b0 end:0x02136400 diff --git a/config/jp/arm9/overlays/ov026/symbols.txt b/config/jp/arm9/overlays/ov026/symbols.txt index a134c136..30107780 100644 --- a/config/jp/arm9/overlays/ov026/symbols.txt +++ b/config/jp/arm9/overlays/ov026/symbols.txt @@ -1015,7 +1015,7 @@ func_ov026_02104ad4 kind:function(arm,size=0x50) addr:0x02104ad4 func_ov026_02104b24 kind:function(arm,size=0x18) addr:0x02104b24 _ZN19func_ov026_02104b3cD0Ev kind:function(arm,size=0x1c) addr:0x02104b3c _ZN19func_ov026_02104b58D0Ev kind:function(arm,size=0x1c) addr:0x02104b58 -func_ov026_02104b74 kind:function(arm,size=0x10) addr:0x02104b74 +_Z19func_ov026_02102924i kind:function(arm,size=0x10) addr:0x02104b74 func_ov026_02104b84 kind:function(arm,size=0x14) addr:0x02104b84 func_ov026_02104b98 kind:function(arm,size=0x3c) addr:0x02104b98 _ZN19func_ov026_02104bd4D1Ev kind:function(arm,size=0x28) addr:0x02104bd4 @@ -1838,7 +1838,7 @@ _ZN19ActorProfileUnkRB1T6CreateEv kind:function(arm,size=0x24) addr:0x0212035c _ZN19ActorProfileUnkRB1TC1Ev kind:function(arm,size=0x70) addr:0x02120380 _ZN12ActorUnkRB1TC1Ev kind:function(arm,size=0x234) addr:0x021203f0 _ZN12ActorUnkRB1T19func_ov026_0211e3ccEv kind:function(arm,size=0x14) addr:0x02120624 -_ZN12ActorUnkRB1T19func_ov026_0211e3e0Ev kind:function(arm,size=0xe8) addr:0x02120638 +_ZN12ActorUnkRB1T19func_ov026_0211e3e0Ei kind:function(arm,size=0xe8) addr:0x02120638 _ZN12ActorUnkRB1T19func_ov026_0211e4c8Ev kind:function(arm,size=0x8c) addr:0x02120720 _ZN12ActorUnkRB1T19func_ov026_0211e554Ev kind:function(arm,size=0x178) addr:0x021207ac _ZN12ActorUnkRB1T19func_ov026_0211e6ccEv kind:function(arm,size=0x18) addr:0x02120924 @@ -2679,7 +2679,7 @@ data_ov026_021382a8 kind:data(any) addr:0x021382a8 data_ov026_021382bc kind:data(any) addr:0x021382bc data_ov026_021382e0 kind:data(any) addr:0x021382e0 data_ov026_02138328 kind:data(any) addr:0x02138328 -data_ov026_0213836c kind:data(any) addr:0x0213836c +data_ov026_02135fec kind:data(any) addr:0x0213836c data_ov026_021384ec kind:data(any) addr:0x021384ec data_ov026_02138794 kind:data(any) addr:0x02138794 data_ov026_021387d8 kind:data(any) addr:0x021387d8 diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index 2cce8b2c..96870921 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -590,7 +590,7 @@ _ZN10ActorRupee19func_ov031_020e970cEv kind:function(arm,size=0x34) addr:0x020eb _ZN10ActorRupee19func_ov031_020e9740Ev kind:function(arm,size=0xf8) addr:0x020eb12c _ZN10ActorRupee19func_ov031_020e9838Ev kind:function(arm,size=0x8c) addr:0x020eb224 _ZN10ActorRupee19func_ov031_020e98c4Ev kind:function(arm,size=0x40) addr:0x020eb2b0 -_ZN10ActorRupee19func_ov031_020e9904Ei kind:function(arm,size=0x54) addr:0x020eb2f0 +_ZN10ActorRupee8SetStateEs kind:function(arm,size=0x54) addr:0x020eb2f0 _ZN10ActorRupee8vfunc_20Ev kind:function(arm,size=0x230) addr:0x020eb344 _ZN10ActorRupee19func_ov031_020e9b88Ev kind:function(arm,size=0x60) addr:0x020eb574 _ZN10ActorRupee19func_ov031_020e9be8Ev kind:function(arm,size=0x44) addr:0x020eb5d4 @@ -735,7 +735,7 @@ _ZN10ActorHeart19func_ov031_020eed64EP8ActorRefPK7VecFx32jS0_ kind:function(arm, _ZN10ActorHeartC1Ev kind:function(arm,size=0xf8) addr:0x020f07cc _ZN10ActorHeart8vfunc_18Ei kind:function(arm,size=0x10) addr:0x020f08c4 _ZN10ActorHeart8vfunc_20Ev kind:function(arm,size=0x2cc) addr:0x020f08d4 -_ZN10ActorHeart19func_ov031_020ef1b4Es kind:function(arm,size=0x54) addr:0x020f0ba0 +_ZN10ActorHeart8SetStateEs kind:function(arm,size=0x54) addr:0x020f0ba0 _ZN10ActorHeart19func_ov031_020ef208Ev kind:function(arm,size=0xe4) addr:0x020f0bf4 _ZN10ActorHeart19func_ov031_020ef2ecEv kind:function(arm,size=0xc) addr:0x020f0cd8 _ZN10ActorHeart19func_ov031_020ef2f8Ev kind:function(arm,size=0x28) addr:0x020f0ce4 @@ -1172,7 +1172,7 @@ _ZN13ActorItemDrop8vfunc_18Ei kind:function(arm,size=0x30) addr:0x020fbc50 _ZN13ActorItemDrop8vfunc_20Ev kind:function(arm,size=0xc) addr:0x020fbc80 _ZN13ActorItemDrop8vfunc_24Ev kind:function(arm,size=0x18) addr:0x020fbc8c _ZN13ActorItemDrop19func_ov031_020fa260Ev kind:function(arm,size=0x1c4) addr:0x020fbca4 -_ZN13ActorItemDrop19func_ov031_020fa424Es kind:function(arm,size=0x58) addr:0x020fbe68 +_ZN13ActorItemDrop8SetStateEs kind:function(arm,size=0x58) addr:0x020fbe68 _ZN13ActorItemDrop19func_ov031_020fa468Ev kind:function(arm,size=0x4) addr:0x020fbec0 _ZN13ActorItemDrop19func_ov031_020fa46cEv kind:function(arm,size=0x28) addr:0x020fbec4 _ZN13ActorItemDrop19func_ov031_020fa494Ev kind:function(arm,size=0xc) addr:0x020fbeec @@ -1189,11 +1189,11 @@ _ZN13ActorItemDrop19func_ov031_020fa6c8Ev kind:function(arm,size=0x64) addr:0x02 _ZN13ActorItemDrop19func_ov031_020fa72cEv kind:function(arm,size=0x110) addr:0x020fc184 _ZN13ActorItemDrop8vfunc_2cEi kind:function(arm,size=0xc4) addr:0x020fc294 _ZN13ActorItemDrop19func_ov031_020fa900Ev kind:function(arm,size=0xf8) addr:0x020fc358 -_ZN19ActorDroppedItem_c4C1EP5Actor kind:function(arm,size=0x38) addr:0x020fc450 -_ZN19ActorDroppedItem_c48vfunc_00E8ActorRefi kind:function(arm,size=0x44) addr:0x020fc488 -_ZN19ActorDroppedItem_c48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020fc4cc -_ZN19ActorDroppedItem_c48vfunc_0cEi kind:function(arm,size=0x28) addr:0x020fc4ec -_ZN19ActorDroppedItem_c48vfunc_08Ev kind:function(arm,size=0x20) addr:0x020fc514 +_ZN16ActorItemDrop_c4C1EP5Actor kind:function(arm,size=0x38) addr:0x020fc450 +_ZN16ActorItemDrop_c48vfunc_00E8ActorRefi kind:function(arm,size=0x44) addr:0x020fc488 +_ZN16ActorItemDrop_c48vfunc_04Ev kind:function(arm,size=0x20) addr:0x020fc4cc +_ZN16ActorItemDrop_c48vfunc_0cEi kind:function(arm,size=0x28) addr:0x020fc4ec +_ZN16ActorItemDrop_c48vfunc_08Ev kind:function(arm,size=0x20) addr:0x020fc514 _ZN13ActorItemDropD1Ev kind:function(arm,size=0x14) addr:0x020fc534 _ZN13ActorItemDropD0Ev kind:function(arm,size=0x1c) addr:0x020fc548 _ZN21ActorProfileArrowDropD1Ev kind:function(arm,size=0x14) addr:0x020fc564 @@ -2389,7 +2389,7 @@ _ZTV19data_ov031_021168b8 kind:data(any) addr:0x021168b8 data_ov031_02114ba0 kind:data(any) addr:0x02116914 local data_ov031_02114bb0 kind:data(any) addr:0x02116924 local data_ov031_02114be8 kind:data(any) addr:0x0211695c local -_ZTV19ActorDroppedItem_c4 kind:data(any) addr:0x02116994 +_ZTV16ActorItemDrop_c4 kind:data(any) addr:0x02116994 _ZTV21ActorProfileArrowDrop kind:data(any) addr:0x021169ac _ZTV24ActorProfileTreasureDrop kind:data(any) addr:0x021169d0 _ZTV25ActorProfileRedPotionDrop kind:data(any) addr:0x021169f4 diff --git a/config/jp/arm9/overlays/ov041/symbols.txt b/config/jp/arm9/overlays/ov041/symbols.txt index 5dad3a83..b0758de6 100644 --- a/config/jp/arm9/overlays/ov041/symbols.txt +++ b/config/jp/arm9/overlays/ov041/symbols.txt @@ -29,7 +29,7 @@ _ZN12ActorUnkKEYTD0Ev kind:function(arm,size=0x38) addr:0x02125a80 _ZN12ActorUnkKEYT19func_ov041_02123cf8Ev kind:function(arm,size=0x48) addr:0x02125ab8 _ZN12ActorUnkKEYT19func_ov041_02123d40Ev kind:function(arm,size=0x48) addr:0x02125b00 _ZN12ActorUnkKEYT19func_ov041_02123d88Ev kind:function(arm,size=0x130) addr:0x02125b48 -_ZN12ActorUnkKEYT19func_ov041_02123eb8Ev kind:function(arm,size=0x140) addr:0x02125c78 +_ZN12ActorUnkKEYT4GrabE15ActorGrabParams kind:function(arm,size=0x140) addr:0x02125c78 _ZN12ActorUnkKEYT19func_ov041_02123ff8Ev kind:function(arm,size=0x9c) addr:0x02125db8 _ZN12ActorUnkKEYT19func_ov041_02124094Ev kind:function(arm,size=0x2c) addr:0x02125e54 _ZN12ActorUnkKEYT19func_ov041_021240c0Ev kind:function(arm,size=0xa4) addr:0x02125e80 diff --git a/config/jp/arm9/symbols.txt b/config/jp/arm9/symbols.txt index 708efa17..56d39211 100644 --- a/config/jp/arm9/symbols.txt +++ b/config/jp/arm9/symbols.txt @@ -1012,7 +1012,7 @@ func_0201a814 kind:function(arm,size=0xf8) addr:0x0201a814 func_0201a90c kind:function(arm,size=0xd0) addr:0x0201a90c _ZN18UnkStruct_0204af1c13func_0201aa44EP34UnkStruct_ov019_020d24c8_28_258_00PviS2_ kind:function(arm,size=0x48) addr:0x0201a9dc _ZN18UnkStruct_0204af1c13func_0201aa8cEP34UnkStruct_ov019_020d24c8_28_258_00iiii kind:function(arm,size=0x44) addr:0x0201aa24 -_ZN18UnkStruct_0204af1c13func_0201aad0EP14UnkSubStruct19PviS2_ kind:function(arm,size=0x1a0) addr:0x0201aa68 +_ZN18UnkStruct_0204af1c13func_0201aad0EP14CellAnimObjectPviS2_ kind:function(arm,size=0x1a0) addr:0x0201aa68 func_0201ac08 kind:function(arm,size=0x13c) addr:0x0201ac08 func_0201ad44 kind:function(arm,size=0x50) addr:0x0201ad44 func_0201ad94 kind:function(arm,size=0xb0) addr:0x0201ad94 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index af8effa0..ab7a68cd 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -101,6 +101,12 @@ enum ActorFlag_ { class Actor_c4; +struct ActorGrabParams { + /* 00 */ u16 unk_00; + /* 02 */ u16 unk_02; + /* 04 */ +}; + class Actor_9c { public: /* 00 (vtable) */ @@ -115,6 +121,7 @@ public: }; typedef s16 ActorState; +#define ActorState_None -1 class Actor : public SysObject { public: @@ -122,7 +129,7 @@ public: /* 04 */ VecFx32 mPos; /* 10 */ VecFx32 mPrevPos; /* 1C */ VecFx32 mVel; - /* 28 */ s16 mAngle; + /* 28 */ fx16 mAngle; /* 2A */ unk16 mUnk_2A; /* 2C */ unk32 mUnk_2C; // gravity? /* 30 */ Cylinder *mUnk_30; @@ -133,12 +140,11 @@ public: /* 44 */ u16 mUnk_44; /* 46 */ unk16 mUnk_46; /* 48 */ unk16 mUnk_48; - /* 4A */ unk8 mUnk_4A; - /* 4A */ unk8 mUnk_4B; - /* 4C */ ActorState mUnk_4C; - /* 4E */ s16 mUnk_4E; - /* 50 */ volatile u16 mUnk_50; - /* 52 */ u16 mUnk_52; + /* 4A */ u8 mUnk_4A[2]; + /* 4C */ ActorState mState; + /* 4E */ fx16 mYOffset; + /* 50 */ volatile u16 mUnk_50; // timer some actors are using + /* 52 */ u16 mUnk_52; // maximum value for above timer /* 54 */ unk32 mUnk_54; /* 58 */ ActorFlags mFlags[1]; /* 5C */ ActorParams mUnk_5C; @@ -146,7 +152,7 @@ public: /* 90 */ ActorProfile *mpProfile; /* 94 */ - /* 00 */ virtual void vfunc_00(VecFx32 *param1); + /* 00 */ virtual void GetOffsetPos(VecFx32 *pPos) const; /* 04 */ virtual bool vfunc_04(); /* 08 */ virtual unk16 vfunc_08(); /* 0C */ virtual unk8 vfunc_0c(); @@ -160,8 +166,8 @@ public: /* 2C */ virtual void vfunc_2c(unk32 param1); /* 30 */ virtual void vfunc_30(); /* 34 */ virtual unk32 vfunc_34(); - /* 38 */ virtual unk32 vfunc_38(unk32 param1); - /* 3C */ virtual bool vfunc_3c(unk32 param2, VecFx32 *param3); + /* 38 */ virtual bool Grab(ActorGrabParams grabParams); + /* 3C */ virtual bool Drop(ActorGrabParams grabParams, const VecFx32 *pVel); /* 40 */ virtual void vfunc_40(); /* 44 */ virtual void vfunc_44(); /* 48 */ virtual void vfunc_48(); @@ -178,6 +184,10 @@ public: UNSET_FLAG(this->mFlags, ActorFlag_Alive); } + bool IsAlive() { + return GET_FLAG(this->mFlags, ActorFlag_Alive); + } + Actor(); ActorId GetActorId(); @@ -252,6 +262,10 @@ public: /* 0C */ virtual void vfunc_0c(unk32 param1); /* 10 */ + template T *GetActorPtr() { + return (T *) this->mUnk_20; + } + Actor_c4(Actor *param1) : Actor_c4_Base(¶m1->mRef, 0) {} }; @@ -275,3 +289,11 @@ public: }; extern UnkStruct_ov000_020b539c data_ov000_020b539c_eur; + +struct UnkActorDataStruct1 { + /* 00 */ unk32 unk_00[4]; + /* 10 */ unk32 unk_10; + /* 14 */ unk32 unk_14; + /* 18 */ +}; +extern "C" void func_ov000_02099ddc(void *thisx, UnkActorDataStruct1 param1, unk32 param2, unk32 param3); diff --git a/include/Actor/ActorEventIcon.hpp b/include/Actor/ActorEventIcon.hpp index 038b76f9..70e21da0 100644 --- a/include/Actor/ActorEventIcon.hpp +++ b/include/Actor/ActorEventIcon.hpp @@ -9,7 +9,7 @@ class ActorEventIcon : public Actor { public: /* 000 (base) */ - /* 094 */ UnkSubStruct19 mUnk_094; // event icon + /* 094 */ CellAnimObject mUnk_094; // event icon /* 10C */ unk16 mUnk_10C; /* 110 */ unk16 mUnk_10E; // pad? diff --git a/include/Actor/ActorHeart.hpp b/include/Actor/ActorHeart.hpp index c9a969ee..e71df6ad 100644 --- a/include/Actor/ActorHeart.hpp +++ b/include/Actor/ActorHeart.hpp @@ -5,6 +5,16 @@ #include "ActorRupee.hpp" #include "types.h" +enum ActorHeartState_ { + ActorHeartState_0 = 0, + ActorHeartState_1 = 1, + ActorHeartState_2 = 2, + ActorHeartState_3 = 3, + ActorHeartState_4 = 4, + ActorHeartState_5 = 5, + ActorHeartState_Max, +}; + class ActorHeart_c4 : public Actor_c4 { public: ActorHeart_c4(Actor *param1); @@ -45,14 +55,15 @@ public: /* 4C */ virtual ~ActorHeart() override {}; void func_ov031_020f0750(); - static void func_ov031_020eed64(ActorRef *pOutRef, const VecFx32 *pPos, u32 params, ActorRef ref); - void func_ov031_020ef1b4(unk16 param_2); + void SetState(ActorState state); void func_ov031_020ef208(); void func_ov031_020ef4a8(); void func_ov031_020ef528(); void func_ov031_020ef570(); void func_ov031_020ef698(); + static void func_ov031_020eed64(ActorRef *pOutRef, const VecFx32 *pPos, u32 params, ActorRef ref); + // data_ov031_02113d74 void func_ov031_020ef2f8(); void func_ov031_020ef334(); diff --git a/include/Actor/ActorItemDrop.hpp b/include/Actor/ActorItemDrop.hpp index 13910f51..cff72110 100644 --- a/include/Actor/ActorItemDrop.hpp +++ b/include/Actor/ActorItemDrop.hpp @@ -20,21 +20,21 @@ enum ItemDropType_ { ItemDropType_Max = 10, }; -enum ActorDroppedItemState_ { - ActorDroppedItemState_0 = 0, - ActorDroppedItemState_1 = 1, - ActorDroppedItemState_2 = 2, - ActorDroppedItemState_3 = 3, - ActorDroppedItemState_4 = 4, - ActorDroppedItemState_5 = 5, - ActorDroppedItemState_6 = 6, - ActorDroppedItemState_Max, +enum ActorItemDropState_ { + ActorItemDropState_0 = 0, + ActorItemDropState_1 = 1, + ActorItemDropState_2 = 2, + ActorItemDropState_3 = 3, + ActorItemDropState_4 = 4, + ActorItemDropState_5 = 5, + ActorItemDropState_6 = 6, + ActorItemDropState_Max, }; -class ActorDroppedItem_c4 : public Actor_c4 { +class ActorItemDrop_c4 : public Actor_c4 { public: // func_ov031_020fa9f8 - ActorDroppedItem_c4(Actor *param1); + ActorItemDrop_c4(Actor *param1); virtual bool vfunc_00(ActorRef ref, unk32 param2) override; virtual void vfunc_04() override; @@ -58,7 +58,7 @@ public: /* 0D8 */ fx32 mUnk_D8; /* 0DC */ ActorRef mUnk_DC; /* 0E0 */ ActorRef mUnk_E0; - /* 0E4 */ ActorDroppedItem_c4 mUnk_E4; + /* 0E4 */ ActorItemDrop_c4 mUnk_E4; /* 108 */ unk16 mUnk_108; /* 10A */ STRUCT_PAD(0x10A, 0x10C); /* 10C */ VecFx32 mUnk_10C; @@ -83,24 +83,28 @@ public: /* 4C */ virtual ~ActorItemDrop() override; void func_ov031_020fa260(); - void func_ov031_020fa424(ActorState state); - void func_ov031_020fa468(); - void func_ov031_020fa46c(); - void func_ov031_020fa494(); - void func_ov031_020fa4a0(); - void func_ov031_020fa524(); - void func_ov031_020fa568(); - void func_ov031_020fa5d8(); - void func_ov031_020fa5f0(); - void func_ov031_020fa650(); - void func_ov031_020fa664(); - void func_ov031_020fa668(); - void func_ov031_020fa678(); - void func_ov031_020fa6c8(); - void func_ov031_020fa72c(); + void SetState(ActorState state); void func_ov031_020fa900(); static void func_ov031_020f9f8c(ActorRef *pOutRef, const VecFx32 *pPos, u32 params, ActorRef ref); + + // data_ov031_02114bb0 + void func_ov031_020fa46c(); + void func_ov031_020fa4a0(); + void func_ov031_020fa568(); + void func_ov031_020fa5f0(); + void func_ov031_020fa664(); + void func_ov031_020fa678(); + void func_ov031_020fa72c(); + + // data_ov031_02114be8 + void func_ov031_020fa468(); + void func_ov031_020fa494(); + void func_ov031_020fa524(); + void func_ov031_020fa5d8(); + void func_ov031_020fa650(); + void func_ov031_020fa668(); + void func_ov031_020fa6c8(); }; class ActorProfileArrowDrop : public ActorProfile { diff --git a/include/Actor/ActorManager.hpp b/include/Actor/ActorManager.hpp index b37763f8..a002735d 100644 --- a/include/Actor/ActorManager.hpp +++ b/include/Actor/ActorManager.hpp @@ -1,6 +1,7 @@ #pragma once -#include "Actor/ActorUnk_ov000_020a8bb0.hpp" +#include "Actor/ActorRef.hpp" +#include "Actor/Actor_Derived1.hpp" #include "System/SysNew.hpp" #include "Unknown/Common.hpp" #include "files.h" @@ -43,8 +44,8 @@ public: ActorManager(); ~ActorManager(); - Actor *func_01fff3b4(ActorRef ref); Actor **func_01fff350(void *param1, Actor **ppActorTable); + Actor *func_01fff3b4(ActorRef ref); void func_ov000_02096e44(int index); unk32 func_ov000_0209704c(); diff --git a/include/Actor/ActorRupee.hpp b/include/Actor/ActorRupee.hpp index cd820372..89d3feb1 100644 --- a/include/Actor/ActorRupee.hpp +++ b/include/Actor/ActorRupee.hpp @@ -3,7 +3,7 @@ #include "Actor/Actor.hpp" #include "Actor/ActorManager.hpp" #include "Actor/ActorProfile.hpp" -#include "Actor/ActorUnk_ov000_020a8bb0.hpp" +#include "Actor/Actor_Derived1.hpp" #include "Player/PlayerGet.hpp" #include "types.h" @@ -19,6 +19,23 @@ enum RupeeId_ { /* 7 */ RupeeId_7, }; +enum ActorRupeeState_ { + ActorRupeeState_0 = 0, + ActorRupeeState_1 = 1, + ActorRupeeState_2 = 2, + ActorRupeeState_3 = 3, + ActorRupeeState_4 = 4, + ActorRupeeState_5 = 5, + ActorRupeeState_6 = 6, + ActorRupeeState_7 = 7, + ActorRupeeState_8 = 8, + ActorRupeeState_9 = 9, + ActorRupeeState_10 = 10, + ActorRupeeState_11 = 11, + ActorRupeeState_12 = 12, + ActorRupeeState_Max, +}; + class ActorRupee_c4 : public Actor_c4 { public: ActorRupee_c4(Actor *param1); @@ -91,7 +108,7 @@ public: void func_ov031_020e9740(); void func_ov031_020e9838(); void func_ov031_020e98c4(); - void func_ov031_020e9904(unk32 param1); + void SetState(ActorState state); void func_ov031_020e9b88(); void func_ov031_020e9be8(); bool func_ov031_020e9d54(); diff --git a/include/Actor/ActorUnkKEYT.hpp b/include/Actor/ActorUnkKEYT.hpp index 0c9b3e2c..c225b147 100644 --- a/include/Actor/ActorUnkKEYT.hpp +++ b/include/Actor/ActorUnkKEYT.hpp @@ -24,13 +24,13 @@ public: ActorUnkKEYT(); + /* 38 */ virtual bool Grab(ActorGrabParams grabParams) override; /* 4C */ virtual ~ActorUnkKEYT() override; void func_ov041_02123c7c(void); void func_ov041_02123cf8(void); void func_ov041_02123d40(void); void func_ov041_02123d88(void); - void func_ov041_02123eb8(void); void func_ov041_02123ff8(void); void func_ov041_02124094(void); void func_ov041_021240c0(void); diff --git a/include/Actor/ActorUnkOBPC.hpp b/include/Actor/ActorUnkOBPC.hpp index 84bb8cff..d0ca9f15 100644 --- a/include/Actor/ActorUnkOBPC.hpp +++ b/include/Actor/ActorUnkOBPC.hpp @@ -6,6 +6,12 @@ #include "global.h" #include "types.h" +enum ActorUnkOBPCState_ { + ActorUnkOBPCState_0 = 0, + ActorUnkOBPCState_1 = 1, + ActorUnkOBPCState_Max, +}; + class ActorUnkOBPC : public Actor { public: /* 00 (base) */ @@ -19,10 +25,9 @@ public: /* 18 */ virtual bool vfunc_18(unk32 param1) override; /* 20 */ virtual void vfunc_20() override; /* 24 */ virtual void vfunc_24() override; - /* 4C */ virtual ~ActorUnkOBPC() override; bool func_ov024_020d6f74(void); - void func_ov024_020d7064(s16 param1, unk32 param2); + void SetState(ActorState state, int param2); bool func_ov024_020d7154(void); }; @@ -31,7 +36,6 @@ public: /* 00 (base) */ ActorProfileUnkOBPC(); - ~ActorProfileUnkOBPC(); /* 0C */ virtual Actor *Create(); diff --git a/include/Actor/ActorUnkRB1T.hpp b/include/Actor/ActorUnkRB1T.hpp index be622060..d2758ee9 100644 --- a/include/Actor/ActorUnkRB1T.hpp +++ b/include/Actor/ActorUnkRB1T.hpp @@ -4,6 +4,7 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" +#include "Actor/Actor_Derived1.hpp" #include "global.h" #include "types.h" @@ -17,20 +18,40 @@ public: /* 0C */ virtual void vfunc_0c(unk32 param1) override; }; -class ActorUnkRB1T : public Actor { +class ActorUnkRB1T : public Actor_Derived1 { public: - /* 00 (base) */ - /* 94 */ + /* 000 (base) */ + /* 120 */ unk32 mUnk_120; + /* 124 */ STRUCT_PAD(0x124, 0x20C); + /* 20C */ ModelRender mUnk_20C; // actually a derived class of a derived class + /* 26C */ STRUCT_PAD(0x26C, 0x280); + /* 280 */ unk32 mUnk_280; + /* 284 */ STRUCT_PAD(0x284, 0x300); + /* 300 */ unk32 mUnk_300; + /* 304 */ STRUCT_PAD(0x304, 0x36C); + /* 36C */ unk8 mUnk_36C; + /* 36D */ unk8 mUnk_36D; + /* 36E */ unk8 mUnk_36E; + /* 36F */ unk8 mUnk_36F; + /* 370 */ unk8 mUnk_370; + /* 371 */ unk8 mUnk_371; + /* 372 */ unk8 mUnk_372; + /* 373 */ unk8 mUnk_373; + /* 374 */ unk8 mUnk_374; + /* 375 */ unk8 mUnk_375; + /* 376 */ unk8 mUnk_376; + /* 377 */ unk8 mUnk_377; ActorUnkRB1T(); /* 4C */ virtual ~ActorUnkRB1T() override; + /* 58 */ virtual void vfunc_58(unk32 param1); void func_ov026_0211e3cc(void); - void func_ov026_0211e3e0(void); + bool func_ov026_0211e3e0(unk32 param1); void func_ov026_0211e4c8(void); void func_ov026_0211e554(void); - void func_ov026_0211e6cc(void); + unk32 func_ov026_0211e6cc(void); void func_ov026_0211e6e4(void); void func_ov026_0211e6f0(void); void func_ov026_0211e748(void); @@ -77,7 +98,7 @@ public: void func_ov026_02120744(void); void func_ov026_021207e0(void); void func_ov026_02120874(void); - void func_ov026_021208a0(void); + static void func_ov026_021208a0(void); //! TODO is this really static? can't make it work as a ptmf void func_ov026_02120954(void); void func_ov026_02120974(void); void func_ov026_021209d8(void); diff --git a/include/Actor/ActorUnkSWOB.hpp b/include/Actor/ActorUnkSWOB.hpp index dcaea8ee..6377d90c 100644 --- a/include/Actor/ActorUnkSWOB.hpp +++ b/include/Actor/ActorUnkSWOB.hpp @@ -2,9 +2,17 @@ #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" +#include "Actor/ActorRef.hpp" #include "global.h" #include "types.h" +enum ActorUnkSWOBState_ { + ActorUnkSWOBState_0 = 0, + ActorUnkSWOBState_1 = 1, + ActorUnkSWOBState_2 = 2, + ActorUnkSWOBState_Max, +}; + class ActorUnkSWOB : public Actor { public: /* 00 (base) */ @@ -21,10 +29,9 @@ public: /* 18 */ virtual bool vfunc_18(unk32 param1) override; /* 20 */ virtual void vfunc_20() override; - /* 4C */ virtual ~ActorUnkSWOB() override; bool func_ov000_0209a948(void); - void func_ov000_0209a9b4(unk32 param1); + void SetState(ActorState state); void func_ov000_0209aa30(void); }; @@ -33,7 +40,6 @@ public: /* 00 (base) */ ActorProfileUnkSWOB(); - ~ActorProfileUnkSWOB(); /* 0C */ virtual Actor *Create(); diff --git a/include/Actor/ActorUnkSWTM.hpp b/include/Actor/ActorUnkSWTM.hpp index ca23f625..75f92129 100644 --- a/include/Actor/ActorUnkSWTM.hpp +++ b/include/Actor/ActorUnkSWTM.hpp @@ -5,6 +5,14 @@ #include "global.h" #include "types.h" +enum ActorUnkSWTMState_ { + ActorUnkSWTMState_0 = 0, + ActorUnkSWTMState_1 = 1, + ActorUnkSWTMState_2 = 2, + ActorUnkSWTMState_3 = 3, + ActorUnkSWTMState_Max, +}; + class ActorUnkSWTM_B0 { public: /* 00 */ unk32 mUnk_00; @@ -39,7 +47,7 @@ public: /* 24 */ virtual void vfunc_24() override; /* 4C */ virtual ~ActorUnkSWTM() override; - void func_ov000_0209af54(unk32 param1); + void SetState(ActorState state); bool func_ov000_0209afe4(void); unk32 func_ov000_0209b038(void); void func_ov000_0209b160(void); @@ -52,7 +60,6 @@ public: /* 00 (base) */ ActorProfileUnkSWTM(); - ~ActorProfileUnkSWTM(); /* 0C */ virtual Actor *Create(); diff --git a/include/Actor/ActorUnk_ov000_020a8bb0.hpp b/include/Actor/Actor_Derived1.hpp similarity index 83% rename from include/Actor/ActorUnk_ov000_020a8bb0.hpp rename to include/Actor/Actor_Derived1.hpp index 6636e4dc..6ef76882 100644 --- a/include/Actor/ActorUnk_ov000_020a8bb0.hpp +++ b/include/Actor/Actor_Derived1.hpp @@ -33,7 +33,7 @@ public: ActorUnk_vfunc_b0(); }; -class ActorUnk_ov000_020a8bb0_94 { +class Actor_Derived1_94 { public: /* 00 */ unk32 mUnk_00; /* 04 */ unk32 mUnk_04; @@ -41,20 +41,20 @@ public: /* 0A */ unk16 mUnk_0A; /* 0C */ unk32 mUnk_0C; - ActorUnk_ov000_020a8bb0_94(); - ~ActorUnk_ov000_020a8bb0_94(); + Actor_Derived1_94(); + ~Actor_Derived1_94(); }; -class ActorUnk_ov000_020a8bb0_94_Derived1 : public ActorUnk_ov000_020a8bb0_94 { +class Actor_Derived1_94_Derived1 : public Actor_Derived1_94 { public: /* 00 (base) */ - ActorUnk_ov000_020a8bb0_94_Derived1(unk32 param1) { + Actor_Derived1_94_Derived1(unk32 param1) { this->mUnk_0C = param1; } }; -class ActorUnk_ov000_020a8bb0_a4 { +class Actor_Derived1_a4 { public: /* 00 */ ModelRender *mpModelRender; /* 08 */ unk16 mUnk_04; @@ -64,16 +64,16 @@ public: void func_01ffc6d4(u16 param1, VecFx32 *pos); - ActorUnk_ov000_020a8bb0_a4(ModelRender *pModelRender) { + Actor_Derived1_a4(ModelRender *pModelRender) { this->mpModelRender = pModelRender; this->mUnk_04 = 0; this->mUnk_08 = 0; } - ~ActorUnk_ov000_020a8bb0_a4() {} + ~Actor_Derived1_a4() {} }; -class ActorUnk_ov000_020a8bb0_EC { +class Actor_Derived1_EC { public: /* 00 */ UnkStruct_027e0960_TableEntry *mUnk_00; /* 04 */ u8 mUnk_04; @@ -84,8 +84,8 @@ public: /* 0C */ VecFx32 mUnk_0C; /* 18 */ - ActorUnk_ov000_020a8bb0_EC(); - ~ActorUnk_ov000_020a8bb0_EC() {} + Actor_Derived1_EC(); + ~Actor_Derived1_EC() {} void func_ov024_020d6680(const VecFx32 *param1, u8 *param2); void func_ov024_020d66c0(const VecFx32 *param1, unk32 param2); @@ -96,11 +96,11 @@ public: u16 *func_ov024_020d6d80(VecFx32 *pPos, VecFx32 *pVel); }; -class ActorUnk_ov000_020a8bb0 : public Actor { +class Actor_Derived1 : public Actor { public: /* 000 (base) */ - /* 094 */ ActorUnk_ov000_020a8bb0_94_Derived1 mUnk_094; - /* 0A4 */ ActorUnk_ov000_020a8bb0_a4 mUnk_0A4; + /* 094 */ Actor_Derived1_94_Derived1 mUnk_094; + /* 0A4 */ Actor_Derived1_a4 mUnk_0A4; /* 0B0 */ u16 mUnk_0B0; /* 0B4 */ unk32 mUnk_0B4; /* 0B8 */ unk32 mUnk_0B8; @@ -116,10 +116,10 @@ public: /* 0DC */ unk16 mUnk_0DE; /* 0E0 */ unk16 mUnk_0E0; /* 0E0 */ unk16 mUnk_0E2; - /* 0E4 */ unk32 mUnk_0E4; + /* 0E4 */ void *mUnk_0E4; // callback /* 0E8 */ unk16 mUnk_0E8; /* 0E8 */ unk16 mUnk_0EA; - /* 0EC */ ActorUnk_ov000_020a8bb0_EC mUnk_0EC; + /* 0EC */ Actor_Derived1_EC mUnk_0EC; /* 104 */ Cylinder mUnk_104; /* 114 */ unk32 mUnk_114; /* 118 */ unk32 mUnk_118; @@ -131,9 +131,9 @@ public: /* 20 */ virtual void vfunc_20() override; /* 24 */ virtual void vfunc_24() override; /* 2C */ virtual void vfunc_2c(unk32 param1) override; - /* 4C */ virtual ~ActorUnk_ov000_020a8bb0(); + /* 4C */ virtual ~Actor_Derived1(); /* 54 */ virtual void vfunc_54(unk32 param1); - /* 54 */ virtual void vfunc_58(unk32 param1) = 0; + /* 58 */ virtual void vfunc_58(unk32 param1) = 0; /* 5C */ virtual void vfunc_5c(); /* 60 */ virtual void vfunc_60(); /* 64 */ virtual bool vfunc_64(); @@ -149,7 +149,7 @@ public: /* 8C */ virtual unk32 vfunc_8c(); /* 90 */ virtual unk32 vfunc_90(); /* 94 */ virtual void vfunc_94(); - /* 98 */ virtual void vfunc_98(); + /* 98 */ virtual void vfunc_98(unk32 param1); /* 9C */ virtual void vfunc_9c(); /* A0 */ virtual unk32 vfunc_a0(); /* A4 */ virtual void vfunc_a4(); @@ -160,8 +160,10 @@ public: /* B8 */ virtual void vfunc_b8(); /* BC */ + Actor_Derived1(ModelRender *param1, unk32 param2); + + // overlay 0 void func_ov000_020a8ae0(fx32 param1); - ActorUnk_ov000_020a8bb0(ModelRender *param1, unk32 param2); bool func_ov000_020a8db0(); bool func_ov000_020a8dd0(); void func_ov000_020a8df0(ActorRef param1, unk32 param2); @@ -172,7 +174,6 @@ public: void func_ov000_020a9248(); void func_ov000_020a94b0(); void func_ov000_020a95d8(); - static void func_ov000_020a9804(); void func_ov000_020a9a20(); void func_ov000_020a9a34(); void func_ov000_020a9a50(); @@ -181,5 +182,8 @@ public: void func_ov000_020a9ae0(); void func_ov000_020a9afc(); + static void func_ov000_020a9804(); + + // overlay 31 void func_ov031_020e3ca4(); }; diff --git a/include/Animation/CellAnimObject.hpp b/include/Animation/CellAnimObject.hpp new file mode 100644 index 00000000..5aff4c4e --- /dev/null +++ b/include/Animation/CellAnimObject.hpp @@ -0,0 +1,47 @@ +#pragma once + +#include +#include + +// assumed to be the only original name, from an assert inside `func_ov000_020609c4` +class CellAnimObject { +public: + /* 00 */ CellAnim mCellAnim; + /* 50 */ unk32 mUnk_50; + /* 54 */ unk32 mUnk_54; + /* 58 */ unk32 mUnk_58; // another timer? + /* 5C */ Vec2s mUnk_5C; // position of the animated texture + /* 60 */ unk32 mUnk_60; + /* 64 */ unk32 mUnk_64; + /* 68 */ unk32 mUnk_68; + /* 6C */ unk16 mUnk_6C; + /* 6E */ bool mUnk_6E; + /* 6F */ unk8 mUnk_6F; + /* 70 */ unk32 mUnk_70; + /* 74 */ unk16 mUnk_74; + /* 76 */ unk16 mUnk_76; + /* 78 */ + + CellAnimObject(); + CellAnimObject(unk32 param1, unk32 param2) { + this->mUnk_6E = true; + this->mUnk_70 = 0; + this->mUnk_5C.x = 0; + this->mUnk_5C.y = 0; + this->mUnk_74 = 0; + this->func_ov000_0206082c(param1, param2); + } + + void func_ov000_0206082c(s16 param1, unk32 param2); + void func_ov000_02060950(); + void func_ov000_020609b0(); + void func_ov000_020609c4(void); + bool func_ov000_02060a98(unk32 param1); + void func_ov000_02060ad0(); + bool func_ov000_02060af8(void); + void func_ov000_02060b50(); + void func_ov000_02060b64(void); + void func_ov000_02060bac(); + unk32 func_ov000_02060c28(void); + void func_ov000_02060bd8(unk32 param1); +}; diff --git a/include/FileSelect/FileSelect.hpp b/include/FileSelect/FileSelect.hpp index 9a0d9ccb..74858c89 100644 --- a/include/FileSelect/FileSelect.hpp +++ b/include/FileSelect/FileSelect.hpp @@ -16,7 +16,7 @@ extern "C" void func_ov001_020bd6a8(); class FileSelect_UnkClass7_04 { public: - /* 000 */ UnkSubStruct19 mUnk_000[30]; + /* 000 */ CellAnimObject mUnk_000[30]; /* E10 */ Vec2us mUnk_E10[30]; /* E88 */ }; diff --git a/include/FileSelect/FileSelectMain.hpp b/include/FileSelect/FileSelectMain.hpp index 8618ab3d..53cadf7a 100644 --- a/include/FileSelect/FileSelectMain.hpp +++ b/include/FileSelect/FileSelectMain.hpp @@ -124,7 +124,7 @@ public: // adventure mode animated sword icon /* 10BC */ UnkSystem2_UnkSubSystem9 mUnk_10BC; /* 1100 */ UnkSystem2_UnkSubSystem9 mUnk_1100; - /* 1144 */ UnkSubStruct19 mUnk_1144; + /* 1144 */ CellAnimObject mUnk_1144; // "battle" button /* 11BC */ UnkSystem2_UnkSubSystem1_Derived2 mUnk_11BC; @@ -135,7 +135,7 @@ public: // battle mode animated sword icon /* 14D4 */ UnkSystem2_UnkSubSystem9 mUnk_14D4; /* 1518 */ UnkSystem2_UnkSubSystem9 mUnk_1518; - /* 155C */ UnkSubStruct19 mUnk_155C; + /* 155C */ CellAnimObject mUnk_155C; // "contact mode" button /* 15D4 */ UnkSystem2_UnkSubSystem1_Derived2 mUnk_15D4; diff --git a/include/FileSelect/UnkSubStruct9.hpp b/include/FileSelect/UnkSubStruct9.hpp index f06f0e1a..ae6759f0 100644 --- a/include/FileSelect/UnkSubStruct9.hpp +++ b/include/FileSelect/UnkSubStruct9.hpp @@ -18,16 +18,16 @@ public: /* 064 */ UnkSystem2_UnkSubSystem5 mUnk_064; /* 29C */ UnkStruct_ov019_020d24c8_28_258 mUnk_29C; // top-left 1 and 2 icons /* 2B4 */ UnkStruct_ov019_020d24c8_28_258 mUnk_2B4; // static hearts (hearts before beating heart) - /* 2CC */ UnkSubStruct19 mUnk_2CC; - /* 344 */ UnkSubStruct19 mUnk_344; - /* 3BC */ UnkSubStruct19 mUnk_3BC; - /* 434 */ UnkSubStruct19 mUnk_434; - /* 4AC */ UnkSubStruct19 mUnk_4AC; - /* 524 */ UnkSubStruct19 mUnk_524; // forest dungeon icon - /* 59C */ UnkSubStruct19 mUnk_59C; // snow dungeon icon - /* 614 */ UnkSubStruct19 mUnk_614; // ocean dungeon icon - /* 68C */ UnkSubStruct19 mUnk_68C; // fire dungeon icon - /* 704 */ UnkSubStruct19 mUnk_704; // desert dungeon icon + /* 2CC */ CellAnimObject mUnk_2CC; + /* 344 */ CellAnimObject mUnk_344; + /* 3BC */ CellAnimObject mUnk_3BC; + /* 434 */ CellAnimObject mUnk_434; + /* 4AC */ CellAnimObject mUnk_4AC; + /* 524 */ CellAnimObject mUnk_524; // forest dungeon icon + /* 59C */ CellAnimObject mUnk_59C; // snow dungeon icon + /* 614 */ CellAnimObject mUnk_614; // ocean dungeon icon + /* 68C */ CellAnimObject mUnk_68C; // fire dungeon icon + /* 704 */ CellAnimObject mUnk_704; // desert dungeon icon /* 77C */ Vec2us mUnk_77C; /* 780 */ diff --git a/include/Game/Game.hpp b/include/Game/Game.hpp index a3920490..6cfaadbd 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 */ SaveFile *mpSaveFile; + /* 10 */ SaveSlot *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/MapObject/MapObject.hpp b/include/MapObject/MapObject.hpp index 9c7d3d6f..41980aa6 100644 --- a/include/MapObject/MapObject.hpp +++ b/include/MapObject/MapObject.hpp @@ -186,5 +186,6 @@ public: static void func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx); static void func_ov000_0209d22c(unk16 *param1, MapObject *thisx, unk32 param2); - static void func_ov000_0209d54c(void *param1, MapObject *thisx, unk32 param2, VecFx32 *param3, unk32 param4, unk32 param5); + static void func_ov000_0209d54c(ActorRef *param1, MapObject *thisx, u16 param2, const VecFx32 *pPos, s16 param3, + u16 param4); }; diff --git a/include/MapObject/MapObjectChestBase.hpp b/include/MapObject/MapObjectChestBase.hpp index 12383bb9..3899efe9 100644 --- a/include/MapObject/MapObjectChestBase.hpp +++ b/include/MapObject/MapObjectChestBase.hpp @@ -40,7 +40,7 @@ public: /* 050 */ MapObject_10 mUnk_050; /* 074 */ MapObjectTreasureSpawned_74 mUnk_074; /* 0D8 */ ItemId mItemId; - /* 0DC */ UnkSubStruct19 mUnk_0DC; + /* 0DC */ CellAnimObject mUnk_0DC; /* 154 */ MapObjectChestBase(unk32 param1); // func_ov031_0210307c diff --git a/include/Message/BMG.hpp b/include/Message/BMG.hpp index 65249557..e9bae220 100644 --- a/include/Message/BMG.hpp +++ b/include/Message/BMG.hpp @@ -143,7 +143,7 @@ struct FLW1Instr { InstrBranch branch; InstrEvent event; }; - /* 09 */ + /* 08 */ }; struct SectionFLW1 { diff --git a/include/Player/Player.hpp b/include/Player/Player.hpp index 9fdd48ba..917d37e9 100644 --- a/include/Player/Player.hpp +++ b/include/Player/Player.hpp @@ -1,11 +1,14 @@ #pragma once +#include "Actor/Actor.hpp" #include "LinkList.hpp" #include "Unknown/Common.hpp" #include "Unknown/UnkStruct_ov000_0208f820.hpp" #include "math.hpp" #include "types.h" +class UnkStruct_027e0ce0_40; + class PlayerActorBase_5C { public: /* 00 */ unk32 mUnk_00; @@ -41,14 +44,14 @@ public: /* 30 */ u16 mAngle; /* 32 */ u8 mInvincibilityTimer; /* 33 */ u8 mInvincibilityIconTimer; // the blinking icon on top-screen - /* 34 */ unk32 mUnk_34; + /* 34 */ ActorRef mGrabActor; /* 38 */ UnkStruct_PlayerGet_64 mUnk_38; /* 44 */ unk32 mUnk_44; /* 48 */ unk32 mUnk_48; /* 4C */ unk32 mUnk_4C; - /* 50 */ unk32 mUnk_50; + /* 50 */ ActorGrabParams mUnk_50; /* 54 */ unk32 mUnk_54; - /* 58 */ unk32 mUnk_58; + /* 58 */ UnkStruct_027e0ce0_40 *mUnk_58; /* 5C */ PlayerActorBase_5C mUnk_5C; /* 70 */ PlayerActorBase_70 *mUnk_70; /* 74 */ PlayerActorBase_74 *mUnk_74; @@ -194,9 +197,9 @@ public: /* 0B9 */ unk8 mUnk_B9; /* 0BA */ unk8 mUnk_BA; /* 0BB */ unk8 mUnk_BB; - /* 0BC */ UnkSubStruct19 mUnk_BC; + /* 0BC */ CellAnimObject mUnk_BC; /* 134 */ PlayerActor_134 *mUnk_134; - /* 138 */ UnkSubStruct19 mUnk_138; // sanctuary link icon animation + /* 138 */ CellAnimObject mUnk_138; // sanctuary link icon animation /* 1B0 */ PlayerActor_1B0 mUnk_1B0[3]; /* 1D4 */ diff --git a/include/Save/SaveFile.hpp b/include/Save/SaveFile.hpp index 12bc0009..3e4bb56b 100644 --- a/include/Save/SaveFile.hpp +++ b/include/Save/SaveFile.hpp @@ -3,6 +3,7 @@ #include "Item/ItemManager.hpp" #include "MainGame/MiscAdvManager.hpp" #include "MainGame/PassengerManager.hpp" +#include "flags.h" #include "math.hpp" #include "types.h" @@ -37,10 +38,12 @@ struct SaveFile_00000_0000_Data_D8 { SaveFile_00000_0000_Data_D8(); }; +// related to scene flags? struct SaveFile_00000_0000_Data_184 { /* 00 */ unk32 unk_00; /* 04 */ unk16 unk_04; - /* 06 */ unk16 unk_06; + /* 06 */ u8 keyAmount; + /* 07 */ unk8 unk_07; /* 08 */ SaveFile_00000_0000_Data_184() : @@ -126,24 +129,122 @@ struct SaveFile_00000_0000_Data_C84 { } }; -struct SaveFile_00000_0000_Data_D4C { - /* D24 */ unk32 unk_D4C; - /* D24 */ unk32 unk_D50; - /* D24 */ unk32 unk_D54; - /* D24 */ unk32 unk_D58; - /* D24 */ unk32 unk_D5C; - /* D24 */ unk32 unk_D60; - /* D24 */ unk32 unk_D64; - /* D24 */ unk32 unk_D68; - /* D6C */ unk8 unk_D6C[0x08]; - /* D74 */ unk16 unk_D74; +struct SaveFile_00000_0000_Data_D24 { + /* 00 */ unk32 unk_00; + /* 04 */ unk32 unk_04; + /* 08 */ unk32 unk_08; + /* 0C */ unk32 unk_0C; + /* 10 */ unk32 unk_10; + /* 14 */ unk32 unk_14; + /* 18 */ unk32 unk_18; + /* 1C */ unk32 unk_1C; + /* 20 */ unk32 unk_20; + /* 24 */ unk32 unk_24; + /* 28 */ +}; - SaveFile_00000_0000_Data_D4C() { - MI_CpuFill32(0, this->unk_D6C, sizeof(this->unk_D6C)); - this->unk_D74 = 0; +typedef u32 RabbitFlag; +enum RabbitFlag_ { + RabbitFlag_None = -1, + RabbitFlag_Grass_01 = FLAG(0, 0), + RabbitFlag_Grass_02 = FLAG(0, 1), + RabbitFlag_Grass_03 = FLAG(0, 2), + RabbitFlag_Grass_04 = FLAG(0, 3), + RabbitFlag_Grass_05 = FLAG(0, 4), + RabbitFlag_Grass_06 = FLAG(0, 5), + RabbitFlag_Grass_07 = FLAG(0, 6), + RabbitFlag_Grass_08 = FLAG(0, 7), + RabbitFlag_Grass_09 = FLAG(0, 8), + RabbitFlag_Grass_10 = FLAG(0, 9), + RabbitFlag_Snow_01 = FLAG(0, 10), + RabbitFlag_Snow_02 = FLAG(0, 11), + RabbitFlag_Snow_03 = FLAG(0, 12), + RabbitFlag_Snow_04 = FLAG(0, 13), + RabbitFlag_Snow_05 = FLAG(0, 14), + RabbitFlag_Snow_06 = FLAG(0, 15), + RabbitFlag_Snow_07 = FLAG(0, 16), + RabbitFlag_Snow_08 = FLAG(0, 17), + RabbitFlag_Snow_09 = FLAG(0, 18), + RabbitFlag_Snow_10 = FLAG(0, 19), + RabbitFlag_Water_01 = FLAG(0, 20), + RabbitFlag_Water_02 = FLAG(0, 21), + RabbitFlag_Water_03 = FLAG(0, 22), + RabbitFlag_Water_04 = FLAG(0, 23), + RabbitFlag_Water_05 = FLAG(0, 24), + RabbitFlag_Water_06 = FLAG(0, 25), + RabbitFlag_Water_07 = FLAG(0, 26), + RabbitFlag_Water_08 = FLAG(0, 27), + RabbitFlag_Water_09 = FLAG(0, 28), + RabbitFlag_Water_10 = FLAG(0, 29), + RabbitFlag_Mountain_01 = FLAG(0, 30), + RabbitFlag_Mountain_02 = FLAG(0, 31), + RabbitFlag_Mountain_03 = FLAG(1, 0), + RabbitFlag_Mountain_04 = FLAG(1, 1), + RabbitFlag_Mountain_05 = FLAG(1, 2), + RabbitFlag_Mountain_06 = FLAG(1, 3), + RabbitFlag_Mountain_07 = FLAG(1, 4), + RabbitFlag_Mountain_08 = FLAG(1, 5), + RabbitFlag_Mountain_09 = FLAG(1, 6), + RabbitFlag_Mountain_10 = FLAG(1, 7), + RabbitFlag_Sand_01 = FLAG(1, 8), + RabbitFlag_Sand_02 = FLAG(1, 9), + RabbitFlag_Sand_03 = FLAG(1, 10), + RabbitFlag_Sand_04 = FLAG(1, 11), + RabbitFlag_Sand_05 = FLAG(1, 12), + RabbitFlag_Sand_06 = FLAG(1, 13), + RabbitFlag_Sand_07 = FLAG(1, 14), + RabbitFlag_Sand_08 = FLAG(1, 15), + RabbitFlag_Sand_09 = FLAG(1, 16), + RabbitFlag_Sand_10 = FLAG(1, 17), + RabbitFlag_Max, +}; + +struct SaveFile_00000_0000_Data_D4C { + /* 00 */ unk32 unk_00; + /* 04 */ unk32 unk_04; + /* 08 */ unk32 unk_08; + /* 0C */ unk32 unk_0C; + /* 10 */ unk32 unk_10; + /* 14 */ unk32 unk_14; + /* 18 */ unk32 unk_18; + /* 1C */ unk32 unk_1C; + /* 20 */ RabbitFlag rabbitFlags[2]; + /* 28 */ unk16 unk_28; + /* 2A */ unk16 unk_2A; + /* 2C */ unk32 unk_2C; + /* 30 */ unk32 unk_30; + /* 34 */ unk32 unk_34; + /* 38 */ unk32 unk_38; + /* 3C */ unk32 unk_3C; + /* 40 */ + + SaveFile_00000_0000_Data_D4C() {} + + SaveFile_00000_0000_Data_D4C(unk16 param1) { + MI_CpuFill32(0, this->rabbitFlags, sizeof(this->rabbitFlags)); + this->unk_28 = param1; } }; +struct SaveFile_00000_0000_Data_D8C { + /* 00 */ unk32 unk_00; + /* 04 */ unk32 unk_04; + /* 08 */ unk32 unk_08; + /* 0C */ unk32 unk_0C; + /* 10 */ +}; + +struct SaveFile_00000_0000_Data_D9C { + /* 00 */ unk32 unk_00; + /* 04 */ unk16 unk_04; + /* 06 */ wchar_t mPlayerName[LENGTH_PLAYER_NAME + 1]; + /* 18 */ unk32 unk_18; + /* 1C */ unk32 unk_1C; + /* 20 */ + + unk32 func_ov000_020a1000(); +}; + struct SaveInfoData { /* 000 */ unk32 unk_000; /* 004 */ unk32 unk_004; @@ -162,35 +263,14 @@ struct SaveInfoData { /* 040 */ SaveInventory inventory; /* 0D8 */ SaveFile_00000_0000_Data_D8 unk_0D8; /* 158 */ SaveFile_00000_0000_Data_158 unk_158; - /* 184 */ SaveFile_00000_0000_Data_184 unk_184[96]; + /* 184 */ SaveFile_00000_0000_Data_184 unk_184[SaveCourseIndex_Max]; /* 484 */ SaveFile_00000_0000_Data_484 unk_484[256]; /* C84 */ SaveFile_00000_0000_Data_C84 unk_C84; /* C94 */ SaveMiscAdvManager miscAdvManager; - /* D24 */ unk32 unk_D24; - /* D24 */ unk32 unk_D28; - /* D24 */ unk32 unk_D2C; - /* D24 */ unk32 unk_D30; - /* D24 */ unk32 unk_D34; - /* D24 */ unk32 unk_D38; - /* D24 */ unk32 unk_D3C; - /* D24 */ unk32 unk_D40; - /* D24 */ unk32 unk_D44; - /* D24 */ unk32 unk_D48; + /* D24 */ SaveFile_00000_0000_Data_D24 unk_D24; /* D4C */ SaveFile_00000_0000_Data_D4C unk_D4C; - /* D78 */ unk32 unk_D78; - /* D7C */ unk32 unk_D7C; - /* D80 */ unk32 unk_D80; - /* D84 */ unk32 unk_D84; - /* D88 */ unk32 unk_D88; - /* D8C */ unk32 unk_D8C; - /* D90 */ unk32 unk_D90; - /* D94 */ unk32 unk_D94; - /* D98 */ unk32 unk_D98; - /* D9C */ unk32 unk_D9C; - /* DA0 */ unk16 unk_DA0; - /* DA2 */ wchar_t mPlayerName[LENGTH_PLAYER_NAME + 1]; - /* DB4 */ unk32 unk_DB4; - /* DB8 */ unk32 unk_DB8; + /* D8C */ SaveFile_00000_0000_Data_D8C unk_D8C; + /* D9C */ SaveFile_00000_0000_Data_D9C unk_D9C; /* DBC */ unk32 unk_DBC; /* DC0 */ unk32 unk_DC0; /* DC4 */ unk32 unk_DC4; @@ -212,7 +292,8 @@ struct SaveInfoData { /* E00 */ SaveInfoData() : - unk_014(0) {} + unk_014(0), + unk_D4C(0) {} }; struct SaveTreasureData { @@ -267,11 +348,11 @@ public: } wchar_t *GetPlayerName() { - return this->mInfoData[0].mPlayerName; + return this->mInfoData[0].unk_D9C.mPlayerName; } bool IsPlayerNameSet() { - return this->mInfoData[0].mPlayerName[0] != L'\0'; + return this->mInfoData[0].unk_D9C.mPlayerName[0] != L'\0'; } SaveFile_00000_2600_Data *Get2600Ptr() { diff --git a/include/Save/SaveManager.hpp b/include/Save/SaveManager.hpp index bc52e595..72193cab 100644 --- a/include/Save/SaveManager.hpp +++ b/include/Save/SaveManager.hpp @@ -9,6 +9,8 @@ #include "global.h" #include "types.h" +#include + #define SAVE_DATA_SIZE (sizeof(SaveSlot) + sizeof(u8) * NUM_UNK_BLOCKS * SIZE_UNK_BLOCK) enum { @@ -19,25 +21,19 @@ enum { SaveDataIndex_04, }; -class SaveManager_21C { -public: - /* 00 */ unk32 mUnk_00; - - unk32 func_ov000_020a1000(); -}; - -struct SaveManager_36 { - /* 00 */ u8 mKeyAmount; - /* 01 */ STRUCT_PAD(0x01, 0x08); - /* 08 */ -}; - struct SaveManager_00 { - /* 000 */ STRUCT_PAD(0x00, 0x36); - /* 036 */ SaveManager_36 mUnk_36[0x60]; - /* 336 */ STRUCT_PAD(0x336, 0xB30); - /* B30 */ unk32 mUnk_B30[1]; // flags, at least 1 + /* 000 */ unk32 unk_00; + /* 004 */ SaveFile_00000_0000_Data_158 unk_004; + /* 030 */ SaveFile_00000_0000_Data_184 unk_030[SaveCourseIndex_Max]; + /* 330 */ SaveFile_00000_0000_Data_484 unk_330[256]; + /* B30 */ SaveFile_00000_0000_Data_C84 unk_B30; + /* B40 */ SaveFile_00000_0000_Data_D24 unk_B40; + /* B68 */ SaveFile_00000_0000_Data_D8C unk_B68; + /* B78 */ SaveFile_00000_0000_Data_D4C unk_B78; /* BB8 */ + + SaveManager_00(unk16 param1) : + unk_B78(param1) {} }; class SaveManager { @@ -54,8 +50,7 @@ public: /* 210 */ unk32 mUnk_210; /* 214 */ unk32 mUnk_214; /* 218 */ SaveFile *mpSaveFile; - /* 21C */ SaveManager_21C mUnk_21C; - /* 220 */ STRUCT_PAD(0x220, 0x23C); + /* 21C */ SaveFile_00000_0000_Data_D9C mUnk_21C; /* 23C */ PTMF::PTMFCallback mUnk_23C; /* 244 */ unk32 mUnk_244; @@ -75,17 +70,25 @@ public: return this->mpSaveFile->mSlots; } + SaveManager_00 *GetUnk000() { + return this->mUnk_000; + } + SaveManager(); + // overlay 0 void func_ov000_020a0b2c(UnkCallback param1, unk32 param2); bool func_ov000_020a0b70(void *param1, unk32 param2); + // overlay 1 void func_ov001_020ba670(); void func_ov001_020ba7a8(); void func_ov001_020ba7c8(u16 saveSlotIndex); + // overlay 17 void func_ov017_020c3040(void *param1, unk32 param2); + // overlay 19 void func_ov019_020d08fc(unk32 param1, PTMF::PTMFCallback param2); bool func_ov019_020d0964(void); void func_ov019_020d09dc(u16 saveSlotIndex); diff --git a/include/System/SysNew.hpp b/include/System/SysNew.hpp index 7c0c8d43..d5676c00 100644 --- a/include/System/SysNew.hpp +++ b/include/System/SysNew.hpp @@ -40,7 +40,7 @@ public: void *operator new(size_t length, u32 id, u32 idLength = 4); void *operator new[](size_t length, u32 id, u32 idLength = 4); -static inline void *operator new(size_t length, void *ptr = nullptr) { +inline void *operator new(size_t length, void *ptr = nullptr) { #pragma unused(length) return ptr; } diff --git a/include/TitleScreen/TitleScreen.hpp b/include/TitleScreen/TitleScreen.hpp index aa5f6859..a64a8650 100644 --- a/include/TitleScreen/TitleScreen.hpp +++ b/include/TitleScreen/TitleScreen.hpp @@ -73,15 +73,15 @@ public: /* 021 */ u8 mUnk_021; /* 022 */ unk8 mUnk_022; /* 023 */ unk8 mUnk_023; - /* 024 */ UnkSubStruct19 mUnk_024; // feather - /* 09C */ UnkSubStruct19 mUnk_09C; // green rectangle - /* 114 */ UnkSubStruct19 mUnk_114; // "touch screen!" text - /* 18C */ UnkSubStruct19 mUnk_18C; // copyright text + /* 024 */ CellAnimObject mUnk_024; // feather + /* 09C */ CellAnimObject mUnk_09C; // green rectangle + /* 114 */ CellAnimObject mUnk_114; // "touch screen!" text + /* 18C */ CellAnimObject mUnk_18C; // copyright text /* 204 */ TitleScreen_Sub2 mUnk_204; /* 218 */ TitleScreen_Sub3 mUnk_218; /* 23C */ UnkStruct_ov019_020d24c8_28_258 mUnk_23C; - /* 254 */ UnkSubStruct19 mUnk_254; // logo shine - /* 2CC */ UnkSubStruct19 mUnk_2CC; // logo shine outline (it's barely visible) + /* 254 */ CellAnimObject mUnk_254; // logo shine + /* 2CC */ CellAnimObject mUnk_2CC; // logo shine outline (it's barely visible) /* 344 */ unk32 mUnk_344; /* 348 */ diff --git a/include/Unknown/Common.hpp b/include/Unknown/Common.hpp index 0c4466ba..e39e3538 100644 --- a/include/Unknown/Common.hpp +++ b/include/Unknown/Common.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Animation/CellAnimObject.hpp" #include "Game/GameModeManager.hpp" #include "System/SysNew.hpp" #include "Unknown/UnkFileSystem.hpp" @@ -880,71 +881,6 @@ struct UnkResult { void func_02017520(const char *nscrPath, const char *ncgrPath, const char *nclrPath); }; -// used to draw the swords from the adventure and battle buttons -class UnkSubStruct19 { -public: - /* 00 */ void *mUnk_00; - /* 04 */ void *mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0C */ unk32 mUnk_0C; // pause the animation timer (in this context: pause the shiny animation on the sword) - /* 10 */ unk32 mUnk_10; // animation timer - /* 14 */ unk32 mUnk_14; // animation speed (also affects above timer) - /* 18 */ unk32 mUnk_18; - /* 1C */ void *mUnk_1C; // pointer to animation bank ("ABNK") - /* 20 */ unk32 mUnk_20; - /* 24 */ unk32 mUnk_24; - /* 28 */ u8 mUnk_28; // bool? - /* 29 */ unk8 mUnk_29; - /* 2A */ unk8 mUnk_2A; - /* 2B */ unk8 mUnk_2B; - /* 2C */ unk32 mUnk_2C; - /* 30 */ void *mUnk_30; // pointer to somewhere inside "CEBK" - /* 34 */ void *mUnk_34; - /* 38 */ unk32 mUnk_38; - /* 3C */ unk32 mUnk_3C; - /* 40 */ unk32 mUnk_40; // related to the width of the texture (scaling matrix?) - /* 44 */ unk32 mUnk_44; // related to the height of the texture - /* 48 */ Vec2us mUnk_48; - /* 4C */ unk32 mUnk_4C; - /* 50 */ unk32 mUnk_50; - /* 54 */ unk32 mUnk_54; - /* 58 */ unk32 mUnk_58; // another timer? - /* 5C */ Vec2s mUnk_5C; // position of the animated texture - /* 60 */ unk32 mUnk_60; - /* 64 */ unk32 mUnk_64; - /* 68 */ unk32 mUnk_68; - /* 6C */ unk16 mUnk_6C; - /* 6E */ bool mUnk_6E; - /* 6F */ unk8 mUnk_6F; - /* 70 */ unk32 mUnk_70; - /* 74 */ unk16 mUnk_74; - /* 76 */ unk16 mUnk_76; - /* 78 */ - - UnkSubStruct19(); - UnkSubStruct19(unk32 param1, unk32 param2) { - this->mUnk_6E = true; - this->mUnk_70 = 0; - this->mUnk_5C.x = 0; - this->mUnk_5C.y = 0; - this->mUnk_74 = 0; - this->func_ov000_0206082c(param1, param2); - } - - void func_ov000_0206082c(s16 param1, unk32 param2); - void func_ov000_02060950(); - void func_ov000_020609b0(); - void func_ov000_020609c4(void); - bool func_ov000_02060a98(unk32 param1); - void func_ov000_02060ad0(); - bool func_ov000_02060af8(void); - void func_ov000_02060b50(); - void func_ov000_02060b64(void); - void func_ov000_02060bac(); - unk32 func_ov000_02060c28(void); - void func_ov000_02060bd8(unk32 param1); -}; - struct UnkStruct_StackTitleScreen { /* 00 */ unk32 pad[5]; /* 14 */ @@ -1026,8 +962,8 @@ class UnkActorSystem2 : public GameModeManagerBase_104 { public: /* 000 (base) */ /* 01B */ bool mUnk_01B; - /* 01C */ UnkSubStruct19 mUnk_01C; - /* 094 */ UnkSubStruct19 mUnk_094; + /* 01C */ CellAnimObject mUnk_01C; + /* 094 */ CellAnimObject mUnk_094; /* 10C */ bool mUnk_10C; /* 10C */ bool mUnk_10D; @@ -1293,3 +1229,36 @@ public: /* 00 */ virtual ~MapObjectProfile_Derived5() override; /* 08 */ }; + +//! TODO: move to a better place +enum TrainPresetType_ { + TrainPresetType_Default = 0, // normal overworld settings + TrainPresetType_DarkRealmNormal = 1, // default dark realm settings (SceneIndex_t_dark) + TrainPresetType_DarkRealmLightTear = 2, // dark realm when on a light tear (SceneIndex_t_dark) + TrainPresetType_DarkRealmLightTearRope = 3, // same as above but when pulling the rope (SceneIndex_t_dark) + TrainPresetType_DarkRealmFight = 4, // (SceneIndex_t_eviltrain, SceneIndex_t_eviltrain2 & SceneIndex_t_eviltrain3) + TrainPresetType_5 = 5, // unused? + TrainPresetType_Max, +}; + +struct TrainSpeedTarget { + /* 00 */ unk32 speed; + /* 04 */ unk32 unk_04; + /* 08 */ +}; + +struct TrainSpeedPreset { + /* 00 */ TrainSpeedTarget reverse; + /* 08 */ TrainSpeedTarget stop; + /* 10 */ TrainSpeedTarget slow; + /* 18 */ TrainSpeedTarget fast; + /* 20 */ unk32 unk_20; + /* 24 */ unk32 unk_24; + /* 28 */ unk32 unk_28; + /* 2C */ unk32 unk_2C; + /* 30 */ unk32 unk_30; + /* 34 */ unk32 unk_34; + /* 38 */ unk32 unk_38; // related to the "emergency break" thing when you go to reverse while fast speed + /* 3C */ fx32 unk_3C; + /* 40 */ +}; diff --git a/include/Unknown/UICounterManager.hpp b/include/Unknown/UICounterManager.hpp index 39f9d32a..ee961110 100644 --- a/include/Unknown/UICounterManager.hpp +++ b/include/Unknown/UICounterManager.hpp @@ -25,15 +25,15 @@ public: /* 00A */ u8 mUnk_00A; /* 00B */ unk8 mUnk_00B; /* 000 */ UnkStruct_ov019_020d24c8_28_258 mUnk_00C; - /* 018 */ UnkSubStruct19 mUnk_024; - /* 090 */ UnkSubStruct19 mUnk_09C; - /* 108 */ UnkSubStruct19 mUnk_114; - /* 180 */ UnkSubStruct19 mUnk_18C; - /* 1F8 */ UnkSubStruct19 mUnk_204; - /* 270 */ UnkSubStruct19 mUnk_27C; - /* 2E8 */ UnkSubStruct19 mUnk_2F4; - /* 360 */ UnkSubStruct19 mUnk_36C; - /* 3E4 */ UnkSubStruct19 mUnk_3E4[2]; + /* 018 */ CellAnimObject mUnk_024; + /* 090 */ CellAnimObject mUnk_09C; + /* 108 */ CellAnimObject mUnk_114; + /* 180 */ CellAnimObject mUnk_18C; + /* 1F8 */ CellAnimObject mUnk_204; + /* 270 */ CellAnimObject mUnk_27C; + /* 2E8 */ CellAnimObject mUnk_2F4; + /* 360 */ CellAnimObject mUnk_36C; + /* 3E4 */ CellAnimObject mUnk_3E4[2]; /* 4D4 */ u8 mUnk_4D4; /* 4D5 */ u8 mUnk_4D5; /* 4D6 */ unk8 mUnk_4D6; // pad? @@ -191,7 +191,7 @@ public: class UICounter_SmallKeys { public: /* 00 */ UnkStruct_ov019_020d24c8_28_258 mUnk_00; - /* 18 */ UnkSubStruct19 mUnk_18; + /* 18 */ CellAnimObject mUnk_18; /* 90 */ unk16 mUnk_90; /* 92 */ unk16 mUnk_92; /* 94 */ diff --git a/include/Unknown/UnkStruct_0204af1c.hpp b/include/Unknown/UnkStruct_0204af1c.hpp index c64f1e39..583f3609 100644 --- a/include/Unknown/UnkStruct_0204af1c.hpp +++ b/include/Unknown/UnkStruct_0204af1c.hpp @@ -2,7 +2,7 @@ #include "types.h" -class UnkSubStruct19; +class CellAnimObject; class UnkStruct_0204af1c_00 { public: @@ -22,7 +22,7 @@ public: UnkStruct_0204af1c(); void func_0201a800(); void func_0201aa44(UnkStruct_ov019_020d24c8_28_258_00 *param1, void *param2, unk32 param3, void *param4); - void func_0201aad0(UnkSubStruct19 *param1, void *param2, unk32 param3, void *param4); + void func_0201aad0(CellAnimObject *param1, void *param2, unk32 param3, void *param4); void func_0201aa8c(UnkStruct_ov019_020d24c8_28_258_00 *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5); }; diff --git a/include/Unknown/UnkStruct_027e09b8.hpp b/include/Unknown/UnkStruct_027e09b8.hpp index 84a9d589..1b518b6f 100644 --- a/include/Unknown/UnkStruct_027e09b8.hpp +++ b/include/Unknown/UnkStruct_027e09b8.hpp @@ -15,11 +15,15 @@ struct stack_ov000_02073578 { class UnkStruct_027e09b8_00 { public: - /* 000 */ STRUCT_PAD(0x000, 0xFD4); + /* 000 */ STRUCT_PAD(0x000, 0xFD0); + /* FD0 */ unk16 mUnk_FD0; // set to 1 when link has a blocking interaction? + /* FD2 */ unk16 mUnk_FD2; /* FD4 */ UnkStruct_027e09b8_00(); ~UnkStruct_027e09b8_00(); + + void func_ov000_02073bc0(); }; class UnkStruct_027e09b8_04 { @@ -85,6 +89,7 @@ public: unk32 func_ov000_02073470(void *param1, unk32 param2); unk32 func_ov000_02073388(void *param1, unk32 param2); void func_ov000_02073578(void *param1, unk32 param2); + void func_ov000_0207332c(); #if IS_JP void func_ov000_02074d78(unk32 param1); diff --git a/include/Unknown/UnkStruct_027e0ce0.hpp b/include/Unknown/UnkStruct_027e0ce0.hpp index e8d76889..3951cafe 100644 --- a/include/Unknown/UnkStruct_027e0ce0.hpp +++ b/include/Unknown/UnkStruct_027e0ce0.hpp @@ -3,6 +3,7 @@ #include "global.h" #include "types.h" +#include "Actor/ActorRef.hpp" #include "Item/ItemManager.hpp" #include "LinkList.hpp" #include "Player/Player.hpp" @@ -105,7 +106,10 @@ public: class UnkStruct_027e0ce0_38_58 { public: - /* 000 */ STRUCT_PAD(0x00, 0x3D4); + /* 000 */ STRUCT_PAD(0x00, 0x338); + /* 338 */ unk32 mUnk_338; // rope pulled timer + /* 33C */ unk32 mUnk_33C; // rope pull strength, 0 to 8 + /* 340 */ STRUCT_PAD(0x340, 0x3D4); /* 3D4 */ UnkStruct_027e0ce0_38_58(); @@ -175,7 +179,7 @@ public: /* 050 */ unk32 mUnk_050; /* 054 */ unk16 mUnk_054; /* 056 */ unk16 mUnk_056; - /* 058 */ UnkStruct_027e0ce0_38_58 *mUnk_058; + /* 058 */ UnkStruct_027e0ce0_38_58 *mUnk_058; // related to train invicibility state in the dark realm (+0x35C/+0x360) /* 05C */ UnkStruct_027e0ce0_38_5C *mUnk_05C; /* 060 */ UnkStruct_027e0ce0_38_60 mUnk_060; /* 138 */ unk32 mUnk_138; @@ -197,7 +201,7 @@ public: /* 174 */ UnkStruct_027e0ce0_38_174 mUnk_174; /* 19C */ UnkStruct_027e0ce0_38_19C mUnk_19C; /* 1C8 */ UnkStruct_027e0ce0_38_1C8 mUnk_1C8; - /* 1FC */ UnkSubStruct19 mUnk_1FC; + /* 1FC */ CellAnimObject mUnk_1FC; /* 274 */ UnkStruct_ov019_020d24c8_28_258_00 mUnk_274; /* 280 */ @@ -243,7 +247,17 @@ public: class UnkStruct_027e0ce0_40_Base_94 { public: - /* 00 */ STRUCT_PAD(0x00, 0x5C); + /* 00 */ STRUCT_PAD(0x00, 0x14); + /* 14 */ ActorRef mUnk_14; + /* 18 */ unk32 mUnk_18; + /* 1C */ ActorRef mUnk_1C; + /* 20 */ unk32 mUnk_20; + /* 24 */ STRUCT_PAD(0x24, 0x48); + /* 48 */ ActorRef mUnk_48; + /* 4C */ unk32 mUnk_4C; + /* 50 */ unk32 mUnk_50; + /* 54 */ unk32 mUnk_54; + /* 58 */ unk32 mUnk_58; /* 5C */ unk32 mUnk_5C; // seems to be the walking speed of link?? /* 60 */ unk32 mUnk_60; /* 64 */ unk32 mUnk_64; diff --git a/include/Unknown/UnkStruct_027e0cf8.hpp b/include/Unknown/UnkStruct_027e0cf8.hpp index e301edaa..4c43f2a4 100644 --- a/include/Unknown/UnkStruct_027e0cf8.hpp +++ b/include/Unknown/UnkStruct_027e0cf8.hpp @@ -8,7 +8,7 @@ #include "types.h" struct UnkStruct_027e0cf8_00_18_00 { - /* 00 */ UnkSubStruct19 mUnk_00; + /* 00 */ CellAnimObject mUnk_00; /* 78 */ unk32 mUnk_78; /* 7C */ unk32 mUnk_7C; /* 80 */ unk32 mUnk_80; diff --git a/include/Unknown/UnkStruct_ov000_0208f820.hpp b/include/Unknown/UnkStruct_ov000_0208f820.hpp index e2577a69..32c71992 100644 --- a/include/Unknown/UnkStruct_ov000_0208f820.hpp +++ b/include/Unknown/UnkStruct_ov000_0208f820.hpp @@ -3,6 +3,7 @@ #include "global.h" #include "types.h" +#include "Actor/ActorRef.hpp" #include "Item/ItemManager.hpp" #include "System/SysNew.hpp" #include "math.hpp" @@ -25,9 +26,9 @@ public: class UnkStruct_PlayerGet_64 { public: - /* 00 */ unk32 mUnk_00; + /* 00 */ ActorRef *mUnk_00; /* 04 */ unk32 mUnk_04; - /* 08 */ u16 mUnk_08; + /* 08 */ u16 mUnk_08; // makes link invisible when set /* 0A */ unk16 mUnk_0A; /* 0C */ @@ -94,7 +95,7 @@ public: /* A0 */ STRUCT_PAD(0xA0, 0x148); /* 148 */ u32 mUnk_148; /* 14C */ unk32 mUnk_14C; - /* 150 */ unk32 mUnk_150; + /* 150 */ ActorRef mUnk_150; }; class UnkStruct_ov000_0208f820_30_10 { @@ -160,25 +161,17 @@ public: class UnkStruct_ov000_0208f820_04 { public: - /* 00 */ union { - u8 mUnk_00[4]; - u16 mUnk_00_s16; - u32 mUnk_00_s32; - }; - /* 04 */ union { - u8 mUnk_04[4]; - u16 mUnk_04_s16; - u32 mUnk_04_s32; - }; + /* 00 */ ActorRef mUnk_00; + /* 04 */ ActorRef mUnk_04; /* 08 */ unk32 mUnk_08; /* 0C */ ItemId mItemId; /* 10 */ UnkStruct_ov000_0208f820_04(unk32 param1, unk32 param2, unk32 param3, ItemId itemId) { - *(u32 *) this->mUnk_00 = param1; - *(u32 *) this->mUnk_04 = param2; - this->mUnk_08 = param3; - this->mItemId = itemId; + this->mUnk_00.data = param1; + this->mUnk_04.data = param2; + this->mUnk_08 = param3; + this->mItemId = itemId; } UnkStruct_ov000_0208f820_04() {} diff --git a/include/Unknown/UnkStruct_ov000_020b51b8.hpp b/include/Unknown/UnkStruct_ov000_020b51b8.hpp index 36a4018e..2a460290 100644 --- a/include/Unknown/UnkStruct_ov000_020b51b8.hpp +++ b/include/Unknown/UnkStruct_ov000_020b51b8.hpp @@ -68,7 +68,7 @@ public: void func_ov000_0206d0bc(unk32 param1); void func_ov000_0206d0ec(unk32 param1, unk32 param2, unk32 param3, unk32 param4); void func_ov000_0206d134(unk32 param1); - void func_ov000_0206d274(unk32 param1); + void func_ov000_0206d274(unk32 param1); // play seq? void func_ov018_020c5940(); }; diff --git a/include/Unknown/UnkSystem1.hpp b/include/Unknown/UnkSystem1.hpp index 4acfb25d..e773aede 100644 --- a/include/Unknown/UnkSystem1.hpp +++ b/include/Unknown/UnkSystem1.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Message/BMG.hpp" #include "Save/SaveManager.hpp" #include "System/SysNew.hpp" #include "global.h" @@ -33,7 +34,7 @@ public: /* 08 */ virtual void vfunc_08(unk32 param1); // func_ov000_020669cc /* 0C */ virtual unk32 vfunc_0C(); // func_ov000_020669d0 /* 10 */ virtual unk32 vfunc_10(u16 *param1); // func_ov000_02066a5c - /* 14 */ virtual unk32 vfunc_14(void *param1); // func_ov000_02066dfc + /* 14 */ virtual bool vfunc_14(FLW1Instr *param1); // func_ov000_02066dfc /* 18 */ virtual void vfunc_18(); // func_ov000_020669d8 /* 1C */ virtual unk32 vfunc_1C(u32 param1, unk32 param2, unk32 param3); // func_ov000_02067234 /* 20 */ virtual unk32 vfunc_20(unk32 param1, unk32 param2, unk32 param3); // func_ov000_0206723c diff --git a/include/math.hpp b/include/math.hpp index bdaf1c17..6a858b54 100644 --- a/include/math.hpp +++ b/include/math.hpp @@ -319,7 +319,7 @@ static inline void Vec2pCpp_Copy(const Vec2pCpp *a, Vec2pCpp *dst) { } //! TODO: remove -extern "C" static inline Vec2s *Vec2s_New(s16 x, s16 y) { +extern "C" inline Vec2s *Vec2s_New(s16 x, s16 y) { Vec2s vec; vec.x = x; vec.y = y; @@ -327,7 +327,7 @@ extern "C" static inline Vec2s *Vec2s_New(s16 x, s16 y) { } //! TODO: remove -extern "C" static inline Vec2s *Vec2s_GetCopy(Vec2s *src) { +extern "C" inline Vec2s *Vec2s_GetCopy(Vec2s *src) { Vec2s vec; vec.x = src->x; vec.y = src->y; diff --git a/libs/nitro/include/nitro/gx.h b/libs/nitro/include/nitro/gx.h index 1b203c9e..6073958f 100644 --- a/libs/nitro/include/nitro/gx.h +++ b/libs/nitro/include/nitro/gx.h @@ -405,7 +405,7 @@ inline void GX_SetCapture(u32 size, u32 mode, u32 srcA, GXCaptureSrcB srcB, u32 } inline void GXS_SetOBJVRamModeBmp(u32 mode) { - REG_DISPCNT_SUB = REG_DISPCNT_SUB & ~0x60 | ((mode & 0x3) << 5); + REG_DISPCNT_SUB = (REG_DISPCNT_SUB & ~0x60) | ((mode & 0x3) << 5); } inline void GX_SetVisibleWindows(s32 windows) { diff --git a/libs/nns/include/nns/anim.h b/libs/nns/include/nns/anim.h new file mode 100644 index 00000000..b7b47016 --- /dev/null +++ b/libs/nns/include/nns/anim.h @@ -0,0 +1,55 @@ +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// note: some of those names are from an assert inside `CellAnimObject::func_ov000_020609c4` + +typedef struct AnimCallbackFunctor { + // `unk_00` is function kind? in `func_020075ec` it's calling `pFunc` with one arg when set to 2 or 3 + // and in `func_02007498` it goes with two when set to 1 + /* 00 */ unk32 unk_00; + /* 04 */ unk32 unk_04; + /* 08 */ void *pFunc; + /* 0C */ unk32 unk_0C; +} AnimCallbackFunctor; // size = 0x10 + +typedef struct AnimController { + /* 00 */ void *unk_00; + /* 04 */ void *unk_04; + /* 08 */ unk32 unk_08; + /* 0C */ unk32 unk_0C; // pause the animation timer + /* 10 */ unk32 unk_10; // animation timer + /* 14 */ unk32 unk_14; // animation speed (also affects above timer) + /* 18 */ unk32 unk_18; + /* 1C */ void *unk_1C; // pointer to animation bank ("ABNK") + /* 20 */ AnimCallbackFunctor callbackFunctor; +} AnimController; // size = 0x30 + +typedef struct UnkAnimStruct1 { + /* 00 */ unk32 unk_00; + /* 04 */ unk32 unk_04; // related to the width of the texture (scaling matrix?) + /* 08 */ unk32 unk_08; // related to the height of the texture + /* 0C */ struct { //! TODO: used to be `Vec2us` + u16 x; + u16 y; + } unk_0C; + /* 10 */ unk16 unk_10; + /* 12 */ unk16 unk_12; +} UnkAnimStruct1; // size = 0x14 + +typedef struct CellAnim { + /* 00 */ AnimController animCtrl; + /* 30 */ void *unk_30; // pointer to somewhere inside "CEBK" + /* 34 */ void *unk_34; + /* 38 */ unk32 unk_38; + /* 3C */ UnkAnimStruct1 unk_3C; +} CellAnim; // size = 0x50 + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/src/000_Second/Actor/Actor.cpp b/src/000_Second/Actor/Actor.cpp index 68ac489d..a16d8b31 100644 --- a/src/000_Second/Actor/Actor.cpp +++ b/src/000_Second/Actor/Actor.cpp @@ -12,7 +12,7 @@ ARM Actor::Actor() { this->mUnk_3C = NULL; this->mUnk_40 = 0; this->mUnk_48 = 4; - this->mUnk_4C = -1; + this->mState = ActorState_None; this->mUnk_50 = 0; this->mUnk_52 = 0; this->mUnk_54 = 0; @@ -36,15 +36,14 @@ ARM Actor::~Actor() {} // non-matching (equivalent) ARM void Actor::func_ov000_0209848c(ActorProfile *param1) { - s16 unk_1c; - Cylinder *temp_r3; - - unk_1c = param1->mUnk_1C; - temp_r3 = ¶m1->mUnk_04; + Cylinder *temp_r3 = ¶m1->mUnk_04; + unk32 unk_1c = param1->mUnk_1C; this->mpProfile = param1; - this->mUnk_30 = this->mUnk_34 = temp_r3; - this->mUnk_4E = unk_1c; + + this->mUnk_34 = ¶m1->mUnk_04; + this->mUnk_30 = ¶m1->mUnk_04; + this->mYOffset = unk_1c; } ARM bool Actor::vfunc_18(unk32 param1) { @@ -81,17 +80,11 @@ ARM void Actor::func_ov000_020984f0() { } } -// non-matching -ARM void Actor::vfunc_00(VecFx32 *param1) { - *param1 = mPos; - param1->y += mUnk_4E; - // short sVar1; - // int iVar2; - // int iVar3; - - // param1->x = this->mPos.x; - // param1->y = this->mPos.y + this->mUnk_4E; - // param1->z = this->mPos.z; +ARM void Actor::GetOffsetPos(VecFx32 *pPos) const { + pPos->x = this->mPos.x; + pPos->y = this->mPos.y; + pPos->z = this->mPos.z; + pPos->y += this->mYOffset; } ARM VecFx32 *Actor::func_ov000_0209853c(unk32 param1) { @@ -110,59 +103,49 @@ ARM unk8 Actor::vfunc_0c() { return this->mpProfile->mUnk_18; } -// non-matching -ARM unk32 Actor::vfunc_38(unk32 param1) { - u16 var_r3; - short stack_c; - - var_r3 = param1 >> 16; - - if (GET_FLAG(this->mFlags, ActorFlag_Grabbed)) { - return 0; +ARM bool Actor::Grab(ActorGrabParams grabParams) { + // fake match? + if (GET_FLAG((volatile ActorFlags *) this->mFlags, ActorFlag_Grabbed)) { + return false; } SET_FLAG(this->mFlags, ActorFlag_Grabbed); - stack_c = this->mFlags[0]; - switch (stack_c) { + switch (grabParams.unk_00) { case 0x100: - case 0x101: - if (stack_c == 0x101) { + case 0x101: { + u16 var_r3 = grabParams.unk_02; + + if (grabParams.unk_00 == 0x101) { var_r3 = 0; } - // ??? - *(&this->mUnk_4A + var_r3) = 0; + this->mUnk_4A[var_r3] = 0; break; + } default: break; } - return 1; + return true; } -// non-matching -ARM bool Actor::vfunc_3c(unk32 param2, VecFx32 *param3) { - if (!GET_FLAG(this->mFlags, ActorFlag_Grabbed)) { +ARM bool Actor::Drop(ActorGrabParams param2, const VecFx32 *pVel) { + // fake match? + if (!GET_FLAG((volatile ActorFlags *) this->mFlags, ActorFlag_Grabbed)) { return false; } - this->mVel.x = param3->x; - this->mVel.y = param3->y; - this->mVel.z = param3->z; + this->mVel.x = pVel->x; + this->mVel.y = pVel->y; + this->mVel.z = pVel->z; UNSET_FLAG(this->mFlags, ActorFlag_Grabbed); return true; } -// non-matching ARM void Actor::func_ov000_0209862c(unk32 param1) { - s8 var_ip; - void *temp_r2; - - var_ip = 0; - do { - var_ip += 1; - (&this->mUnk_4A)[var_ip] = param1; - } while (var_ip < 2); + for (s8 i = 0; i < ARRAY_LEN(this->mUnk_4A); i++) { + this->mUnk_4A[i] = param1; + } } diff --git a/src/000_Second/Actor/ActorUnkSWOB.cpp b/src/000_Second/Actor/ActorUnkSWOB.cpp index 9cb307cd..c40b20bb 100644 --- a/src/000_Second/Actor/ActorUnkSWOB.cpp +++ b/src/000_Second/Actor/ActorUnkSWOB.cpp @@ -29,29 +29,29 @@ ARM bool ActorUnkSWOB::vfunc_18(unk32 param1) { this->mUnk_9C = this->mUnk_9E; if (this->func_ov000_02098a60(0)) { - this->func_ov000_0209a9b4(1); + this->SetState(ActorUnkSWOBState_1); } else { - this->func_ov000_0209a9b4(0); + this->SetState(ActorUnkSWOBState_0); } return true; } -ARM void ActorUnkSWOB::func_ov000_0209a9b4(unk32 param1) { - this->mUnk_4C = param1; +ARM void ActorUnkSWOB::SetState(ActorState state) { + this->mState = state; - switch (this->mUnk_4C) { - case 0: + switch (this->mState) { + case ActorUnkSWOBState_0: this->func_ov000_02098a88(0, 0); break; - case 1: + case ActorUnkSWOBState_1: this->func_ov000_02098a88(0, 1); if (this->mUnk_94 == 0) { UNSET_FLAG(this->mFlags, ActorFlag_Alive); } break; - case 2: + case ActorUnkSWOBState_2: this->func_ov000_0209aa30(); this->mUnk_52 = -1; this->mUnk_50 = 0; @@ -62,7 +62,7 @@ ARM void ActorUnkSWOB::func_ov000_0209a9b4(unk32 param1) { } ARM void ActorUnkSWOB::func_ov000_0209aa30(void) { - if (this->mUnk_4C == 1) { + if (this->mState == ActorUnkSWOBState_1) { return; } @@ -120,6 +120,3 @@ ARM void ActorUnkSWOB::func_ov000_0209aa30(void) { break; } } - -ARM ActorUnkSWOB::~ActorUnkSWOB() {} -ARM ActorProfileUnkSWOB::~ActorProfileUnkSWOB() {} diff --git a/src/000_Second/Actor/ActorUnkSWTM.cpp b/src/000_Second/Actor/ActorUnkSWTM.cpp index 13591a92..4586b273 100644 --- a/src/000_Second/Actor/ActorUnkSWTM.cpp +++ b/src/000_Second/Actor/ActorUnkSWTM.cpp @@ -23,7 +23,7 @@ ARM ActorUnkSWTM::ActorUnkSWTM() : mUnk_A8(0) {} ARM ActorUnkSWTM::~ActorUnkSWTM() { - if (this->mUnk_4C != 2 && this->func_ov000_02098a60(0) == 0) { + if (this->mState != ActorUnkSWTMState_2 && this->func_ov000_02098a60(0) == 0) { this->func_ov000_0209b184(); } } @@ -38,52 +38,52 @@ ARM bool ActorUnkSWTM::vfunc_18(unk32 param1) { this->mUnk_9C = this->mUnk_9E; if (this->func_ov000_02098a60(0)) { - this->func_ov000_0209af54(2); + this->SetState(ActorUnkSWTMState_2); } else { - this->func_ov000_0209af54(0); + this->SetState(ActorUnkSWTMState_0); } return true; } ARM void ActorUnkSWTM::vfunc_20(void) { - switch (this->mUnk_4C) { - case 0: + switch (this->mState) { + case ActorUnkSWTMState_0: if (!this->func_ov000_0209afe4()) { return; } - this->func_ov000_0209af54(1); + this->SetState(ActorUnkSWTMState_1); break; - case 1: + case ActorUnkSWTMState_1: this->mUnk_A8++; this->func_ov000_0209b1d0(); if (this->mUnk_A8 >= this->mUnk_A4) { - this->func_ov000_0209af54(3); + this->SetState(ActorUnkSWTMState_3); } else { switch (this->func_ov000_0209b038()) { case 1: - this->func_ov000_0209af54(2); + this->SetState(ActorUnkSWTMState_2); break; case 2: - this->func_ov000_0209af54(3); + this->SetState(ActorUnkSWTMState_3); break; default: break; } } break; - case 2: + case ActorUnkSWTMState_2: break; - case 3: + case ActorUnkSWTMState_3: if (this->mUnk_50 < this->mUnk_52) { this->mUnk_50++; } if ((s32) this->mUnk_50 >= 15) { this->func_ov000_0209b184(); - this->func_ov000_0209af54(0); + this->SetState(ActorUnkSWTMState_0); } break; default: @@ -93,26 +93,26 @@ ARM void ActorUnkSWTM::vfunc_20(void) { ARM void ActorUnkSWTM::vfunc_24(void) {} -ARM void ActorUnkSWTM::func_ov000_0209af54(unk32 param1) { - this->mUnk_4C = param1; +ARM void ActorUnkSWTM::SetState(ActorState state) { + this->mState = state; this->mUnk_A8 = 0; - switch (this->mUnk_4C) { - case 0: + switch (this->mState) { + case ActorUnkSWTMState_0: this->func_ov000_02098a88(0, 0); break; - case 1: + case ActorUnkSWTMState_1: this->mUnk_AC = false; this->mUnk_9C = this->mUnk_9E; break; - case 2: + case ActorUnkSWTMState_2: this->func_ov000_02098a88(0, 1); if (this->mUnk_94 == 0) { UNSET_FLAG(this->mFlags, ActorFlag_Alive); } break; - case 3: + case ActorUnkSWTMState_3: this->func_ov000_0209b160(); this->mUnk_50 = 0; this->mUnk_52 = -1; @@ -177,7 +177,7 @@ ARM unk32 ActorUnkSWTM::func_ov000_0209b038(void) { } ARM void ActorUnkSWTM::func_ov000_0209b160(void) { - if (this->mUnk_4C != 2) { + if (this->mState != ActorUnkSWTMState_2) { data_ov000_020b5214.func_ov000_0206db44(0xA3); } } @@ -199,5 +199,3 @@ ARM void ActorUnkSWTM::func_ov000_0209b1d0(void) { data_ov000_020b5214.func_ov000_0206e7e8(0x91); } } - -ARM ActorProfileUnkSWTM::~ActorProfileUnkSWTM() {} diff --git a/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp b/src/000_Second/Actor/Actor_Derived1.cpp similarity index 56% rename from src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp rename to src/000_Second/Actor/Actor_Derived1.cpp index a125e736..ec8d3810 100644 --- a/src/000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp +++ b/src/000_Second/Actor/Actor_Derived1.cpp @@ -1,10 +1,10 @@ -#include "Actor/ActorUnk_ov000_020a8bb0.hpp" +#include "Actor/Actor_Derived1.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" #include "Unknown/UnkStruct_027e0cd8.hpp" #include "flags.h" #include "global.h" -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ae0(fx32 param1) { +ARM void Actor_Derived1::func_ov000_020a8ae0(fx32 param1) { u32 posY = this->mVel.y; if (posY <= param1) { @@ -14,7 +14,7 @@ ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ae0(fx32 param1) { this->mVel.y = posY; } -ARM ActorUnk_ov000_020a8bb0::ActorUnk_ov000_020a8bb0(ModelRender *param1, unk32 param2) : +ARM Actor_Derived1::Actor_Derived1(ModelRender *param1, unk32 param2) : mUnk_094(param2), mUnk_0A4(param1), mUnk_0B0(0), @@ -39,45 +39,45 @@ ARM ActorUnk_ov000_020a8bb0::ActorUnk_ov000_020a8bb0(ModelRender *param1, unk32 mUnk_118(0x1000), mUnk_11C(0x019A) { this->mUnk_30 = &this->mUnk_104; - this->mUnk_4A = 5; + this->mUnk_4A[0] = 5; this->mUnk_44 = 0x1F; this->mUnk_094.mUnk_08 = 3; this->mUnk_38 = &this->mUnk_094.mUnk_00; this->mUnk_0B0 |= 0x08; } -ARM ActorUnk_ov000_020a8bb0::~ActorUnk_ov000_020a8bb0() {} +ARM Actor_Derived1::~Actor_Derived1() {} -ARM bool ActorUnk_ov000_020a8bb0::vfunc_18(unk32 param1) { +ARM bool Actor_Derived1::vfunc_18(unk32 param1) { if (this->mUnk_5C.mParams[2] == 0 && this->func_ov000_020a8dd0()) { UNSET_FLAG(this->mFlags, ActorFlag_Alive); } if (this->mUnk_0B0 & 8) { this->mUnk_0A4.mpModelRender->func_ov000_02057c38(6, 2); - this->mUnk_0A4.mpModelRender->func_ov000_0209a7b8(this, ActorUnk_ov000_020a8bb0::func_ov000_020a9804); + this->mUnk_0A4.mpModelRender->func_ov000_0209a7b8(this, Actor_Derived1::func_ov000_020a9804); } this->vfunc_54(param1); return 1; } -ARM void ActorUnk_ov000_020a8bb0::vfunc_54(unk32 param1) {} +ARM void Actor_Derived1::vfunc_54(unk32 param1) {} -ARM void ActorUnk_ov000_020a8bb0::vfunc_1c() { +ARM void Actor_Derived1::vfunc_1c() { this->func_ov031_020e3ca4(); } -ARM bool ActorUnk_ov000_020a8bb0::func_ov000_020a8db0() { +ARM bool Actor_Derived1::func_ov000_020a8db0() { return data_027e0cd8->func_ov000_02081e30(this->mUnk_5C.mUnk_1A, this->mUnk_5C.mUnk_18.x); } -ARM bool ActorUnk_ov000_020a8bb0::func_ov000_020a8dd0() { +ARM bool Actor_Derived1::func_ov000_020a8dd0() { return data_027e0cd8->func_ov000_02081e30(this->mUnk_5C.mUnk_1C_0, this->mUnk_5C.mUnk_18.y); } // non-matching -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8df0(ActorRef param1, unk32 param2) { +ARM void Actor_Derived1::func_ov000_020a8df0(ActorRef param1, unk32 param2) { if (!((u32) (((param2 + 8) - param2) / 2) < 2)) { this->mUnk_0B0 |= 2; } else { @@ -94,12 +94,12 @@ ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8df0(ActorRef param1, unk32 par } } -ARM void ActorUnk_ov000_020a8bb0::vfunc_b4() { +ARM void Actor_Derived1::vfunc_b4() { this->vfunc_58(0); } // non-matching -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8e9c(VecFx32 *param1) { +ARM void Actor_Derived1::func_ov000_020a8e9c(VecFx32 *param1) { fx32 z = param1->x; fx32 y = param1->y; fx32 x = param1->z; @@ -110,7 +110,7 @@ ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8e9c(VecFx32 *param1) { this->mUnk_0BC.Reset(); } -ARM void ActorUnk_ov000_020a8bb0::vfunc_b0() { +ARM void Actor_Derived1::vfunc_b0() { if (data_027e09b8->func_01ffd420() == 0) { ActorUnk_vfunc_b0 auStack_60; auStack_60.mpActor = this; @@ -122,28 +122,28 @@ ARM void ActorUnk_ov000_020a8bb0::vfunc_b0() { auStack_60.mUnk_21 = 0; auStack_60.mUnk_32 = 1; - this->vfunc_00(&auStack_60.mUnk_34); + this->GetOffsetPos(&auStack_60.mUnk_34); this->mUnk_0B4 = data_027e09b8->func_ov000_02073470(&auStack_60, 0); } } -ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_88() { +ARM unk32 Actor_Derived1::vfunc_88() { return 1; } -ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_8c() { +ARM unk32 Actor_Derived1::vfunc_8c() { return 1; } -ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_90() { +ARM unk32 Actor_Derived1::vfunc_90() { return 0x7B; } -ARM void ActorUnk_ov000_020a8bb0::vfunc_94() { +ARM void Actor_Derived1::vfunc_94() { this->mUnk_0A4.mUnk_08 = 0xF6; } -ARM void ActorUnk_ov000_020a8bb0::vfunc_60() { +ARM void Actor_Derived1::vfunc_60() { if (data_027e09b8->func_01ffd420() == 0) { if (this->vfunc_64()) { this->vfunc_b0(); @@ -153,15 +153,15 @@ ARM void ActorUnk_ov000_020a8bb0::vfunc_60() { } } -ARM bool ActorUnk_ov000_020a8bb0::vfunc_64() { +ARM bool Actor_Derived1::vfunc_64() { return GET_FLAG(this->mFlags, ActorFlag_Interacting); } -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ff4() {} +ARM void Actor_Derived1::func_ov000_020a8ff4() {} -ARM void ActorUnk_ov000_020a8bb0::vfunc_6c() {} +ARM void Actor_Derived1::vfunc_6c() {} -ARM void ActorUnk_ov000_020a8bb0::vfunc_68() { +ARM void Actor_Derived1::vfunc_68() { UNSET_FLAG(this->mFlags, ActorFlag_Interacting); this->func_ov000_020a9200(); this->vfunc_ac(); @@ -169,19 +169,19 @@ ARM void ActorUnk_ov000_020a8bb0::vfunc_68() { this->mUnk_0B0 &= ~0x10; } -ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_7c() { +ARM unk32 Actor_Derived1::vfunc_7c() { return 1; } -ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_80() { +ARM unk32 Actor_Derived1::vfunc_80() { return -1; } -ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_84() { +ARM unk32 Actor_Derived1::vfunc_84() { return 1; } -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a91b8(VecFx32 *param1, unk32 param2) { +ARM void Actor_Derived1::func_ov000_020a91b8(VecFx32 *param1, unk32 param2) { this->func_ov000_020a8e9c(param1); if (param2 != 0) { @@ -193,40 +193,40 @@ ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a91b8(VecFx32 *param1, unk32 par this->vfunc_58(7); } -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9200() {} +ARM void Actor_Derived1::func_ov000_020a9200() {} -ARM void ActorUnk_ov000_020a8bb0::vfunc_70() { - if (this->mUnk_4C != 5) { +ARM void Actor_Derived1::vfunc_70() { + if (this->mState != 5) { this->vfunc_58(4); } } -ARM void ActorUnk_ov000_020a8bb0::vfunc_74() {} -ARM void ActorUnk_ov000_020a8bb0::vfunc_78() {} -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9248() {} -ARM void ActorUnk_ov000_020a8bb0::vfunc_5c() {} -ARM void ActorUnk_ov000_020a8bb0::vfunc_98() {} -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a94b0() {} -ARM void ActorUnk_ov000_020a8bb0::vfunc_9c() {} +ARM void Actor_Derived1::vfunc_74() {} +ARM void Actor_Derived1::vfunc_78() {} +ARM void Actor_Derived1::func_ov000_020a9248() {} +ARM void Actor_Derived1::vfunc_5c() {} +ARM void Actor_Derived1::vfunc_98(unk32 param1) {} +ARM void Actor_Derived1::func_ov000_020a94b0() {} +ARM void Actor_Derived1::vfunc_9c() {} -ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_a0() { +ARM unk32 Actor_Derived1::vfunc_a0() { this->GetActorId(); return 1; } -ARM void ActorUnk_ov000_020a8bb0::vfunc_ac() {} -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a95d8() {} -ARM void ActorUnk_ov000_020a8bb0::vfunc_a4() {} +ARM void Actor_Derived1::vfunc_ac() {} +ARM void Actor_Derived1::func_ov000_020a95d8() {} +ARM void Actor_Derived1::vfunc_a4() {} -ARM unk32 ActorUnk_ov000_020a8bb0::vfunc_a8() { +ARM unk32 Actor_Derived1::vfunc_a8() { return 1; } -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9804() {} -ARM void ActorUnk_ov000_020a8bb0::vfunc_20() {} +ARM void Actor_Derived1::func_ov000_020a9804() {} +ARM void Actor_Derived1::vfunc_20() {} // non-matching -ARM void ActorUnk_ov000_020a8bb0::vfunc_24() { +ARM void Actor_Derived1::vfunc_24() { if (!data_027e09b8->func_ov000_020732dc(3) || !(this->mUnk_0B0 & 4)) { this->vfunc_20(); } @@ -239,7 +239,7 @@ ARM void ActorUnk_ov000_020a8bb0::vfunc_24() { } // non-matching -ARM void ActorUnk_ov000_020a8bb0::vfunc_2c(unk32 param1) { +ARM void Actor_Derived1::vfunc_2c(unk32 param1) { if (this->func_01fff5d0(param1, 0) == 0) { return; } @@ -248,15 +248,15 @@ ARM void ActorUnk_ov000_020a8bb0::vfunc_2c(unk32 param1) { this->mUnk_0A4.func_01ffc6d4(this->mAngle, &this->mPos); } -ARM void ActorUnk_ov000_020a8bb0::vfunc_b8() { +ARM void Actor_Derived1::vfunc_b8() { this->func_ov017_020bf5c4(&this->mPos, 0x666, 0x666, 0x1F, 0); } -ARM void ActorUnk_ov000_020a8bb0::vfunc_14() {} -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9a20() {} -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9a34() {} -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9a50() {} -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9a94() {} -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9abc() {} -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9ae0() {} -ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a9afc() {} +ARM void Actor_Derived1::vfunc_14() {} +ARM void Actor_Derived1::func_ov000_020a9a20() {} +ARM void Actor_Derived1::func_ov000_020a9a34() {} +ARM void Actor_Derived1::func_ov000_020a9a50() {} +ARM void Actor_Derived1::func_ov000_020a9a94() {} +ARM void Actor_Derived1::func_ov000_020a9abc() {} +ARM void Actor_Derived1::func_ov000_020a9ae0() {} +ARM void Actor_Derived1::func_ov000_020a9afc() {} diff --git a/src/000_Second/MapObject/MapObject.cpp b/src/000_Second/MapObject/MapObject.cpp index 6e0d5515..e67582d6 100644 --- a/src/000_Second/MapObject/MapObject.cpp +++ b/src/000_Second/MapObject/MapObject.cpp @@ -16,8 +16,6 @@ extern "C" u16 func_01ffbbe0(fx32 x, fx32 z); extern "C" void func_01ffecdc(unk32 param1, Cylinder *param2); extern "C" bool func_01ffd768(unk32, void *, void *, unk8); -extern "C" void func_ov000_020973f4(void *, void *, u32, void *, int); //! TODO: solve oddity - ARM MapObject::MapObject() { this->mUnk_10 = NULL; this->mUnk_16 = -1; @@ -228,37 +226,30 @@ ARM void MapObject::func_ov000_0209d518(unk32 param1, unk32 param2, unk32 param3 data_027e09b4->func_01fff60c(param1, param2, param3, param4, 0, 0); } -struct TempStruct { - VecFx32 pos; - u16 param_r2; - s16 extra_s16; - u16 extra_u16; - STRUCT_PAD(0x16, 0x28); - unk32 mUnk_28; - void func_ov000_020975f8(); -}; +ARM void MapObject::func_ov000_0209d54c(ActorRef *param1, MapObject *thisx, u16 param2, const VecFx32 *pPos, s16 param3, + u16 param4) { + ActorParams params; -// non-matching -ARM void MapObject::func_ov000_0209d54c(void *param1, MapObject *thisx, unk32 param2, VecFx32 *param3, unk32 param4, - unk32 param5) { - TempStruct local_4c; - local_4c.mUnk_28 = 0; - local_4c.func_ov000_020975f8(); - local_4c.pos.x = param3->x; - local_4c.pos.y = param3->y; - local_4c.pos.z = param3->z; - local_4c.param_r2 = param4; - local_4c.extra_s16 = param5; - local_4c.extra_u16 = param2; - func_ov000_020973f4(param1, &data_ov000_020b539c_eur, ActorId_EventIcon, &local_4c, 0); + params.mUnk_28 = 0; + params.func_ov000_020975f8(); + + params.mInitialPos.x = pPos->x; + params.mInitialPos.y = pPos->y; + params.mInitialPos.z = pPos->z; + + params.mParams[0] = param2; + params.mParams[1] = param3; + params.mParams[2] = param4; + + Actor::func_ov000_020973f4(param1, &data_ov000_020b539c_eur, ActorId_EventIcon, ¶ms, 0); } ARM void MapObject::func_ov000_0209d5c8(ActorRef ref) { if (ref.type_index != 0) { - Actor *pActor = gpActorManager->func_01fff3b4(ref.Get32()); + Actor *pActor = gpActorManager->func_01fff3b4(ref); if (pActor != NULL) { - UNSET_FLAG(pActor->mFlags, ActorFlag_Alive); + pActor->Kill(); } } } diff --git a/src/000_Second/UnkSystem1_Base.cpp b/src/000_Second/UnkSystem1_Base.cpp index 98647f2c..e1fcb98f 100644 --- a/src/000_Second/UnkSystem1_Base.cpp +++ b/src/000_Second/UnkSystem1_Base.cpp @@ -55,8 +55,8 @@ ARM unk32 UnkSystem1_ov000_Base::vfunc_10(u16 *param1) { return -1; } -ARM unk32 UnkSystem1_ov000_Base::vfunc_14(void *param1) { - return 1; +ARM bool UnkSystem1_ov000_Base::vfunc_14(FLW1Instr *param1) { + return true; } ARM unk32 UnkSystem1_ov000_Base::vfunc_1C(u32 param1, unk32 param2, unk32 param3) { diff --git a/src/001_SceneInit/Item/ItemManager_001.cpp b/src/001_SceneInit/Item/ItemManager_001.cpp index 6ab369a3..e56141c1 100644 --- a/src/001_SceneInit/Item/ItemManager_001.cpp +++ b/src/001_SceneInit/Item/ItemManager_001.cpp @@ -12,7 +12,7 @@ THUMB void ItemManager::func_ov001_020bb9f8() { CourseEntry *pEntry = data_027e09a0->GetCourseEntry(data_027e09a4->mUnk_00.mSceneIndex); if (pEntry->saveCourseIndex < SaveCourseIndex_Max) { - this->mKeyAmount = gSaveManager.mUnk_000->mUnk_36[pEntry->saveCourseIndex].mKeyAmount; + this->mKeyAmount = gSaveManager.mUnk_000->unk_030[pEntry->saveCourseIndex].keyAmount; } else { this->mKeyAmount = 0; } diff --git a/src/001_SceneInit/Save/SaveManager_001.cpp b/src/001_SceneInit/Save/SaveManager_001.cpp new file mode 100644 index 00000000..3f8af919 --- /dev/null +++ b/src/001_SceneInit/Save/SaveManager_001.cpp @@ -0,0 +1,28 @@ +#include "Game/Game.hpp" +#include "Save/SaveManager.hpp" + +THUMB_BEGIN + +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)); + + 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)); + } + + 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(&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)); +} + +THUMB_END diff --git a/src/018_StartUp/GameModeStartUp.cpp b/src/018_StartUp/GameModeStartUp.cpp index 82961af4..e0b1c1b5 100644 --- a/src/018_StartUp/GameModeStartUp.cpp +++ b/src/018_StartUp/GameModeStartUp.cpp @@ -47,7 +47,7 @@ ARM Game::Game() : mpCurrentGameMode(NULL), createCallback(NULL), mUnk_08(NULL), - mpSaveFile(NULL), + mpSaveSlot(NULL), mUnk_14(NULL), mUnk_18(NULL) {} diff --git a/src/019_MainSelect/019_SaveManager.cpp b/src/019_MainSelect/019_SaveManager.cpp index 34f63572..49a94ab1 100644 --- a/src/019_MainSelect/019_SaveManager.cpp +++ b/src/019_MainSelect/019_SaveManager.cpp @@ -417,7 +417,7 @@ ARM void SaveFile::func_ov019_020d1aac(unk32 param1, const wchar_t *param2) { awStack_28[8] = L'\0'; wcsncpy(awStack_28, param2, LENGTH_PLAYER_NAME); - MI_CpuCopy16((u16 *) awStack_28, (u16 *) this->mSlots[param1].mInfoData[0].mPlayerName, + MI_CpuCopy16((u16 *) awStack_28, (u16 *) this->mSlots[param1].mInfoData[0].unk_D9C.mPlayerName, sizeof(wchar_t) * (LENGTH_PLAYER_NAME + 1)); MI_CpuCopy16((u16 *) awStack_28, (u16 *) this->mSlots[param1].mUnk_1D00[0].unk_3C4, sizeof(wchar_t) * (LENGTH_PLAYER_NAME + 1)); diff --git a/src/024_MainGame/Actor/ActorUnkOBPC.cpp b/src/024_MainGame/Actor/ActorUnkOBPC.cpp index 3b269c8f..7c15e357 100644 --- a/src/024_MainGame/Actor/ActorUnkOBPC.cpp +++ b/src/024_MainGame/Actor/ActorUnkOBPC.cpp @@ -27,9 +27,9 @@ ARM bool ActorUnkOBPC::vfunc_18(unk32 param1) { this->mUnk_98 = this->mUnk_5C.mParams[3]; if (!this->func_ov024_020d6f74()) { - this->func_ov024_020d7064(0x00, 0x01); + this->SetState(ActorUnkOBPCState_0, 1); } else { - this->func_ov024_020d7064(0x01, 0x01); + this->SetState(ActorUnkOBPCState_1, 1); } return true; @@ -44,19 +44,19 @@ ARM bool ActorUnkOBPC::func_ov024_020d6f74(void) { } ARM void ActorUnkOBPC::vfunc_20(void) { - switch (this->mUnk_4C) { + switch (this->mState) { case 0: if (this->func_ov024_020d7154()) { if (this->mUnk_5C.mUnk_20 == 0) { - this->func_ov024_020d7064(0x01, 0x00); + this->SetState(ActorUnkOBPCState_1, 0); } else if (data_ov000_020b504c.func_ov000_0206807c(this->mUnk_5C.mUnk_20, &this->mUnk_9C)) { - this->func_ov024_020d7064(0x01, 0x00); + this->SetState(ActorUnkOBPCState_1, 0); } } break; case 1: if (this->mUnk_5C.mParams[2] != 0 && !this->func_ov024_020d7154()) { - this->func_ov024_020d7064(0x00, 0x00); + this->SetState(ActorUnkOBPCState_0, 0); } break; default: @@ -72,11 +72,11 @@ ARM void ActorUnkOBPC::vfunc_24(void) { this->vfunc_20(); } -ARM void ActorUnkOBPC::func_ov024_020d7064(s16 param1, unk32 param2) { - this->mUnk_4C = param1; +ARM void ActorUnkOBPC::SetState(ActorState state, int param2) { + this->mState = state; - switch (this->mUnk_4C) { - case 0: + switch (this->mState) { + case ActorUnkOBPCState_0: if (this->mUnk_5C.mParams[2] == 0 || this->mUnk_5C.mParams[2] == 2) { break; } @@ -93,7 +93,7 @@ ARM void ActorUnkOBPC::func_ov024_020d7064(s16 param1, unk32 param2) { break; } break; - case 1: + case ActorUnkOBPCState_1: switch (this->mUnk_98) { case 1: this->func_ov000_02098a88(0, 0); @@ -173,7 +173,3 @@ ARM bool ActorUnkOBPC::func_ov024_020d7154(void) { sp10.y = 0; return temp_r5->func_ov000_020802ec(temp_r4, &sp10); } - -ARM ActorUnkOBPC::~ActorUnkOBPC() {} - -ARM ActorProfileUnkOBPC::~ActorProfileUnkOBPC() {} diff --git a/src/024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp b/src/024_MainGame/Actor/Actor_Derived1_EC_024.cpp similarity index 89% rename from src/024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp rename to src/024_MainGame/Actor/Actor_Derived1_EC_024.cpp index bc8bbf97..665b4264 100644 --- a/src/024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp +++ b/src/024_MainGame/Actor/Actor_Derived1_EC_024.cpp @@ -1,4 +1,4 @@ -#include "Actor/ActorUnk_ov000_020a8bb0.hpp" +#include "Actor/Actor_Derived1.hpp" #include "Unknown/UnkStruct_027e0960.hpp" struct UnkFuncStruct1 { @@ -16,7 +16,7 @@ bool data_ov024_020d86b4 = false; THUMB_BEGIN -ActorUnk_ov000_020a8bb0_EC::ActorUnk_ov000_020a8bb0_EC() { +Actor_Derived1_EC::Actor_Derived1_EC() { this->mUnk_00 = 0; this->mUnk_04 = 0; this->mUnk_05 = 0; @@ -30,17 +30,17 @@ ActorUnk_ov000_020a8bb0_EC::ActorUnk_ov000_020a8bb0_EC() { THUMB_END -void ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6680(const VecFx32 *param1, u8 *param2) { +void Actor_Derived1_EC::func_ov024_020d6680(const VecFx32 *param1, u8 *param2) { this->mUnk_00 = data_027e0960->func_ov000_0205a390(*param2); VecFx32_Copy(param1, &this->mUnk_0C); } -void ActorUnk_ov000_020a8bb0_EC::func_ov024_020d66c0(const VecFx32 *param1, unk32 param2) { +void Actor_Derived1_EC::func_ov024_020d66c0(const VecFx32 *param1, unk32 param2) { this->mUnk_00 = data_027e0960->func_ov000_0205a3fc(*param1, param2); VecFx32_Copy(param1, &this->mUnk_0C); } -bool ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6704() { +bool Actor_Derived1_EC::func_ov024_020d6704() { if (this->mUnk_08 & 0x10 || this->mUnk_08 & 0x08 || this->mUnk_08 & 0x04) { return true; } @@ -48,7 +48,7 @@ bool ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6704() { return false; } -void ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6730() { +void Actor_Derived1_EC::func_ov024_020d6730() { BOOL var_r0; this->mUnk_08 |= 0x02; @@ -166,8 +166,8 @@ void ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6730() { } } -u16 *ActorUnk_ov000_020a8bb0_EC::func_ov024_020d69d8(VecFx32 *pPos, s16 *pAngle, VecFx32 *pVel, unk32 param4, s16 param5, - unk32 param6) { +u16 *Actor_Derived1_EC::func_ov024_020d69d8(VecFx32 *pPos, s16 *pAngle, VecFx32 *pVel, unk32 param4, s16 param5, + unk32 param6) { VecFx32 sp1C; VecFx32 sp10; VecFx32 sp4; @@ -215,8 +215,8 @@ u16 *ActorUnk_ov000_020a8bb0_EC::func_ov024_020d69d8(VecFx32 *pPos, s16 *pAngle, return &this->mUnk_08; } -u16 *ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6b7c(VecFx32 *pPos, s16 *pAngle, VecFx32 *pVel, unk32 param4, s16 param5, - unk32 param6) { +u16 *Actor_Derived1_EC::func_ov024_020d6b7c(VecFx32 *pPos, s16 *pAngle, VecFx32 *pVel, unk32 param4, s16 param5, + unk32 param6) { VecFx32 sp28; VecFx32 sp1C; VecFx32 sp10; @@ -270,7 +270,7 @@ u16 *ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6b7c(VecFx32 *pPos, s16 *pAngle, return &this->mUnk_08; } -u16 *ActorUnk_ov000_020a8bb0_EC::func_ov024_020d6d80(VecFx32 *pPos, VecFx32 *pVel) { +u16 *Actor_Derived1_EC::func_ov024_020d6d80(VecFx32 *pPos, VecFx32 *pVel) { VecFx32 sp18; VecFx32 spC; VecFx32 sp0; diff --git a/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp b/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp index cf28bceb..45253c32 100644 --- a/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_1B8_Base_024.cpp @@ -561,7 +561,7 @@ void AdventureModeManager_1B8::func_ov024_020d1364() { } gSaveManager.func_ov017_020c3040(this->mUnk_28, this->mUnk_24); - SET_FLAG(gSaveManager.mUnk_000->mUnk_B30, this->mUnk_24); + SET_FLAG(gSaveManager.mUnk_000->unk_B30.unk_00, this->mUnk_24); } void AdventureModeManager_1B8::func_ov024_020d13cc(s32 param1) { @@ -576,7 +576,7 @@ void AdventureModeManager_1B8::func_ov024_020d13cc(s32 param1) { return; } - if (GET_FLAG(gSaveManager.mUnk_000->mUnk_B30, this->mUnk_24)) { + if (GET_FLAG(gSaveManager.mUnk_000->unk_B30.unk_00, this->mUnk_24)) { UnkDataStruct2 sp4(0x2290); void *unk_00 = sp4.unk_00; diff --git a/src/024_MainGame/UICounterManager.cpp b/src/024_MainGame/UICounterManager.cpp index cbbe0001..6624575c 100644 --- a/src/024_MainGame/UICounterManager.cpp +++ b/src/024_MainGame/UICounterManager.cpp @@ -431,7 +431,7 @@ void UICounter_Health::func_ov024_020cdaac() { //! TODO: regalloc fix Vec2s *ptr2 = &sp4; - UnkSubStruct19 *ptr3 = &this->mUnk_3E4[1]; + CellAnimObject *ptr3 = &this->mUnk_3E4[1]; switch (this->GetIterValue(var_r8)) { case 0: diff --git a/src/026_Train/Actor/ActorUnkRB1T.cpp b/src/026_Train/Actor/ActorUnkRB1T.cpp index f31e4430..eb0bf52a 100644 --- a/src/026_Train/Actor/ActorUnkRB1T.cpp +++ b/src/026_Train/Actor/ActorUnkRB1T.cpp @@ -1,8 +1,11 @@ //! TODO: This file was generated automatically and might contain errors #include "Actor/ActorUnkRB1T.hpp" +#include "Save/SaveManager.hpp" #include "System/SysNew.hpp" +extern UnkActorDataStruct1 data_ov026_02137edc; + ARM DECL_PROFILE(ActorProfileUnkRB1T); ARM Actor *ActorProfileUnkRB1T::Create() { @@ -12,13 +15,45 @@ ARM Actor *ActorProfileUnkRB1T::Create() { ARM ActorProfileUnkRB1T::ActorProfileUnkRB1T() : ActorProfile_Derived1(ActorId_RB1T) {} -ARM ActorUnkRB1T::ActorUnkRB1T() {} +ARM ActorUnkRB1T::ActorUnkRB1T() : + Actor_Derived1(&this->mUnk_20C, this->mUnk_120), + mUnk_20C(0) {} ARM void ActorUnkRB1T::func_ov026_0211e3cc(void) {} -ARM void ActorUnkRB1T::func_ov026_0211e3e0(void) {} + +bool ActorUnkRB1T::func_ov026_0211e3e0(int param1) { + if (GET_FLAG(gSaveManager.GetUnk000()->unk_B78.rabbitFlags, this->mUnk_5C.mParams[1])) { + this->Kill(); + return true; + } + + this->Actor_Derived1::vfunc_18(param1); + this->mUnk_0E4 = ActorUnkRB1T::func_ov026_021208a0; + + int result = this->func_ov026_0211e6cc(); + func_ov000_02099ddc(&this->mUnk_300, data_ov026_02137edc, 0x1000, result << 12); + + this->func_ov026_0211e554(); + + this->mUnk_36C = 0; + this->mUnk_36D = 0; + this->mUnk_36E = 0; + this->mUnk_36F = 0; + this->mUnk_370 = 0; + this->mUnk_371 = 0; + this->mUnk_372 = 0; + this->mUnk_373 = 0; + this->mUnk_374 = 0; + this->mUnk_375 = 0; + this->mUnk_376 = 0; + this->mUnk_377 = 0; + + return true; +} + ARM void ActorUnkRB1T::func_ov026_0211e4c8(void) {} ARM void ActorUnkRB1T::func_ov026_0211e554(void) {} -ARM void ActorUnkRB1T::func_ov026_0211e6cc(void) {} +ARM unk32 ActorUnkRB1T::func_ov026_0211e6cc(void) {} ARM void ActorUnkRB1T::func_ov026_0211e6e4(void) {} ARM void ActorUnkRB1T::func_ov026_0211e6f0(void) {} ARM void ActorUnkRB1T::func_ov026_0211e748(void) {} @@ -39,7 +74,13 @@ ARM void ActorUnkRB1T::func_ov026_0211f1a0(void) {} ARM void ActorUnkRB1T::func_ov026_0211f20c(void) {} ARM void ActorUnkRB1T::func_ov026_0211f28c(void) {} ARM void ActorUnkRB1T::func_ov026_0211f2f0(void) {} -ARM void ActorUnkRB1T::func_ov026_0211f394(void) {} + +ARM void ActorUnkRB1T::func_ov026_0211f394(void) { + SET_FLAG(gSaveManager.GetUnk000()->unk_B78.rabbitFlags, this->mUnk_5C.mParams[1]); + this->vfunc_98(4); + this->mUnk_280 = 0; +} + ARM void ActorUnkRB1T::func_ov026_0211f3e8(void) {} ARM void ActorUnkRB1T::func_ov026_0211f430(void) {} ARM void ActorUnkRB1T::func_ov026_0211f470(void) {} diff --git a/src/026_Train/code_02102924.cpp b/src/026_Train/code_02102924.cpp new file mode 100644 index 00000000..dec99758 --- /dev/null +++ b/src/026_Train/code_02102924.cpp @@ -0,0 +1,100 @@ +#include "Unknown/Common.hpp" +#include "math.hpp" +#include "types.h" + +static TrainSpeedPreset data_ov026_02135fec[TrainPresetType_Max] = { + // TrainPresetType_Default + { + .reverse = {.speed = -143, .unk_04 = 50}, + .stop = {.speed = 0, .unk_04 = 0}, + .slow = {.speed = 115, .unk_04 = 50}, + .fast = {.speed = 193, .unk_04 = 20}, + .unk_20 = 0, + .unk_24 = 12, + .unk_28 = 0, + .unk_2C = 50, + .unk_30 = 143, + .unk_34 = 5, + .unk_38 = 30, + .unk_3C = FLOAT_TO_FX32(225.0f), + }, + // TrainPresetType_DarkRealmNormal + { + .reverse = {.speed = -340, .unk_04 = 120}, + .stop = {.speed = 0, .unk_04 = 0}, + .slow = {.speed = 266, .unk_04 = 120}, + .fast = {.speed = 496, .unk_04 = 40}, + .unk_20 = 0, + .unk_24 = 50, + .unk_28 = 0, + .unk_2C = 120, + .unk_30 = 377, + .unk_34 = 5, + .unk_38 = 30, + .unk_3C = FLOAT_TO_FX32(225.0f), + }, + // TrainPresetType_DarkRealmLightTear + { + .reverse = {.speed = -340, .unk_04 = 250}, + .stop = {.speed = 193, .unk_04 = 250}, + .slow = {.speed = 266, .unk_04 = 250}, + .fast = {.speed = 496, .unk_04 = 80}, + .unk_20 = 193, + .unk_24 = 600, + .unk_28 = 0, + .unk_2C = 800, + .unk_30 = 0, + .unk_34 = 0, + .unk_38 = 0, + .unk_3C = FLOAT_TO_FX32(225.0f), + }, + // TrainPresetType_DarkRealmLightTearRope + { + .reverse = {.speed = -1229, .unk_04 = 3000}, + .stop = {.speed = 1229, .unk_04 = 3000}, + .slow = {.speed = 1229, .unk_04 = 3000}, + .fast = {.speed = 1229, .unk_04 = 3000}, + .unk_20 = 1229, + .unk_24 = 600, + .unk_28 = 0, + .unk_2C = 0, + .unk_30 = 0, + .unk_34 = 0, + .unk_38 = 0, + .unk_3C = FLOAT_TO_FX32(225.0f), + }, + // TrainPresetType_DarkRealmFight + { + .reverse = {.speed = 152, .unk_04 = 61}, + .stop = {.speed = 152, .unk_04 = 61}, + .slow = {.speed = 172, .unk_04 = 61}, + .fast = {.speed = 193, .unk_04 = 16}, + .unk_20 = 152, + .unk_24 = 16, + .unk_28 = 152, + .unk_2C = 61, + .unk_30 = 0, + .unk_34 = 0, + .unk_38 = 30, + .unk_3C = FLOAT_TO_FX32(81.0f), + }, + // TrainPresetType_5 + { + .reverse = {.speed = -143, .unk_04 = 50}, + .stop = {.speed = 0, .unk_04 = 0}, + .slow = {.speed = 115, .unk_04 = 50}, + .fast = {.speed = 193, .unk_04 = 20}, + .unk_20 = 0, + .unk_24 = 12, + .unk_28 = 0, + .unk_2C = 50, + .unk_30 = 143, + .unk_34 = 5, + .unk_38 = 30, + .unk_3C = FLOAT_TO_FX32(81.0f), + }, +}; + +const TrainSpeedPreset *func_ov026_02102924(int index) { + return &data_ov026_02135fec[index]; +} diff --git a/src/031_Land/Actor/ActorHeart.cpp b/src/031_Land/Actor/ActorHeart.cpp index 54c13c6d..a04f0e9a 100644 --- a/src/031_Land/Actor/ActorHeart.cpp +++ b/src/031_Land/Actor/ActorHeart.cpp @@ -4,20 +4,6 @@ #include "Unknown/UnkStruct_027e0cd8.hpp" #include "Unknown/UnkStruct_027e0ce0.hpp" -class UnkStruct_ov031_02113d64 { -public: - /* 00 */ unk32 mUnk_00; - /* 04 */ VecFx32 mUnk_04; - - UnkStruct_ov031_02113d64(unk32 param1, fx32 x, fx32 y, fx32 z) { - mUnk_00 = param1; - mUnk_04.x = x; - mUnk_04.y = y; - mUnk_04.z = z; - } -}; -const UnkStruct_ov031_02113d64 data_ov031_02113d64(0, 0x800, 0, 0x800); - typedef struct { unk16 mUnk_00; unk16 mUnk_02; @@ -49,6 +35,8 @@ extern "C" void func_ov000_02098838(); extern "C" void func_ov017_020bf99c(void); extern "C" void func_ov017_02097bec(Actor_9c *); +const Cylinder data_ov031_02113d64(0x800); + ARM DECL_PROFILE(ActorProfileHeart); ARM Actor *ActorProfileHeart::Create() { @@ -107,9 +95,13 @@ ARM bool ActorHeart::vfunc_18(unk32 param1) { return true; } -static PTMF data_ov031_02113d74[] = { - ActorHeart::func_ov031_020ef2f8, ActorHeart::func_ov031_020ef334, ActorHeart::func_ov031_020ef3a0, - ActorHeart::func_ov031_020ef3d0, ActorHeart::func_ov031_020ef444, ActorHeart::func_ov031_020ef458, +static PTMF data_ov031_02113d74[ActorHeartState_Max] = { + ActorHeart::func_ov031_020ef2f8, // ActorHeartState_0 + ActorHeart::func_ov031_020ef334, // ActorHeartState_1 + ActorHeart::func_ov031_020ef3a0, // ActorHeartState_2 + ActorHeart::func_ov031_020ef3d0, // ActorHeartState_3 + ActorHeart::func_ov031_020ef444, // ActorHeartState_4 + ActorHeart::func_ov031_020ef458, // ActorHeartState_5 }; // non-matching @@ -136,7 +128,7 @@ void ActorHeart::vfunc_20() { this->mUnk_C8.mUnk_12 = stack.mUnk_06; // da this->mUnk_3C = &this->mUnk_98; - CALL_PTMF(PTMF, data_ov031_02113d74[this->mUnk_4C]); + CALL_PTMF(PTMF, data_ov031_02113d74[this->mState]); bool t = true; if (this->mUnk_94 < this->mUnk_96) { @@ -149,7 +141,7 @@ void ActorHeart::vfunc_20() { if (t) { this->func_ov000_020989e0(); - if (this->mUnk_4C == 1) { + if (this->mState == ActorHeartState_1) { func_ov000_0208bc00(data_027e0ce0, 0, &stack.mUnk_08); func_01ffce1c(&stack.mUnk_18, &stack.mUnk_08); @@ -195,7 +187,7 @@ void ActorHeart::vfunc_20() { this->mPrevPos.z = this->mPos.z; VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); - if (this->mUnk_4C != 0x3) { + if (this->mState != ActorHeartState_3) { this->func_ov000_02098910(0, 0x10); } if (this->mUnk_46 & 0x3) { @@ -210,26 +202,30 @@ void ActorHeart::vfunc_20() { extern unk32 data_ov000_020aecf8; -static PTMF data_ov031_02113da4[] = { - ActorHeart::func_ov031_020ef2ec, ActorHeart::func_ov031_020ef320, ActorHeart::func_ov031_020ef35c, - ActorHeart::func_ov031_020ef3b8, ActorHeart::func_ov031_020ef430, ActorHeart::func_ov031_020ef448, +static PTMF data_ov031_02113da4[ActorHeartState_Max] = { + ActorHeart::func_ov031_020ef2ec, // ActorHeartState_0 + ActorHeart::func_ov031_020ef320, // ActorHeartState_1 + ActorHeart::func_ov031_020ef35c, // ActorHeartState_2 + ActorHeart::func_ov031_020ef3b8, // ActorHeartState_3 + ActorHeart::func_ov031_020ef430, // ActorHeartState_4 + ActorHeart::func_ov031_020ef448, // ActorHeartState_5 }; -ARM void ActorHeart::func_ov031_020ef1b4(unk16 param_2) { - this->mUnk_4C = param_2; +ARM void ActorHeart::SetState(ActorState state) { + this->mState = state; this->mUnk_2C = data_ov000_020aecf8; this->mUnk_44 = 0x9C; - CALL_PTMF(PTMF, data_ov031_02113da4[this->mUnk_4C]); + CALL_PTMF(PTMF, data_ov031_02113da4[this->mState]); } ARM void ActorHeart::func_ov031_020ef208() { bool var2 = true; bool var1 = true; - if (this->mUnk_4C != 0x3 && this->mUnk_4C != 0x4) { + if (this->mState != ActorHeartState_3 && this->mState != ActorHeartState_4) { var1 = false; } if (!var1) { - if (this->mUnk_4C != 0x5) { + if (this->mState != ActorHeartState_5) { var2 = false; } } @@ -269,7 +265,7 @@ ARM void ActorHeart::func_ov031_020ef2f8() { if (this->mVel.y > 0) { return; } - this->func_ov031_020ef1b4(0x01); + this->SetState(ActorHeartState_1); } ARM void ActorHeart::func_ov031_020ef320() { @@ -282,7 +278,7 @@ ARM void ActorHeart::func_ov031_020ef334() { if ((this->mUnk_46 & 0x3) == 0) { return; } - this->func_ov031_020ef1b4(0x02); + this->SetState(ActorHeartState_2); } ARM void ActorHeart::func_ov031_020ef35c() { @@ -318,7 +314,7 @@ ARM void ActorHeart::func_ov031_020ef3d0() { this->mVel.z = FLOAT_TO_FX32(0.0); this->mUnk_9C |= 0x1000; - this->func_ov031_020ef1b4(0x01); + this->SetState(ActorHeartState_1); } ARM void ActorHeart::func_ov031_020ef430() { @@ -327,9 +323,7 @@ ARM void ActorHeart::func_ov031_020ef430() { this->mVel.z = FLOAT_TO_FX32(0.0); } -ARM void ActorHeart::func_ov031_020ef444() { - return; -} +ARM void ActorHeart::func_ov031_020ef444() {} ARM void ActorHeart::func_ov031_020ef448() { this->mVel.x = FLOAT_TO_FX32(0.0); @@ -345,7 +339,7 @@ ARM void ActorHeart::func_ov031_020ef458() { // which actor is this ? UnkActor_02ef458 *actor = (UnkActor_02ef458 *) gpActorManager->func_01fff3b4(this->mUnk_C4); if (actor == nullptr) { - this->func_ov031_020ef1b4(0x01); + this->SetState(ActorHeartState_1); return; } VecFx32_Copy(&actor->mUnk_E8, &this->mPos); @@ -353,7 +347,7 @@ ARM void ActorHeart::func_ov031_020ef458() { ARM void ActorHeart::func_ov031_020ef4a8() { if (this->mUnk_5C.mUnk_24 >= 0) { - this->func_ov031_020ef1b4(2); + this->SetState(ActorHeartState_2); return; } @@ -361,19 +355,19 @@ ARM void ActorHeart::func_ov031_020ef4a8() { case 0: this->mUnk_52 = 0xB4; this->mUnk_50 = 0x00; - this->func_ov031_020ef1b4(2); + this->SetState(ActorHeartState_2); break; case 1: this->mUnk_52 = 0x1E0; this->mUnk_50 = 0x00; - this->func_ov031_020ef1b4(0); + this->SetState(ActorHeartState_0); return; default: this->mUnk_52 = 0x1E0; this->mUnk_50 = 0x00; - this->func_ov031_020ef1b4(0); + this->SetState(ActorHeartState_0); break; } } @@ -384,19 +378,16 @@ ARM void ActorHeart::func_ov031_020ef528() { this->func_ov000_020984d0(); } -// non-matching ARM void ActorHeart::func_ov031_020ef570() { - func_ov000_02098838(); + this->func_ov000_02098838(); + this->mUnk_B8 += 0x666; + + this->mVel.x = MUL_FX32(SIN((u16) this->mUnk_B8), 0x40); this->mVel.z = FLOAT_TO_FX32(0.0); - s16 sin_value = SIN((u16) this->mUnk_B8); - s32 value = ((sin_value >> 0x1F) << 6 | sin_value >> 0x1A) + (sin_value * 0x40 > ~0x800); - - this->mVel.x = ROUND_FX32(sin_value * 0x40) + value; - - if (this->mVel.y <= FLOAT_TO_FX32(-0.005)) { - this->mVel.y = FLOAT_TO_FX32(-0.005); + if (this->mVel.y <= FLOAT_TO_FX32(-0.005) - 1) { + this->mVel.y = FLOAT_TO_FX32(-0.005) - 1; } } @@ -440,8 +431,6 @@ ARM void ActorHeart::func_ov031_020ef698() { } } -#define GET_ACTORHEART(this) reinterpret_cast((this)->mUnk_20) - ARM ActorHeart_c4::ActorHeart_c4(Actor *param1) : Actor_c4(param1) { this->mUnk_20 = param1; @@ -450,25 +439,25 @@ ARM ActorHeart_c4::ActorHeart_c4(Actor *param1) : ARM bool ActorHeart_c4::vfunc_00(ActorRef ref, unk32 param_3) { if (param_3 != 0) { - ActorHeart *pHeart = GET_ACTORHEART(this); + ActorHeart *pHeart = this->GetActorPtr(); pHeart->mUnk_C4 = ref; - pHeart->func_ov031_020ef1b4(0x04); + pHeart->SetState(ActorHeartState_4); } return this->Actor_c4::vfunc_00(ref, param_3); } ARM void ActorHeart_c4::vfunc_04() { - GET_ACTORHEART(this)->func_ov031_020ef1b4(0x05); + this->GetActorPtr()->SetState(ActorHeartState_5); this->Actor_c4::vfunc_04(); } ARM void ActorHeart_c4::vfunc_0c(unk32 param1) { - GET_ACTORHEART(this)->func_ov031_020ef1b4(0x01); + this->GetActorPtr()->SetState(ActorHeartState_1); this->Actor_c4::vfunc_0c(param1); } ARM void ActorHeart_c4::vfunc_08() { - GET_ACTORHEART(this)->func_ov031_020ef528(); + this->GetActorPtr()->func_ov031_020ef528(); this->Actor_c4::vfunc_08(); } diff --git a/src/031_Land/Actor/ActorItemDrop.cpp b/src/031_Land/Actor/ActorItemDrop.cpp index 7ce28569..3804434c 100644 --- a/src/031_Land/Actor/ActorItemDrop.cpp +++ b/src/031_Land/Actor/ActorItemDrop.cpp @@ -180,7 +180,7 @@ ARM bool ActorItemDrop::vfunc_18(unk32 param1) { this->mUnk_52 = FLOAT_TO_FX32(0.1173f); this->mUnk_50 = FLOAT_TO_FX32(0.0f); - this->func_ov031_020fa424(ActorDroppedItemState_0); + this->SetState(ActorItemDropState_0); return true; } @@ -189,25 +189,25 @@ ARM void ActorItemDrop::vfunc_20() { } ARM void ActorItemDrop::vfunc_24() { - if (this->mUnk_4C == ActorDroppedItemState_6) { + if (this->mState == ActorItemDropState_6) { this->func_ov031_020fa260(); } } -static PTMF data_ov031_02114bb0[ActorDroppedItemState_Max] = { - ActorItemDrop::func_ov031_020fa46c, // ActorDroppedItemState_0 - ActorItemDrop::func_ov031_020fa4a0, // ActorDroppedItemState_1 - ActorItemDrop::func_ov031_020fa568, // ActorDroppedItemState_2 - ActorItemDrop::func_ov031_020fa5f0, // ActorDroppedItemState_3 - ActorItemDrop::func_ov031_020fa664, // ActorDroppedItemState_4 - ActorItemDrop::func_ov031_020fa678, // ActorDroppedItemState_5 - ActorItemDrop::func_ov031_020fa72c, // ActorDroppedItemState_6 +static PTMF data_ov031_02114bb0[ActorItemDropState_Max] = { + ActorItemDrop::func_ov031_020fa46c, // ActorItemDropState_0 + ActorItemDrop::func_ov031_020fa4a0, // ActorItemDropState_1 + ActorItemDrop::func_ov031_020fa568, // ActorItemDropState_2 + ActorItemDrop::func_ov031_020fa5f0, // ActorItemDropState_3 + ActorItemDrop::func_ov031_020fa664, // ActorItemDropState_4 + ActorItemDrop::func_ov031_020fa678, // ActorItemDropState_5 + ActorItemDrop::func_ov031_020fa72c, // ActorItemDropState_6 }; ARM void ActorItemDrop::func_ov031_020fa260() { this->mUnk_3C = &this->mUnk_B4; - CALL_PTMF(PTMF, data_ov031_02114bb0[this->mUnk_4C]); + CALL_PTMF(PTMF, data_ov031_02114bb0[this->mState]); if (this->IsTimerOut()) { this->func_ov000_020989e0(); @@ -225,16 +225,16 @@ ARM void ActorItemDrop::func_ov031_020fa260() { if (var_r1_3 || (this->mUnk_C0.type_index == 0x100 && this->mUnk_C0.unk_id == 1 && data_027e0ce0->func_01fff1e0())) { - this->func_ov031_020fa424(ActorDroppedItemState_6); + this->SetState(ActorItemDropState_6); } } else if (this->mUnk_C0.type_index & 0x100) { - this->func_ov031_020fa424(ActorDroppedItemState_6); + this->SetState(ActorItemDropState_6); } break; case 12: this->mUnk_DC = this->mUnk_C0; this->mUnk_B8 &= ~0x1000; - this->func_ov031_020fa424(ActorDroppedItemState_3); + this->SetState(ActorItemDropState_3); break; default: break; @@ -242,14 +242,14 @@ ARM void ActorItemDrop::func_ov031_020fa260() { } } - if (this->mUnk_5C.mUnk_24 < 0 && this->mUnk_4C != ActorDroppedItemState_6) { + if (this->mUnk_5C.mUnk_24 < 0 && this->mState != ActorItemDropState_6) { this->func_ov031_020fa900(); } VecFx32_Copy(&this->mPos, &this->mPrevPos); VecFx32_Add(&this->mPos, &this->mVel, &this->mPos); - if (this->mUnk_4C != ActorDroppedItemState_3) { + if (this->mState != ActorItemDropState_3) { this->func_ov000_02098b8c(0x0, 0x0); } @@ -263,26 +263,26 @@ ARM void ActorItemDrop::func_ov031_020fa260() { this->mUnk_10C.z = FLOAT_TO_FX32(0.0f); } -static PTMF data_ov031_02114be8[ActorDroppedItemState_Max] = { - ActorItemDrop::func_ov031_020fa468, // ActorDroppedItemState_0 - ActorItemDrop::func_ov031_020fa494, // ActorDroppedItemState_1 - ActorItemDrop::func_ov031_020fa524, // ActorDroppedItemState_2 - ActorItemDrop::func_ov031_020fa5d8, // ActorDroppedItemState_3 - ActorItemDrop::func_ov031_020fa650, // ActorDroppedItemState_4 - ActorItemDrop::func_ov031_020fa668, // ActorDroppedItemState_5 - ActorItemDrop::func_ov031_020fa6c8, // ActorDroppedItemState_6 +static PTMF data_ov031_02114be8[ActorItemDropState_Max] = { + ActorItemDrop::func_ov031_020fa468, // ActorItemDropState_0 + ActorItemDrop::func_ov031_020fa494, // ActorItemDropState_1 + ActorItemDrop::func_ov031_020fa524, // ActorItemDropState_2 + ActorItemDrop::func_ov031_020fa5d8, // ActorItemDropState_3 + ActorItemDrop::func_ov031_020fa650, // ActorItemDropState_4 + ActorItemDrop::func_ov031_020fa668, // ActorItemDropState_5 + ActorItemDrop::func_ov031_020fa6c8, // ActorItemDropState_6 }; -ARM void ActorItemDrop::func_ov031_020fa424(ActorState state) { +ARM void ActorItemDrop::SetState(ActorState state) { #if IS_JP - if (this->mUnk_4C == ActorDroppedItemState_6 && state == ActorDroppedItemState_6) { + if (this->mState == ActorItemDropState_6 && state == ActorItemDropState_6) { return; } #endif - this->mUnk_4C = state; + this->mState = state; this->mUnk_44 = 0x9C; - CALL_PTMF(PTMF, data_ov031_02114be8[this->mUnk_4C]); + CALL_PTMF(PTMF, data_ov031_02114be8[this->mState]); } ARM void ActorItemDrop::func_ov031_020fa468() {} @@ -294,7 +294,7 @@ ARM void ActorItemDrop::func_ov031_020fa46c() { return; } - this->func_ov031_020fa424(ActorDroppedItemState_1); + this->SetState(ActorItemDropState_1); } ARM void ActorItemDrop::func_ov031_020fa494() { @@ -317,7 +317,7 @@ ARM void ActorItemDrop::func_ov031_020fa4a0() { return; } - this->func_ov031_020fa424(ActorDroppedItemState_2); + this->SetState(ActorItemDropState_2); } ARM void ActorItemDrop::func_ov031_020fa524() { @@ -374,7 +374,7 @@ ARM void ActorItemDrop::func_ov031_020fa5f0() { this->mVel.y = FLOAT_TO_FX32(0.0f); this->mVel.z = FLOAT_TO_FX32(0.0f); this->mUnk_B8 |= 0x1000; - this->func_ov031_020fa424(ActorDroppedItemState_1); + this->SetState(ActorItemDropState_1); } } @@ -402,7 +402,7 @@ ARM void ActorItemDrop::func_ov031_020fa678() { UnkActor_ov031_020fa678 *actor = (UnkActor_ov031_020fa678 *) gpActorManager->func_01fff3b4(this->mUnk_E0); if (actor == NULL) { - this->func_ov031_020fa424(ActorDroppedItemState_1); + this->SetState(ActorItemDropState_1); return; } @@ -410,13 +410,13 @@ ARM void ActorItemDrop::func_ov031_020fa678() { } ARM void ActorItemDrop::func_ov031_020fa6c8() { - this->mUnk_52 = FLOAT_TO_FX32(15.9998f); - this->mUnk_50 = FLOAT_TO_FX32(0.0f); - this->mVel.x = FLOAT_TO_FX32(0.0f); - this->mVel.y = FLOAT_TO_FX32(0.0f); - this->mVel.z = FLOAT_TO_FX32(0.0f); - this->mUnk_4A = 0x0; - this->mUnk_44 = 0x0; + this->mUnk_52 = FLOAT_TO_FX32(15.9998f); + this->mUnk_50 = FLOAT_TO_FX32(0.0f); + this->mVel.x = FLOAT_TO_FX32(0.0f); + this->mVel.y = FLOAT_TO_FX32(0.0f); + this->mVel.z = FLOAT_TO_FX32(0.0f); + this->mUnk_4A[0] = 0x0; + this->mUnk_44 = 0x0; this->mUnk_B4.func_ov000_02097bec(); UNSET_FLAG(this->mFlags, ActorFlag_Visible); @@ -493,15 +493,15 @@ ARM void ActorItemDrop::func_ov031_020fa900() { bool var_r3 = true; bool var_ip = true; - if (this->mUnk_4C != ActorDroppedItemState_3 && this->mUnk_4C != ActorDroppedItemState_4) { + if (this->mState != ActorItemDropState_3 && this->mState != ActorItemDropState_4) { var_ip = false; } - if (!var_ip && this->mUnk_4C != ActorDroppedItemState_5) { + if (!var_ip && this->mState != ActorItemDropState_5) { var_r3 = false; } - if (!var_r3 && this->mUnk_4C != ActorDroppedItemState_6) { + if (!var_r3 && this->mState != ActorItemDropState_6) { var_r2 = false; } @@ -526,36 +526,34 @@ ARM void ActorItemDrop::func_ov031_020fa900() { } } -ARM ActorDroppedItem_c4::ActorDroppedItem_c4(Actor *param_1) : +ARM ActorItemDrop_c4::ActorItemDrop_c4(Actor *param_1) : Actor_c4(param_1) { this->mUnk_20 = param_1; this->mUnk_04 = 0x1; } -#define GET_ACTOR_DROPPED_ITEM(pActor) ((ActorItemDrop *) (pActor)) - -ARM bool ActorDroppedItem_c4::vfunc_00(ActorRef ref, unk32 param_2) { +ARM bool ActorItemDrop_c4::vfunc_00(ActorRef ref, unk32 param_2) { if (param_2 != 0) { - ActorItemDrop *actorDroppedItem = GET_ACTOR_DROPPED_ITEM(this->mUnk_20); + ActorItemDrop *actorDroppedItem = this->GetActorPtr(); actorDroppedItem->mUnk_E0 = ref; - actorDroppedItem->func_ov031_020fa424(ActorDroppedItemState_4); + actorDroppedItem->SetState(ActorItemDropState_4); } return Actor_c4::vfunc_00(ref, param_2); } -ARM void ActorDroppedItem_c4::vfunc_04() { - GET_ACTOR_DROPPED_ITEM(this->mUnk_20)->func_ov031_020fa424(ActorDroppedItemState_5); +ARM void ActorItemDrop_c4::vfunc_04() { + this->GetActorPtr()->SetState(ActorItemDropState_5); Actor_c4::vfunc_04(); } -ARM void ActorDroppedItem_c4::vfunc_0c(unk32 param_1) { - GET_ACTOR_DROPPED_ITEM(this->mUnk_20)->func_ov031_020fa424(ActorDroppedItemState_1); +ARM void ActorItemDrop_c4::vfunc_0c(unk32 param_1) { + this->GetActorPtr()->SetState(ActorItemDropState_1); Actor_c4::vfunc_0c(param_1); } -ARM void ActorDroppedItem_c4::vfunc_08() { - GET_ACTOR_DROPPED_ITEM(this->mUnk_20)->func_ov031_020fa424(ActorDroppedItemState_6); +ARM void ActorItemDrop_c4::vfunc_08() { + this->GetActorPtr()->SetState(ActorItemDropState_6); Actor_c4::vfunc_08(); } diff --git a/src/031_Land/Actor/ActorRupee.cpp b/src/031_Land/Actor/ActorRupee.cpp index 13cf4165..b68e788c 100644 --- a/src/031_Land/Actor/ActorRupee.cpp +++ b/src/031_Land/Actor/ActorRupee.cpp @@ -78,9 +78,9 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { } if (this->mUnk_5C.mParams[1] == 0) { - this->func_ov031_020e9904(3); + this->SetState(ActorRupeeState_3); } else { - this->func_ov031_020e9904(10); + this->SetState(ActorRupeeState_10); } return true; @@ -97,7 +97,7 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { vel.z = 0; VecFx32_Copy(&vel, &this->mVel); } - this->func_ov031_020e9904(0); + this->SetState(ActorRupeeState_0); break; case 1: @@ -117,7 +117,7 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { VecFx32_Copy(&vel, &this->mVel); } - this->func_ov031_020e9904(0); + this->SetState(ActorRupeeState_0); break; case 2: @@ -132,14 +132,14 @@ ARM bool ActorRupee::vfunc_18(unk32 param1) { this->mVel.y = vel.y; this->mVel.z = vel.z; } - this->func_ov031_020e9904(0); + this->SetState(ActorRupeeState_0); break; case 3: break; case 4: - this->func_ov031_020e9904(10); + this->SetState(ActorRupeeState_10); break; default: @@ -173,7 +173,7 @@ ARM void ActorRupee::func_ov031_020e9068() { case RupeeId_BigGreen: case RupeeId_BigRed: case RupeeId_Gold: - this->func_ov031_020e9904(5); + this->SetState(ActorRupeeState_5); break; default: { ItemManager *pItemManager = data_027e0ce0->mUnk_2C; @@ -229,7 +229,7 @@ ARM void ActorRupee::func_ov031_020e91a8() { return; } - this->func_ov031_020e9904(2); + this->SetState(ActorRupeeState_2); } ARM void ActorRupee::func_ov031_020e9234() { @@ -259,7 +259,7 @@ ARM void ActorRupee::func_ov031_020e9254() { return; } - this->func_ov031_020e9904(2); + this->SetState(ActorRupeeState_2); } ARM void ActorRupee::func_ov031_020e92e0() { @@ -314,7 +314,7 @@ ARM void ActorRupee::func_ov031_020e9310() { return; } - this->func_ov031_020e9904(1); + this->SetState(ActorRupeeState_1); } ARM void ActorRupee::func_ov031_020e9428() {} @@ -343,17 +343,17 @@ ARM void ActorRupee::func_ov031_020e9450() { this->mVel.y = 0; this->mVel.z = 0; this->mUnk_A0 |= 0x1000; - this->func_ov031_020e9904(0); + this->SetState(ActorRupeeState_0); } ARM void ActorRupee::func_ov031_020e94d4() { - this->mUnk_52 = -1; - this->mUnk_50 = 0; - this->mVel.x = 0; - this->mVel.y = 0; - this->mVel.z = 0; - this->mUnk_4A = 0; - this->mUnk_44 = 0; + this->mUnk_52 = -1; + this->mUnk_50 = 0; + this->mVel.x = 0; + this->mVel.y = 0; + this->mVel.z = 0; + this->mUnk_4A[0] = 0; + this->mUnk_44 = 0; this->mUnk_9C.func_ov000_02097bec(); UNSET_FLAG(this->mFlags, ActorFlag_Visible); } @@ -407,7 +407,7 @@ ARM void ActorRupee::func_ov031_020e95c0() { pActor = gpActorManager->func_01fff3b4(this->mUnk_C0); if (pActor == NULL) { - this->func_ov031_020e9904(0); + this->SetState(ActorRupeeState_0); return; } @@ -435,10 +435,10 @@ ARM void ActorRupee::func_ov031_020e9638() { this->mUnk_C4.mUnk_04 = 0; if (this->mUnk_5C.mParams[1] == 2) { - this->mUnk_4A = 1; + this->mUnk_4A[0] = 1; data_027e0cec->func_ov000_0209ff8c(&this->mUnk_F0, 0xD00C, &this->mPos, 2); } else { - this->mUnk_4A = 0; + this->mUnk_4A[0] = 0; } this->mPos.y -= FLOAT_TO_FX32(1.2); @@ -454,7 +454,7 @@ ARM void ActorRupee::func_ov031_020e96bc() { return; } - this->func_ov031_020e9904(0xB); + this->SetState(ActorRupeeState_11); } ARM void ActorRupee::func_ov031_020e970c() { @@ -462,9 +462,9 @@ ARM void ActorRupee::func_ov031_020e970c() { this->mVel.y = 0; this->mVel.z = 0; SET_FLAG(this->mFlags, ActorFlag_Visible); - this->mUnk_4A = 1; - this->mUnk_52 = -1; - this->mUnk_50 = 0; + this->mUnk_4A[0] = 1; + this->mUnk_52 = -1; + this->mUnk_50 = 0; } // non-matching @@ -487,12 +487,12 @@ ARM void ActorRupee::func_ov031_020e9740() { this->mUnk_52 = -1; this->mUnk_50 = 0; } else if (this->mUnk_50 == 8) { - this->func_ov031_020e9904(0xC); + this->SetState(ActorRupeeState_12); } } else { temp_r0 = data_027e0cd8->mUnk_0C; this->mPos.y = temp_r0->vfunc_28(&this->mUnk_5C.mInitialPos, 0, 0); - this->func_ov031_020e9904(0xC); + this->SetState(ActorRupeeState_12); } if (this->mUnk_50 < this->mUnk_52) { @@ -518,45 +518,22 @@ ARM void ActorRupee::func_ov031_020e98c4() { func_01ffedac(&sp0, &this->mPos); func_ov031_0210b0e4(sp0, 1); - this->func_ov031_020e9904(1); + this->SetState(ActorRupeeState_1); } -typedef void (*UnkCallback_ov031_02113520)(void *); -struct UnkStruct_ov031_02113520 { - /* 00 */ UnkCallback_ov031_02113520 mUnk_00; - /* 04 */ unk32 mUnk_04; - /* 08 */ -}; -extern UnkStruct_ov031_02113520 data_ov031_02113520[13]; +extern PTMF data_ov031_02113520[13]; -// non-matching -ARM void ActorRupee::func_ov031_020e9904(unk32 param1) { - this->mUnk_4C = param1; +ARM void ActorRupee::SetState(ActorState state) { + this->mState = state; this->mUnk_52 = -1; this->mUnk_50 = 0; this->mUnk_EC = 0; - u32 uVar1 = data_ov031_02113520[this->mUnk_4C].mUnk_04; - UnkCallback_ov031_02113520 pcVar2; - - if (!(uVar1 & 1)) { - pcVar2 = data_ov031_02113520[this->mUnk_4C].mUnk_00; - } else { - pcVar2 = (UnkCallback_ov031_02113520) (((u32) this + uVar1 >> 1) + &data_ov031_02113520[this->mUnk_4C]); - } - - pcVar2(this); + CALL_PTMF(PTMF, data_ov031_02113520[this->mState]); } extern "C" void func_01fff17c(unk16 *, UnkStruct_027e0ce0 *, unk32); extern "C" void func_02018114(unk16 *, unk32); -typedef void (*UnkCallback_vfunc_20)(VecFx32 *); - -struct UnkStruct_ov031_02113588 { - /* 00 */ UnkCallback_vfunc_20 callback; - /* 04 */ unk32 mUnk_04; - /* 08 */ -}; -extern UnkStruct_ov031_02113588 data_ov031_02113588[13]; +extern PTMF data_ov031_02113588[13]; // non-matching ARM void ActorRupee::vfunc_20() { @@ -565,7 +542,6 @@ ARM void ActorRupee::vfunc_20() { unk16 uVar3; int iVar4; u32 uVar5; - UnkCallback_vfunc_20 pcVar6; int iVar7; int iVar8; unk16 uStack_16; @@ -592,12 +568,12 @@ ARM void ActorRupee::vfunc_20() { uStack_16 = 0; this->mUnk_C4.mUnk_0E = 0; this->mUnk_C4.mUnk_10 = 0x666; - sVar1 = this->mUnk_4C; + sVar1 = this->mState; test = this->mPos; - if (sVar1 != 5) { - iVar4 = (int) (short) this->mUnk_4C; + if (sVar1 != ActorRupeeState_5) { + iVar4 = (int) (short) this->mState; } this->mUnk_C4.mUnk_12 = 0; @@ -606,8 +582,8 @@ ARM void ActorRupee::vfunc_20() { uVar3 = uVar2; - if ((sVar1 != 5 && iVar4 != 10) && iVar4 != 0xb) { - if ((sVar1 != 6) && ((u16) this->mUnk_98 < (u16) this->mUnk_9A)) { + if ((sVar1 != ActorRupeeState_5 && iVar4 != ActorRupeeState_10) && iVar4 != ActorRupeeState_11) { + if ((sVar1 != ActorRupeeState_6) && ((u16) this->mUnk_98 < (u16) this->mUnk_9A)) { this->mUnk_98++; } @@ -633,7 +609,7 @@ ARM void ActorRupee::vfunc_20() { case 0x0C: this->mUnk_BC = this->mUnk_A8; this->mUnk_A0 &= 0xffffefff; - this->func_ov031_020e9904(6); + this->SetState(ActorRupeeState_6); uVar3 = uStack_18; break; default: @@ -643,27 +619,16 @@ ARM void ActorRupee::vfunc_20() { } } - uStack_18 = uVar3; - iVar4 = (int) (short) this->mUnk_4C; - // uVar5 = *(u32 *) (data_ov031_0211358c[iVar4 * 8]); + CALL_PTMF(PTMF, data_ov031_02113588[this->mState]); - if (!(uVar5 & 1)) { - data_ov031_02113588[iVar4 * 2].callback(NULL); - } else { - this->vfunc_00(NULL); - // pcVar6 = *(code **) (*(int *) ((int) &this->vtable + ((int) uVar5 >> 1)) + (&data_ov031_02113588)[iVar4 * 2]); - } - - // (*pcVar6)(); - - if ((this->mUnk_5C.mUnk_24 < 0) && (this->mUnk_4C != 5)) { + if (this->mUnk_5C.mUnk_24 < 0 && this->mState != ActorRupeeState_5) { this->func_ov031_020e9d94(); } if (this->mUnk_5C.mParams[1] != 0) { - sVar1 = this->mUnk_4C; + sVar1 = this->mState; - if (!(sVar1 != 10 && sVar1 != 0xb && sVar1 != 0xc)) { + if (!(sVar1 != ActorRupeeState_10 && sVar1 != ActorRupeeState_11 && sVar1 != ActorRupeeState_12)) { func_01ffedac(&uStack_1e, &this->mPos); func_ov031_0210b0e4(uStack_1e, 0); } else { @@ -728,7 +693,7 @@ ARM void ActorRupee::vfunc_2c(unk32 param1) { uVar2 = 0x4CD; } - if (this->mUnk_4C != 9) { + if (this->mState != ActorRupeeState_9) { iStack_28.x = this->mPos.x; iStack_28.y = this->mPos.y + 0x80; iStack_28.z = this->mPos.z; @@ -816,7 +781,7 @@ ARM bool ActorRupee::func_ov031_020e9e5c() { bool bVar6; bool bVar7; - sVar1 = this->mUnk_4C; + sVar1 = this->mState; bVar6 = true; bVar5 = true; bVar4 = true; @@ -824,33 +789,31 @@ ARM bool ActorRupee::func_ov031_020e9e5c() { bVar2 = true; bVar7 = true; bVar8 = true; - if ((sVar1 != 6 && sVar1 != 7)) { + if ((sVar1 != ActorRupeeState_6 && sVar1 != ActorRupeeState_7)) { bVar2 = false; } - if ((!bVar2) && (sVar1 != 3)) { + if ((!bVar2) && (sVar1 != ActorRupeeState_3)) { bVar8 = false; } - if ((!bVar8) && (sVar1 != 8)) { + if ((!bVar8) && (sVar1 != ActorRupeeState_8)) { bVar3 = false; } - if ((!bVar3) && (sVar1 != 9)) { + if ((!bVar3) && (sVar1 != ActorRupeeState_9)) { bVar4 = false; } - if ((!bVar4) && (sVar1 != 10)) { + if ((!bVar4) && (sVar1 != ActorRupeeState_10)) { bVar5 = false; } - if ((!bVar5) && (sVar1 != 0xb)) { + if ((!bVar5) && (sVar1 != ActorRupeeState_11)) { bVar6 = false; } - if (!(bVar6) && (sVar1 != 0xc)) { + if (!(bVar6) && (sVar1 != ActorRupeeState_12)) { bVar7 = false; } return bVar7; } -#define GET_ACTOR_RUPEE(pActor) ((ActorRupee *) (pActor)) - ARM ActorRupee_c4::ActorRupee_c4(Actor *param1) : Actor_c4(param1) { this->mUnk_20 = param1; @@ -859,26 +822,26 @@ ARM ActorRupee_c4::ActorRupee_c4(Actor *param1) : ARM bool ActorRupee_c4::vfunc_00(ActorRef ref, unk32 param2) { if (param2 != 0) { - ActorRupee *pRupee = GET_ACTOR_RUPEE(this->mUnk_20); + ActorRupee *pRupee = this->GetActorPtr(); pRupee->mUnk_C0 = ref.Get32(); - pRupee->func_ov031_020e9904(7); + pRupee->SetState(ActorRupeeState_7); } return this->Actor_c4::vfunc_00(ref, param2); } ARM void ActorRupee_c4::vfunc_04() { - GET_ACTOR_RUPEE(this->mUnk_20)->func_ov031_020e9904(8); + this->GetActorPtr()->SetState(ActorRupeeState_8); this->Actor_c4::vfunc_04(); } ARM void ActorRupee_c4::vfunc_0c(unk32 param1) { - GET_ACTOR_RUPEE(this->mUnk_20)->func_ov031_020e9904(1); + this->GetActorPtr()->SetState(ActorRupeeState_1); this->Actor_c4::vfunc_0c(param1); } ARM void ActorRupee_c4::vfunc_08() { - GET_ACTOR_RUPEE(this->mUnk_20)->func_ov031_020e9068(); + this->GetActorPtr()->func_ov031_020e9068(); this->Actor_c4::vfunc_08(); } diff --git a/src/031_Land/MapObject/MapObjectChestBase.cpp b/src/031_Land/MapObject/MapObjectChestBase.cpp index 44c9fafe..512cf334 100644 --- a/src/031_Land/MapObject/MapObjectChestBase.cpp +++ b/src/031_Land/MapObject/MapObjectChestBase.cpp @@ -21,7 +21,7 @@ struct UnkStruct_ov031_02117c84 { static const Vec2pCpp data_ov031_02115830(0x800, 0x800); static const UnkStruct_ov031_02117c84 data_ov031_02117c84(0x3C); -static const UnkSubStruct19 data_ov031_02115c84; +static const CellAnimObject data_ov031_02115c84; ARM MapObjectTreasureSpawned_74::MapObjectTreasureSpawned_74(G3d_Model *param1) : ModelRender(param1), diff --git a/src/031_Land/MapObject/MapObjectDoorBase.cpp b/src/031_Land/MapObject/MapObjectDoorBase.cpp index 840580f7..763b20df 100644 --- a/src/031_Land/MapObject/MapObjectDoorBase.cpp +++ b/src/031_Land/MapObject/MapObjectDoorBase.cpp @@ -486,8 +486,8 @@ ARM void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) { this->vfunc_7C(); if (this->mUnk_8A && this->mUnk_86 && param2 == 0) { - unk32 var_r5 = 1; - unk32 var_r1_2 = 2; + u16 var_r5 = 1; + s16 var_r1_2 = 2; if (this->IsOrientedVertically()) { var_r1_2 = -1; @@ -498,7 +498,7 @@ ARM void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) { } if (this->mUnk_87) { - unk32 sp8; + ActorRef sp8; MapObject::func_ov000_0209d54c(&sp8, this, 1, &this->mPos, var_r1_2, var_r5); } } diff --git a/src/041_MapB2/Actor/ActorUnkKEYT.cpp b/src/041_MapB2/Actor/ActorUnkKEYT.cpp index efb4ee01..93c75242 100644 --- a/src/041_MapB2/Actor/ActorUnkKEYT.cpp +++ b/src/041_MapB2/Actor/ActorUnkKEYT.cpp @@ -18,7 +18,7 @@ ARM void ActorUnkKEYT::func_ov041_02123c7c(void) {} ARM void ActorUnkKEYT::func_ov041_02123cf8(void) {} ARM void ActorUnkKEYT::func_ov041_02123d40(void) {} ARM void ActorUnkKEYT::func_ov041_02123d88(void) {} -ARM void ActorUnkKEYT::func_ov041_02123eb8(void) {} +ARM bool ActorUnkKEYT::Grab(ActorGrabParams grabParams) {} ARM void ActorUnkKEYT::func_ov041_02123ff8(void) {} ARM void ActorUnkKEYT::func_ov041_02124094(void) {} ARM void ActorUnkKEYT::func_ov041_021240c0(void) {} diff --git a/src/110_PlayerGet/PlayerGet.cpp b/src/110_PlayerGet/PlayerGet.cpp index 055ae7cf..e26d63cd 100644 --- a/src/110_PlayerGet/PlayerGet.cpp +++ b/src/110_PlayerGet/PlayerGet.cpp @@ -500,21 +500,21 @@ ARM bool PlayerGet::func_ov110_02186b8c() { ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) { ItemId itemId; ItemManager *pItemManager; - Actor *iVar10; + Actor *pActor; VecFx32 *pUnk_38; VecFx32 *pUnk_3c; switch (param1->mUnk_04) { case 0x39: VecFx32 temp; - itemId = param1->mUnk_1C; - temp.x = param1->mUnk_10.x; - temp.y = param1->mUnk_10.y; - temp.z = param1->mUnk_10.z; - this->mUnk_54.mUnk_08 = temp.z; - this->mUnk_54.mUnk_00_s32 = temp.x; - this->mUnk_54.mUnk_04_s32 = temp.y; - pItemManager = this->mUnk_28->pItemManager; + itemId = param1->mUnk_1C; + temp.x = param1->mUnk_10.x; + temp.y = param1->mUnk_10.y; + temp.z = param1->mUnk_10.z; + this->mUnk_54.mUnk_08 = temp.z; + this->mUnk_54.mUnk_00.data = temp.x; + this->mUnk_54.mUnk_04.data = temp.y; + pItemManager = this->mUnk_28->pItemManager; switch (itemId) { case ItemId_BombBag: @@ -560,19 +560,19 @@ ARM void PlayerGet::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1) { pUnk_3c->y = 0; pUnk_3c->z = 0; - if (((u32) (u16) this->mUnk_54.mUnk_00_s16 << 16) >> 30 != 1) { + if (this->mUnk_54.mUnk_04.type != ActorRefType_1) { return; } - iVar10 = gpActorManager->func_01fff3b4(*(u32 *) this->mUnk_54.mUnk_00); + pActor = gpActorManager->func_01fff3b4(this->mUnk_54.mUnk_00); - if (iVar10 == NULL) { + if (pActor == NULL) { return; } - if (iVar10->GetActorId() == ActorId_NormalShield) { - UNSET_FLAG(iVar10->mFlags, ActorFlag_Visible); - iVar10->mUnk_4A = 0; + if (pActor->GetActorId() == ActorId_NormalShield) { + UNSET_FLAG(pActor->mFlags, ActorFlag_Visible); + pActor->mUnk_4A[0] = 0; } break; case 0x3A: @@ -857,8 +857,8 @@ ARM void PlayerGet::vfunc_10(unk32 param1, unk32 param2) { case ItemId_AncientShield: this->mUnk_30->func_ov000_020936ec(); - if (((*(u16 *) this->mUnk_54.mUnk_00 << 0x10) >> 0x1E) == 1) { - temp_r0_3 = (ActorUnkNSHD *) gpActorManager->func_01fff3b4(*(u32 *) this->mUnk_54.mUnk_00); + if (this->mUnk_54.mUnk_04.type == ActorRefType_1) { + temp_r0_3 = (ActorUnkNSHD *) gpActorManager->func_01fff3b4(this->mUnk_54.mUnk_00); if ((temp_r0_3 != NULL) && (temp_r0_3->GetActorId() == ActorId_NormalShield)) { if (this->func_ov110_02186b8c()) { @@ -896,10 +896,10 @@ ARM void PlayerGet::vfunc_10(unk32 param1, unk32 param2) { break; } - if (*(u16 *) this->mUnk_54.mUnk_00 == 0x1000) { + if (this->mUnk_54.mUnk_00.type_index == REF_TYPE_INDEX(ActorRefType_0, 0x1000)) { Vec2b stack; - stack.x = this->mUnk_54.mUnk_00[0]; - stack.y = this->mUnk_54.mUnk_00[1]; + stack.x = this->mUnk_54.mUnk_00.type_index; + stack.y = this->mUnk_54.mUnk_00.unk_id; MapObject *pMapObj = gpMapObjManager->func_01fff498(stack); @@ -954,9 +954,8 @@ ARM void PlayerGet::vfunc_10(unk32 param1, unk32 param2) { break; } - if ((((u32) (*(u16 *) this->mUnk_54.mUnk_04 << 0x10) >> 0x1E) == 1) && - (data_027e09b8->func_ov000_020732dc(2) != 0)) { - *(u32 *) this->mUnk_04.mUnk_00 = *(u32 *) this->mUnk_54.mUnk_04; + if (this->mUnk_54.mUnk_04.type == ActorRefType_1 && data_027e09b8->func_ov000_020732dc(2) != 0) { + this->mUnk_04.mUnk_00 = this->mUnk_54.mUnk_04; this->mUnk_30->func_ov000_020921e4(0x57); break; } diff --git a/src/112_PlayerSceneChange/PlayerSceneChange.cpp b/src/112_PlayerSceneChange/PlayerSceneChange.cpp index 39ef70c9..40090d9f 100644 --- a/src/112_PlayerSceneChange/PlayerSceneChange.cpp +++ b/src/112_PlayerSceneChange/PlayerSceneChange.cpp @@ -1,6 +1,6 @@ #include "Player/PlayerSceneChange.hpp" #include "Actor/ActorManager.hpp" -#include "Actor/ActorUnk_ov000_020a8bb0.hpp" +#include "Actor/Actor_Derived1.hpp" #include "MapObject/MapObjectManager.hpp" #include "MapObject/MapObjectUnkDRTY.hpp" #include "Unknown/UnkStruct_027e09b8.hpp" @@ -145,8 +145,8 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1 this->mUnk_70.z = temp_r8->z + MUL_FX32(data_0203f964[1], FLOAT_TO_FX32(2.0f)); break; default: - if (this->mUnk_2C->mUnk_150 == 0x1000) { - stack2.y = this->mUnk_2C->mUnk_150 >> 0x10; + if (this->mUnk_2C->mUnk_150.type_index == 0x1000) { + stack2.y = this->mUnk_2C->mUnk_150.type_index; stack2.x = 0; MapObjectUnkDRTY *pDRTY = (MapObjectUnkDRTY *) gpMapObjManager->func_01fff498(stack2); @@ -174,9 +174,9 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1 } } } else { - if (((u32) ((u16) this->mUnk_2C->mUnk_150 << 0x10) >> 0x1E) == 1) { - ActorUnk_ov000_020a8bb0 *temp_r0_6 = - (ActorUnk_ov000_020a8bb0 *) gpActorManager->func_01fff3b4(this->mUnk_2C->mUnk_150); + if (this->mUnk_2C->mUnk_150.type == ActorRefType_1) { + Actor_Derived1 *temp_r0_6 = + (Actor_Derived1 *) gpActorManager->func_01fff3b4(this->mUnk_2C->mUnk_150); if (temp_r0_6 != NULL) { this->mUnk_70.x = temp_r0_6->mPos.x; @@ -184,9 +184,9 @@ ARM void PlayerSceneChange::vfunc_0c(UnkStruct_PlayerGet_vfunc_0c_param1 *param1 this->mUnk_70.z = temp_r0_6->mPos.z; if (temp_r0_6->GetActorId() == ActorId_GTTG) { - this->mUnk_90 = temp_r0_6->mRef.index; - this->mUnk_AA = temp_r0_6->mAngle; - this->mUnk_A8 = temp_r0_6->mAngle; + this->mUnk_90.type_index = temp_r0_6->mRef.type_index; + this->mUnk_AA = temp_r0_6->mAngle; + this->mUnk_A8 = temp_r0_6->mAngle; } } } diff --git a/src/ITCM/ITCM_ActorManager.cpp b/src/ITCM/ITCM_ActorManager.cpp new file mode 100644 index 00000000..b47f4af6 --- /dev/null +++ b/src/ITCM/ITCM_ActorManager.cpp @@ -0,0 +1,16 @@ +#include "Actor/ActorManager.hpp" + +Actor *ActorManager::func_01fff3b4(ActorRef ref) { + if (ref.type == 1) { + int size = this->mActorTableEnd - this->mActorTable; + Actor *pActor; + + // Affectation directement dans la condition + if (size != 0 && (pActor = this->mActorTable[ref.index]) != NULL) { + if (pActor->IsAlive() && pActor->mRef == ref) { + return pActor; + } + } + } + return NULL; +} diff --git a/src/Main/Game/Game.cpp b/src/Main/Game/Game.cpp index ca5d2de0..dddb585a 100644 --- a/src/Main/Game/Game.cpp +++ b/src/Main/Game/Game.cpp @@ -36,7 +36,7 @@ ARM void Game::Run() { { UnkDataStruct2 local_28(0x1300); - this->mpSaveFile = (SaveFile *) local_28.unk_00; + this->mpSaveSlot = (SaveSlot *) local_28.unk_00; if (this->mpCurrentGameMode != NULL) { delete this->mpCurrentGameMode; @@ -49,7 +49,7 @@ ARM void Game::Run() { this->mpCurrentGameMode = this->createCallback(); this->createCallback = NULL; this->mpCurrentGameMode->vfunc_08(); - this->mpSaveFile = NULL; + this->mpSaveSlot = NULL; } data_0204999c.func_02013070(); diff --git a/tools/configure.py b/tools/configure.py index c41d64c6..bf9b74e2 100755 --- a/tools/configure.py +++ b/tools/configure.py @@ -135,6 +135,7 @@ config.libs = [ GameLib( "ITCM", [ + Object("ITCM/ITCM_ActorManager.cpp"), Object("ITCM/ITCM_MapObjectManager.cpp"), ] ), @@ -179,7 +180,7 @@ config.libs = [ Object("000_Second/MapObject/MapObjectMiniBlocks.cpp"), Object("000_Second/Cutscene/Cutscene.cpp"), Object("000_Second/Item/ItemManager.cpp"), - Object("000_Second/Actor/ActorUnk_ov000_020a8bb0.cpp"), + Object("000_Second/Actor/Actor_Derived1.cpp"), Object("000_Second/Item/TreasureManager.cpp"), ] ), @@ -193,6 +194,7 @@ config.libs = [ Object("001_SceneInit/UnkStruct_027e0cf8_08_00_001.cpp"), Object("001_SceneInit/Game/AdventureModeManager_001.cpp"), Object("001_SceneInit/Game/GameModeAdventure_001.cpp"), + Object("001_SceneInit/Save/SaveManager_001.cpp"), ] ), GameLib( @@ -290,8 +292,8 @@ config.libs = [ Object("024_MainGame/Train/UnkTrainSystem2_024.cpp"), Object("024_MainGame/Unknown/UnkStruct_027e0d08_024.cpp"), Object("024_MainGame/MiscAdvManager.cpp"), - Object("024_MainGame/Actor/ActorUnk_ov000_020a8bb0_EC_024.cpp"), - Object("024_MainGame/Train/data_ov024_020d8550.cpp", extra_cflags=["-ipa file", "-enc shift-jis"]), + Object("024_MainGame/Actor/Actor_Derived1_EC_024.cpp"), + Object("024_MainGame/Train/data_ov024_020d8550.cpp"), Object("024_MainGame/Actor/ActorUnkOBPC.cpp"), ] ), @@ -306,6 +308,7 @@ config.libs = [ GameLib( "Overlay 26", [ + Object("026_Train/code_02102924.cpp"), Object("026_Train/Actor/ActorUnkBDEM.cpp"), Object("026_Train/Actor/ActorUnkCNBL.cpp"), Object("026_Train/Actor/ActorUnkDKCL.cpp"),