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) {}