summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2025-01-09 08:24:32 +0100
committerAetias <aetias@outlook.com>2025-01-09 08:24:32 +0100
commita76eefa1a52f9d985ad5352c13cae1d4299cecb2 (patch)
tree10ad5d8d9564ae78ecf4d8313f6d87c975b1c265
parent6b9c7701fe475de8456b7fd67969486c604fc834 (diff)
PlayerControl: Decomp 7%
-rw-r--r--config/eur/arm9/overlays/ov000/symbols.txt4
-rw-r--r--config/eur/arm9/overlays/ov014/symbols.txt4
-rw-r--r--config/usa/arm9/overlays/ov000/symbols.txt4
-rw-r--r--config/usa/arm9/overlays/ov014/symbols.txt4
-rw-r--r--include/Actor/ActorNavi.hpp28
-rw-r--r--include/Actor/ActorNaviBase.hpp34
-rw-r--r--include/DTCM/UnkStruct_027e05f8.hpp2
-rw-r--r--include/DTCM/UnkStruct_027e103c.hpp5
-rw-r--r--include/DTCM/UnkStruct_027e1098.hpp21
-rw-r--r--include/Item/ItemManager.hpp6
-rw-r--r--include/Player/EquipBombchu.hpp2
-rw-r--r--include/Player/PlayerControl.hpp2
-rw-r--r--src/00_Core/Item/ItemManager.cpp4
-rw-r--r--src/00_Core/Player/LinkStateItem.cpp21
-rw-r--r--src/00_Core/Player/PlayerControl.cpp39
15 files changed, 142 insertions, 38 deletions
diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt
index cf04b79f..6e857b73 100644
--- a/config/eur/arm9/overlays/ov000/symbols.txt
+++ b/config/eur/arm9/overlays/ov000/symbols.txt
@@ -3240,7 +3240,7 @@ func_ov000_020cef9c kind:function(arm,size=0x20) addr:0x20cef9c
func_ov000_020cefbc kind:function(arm,size=0x20) addr:0x20cefbc
func_ov000_020cefdc kind:function(arm,size=0x20) addr:0x20cefdc
func_ov000_020ceffc kind:function(arm,size=0x20) addr:0x20ceffc
-_Z19func_ov000_020cf01cPi kind:function(arm,size=0x20) addr:0x20cf01c
+_ZN18UnkStruct_027e103c19func_ov000_020cf01cEv kind:function(arm,size=0x20) addr:0x20cf01c
func_ov000_020cf03c kind:function(arm,size=0x20) addr:0x20cf03c
func_ov000_020cf05c kind:function(arm,size=0x20) addr:0x20cf05c
func_ov000_020cf07c kind:function(arm,size=0x20) addr:0x20cf07c
@@ -3288,7 +3288,7 @@ func_ov000_020cf7e8 kind:function(arm,size=0x7c) addr:0x20cf7e8
func_ov000_020cf864 kind:function(arm,size=0x98) addr:0x20cf864
func_ov000_020cf8fc kind:function(arm,size=0x4c) addr:0x20cf8fc
func_ov000_020cf948 kind:function(arm,size=0x94) addr:0x20cf948
-_Z19func_ov000_020cf9dciii kind:function(arm,size=0x48) addr:0x20cf9dc
+_ZN18UnkStruct_027e103c19func_ov000_020cf9dcEii kind:function(arm,size=0x48) addr:0x20cf9dc
func_ov000_020cfa24 kind:function(arm,size=0x40) addr:0x20cfa24
func_ov000_020cfa64 kind:function(arm,size=0xc) addr:0x20cfa64
func_ov000_020cfa70 kind:function(arm,size=0x40) addr:0x20cfa70
diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt
index 4046d529..5bf71890 100644
--- a/config/eur/arm9/overlays/ov014/symbols.txt
+++ b/config/eur/arm9/overlays/ov014/symbols.txt
@@ -8,7 +8,7 @@ func_ov014_0211f980 kind:function(arm,size=0x130) addr:0x211f980
func_ov014_0211fab0 kind:function(arm,size=0x1dc) addr:0x211fab0
func_ov014_0211fc8c kind:function(arm,size=0x50) addr:0x211fc8c
func_ov014_0211fcdc kind:function(thumb,size=0x28) addr:0x211fcdc
-_Z19func_ov014_0211fd04Pi kind:function(thumb,size=0x4c) addr:0x211fd04
+_ZN18UnkStruct_027e109819func_ov014_0211fd04Ev kind:function(thumb,size=0x4c) addr:0x211fd04
func_ov014_0211fd50 kind:function(arm,size=0x30) addr:0x211fd50
func_ov014_0211fd80 kind:function(arm,size=0x10) addr:0x211fd80
func_ov014_0211fd90 kind:function(arm,size=0x14) addr:0x211fd90
@@ -917,7 +917,7 @@ func_ov014_0213eb5c kind:function(thumb,size=0x20) addr:0x213eb5c
func_ov014_0213eb7c kind:function(thumb,size=0x28) addr:0x213eb7c
func_ov014_0213eba4 kind:function(arm,size=0x9c) addr:0x213eba4
func_ov014_0213ec40 kind:function(arm,size=0x24) addr:0x213ec40
-_Z19func_ov014_0213ec64i kind:function(arm,size=0x48) addr:0x213ec64
+_ZN12EquipBombchu19func_ov014_0213ec64Ev kind:function(arm,size=0x48) addr:0x213ec64
func_ov014_0213ecac kind:function(arm,size=0x8) addr:0x213ecac
func_ov014_0213ecb4 kind:function(arm,size=0xc0) addr:0x213ecb4
func_ov014_0213ed74 kind:function(arm,size=0x20) addr:0x213ed74
diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt
index 44246c4c..a23634dd 100644
--- a/config/usa/arm9/overlays/ov000/symbols.txt
+++ b/config/usa/arm9/overlays/ov000/symbols.txt
@@ -3240,7 +3240,7 @@ func_ov000_020cef9c kind:function(arm,size=0x20) addr:0x20cef3c
func_ov000_020cefbc kind:function(arm,size=0x20) addr:0x20cef5c
func_ov000_020cefdc kind:function(arm,size=0x20) addr:0x20cef7c
func_ov000_020ceffc kind:function(arm,size=0x20) addr:0x20cef9c
-_Z19func_ov000_020cf01cPi kind:function(arm,size=0x20) addr:0x20cefbc
+_ZN18UnkStruct_027e103c19func_ov000_020cf01cEv kind:function(arm,size=0x20) addr:0x20cefbc
func_ov000_020cf03c kind:function(arm,size=0x20) addr:0x20cefdc
func_ov000_020cf05c kind:function(arm,size=0x20) addr:0x20ceffc
func_ov000_020cf07c kind:function(arm,size=0x20) addr:0x20cf01c
@@ -3288,7 +3288,7 @@ func_ov000_020cf7e8 kind:function(arm,size=0x7c) addr:0x20cf788
func_ov000_020cf864 kind:function(arm,size=0x98) addr:0x20cf804
func_ov000_020cf8fc kind:function(arm,size=0x4c) addr:0x20cf89c
func_ov000_020cf948 kind:function(arm,size=0x94) addr:0x20cf8e8
-_Z19func_ov000_020cf9dciii kind:function(arm,size=0x48) addr:0x20cf97c
+_ZN18UnkStruct_027e103c19func_ov000_020cf9dcEii kind:function(arm,size=0x48) addr:0x20cf97c
func_ov000_020cfa24 kind:function(arm,size=0x40) addr:0x20cf9c4
func_ov000_020cfa64 kind:function(arm,size=0xc) addr:0x20cfa04
func_ov000_020cfa70 kind:function(arm,size=0x40) addr:0x20cfa10
diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt
index 8456081e..bedfec37 100644
--- a/config/usa/arm9/overlays/ov014/symbols.txt
+++ b/config/usa/arm9/overlays/ov014/symbols.txt
@@ -8,7 +8,7 @@ func_ov014_0211f980 kind:function(arm,size=0x130) addr:0x211f900
func_ov014_0211fab0 kind:function(arm,size=0x1dc) addr:0x211fa30
func_ov014_0211fc8c kind:function(arm,size=0x50) addr:0x211fc0c
func_ov014_0211fcdc kind:function(thumb,size=0x28) addr:0x211fc5c
-_Z19func_ov014_0211fd04Pi kind:function(thumb,size=0x4c) addr:0x211fc84
+_ZN18UnkStruct_027e109819func_ov014_0211fd04Ev kind:function(thumb,size=0x4c) addr:0x211fc84
func_ov014_0211fd50 kind:function(arm,size=0x30) addr:0x211fcd0
func_ov014_0211fd80 kind:function(arm,size=0x10) addr:0x211fd00
func_ov014_0211fd90 kind:function(arm,size=0x14) addr:0x211fd10
@@ -917,7 +917,7 @@ func_ov014_0213eb5c kind:function(thumb,size=0x20) addr:0x213eab8
func_ov014_0213eb7c kind:function(thumb,size=0x28) addr:0x213ead8
func_ov014_0213eba4 kind:function(arm,size=0x9c) addr:0x213eb00
func_ov014_0213ec40 kind:function(arm,size=0x24) addr:0x213eb9c
-_Z19func_ov014_0213ec64i kind:function(arm,size=0x48) addr:0x213ebc0
+_ZN12EquipBombchu19func_ov014_0213ec64Ev kind:function(arm,size=0x48) addr:0x213ebc0
func_ov014_0213ecac kind:function(arm,size=0x8) addr:0x213ec08
func_ov014_0213ecb4 kind:function(arm,size=0xc0) addr:0x213ec10
func_ov014_0213ed74 kind:function(arm,size=0x20) addr:0x213ecd0
diff --git a/include/Actor/ActorNavi.hpp b/include/Actor/ActorNavi.hpp
index 36ce860d..bb6b15d4 100644
--- a/include/Actor/ActorNavi.hpp
+++ b/include/Actor/ActorNavi.hpp
@@ -1,3 +1,29 @@
#pragma once
-class ActorNavi;
+#include "global.h"
+#include "types.h"
+
+#include "Actor/Actor.hpp"
+#include "Actor/ActorNaviBase.hpp"
+#include "Render/ModelRender.hpp"
+
+class ActorNavi : public ActorNaviBase {
+public:
+ /* 000 (base) */
+ /* 294 */ ModelRender mUnk_294;
+ /* 2f0 */ void *mUnk_2f0;
+ /* 2f4 */ unk8 mUnk_2f4[0x40];
+ /* 334 */ unk32 mUnk_334;
+ /* 338 */ unk32 mUnk_338;
+ /* 33c */ unk32 mUnk_33c;
+ /* 340 */ unk16 mUnk_340;
+ /* 342 */ unk8 mUnk_342[0x2];
+ /* 344 */ unk32 mUnk_344;
+ /* 348 */ unk32 mUnk_348;
+ /* 34c */ unk8 mUnk_34c[0x68];
+ /* 3b4 */ unk32 mUnk_3b4;
+ /* 3b8 */ unk32 mUnk_3b8;
+ /* 3bc */ unk32 mUnk_3bc;
+ /* 3c0 */ unk8 mUnk_3c0[0x8];
+ /* 3c8 */
+};
diff --git a/include/Actor/ActorNaviBase.hpp b/include/Actor/ActorNaviBase.hpp
new file mode 100644
index 00000000..9b49aa13
--- /dev/null
+++ b/include/Actor/ActorNaviBase.hpp
@@ -0,0 +1,34 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Actor/Actor.hpp"
+#include "Render/ModelRender.hpp"
+
+class ActorNaviBase : public Actor {
+public:
+ /* 000 (base) */
+ /* 158 */ Vec3p mOffsetPos;
+ /* 164 */ u32 mUnk_164;
+ /* 168 */ unk8 mUnk_168[0x68];
+ /* 1d0 */ void *mUnk_1d0;
+ /* 164 */ unk8 mUnk_1d4[0x40];
+ /* 214 */ unk16 mUnk_214;
+ /* 216 */ unk8 mUnk_216[0xc];
+ /* 222 */ unk16 mUnk_222;
+ /* 224 */ unk8 mUnk_224[0x28];
+ /* 24c */ unk32 mUnk_24c;
+ /* 250 */ unk32 mUnk_250;
+ /* 254 */ unk32 mUnk_254;
+ /* 258 */ unk32 mUnk_258;
+ /* 25c */ unk32 mUnk_25c;
+ /* 260 */ unk32 mUnk_260;
+ /* 264 */ unk8 mUnk_264[0x1c];
+ /* 280 */ unk32 mUnk_280;
+ /* 284 */ unk32 mUnk_284;
+ /* 288 */ unk8 mUnk_288[0x2];
+ /* 28a */ unk16 mUnk_28a;
+ /* 28c */ unk8 mUnk_28c[0x8];
+ /* 294 */
+};
diff --git a/include/DTCM/UnkStruct_027e05f8.hpp b/include/DTCM/UnkStruct_027e05f8.hpp
index ad976a06..b46748ec 100644
--- a/include/DTCM/UnkStruct_027e05f8.hpp
+++ b/include/DTCM/UnkStruct_027e05f8.hpp
@@ -4,7 +4,7 @@
#include "types.h"
struct UnkStruct_027e05f8 {
- /* 0 */ unk16 mUnk_0;
+ /* 0 */ u16 mUnk_0;
/* 2 */ unk16 mUnk_2;
/* 4 */ unk16 mUnk_4;
/* 6 */
diff --git a/include/DTCM/UnkStruct_027e103c.hpp b/include/DTCM/UnkStruct_027e103c.hpp
index 62798d92..53550fe0 100644
--- a/include/DTCM/UnkStruct_027e103c.hpp
+++ b/include/DTCM/UnkStruct_027e103c.hpp
@@ -16,10 +16,13 @@ struct UnkStruct_027e103c {
/* 20 */ unk16 mUnk_20;
/* 22 */ s16 mUnk_22;
/* 24 */ u8 mUnk_24;
- /* 25 */ unk8 mUnk_25[7];
+ /* 25 */ unk8 mUnk_25[5];
+ /* 2a */ unk8 mUnk_2a;
/* 2c */
+ unk32 func_ov000_020cf01c();
void func_ov000_020cf2b8();
+ void func_ov000_020cf9dc(s32 param1, s32 param2);
};
extern UnkStruct_027e103c *data_027e103c;
diff --git a/include/DTCM/UnkStruct_027e1098.hpp b/include/DTCM/UnkStruct_027e1098.hpp
new file mode 100644
index 00000000..043e108a
--- /dev/null
+++ b/include/DTCM/UnkStruct_027e1098.hpp
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "types.h"
+
+struct UnkStruct_027e1098 {
+ /* 00 */ unk8 mUnk_00[0x38];
+ /* 38 */ unk32 mUnk_38;
+ /* 3c */ unk32 mUnk_3c;
+ /* 40 */ unk32 mUnk_40;
+ /* 44 */ unk32 mUnk_44;
+ /* 48 */ unk8 mUnk_48;
+ /* 49 */ unk8 mUnk_49;
+ /* 4a */ unk8 mUnk_4a;
+ /* 4b */ unk8 mUnk_4b;
+ /* 4c */ unk32 mUnk_4c;
+ /* 50 */
+
+ void func_ov014_0211fd04();
+};
+
+extern UnkStruct_027e1098 *data_027e1098;
diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp
index f3554a25..3599c17c 100644
--- a/include/Item/ItemManager.hpp
+++ b/include/Item/ItemManager.hpp
@@ -8,7 +8,7 @@ extern "C" {
#include "lib/math.h"
#include "types.h"
-#include "Actor/ActorNavi.hpp"
+#include "Actor/ActorNaviBase.hpp"
#include "DTCM/UnkStruct_027e0f78.hpp"
#include "Item/Item.hpp"
#include "Map/MapManager.hpp"
@@ -172,7 +172,7 @@ public:
/* 008 */ ItemFlag mForcedItem; // game crashes when any item besides this one is equipped
/* 00c */ u32 mHourglassSandFrames;
/* 010 */ FairyId mEquippedFairy;
- /* 014 */ ActorNavi *mFairies[FairyId_COUNT];
+ /* 014 */ ActorNaviBase *mFairies[FairyId_COUNT];
/* 020 */ u16 mEquipLoadTimer;
/* 022 */ u16 mNumRupees;
/* 024 */ u8 mNumGems[Gem_COUNT];
@@ -218,7 +218,7 @@ public:
// Fairy
FairyId GetEquippedFairy() const;
- ActorNavi *GetFairy(FairyId id) const;
+ ActorNaviBase *GetFairy(FairyId id) const;
u32 GetActiveFairyLevel(FairyId id) const;
u32 GetFairyLevel(FairyId id) const;
diff --git a/include/Player/EquipBombchu.hpp b/include/Player/EquipBombchu.hpp
index 449e6512..4e9651cf 100644
--- a/include/Player/EquipBombchu.hpp
+++ b/include/Player/EquipBombchu.hpp
@@ -41,4 +41,6 @@ public:
/* 34 */ virtual void vfunc_34(unk16 *param1) override; // func_ov58_0213ecb4
/* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov58_02199170
/* 50 */
+
+ void func_ov014_0213ec64();
};
diff --git a/include/Player/PlayerControl.hpp b/include/Player/PlayerControl.hpp
index 015c22bd..e00aafaa 100644
--- a/include/Player/PlayerControl.hpp
+++ b/include/Player/PlayerControl.hpp
@@ -48,7 +48,7 @@ public:
/* 7b */ bool mUnk_7b;
/* 7c */ s8 mUnk_7c;
/* 7d */ bool mUnk_7d;
- /* 7e */ s8 mUnk_7e;
+ /* 7e */ u8 mUnk_7e;
/* 7f */ bool mUnk_7f;
/* 80 */ bool mUnk_80;
/* 81 */ bool mFollowing;
diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp
index 1e92b51b..601dc299 100644
--- a/src/00_Core/Item/ItemManager.cpp
+++ b/src/00_Core/Item/ItemManager.cpp
@@ -121,7 +121,7 @@ ARM FairyId ItemManager::GetEquippedFairy() const {
return fairy;
}
-ARM ActorNavi *ItemManager::GetFairy(FairyId id) const {
+ARM ActorNaviBase *ItemManager::GetFairy(FairyId id) const {
return mFairies[id];
}
@@ -236,7 +236,7 @@ extern void *data_027e10a4;
extern "C" bool func_ov15_02136670(void *param1);
extern unk8 data_ov29_0217a4ac[];
ARM bool ItemManager::func_ov00_020ad790(unk32 param1) {
- unk32 unk1 = data_027e0d38->func_ov00_02078b40();
+ unk32 unk1 = data_027e0d38->func_ov000_02078b40();
if (unk1 == 2) return func_ov15_02136670(data_027e10a4);
if (data_027e0d38->mUnk_14 == 1) return false;
// NONMATCH: OverlayId_29 should be in constant pool
diff --git a/src/00_Core/Player/LinkStateItem.cpp b/src/00_Core/Player/LinkStateItem.cpp
index 5cbccd85..56b6bc37 100644
--- a/src/00_Core/Player/LinkStateItem.cpp
+++ b/src/00_Core/Player/LinkStateItem.cpp
@@ -1,4 +1,6 @@
#include "Player/LinkStateItem.hpp"
+#include "DTCM/UnkStruct_027e103c.hpp"
+#include "DTCM/UnkStruct_027e1098.hpp"
#include "Item/ItemManager.hpp"
#include "Player/EquipBomb.hpp"
#include "Player/EquipHammer.hpp"
@@ -7,15 +9,8 @@
#include "Player/PlayerControl.hpp"
#include "Save/AdventureFlags.hpp"
-extern unk32 func_ov000_020cf01c(s32 *param1);
-extern void func_ov000_020cf9dc(s32 param1, s32 param2, s32 param3);
-extern void func_ov014_0213ec64(s32 param1);
-extern void func_ov014_0211fd04(s32 *param1);
extern void func_ov000_020b7e6c(s32 *param1);
-extern s32 *data_027e103c;
-extern s32 *data_027e1098;
-
THUMB void LinkStateItem::vfunc_00() {}
ARM LinkStateId LinkStateItem::GetId() {
@@ -39,11 +34,11 @@ ARM void LinkStateItem::OnStateLeave(s32 param1) {
switch (this->mEquipId) {
case ItemFlag_BombchuBag:
- iVar3 = func_ov000_020cf01c(data_027e103c);
+ iVar3 = data_027e103c->func_ov000_020cf01c();
if (*(u8 *) (iVar3 + 0xe0) == '\0') {
- func_ov014_0213ec64((s32) GetEquipBombchu());
+ GetEquipBombchu()->func_ov014_0213ec64();
}
- func_ov014_0211fd04(data_027e1098);
+ data_027e1098->func_ov014_0211fd04();
break;
case ItemFlag_OshusSword: break;
case ItemFlag_WoodenShield: break;
@@ -54,9 +49,9 @@ ARM void LinkStateItem::OnStateLeave(s32 param1) {
case ItemFlag_Hammer: EquipHammer::StopUsing(this); break;
case ItemFlag_PotionA:
case ItemFlag_PotionB:
- iVar3 = (int) (data_027e103c);
- *(unk8 *) ((s16 *) data_027e103c + 0x15) = 0;
- func_ov000_020cf9dc(iVar3, 0, 0);
+ UnkStruct_027e103c *unk = data_027e103c;
+ unk->mUnk_2a = 0;
+ unk->func_ov000_020cf9dc(0, 0);
break;
case ItemFlag_Shovel: EquipScoop::StopUsing(this); break;
}
diff --git a/src/00_Core/Player/PlayerControl.cpp b/src/00_Core/Player/PlayerControl.cpp
index 32bc4098..26c2c63c 100644
--- a/src/00_Core/Player/PlayerControl.cpp
+++ b/src/00_Core/Player/PlayerControl.cpp
@@ -1,11 +1,13 @@
#include "Player/PlayerControl.hpp"
#include "Actor/ActorManager.hpp"
+#include "Actor/ActorNaviBase.hpp"
#include "DTCM/UnkStruct_027e05f8.hpp"
#include "DTCM/UnkStruct_027e077c.hpp"
#include "DTCM/UnkStruct_027e0c68.hpp"
#include "DTCM/UnkStruct_027e0d38.hpp"
#include "DTCM/UnkStruct_027e103c.hpp"
#include "Item/ItemManager.hpp"
+#include "Player/PlayerBase.hpp"
#include "Save/AdventureFlags.hpp"
ARM bool PlayerControl::func_ov00_020aeeac() {
@@ -82,8 +84,9 @@ ARM void PlayerControl::func_ov00_020af06c() {
mUsingEquipItem = false;
return;
}
+ bool usingEquipItem = mUsingEquipItem;
if (mUnk_7a) {
- mUnk_7b = mUsingEquipItem;
+ mUnk_7b = usingEquipItem;
}
if (gAdventureFlags->func_ov00_02097738() || data_027e0c68->mUnk_04 != 0) {
if (data_027e0d38->func_ov000_02078b40() != 2) {
@@ -91,27 +94,47 @@ ARM void PlayerControl::func_ov00_020af06c() {
}
return;
}
- if (gItemManager->mEquippedItem == ItemFlag_PotionA) {
- if (gItemManager->HasPotion(0)) {
+ ItemManager *itemManager = gItemManager;
+ if (itemManager->mEquippedItem == ItemFlag_PotionA) {
+ if (itemManager->HasPotion(0)) {
mUsingEquipItem = true;
return;
}
- } else if (gItemManager->mEquippedItem == ItemFlag_PotionB) {
- if (gItemManager->HasPotion(1)) {
+ } else if (itemManager->mEquippedItem == ItemFlag_PotionB) {
+ if (itemManager->HasPotion(1)) {
mUsingEquipItem = true;
return;
}
}
if (data_027e0d38->func_ov000_02078b40() == 2) {
- mUnk_7b = false;
- mUnk_7b = (mUnk_7b & gItemManager->func_ov00_020ad790(1)) != 0;
+ mUnk_7b = true;
+ mUnk_7b = (mUnk_7b & itemManager->func_ov00_020ad790(1)) != 0;
} else {
- if (((data_027e05f8.mUnk_0 & 0x300) == 0) || !func_ov00_020aeef8()) {
+ if (((data_027e05f8.mUnk_0 & 0x300) != 0) && mUnk_7e != 0 && func_ov00_020aeef8()) {
+ mUnk_7b = true;
+ } else {
if (((data_027e05f8.mUnk_0 & 0x300) == 0) && mUnk_83) {
mUnk_7b = false;
} else {
+ if (data_027e103c->mUnk_20 == 2 && !mTouch && func_ov00_020aeef8()) {
+ mUnk_7b = !mUnk_7b;
+ mUnk_7c = 0;
+ }
}
}
+ mUnk_7b = (mUnk_7b & itemManager->func_ov00_020ad790(1)) != 0;
+
+ if (itemManager->mEquippedItem == ItemFlag_Hammer && !mUsingEquipItem && mUnk_7b == true) {
+ ActorNaviBase *courageFairy = itemManager->GetFairy(FairyId_Courage);
+ if (courageFairy != NULL) {
+ mAimWorld.x = courageFairy->mPos.x;
+ mAimWorld.y = gPlayerPos.y + FLOAT_TO_Q20(0.5);
+ mAimWorld.z = courageFairy->mPos.z;
+ }
+ }
+ }
+ if (!mUnk_7a) {
+ mUsingEquipItem = mUnk_7b;
}
}