Files
st/include/Unknown/UnkStruct_027e09b8.hpp
T
Yanis b116e79e9f Decompile overlay 1 (Part 2) (#91)
* UnkStruct_027e09b8_001 OK

* match func_ov001_020b7830

* fix build issues

* UnkStruct_027e0cd8_001 49%

* UnkStruct_027e0cd8_001 OK

* fix build issues

* UnkStruct_027e0cd8_0C_001 92%

* port some MSL C++ headers from rb3 and key decomps

* fix build issues

* UnkStruct_027e0cd8_0C_001 98%
2026-06-28 15:29:34 +02:00

193 lines
4.9 KiB
C++

#pragma once
#include "Cutscene/Cutscene.hpp"
#include "MapObject/MapObject.hpp"
#include "Save/AdventureFlags.hpp"
#include "Unknown/UnkStruct_027e09a4.hpp"
#include "Unknown/UnkSystem1.hpp"
#include "types.h"
#include "versions.h"
struct stack_ov000_02073578 {
unk8 unk_00;
unk32 unk_04;
unk32 unk_08;
stack_ov000_02073578();
};
class UnkStruct_027e09b8_00 {
public:
/* 000 */ STRUCT_PAD(0x000, 0xFD0);
/* FD0 */ unk16 mUnk_FD0; // set to 1 when link has a blocking interaction?
/* FD2 */ unk16 mUnk_FD2;
/* FD4 */
UnkStruct_027e09b8_00();
void func_ov000_02073b5c();
void func_ov000_02073bc0();
};
class UnkStruct_027e09b8_04_Base {
public:
/* 00 (vtable) */
/* 04 */
/* 00 */ virtual ~UnkStruct_027e09b8_04_Base();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
/* 10 */ virtual void vfunc_10() = 0;
/* 14 */ virtual void vfunc_14();
/* 18 */ virtual void vfunc_18();
/* 1C */ virtual void vfunc_1C();
/* 20 */ virtual void vfunc_20();
/* 24 */
};
class UnkStruct_027e09b8_04 : public UnkStruct_027e09b8_04_Base {
public:
/* 00 (base) */
/* 04 */ STRUCT_PAD(0x04, 0x14);
/* 14 */ UnkStruct_0204a060_Base mUnk_14;
/* 38 */ UnkStruct_WarpUnk1_50 mUnk_38;
/* 60 */ unk32 mUnk_60;
/* 64 */
UnkStruct_027e09b8_04() {
this->vfunc_0C();
}
// data_ov000_020b22c0
/* 00 */ virtual ~UnkStruct_027e09b8_04() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C() override;
/* 10 */ virtual void vfunc_10() override;
/* 18 */ virtual void vfunc_18() override;
/* 1C */ virtual void vfunc_1C() override;
/* 20 */ virtual void vfunc_20() override;
};
class UnkStruct_027e09b8_08 : public UnkStruct_027e09b8_04_Base {
public:
/* 00 (base) */
/* 04 */ STRUCT_PAD(0x04, 0x30);
/* 30 */
UnkStruct_027e09b8_08(void *param1);
~UnkStruct_027e09b8_08();
/* 10 */ virtual void vfunc_10() override;
};
class UnkStruct_027e09b8_0C : public UnkStruct_027e09b8_04_Base {
public:
/* 00 (base) */
/* 04 */ STRUCT_PAD(0x04, 0x0C);
/* 0C */ UnkSystem1_ov000_Derived3 mUnk_0C;
/* 20 */ STRUCT_PAD(0x20, 0x98);
/* 98 */ UnkStruct_WarpUnk1_50 mUnk_98;
/* C0 */ unk32 mUnk_C4;
/* C4 */ MapObjectId mMapObjId;
/* C8 */
UnkStruct_027e09b8_0C() {
this->vfunc_0C();
}
// data_ov000_020b234c
/* 00 */ virtual ~UnkStruct_027e09b8_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;
};
class UnkStruct_027e09b8_10 : public UnkStruct_027e09b8_04_Base {
public:
/* 00 (base) */
/* 04 */ STRUCT_PAD(0x04, 0x18);
/* 18 */
UnkStruct_027e09b8_10();
~UnkStruct_027e09b8_10();
/* 10 */ virtual void vfunc_10() override;
};
class UnkStruct_027e09b8_98 {
public:
/* 0000 */ STRUCT_PAD(0x00, 0x151C);
/* 151C */
UnkStruct_027e09b8_98();
~UnkStruct_027e09b8_98();
void func_ov000_020a7b34();
};
class UnkStruct_027e09b8 : public AutoInstance<UnkStruct_027e09b8> {
public:
/* 00 */ UnkStruct_027e09b8_00 *mUnk_00;
/* 04 */ UnkStruct_027e09b8_04_Base *mUnk_04[4];
/* 14 */ u32 mAdventureFlags[32]; //! TODO
/* 94 */ u16 mUnk_94;
/* 96 */ bool mUnk_96;
/* 97 */ bool mUnk_97;
/* 98 */ UnkStruct_027e09b8_98 *mUnk_98;
/* 9C */
UnkStruct_027e09b8_04 *GetUnk04() {
return (UnkStruct_027e09b8_04 *) this->mUnk_04[0];
}
UnkStruct_027e09b8_08 *GetUnk08() {
return (UnkStruct_027e09b8_08 *) this->mUnk_04[1];
}
UnkStruct_027e09b8_0C *GetUnk0C() {
return (UnkStruct_027e09b8_0C *) this->mUnk_04[2];
}
UnkStruct_027e09b8_10 *GetUnk10() {
return (UnkStruct_027e09b8_10 *) this->mUnk_04[3];
}
bool HasAdventureFlag(AdventureFlag flag) {
return GET_FLAG(this->mAdventureFlags, flag);
}
UnkStruct_027e09b8();
~UnkStruct_027e09b8();
// itcm
unk32 func_01ffd420();
// overlay 0
unk32 func_ov000_020732ec(unk32 param1);
unk32 func_ov000_020732fc(unk32 param1);
bool func_ov000_020732dc(unk32 param1);
unk32 func_ov000_0207330c();
void func_ov000_0207332c();
unk32 func_ov000_02073388(void *param1, unk32 param2);
unk32 func_ov000_02073470(void *param1, unk32 param2);
void func_ov000_02073578(void *param1, unk32 param2);
void func_ov000_02073610(void *param1, unk32 param2);
#if IS_JP
void func_ov000_02074d78(unk32 param1);
#endif
// overlay 1
void ImportAdventureFlags(AdventureFlag *pAdventureFlags);
void func_ov001_020b76c0(CutsceneIndex csIndex);
void func_ov001_020b7700();
void func_ov001_020b7728();
static UnkStruct_027e09b8 *Create();
static void Destroy();
};
extern UnkStruct_027e09b8 *data_027e09b8;