Decomp ActorForceNavi and ActorWisdomNavi 100%

This commit is contained in:
Aetias
2025-03-08 11:46:49 +01:00
parent 35d8fa6f10
commit 44ba14e823
13 changed files with 60 additions and 46 deletions
@@ -38,6 +38,7 @@ src/00_Core/Actor/Navi/ActorNavi.cpp:
.sbss start:0x020ee1a0 end:0x020ee1d8
src/00_Core/Actor/Navi/ActorForceNavi.cpp:
complete
.text start:0x020b862c end:0x020b86a4
.init start:0x020e133c end:0x020e137c
.ctor start:0x020e1f0c end:0x020e1f10
@@ -51,6 +52,7 @@ src/00_Core/Actor/Navi/ActorNaviBase.cpp:
.sbss start:0x020ee1f8 end:0x020ee1fc
src/00_Core/Actor/Navi/ActorWisdomNavi.cpp:
complete
.text start:0x020c0b64 end:0x020c0bdc
.init start:0x020e1b54 end:0x020e1b94
.ctor start:0x020e1f18 end:0x020e1f1c
+7 -7
View File
@@ -2407,7 +2407,7 @@ _ZN24UnkStruct_ov000_020b81108vfunc_14EPt kind:function(arm,size=0xc) addr:0x20b
_ZN9ActorNavi19func_ov000_020b8200Ev kind:function(arm,size=0x10) addr:0x20b8200
_ZN9ActorNavi8vfunc_c4Ev kind:function(arm,size=0x38) addr:0x20b8210
_ZN9ActorNavi8vfunc_c8Ev kind:function(arm,size=0x38) addr:0x20b8248
_ZN9ActorNavi8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x20b8280
_ZN9ActorNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20b8280
_ZN9ActorNavi8vfunc_b8Ev kind:function(arm,size=0x8) addr:0x20b8288
_ZN9ActorNavi8vfunc_d4Ev kind:function(arm,size=0x2c) addr:0x20b8290
_ZN9ActorNavi8vfunc_d0Ev kind:function(arm,size=0x2c) addr:0x20b82bc
@@ -2428,9 +2428,9 @@ func_ov000_020b85d8 kind:function(thumb,size=0x28) addr:0x20b85d8
func_ov000_020b8600 kind:function(arm,size=0x10) addr:0x20b8600
func_ov000_020b8610 kind:function(arm,size=0x1c) addr:0x20b8610
_ZN14ActorForceNavi6CreateEv kind:function(arm,size=0x40) addr:0x20b862c
_ZN14ActorForceNavi8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x20b866c
_ZN14ActorForceNaviD1Ev kind:function(arm,size=0x1c) addr:0x20b8674
_ZN14ActorForceNaviD0Ev kind:function(arm,size=0x14) addr:0x20b8690
_ZN14ActorForceNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20b866c
_ZN14ActorForceNaviD0Ev kind:function(arm,size=0x1c) addr:0x20b8674
_ZN14ActorForceNaviD1Ev kind:function(arm,size=0x14) addr:0x20b8690
func_ov000_020b86a4 kind:function(arm,size=0x44) addr:0x20b86a4
func_ov000_020b86e8 kind:function(arm,size=0x30) addr:0x20b86e8
func_ov000_020b8718 kind:function(arm,size=0x8) addr:0x20b8718
@@ -2697,9 +2697,9 @@ _ZN11EquipShield8vfunc_30Ev kind:function(arm,size=0x68) addr:0x20c0804
_ZN11EquipShield8vfunc_38Ei kind:function(arm,size=0x21c) addr:0x20c086c
_ZNK11EquipShield9GetHitboxEP8Cylinder kind:function(arm,size=0xdc) addr:0x20c0a88
_ZN15ActorWisdomNavi6CreateEv kind:function(arm,size=0x40) addr:0x20c0b64
_ZN15ActorWisdomNavi8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x20c0ba4
_ZN15ActorWisdomNaviD1Ev kind:function(arm,size=0x1c) addr:0x20c0bac
_ZN15ActorWisdomNaviD0Ev kind:function(arm,size=0x14) addr:0x20c0bc8
_ZN15ActorWisdomNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20c0ba4
_ZN15ActorWisdomNaviD0Ev kind:function(arm,size=0x1c) addr:0x20c0bac
_ZN15ActorWisdomNaviD1Ev kind:function(arm,size=0x14) addr:0x20c0bc8
func_ov000_020c0bdc kind:function(arm,size=0x2c) addr:0x20c0bdc
func_ov000_020c0c08 kind:function(thumb,size=0x28) addr:0x20c0c08
func_ov000_020c0c30 kind:function(thumb,size=0x4) addr:0x20c0c30
+3 -1
View File
@@ -38,6 +38,7 @@ src/00_Core/Actor/Navi/ActorNavi.cpp:
.sbss start:0x020ee140 end:0x020ee178
src/00_Core/Actor/Navi/ActorForceNavi.cpp:
complete
.text start:0x020b85cc end:0x020b8644
.init start:0x020e12dc end:0x020e131c
.ctor start:0x020e1eac end:0x020e1eb0
@@ -51,11 +52,12 @@ src/00_Core/Actor/Navi/ActorNaviBase.cpp:
.sbss start:0x020ee198 end:0x020ee19c
src/00_Core/Actor/Navi/ActorWisdomNavi.cpp:
complete
.text start:0x020c0b04 end:0x020c0b7c
.init start:0x020e1af4 end:0x020e1b34
.ctor start:0x020e1eb8 end:0x020e1ebc
.data start:0x020e7038 end:0x020e7130
.sbss start:0x020ee530 end:0x020ee53c
.sbss start:0x020ee530 end:0x020ee550
src/00_Core/Item/Item.cpp:
.text start:0x020acfc0 end:0x020ad030
+7 -7
View File
@@ -2407,7 +2407,7 @@ _ZN24UnkStruct_ov000_020b81108vfunc_14EPt kind:function(arm,size=0xc) addr:0x20b
_ZN9ActorNavi19func_ov000_020b8200Ev kind:function(arm,size=0x10) addr:0x20b81a0
_ZN9ActorNavi8vfunc_c4Ev kind:function(arm,size=0x38) addr:0x20b81b0
_ZN9ActorNavi8vfunc_c8Ev kind:function(arm,size=0x38) addr:0x20b81e8
_ZN9ActorNavi8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x20b8220
_ZN9ActorNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20b8220
_ZN9ActorNavi8vfunc_b8Ev kind:function(arm,size=0x8) addr:0x20b8228
_ZN9ActorNavi8vfunc_d4Ev kind:function(arm,size=0x2c) addr:0x20b8230
_ZN9ActorNavi8vfunc_d0Ev kind:function(arm,size=0x2c) addr:0x20b825c
@@ -2428,9 +2428,9 @@ func_ov000_020b85d8 kind:function(thumb,size=0x28) addr:0x20b8578
func_ov000_020b8600 kind:function(arm,size=0x10) addr:0x20b85a0
func_ov000_020b8610 kind:function(arm,size=0x1c) addr:0x20b85b0
_ZN14ActorForceNavi6CreateEv kind:function(arm,size=0x40) addr:0x20b85cc
_ZN14ActorForceNavi8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x20b860c
_ZN14ActorForceNaviD1Ev kind:function(arm,size=0x1c) addr:0x20b8614
_ZN14ActorForceNaviD0Ev kind:function(arm,size=0x14) addr:0x20b8630
_ZN14ActorForceNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20b860c
_ZN14ActorForceNaviD0Ev kind:function(arm,size=0x1c) addr:0x20b8614
_ZN14ActorForceNaviD1Ev kind:function(arm,size=0x14) addr:0x20b8630
func_ov000_020b86a4 kind:function(arm,size=0x44) addr:0x20b8644
func_ov000_020b86e8 kind:function(arm,size=0x30) addr:0x20b8688
func_ov000_020b8718 kind:function(arm,size=0x8) addr:0x20b86b8
@@ -2697,9 +2697,9 @@ _ZN11EquipShield8vfunc_30Ev kind:function(arm,size=0x68) addr:0x20c07a4
_ZN11EquipShield8vfunc_38Ei kind:function(arm,size=0x21c) addr:0x20c080c
_ZNK11EquipShield9GetHitboxEP8Cylinder kind:function(arm,size=0xdc) addr:0x20c0a28
_ZN15ActorWisdomNavi6CreateEv kind:function(arm,size=0x40) addr:0x20c0b04
_ZN15ActorWisdomNavi8vfunc_b4Ev kind:function(arm,size=0x8) addr:0x20c0b44
_ZN15ActorWisdomNaviD1Ev kind:function(arm,size=0x1c) addr:0x20c0b4c
_ZN15ActorWisdomNaviD0Ev kind:function(arm,size=0x14) addr:0x20c0b68
_ZN15ActorWisdomNavi10GetFairyIdEv kind:function(arm,size=0x8) addr:0x20c0b44
_ZN15ActorWisdomNaviD0Ev kind:function(arm,size=0x1c) addr:0x20c0b4c
_ZN15ActorWisdomNaviD1Ev kind:function(arm,size=0x14) addr:0x20c0b68
func_ov000_020c0bdc kind:function(arm,size=0x2c) addr:0x20c0b7c
func_ov000_020c0c08 kind:function(thumb,size=0x28) addr:0x20c0ba8
func_ov000_020c0c30 kind:function(thumb,size=0x4) addr:0x20c0bd0
+1 -2
View File
@@ -9,8 +9,7 @@ public:
/* 000 (base) */
/* 294 */
/* 00 */ virtual ~ActorForceNavi() override;
/* b4 */ virtual void vfunc_b4() override;
/* b4 */ virtual FairyId GetFairyId() override;
static ActorForceNavi *Create();
};
+1 -1
View File
@@ -43,7 +43,7 @@ public:
/* 08 */ virtual bool vfunc_08() override;
/* 20 */ virtual void vfunc_20(bool param1) override;
/* 8c */ virtual bool vfunc_8c() override;
/* b4 */ virtual void vfunc_b4() override;
/* b4 */ virtual FairyId GetFairyId() override;
/* b8 */ virtual s32 vfunc_b8() override;
/* c0 */ virtual bool vfunc_c0(Vec3p *param1) override;
/* c4 */ virtual void vfunc_c4() override;
+13 -6
View File
@@ -7,6 +7,15 @@
#include "Player/EquipHammer.hpp"
#include "Render/ModelRender.hpp"
typedef s32 FairyId;
enum FairyId_ {
FairyId_None = -1,
FairyId_Courage = 0,
FairyId_Power = 1,
FairyId_Wisdom = 2,
FairyId_COUNT = 3,
};
class ActorNaviBase_Unk1 {};
class ActorNaviBase : public Actor {
@@ -16,12 +25,12 @@ public:
/* 164 */ unk32 mUnk_164;
/* 168 */ ModelRender mUnk_168;
/* 1c4 */ unk8 mUnk_1c4[0xc];
/* 1d0 */ void *mUnk_1d0;
/* 1d4 */ unk8 mUnk_1d4[0x30];
/* 1d0 */ unk8 mUnk_1d0[0x24];
/* 1f4 */ unk8 mUnk_1f4[0x20];
/* 214 */ unk16 mUnk_214;
/* 216 */ unk8 mUnk_216[0xc];
/* 222 */ unk16 mUnk_222;
/* 224 */ unk8 mUnk_224[0x18];
/* 224 */ unk8 mUnk_224[0x28];
/* 24c */ unk32 mUnk_24c;
/* 250 */ unk32 mUnk_250;
/* 254 */ unk32 mUnk_254;
@@ -51,9 +60,7 @@ public:
/* 84 */ virtual void vfunc_84() override;
/* 90 */ virtual bool vfunc_90() override;
/* 94 */ virtual void vfunc_94() override;
/* a0 */ virtual bool TrySetTransform(Transform *transform) override;
/* b0 */ virtual void SetTransform(Transform *transform) override;
/* b4 */ virtual void vfunc_b4() = 0;
/* b4 */ virtual FairyId GetFairyId() = 0;
/* b8 */ virtual s32 vfunc_b8();
/* bc */ virtual bool vfunc_bc(unk32 param1, unk8 param2, s32 param3);
/* c0 */ virtual bool vfunc_c0(Vec3p *param1);
+1 -2
View File
@@ -9,8 +9,7 @@ public:
/* 000 (base) */
/* 294 */
/* 00 */ virtual ~ActorWisdomNavi() override;
/* b4 */ virtual void vfunc_b4() override;
/* b4 */ virtual FairyId GetFairyId() override;
static ActorWisdomNavi *Create();
};
+3 -12
View File
@@ -8,7 +8,7 @@ extern "C" {
#include "nds/math.h"
#include "types.h"
#include "Actor/Navi/ActorNavi.hpp"
#include "Actor/Navi/ActorNaviBase.hpp"
#include "Item/Item.hpp"
#include "Player/EquipItem.hpp"
#include "Render/ModelRender.hpp"
@@ -20,15 +20,6 @@ extern "C" {
#define MAX_AMMO_UPGRADE 2
#define MAX_UNK_0BA 9
typedef s32 FairyId;
enum FairyId_ {
FairyId_None = -1,
FairyId_Courage = 0,
FairyId_Power = 1,
FairyId_Wisdom = 2,
FairyId_COUNT = 3,
};
typedef u32 ItemModelId;
enum ItemModelId_ {
ItemModelId_OshusSword, // swA
@@ -66,7 +57,7 @@ private:
/* 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];
@@ -114,7 +105,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;
void SpawnFairies();
+10 -3
View File
@@ -1,7 +1,14 @@
#include "Actor/Navi/ActorForceNavi.hpp"
#pragma section sbss begin
ActorType ActorForceNavi::gType = ActorType(ActorTypeId_ForceNavi, (ActorCreateFunc) ActorForceNavi::Create, NULL);
#pragma section sbss end
ActorForceNavi *ActorForceNavi::Create() {}
void ActorForceNavi::vfunc_b4() {}
ActorForceNavi::~ActorForceNavi() {}
extern u32 **data_027e0fe0[];
ActorForceNavi *ActorForceNavi::Create() {
return new(*data_027e0fe0[0], 4) ActorForceNavi();
}
ARM FairyId ActorForceNavi::GetFairyId() {
return FairyId_Power;
}
+1 -1
View File
@@ -14,7 +14,7 @@ void UnkStruct_ov000_020b8110::vfunc_14(u16 *param1) {}
void ActorNavi::func_ov000_020b8200() {}
void ActorNavi::vfunc_c4() {}
void ActorNavi::vfunc_c8() {}
void ActorNavi::vfunc_b4() {}
FairyId ActorNavi::GetFairyId() {}
s32 ActorNavi::vfunc_b8() {}
void ActorNavi::vfunc_d4() {}
void ActorNavi::vfunc_d0() {}
+10 -3
View File
@@ -1,7 +1,14 @@
#include "Actor/Navi/ActorWisdomNavi.hpp"
#pragma section sbss begin
ActorType ActorWisdomNavi::gType = ActorType(ActorTypeId_WisdomNavi, (ActorCreateFunc) ActorWisdomNavi::Create, NULL);
#pragma section sbss end
ActorWisdomNavi *ActorWisdomNavi::Create() {}
void ActorWisdomNavi::vfunc_b4() {}
ActorWisdomNavi::~ActorWisdomNavi() {}
extern u32 **data_027e0fe0[];
ARM ActorWisdomNavi *ActorWisdomNavi::Create() {
return new(*data_027e0fe0[0], 4) ActorWisdomNavi();
}
ARM FairyId ActorWisdomNavi::GetFairyId() {
return FairyId_Wisdom;
}
+1 -1
View File
@@ -126,7 +126,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];
}