diff --git a/config/eur/arm9/overlays/ov059/symbols.txt b/config/eur/arm9/overlays/ov059/symbols.txt index 6e50d6e2..73a25090 100644 --- a/config/eur/arm9/overlays/ov059/symbols.txt +++ b/config/eur/arm9/overlays/ov059/symbols.txt @@ -16,13 +16,13 @@ _ZN13LinkStateItem19func_ov059_0219907cEv kind:function(arm,size=0x28) addr:0x21 _ZN13LinkStateItem19func_ov059_021990a4Ev kind:function(arm,size=0x268) addr:0x21990a4 _Z14GetEquipHammerv kind:function(arm,size=0x10) addr:0x219930c _ZN13LinkStateItem15StopUsingHammerEv kind:function(arm,size=0x20) addr:0x219931c -_ZN13ActorNaviBase19func_ov059_0219933cEj kind:function(arm,size=0xd70) addr:0x219933c -_ZN13ActorNaviBase19func_ov059_0219a0acEv kind:function(arm,size=0x95c) addr:0x219a0ac -_ZN13ActorNaviBase19func_ov059_0219aa08Ev kind:function(arm,size=0x1a0) addr:0x219aa08 -_ZN13ActorNaviBase19func_ov059_0219aba8Ej kind:function(arm,size=0x36c) addr:0x219aba8 -_ZN13ActorNaviBase19func_ov059_0219af14Ev kind:function(arm,size=0xb0) addr:0x219af14 -_ZN13ActorNaviBase19func_ov059_0219afc4Ev kind:function(arm,size=0x5c) addr:0x219afc4 -_ZN13ActorNaviBase19func_ov059_0219b020Ev kind:function(arm,size=0xf0) addr:0x219b020 +_ZN9ActorNavi19func_ov059_0219933cEj kind:function(arm,size=0xd70) addr:0x219933c +_ZN9ActorNavi19func_ov059_0219a0acEv kind:function(arm,size=0x95c) addr:0x219a0ac +_ZN9ActorNavi19func_ov059_0219aa08Ev kind:function(arm,size=0x1a0) addr:0x219aa08 +_ZN9ActorNavi19func_ov059_0219aba8Ej kind:function(arm,size=0x36c) addr:0x219aba8 +_ZN9ActorNavi19func_ov059_0219af14Ev kind:function(arm,size=0xb0) addr:0x219af14 +_ZN9ActorNavi19func_ov059_0219afc4Ev kind:function(arm,size=0x5c) addr:0x219afc4 +_ZN9ActorNavi19func_ov059_0219b020Ev kind:function(arm,size=0xf0) addr:0x219b020 data_ov059_0219b110 kind:data(any) addr:0x219b110 data_ov059_0219b140 kind:data(any) addr:0x219b140 data_ov059_0219b144 kind:data(any) addr:0x219b144 diff --git a/include/Actor/Navi/ActorNavi.hpp b/include/Actor/Navi/ActorNavi.hpp index dab24701..5604893c 100644 --- a/include/Actor/Navi/ActorNavi.hpp +++ b/include/Actor/Navi/ActorNavi.hpp @@ -3,5 +3,29 @@ #include "Actor/Navi/ActorNaviBase.hpp" class ActorNavi : public ActorNaviBase { +public: + /* 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 */ EquipHammer *mHammer; + /* 3b8 */ unk32 mUnk_3b8; + /* 3bc */ unk32 mUnk_3bc; + /* 3c0 */ u8 mUnk_3c0[0x8]; + /* 3c8 */ + bool func_ov059_0219933c(u32 param1); + void func_ov059_0219a0ac(); + void func_ov059_0219aa08(); + void func_ov059_0219aba8(u32 param1); + bool func_ov059_0219af14(); + bool func_ov059_0219afc4(); + void func_ov059_0219b020(); }; diff --git a/include/Actor/Navi/ActorNaviBase.hpp b/include/Actor/Navi/ActorNaviBase.hpp index 6fae5e7e..7df4559f 100644 --- a/include/Actor/Navi/ActorNaviBase.hpp +++ b/include/Actor/Navi/ActorNaviBase.hpp @@ -34,22 +34,7 @@ public: /* 288 */ unk8 mUnk_288[0x2]; /* 28a */ unk16 mUnk_28a; /* 28c */ unk8 mUnk_28c[0x8]; - /* 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 */ EquipHammer *mHammer; - /* 3b8 */ unk32 mUnk_3b8; - /* 3bc */ unk32 mUnk_3bc; - /* 3c0 */ u8 mUnk_3c0[0x8]; - /* 3c8 */ + /* 294 */ /* 00 */ virtual ~ActorNaviBase() override; /* 08 */ virtual bool vfunc_08() override; @@ -78,7 +63,7 @@ public: /* d0 */ virtual void vfunc_d0(); /* d4 */ virtual void vfunc_d4(); /* d8 */ virtual void vfunc_d8(); - /* dc */ virtual void SetActive(bool active); + /* dc */ virtual void SetActive(unk32 active); /* e0 */ virtual void vfunc_e0(); /* e4 */ virtual void vfunc_e4(); /* e8 */ virtual void vfunc_e8(); @@ -103,12 +88,4 @@ public: static void func_ov000_020bb0e0(); ActorNaviBase(); - - bool func_ov059_0219933c(u32 param1); - void func_ov059_0219a0ac(); - void func_ov059_0219aa08(); - void func_ov059_0219aba8(u32 param1); - bool func_ov059_0219af14(); - bool func_ov059_0219afc4(); - void func_ov059_0219b020(); }; diff --git a/src/00_Core/Actor/Navi/ActorNaviBase.cpp b/src/00_Core/Actor/Navi/ActorNaviBase.cpp index 677d677b..0c681c70 100644 --- a/src/00_Core/Actor/Navi/ActorNaviBase.cpp +++ b/src/00_Core/Actor/Navi/ActorNaviBase.cpp @@ -12,7 +12,7 @@ void ActorNaviBase::func_ov000_020b8c50() {} void ActorNaviBase::func_ov000_020b8c98(unk32 param1, unk32 param2, unk32 param3) {} void ActorNaviBase::vfunc_d4() {} void ActorNaviBase::vfunc_d8() {} -void ActorNaviBase::SetActive(bool active) {} +void ActorNaviBase::SetActive(unk32 active) {} void ActorNaviBase::TeleportAboveLink() {} void ActorNaviBase::vfunc_e0() {} void ActorNaviBase::vfunc_e4() {} diff --git a/src/59_Hammer/Actor/Navi/ActorNaviBase.cpp b/src/59_Hammer/Actor/Navi/ActorNaviBase.cpp index 109a14b4..f272c4e0 100644 --- a/src/59_Hammer/Actor/Navi/ActorNaviBase.cpp +++ b/src/59_Hammer/Actor/Navi/ActorNaviBase.cpp @@ -1,9 +1,29 @@ #include "Actor/Navi/ActorNaviBase.hpp" +#include "Actor/Navi/ActorNavi.hpp" +#include "Player/PlayerControl.hpp" +#include "Item/ItemManager.hpp" -bool ActorNaviBase::func_ov059_0219933c(u32 param1) {} -void ActorNaviBase::func_ov059_0219a0ac() {} -void ActorNaviBase::func_ov059_0219aa08() {} -void ActorNaviBase::func_ov059_0219aba8(u32 param1) {} -bool ActorNaviBase::func_ov059_0219af14() {} -bool ActorNaviBase::func_ov059_0219afc4() {} -void ActorNaviBase::func_ov059_0219b020() {} +ARM bool ActorNavi::func_ov059_0219933c(u32 param1) {} +ARM void ActorNavi::func_ov059_0219a0ac() {} +ARM void ActorNavi::func_ov059_0219aa08() {} +ARM void ActorNavi::func_ov059_0219aba8(u32 param1) {} +ARM bool ActorNavi::func_ov059_0219af14() {} +ARM bool ActorNavi::func_ov059_0219afc4() {} + +ARM void ActorNavi::func_ov059_0219b020() { + + if (gItemManager->GetEquippedFairy() != FairyId_Courage) { + ItemManager* itemMgr = gItemManager; + + this->mPrevPos = this->mUnk_158 = this->mPos = itemMgr->GetFairy(itemMgr->GetEquippedFairy())->mPos; + } else { + this->mUnk_158 = this->mPos; + } + + gPlayerControl->mAimWorld = this->mUnk_158; + + this->mHammer = GetEquipHammer(); + this->mUnk_3c0[0] = 0x0; + this->mUnk_3c0[2] = 0x0; + this->SetActive(3); +}