Decompile overlay 101 (#118)

* delink the overlay

* ItemManager_101 OK

* UnkStruct_027e0ce0_40_101 OK

* PlayerLinkActor_A0_1C_101 OK

* UnkStruct_027e09a4_54_101 OK

* UnkStruct_027e0cd8_0C_101 OK and MapObjectProfile_Derived6_101 OK
This commit is contained in:
Yanis
2026-07-20 01:30:08 +02:00
committed by GitHub
parent 68a8721665
commit 04d20febb1
46 changed files with 1170 additions and 315 deletions
+43 -5
View File
@@ -14,6 +14,7 @@
struct GameSaveSlot;
class UnkStruct_027e09a4;
class UnkStruct_StackTitleScreen;
#define ROOM_INDEX_NONE 0xFF
@@ -98,6 +99,19 @@ struct EntranceInfo {
EntranceInfo(const EntranceInfo &refSource) {
MI_CpuCopy32((void *) &refSource, this, sizeof(EntranceInfo));
}
EntranceInfo(s32 sceneIndex, unk32 param2, unk16 param3, u8 roomIndex, u8 spawnIndex, bool isCS, u8 param7) {
this->sceneIndex = sceneIndex;
this->unk_04 = param2;
this->unk_08 = param3;
this->roomIndex = roomIndex;
this->spawnIndex = spawnIndex;
this->isCS = isCS;
this->unk_0D = param7;
this->csIndex = CutsceneIndex_None;
this->unk_0F = 0;
this->unk_10 = 0;
}
};
class UnkStruct_WarpUnk1_24 : public UnkStruct_0204a060_Base3 {
@@ -162,9 +176,14 @@ struct UnkStruct_027e09a4_2C {
class UnkStruct_027e09a4_54_04 {
public:
/* 00 */ STRUCT_PAD(0x00, 0x10);
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */ unk32 mUnk_0C;
/* 10 */
UnkStruct_027e09a4_54_04() :
mUnk_00(-1) {}
~UnkStruct_027e09a4_54_04() {}
};
@@ -190,7 +209,20 @@ public:
void func_ov001_020b7048();
};
class UnkStruct_027e09a4_54_Type1 : public UnkStruct_027e09a4_54_Base {
class UnkStruct_027e09a4_54_Derived1 : public UnkStruct_027e09a4_54_Base {
public:
/* 00 (base) */
/* 34 */
UnkStruct_027e09a4_54_Derived1(unk32 *param1);
// data_ov101_02183914
/* 0C */ virtual void vfunc_0C() override;
/* 10 */ virtual void vfunc_10(UnkStruct_StackTitleScreen *param1);
/* 14 */
};
class UnkStruct_027e09a4_54_Type1 : public UnkStruct_027e09a4_54_Derived1 {
public:
UnkStruct_027e09a4_54_Type1(UnkStruct_027e09a4 *param1);
};
@@ -205,12 +237,12 @@ public:
UnkStruct_027e09a4_54_Type3(UnkStruct_027e09a4 *param1);
};
class UnkStruct_027e09a4_54_Type4 : public UnkStruct_027e09a4_54_Base {
class UnkStruct_027e09a4_54_Type4 : public UnkStruct_027e09a4_54_Derived1 {
public:
UnkStruct_027e09a4_54_Type4(UnkStruct_027e09a4 *param1);
};
class UnkStruct_027e09a4_54_Type5 : public UnkStruct_027e09a4_54_Base {
class UnkStruct_027e09a4_54_Type5 : public UnkStruct_027e09a4_54_Derived1 {
public:
UnkStruct_027e09a4_54_Type5(UnkStruct_027e09a4 *param1);
};
@@ -248,11 +280,17 @@ public:
return this->mUnk_00.sceneIndex <= SceneIndex_t_eviltrain3 && this->mUnk_00.sceneIndex >= SceneIndex_t_eviltrain;
}
const bool IsBossByrne() const { return this->mUnk_00.sceneIndex == SceneIndex_b_deago; }
const bool IsDungeonTower() const { return this->mUnk_00.sceneIndex == SceneIndex_d_main; }
const bool IsPirate() const { return this->mUnk_00.sceneIndex == SceneIndex_f_pirate; }
const bool IsTowerOutsideStairs() const { return this->mUnk_00.sceneIndex == SceneIndex_d_main_s; }
const bool IsTowerInsideStairs() const { return this->mUnk_00.sceneIndex == SceneIndex_d_main_w; }
const bool IsWater3() const { return this->mUnk_00.sceneIndex == SceneIndex_f_water3; }
const bool IsSnowdriftStation() const { return this->mUnk_00.sceneIndex == SceneIndex_f_kakushi1; }
const bool IsPirate() const { return this->mUnk_00.sceneIndex == SceneIndex_f_pirate; }
const bool IsPassenger() const { return this->mUnk_00.sceneIndex == SceneIndex_f_passenger; }
const bool IsHyruleCastle() const { return this->mUnk_00.sceneIndex == SceneIndex_f_hyral; }
const bool IsCastleTown() const { return this->mUnk_00.sceneIndex == SceneIndex_f_htown; }
const BOOL IsCastleOrTown() const { return this->IsHyruleCastle() || this->IsCastleTown(); }
const bool IsSceneModeAdventure() const { return this->mSceneMode == SceneMode_AdventureMode; }
const bool IsSceneModeBattle() const { return this->mSceneMode == SceneMode_BattleMode; }
+33 -14
View File
@@ -11,6 +11,7 @@
#include "Unknown/Common.hpp"
#include "Unknown/UnkFileSystem.hpp"
#include "Unknown/UnkStruct_027e09a4.hpp"
#include "profile.hpp"
#include <algorithm>
#include <vector>
@@ -52,7 +53,7 @@ public:
class UnkStruct_ov001_020c40f4 {
public:
/* 00 */ VecFx32 mUnk_00;
/* 0C */ unk16 mUnk_0C;
/* 0C */ s16 mUnk_0C;
/* 0E */ u8 mUnk_0E;
/* 0F */ u8 mUnk_0F;
/* 10 */ unk32 mUnk_10;
@@ -85,6 +86,8 @@ public:
class UnkStruct_027e0cd8_0C_160 {
public:
/* 00 */ UnkSystem3 mUnk_00;
bool func_ov026_02106aa8();
};
@@ -274,7 +277,7 @@ public:
void func_ov001_020b8aec();
void func_ov001_020b8b94(ZMBEntryARAB *pARAB);
void func_ov001_020b8c30(const EntranceInfo &param1);
void *func_ov001_020b8c80(unk32 param1);
const EntranceInfo *func_ov001_020b8c80(unk32 param1);
void func_ov001_020b8c90(ZMBSectionCMPT *pCMPT);
void func_ov001_020b8c98(ZMBSectionCAME *pCAME);
void func_ov001_020b8db8();
@@ -282,27 +285,43 @@ public:
void func_ov001_020b8e54();
};
class UnkStruct_027e0cd8_0C_1D0 {
public:
/* 00 (vtable) */
/* 04 */
UnkStruct_027e0cd8_0C_1D0();
/* ?? */ virtual ~UnkStruct_027e0cd8_0C_1D0();
// overlay 101
void func_ov101_021837a0();
};
class UnkStruct_027e0cd8_0C : public UnkStruct_027e0cd8_0C_Base {
public:
/* 000 (base) */
/* 160 */ UnkStruct_027e0cd8_0C_160 *mUnk_160;
/* 164 */ STRUCT_PAD(0x164, 0x1E0);
/* 160 */ UnkStruct_027e0cd8_0C_160 *mUnk_160[4];
/* 170 */ ModelRender_UnkSystem1 *mUnk_170[4][5];
/* 1C0 */ void *mUnk_1C0[4];
/* 1D0 */ UnkStruct_027e0cd8_0C_1D0 *mUnk_1D0;
/* 1D4 */ unk32 mUnk_1D4;
/* 1D8 */ unk32 mUnk_1D8;
/* 1DC */ bool mUnk_1DC;
/* 1DD */ bool mUnk_1DD;
/* 1E0 */
UnkStruct_027e0cd8_0C(UnkStruct_027e0cd8 *param1);
// data_ov031_02112a0c
/* 00 */ virtual ~UnkStruct_027e0cd8_0C() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C() override;
/* 10 */ virtual void vfunc_10() override;
/* 14 */ virtual void vfunc_14() override;
/* 18 */ virtual void vfunc_18() override;
/* 1C */ virtual void vfunc_1C(const EntranceInfo *param1, bool param2, bool param3) override;
/* 20 */ virtual void vfunc_20() override;
/* 24 */ virtual void vfunc_24() override;
/* 28 */ virtual fx32 vfunc_28(VecFx32 *param1, unk32 param2, unk32 param3) override;
/* 2C */ virtual void vfunc_2C() override;
/* 08 */ virtual void vfunc_08();
/* 38 */ virtual void vfunc_38();
// overlay 31
void func_ov031_020d8738();
void func_ov031_020d88c0();
void func_ov031_020d8ae4();
};
class UnkStruct_027e0cd8_0C_Derived2 : public UnkStruct_027e0cd8_0C_Base {
+40 -14
View File
@@ -623,10 +623,10 @@ class UnkStruct_027e0ce0_40_108_Base : public LinkList<UnkStruct_027e0ce0_40_108
public:
/* 00 (vtable) */
/* 04 (base) */
/* 0C */
/* 0C */ unk32 mUnk_0C;
UnkStruct_027e0ce0_40_108_Base() {
this->SetPrev(NULL);
this->mUnk_0C = 0;
}
// data_ov101_02183908
@@ -636,34 +636,58 @@ public:
class UnkStruct_027e0ce0_40_108 : public UnkStruct_027e0ce0_40_108_Base {
public:
/* 00 (base) */
/* 0C */ STRUCT_PAD(0x0C, 0x40);
/* 40 */
/* 10 */ unk32 mUnk_10;
/* 14 */ STRUCT_PAD(0x14, 0x40);
/* 40 */ void *mUnk_40;
/* 44 */
UnkStruct_027e0ce0_40_108() {}
UnkStruct_027e0ce0_40_108() :
mUnk_40(&this->mUnk_10) {}
// data_ov031_02112b60
/* 00 */ virtual void vfunc_00() override;
};
class UnkStruct_027e0ce0_40_14C {
public:
/* 00 */ STRUCT_PAD(0x00, 0x94);
/* 94 */
UnkStruct_027e0ce0_40_14C();
~UnkStruct_027e0ce0_40_14C();
// overlay 93
void func_ov093_02168850();
};
class UnkStruct_027e0ce0_40_150 {
/* 00 */ STRUCT_PAD(0x00, 0x0C);
public:
/* 00 */ bool mUnk_00;
/* 01 */ bool mUnk_01;
/* 02 */ STRUCT_PAD(0x02, 0x0C);
/* 0C */
UnkStruct_027e0ce0_40_150();
// overlay 96
bool func_ov096_02179c54(bool param1, bool param2);
};
class UnkStruct_027e0ce0_40_328 {
/* 000 */ STRUCT_PAD(0x00, 0x154);
public:
/* 000 */ STRUCT_PAD(0x00, 0x98);
/* 098 */ PlayerActorBase *mpPlayer;
/* 09C */ STRUCT_PAD(0x9C, 0x154);
/* 154 */
UnkStruct_027e0ce0_40_328();
UnkStruct_027e0ce0_40_328(void *param1, UnkStruct_027e0ce0_40 *param2, UnkStruct_027e0ce0_40_150 *param3,
ItemFlag *pEquippedItem);
~UnkStruct_027e0ce0_40_328();
// overlay 93
void func_ov093_0216d0d4();
void func_ov093_0216d160();
void func_ov093_0216d1cc(unk32 param1, const UnkStruct_ov001_020c40f4 *param2, bool param3, bool param4);
};
// land player stuff
@@ -671,7 +695,6 @@ class UnkStruct_027e0ce0_40 : public UnkStruct_027e0ce0_40_Base {
public:
/* 000 (base) */
/* 108 */ UnkStruct_027e0ce0_40_108 mUnk_108;
/* 148 */ void *mUnk_148;
/* 14C */ UnkStruct_027e0ce0_40_14C *mUnk_14C;
/* 150 */ UnkStruct_027e0ce0_40_150 *mUnk_150;
/* 154 */ PlayerLinkActor mPlayer;
@@ -679,15 +702,18 @@ public:
/* 32C */ PlayerLinkActor *mpPlayer; // set to mPlayer
/* 330 */ UnkStruct_027e0ce0_40_328 *mUnk_330; // set to mUnk_328
/* 334 */ ItemFlag mEquippedItem;
/* 338 */ bool mIsSceneTowerInteriorStairs;
/* 339 */ bool mIsSceneTowerExteriorStairs;
/* 338 */ bool mIsSceneTowerInsideStairs;
/* 339 */ bool mIsSceneTowerOutsideStairs;
/* 33A */ bool mIsSceneBossByrne;
/* 33B */ unk8 mUnk_33B;
/* 33B */ bool mUnk_33B;
/* 33C */
UnkStruct_027e0ce0_40(bool param1, UnkStruct_027e0ce0_20 *param2, unk32 **param3, ItemManager *pItemMgr);
UnkStruct_027e0ce0_40(bool param1, UnkStruct_027e0ce0_20 *param2, ItemFlag *pEquippedItem, ItemManager *pItemMgr);
~UnkStruct_027e0ce0_40();
// overlay 0
void func_ov000_02088060(bool param1);
// overlay 101
bool func_ov101_02182fb4(bool param1);
void func_ov101_02183004();
@@ -716,7 +742,7 @@ class UnkStruct_027e0ce0 : public AutoInstance<UnkStruct_027e0ce0>, public UnkSt
public:
/* 02 */ bool mUnk_02;
/* 03 */ bool mUnk_03;
/* 04 */ unk32 *mUnk_04;
/* 04 */ ItemFlag mEquippedItem;
/* 08 */ bool mUnk_08;
/* 0C */ UnkStruct_027e0ce0_0C mUnk_0C;
/* 1C */ UnkStruct_027e0ce0_1C *mUnk_1C;
+3
View File
@@ -10,6 +10,9 @@ public:
void func_ov031_020d95b4();
void func_ov031_020d95c8(ActorRef param1);
bool func_ov031_020d962c(VecFx32 *param1, unk32 param2, VecFx32 *param3, ActorRef *param4);
// overlay 101
static void Destroy();
};
extern UnkStruct_027e0d2c *data_027e0d2c;
+5 -1
View File
@@ -3,9 +3,13 @@
#include <math.h>
#include <types.h>
class UnkStruct_027e0d30 {
class UnkStruct_027e0d30 : public AutoInstance<UnkStruct_027e0d30> {
public:
// overlay 31
void func_ov031_020d9684(u16 param1, VecFx32 *param2);
// overlay 101
static void Destroy();
};
extern UnkStruct_027e0d30 *data_027e0d30;
+5 -2
View File
@@ -3,16 +3,19 @@
#include "global.h"
#include "types.h"
class UnkStruct_027e0d38 {
class UnkStruct_027e0d38 : public AutoInstance<UnkStruct_027e0d38> {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_027e0d38();
~UnkStruct_027e0d38();
// overlay 31
bool func_ov031_020d9bec();
bool func_ov031_020d9c04(unk32 param1, unk32 param2, unk32 param3);
void func_ov031_020d9c44(unk32 param1);
// overlay 101
static void Destroy();
};
extern UnkStruct_027e0d38 *data_027e0d38;
+2 -1
View File
@@ -1,11 +1,12 @@
#pragma once
#include "Message/BMG.hpp"
#include "Save/SaveManager.hpp"
#include "System/SysNew.hpp"
#include "global.h"
#include "types.h"
struct SaveFile;
struct UnkStruct5 {
unk8 mUnk_00;
u8 mUnk_01;