summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2025-01-21 20:24:28 +0100
committerAetias <aetias@outlook.com>2025-01-21 20:24:28 +0100
commitaf097b91d7ad589ee017841b474faee89d1999af (patch)
treefd947f2a1d5c5034382f9a04f87c99d4cfc1f020
parent7a2009cab93127754c636199e29cab1a886ceef2 (diff)
Move ov000 documentation from Ghidra
-rw-r--r--config/eur/arm9/overlays/ov000/symbols.txt244
-rw-r--r--config/usa/arm9/overlays/ov000/symbols.txt244
-rw-r--r--include/DTCM/UnkStruct_027e0fd4.hpp130
-rw-r--r--include/Player/HealthManager.hpp5
-rw-r--r--include/Player/LinkStateCutscene.hpp38
-rw-r--r--include/Player/PlayerControl.hpp6
-rw-r--r--include/Player/PlayerControlData.hpp44
-rw-r--r--src/00_Core/DTCM/UnkStruct_027e0fd4.cpp37
-rw-r--r--src/00_Core/Player/HealthManager.cpp5
-rw-r--r--src/00_Core/Player/LinkStateCutscene.cpp37
-rw-r--r--src/00_Core/Player/PlayerControlData.cpp37
-rw-r--r--src/00_Core/Player/PlayerControl_2.cpp7
12 files changed, 590 insertions, 244 deletions
diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt
index e6882143..259c08be 100644
--- a/config/eur/arm9/overlays/ov000/symbols.txt
+++ b/config/eur/arm9/overlays/ov000/symbols.txt
@@ -2251,43 +2251,43 @@ func_ov000_020b1ba4 kind:function(arm,size=0x58) addr:0x20b1ba4
func_ov000_020b1bfc kind:function(arm,size=0x140) addr:0x20b1bfc
func_ov000_020b1d3c kind:function(arm,size=0x34) addr:0x20b1d3c
func_ov000_020b1d70 kind:function(arm,size=0xa8) addr:0x20b1d70
-func_ov000_020b1e18 kind:function(arm,size=0x54) addr:0x20b1e18
-func_ov000_020b1e6c kind:function(thumb,size=0x4) addr:0x20b1e6c
-func_ov000_020b1e70 kind:function(arm,size=0x28) addr:0x20b1e70
-func_ov000_020b1e98 kind:function(arm,size=0x20) addr:0x20b1e98
-func_ov000_020b1eb8 kind:function(arm,size=0x34) addr:0x20b1eb8
-func_ov000_020b1eec kind:function(arm,size=0x58) addr:0x20b1eec
-func_ov000_020b1f44 kind:function(thumb,size=0x168) addr:0x20b1f44
-func_ov000_020b20ac kind:function(arm,size=0x3f4) addr:0x20b20ac
-func_ov000_020b24a0 kind:function(arm,size=0x60) addr:0x20b24a0
-func_ov000_020b2500 kind:function(arm,size=0x8) addr:0x20b2500
-func_ov000_020b2508 kind:function(arm,size=0x4c) addr:0x20b2508
-func_ov000_020b2554 kind:function(arm,size=0x14) addr:0x20b2554
-func_ov000_020b2568 kind:function(arm,size=0x30) addr:0x20b2568
-func_ov000_020b2598 kind:function(arm,size=0x60c) addr:0x20b2598
-func_ov000_020b2ba4 kind:function(arm,size=0x140) addr:0x20b2ba4
-func_ov000_020b2ce4 kind:function(arm,size=0xc) addr:0x20b2ce4
-func_ov000_020b2cf0 kind:function(arm,size=0x70) addr:0x20b2cf0
-func_ov000_020b2d60 kind:function(arm,size=0x2c) addr:0x20b2d60
-func_ov000_020b2d8c kind:function(arm,size=0xf8) addr:0x20b2d8c
-func_ov000_020b2e84 kind:function(arm,size=0x30) addr:0x20b2e84
-func_ov000_020b2eb4 kind:function(arm,size=0x80) addr:0x20b2eb4
-func_ov000_020b2f34 kind:function(arm,size=0x14) addr:0x20b2f34
-func_ov000_020b2f48 kind:function(arm,size=0x28) addr:0x20b2f48
-func_ov000_020b2f70 kind:function(arm,size=0x2c) addr:0x20b2f70
-func_ov000_020b2f9c kind:function(arm,size=0x10) addr:0x20b2f9c
-func_ov000_020b2fac kind:function(arm,size=0x78) addr:0x20b2fac
-func_ov000_020b3024 kind:function(arm,size=0x38) addr:0x20b3024
-func_ov000_020b305c kind:function(arm,size=0x40) addr:0x20b305c
-func_ov000_020b309c kind:function(arm,size=0x48) addr:0x20b309c
-func_ov000_020b30e4 kind:function(arm,size=0x194) addr:0x20b30e4
-func_ov000_020b3278 kind:function(arm,size=0x360) addr:0x20b3278
-func_ov000_020b35d8 kind:function(arm,size=0x304) addr:0x20b35d8
-func_ov000_020b38dc kind:function(arm,size=0x490) addr:0x20b38dc
-func_ov000_020b3d6c kind:function(arm,size=0x78) addr:0x20b3d6c
-func_ov000_020b3de4 kind:function(arm,size=0x94) addr:0x20b3de4
-func_ov000_020b3e78 kind:function(arm,size=0x1c) addr:0x20b3e78
-func_ov000_020b3e94 kind:function(arm,size=0x14) addr:0x20b3e94
+IsXzDistWithin kind:function(arm,size=0x54) addr:0x20b1e18
+_ZN17LinkStateCutscene8vfunc_00Ev kind:function(thumb,size=0x4) addr:0x20b1e6c
+_ZN24UnkStruct_ov004_0210abb88vfunc_08Ei kind:function(arm,size=0x28) addr:0x20b1e70
+_ZN17LinkStateCutscene19func_ov000_020b1e98Ei kind:function(arm,size=0x20) addr:0x20b1e98
+_ZN17LinkStateCutscene19func_ov000_020b1eb8Ev kind:function(arm,size=0x34) addr:0x20b1eb8
+_ZN17LinkStateCutscene19func_ov000_020b1eecEv kind:function(arm,size=0x58) addr:0x20b1eec
+_ZN17LinkStateCutscene20CreateDebugHierarchyEv kind:function(thumb,size=0x168) addr:0x20b1f44
+_ZN17LinkStateCutscene12OnStateEnterEv kind:function(arm,size=0x3f4) addr:0x20b20ac
+_ZN17LinkStateCutscene12OnStateLeaveEi kind:function(arm,size=0x60) addr:0x20b24a0
+_ZN17LinkStateCutscene5GetIdEv kind:function(arm,size=0x8) addr:0x20b2500
+_ZN17LinkStateCutscene8vfunc_1cEv kind:function(arm,size=0x4c) addr:0x20b2508
+_ZN17LinkStateCutscene20StopVerticalVelocityEv kind:function(arm,size=0x14) addr:0x20b2554
+_ZN17LinkStateCutscene19func_ov000_020b2568Ev kind:function(arm,size=0x30) addr:0x20b2568
+_ZN17LinkStateCutscene19func_ov000_020b2598Ev kind:function(arm,size=0x60c) addr:0x20b2598
+_ZN17LinkStateCutscene19func_ov000_020b2ba4Ev kind:function(arm,size=0x140) addr:0x20b2ba4
+_ZN17LinkStateCutscene19func_ov000_020b2ce4Eis kind:function(arm,size=0xc) addr:0x20b2ce4
+_ZN17LinkStateCutscene19func_ov000_020b2cf0Ev kind:function(arm,size=0x70) addr:0x20b2cf0
+_ZN17LinkStateCutscene19func_ov000_020b2d60Ev kind:function(arm,size=0x2c) addr:0x20b2d60
+_ZN17LinkStateCutscene19func_ov000_020b2d8cEv kind:function(arm,size=0xf8) addr:0x20b2d8c
+_ZN17LinkStateCutscene19func_ov000_020b2e84Ev kind:function(arm,size=0x30) addr:0x20b2e84
+_ZN17LinkStateCutscene8vfunc_24Ei kind:function(arm,size=0x80) addr:0x20b2eb4
+_ZN17LinkStateCutscene8vfunc_28Ev kind:function(arm,size=0x14) addr:0x20b2f34
+_ZN17LinkStateCutscene19func_ov000_020b2f48Eii kind:function(arm,size=0x28) addr:0x20b2f48
+_ZN17LinkStateCutscene19func_ov000_020b2f70EiPvPi kind:function(arm,size=0x2c) addr:0x20b2f70
+_ZN17LinkStateCutscene17ChangeToMoveStateEv kind:function(arm,size=0x10) addr:0x20b2f9c
+_ZN17LinkStateCutscene19func_ov000_020b2facEv kind:function(arm,size=0x78) addr:0x20b2fac
+_ZN17LinkStateCutscene19func_ov000_020b3024EP5Vec3pi kind:function(arm,size=0x38) addr:0x20b3024
+_ZN17LinkStateCutscene19func_ov000_020b305cEP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x20b305c
+_ZN17LinkStateCutscene19func_ov000_020b309cEP5Vec3p kind:function(arm,size=0x48) addr:0x20b309c
+_ZN17LinkStateCutscene19func_ov000_020b30e4Ejii kind:function(arm,size=0x194) addr:0x20b30e4
+_ZN17LinkStateCutscene19func_ov000_020b3278EiPi kind:function(arm,size=0x360) addr:0x20b3278
+_ZN17LinkStateCutscene19func_ov000_020b35d8Eii kind:function(arm,size=0x304) addr:0x20b35d8
+_ZN17LinkStateCutscene19func_ov000_020b38dcEjj kind:function(arm,size=0x490) addr:0x20b38dc
+_ZN17LinkStateCutscene8vfunc_40Ev kind:function(arm,size=0x78) addr:0x20b3d6c
+_ZN17LinkStateCutscene8vfunc_38Ev kind:function(arm,size=0x94) addr:0x20b3de4
+_ZN24UnkStruct_ov004_0210abb8D1Ev kind:function(arm,size=0x1c) addr:0x20b3e78
+_ZN24UnkStruct_ov004_0210abb8D0Ev kind:function(arm,size=0x14) addr:0x20b3e94
func_ov000_020b3ea8 kind:function(thumb,size=0x4) addr:0x20b3ea8
func_ov000_020b3eac kind:function(arm,size=0x18) addr:0x20b3eac
func_ov000_020b3ec4 kind:function(arm,size=0x24) addr:0x20b3ec4
@@ -2307,84 +2307,84 @@ func_ov000_020b4274 kind:function(arm,size=0x2c) addr:0x20b4274
func_ov000_020b42a0 kind:function(arm,size=0xe4) addr:0x20b42a0
func_ov000_020b4384 kind:function(arm,size=0x6c) addr:0x20b4384
func_ov000_020b43f0 kind:function(arm,size=0x4c) addr:0x20b43f0
-func_ov000_020b443c kind:function(arm,size=0x4) addr:0x20b443c
-func_ov000_020b4440 kind:function(arm,size=0x20) addr:0x20b4440
-func_ov000_020b4460 kind:function(arm,size=0x74) addr:0x20b4460
-func_ov000_020b44d4 kind:function(arm,size=0x84) addr:0x20b44d4
-func_ov000_020b4558 kind:function(arm,size=0x88) addr:0x20b4558
-func_ov000_020b45e0 kind:function(arm,size=0x18) addr:0x20b45e0
-func_ov000_020b45f8 kind:function(arm,size=0x54) addr:0x20b45f8
-func_ov000_020b464c kind:function(arm,size=0x2c) addr:0x20b464c
-func_ov000_020b4678 kind:function(arm,size=0x2c) addr:0x20b4678
-func_ov000_020b46a4 kind:function(arm,size=0x34) addr:0x20b46a4
-func_ov000_020b46d8 kind:function(arm,size=0x4) addr:0x20b46d8
-func_ov000_020b46dc kind:function(arm,size=0x40) addr:0x20b46dc
-func_ov000_020b471c kind:function(arm,size=0x14) addr:0x20b471c
-func_ov000_020b4730 kind:function(arm,size=0x4) addr:0x20b4730
-func_ov000_020b4734 kind:function(arm,size=0x4) addr:0x20b4734
-func_ov000_020b4738 kind:function(arm,size=0xf8) addr:0x20b4738
-func_ov000_020b4830 kind:function(arm,size=0x4) addr:0x20b4830
-func_ov000_020b4834 kind:function(arm,size=0x8) addr:0x20b4834
-func_ov000_020b483c kind:function(arm,size=0x8) addr:0x20b483c
-func_ov000_020b4844 kind:function(arm,size=0x8) addr:0x20b4844
-func_ov000_020b484c kind:function(arm,size=0x90) addr:0x20b484c
-func_ov000_020b48dc kind:function(arm,size=0x2c) addr:0x20b48dc
-func_ov000_020b4908 kind:function(arm,size=0x4) addr:0x20b4908
-func_ov000_020b490c kind:function(arm,size=0x4) addr:0x20b490c
-func_ov000_020b4910 kind:function(arm,size=0x4) addr:0x20b4910
-func_ov000_020b4914 kind:function(arm,size=0x4) addr:0x20b4914
-func_ov000_020b4918 kind:function(arm,size=0x18) addr:0x20b4918
-func_ov000_020b4930 kind:function(arm,size=0x4) addr:0x20b4930
-func_ov000_020b4934 kind:function(arm,size=0x4) addr:0x20b4934
-func_ov000_020b4938 kind:function(arm,size=0x4) addr:0x20b4938
-func_ov000_020b493c kind:function(arm,size=0x4) addr:0x20b493c
-func_ov000_020b4940 kind:function(arm,size=0x4) addr:0x20b4940
-func_ov000_020b4944 kind:function(arm,size=0xbc) addr:0x20b4944
-func_ov000_020b4a00 kind:function(arm,size=0xb8) addr:0x20b4a00
-func_ov000_020b4ab8 kind:function(arm,size=0x8) addr:0x20b4ab8
-func_ov000_020b4ac0 kind:function(arm,size=0x40) addr:0x20b4ac0
-func_ov000_020b4b00 kind:function(arm,size=0x4c) addr:0x20b4b00
-func_ov000_020b4b4c kind:function(arm,size=0x14) addr:0x20b4b4c
-func_ov000_020b4b60 kind:function(arm,size=0x30) addr:0x20b4b60
-func_ov000_020b4b90 kind:function(thumb,size=0x78) addr:0x20b4b90
-func_ov000_020b4c08 kind:function(thumb,size=0xc) addr:0x20b4c08
-func_ov000_020b4c14 kind:function(thumb,size=0x14) addr:0x20b4c14
-func_ov000_020b4c28 kind:function(thumb,size=0x4) addr:0x20b4c28
-func_ov000_020b4c2c kind:function(arm,size=0x20) addr:0x20b4c2c
-func_ov000_020b4c4c kind:function(thumb,size=0xb4) addr:0x20b4c4c
-func_ov000_020b4d00 kind:function(thumb,size=0x28) addr:0x20b4d00
-func_ov000_020b4d28 kind:function(arm,size=0x30c) addr:0x20b4d28
-func_ov000_020b5034 kind:function(arm,size=0xac) addr:0x20b5034
-func_ov000_020b50e0 kind:function(arm,size=0x18) addr:0x20b50e0
-func_ov000_020b50f8 kind:function(arm,size=0x14) addr:0x20b50f8
-func_ov000_020b510c kind:function(arm,size=0x54) addr:0x20b510c
-func_ov000_020b5160 kind:function(arm,size=0x108) addr:0x20b5160
-func_ov000_020b5268 kind:function(arm,size=0xe4) addr:0x20b5268
-func_ov000_020b534c kind:function(arm,size=0x14) addr:0x20b534c
-func_ov000_020b5360 kind:function(arm,size=0x64) addr:0x20b5360
-func_ov000_020b53c4 kind:function(arm,size=0x30) addr:0x20b53c4
-func_ov000_020b53f4 kind:function(arm,size=0x2c) addr:0x20b53f4
-func_ov000_020b5420 kind:function(arm,size=0xc) addr:0x20b5420
-func_ov000_020b542c kind:function(arm,size=0x18) addr:0x20b542c
-func_ov000_020b5444 kind:function(arm,size=0x84) addr:0x20b5444
-func_ov000_020b54c8 kind:function(arm,size=0x4c) addr:0x20b54c8
-func_ov000_020b5514 kind:function(arm,size=0x7a0) addr:0x20b5514
-func_ov000_020b5cb4 kind:function(arm,size=0xe3c) addr:0x20b5cb4
-func_ov000_020b6af0 kind:function(arm,size=0xb4) addr:0x20b6af0
-func_ov000_020b6ba4 kind:function(arm,size=0x2cc) addr:0x20b6ba4
-func_ov000_020b6e70 kind:function(arm,size=0x30) addr:0x20b6e70
-func_ov000_020b6ea0 kind:function(arm,size=0x49c) addr:0x20b6ea0
-func_ov000_020b733c kind:function(arm,size=0x74) addr:0x20b733c
-func_ov000_020b73b0 kind:function(arm,size=0x3a4) addr:0x20b73b0
-func_ov000_020b7754 kind:function(arm,size=0xf4) addr:0x20b7754
-func_ov000_020b7848 kind:function(arm,size=0x1c) addr:0x20b7848
-func_ov000_020b7864 kind:function(arm,size=0x8) addr:0x20b7864
+_ZN17PlayerControlData8vfunc_00Ev kind:function(arm,size=0x4) addr:0x20b443c
+_ZN17PlayerControlData19func_ov000_020b4440Ev kind:function(arm,size=0x20) addr:0x20b4440
+_ZN17PlayerControlData19func_ov000_020b4460Ei kind:function(arm,size=0x74) addr:0x20b4460
+_ZN17PlayerControlData19func_ov000_020b44d4Eij kind:function(arm,size=0x84) addr:0x20b44d4
+_ZN17PlayerControlData19func_ov000_020b4558Eij kind:function(arm,size=0x88) addr:0x20b4558
+_ZN17PlayerControlData19func_ov000_020b45e0Ev kind:function(arm,size=0x18) addr:0x20b45e0
+_ZN17PlayerControlData19func_ov000_020b45f8EPicc kind:function(arm,size=0x54) addr:0x20b45f8
+_ZN17PlayerControlData19func_ov000_020b464cEPicc kind:function(arm,size=0x2c) addr:0x20b464c
+_ZN17PlayerControlData8vfunc_60Eiii kind:function(arm,size=0x2c) addr:0x20b4678
+_ZN17PlayerControlData8vfunc_68Eii kind:function(arm,size=0x34) addr:0x20b46a4
+_ZN17PlayerControlData8vfunc_64Ev kind:function(arm,size=0x4) addr:0x20b46d8
+_ZN17PlayerControlData8vfunc_20Ev kind:function(arm,size=0x40) addr:0x20b46dc
+_ZN17PlayerControlData8vfunc_24Ev kind:function(arm,size=0x14) addr:0x20b471c
+_ZN17PlayerControlData8vfunc_28Ev kind:function(arm,size=0x4) addr:0x20b4730
+_ZN17PlayerControlData8vfunc_2cEv kind:function(arm,size=0x4) addr:0x20b4734
+_ZN17PlayerControlData8vfunc_30Ev kind:function(arm,size=0xf8) addr:0x20b4738
+_ZN17PlayerControlData8vfunc_34Ev kind:function(arm,size=0x4) addr:0x20b4830
+_ZN17PlayerControlData8vfunc_7cEv kind:function(arm,size=0x8) addr:0x20b4834
+_ZN17PlayerControlData8vfunc_74Ev kind:function(arm,size=0x8) addr:0x20b483c
+_ZN17PlayerControlData8vfunc_78Ev kind:function(arm,size=0x8) addr:0x20b4844
+_ZN17PlayerControlData19func_ov000_020b484cEiii kind:function(arm,size=0x90) addr:0x20b484c
+_ZN17PlayerControlData8vfunc_6cEiP5Vec3p kind:function(arm,size=0x2c) addr:0x20b48dc
+_ZN17PlayerControlData8vfunc_5cEv kind:function(arm,size=0x4) addr:0x20b4908
+_ZN17PlayerControlData8vfunc_3cEv kind:function(arm,size=0x4) addr:0x20b490c
+_ZN17PlayerControlData8vfunc_40Ev kind:function(arm,size=0x4) addr:0x20b4910
+_ZN17PlayerControlData8vfunc_44Ev kind:function(arm,size=0x4) addr:0x20b4914
+_ZN17PlayerControlData8vfunc_48Eiiis kind:function(arm,size=0x18) addr:0x20b4918
+_ZN17PlayerControlData8vfunc_4cEv kind:function(arm,size=0x4) addr:0x20b4930
+_ZN17PlayerControlData8vfunc_70Ev kind:function(arm,size=0x4) addr:0x20b4934
+_ZN17PlayerControlData8vfunc_50Ev kind:function(arm,size=0x4) addr:0x20b4938
+_ZN17PlayerControlData8vfunc_54Ev kind:function(arm,size=0x4) addr:0x20b493c
+_ZN17PlayerControlData8vfunc_58Ev kind:function(arm,size=0x4) addr:0x20b4940
+_ZN17PlayerControlData19func_ov000_020b4944Eiji kind:function(arm,size=0xbc) addr:0x20b4944
+_ZN17PlayerControlData19func_ov000_020b4a00EPiS0_S0_i kind:function(arm,size=0xb8) addr:0x20b4a00
+_ZN17PlayerControlData8vfunc_0cEv kind:function(arm,size=0x8) addr:0x20b4ab8
+_ZN23UnkStruct_027e0fd4_Unk18vfunc_08EPtij kind:function(arm,size=0x40) addr:0x20b4ac0
+_ZN23UnkStruct_027e0fd4_Unk18vfunc_10EPi kind:function(arm,size=0x4c) addr:0x20b4b00
+_ZN23UnkStruct_027e0fd4_Unk18vfunc_14Ev kind:function(arm,size=0x14) addr:0x20b4b4c
+_Z19func_ov000_020b4b60ii kind:function(arm,size=0x30) addr:0x20b4b60
+_ZN18UnkStruct_027e0fd4C2Ev kind:function(thumb,size=0x78) addr:0x20b4b90
+_ZN18UnkStruct_027e0fd4D1Ev kind:function(thumb,size=0xc) addr:0x20b4c08
+_ZN18UnkStruct_027e0fd4D0Ev kind:function(thumb,size=0x14) addr:0x20b4c14
+_ZN18UnkStruct_027e0fd48vfunc_1cEv kind:function(thumb,size=0x4) addr:0x20b4c28
+_ZN18UnkStruct_027e0fd419func_Ov000_020b4c2cEv kind:function(arm,size=0x20) addr:0x20b4c2c
+_ZN18UnkStruct_027e0fd419func_ov000_020b4c4cEP5Vec3pi kind:function(thumb,size=0xb4) addr:0x20b4c4c
+_ZN18UnkStruct_027e0fd419func_ov000_020b4d00Ev kind:function(thumb,size=0x28) addr:0x20b4d00
+_ZN18UnkStruct_027e0fd419func_ov000_020b4d28EPjPiS1_ kind:function(arm,size=0x30c) addr:0x20b4d28
+_ZN18UnkStruct_027e0fd419func_ov000_020b5034EP5Vec3p kind:function(arm,size=0xac) addr:0x20b5034
+_ZN18UnkStruct_027e0fd419func_ov000_020b50e0Ev kind:function(arm,size=0x18) addr:0x20b50e0
+_ZN18UnkStruct_027e0fd419func_ov000_020b50f8Ev kind:function(arm,size=0x14) addr:0x20b50f8
+_ZN18UnkStruct_027e0fd419func_ov000_020b510cEv kind:function(arm,size=0x54) addr:0x20b510c
+_ZN18UnkStruct_027e0fd419func_ov000_020b5160EPjj kind:function(arm,size=0x108) addr:0x20b5160
+_ZN18UnkStruct_027e0fd419func_ov000_020b5268EiP5Vec3pi kind:function(arm,size=0xe4) addr:0x20b5268
+_ZN23UnkStruct_027e0fd4_Unk1D1Ev kind:function(arm,size=0x14) addr:0x20b534c
+_ZN18UnkStruct_027e0fd419func_ov000_020b5360Eii kind:function(arm,size=0x64) addr:0x20b5360
+_ZN18UnkStruct_027e0fd419func_ov000_020b53c4EPi kind:function(arm,size=0x30) addr:0x20b53c4
+_ZN18UnkStruct_027e0fd419func_ov000_020b53f4Eiij kind:function(arm,size=0x2c) addr:0x20b53f4
+_ZN18UnkStruct_027e0fd419func_ov000_020b5420EPiPS_ kind:function(arm,size=0xc) addr:0x20b5420
+_ZN18UnkStruct_027e0fd419func_ov000_020b542cEj kind:function(arm,size=0x18) addr:0x20b542c
+_ZN18UnkStruct_027e0fd45ClearEv kind:function(arm,size=0x84) addr:0x20b5444
+_ZN18UnkStruct_027e0fd419func_ov000_020b54c8Ev kind:function(arm,size=0x4c) addr:0x20b54c8
+_ZN18UnkStruct_027e0fd419func_ov000_020b5514EP5Vec3pS1_ kind:function(arm,size=0x7a0) addr:0x20b5514
+_ZN18UnkStruct_027e0fd419func_ov000_020b5cb4EP5Vec3pS1_PiS2_ kind:function(arm,size=0xe3c) addr:0x20b5cb4
+_ZN18UnkStruct_027e0fd419func_ov000_020b6af0EPi kind:function(arm,size=0xb4) addr:0x20b6af0
+_ZN18UnkStruct_027e0fd419func_ov000_020b6ba4Eii kind:function(arm,size=0x2cc) addr:0x20b6ba4
+_ZN18UnkStruct_027e0fd419func_ov000_020b6e70Ev kind:function(arm,size=0x30) addr:0x20b6e70
+_ZN18UnkStruct_027e0fd48vfunc_08Ev kind:function(arm,size=0x49c) addr:0x20b6ea0
+_ZN18UnkStruct_027e0fd48vfunc_0cEv kind:function(arm,size=0x74) addr:0x20b733c
+_ZN18UnkStruct_027e0fd48vfunc_10EPi kind:function(arm,size=0x3a4) addr:0x20b73b0
+_ZN18UnkStruct_027e0fd48vfunc_14EPti kind:function(arm,size=0xf4) addr:0x20b7754
+_ZN23UnkStruct_027e0fd4_Unk1D0Ev kind:function(arm,size=0x1c) addr:0x20b7848
+_ZN23UnkStruct_027e0fd4_Unk18vfunc_0cEv kind:function(arm,size=0x8) addr:0x20b7864
func_ov000_020b786c kind:function(arm,size=0x34) addr:0x20b786c
-func_ov000_020b78a0 kind:function(arm,size=0x48) addr:0x20b78a0
-func_ov000_020b78e8 kind:function(arm,size=0x3c) addr:0x20b78e8
-func_ov000_020b7924 kind:function(arm,size=0x428) addr:0x20b7924
-func_ov000_020b7d4c kind:function(arm,size=0x20) addr:0x20b7d4c
-func_ov000_020b7d6c kind:function(arm,size=0x8) addr:0x20b7d6c
+_ZN13PlayerControl15ResetTouchWorldEv kind:function(arm,size=0x48) addr:0x20b78a0
+_ZN13PlayerControl17InitTouchMovementEv kind:function(arm,size=0x3c) addr:0x20b78e8
+_ZN13PlayerControl19func_ov000_020b7924Ei kind:function(arm,size=0x428) addr:0x20b7924
+_ZN13PlayerControl15ApplyTouchWorldEP5Vec3pi kind:function(arm,size=0x20) addr:0x20b7d4c
+_ZN13PlayerControl19func_ov000_020b7d6cEv kind:function(arm,size=0x8) addr:0x20b7d6c
func_ov000_020b7d74 kind:function(arm,size=0x7c) addr:0x20b7d74
func_ov000_020b7df0 kind:function(arm,size=0x7c) addr:0x20b7df0
_Z19func_ov000_020b7e6cPi kind:function(arm,size=0x38) addr:0x20b7e6c
@@ -2394,9 +2394,9 @@ func_ov000_020b7ee8 kind:function(arm,size=0x40) addr:0x20b7ee8
func_ov000_020b7f28 kind:function(arm,size=0xa4) addr:0x20b7f28
func_ov000_020b7fcc kind:function(arm,size=0x1c) addr:0x20b7fcc
func_ov000_020b7fe8 kind:function(arm,size=0x14) addr:0x20b7fe8
-func_ov000_020b7ffc kind:function(thumb,size=0x50) addr:0x20b7ffc
-func_ov000_020b804c kind:function(thumb,size=0x14) addr:0x20b804c
-func_ov000_020b8060 kind:function(thumb,size=0x80) addr:0x20b8060
+_ZN13HealthManager4SaveEP15SaveItemManager kind:function(thumb,size=0x50) addr:0x20b7ffc
+_ZN13HealthManager17IncreaseMaxHealthEs kind:function(thumb,size=0x14) addr:0x20b804c
+_ZN13HealthManager19UpdateShipMaxHealthEv kind:function(thumb,size=0x80) addr:0x20b8060
func_ov000_020b80e0 kind:function(arm,size=0x30) addr:0x20b80e0
func_ov000_020b8110 kind:function(arm,size=0x24) addr:0x20b8110
func_ov000_020b8134 kind:function(arm,size=0x14) addr:0x20b8134
@@ -4927,14 +4927,14 @@ data_ov000_020e62a8 kind:data(any) addr:0x20e62a8
data_ov000_020e62b8 kind:data(any) addr:0x20e62b8
data_ov000_020e62d8 kind:data(any) addr:0x20e62d8
data_ov000_020e62e8 kind:data(any) addr:0x20e62e8
-data_ov000_020e6300 kind:data(any) addr:0x20e6300
-data_ov000_020e634c kind:data(any) addr:0x20e634c
+_ZTV17LinkStateCutscene kind:data(any) addr:0x20e6300
+_ZTV24UnkStruct_ov004_0210abb8 kind:data(any) addr:0x20e634c
data_ov000_020e6380 kind:data(any) addr:0x20e6380
data_ov000_020e6398 kind:data(any) addr:0x20e6398
data_ov000_020e63a8 kind:data(any) addr:0x20e63a8
data_ov000_020e63b8 kind:data(any) addr:0x20e63b8
data_ov000_020e63c8 kind:data(any) addr:0x20e63c8
-data_ov000_020e63dc kind:data(any) addr:0x20e63dc
+_ZTV17PlayerControlData kind:data(any) addr:0x20e63dc
data_ov000_020e645c kind:data(any) addr:0x20e645c
data_ov000_020e6460 kind:data(any) addr:0x20e6460
data_ov000_020e6464 kind:data(any) addr:0x20e6464
@@ -4944,8 +4944,8 @@ data_ov000_020e6470 kind:data(any) addr:0x20e6470
data_ov000_020e6474 kind:data(any) addr:0x20e6474
data_ov000_020e6478 kind:data(any) addr:0x20e6478
data_ov000_020e647c kind:data(any) addr:0x20e647c
-data_ov000_020e64a8 kind:data(any) addr:0x20e64a8
-data_ov000_020e64c8 kind:data(any) addr:0x20e64c8
+_ZTV23UnkStruct_027e0fd4_Unk1 kind:data(any) addr:0x20e64a8
+_ZTV18UnkStruct_027e0fd4 kind:data(any) addr:0x20e64c8
data_ov000_020e64f0 kind:data(any) addr:0x20e64f0
data_ov000_020e6514 kind:data(any) addr:0x20e6514
data_ov000_020e6518 kind:data(any) addr:0x20e6518
diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt
index a73991be..df159ed1 100644
--- a/config/usa/arm9/overlays/ov000/symbols.txt
+++ b/config/usa/arm9/overlays/ov000/symbols.txt
@@ -2251,43 +2251,43 @@ func_ov000_020b1ba4 kind:function(arm,size=0x58) addr:0x20b1b44
func_ov000_020b1bfc kind:function(arm,size=0x140) addr:0x20b1b9c
func_ov000_020b1d3c kind:function(arm,size=0x34) addr:0x20b1cdc
func_ov000_020b1d70 kind:function(arm,size=0xa8) addr:0x20b1d10
-func_ov000_020b1e18 kind:function(arm,size=0x54) addr:0x20b1db8
-func_ov000_020b1e6c kind:function(thumb,size=0x4) addr:0x20b1e0c
-func_ov000_020b1e70 kind:function(arm,size=0x28) addr:0x20b1e10
-func_ov000_020b1e98 kind:function(arm,size=0x20) addr:0x20b1e38
-func_ov000_020b1eb8 kind:function(arm,size=0x34) addr:0x20b1e58
-func_ov000_020b1eec kind:function(arm,size=0x58) addr:0x20b1e8c
-func_ov000_020b1f44 kind:function(thumb,size=0x168) addr:0x20b1ee4
-func_ov000_020b20ac kind:function(arm,size=0x3f4) addr:0x20b204c
-func_ov000_020b24a0 kind:function(arm,size=0x60) addr:0x20b2440
-func_ov000_020b2500 kind:function(arm,size=0x8) addr:0x20b24a0
-func_ov000_020b2508 kind:function(arm,size=0x4c) addr:0x20b24a8
-func_ov000_020b2554 kind:function(arm,size=0x14) addr:0x20b24f4
-func_ov000_020b2568 kind:function(arm,size=0x30) addr:0x20b2508
-func_ov000_020b2598 kind:function(arm,size=0x60c) addr:0x20b2538
-func_ov000_020b2ba4 kind:function(arm,size=0x140) addr:0x20b2b44
-func_ov000_020b2ce4 kind:function(arm,size=0xc) addr:0x20b2c84
-func_ov000_020b2cf0 kind:function(arm,size=0x70) addr:0x20b2c90
-func_ov000_020b2d60 kind:function(arm,size=0x2c) addr:0x20b2d00
-func_ov000_020b2d8c kind:function(arm,size=0xf8) addr:0x20b2d2c
-func_ov000_020b2e84 kind:function(arm,size=0x30) addr:0x20b2e24
-func_ov000_020b2eb4 kind:function(arm,size=0x80) addr:0x20b2e54
-func_ov000_020b2f34 kind:function(arm,size=0x14) addr:0x20b2ed4
-func_ov000_020b2f48 kind:function(arm,size=0x28) addr:0x20b2ee8
-func_ov000_020b2f70 kind:function(arm,size=0x2c) addr:0x20b2f10
-func_ov000_020b2f9c kind:function(arm,size=0x10) addr:0x20b2f3c
-func_ov000_020b2fac kind:function(arm,size=0x78) addr:0x20b2f4c
-func_ov000_020b3024 kind:function(arm,size=0x38) addr:0x20b2fc4
-func_ov000_020b305c kind:function(arm,size=0x40) addr:0x20b2ffc
-func_ov000_020b309c kind:function(arm,size=0x48) addr:0x20b303c
-func_ov000_020b30e4 kind:function(arm,size=0x194) addr:0x20b3084
-func_ov000_020b3278 kind:function(arm,size=0x360) addr:0x20b3218
-func_ov000_020b35d8 kind:function(arm,size=0x304) addr:0x20b3578
-func_ov000_020b38dc kind:function(arm,size=0x490) addr:0x20b387c
-func_ov000_020b3d6c kind:function(arm,size=0x78) addr:0x20b3d0c
-func_ov000_020b3de4 kind:function(arm,size=0x94) addr:0x20b3d84
-func_ov000_020b3e78 kind:function(arm,size=0x1c) addr:0x20b3e18
-func_ov000_020b3e94 kind:function(arm,size=0x14) addr:0x20b3e34
+IsXzDistWithin kind:function(arm,size=0x54) addr:0x20b1db8
+_ZN17LinkStateCutscene8vfunc_00Ev kind:function(thumb,size=0x4) addr:0x20b1e0c
+_ZN24UnkStruct_ov004_0210abb88vfunc_08Ei kind:function(arm,size=0x28) addr:0x20b1e10
+_ZN17LinkStateCutscene19func_ov000_020b1e98Ei kind:function(arm,size=0x20) addr:0x20b1e38
+_ZN17LinkStateCutscene19func_ov000_020b1eb8Ev kind:function(arm,size=0x34) addr:0x20b1e58
+_ZN17LinkStateCutscene19func_ov000_020b1eecEv kind:function(arm,size=0x58) addr:0x20b1e8c
+_ZN17LinkStateCutscene20CreateDebugHierarchyEv kind:function(thumb,size=0x168) addr:0x20b1ee4
+_ZN17LinkStateCutscene12OnStateEnterEv kind:function(arm,size=0x3f4) addr:0x20b204c
+_ZN17LinkStateCutscene12OnStateLeaveEi kind:function(arm,size=0x60) addr:0x20b2440
+_ZN17LinkStateCutscene5GetIdEv kind:function(arm,size=0x8) addr:0x20b24a0
+_ZN17LinkStateCutscene8vfunc_1cEv kind:function(arm,size=0x4c) addr:0x20b24a8
+_ZN17LinkStateCutscene20StopVerticalVelocityEv kind:function(arm,size=0x14) addr:0x20b24f4
+_ZN17LinkStateCutscene19func_ov000_020b2568Ev kind:function(arm,size=0x30) addr:0x20b2508
+_ZN17LinkStateCutscene19func_ov000_020b2598Ev kind:function(arm,size=0x60c) addr:0x20b2538
+_ZN17LinkStateCutscene19func_ov000_020b2ba4Ev kind:function(arm,size=0x140) addr:0x20b2b44
+_ZN17LinkStateCutscene19func_ov000_020b2ce4Eis kind:function(arm,size=0xc) addr:0x20b2c84
+_ZN17LinkStateCutscene19func_ov000_020b2cf0Ev kind:function(arm,size=0x70) addr:0x20b2c90
+_ZN17LinkStateCutscene19func_ov000_020b2d60Ev kind:function(arm,size=0x2c) addr:0x20b2d00
+_ZN17LinkStateCutscene19func_ov000_020b2d8cEv kind:function(arm,size=0xf8) addr:0x20b2d2c
+_ZN17LinkStateCutscene19func_ov000_020b2e84Ev kind:function(arm,size=0x30) addr:0x20b2e24
+_ZN17LinkStateCutscene8vfunc_24Ei kind:function(arm,size=0x80) addr:0x20b2e54
+_ZN17LinkStateCutscene8vfunc_28Ev kind:function(arm,size=0x14) addr:0x20b2ed4
+_ZN17LinkStateCutscene19func_ov000_020b2f48Eii kind:function(arm,size=0x28) addr:0x20b2ee8
+_ZN17LinkStateCutscene19func_ov000_020b2f70EiPvPi kind:function(arm,size=0x2c) addr:0x20b2f10
+_ZN17LinkStateCutscene17ChangeToMoveStateEv kind:function(arm,size=0x10) addr:0x20b2f3c
+_ZN17LinkStateCutscene19func_ov000_020b2facEv kind:function(arm,size=0x78) addr:0x20b2f4c
+_ZN17LinkStateCutscene19func_ov000_020b3024EP5Vec3pi kind:function(arm,size=0x38) addr:0x20b2fc4
+_ZN17LinkStateCutscene19func_ov000_020b305cEP5Vec3pS1_ kind:function(arm,size=0x40) addr:0x20b2ffc
+_ZN17LinkStateCutscene19func_ov000_020b309cEP5Vec3p kind:function(arm,size=0x48) addr:0x20b303c
+_ZN17LinkStateCutscene19func_ov000_020b30e4Ejii kind:function(arm,size=0x194) addr:0x20b3084
+_ZN17LinkStateCutscene19func_ov000_020b3278EiPi kind:function(arm,size=0x360) addr:0x20b3218
+_ZN17LinkStateCutscene19func_ov000_020b35d8Eii kind:function(arm,size=0x304) addr:0x20b3578
+_ZN17LinkStateCutscene19func_ov000_020b38dcEjj kind:function(arm,size=0x490) addr:0x20b387c
+_ZN17LinkStateCutscene8vfunc_40Ev kind:function(arm,size=0x78) addr:0x20b3d0c
+_ZN17LinkStateCutscene8vfunc_38Ev kind:function(arm,size=0x94) addr:0x20b3d84
+_ZN24UnkStruct_ov004_0210abb8D1Ev kind:function(arm,size=0x1c) addr:0x20b3e18
+_ZN24UnkStruct_ov004_0210abb8D0Ev kind:function(arm,size=0x14) addr:0x20b3e34
func_ov000_020b3ea8 kind:function(thumb,size=0x4) addr:0x20b3e48
func_ov000_020b3eac kind:function(arm,size=0x18) addr:0x20b3e4c
func_ov000_020b3ec4 kind:function(arm,size=0x24) addr:0x20b3e64
@@ -2307,84 +2307,84 @@ func_ov000_020b4274 kind:function(arm,size=0x2c) addr:0x20b4214
func_ov000_020b42a0 kind:function(arm,size=0xe4) addr:0x20b4240
func_ov000_020b4384 kind:function(arm,size=0x6c) addr:0x20b4324
func_ov000_020b43f0 kind:function(arm,size=0x4c) addr:0x20b4390
-func_ov000_020b443c kind:function(arm,size=0x4) addr:0x20b43dc
-func_ov000_020b4440 kind:function(arm,size=0x20) addr:0x20b43e0
-func_ov000_020b4460 kind:function(arm,size=0x74) addr:0x20b4400
-func_ov000_020b44d4 kind:function(arm,size=0x84) addr:0x20b4474
-func_ov000_020b4558 kind:function(arm,size=0x88) addr:0x20b44f8
-func_ov000_020b45e0 kind:function(arm,size=0x18) addr:0x20b4580
-func_ov000_020b45f8 kind:function(arm,size=0x54) addr:0x20b4598
-func_ov000_020b464c kind:function(arm,size=0x2c) addr:0x20b45ec
-func_ov000_020b4678 kind:function(arm,size=0x2c) addr:0x20b4618
-func_ov000_020b46a4 kind:function(arm,size=0x34) addr:0x20b4644
-func_ov000_020b46d8 kind:function(arm,size=0x4) addr:0x20b4678
-func_ov000_020b46dc kind:function(arm,size=0x40) addr:0x20b467c
-func_ov000_020b471c kind:function(arm,size=0x14) addr:0x20b46bc
-func_ov000_020b4730 kind:function(arm,size=0x4) addr:0x20b46d0
-func_ov000_020b4734 kind:function(arm,size=0x4) addr:0x20b46d4
-func_ov000_020b4738 kind:function(arm,size=0xf8) addr:0x20b46d8
-func_ov000_020b4830 kind:function(arm,size=0x4) addr:0x20b47d0
-func_ov000_020b4834 kind:function(arm,size=0x8) addr:0x20b47d4
-func_ov000_020b483c kind:function(arm,size=0x8) addr:0x20b47dc
-func_ov000_020b4844 kind:function(arm,size=0x8) addr:0x20b47e4
-func_ov000_020b484c kind:function(arm,size=0x90) addr:0x20b47ec
-func_ov000_020b48dc kind:function(arm,size=0x2c) addr:0x20b487c
-func_ov000_020b4908 kind:function(arm,size=0x4) addr:0x20b48a8
-func_ov000_020b490c kind:function(arm,size=0x4) addr:0x20b48ac
-func_ov000_020b4910 kind:function(arm,size=0x4) addr:0x20b48b0
-func_ov000_020b4914 kind:function(arm,size=0x4) addr:0x20b48b4
-func_ov000_020b4918 kind:function(arm,size=0x18) addr:0x20b48b8
-func_ov000_020b4930 kind:function(arm,size=0x4) addr:0x20b48d0
-func_ov000_020b4934 kind:function(arm,size=0x4) addr:0x20b48d4
-func_ov000_020b4938 kind:function(arm,size=0x4) addr:0x20b48d8
-func_ov000_020b493c kind:function(arm,size=0x4) addr:0x20b48dc
-func_ov000_020b4940 kind:function(arm,size=0x4) addr:0x20b48e0
-func_ov000_020b4944 kind:function(arm,size=0xbc) addr:0x20b48e4
-func_ov000_020b4a00 kind:function(arm,size=0xb8) addr:0x20b49a0
-func_ov000_020b4ab8 kind:function(arm,size=0x8) addr:0x20b4a58
-func_ov000_020b4ac0 kind:function(arm,size=0x40) addr:0x20b4a60
-func_ov000_020b4b00 kind:function(arm,size=0x4c) addr:0x20b4aa0
-func_ov000_020b4b4c kind:function(arm,size=0x14) addr:0x20b4aec
-func_ov000_020b4b60 kind:function(arm,size=0x30) addr:0x20b4b00
-func_ov000_020b4b90 kind:function(thumb,size=0x78) addr:0x20b4b30
-func_ov000_020b4c08 kind:function(thumb,size=0xc) addr:0x20b4ba8
-func_ov000_020b4c14 kind:function(thumb,size=0x14) addr:0x20b4bb4
-func_ov000_020b4c28 kind:function(thumb,size=0x4) addr:0x20b4bc8
-func_ov000_020b4c2c kind:function(arm,size=0x20) addr:0x20b4bcc
-func_ov000_020b4c4c kind:function(thumb,size=0xb4) addr:0x20b4bec
-func_ov000_020b4d00 kind:function(thumb,size=0x28) addr:0x20b4ca0
-func_ov000_020b4d28 kind:function(arm,size=0x30c) addr:0x20b4cc8
-func_ov000_020b5034 kind:function(arm,size=0xac) addr:0x20b4fd4
-func_ov000_020b50e0 kind:function(arm,size=0x18) addr:0x20b5080
-func_ov000_020b50f8 kind:function(arm,size=0x14) addr:0x20b5098
-func_ov000_020b510c kind:function(arm,size=0x54) addr:0x20b50ac
-func_ov000_020b5160 kind:function(arm,size=0x108) addr:0x20b5100
-func_ov000_020b5268 kind:function(arm,size=0xe4) addr:0x20b5208
-func_ov000_020b534c kind:function(arm,size=0x14) addr:0x20b52ec
-func_ov000_020b5360 kind:function(arm,size=0x64) addr:0x20b5300
-func_ov000_020b53c4 kind:function(arm,size=0x30) addr:0x20b5364
-func_ov000_020b53f4 kind:function(arm,size=0x2c) addr:0x20b5394
-func_ov000_020b5420 kind:function(arm,size=0xc) addr:0x20b53c0
-func_ov000_020b542c kind:function(arm,size=0x18) addr:0x20b53cc
-func_ov000_020b5444 kind:function(arm,size=0x84) addr:0x20b53e4
-func_ov000_020b54c8 kind:function(arm,size=0x4c) addr:0x20b5468
-func_ov000_020b5514 kind:function(arm,size=0x7a0) addr:0x20b54b4
-func_ov000_020b5cb4 kind:function(arm,size=0xe3c) addr:0x20b5c54
-func_ov000_020b6af0 kind:function(arm,size=0xb4) addr:0x20b6a90
-func_ov000_020b6ba4 kind:function(arm,size=0x2cc) addr:0x20b6b44
-func_ov000_020b6e70 kind:function(arm,size=0x30) addr:0x20b6e10
-func_ov000_020b6ea0 kind:function(arm,size=0x49c) addr:0x20b6e40
-func_ov000_020b733c kind:function(arm,size=0x74) addr:0x20b72dc
-func_ov000_020b73b0 kind:function(arm,size=0x3a4) addr:0x20b7350
-func_ov000_020b7754 kind:function(arm,size=0xf4) addr:0x20b76f4
-func_ov000_020b7848 kind:function(arm,size=0x1c) addr:0x20b77e8
-func_ov000_020b7864 kind:function(arm,size=0x8) addr:0x20b7804
+_ZN17PlayerControlData8vfunc_00Ev kind:function(arm,size=0x4) addr:0x20b43dc
+_ZN17PlayerControlData19func_ov000_020b4440Ev kind:function(arm,size=0x20) addr:0x20b43e0
+_ZN17PlayerControlData19func_ov000_020b4460Ei kind:function(arm,size=0x74) addr:0x20b4400
+_ZN17PlayerControlData19func_ov000_020b44d4Eij kind:function(arm,size=0x84) addr:0x20b4474
+_ZN17PlayerControlData19func_ov000_020b4558Eij kind:function(arm,size=0x88) addr:0x20b44f8
+_ZN17PlayerControlData19func_ov000_020b45e0Ev kind:function(arm,size=0x18) addr:0x20b4580
+_ZN17PlayerControlData19func_ov000_020b45f8EPicc kind:function(arm,size=0x54) addr:0x20b4598
+_ZN17PlayerControlData19func_ov000_020b464cEPicc kind:function(arm,size=0x2c) addr:0x20b45ec
+_ZN17PlayerControlData8vfunc_60Eiii kind:function(arm,size=0x2c) addr:0x20b4618
+_ZN17PlayerControlData8vfunc_68Eii kind:function(arm,size=0x34) addr:0x20b4644
+_ZN17PlayerControlData8vfunc_64Ev kind:function(arm,size=0x4) addr:0x20b4678
+_ZN17PlayerControlData8vfunc_20Ev kind:function(arm,size=0x40) addr:0x20b467c
+_ZN17PlayerControlData8vfunc_24Ev kind:function(arm,size=0x14) addr:0x20b46bc
+_ZN17PlayerControlData8vfunc_28Ev kind:function(arm,size=0x4) addr:0x20b46d0
+_ZN17PlayerControlData8vfunc_2cEv kind:function(arm,size=0x4) addr:0x20b46d4
+_ZN17PlayerControlData8vfunc_30Ev kind:function(arm,size=0xf8) addr:0x20b46d8
+_ZN17PlayerControlData8vfunc_34Ev kind:function(arm,size=0x4) addr:0x20b47d0
+_ZN17PlayerControlData8vfunc_7cEv kind:function(arm,size=0x8) addr:0x20b47d4
+_ZN17PlayerControlData8vfunc_74Ev kind:function(arm,size=0x8) addr:0x20b47dc
+_ZN17PlayerControlData8vfunc_78Ev kind:function(arm,size=0x8) addr:0x20b47e4
+_ZN17PlayerControlData19func_ov000_020b484cEiii kind:function(arm,size=0x90) addr:0x20b47ec
+_ZN17PlayerControlData8vfunc_6cEiP5Vec3p kind:function(arm,size=0x2c) addr:0x20b487c
+_ZN17PlayerControlData8vfunc_5cEv kind:function(arm,size=0x4) addr:0x20b48a8
+_ZN17PlayerControlData8vfunc_3cEv kind:function(arm,size=0x4) addr:0x20b48ac
+_ZN17PlayerControlData8vfunc_40Ev kind:function(arm,size=0x4) addr:0x20b48b0
+_ZN17PlayerControlData8vfunc_44Ev kind:function(arm,size=0x4) addr:0x20b48b4
+_ZN17PlayerControlData8vfunc_48Eiiis kind:function(arm,size=0x18) addr:0x20b48b8
+_ZN17PlayerControlData8vfunc_4cEv kind:function(arm,size=0x4) addr:0x20b48d0
+_ZN17PlayerControlData8vfunc_70Ev kind:function(arm,size=0x4) addr:0x20b48d4
+_ZN17PlayerControlData8vfunc_50Ev kind:function(arm,size=0x4) addr:0x20b48d8
+_ZN17PlayerControlData8vfunc_54Ev kind:function(arm,size=0x4) addr:0x20b48dc
+_ZN17PlayerControlData8vfunc_58Ev kind:function(arm,size=0x4) addr:0x20b48e0
+_ZN17PlayerControlData19func_ov000_020b4944Eiji kind:function(arm,size=0xbc) addr:0x20b48e4
+_ZN17PlayerControlData19func_ov000_020b4a00EPiS0_S0_i kind:function(arm,size=0xb8) addr:0x20b49a0
+_ZN17PlayerControlData8vfunc_0cEv kind:function(arm,size=0x8) addr:0x20b4a58
+_ZN23UnkStruct_027e0fd4_Unk18vfunc_08EPtij kind:function(arm,size=0x40) addr:0x20b4a60
+_ZN23UnkStruct_027e0fd4_Unk18vfunc_10EPi kind:function(arm,size=0x4c) addr:0x20b4aa0
+_ZN23UnkStruct_027e0fd4_Unk18vfunc_14Ev kind:function(arm,size=0x14) addr:0x20b4aec
+_Z19func_ov000_020b4b60ii kind:function(arm,size=0x30) addr:0x20b4b00
+_ZN18UnkStruct_027e0fd4C2Ev kind:function(thumb,size=0x78) addr:0x20b4b30
+_ZN18UnkStruct_027e0fd4D1Ev kind:function(thumb,size=0xc) addr:0x20b4ba8
+_ZN18UnkStruct_027e0fd4D0Ev kind:function(thumb,size=0x14) addr:0x20b4bb4
+_ZN18UnkStruct_027e0fd48vfunc_1cEv kind:function(thumb,size=0x4) addr:0x20b4bc8
+_ZN18UnkStruct_027e0fd419func_Ov000_020b4c2cEv kind:function(arm,size=0x20) addr:0x20b4bcc
+_ZN18UnkStruct_027e0fd419func_ov000_020b4c4cEP5Vec3pi kind:function(thumb,size=0xb4) addr:0x20b4bec
+_ZN18UnkStruct_027e0fd419func_ov000_020b4d00Ev kind:function(thumb,size=0x28) addr:0x20b4ca0
+_ZN18UnkStruct_027e0fd419func_ov000_020b4d28EPjPiS1_ kind:function(arm,size=0x30c) addr:0x20b4cc8
+_ZN18UnkStruct_027e0fd419func_ov000_020b5034EP5Vec3p kind:function(arm,size=0xac) addr:0x20b4fd4
+_ZN18UnkStruct_027e0fd419func_ov000_020b50e0Ev kind:function(arm,size=0x18) addr:0x20b5080
+_ZN18UnkStruct_027e0fd419func_ov000_020b50f8Ev kind:function(arm,size=0x14) addr:0x20b5098
+_ZN18UnkStruct_027e0fd419func_ov000_020b510cEv kind:function(arm,size=0x54) addr:0x20b50ac
+_ZN18UnkStruct_027e0fd419func_ov000_020b5160EPjj kind:function(arm,size=0x108) addr:0x20b5100
+_ZN18UnkStruct_027e0fd419func_ov000_020b5268EiP5Vec3pi kind:function(arm,size=0xe4) addr:0x20b5208
+_ZN23UnkStruct_027e0fd4_Unk1D1Ev kind:function(arm,size=0x14) addr:0x20b52ec
+_ZN18UnkStruct_027e0fd419func_ov000_020b5360Eii kind:function(arm,size=0x64) addr:0x20b5300
+_ZN18UnkStruct_027e0fd419func_ov000_020b53c4EPi kind:function(arm,size=0x30) addr:0x20b5364
+_ZN18UnkStruct_027e0fd419func_ov000_020b53f4Eiij kind:function(arm,size=0x2c) addr:0x20b5394
+_ZN18UnkStruct_027e0fd419func_ov000_020b5420EPiPS_ kind:function(arm,size=0xc) addr:0x20b53c0
+_ZN18UnkStruct_027e0fd419func_ov000_020b542cEj kind:function(arm,size=0x18) addr:0x20b53cc
+_ZN18UnkStruct_027e0fd45ClearEv kind:function(arm,size=0x84) addr:0x20b53e4
+_ZN18UnkStruct_027e0fd419func_ov000_020b54c8Ev kind:function(arm,size=0x4c) addr:0x20b5468
+_ZN18UnkStruct_027e0fd419func_ov000_020b5514EP5Vec3pS1_ kind:function(arm,size=0x7a0) addr:0x20b54b4
+_ZN18UnkStruct_027e0fd419func_ov000_020b5cb4EP5Vec3pS1_PiS2_ kind:function(arm,size=0xe3c) addr:0x20b5c54
+_ZN18UnkStruct_027e0fd419func_ov000_020b6af0EPi kind:function(arm,size=0xb4) addr:0x20b6a90
+_ZN18UnkStruct_027e0fd419func_ov000_020b6ba4Eii kind:function(arm,size=0x2cc) addr:0x20b6b44
+_ZN18UnkStruct_027e0fd419func_ov000_020b6e70Ev kind:function(arm,size=0x30) addr:0x20b6e10
+_ZN18UnkStruct_027e0fd48vfunc_08Ev kind:function(arm,size=0x49c) addr:0x20b6e40
+_ZN18UnkStruct_027e0fd48vfunc_0cEv kind:function(arm,size=0x74) addr:0x20b72dc
+_ZN18UnkStruct_027e0fd48vfunc_10EPi kind:function(arm,size=0x3a4) addr:0x20b7350
+_ZN18UnkStruct_027e0fd48vfunc_14EPti kind:function(arm,size=0xf4) addr:0x20b76f4
+_ZN23UnkStruct_027e0fd4_Unk1D0Ev kind:function(arm,size=0x1c) addr:0x20b77e8
+_ZN23UnkStruct_027e0fd4_Unk18vfunc_0cEv kind:function(arm,size=0x8) addr:0x20b7804
func_ov000_020b786c kind:function(arm,size=0x34) addr:0x20b780c
-func_ov000_020b78a0 kind:function(arm,size=0x48) addr:0x20b7840
-func_ov000_020b78e8 kind:function(arm,size=0x3c) addr:0x20b7888
-func_ov000_020b7924 kind:function(arm,size=0x428) addr:0x20b78c4
-func_ov000_020b7d4c kind:function(arm,size=0x20) addr:0x20b7cec
-func_ov000_020b7d6c kind:function(arm,size=0x8) addr:0x20b7d0c
+_ZN13PlayerControl15ResetTouchWorldEv kind:function(arm,size=0x48) addr:0x20b7840
+_ZN13PlayerControl17InitTouchMovementEv kind:function(arm,size=0x3c) addr:0x20b7888
+_ZN13PlayerControl19func_ov000_020b7924Ei kind:function(arm,size=0x428) addr:0x20b78c4
+_ZN13PlayerControl15ApplyTouchWorldEP5Vec3pi kind:function(arm,size=0x20) addr:0x20b7cec
+_ZN13PlayerControl19func_ov000_020b7d6cEv kind:function(arm,size=0x8) addr:0x20b7d0c
func_ov000_020b7d74 kind:function(arm,size=0x7c) addr:0x20b7d14
func_ov000_020b7df0 kind:function(arm,size=0x7c) addr:0x20b7d90
_Z19func_ov000_020b7e6cPi kind:function(arm,size=0x38) addr:0x20b7e0c
@@ -2394,9 +2394,9 @@ func_ov000_020b7ee8 kind:function(arm,size=0x40) addr:0x20b7e88
func_ov000_020b7f28 kind:function(arm,size=0xa4) addr:0x20b7ec8
func_ov000_020b7fcc kind:function(arm,size=0x1c) addr:0x20b7f6c
func_ov000_020b7fe8 kind:function(arm,size=0x14) addr:0x20b7f88
-func_ov000_020b7ffc kind:function(thumb,size=0x50) addr:0x20b7f9c
-func_ov000_020b804c kind:function(thumb,size=0x14) addr:0x20b7fec
-func_ov000_020b8060 kind:function(thumb,size=0x80) addr:0x20b8000
+_ZN13HealthManager4SaveEP15SaveItemManager kind:function(thumb,size=0x50) addr:0x20b7f9c
+_ZN13HealthManager17IncreaseMaxHealthEs kind:function(thumb,size=0x14) addr:0x20b7fec
+_ZN13HealthManager19UpdateShipMaxHealthEv kind:function(thumb,size=0x80) addr:0x20b8000
func_ov000_020b80e0 kind:function(arm,size=0x30) addr:0x20b8080
func_ov000_020b8110 kind:function(arm,size=0x24) addr:0x20b80b0
func_ov000_020b8134 kind:function(arm,size=0x14) addr:0x20b80d4
@@ -4927,14 +4927,14 @@ data_ov000_020e62a8 kind:data(any) addr:0x20e6248
data_ov000_020e62b8 kind:data(any) addr:0x20e6258
data_ov000_020e62d8 kind:data(any) addr:0x20e6278
data_ov000_020e62e8 kind:data(any) addr:0x20e6288
-data_ov000_020e6300 kind:data(any) addr:0x20e62a0
-data_ov000_020e634c kind:data(any) addr:0x20e62ec
+_ZTV17LinkStateCutscene kind:data(any) addr:0x20e62a0
+_ZTV24UnkStruct_ov004_0210abb8 kind:data(any) addr:0x20e62ec
data_ov000_020e6380 kind:data(any) addr:0x20e6320
data_ov000_020e6398 kind:data(any) addr:0x20e6338
data_ov000_020e63a8 kind:data(any) addr:0x20e6348
data_ov000_020e63b8 kind:data(any) addr:0x20e6358
data_ov000_020e63c8 kind:data(any) addr:0x20e6368
-data_ov000_020e63dc kind:data(any) addr:0x20e637c
+_ZTV17PlayerControlData kind:data(any) addr:0x20e637c
data_ov000_020e645c kind:data(any) addr:0x20e63fc
data_ov000_020e6460 kind:data(any) addr:0x20e6400
data_ov000_020e6464 kind:data(any) addr:0x20e6404
@@ -4944,8 +4944,8 @@ data_ov000_020e6470 kind:data(any) addr:0x20e6410
data_ov000_020e6474 kind:data(any) addr:0x20e6414
data_ov000_020e6478 kind:data(any) addr:0x20e6418
data_ov000_020e647c kind:data(any) addr:0x20e641c
-data_ov000_020e64a8 kind:data(any) addr:0x20e6448
-data_ov000_020e64c8 kind:data(any) addr:0x20e6468
+_ZTV23UnkStruct_027e0fd4_Unk1 kind:data(any) addr:0x20e6448
+_ZTV18UnkStruct_027e0fd4 kind:data(any) addr:0x20e6468
data_ov000_020e64f0 kind:data(any) addr:0x20e6490
data_ov000_020e6514 kind:data(any) addr:0x20e64b4
data_ov000_020e6518 kind:data(any) addr:0x20e64b8
diff --git a/include/DTCM/UnkStruct_027e0fd4.hpp b/include/DTCM/UnkStruct_027e0fd4.hpp
new file mode 100644
index 00000000..1b57252e
--- /dev/null
+++ b/include/DTCM/UnkStruct_027e0fd4.hpp
@@ -0,0 +1,130 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Actor/Actor.hpp"
+#include "Physics/Cylinder.hpp"
+#include "Unknown/UnkStruct_ov000_020b1528.hpp"
+
+class UnkStruct_027e0fd4_Unk1 {
+public:
+ /* 00 (vtable) */
+ /* 04 */ unk8 mUnk_04;
+ /* 08 */ Vec3p mUnk_08;
+ /* 14 */
+
+ /* 00 */ virtual ~UnkStruct_027e0fd4_Unk1();
+ /* 08 */ virtual void vfunc_08(u16 *param1, unk32 param2, u32 param3);
+ /* 0c */ virtual unk32 vfunc_0c();
+ /* 10 */ virtual bool vfunc_10(s32 *param1);
+ /* 14 */ virtual bool vfunc_14();
+ /* 18 */
+};
+
+class UnkStruct_027e0fd4 : public UnkStruct_ov000_020b1528 {
+public:
+ /* 000 (base) */
+ /* 01c */ unk8 mUnk_018[0x4];
+ /* 020 */ Cylinder mUnk_020;
+ /* 030 */ s32 mUnk_030;
+ /* 034 */ s32 mUnk_034;
+ /* 038 */ s32 mUnk_038;
+ /* 03c */ s32 mUnk_03c;
+ /* 040 */ s32 mUnk_040;
+ /* 044 */ Vec3p mUnk_044;
+ /* 050 */ s32 mUnk_050;
+ /* 054 */ unk8 mUnk_054[0x6];
+ /* 05a */ unk16 mUnk_05a;
+ /* 05c */ unk16 mUnk_05c;
+ /* 05e */ unk16 mUnk_05e;
+ /* 060 */ unk16 mUnk_060;
+ /* 062 */ unk8 mUnk_062[0x2];
+ /* 064 */ s32 mUnk_064;
+ /* 068 */ s32 mUnk_068;
+ /* 06c */ s32 mUnk_06c;
+ /* 070 */ unk32 mUnk_070;
+ /* 074 */ unk32 mUnk_074;
+ /* 078 */ unk8 mUnk_078[0x18];
+ /* 090 */ unk32 mUnk_090;
+ /* 094 */ u32 mUnk_094;
+ /* 098 */ s32 mUnk_098;
+ /* 09c */ unk32 mUnk_09c;
+ /* 0a0 */ u16 mUnk_0a0;
+ /* 0a2 */ s16 mUnk_0a2;
+ /* 0a4 */ unk16 mUnk_0a4;
+ /* 0a6 */ unk16 mUnk_0a6;
+ /* 0a8 */ unk16 mUnk_0a8;
+ /* 0aa */ unk8 mUnk_0aa[0x2];
+ /* 0ac */ unk32 mUnk_0ac;
+ /* 0b0 */ unk32 mUnk_0b0;
+ /* 0b4 */ unk32 mUnk_0b4;
+ /* 0b8 */ unk8 mUnk_0b8;
+ /* 0b9 */ bool mUnk_0b9;
+ /* 0ba */ bool mUnk_0ba;
+ /* 0bb */ unk8 mUnk_0bb[0x5];
+ /* 0c0 */ unk32 mUnk_0c0;
+ /* 0c4 */ u8 mUnk_0c4;
+ /* 0c5 */ u8 mUnk_0c5;
+ /* 0c6 */ s16 mUnk_0c6;
+ /* 0c8 */ unk16 mUnk_0c8;
+ /* 0ca */ u16 mUnk_0ca;
+ /* 0cc */ u8 mUnk_0cc;
+ /* 0cd */ bool mUnk_0cd;
+ /* 0ce */ u8 mUnk_0ce;
+ /* 0cf */ unk8 mUnk_0cf;
+ /* 0d0 */ u32 mUnk_0d0;
+ /* 0d4 */ s32 mUnk_0d4;
+ /* 0d8 */ s32 mUnk_0d8;
+ /* 0dc */ s32 mUnk_0dc;
+ /* 0e0 */ Actor *mUnk_0e0;
+ /* 0e4 */ unk32 mUnk_0e4;
+ /* 0e8 */ unk32 mUnk_0e8;
+ /* 0ec */ unk32 mUnk_0ec;
+ /* 0f0 */ unk32 mUnk_0f0;
+ /* 0f4 */ unk32 mUnk_0f4;
+ /* 0f8 */ unk32 mUnk_0f8;
+ /* 0fc */ s32 mUnk_0fc;
+ /* 100 */ s32 mUnk_100;
+ /* 104 */ s32 mUnk_104;
+ /* 108 */ unk32 mUnk_108;
+ /* 10c */ unk32 mUnk_10c;
+ /* 110 */ unk32 mUnk_110;
+ /* 114 */ unk32 mUnk_114;
+ /* 118 */ unk32 mUnk_118;
+ /* 11c */ s32 mUnk_11c;
+ /* 120 */ Vec3p mUnk_120;
+ /* 12c */
+
+ /* 00 */ ~UnkStruct_027e0fd4() override;
+ /* 08 */ bool vfunc_08() override;
+ /* 0c */ bool vfunc_0c() override;
+ /* 10 */ bool vfunc_10(s32 *param1) override;
+ /* 14 */ bool vfunc_14(u16 *index, unk32 param2) override;
+ /* 18 */ void Clear() override;
+ /* 1c */ virtual void vfunc_1c();
+ /* 20 */
+
+ UnkStruct_027e0fd4();
+ s32 func_Ov000_020b4c2c();
+ void func_ov000_020b4c4c(Vec3p *param1, s32 size);
+ void func_ov000_020b4d00();
+ unk32 func_ov000_020b4d28(u32 *param1, s32 *param2, s32 *param3);
+ unk32 func_ov000_020b5034(Vec3p *param1);
+ bool func_ov000_020b50e0();
+ bool func_ov000_020b50f8();
+ unk32 func_ov000_020b510c();
+ void func_ov000_020b5160(u32 *param1, u32 param2);
+ bool func_ov000_020b5268(unk32 param1, Vec3p *param2, unk32 param3);
+ u32 func_ov000_020b5360(s32 param1, s32 param2);
+ void func_ov000_020b53c4(unk32 *param1);
+ bool func_ov000_020b53f4(unk32 param1, unk32 param2, u32 param3);
+ static void func_ov000_020b5420(unk32 *param1, UnkStruct_027e0fd4 *param2);
+ void func_ov000_020b542c(u32 param1);
+ void func_ov000_020b54c8();
+ void func_ov000_020b5514(Vec3p *param1, Vec3p *param2);
+ void func_ov000_020b5cb4(Vec3p *param1, Vec3p *param2, s32 *param3, s32 *param4);
+ s32 func_ov000_020b6af0(unk32 *param1);
+ void func_ov000_020b6ba4(s32 param1, s32 param2);
+ bool func_ov000_020b6e70();
+};
diff --git a/include/Player/HealthManager.hpp b/include/Player/HealthManager.hpp
index 5ebb7181..7e36decc 100644
--- a/include/Player/HealthManager.hpp
+++ b/include/Player/HealthManager.hpp
@@ -3,6 +3,7 @@
#include "global.h"
#include "types.h"
+#include "Save/SaveItemManager.hpp"
#include "System/SysNew.hpp"
class HealthManager : public SysObject {
@@ -17,6 +18,10 @@ public:
/* 0e */ unk8 mUnk_0e;
/* 0f */ unk8 mUnk_0f;
/* 10 */
+
+ void Save(SaveItemManager *save);
+ void IncreaseMaxHealth(s16 amount);
+ void UpdateShipMaxHealth();
};
extern HealthManager *gHealthManager;
diff --git a/include/Player/LinkStateCutscene.hpp b/include/Player/LinkStateCutscene.hpp
index 514f2b32..52b40e42 100644
--- a/include/Player/LinkStateCutscene.hpp
+++ b/include/Player/LinkStateCutscene.hpp
@@ -6,6 +6,20 @@
#include "Item/Item.hpp"
#include "Player/LinkStateBase.hpp"
+#include "Unknown/UnkStruct_02037750.hpp"
+
+class UnkStruct_ov004_0210abb8 : public UnkStruct_02037750 {
+public:
+ /* 00 (base) */
+ /* 20 */ unk32 mUnk_20;
+ /* 24 */
+
+ /* 00 */ ~UnkStruct_ov004_0210abb8() override;
+ /* 08 */ void vfunc_08(unk32 param1) override;
+ /* 24 */ void vfunc_24(unk32 param1) override;
+ /* 2c */ unk32 vfunc_2c(s32 param1) override;
+ /* 34 */
+};
class LinkStateCutscene : public LinkStateBase {
public:
@@ -58,4 +72,28 @@ public:
/* 38 */ virtual bool vfunc_38() override;
/* 40 */ virtual bool vfunc_40() override;
/* 44 */
+
+ bool func_ov000_020b1e98(s32 param1);
+ bool func_ov000_020b1eb8();
+ bool func_ov000_020b1eec();
+ void StopVerticalVelocity();
+ void func_ov000_020b2568();
+ void func_ov000_020b2598();
+ void func_ov000_020b2ba4();
+ void func_ov000_020b2ce4(unk32 param1, s16 param2);
+ void func_ov000_020b2cf0();
+ void func_ov000_020b2d60();
+ bool func_ov000_020b2d8c();
+ void func_ov000_020b2e84();
+ void func_ov000_020b2f48(unk32 param1, unk32 param2);
+ void func_ov000_020b2f70(unk32 param1, void *param2, unk32 *param3);
+ void ChangeToMoveState();
+ bool func_ov000_020b2fac();
+ void func_ov000_020b3024(Vec3p *param1, unk32 param2);
+ void func_ov000_020b305c(Vec3p *param1, Vec3p *param2);
+ void func_ov000_020b309c(Vec3p *param1);
+ void func_ov000_020b30e4(u32 param1, unk32 param2, unk32 param3);
+ void func_ov000_020b3278(s32 param1, s32 *param2);
+ void func_ov000_020b35d8(s32 param1, s32 param2);
+ void func_ov000_020b38dc(u32 param1, u32 param2);
};
diff --git a/include/Player/PlayerControl.hpp b/include/Player/PlayerControl.hpp
index de0da848..d8db3f65 100644
--- a/include/Player/PlayerControl.hpp
+++ b/include/Player/PlayerControl.hpp
@@ -124,6 +124,12 @@ public:
bool IsTouchingFast();
bool IsTappedNow();
bool func_ov00_020b13c4();
+
+ void ResetTouchWorld();
+ void InitTouchMovement();
+ void func_ov000_020b7924(s32 param1);
+ void ApplyTouchWorld(Vec3p *result, unk32 scale);
+ bool func_ov000_020b7d6c();
};
extern PlayerControl *gPlayerControl;
diff --git a/include/Player/PlayerControlData.hpp b/include/Player/PlayerControlData.hpp
index c44a00c5..f309953c 100644
--- a/include/Player/PlayerControlData.hpp
+++ b/include/Player/PlayerControlData.hpp
@@ -58,4 +58,48 @@ public:
/* 19c */ unk16 mUnk_19c;
/* 19e */ unk16 mUnk_19e;
/* 1a0 */
+
+ /* 00 */ virtual void vfunc_00();
+ /* 04 */ virtual ~PlayerControlData();
+ /* 0c */ virtual unk32 vfunc_0c();
+ /* 10 */ virtual void vfunc_10() = 0;
+ /* 14 */ virtual void vfunc_14() = 0;
+ /* 18 */ virtual void vfunc_18();
+ /* 1c */ virtual void vfunc_1c();
+ /* 20 */ virtual void vfunc_20();
+ /* 24 */ virtual void vfunc_24();
+ /* 28 */ virtual void vfunc_28();
+ /* 2c */ virtual void vfunc_2c();
+ /* 30 */ virtual void vfunc_30();
+ /* 34 */ virtual void vfunc_34();
+ /* 38 */ virtual void vfunc_38() = 0;
+ /* 3c */ virtual void vfunc_3c();
+ /* 40 */ virtual void vfunc_40();
+ /* 44 */ virtual void vfunc_44();
+ /* 48 */ virtual void vfunc_48(unk32 param1, unk32 param2, unk32 param3, s16 param4);
+ /* 4c */ virtual void vfunc_4c();
+ /* 50 */ virtual void vfunc_50();
+ /* 54 */ virtual void vfunc_54();
+ /* 58 */ virtual void vfunc_58();
+ /* 5c */ virtual void vfunc_5c();
+ /* 60 */ virtual void vfunc_60(unk32 param1, unk32 param2, s32 param3);
+ /* 64 */ virtual void vfunc_64();
+ /* 68 */ virtual void vfunc_68(unk32 param1, unk32 param2);
+ /* 6c */ virtual void vfunc_6c(s32 param1, Vec3p *param2);
+ /* 70 */ virtual void vfunc_70();
+ /* 74 */ virtual unk32 vfunc_74();
+ /* 78 */ virtual unk32 vfunc_78();
+ /* 7c */ virtual unk32 vfunc_7c();
+ /* 80 */
+
+ void func_ov000_020b4440();
+ void func_ov000_020b4460(s32 param1);
+ void func_ov000_020b44d4(s32 param1, u32 param2);
+ void func_ov000_020b4558(s32 param1, u32 param2);
+ void func_ov000_020b45e0();
+ void func_ov000_020b45f8(unk32 *param1, unk8 param2, unk8 param3);
+ void func_ov000_020b464c(unk32 *param1, unk8 param2, unk8 param3);
+ void func_ov000_020b484c(s32 param1, s32 param2, s32 param3);
+ void func_ov000_020b4944(unk32 param1, u32 param2, s32 param3);
+ void func_ov000_020b4a00(s32 *param1, s32 *param2, s32 *param3, s32 param4);
};
diff --git a/src/00_Core/DTCM/UnkStruct_027e0fd4.cpp b/src/00_Core/DTCM/UnkStruct_027e0fd4.cpp
new file mode 100644
index 00000000..893e5664
--- /dev/null
+++ b/src/00_Core/DTCM/UnkStruct_027e0fd4.cpp
@@ -0,0 +1,37 @@
+#include "DTCM/UnkStruct_027e0fd4.hpp"
+
+void UnkStruct_027e0fd4_Unk1::vfunc_08(u16 *param1, unk32 param2, u32 param3) {}
+bool UnkStruct_027e0fd4_Unk1::vfunc_10(s32 *param1) {}
+bool UnkStruct_027e0fd4_Unk1::vfunc_14() {}
+s32 func_ov000_020b4b60(s32 a, s32 b) {}
+UnkStruct_027e0fd4::UnkStruct_027e0fd4() {}
+UnkStruct_027e0fd4::~UnkStruct_027e0fd4() {}
+void UnkStruct_027e0fd4::vfunc_1c() {}
+s32 UnkStruct_027e0fd4::func_Ov000_020b4c2c() {}
+void UnkStruct_027e0fd4::func_ov000_020b4c4c(Vec3p *param1, s32 size) {}
+void UnkStruct_027e0fd4::func_ov000_020b4d00() {}
+unk32 UnkStruct_027e0fd4::func_ov000_020b4d28(u32 *param1, s32 *param2, s32 *param3) {}
+unk32 UnkStruct_027e0fd4::func_ov000_020b5034(Vec3p *param1) {}
+bool UnkStruct_027e0fd4::func_ov000_020b50e0() {}
+bool UnkStruct_027e0fd4::func_ov000_020b50f8() {}
+unk32 UnkStruct_027e0fd4::func_ov000_020b510c() {}
+void UnkStruct_027e0fd4::func_ov000_020b5160(u32 *param1, u32 param2) {}
+bool UnkStruct_027e0fd4::func_ov000_020b5268(unk32 param1, Vec3p *param2, unk32 param3) {}
+UnkStruct_027e0fd4_Unk1::~UnkStruct_027e0fd4_Unk1() {}
+u32 UnkStruct_027e0fd4::func_ov000_020b5360(s32 param1, s32 param2) {}
+void UnkStruct_027e0fd4::func_ov000_020b53c4(unk32 *param1) {}
+bool UnkStruct_027e0fd4::func_ov000_020b53f4(unk32 param1, unk32 param2, u32 param3) {}
+void UnkStruct_027e0fd4::func_ov000_020b5420(unk32 *param1, UnkStruct_027e0fd4 *param2) {}
+void UnkStruct_027e0fd4::func_ov000_020b542c(u32 param1) {}
+void UnkStruct_027e0fd4::Clear() {}
+void UnkStruct_027e0fd4::func_ov000_020b54c8() {}
+void UnkStruct_027e0fd4::func_ov000_020b5514(Vec3p *param1, Vec3p *param2) {}
+void UnkStruct_027e0fd4::func_ov000_020b5cb4(Vec3p *param1, Vec3p *param2, s32 *param3, s32 *param4) {}
+s32 UnkStruct_027e0fd4::func_ov000_020b6af0(unk32 *param1) {}
+void UnkStruct_027e0fd4::func_ov000_020b6ba4(s32 param1, s32 param2) {}
+bool UnkStruct_027e0fd4::func_ov000_020b6e70() {}
+bool UnkStruct_027e0fd4::vfunc_08() {}
+bool UnkStruct_027e0fd4::vfunc_0c() {}
+bool UnkStruct_027e0fd4::vfunc_10(s32 *param1) {}
+bool UnkStruct_027e0fd4::vfunc_14(u16 *index, unk32 param2) {}
+unk32 UnkStruct_027e0fd4_Unk1::vfunc_0c() {} \ No newline at end of file
diff --git a/src/00_Core/Player/HealthManager.cpp b/src/00_Core/Player/HealthManager.cpp
new file mode 100644
index 00000000..aef87357
--- /dev/null
+++ b/src/00_Core/Player/HealthManager.cpp
@@ -0,0 +1,5 @@
+#include "Player/HealthManager.hpp"
+
+void HealthManager::Save(SaveItemManager *save) {}
+void HealthManager::IncreaseMaxHealth(s16 amount) {}
+void HealthManager::UpdateShipMaxHealth() {}
diff --git a/src/00_Core/Player/LinkStateCutscene.cpp b/src/00_Core/Player/LinkStateCutscene.cpp
new file mode 100644
index 00000000..be25ba5b
--- /dev/null
+++ b/src/00_Core/Player/LinkStateCutscene.cpp
@@ -0,0 +1,37 @@
+#include "Player/LinkStateCutscene.hpp"
+
+void LinkStateCutscene::vfunc_00() {}
+void UnkStruct_ov004_0210abb8::vfunc_08(unk32 param1) {}
+bool LinkStateCutscene::func_ov000_020b1e98(s32 param1) {}
+bool LinkStateCutscene::func_ov000_020b1eb8() {}
+bool LinkStateCutscene::func_ov000_020b1eec() {}
+void LinkStateCutscene::CreateDebugHierarchy() {}
+void LinkStateCutscene::OnStateEnter() {}
+void LinkStateCutscene::OnStateLeave(s32 param1) {}
+LinkStateId LinkStateCutscene::GetId() {}
+void LinkStateCutscene::vfunc_1c() {}
+void LinkStateCutscene::StopVerticalVelocity() {}
+void LinkStateCutscene::func_ov000_020b2568() {}
+void LinkStateCutscene::func_ov000_020b2598() {}
+void LinkStateCutscene::func_ov000_020b2ba4() {}
+void LinkStateCutscene::func_ov000_020b2ce4(unk32 param1, s16 param2) {}
+void LinkStateCutscene::func_ov000_020b2cf0() {}
+void LinkStateCutscene::func_ov000_020b2d60() {}
+bool LinkStateCutscene::func_ov000_020b2d8c() {}
+void LinkStateCutscene::func_ov000_020b2e84() {}
+bool LinkStateCutscene::vfunc_24(s32 param1) {}
+bool LinkStateCutscene::vfunc_28() {}
+void LinkStateCutscene::func_ov000_020b2f48(unk32 param1, unk32 param2) {}
+void LinkStateCutscene::func_ov000_020b2f70(unk32 param1, void *param2, unk32 *param3) {}
+void LinkStateCutscene::ChangeToMoveState() {}
+bool LinkStateCutscene::func_ov000_020b2fac() {}
+void LinkStateCutscene::func_ov000_020b3024(Vec3p *param1, unk32 param2) {}
+void LinkStateCutscene::func_ov000_020b305c(Vec3p *param1, Vec3p *param2) {}
+void LinkStateCutscene::func_ov000_020b309c(Vec3p *param1) {}
+void LinkStateCutscene::func_ov000_020b30e4(u32 param1, unk32 param2, unk32 param3) {}
+void LinkStateCutscene::func_ov000_020b3278(s32 param1, s32 *param2) {}
+void LinkStateCutscene::func_ov000_020b35d8(s32 param1, s32 param2) {}
+void LinkStateCutscene::func_ov000_020b38dc(u32 param1, u32 param2) {}
+bool LinkStateCutscene::vfunc_40() {}
+bool LinkStateCutscene::vfunc_38() {}
+UnkStruct_ov004_0210abb8::~UnkStruct_ov004_0210abb8() {}
diff --git a/src/00_Core/Player/PlayerControlData.cpp b/src/00_Core/Player/PlayerControlData.cpp
new file mode 100644
index 00000000..ae27e116
--- /dev/null
+++ b/src/00_Core/Player/PlayerControlData.cpp
@@ -0,0 +1,37 @@
+#include "Player/PlayerControlData.hpp"
+
+void PlayerControlData::vfunc_00() {}
+void PlayerControlData::func_ov000_020b4440() {}
+void PlayerControlData::func_ov000_020b4460(s32 param1) {}
+void PlayerControlData::func_ov000_020b44d4(s32 param1, u32 param2) {}
+void PlayerControlData::func_ov000_020b4558(s32 param1, u32 param2) {}
+void PlayerControlData::func_ov000_020b45e0() {}
+void PlayerControlData::func_ov000_020b45f8(unk32 *param1, unk8 param2, unk8 param3) {}
+void PlayerControlData::func_ov000_020b464c(unk32 *param1, unk8 param2, unk8 param3) {}
+void PlayerControlData::vfunc_60(unk32 param1, unk32 param2, s32 param3) {}
+void PlayerControlData::vfunc_68(unk32 param1, unk32 param2) {}
+void PlayerControlData::vfunc_64() {}
+void PlayerControlData::vfunc_20() {}
+void PlayerControlData::vfunc_24() {}
+void PlayerControlData::vfunc_28() {}
+void PlayerControlData::vfunc_2c() {}
+void PlayerControlData::vfunc_30() {}
+void PlayerControlData::vfunc_34() {}
+unk32 PlayerControlData::vfunc_7c() {}
+unk32 PlayerControlData::vfunc_74() {}
+unk32 PlayerControlData::vfunc_78() {}
+void PlayerControlData::func_ov000_020b484c(s32 param1, s32 param2, s32 param3) {}
+void PlayerControlData::vfunc_6c(s32 param1, Vec3p *param2) {}
+void PlayerControlData::vfunc_5c() {}
+void PlayerControlData::vfunc_3c() {}
+void PlayerControlData::vfunc_40() {}
+void PlayerControlData::vfunc_44() {}
+void PlayerControlData::vfunc_48(unk32 param1, unk32 param2, unk32 param3, s16 param4) {}
+void PlayerControlData::vfunc_4c() {}
+void PlayerControlData::vfunc_70() {}
+void PlayerControlData::vfunc_50() {}
+void PlayerControlData::vfunc_54() {}
+void PlayerControlData::vfunc_58() {}
+void PlayerControlData::func_ov000_020b4944(unk32 param1, u32 param2, s32 param3) {}
+void PlayerControlData::func_ov000_020b4a00(s32 *param1, s32 *param2, s32 *param3, s32 param4) {}
+unk32 PlayerControlData::vfunc_0c() {}
diff --git a/src/00_Core/Player/PlayerControl_2.cpp b/src/00_Core/Player/PlayerControl_2.cpp
new file mode 100644
index 00000000..7535837a
--- /dev/null
+++ b/src/00_Core/Player/PlayerControl_2.cpp
@@ -0,0 +1,7 @@
+#include "Player/PlayerControl.hpp"
+
+void PlayerControl::ResetTouchWorld() {}
+void PlayerControl::InitTouchMovement() {}
+void PlayerControl::func_ov000_020b7924(s32 param1) {}
+void PlayerControl::ApplyTouchWorld(Vec3p *result, unk32 scale) {}
+bool PlayerControl::func_ov000_020b7d6c() {}