summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2025-01-10 09:27:01 +0100
committerAetias <aetias@outlook.com>2025-01-10 09:27:01 +0100
commit8cda3ca2d7f5fe424cc1a649baec2ff992368e62 (patch)
treeeea50a10b75b665781e0a7a9b89becac36173f2c
parenta76eefa1a52f9d985ad5352c13cae1d4299cecb2 (diff)
PlayerControl: Decomp 9%
-rw-r--r--config/eur/arm9/overlays/ov015/symbols.txt6
-rw-r--r--config/usa/arm9/overlays/ov015/symbols.txt6
-rw-r--r--include/Player/PlayerControl.hpp2
-rw-r--r--src/00_Core/Player/PlayerControl.cpp49
4 files changed, 54 insertions, 9 deletions
diff --git a/config/eur/arm9/overlays/ov015/symbols.txt b/config/eur/arm9/overlays/ov015/symbols.txt
index bd5bfb75..a230d26c 100644
--- a/config/eur/arm9/overlays/ov015/symbols.txt
+++ b/config/eur/arm9/overlays/ov015/symbols.txt
@@ -613,7 +613,7 @@ func_ov015_0213cc98 kind:function(arm,size=0x14) addr:0x213cc98
func_ov015_0213ccac kind:function(arm,size=0x38) addr:0x213ccac
func_ov015_0213cce4 kind:function(arm,size=0x78) addr:0x213cce4
func_ov015_0213cd5c kind:function(arm,size=0xf0) addr:0x213cd5c
-func_ov015_0213ce4c kind:function(arm,size=0x10) addr:0x213ce4c
+_ZN24UnkStruct_ov015_0213ce4c11GetInstanceEv kind:function(arm,size=0x10) addr:0x213ce4c
func_ov015_0213ce5c kind:function(arm,size=0xb4) addr:0x213ce5c
func_ov015_0213cf10 kind:function(arm,size=0x20) addr:0x213cf10
func_ov015_0213cf30 kind:function(arm,size=0x48) addr:0x213cf30
@@ -640,8 +640,8 @@ func_ov015_0213d87c kind:function(arm,size=0x28c) addr:0x213d87c
func_ov015_0213db08 kind:function(arm,size=0xb0) addr:0x213db08
func_ov015_0213dbb8 kind:function(arm,size=0xb0) addr:0x213dbb8
func_ov015_0213dc68 kind:function(arm,size=0x48) addr:0x213dc68
-func_ov015_0213dcb0 kind:function(arm,size=0x8) addr:0x213dcb0
-func_ov015_0213dcb8 kind:function(arm,size=0x8) addr:0x213dcb8
+_ZN24UnkStruct_ov015_0213ce4c8GetUnk3fEv kind:function(arm,size=0x8) addr:0x213dcb0
+_ZN24UnkStruct_ov015_0213ce4c8GetUnk40Ev kind:function(arm,size=0x8) addr:0x213dcb8
func_ov015_0213dcc0 kind:function(arm,size=0x4) addr:0x213dcc0
func_ov015_0213dcc4 kind:function(arm,size=0x8c) addr:0x213dcc4
func_ov015_0213dd50 kind:function(arm,size=0x24) addr:0x213dd50
diff --git a/config/usa/arm9/overlays/ov015/symbols.txt b/config/usa/arm9/overlays/ov015/symbols.txt
index a0c36c29..d48f35ff 100644
--- a/config/usa/arm9/overlays/ov015/symbols.txt
+++ b/config/usa/arm9/overlays/ov015/symbols.txt
@@ -613,7 +613,7 @@ func_ov015_0213cc98 kind:function(arm,size=0x14) addr:0x213cc18
func_ov015_0213ccac kind:function(arm,size=0x38) addr:0x213cc2c
func_ov015_0213cce4 kind:function(arm,size=0x78) addr:0x213cc64
func_ov015_0213cd5c kind:function(arm,size=0xf0) addr:0x213ccdc
-func_ov015_0213ce4c kind:function(arm,size=0x10) addr:0x213cdcc
+_ZN24UnkStruct_ov015_0213ce4c11GetInstanceEv kind:function(arm,size=0x10) addr:0x213cdcc
func_ov015_0213ce5c kind:function(arm,size=0xb4) addr:0x213cddc
func_ov015_0213cf10 kind:function(arm,size=0x20) addr:0x213ce90
func_ov015_0213cf30 kind:function(arm,size=0x48) addr:0x213ceb0
@@ -640,8 +640,8 @@ func_ov015_0213d87c kind:function(arm,size=0x28c) addr:0x213d7fc
func_ov015_0213db08 kind:function(arm,size=0xb0) addr:0x213da88
func_ov015_0213dbb8 kind:function(arm,size=0xb0) addr:0x213db38
func_ov015_0213dc68 kind:function(arm,size=0x48) addr:0x213dbe8
-func_ov015_0213dcb0 kind:function(arm,size=0x8) addr:0x213dc30
-func_ov015_0213dcb8 kind:function(arm,size=0x8) addr:0x213dc38
+_ZN24UnkStruct_ov015_0213ce4c8GetUnk3fEv kind:function(arm,size=0x8) addr:0x213dc30
+_ZN24UnkStruct_ov015_0213ce4c8GetUnk40Ev kind:function(arm,size=0x8) addr:0x213dc38
func_ov015_0213dcc0 kind:function(arm,size=0x4) addr:0x213dc40
func_ov015_0213dcc4 kind:function(arm,size=0x8c) addr:0x213dc44
func_ov015_0213dd50 kind:function(arm,size=0x24) addr:0x213dcd0
diff --git a/include/Player/PlayerControl.hpp b/include/Player/PlayerControl.hpp
index e00aafaa..de2dd560 100644
--- a/include/Player/PlayerControl.hpp
+++ b/include/Player/PlayerControl.hpp
@@ -46,7 +46,7 @@ public:
/* 79 */ bool mUsingEquipItem;
/* 7a */ bool mUnk_7a;
/* 7b */ bool mUnk_7b;
- /* 7c */ s8 mUnk_7c;
+ /* 7c */ u8 mUnk_7c;
/* 7d */ bool mUnk_7d;
/* 7e */ u8 mUnk_7e;
/* 7f */ bool mUnk_7f;
diff --git a/src/00_Core/Player/PlayerControl.cpp b/src/00_Core/Player/PlayerControl.cpp
index 26c2c63c..58441736 100644
--- a/src/00_Core/Player/PlayerControl.cpp
+++ b/src/00_Core/Player/PlayerControl.cpp
@@ -138,8 +138,53 @@ ARM void PlayerControl::func_ov00_020af06c() {
}
}
-void PlayerControl::UpdateUsingEquipItem() {}
-bool PlayerControl::func_ov00_020af2d4(u32 param1, bool param2) {}
+void PlayerControl::UpdateUsingEquipItem() {
+ if ((data_027e05f8.mUnk_0 & 0x300) != 0 && this->func_ov00_020aeef8()) {
+ mUsingEquipItem = true;
+ return;
+ }
+ mUsingEquipItem = false;
+}
+
+struct UnkStruct_ov015_0213ce4c {
+ /* 00 */ unk8 mUnk_00[0x3d];
+ /* 3d */ bool mUnk_3d;
+ /* 3e */ unk8 mUnk_3e[0x1];
+ /* 3f */ bool mUnk_3f;
+ /* 40 */ bool mUnk_40;
+ /* 41 */
+
+ static UnkStruct_ov015_0213ce4c *GetInstance();
+
+ bool GetUnk3f();
+ bool GetUnk40();
+};
+
+bool PlayerControl::func_ov00_020af2d4(u32 param1, bool param2) {
+ if (data_027e0d38->func_ov000_02078b40() == 2 && param2) {
+ if (UnkStruct_ov015_0213ce4c::GetInstance()->mUnk_3d) {
+ return false;
+ }
+ if (UnkStruct_ov015_0213ce4c::GetInstance()->GetUnk3f() || UnkStruct_ov015_0213ce4c::GetInstance()->GetUnk40()) {
+ return false;
+ }
+ }
+
+ if (mUnk_7c) {
+ bool unk1 = true;
+ bool unk2 = true;
+ if ((param1 & 0x2) != 0 && (data_02056be4[data_027e077c.mUnk_0] & 0x1) != 0) {
+ unk2 = false;
+ }
+ if (!unk2 && ((param1 & 0x1) == 0 || !this->func_ov00_020aeef8() || !data_027e103c->mUnk_24)) {
+ unk1 = false;
+ }
+ return unk1;
+ } else {
+ return (param1 & 0x4) != 0;
+ }
+}
+
bool PlayerControl::CheckTouchedNow(u32 param1) {}
bool PlayerControl::CheckUntouchedNow(u32 param1) {}
bool PlayerControl::CheckTouching(u32 param1) {}