Decompile overlay 1 (Part 8) (#108)

* UnkStruct_027e09b4_001 OK

* UnkStruct_027e09ac_001 OK

* UnkStruct_027e0cec_001 OK

* SysNew OK

* UnkStruct_027e0cec_18_001 OK

* UnkStruct_027e0ce0_34_001 OK

* UnkStruct_027e0d00_001 OK

* PassengerManager_001 OK

* UnkStruct_027e0cf8_08_00_001 OK

* UnkStruct_ov020_020e8544_001 OK

* code_020bfdd0 OK and code_020bfeec OK

* code_020c099c OK
This commit is contained in:
Yanis
2026-07-15 20:19:35 +02:00
committed by GitHub
parent 260f9b13c5
commit 96874ba24e
70 changed files with 1727 additions and 399 deletions
+7 -2
View File
@@ -2,8 +2,8 @@
#pragma once
#include "Actor/Actor.hpp"
#include "Actor/ActorProfile.hpp"
#include "Actor/Actor_Derived1.hpp"
#include "global.h"
#include "types.h"
@@ -17,7 +17,7 @@ public:
/* 0C */ virtual void vfunc_0C(unk32 param1) override;
};
class ActorUnkLBCK : public Actor {
class ActorUnkLBCK : public Actor_Derived1 {
public:
/* 00 (base) */
/* 94 */
@@ -25,7 +25,12 @@ public:
ActorUnkLBCK();
/* 4C */ virtual ~ActorUnkLBCK() override;
/* 58 */ virtual void vfunc_58(unk32 param1) override;
// overlay 1
void func_ov001_020bff34();
// overlay 62
void func_ov062_02159044(void);
void func_ov062_02159078(void);
void func_ov062_02159248(void);
+3
View File
@@ -182,6 +182,9 @@ public:
static void func_ov000_020a9804();
// overlay 1
void func_ov001_020bff2c();
// overlay 31
void func_ov031_020e3ca4();
};
+2
View File
@@ -23,5 +23,7 @@ public:
/* 24 */ virtual unk32 vfunc_24() override;
// overlay 1
void func_ov001_020bfd84(unk32 param1);
static GameModeBase *Create();
};
+18 -1
View File
@@ -5,10 +5,25 @@
#include "global.h"
#include "types.h"
class UnkStruct_ov001_020c46fc {
public:
/* 00000 (vtable) */
/* 00004 */ STRUCT_PAD(0x04, 0xAF054);
/* AF054 */
UnkStruct_ov001_020c46fc();
/* 00 */ virtual ~UnkStruct_ov001_020c46fc();
};
extern UnkStruct_ov001_020c46fc *data_ov001_020c46fc;
class GameModeDownloadPlay : public GameModeBase {
public:
/* 00 (base) */
/* 04 */ STRUCT_PAD(0x04, 0x6C);
/* 04 */ STRUCT_PAD(0x04, 0x48);
/* 48 */ UnkStruct_ov001_020c46fc *mUnk_48;
/* 4C */ STRUCT_PAD(0x4C, 0x6C);
/* 6C */
GameModeDownloadPlay();
@@ -16,6 +31,8 @@ public:
/* 00 */ virtual ~GameModeDownloadPlay() override;
// overlay 1
void func_ov001_020c09dc();
static GameModeBase *Create();
// overlay 22
+1 -1
View File
@@ -69,7 +69,7 @@ public:
void func_ov001_020bf830();
static void Destroy(); // func_ov001_020bf428
static void Destroy();
// overlay 17
void Update();
+4 -3
View File
@@ -2,6 +2,7 @@
#include "Item/Item.hpp"
#include "Save/AdventureFlags.hpp"
#include "Unknown/UnkStruct_02049bac.hpp"
#include "global.h"
#include "types.h"
@@ -61,9 +62,9 @@ enum StampType_ {
class MiscAdvManager : public AutoInstance<MiscAdvManager> {
public:
/* 00 */ u16 mStampDates[StampType_Max];
/* 28 */ u16 mUnk_28;
/* 2A */ u16 mPostDate;
/* 00 */ Date mStampDates[StampType_Max];
/* 28 */ Date mUnk_28;
/* 2A */ Date mPostDate;
/* 2C */ union {
Vec2bCpp mStampPositions[StampType_Max];
u16 mStampPos[StampType_Max];
+1
View File
@@ -56,6 +56,7 @@ public:
void func_ov001_020bf910();
bool func_ov001_020bfa1c();
static void Destroy();
static bool func_ov001_020bf870();
// overlay 24
+16 -8
View File
@@ -36,6 +36,9 @@ struct SaveFile_00000_0000_Data_D8 {
/* 80 */
SaveFile_00000_0000_Data_D8();
// overlay 0
s32 func_ov000_020a0cf4();
};
// related to scene flags?
@@ -92,20 +95,25 @@ struct SaveMiscAdvManager {
songs(0) {}
};
struct SaveInventoryData {
/* 00 */ unk32 unk_00;
/* 04 */ u32 unk_04[2];
/* 0C */ u16 numRupees;
/* 0E */ u16 unk_0E;
/* 10 */ ItemFlag equippedItem;
/* 14 */ unk32 unk_14;
/* 18 */
};
struct SaveInventory {
/* 00 */ u32 adventureFlags[32];
/* 80 */ unk32 unk_80;
/* 84 */ u32 unk_84[2];
/* 8C */ u16 numRupees;
/* 8E */ u16 unk_8E;
/* 90 */ ItemFlag equippedItem;
/* 94 */ unk32 unk_94;
/* 80 */ SaveInventoryData data;
/* 98 */
SaveInventory() {
MI_CpuFill32(0, this->adventureFlags, sizeof(this->adventureFlags));
MI_CpuFill32(0, this->unk_84, sizeof(this->unk_84));
this->unk_8E = 0;
MI_CpuFill32(0, this->data.unk_04, sizeof(this->data.unk_04));
this->data.unk_0E = 0;
}
};
+3
View File
@@ -388,6 +388,8 @@ public:
/* 48 */
// clang-format off
const bool IsField() const { return this->mLoadedOverlays[OverlaySlot_7] == OverlayIndex_Field; }
const bool IsTower() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_Tower; }
const bool IsBossDesert() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossDesert; }
const bool IsBossDeago() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossDeago; }
@@ -399,6 +401,7 @@ public:
const bool IsASR() const { return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_ASR; }
const bool IsPlayerSub() const { return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_PlayerSub; }
const bool IsTrainDark() const { return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_TrainDark; }
const bool IsPlayerPhantom() const { return this->mLoadedOverlays[OverlaySlot_10] == OverlayIndex_PlayerPhantom; }
const bool IsPlayerZelda() const { return this->mLoadedOverlays[OverlaySlot_10] == OverlayIndex_PlayerZelda; }
+1 -1
View File
@@ -117,7 +117,7 @@ public:
extern UnkStruct_02011e10 data_0204999c;
void *SysNew(UnkStruct_02011e10_Sub1 *param1, s32 length, s32 param3);
void *SysNew(UnkStruct_02011e10_Sub1 *param1, u32 length, u32 idLength);
void SysDelete(void *ptr);
void *func_02011f10(s32 length);
void *func_02011f30(s32 length);
+34 -1
View File
@@ -3,6 +3,39 @@
#include "global.h"
#include "types.h"
union Date {
struct {
u16 day : 5;
u16 month : 4;
u16 year : 7;
};
u16 data[1];
void operator=(Date &from) {
this->data = from.data;
}
void operator=(s16 from) {
this->data[0] = from;
}
bool operator==(u16 other) {
return other == this->data[0];
}
bool operator!=(u16 other) {
return !(*this == other);
}
bool operator==(Date &other) {
return this->data[0] == other.data[0];
}
bool operator!=(Date &other) {
return !(*this == other);
}
};
class UnkStruct_02049bac {
public:
/* 00 */ unk32 mUnk_00;
@@ -10,7 +43,7 @@ public:
UnkStruct_02049bac();
~UnkStruct_02049bac();
void func_02014a34(void *param1);
void func_02014a34(Date *param1);
u64 func_02014b00();
};
+5 -2
View File
@@ -11,8 +11,11 @@ struct UnkStruct_func_ov000_020702a8 {
/* 00 */ STRUCT_PAD(0x00, 0x10);
/* 10 */ Vec2s mUnk_10;
/* 14 */ u8 mUnk_14;
/* 18 */ unk32 mUnk_18;
/* 1C */ unk32 mUnk_1C;
/* 15 */ STRUCT_PAD(0x15, 0x18);
/* 18 */ u16 mUnk_18;
/* 1A */ u16 mUnk_1A;
/* 1C */ u16 mUnk_1C;
/* 1E */ u16 mUnk_1E;
/* 20 */ unk16 mUnk_20;
/* 22 */ unk16 mUnk_22;
};
+1 -1
View File
@@ -244,7 +244,7 @@ public:
const u8 CurrentCSIndex() const { return this->mUnk_00.csIndex; }
const SceneIndex CurrentSceneIndex() const { return this->mUnk_00.sceneIndex; }
const bool IsDarkRealm() const {
const bool IsDarkRealm() {
return this->mUnk_00.sceneIndex <= SceneIndex_t_eviltrain3 && this->mUnk_00.sceneIndex >= SceneIndex_t_eviltrain;
}
+8 -1
View File
@@ -3,11 +3,18 @@
#include "math.hpp"
#include "types.h"
class UnkStruct_027e09a8 {
class UnkStruct_027e09a8 : public AutoInstance<UnkStruct_027e09a8> {
public:
// overlay 0
void func_ov000_020713bc();
void func_ov000_02071b30(unk32 param1, VecFx32 *pPos, unk32 param3);
void func_ov000_02071d34(void *param1, unk32 param2, VecFx32 *pPos, unk32 param4);
void func_ov000_02071eac(VecFx32 *pPos);
static UnkStruct_027e09a8 *Create();
// overlay 1
static void Destroy();
};
extern UnkStruct_027e09a8 *data_027e09a8;
+4 -4
View File
@@ -8,9 +8,8 @@
struct UnkStruct_027e09ac_Base_00 {
/* 00 */ unk16 mUnk_00[2];
/* 04 */ unk16 mUnk_04[3];
/* 0A */ unk16 mUnk_0A;
/* 0C */ unk32 mUnk_0C;
/* 04 */ unk16 mUnk_04[6];
/* 10 */
};
class UnkStruct_027e09ac_Base {
@@ -81,10 +80,11 @@ public:
// overlay 0
void func_ov000_020726f0(u16 param1, unk32 param2, unk32 param3);
void func_ov000_020729c4(UnkStruct_027e09ac_14 *param1, u16 param2, u16 param3, s16 param4, s16 param5);
void func_ov000_02072b08(unk32 param1, unk32 param2);
// overlay 1
void func_ov001_020bec8c();
void func_ov001_020bebb8();
void func_ov001_020bec8c();
static UnkStruct_027e09ac *Create();
static void Destroy();
+6 -1
View File
@@ -3,7 +3,7 @@
#include "global.h"
#include "types.h"
class UnkStruct_027e09b0 {
class UnkStruct_027e09b0 : public AutoInstance<UnkStruct_027e09b0> {
public:
/* 00 */ unk32 mUnk_00;
@@ -11,6 +11,11 @@ public:
~UnkStruct_027e09b0();
void func_ov000_02072cc4(unk32 param1, unk32 param2);
static UnkStruct_027e09b0 *Create();
// overlay 1
static void Destroy();
};
extern UnkStruct_027e09b0 *data_027e09b0;
+18 -3
View File
@@ -1,16 +1,31 @@
#pragma once
#include "global.h"
#include "math.hpp"
#include "types.h"
class UnkStruct_027e09b4 {
class UnkStruct_027e09b4 : public AutoInstance<UnkStruct_027e09b4> {
public:
/* 00 */ unk32 mUnk_00;
/* 000 */ unk32 mUnk_000;
/* 004 */ STRUCT_PAD(0x04, 0x300);
/* 300 */ void *mUnk_300;
/* 304 */ unk32 mUnk_304;
/* 308 */ unk16 mUnk_308;
/* 30A */ unk16 mUnk_30A;
/* 30C */
UnkStruct_027e09b4();
~UnkStruct_027e09b4();
// main
void func_01fff60c(VecFx32 *param1, unk32 param2, unk32 param3, u8 param4, unk32 param5, unk32 param6);
// overlay 1
void func_ov001_020bea84();
static UnkStruct_027e09b4 *Create();
static void Destroy();
// overlay 17
void func_ov017_020c08c4(VecFx32 *param1, unk32 param2, unk32 param3, s32 param4, s32 param5, s32 param6);
};
+22 -5
View File
@@ -181,29 +181,46 @@ public:
void func_ov001_020bbff4(UnkStruct_027e0ce0_38 *param1);
};
class UnkStruct_027e0ce0_34_20 {
public:
/* 000 */ STRUCT_PAD(0x00, 0x960);
/* 960 */
UnkStruct_027e0ce0_34_20();
~UnkStruct_027e0ce0_34_20();
// overlay 26
void func_ov026_020eb5b8();
void func_ov026_020eb6a8();
};
class UnkStruct_027e0ce0_34 {
public:
/* 00 */ unk32 mUnk_00[4];
/* 10 */ unk32 mUnk_10[4];
/* 20 */ unk32 mUnk_20;
/* 20 */ UnkStruct_027e0ce0_34_20 *mUnk_20;
/* 24 */ unk32 mUnk_24;
/* 28 */ unk32 mUnk_28;
/* 2C */ s32 mUnk_2C;
/* 30 */ u32 mSpiritTrackFlags;
/* 30 */ u32 mSpiritTrackFlags; //! TODO: rename (actually handles train parts?)
/* 34 */ unk32 mUnk_34;
/* 38 */ u32 mTrackFlags[3];
/* 44 */ STRUCT_PAD(0x44, 0xF4);
/* 44 */ STRUCT_PAD(0x44, 0xE8);
/* E8 */ unk32 mUnk_E8;
/* EC */ unk32 mUnk_EC;
/* F0 */ unk32 mUnk_F0;
/* F4 */
UnkStruct_027e0ce0_34();
~UnkStruct_027e0ce0_34();
// overlay 1
void func_ov001_020bf22c(unk32 param1, unk32 param2);
void func_ov001_020bf22c(SaveFile_00000_0000_Data_D8 *param1, unk32 param2);
void func_ov001_020bf2b8(bool param1);
void func_ov001_020bf378();
void func_ov001_020bf3bc();
void func_ov001_020bf3cc();
void func_ov001_020bf3fc();
// overlay 8
void func_ov008_020b6a50();
@@ -736,7 +753,7 @@ public:
static UnkStruct_027e0ce0_34 *func_ov000_0205c904();
// overlay 1
void func_ov001_020bc4d8(InvImportData *pInvData, unk32 param2, unk32 param3);
void func_ov001_020bc4d8(InvImportData *pInvData, SaveFile_00000_0000_Data_D8 *param2, unk32 param3);
void func_ov001_020bc524(bool param1);
void func_ov001_020bc5f8();
void func_ov001_020bc65c();
+68 -1
View File
@@ -1,13 +1,77 @@
#pragma once
#include "LinkList.hpp"
#include "Unknown/UnkFileSystem.hpp"
#include "math.hpp"
#include "types.h"
class UnkStruct_027e0cec_00_00 : public LinkList<UnkStruct_027e0cec_00_00> {
public:
/* 00 (vtable) */
/* 04 (base) */
/* 0C */ unk32 mUnk_0C;
UnkStruct_027e0cec_00_00() :
mUnk_0C(0) {}
};
class UnkStruct_027e0cec_00 : public UnkStruct_027e0cec_00_00 {
public:
/* 00 (base) */
/* 10 */ void *mUnk_10;
/* 14 */ unk32 mUnk_14;
/* 18 */
UnkStruct_027e0cec_00(void *param1);
/* 00 */ virtual void vfunc_00();
};
struct UnkStruct_027e0cec_18_04 {
/* 00 */ STRUCT_PAD(0x00, 0x3C);
/* 3C */ unk32 mUnk_3C;
/* 40 */ unk32 mUnk_40;
/* 44 */ void *mUnk_44;
// overlay 0
void func_ov000_02054a78();
void func_ov000_02054a88();
void func_ov000_0205498c(void *pFile);
void func_ov000_02054998(void *param1);
};
class UnkStruct_027e0cec_18 {
public:
/* 00 (vtable) */
/* 04 */ UnkStruct_027e0cec_18_04 *mUnk_04;
/* 08 */ unk16 mUnk_08;
/* 0A */ unk16 mUnk_0A; // pad?
/* 0C */
UnkStruct_027e0cec_18(UnkFileSystem1 *param1, bool param2, unk32 param3);
// data_ov001_020c2fcc
/* 00 */ virtual ~UnkStruct_027e0cec_18();
/* 08 */
// overlay 0
void func_ov000_020a0460();
// overlay 1
static void *func_ov001_020bf0a0(size_t length);
};
class UnkStruct_027e0cec : public AutoInstance<UnkStruct_027e0cec> {
public:
/* 00 */ UnkStruct_027e0cec_00 mUnk_00;
/* 18 */ UnkStruct_027e0cec_18 *mUnk_18[2];
/* 20 */ unk32 mUnk_20;
/* 24 */
UnkStruct_027e0cec();
~UnkStruct_027e0cec();
// overlay 0
void func_ov000_0209feac(unk32 param1, VecFx32 *param2, unk32 param3, unk32 param4, unk32 param5);
void func_ov000_0209ff24(unk32 param1, VecFx32 *param2, VecFx16 *param3, unk32 param4);
void func_ov000_0209ff8c(UnkStruct_PlayerGet_ec *param1, unk32 param2, VecFx32 *param3, unk32 param4);
@@ -16,10 +80,13 @@ public:
unk32 param6);
void func_ov000_020a0110(UnkStruct_PlayerGet_ec *param1);
void func_ov000_020a0220(void *param1, void *param2);
void func_ov001_020bf028();
// overlay 1
const char *func_ov001_020bef98();
void func_ov001_020bf028();
static UnkStruct_027e0cec *Create();
static void func_ov001_020bed34();
};
extern UnkStruct_027e0cec *data_027e0cec;
+36 -5
View File
@@ -16,6 +16,8 @@ struct UnkStruct_027e0d00_00 {
/* 20 */ unk32 mUnk_20;
/* 24 */ unk32 mUnk_24;
/* 28 */
UnkStruct_027e0d00_00(unk32 param1, unk32 param2, unk32 param3, u8 param4);
};
struct UnkStruct_027e0d00_10 {
@@ -38,25 +40,43 @@ public:
/* 00 */ virtual ~UnkStruct_027e0d00_20() override {}
void func_ov024_020d4fa0(unk32 param1, unk32 param2);
void func_ov024_020d4fa0(void *param1, unk32 param2);
void func_ov024_020d5174();
static void func_ov024_020d4e9c(wchar_t *param1, unk32 param2, bool param3);
static void func_ov024_020d4edc(wchar_t *param1, wchar_t *param2, unk32 param3);
};
class UnkStruct_027e0d00_E0 : public MapObjectProfile_Derived2_20_Base {
public:
/* 00 (base) */
/* 94 */ STRUCT_PAD(0x94, 0xA8);
/* A8 */
UnkStruct_027e0d00_E0(bool hasRecruitUniform);
// overlay 26
void func_ov026_020fb964();
void func_ov026_020fba3c();
};
struct UnkStruct_027e0d00_FC {
/* 000 */ STRUCT_PAD(0x00, 0xD30);
/* D30 */
};
class UnkStruct_027e0d00 : public AutoInstance<UnkStruct_027e0d00> {
public:
/* 000 */ UnkStruct_027e0d00_00 *mUnk_000[MAX_TRAIN_PARTS];
/* 010 */ UnkStruct_027e0d00_10 *mUnk_010[MAX_TRAIN_PARTS];
/* 020 */ UnkStruct_027e0d00_20 *mUnk_020[MAX_TRAIN_PARTS][MAX_TRAIN_SETS];
/* 0A0 */ unk32 mUnk_0A0[MAX_TRAIN_PARTS];
/* 0A0 */ void *mUnk_0A0[MAX_TRAIN_PARTS];
/* 0B0 */ MapObjectProfile_Derived5 *mUnk_0B0[12]; // train parts models
/* 0E0 */ unk32 mUnk_0E0;
/* 0E0 */ UnkStruct_027e0d00_E0 *mUnk_0E0;
/* 0E4 */ UnkStruct_027e0d00_20 *mUnk_0E4[MAX_TRAIN_PARTS];
/* 0F4 */ MapObjectProfile_Derived5 *mUnk_0F4; // cargo models
/* 0F8 */ UnkStruct_027e0d00_00 *mUnk_0F8;
/* 0FC */ void *mUnk_0FC;
/* 0FC */ UnkStruct_027e0d00_FC *mUnk_0FC;
/* 100 */ MapObjectProfile_Derived5 *mUnk_100;
/* 104 */ bool mUnk_104;
/* 104 */ unk8 mUnk_105;
@@ -84,9 +104,20 @@ public:
UnkStruct_027e0d00();
~UnkStruct_027e0d00();
// overlay 0
static UnkStruct_027e0d00 *GetInstance();
// overlay 1
void func_ov001_020bf530();
void func_ov001_020bf568();
void func_ov001_020bf590();
void func_ov001_020bf69c();
void func_ov001_020bf730();
void func_ov001_020bf750();
void func_ov001_020bf768();
void func_ov001_020bf7b8();
static void Destroy();
// overlay 24
unk32 func_ov024_020d485c(unk32 param1, unk32 param2);
u8 func_ov024_020d48c8(unk32 param1);
+21 -5
View File
@@ -3,12 +3,10 @@
#include "global.h"
#include "types.h"
class UnkStruct_ov020_020e8544 {
class UnkStruct_ov020_020e8544_Base {
public:
/* 00 (vtable) */
UnkStruct_ov020_020e8544();
~UnkStruct_ov020_020e8544();
/* 04 */
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
@@ -21,4 +19,22 @@ public:
/* 20 */ virtual unk32 vfunc_20();
};
extern UnkStruct_ov020_020e8544 *data_ov020_020e8544;
class UnkStruct_ov020_020e8544_Derived1 : public UnkStruct_ov020_020e8544_Base {
public:
/* 00 (base) */
/* 04 */ STRUCT_PAD(0x04, 0x30);
/* 30 */
UnkStruct_ov020_020e8544_Derived1();
};
class UnkStruct_ov020_020e8544_Derived2 : public UnkStruct_ov020_020e8544_Base {
public:
/* 00 (base) */
/* 04 */ STRUCT_PAD(0x04, 0x2E4);
/* 2E4 */
UnkStruct_ov020_020e8544_Derived2();
};
extern UnkStruct_ov020_020e8544_Base *data_ov020_020e8544;
@@ -0,0 +1,65 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_ov001_020c46f4_Base {
public:
/* 00 (vtable) */
/* 04 */
UnkStruct_ov001_020c46f4_Base() {}
// data_ov023_020f1b5c
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
/* 10 */
};
class UnkStruct_ov001_020c46f4_Derived1 : public UnkStruct_ov001_020c46f4_Base {
public:
/* 04 */ bool mUnk_04;
/* 08 */
UnkStruct_ov001_020c46f4_Derived1() :
mUnk_04(false) {}
// data_ov023_020f1b5c
/* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual void vfunc_04() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C() override;
};
class UnkStruct_ov001_020c46f4_Derived2 : public UnkStruct_ov001_020c46f4_Base {
public:
/* 00 (base) */
/* 04 */
UnkStruct_ov001_020c46f4_Derived2() {}
// data_ov023_020f1b74
/* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual void vfunc_04() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C() override;
};
extern UnkStruct_ov001_020c46f4_Base *data_ov001_020c46f4;
class UnkStruct_ov023_020f1d94 {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ UnkStruct_ov001_020c46f4_Base *mUnk_04;
/* 08 */
UnkStruct_ov023_020f1d94();
~UnkStruct_ov023_020f1d94();
// overlay 1
void func_ov001_020bfeb0();
};
extern UnkStruct_ov023_020f1d94 data_ov023_020f1d94;
+16
View File
@@ -7,9 +7,11 @@
// start of thumb region, using thumb instructions
#define THUMB_BEGIN _Pragma("thumb on")
#define ARM_END THUMB_BEGIN
// end of thumb region, using arm instructions
#define THUMB_END _Pragma("thumb off")
#define ARM_BEGIN THUMB_END
// `override` was added in C++11 before the DS, so we only use the keyword to indicate overriden functions
#define override
@@ -52,6 +54,13 @@
// to force things in .data to align properly
#define DATA_ALIGN_FIX() int DF_UNIQUE_IDENT(__data_align_fix)
// for cases where `DATA_ALIGN_FIX` doesn't work
#define DATA_ALIGN_FIX2() \
static const int DF_UNIQUE_IDENT(__data_align_fix) = 0; \
void DF_UNIQUE_IDENT(__data_align_fix_func)() { \
*(int *) &DF_UNIQUE_IDENT(__data_align_fix) = 0; \
}
#ifndef typeof
#define typeof __typeof__
#endif
@@ -103,4 +112,11 @@
} \
(void) 0
#define DELETE_ARRAY2(ptr) \
{ \
::operator delete[](ptr); \
ptr = NULL; \
} \
(void) 0
#endif
+17
View File
@@ -73,4 +73,21 @@ template <typename T> struct StaticInstance {
#endif
//! TODO: move elsewhere
#ifdef __cplusplus
extern "C" {
#endif
typedef struct SPAHeader {
/* 00 */ u32 magic; // always 'SPA '
/* 04 */ unk32 mUnk_04;
/* 08 */ u16 mUnk_08;
/* 0A */ char pad[0x18 - 0x0A];
/* 18 */ unk32 mUnk_18;
} SPAHeader;
#ifdef __cplusplus
}
#endif
#endif