Decompile overlay 24 (Part 1) (#65)

* GameModeAdventure_001 OK

* GameModeAdventure_024 17%

* GameModeAdventure_024 73%

* GameModeAdventure_024 99%

* jp region differences

* rename GameModeAdventure_024 and GameModeAdventure + UnkStruct_ov000_020d8660_024 OK

* UnkActorSystem1OK

* UnkActorSystem2 OK

* delink more of ov024 & UnkStruct_027e0998_024 OK

* improve instance stuff & UnkStruct_027e0cf8_024 OK

* AdventureModeManager_160_024 OK & GameModeStartUp OK

* fix regressions

* fix regressions 2

* AdventureModeManager_170 OK

* AdventureModeManager_174_Base OK

* AdventureModeManager_174 OK

* mark GameModeAdventure_024 as complete

* AdventureModeManager_178 OK

* AdventureModeManager_180 OK

* AdventureModeManager_184_024 OK

* AdventureModeManager_18C_024 OK & AdventureModeManager_190_024 OK

* AdventureModeManager_15C_20_00 61%

* AdventureModeManager_15C_20_00 OK

* jp version differences

* delink what's left in the overlay

* fix regressions

* AdventureModeManager_1B8_Base_024 98%

* AdventureModeManager_1B8 48% and link AdventureModeManager_024

* AdventureModeManager_1B8_Base and AdventureModeManager_1B8 OK

* oops

* mark statics as local
This commit is contained in:
Yanis
2026-05-18 21:14:27 +02:00
committed by GitHub
parent 0f74fd4201
commit 90203403dd
250 changed files with 10263 additions and 2619 deletions
+1 -3
View File
@@ -14,7 +14,7 @@ struct UnkStruct_func_ov001_020bb018_param2 {
/* 08 */ u16 mUnk_0A;
};
class ActorManager : public SysObject {
class ActorManager : public AutoInstance<ActorManager> {
public:
/* 00 */ Actor **mActorTable;
/* 04 */ Actor **mActorTableEnd;
@@ -50,7 +50,6 @@ public:
unk32 func_ov000_0209704c();
unk32 func_ov000_020970c8(u16 param1, unk32 *param2);
int ClearInstance();
void func_ov001_020bafdc();
void func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param2 *param1);
void func_ov001_020bb488();
@@ -60,7 +59,6 @@ public:
void func_ov001_020bb7b0(ZeldaObjectList *pObjList);
void func_ov001_020bb7f0();
static void SetInstance(ActorManager *instance);
static ActorManager *Create();
static void Destroy();
static void func_ov001_020bb414(ActorManager *instance);
+2 -1
View File
@@ -27,7 +27,6 @@ public:
/* 4C */ virtual ~ActorUnkTUTO() override;
void func_ov037_02120a10(void);
void func_ov037_02120a64(void);
void func_ov037_02120afc(void);
void func_ov037_02120b10(void);
void func_ov037_02120ba8(void);
@@ -58,6 +57,8 @@ public:
void func_ov037_02121ab0(void);
void func_ov037_02121af0(void);
void func_ov037_02121b2c(void);
static unk32 func_ov037_02120a64(void);
};
class ActorProfileUnkTUTO : public ActorProfile {
+3 -3
View File
@@ -15,11 +15,11 @@ public:
/* 16 */ unk16 mUnk_16;
/* 18 */ unk32 mUnk_18;
/* 1C */ unk32 mUnk_1C;
/* 20 */ unk8 mUnk_20;
/* 21 */ unk8 mUnk_21;
/* 20 */ bool mUnk_20;
/* 21 */ bool mUnk_21;
/* 22 */ unk8 mUnk_22;
/* 23 */ unk8 mUnk_23;
/* 24 */ void *mUnk_24;
/* 24 */ Actor *mpActor;
/* 28 */ unk32 mUnk_28;
/* 2C */ unk32 mUnk_2C;
/* 30 */ unk16 mUnk_30;
+21 -1
View File
@@ -55,6 +55,26 @@ enum FileSelectExitMode_ {
/* 0x03 */ FileSelectExitMode_Unk_3 = 3,
};
class FileSelectMain_UnkSubStruct1 : public UnkSubStruct1_Base {
public:
/* 00 (base) */
/* 20 */ unk32 mUnk_20;
/* 24 */ unk32 mUnk_24;
/* 28 */ unk32 mUnk_28;
/* 2C */ unk32 mUnk_2C;
/* 30 */
void Subprocess1_UnkValueSets() {
this->mUnk_10 = this->mUnk_18;
}
void Subprocess2_UnkValueSets() {
this->mUnk_10 = this->mUnk_14;
}
UnkSubStruct1_Methods;
};
class FileSelectMain : public GameModeManagerBase_104 { // 022E5F70
public:
/* 0000 (base) */
@@ -65,7 +85,7 @@ public:
/* 0026 */ unk8 mUnk_0026;
/* 0027 */ unk8 mUnk_0027;
/* 0028 */ unk32 mUnk_0028;
/* 002C */ UnkSubStruct1 mUnk_002C;
/* 002C */ FileSelectMain_UnkSubStruct1 mUnk_002C;
/* 005C */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_005C;
/* 00BC */ UnkSystem2_UnkSubSystem9 mUnk_00BC;
+9 -9
View File
@@ -17,11 +17,11 @@ public:
/* 00 */ virtual ~FileSelectManager_UnkDrawBase();
/* 08 */ virtual void vfunc_08(unk32 param1);
/* 0C */ virtual void vfunc_0C(unk32 param1);
/* 10 */ virtual void vfunc_10();
/* 14 */ virtual void vfunc_14();
/* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2);
/* 14 */ virtual void vfunc_14(unk32 param1);
/* 18 */ virtual void vfunc_18(unk32 param1);
/* 1C */ virtual void vfunc_1C(unk32 param1);
/* 20 */ virtual void vfunc_20();
/* 20 */ virtual void vfunc_20(unk32 param1, unk32 param2);
/* 24 */ virtual void vfunc_24();
/* 28 */
};
@@ -42,11 +42,11 @@ public:
/* 00 */ virtual ~FileSelectManager_160() override;
/* 08 */ virtual void vfunc_08(unk32 param1) override;
/* 0C */ virtual void vfunc_0C(unk32 param1) override;
/* 10 */ virtual void vfunc_10() override;
/* 14 */ virtual void vfunc_14() override;
/* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2) override;
/* 14 */ virtual void vfunc_14(unk32 param1) override;
/* 18 */ virtual void vfunc_18(unk32 param1) override;
/* 1C */ virtual void vfunc_1C(unk32 param1) override;
/* 20 */ virtual void vfunc_20() override;
/* 20 */ virtual void vfunc_20(unk32 param1, unk32 param2) override;
/* 24 */ virtual void vfunc_24() override;
/* 28 */
};
@@ -66,11 +66,11 @@ public:
/* 04 */ virtual ~FileSelectManager_164() override;
/* 08 */ virtual void vfunc_08(unk32 param1) override;
/* 0C */ virtual void vfunc_0C(unk32 param1) override;
/* 10 */ virtual void vfunc_10() override;
/* 14 */ virtual void vfunc_14() override;
/* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2) override;
/* 14 */ virtual void vfunc_14(unk32 param1) override;
/* 18 */ virtual void vfunc_18(unk32 param1) override;
/* 1C */ virtual void vfunc_1C(unk32 param1) override;
/* 20 */ virtual void vfunc_20() override;
/* 20 */ virtual void vfunc_20(unk32 param1, unk32 param2) override;
static void func_ov019_020d02f4();
};
+21
View File
@@ -0,0 +1,21 @@
#pragma once
#include "Game/GameMode.hpp"
// #include "Unknown/UnkStruct_0204a060.hpp"
#include "global.h"
#include "types.h"
class GameModeAdventure : public GameModeBase {
public:
GameModeAdventure();
// data_ov024_020d7b68 vtable
/* 00 */ virtual ~GameModeAdventure() override;
/* 08 */ virtual void vfunc_08() override; // Init
/* 0C */ virtual void vfunc_0C() override; // Update
/* 10 */ virtual void vfunc_10() override;
/* 14 */ virtual void vfunc_14() override;
/* 18 */ virtual void vfunc_18() override;
/* 1C */ virtual void vfunc_1C() override;
/* 20 */ virtual void vfunc_20() override;
};
+95 -29
View File
@@ -26,6 +26,8 @@ public:
void func_0201bfec();
void func_0201c00c(unk32 param1, unk32 param2);
void func_0201c068(unk16 param1);
void func_0201c0c4(unk32 param1);
void func_0201c0e4();
void func_0201c19c();
void func_0201c124(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5);
void func_0201c1e4();
@@ -44,22 +46,67 @@ public:
GameModeLinkListNode();
~GameModeLinkListNode();
GameModeLinkListNode *GetNode() {
GameModeLinkListNode *node = (GameModeLinkListNode *) this;
if (node != NULL) {
node = (GameModeLinkListNode *) ((u32 *) node + 1);
}
return node;
}
GameModeLinkListNode *GetNext() {
GameModeLinkListNode *next = mNext;
if (next != NULL) {
next = (GameModeLinkListNode *) ((u32 *) next - 1);
}
return next;
}
GameModeLinkListNode *GetNext3() {
GameModeLinkListNode *next = this;
if (next != NULL) {
next = (GameModeLinkListNode *) ((u32 *) next - 1);
}
return next;
}
GameModeLinkListNode *GetUnk() {
GameModeLinkListNode *prev = (GameModeLinkListNode *) *((u32 *) this + 2);
if (prev != NULL) {
prev = (GameModeLinkListNode *) ((u32 *) prev - 1);
}
return prev;
}
GameModeLinkListNode *GetUnk2() {
GameModeLinkListNode *prev = (GameModeLinkListNode *) *((u32 *) this + 1);
if (prev != NULL) {
prev = (GameModeLinkListNode *) ((u32 *) prev - 1);
}
return prev;
}
GameModeLinkListNode *GetPrev() {
GameModeLinkListNode *prev = mPrev;
if (prev != NULL) {
prev = (GameModeLinkListNode *) ((u32 *) prev - 1);
}
return prev;
}
template <typename T> T *GetTarget() {
return (T *) this;
}
void func_020166cc(GameModeLinkListNode *param1);
void func_020166f4(GameModeLinkListNode *param1);
unk32 func_0201673c();
static void func_020166ac(GameModeLinkListNode *param1);
};
template <typename T> class GameModeLinkList : public GameModeLinkListNode {
public:
GameModeLinkList *GetNext() {
GameModeLinkListNode *next = mNext;
if (next != NULL) {
next = (GameModeLinkListNode *) ((u32 *) next - 1);
}
return (GameModeLinkList *) next;
}
GameModeLinkList *GetNext2() {
GameModeLinkListNode *next = (GameModeLinkListNode *) *((u8 **) this + 2);
if (next != NULL) {
@@ -68,12 +115,12 @@ public:
return (GameModeLinkList *) next;
}
GameModeLinkList *GetPrev() {
GameModeLinkListNode *prev = mPrev;
if (prev != NULL) {
prev = (GameModeLinkListNode *) ((u32 *) prev - 1);
}
return (GameModeLinkList *) prev;
GameModeLinkList *GetNextList() {
return (GameModeLinkList *) this->GetNext();
}
GameModeLinkList *GetPrevList() {
return (GameModeLinkList *) this->GetPrev();
}
T *GetTarget() {
@@ -89,6 +136,14 @@ public:
return (GameModeLinkList<GameModeManagerBase_104_0C> *) this;
}
GameModeLinkListNode *GetUnk3() {
GameModeLinkListNode *prev = (GameModeLinkListNode *) *((u32 *) this - 1);
if (prev != NULL) {
prev = (GameModeLinkListNode *) ((u32 *) prev - 1);
}
return prev;
}
// data_ov000_020b1e48 vtable
/* 00 */ virtual ~GameModeManagerBase_104_0C();
/* 08 */ virtual void vfunc_08(void *param1);
@@ -103,19 +158,30 @@ public:
/* 0C */ GameModeManagerBase_104_0C mUnk_0C;
};
class AdventureModeManager_160_14;
class AdventureModeManager_160_18;
class AdventureModeManager_1B8;
class GameModeManagerBase_104 : public GameModeManagerBase_104_00 {
public:
/* 00 (vtable) */
/* 18 */ bool mUnk_18;
/* 19 */ bool mUnk_19;
/* 1A */ bool mUnk_1A;
/* 1B */ unk8 mUnk_1B;
/* 1C */
GameModeLinkList<GameModeManagerBase_104> *GetOrigin() {
return (GameModeLinkList<GameModeManagerBase_104> *) this;
}
GameModeLinkListNode *GetNode() {
GameModeLinkListNode *node = (GameModeLinkListNode *) this;
if (node != NULL) {
node = (GameModeLinkListNode *) ((u32 *) node + 1);
}
return node;
}
GameModeManagerBase_104();
// data_ov000_020b1e60 vtable
@@ -125,6 +191,8 @@ public:
/* 10 */ virtual void vfunc_10(unk8 *param1);
/* 14 */ virtual void vfunc_14(unk8 *param1);
/* 18 */ virtual void vfunc_18(void);
void func_ov088_0217230c();
};
class GameModeManagerBase : public SysObject {
@@ -180,10 +248,11 @@ public:
bool func_02018af0(GameModeLinkList<GameModeManagerBase_104> *param1);
bool func_02018b54(GameModeLinkList<GameModeManagerBase_104> *param1);
bool func_02018b90(GameModeLinkList<GameModeManagerBase_104> *param1, unk8 *param2);
void func_02018bc4(unk32 param1);
// data_02044064 vtable
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 04 */ virtual void vfunc_04(unk32 param1);
/* 08 */ virtual ~GameModeManagerBase();
/* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2, unk32 param3);
/* 14 */ virtual void vfunc_14();
@@ -199,32 +268,29 @@ public:
static GameModeManagerBase *Create(unk32 param1);
};
class TitleScreen;
class MainGame;
class TitleScreenManager_Base : public GameModeManagerBase {
public:
/* 000 (base) */
/* 154 */ GameModeBase *mpGameMode;
/* 154 */
TitleScreenManager_Base();
TitleScreen *GetTitleScreen() {
return (TitleScreen *) this->mpGameMode;
}
MainGame *GetMainGame() {
return (MainGame *) this->mpGameMode;
}
// data_ov000_020b1d14 vtable
/* 08 */ virtual ~TitleScreenManager_Base() override;
/* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2, unk32 param3) override;
/* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
/* 38 */ virtual void vfunc_38(u32 param1, u8 param2, unk16 param3, unk16 param4);
/* 3C */ virtual void vfunc_3C();
/* 40 */ virtual void vfunc_40();
/* 44 */ virtual void vfunc_44();
/* 48 */
void func_ov000_02060fc8(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
};
extern TitleScreenManager_Base *data_027e0994;
class AdventureModeManager;
static inline AdventureModeManager *GetAdventureModeManager() {
return (AdventureModeManager *) data_027e0994;
}
+1 -1
View File
@@ -19,7 +19,7 @@ public:
GameModeStartUp();
// data_ov018_020c5b28 vtable
/* 00 */ virtual ~GameModeStartUp() override {}
// /* 00 */ virtual ~GameModeStartUp() override {}
/* 0C */ virtual void vfunc_0C() override;
/* 20 */ virtual void vfunc_20() override;
+2 -4
View File
@@ -116,7 +116,7 @@ public:
static AdventureFlag GetAdvFlagFromItem(ItemId itemId);
};
class TreasureManager : public ItemManager {
class TreasureManager : public AutoInstance<TreasureManager>, public ItemManager {
public:
/* 28 */ unk8 mUnk_28[0x3C - 0x28];
/* 3C */ s16 mUnk_3C[TreasureType_Max]; // treasures
@@ -145,11 +145,9 @@ public:
static unk32 func_ov000_020a9f4c(unk32 param1);
ItemId func_ov000_020aa02c(ItemId itemId);
void func_ov000_020aa0ac(ItemId itemId);
void func_ov000_020aa200();
bool func_ov000_020aa210();
};
extern TreasureManager *data_ov000_020b6510;
extern TreasureManager *gpTreasureManager;
extern UnkStruct_ov000_020afc48 data_ov000_020afc48[ItemFlag_EQUIP_COUNT];
extern const u8 gQuiverCapacities[UpgradeCapacity_Max];
extern const u8 gBombBagCapacities[UpgradeCapacity_Max];
File diff suppressed because it is too large Load Diff
-2
View File
@@ -52,8 +52,6 @@ public:
void func_ov001_020bf830();
static void SetInstance(CargoManager *pInstance);
static bool ClearInstance();
static void Destroy(); // func_ov001_020bf428
// overlay 17
-23
View File
@@ -1,23 +0,0 @@
#pragma once
#include "Game/GameModeManager.hpp"
class MainGameManager : public TitleScreenManager_Base {
public:
/* 000 (base) */
/* 154 */
// data_ov024_020d7c18 vtable
/* 08 */ virtual ~MainGameManager() override;
/* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2, unk32 param3) override;
/* 14 */ virtual void vfunc_14() override;
/* 18 */ virtual void vfunc_18() override;
/* 1C */ virtual void vfunc_1C() override;
/* 20 */ virtual void vfunc_20() override;
/* 24 */ virtual void vfunc_24() override;
/* 28 */ virtual void vfunc_28(unk8 *param1) override;
/* 2C */ virtual void vfunc_2C(unk8 *param1) override;
/* 30 */ virtual void vfunc_30(unk32 param1) override;
/* 34 */ virtual void vfunc_34(unk32 param1, unk32 param2) override;
/* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3, unk32 param4) override;
};
+1 -3
View File
@@ -59,7 +59,7 @@ enum StampType_ {
/* 20 */ StampType_Max = 20,
};
class MiscAdvManager {
class MiscAdvManager : public AutoInstance<MiscAdvManager> {
public:
/* 00 */ u16 mStampDates[StampType_Max];
/* 28 */ u16 mUnk_28;
@@ -105,8 +105,6 @@ public:
void func_ov024_020d6610();
static MiscAdvManager *Create();
static void SetInstance(MiscAdvManager *pInstance);
static int ClearInstance();
};
extern MiscAdvManager *gpMiscAdvManager;
-2
View File
@@ -56,8 +56,6 @@ public:
bool func_ov001_020bfa1c();
static bool func_ov001_020bf870();
static void SetInstance(PassengerManager *pInstance); // func_ov001_020bfa38
static bool ClearInstance(); // func_ov001_020bfa44
// overlay 24
void func_ov024_020d41bc(UnkStruct_Param1 *pActorId);
@@ -0,0 +1,21 @@
#pragma once
#include "Unknown/Common.hpp"
#include "types.h"
class UnkAdventureModeSystem1 {
public:
/* 00 (vtable) */
/* 04 */ UnkSystem2_UnkSubSystem9 mUnk_04;
/* 48 */
UnkAdventureModeSystem1(unk16 *param1, unk16 *param2, unk32 param3);
UnkAdventureModeSystem1(unk32 param3);
// data_ov024_020d7f7c
/* 00 */ virtual void vfunc_00() = 0;
void func_ov024_020cab58();
void func_ov024_020caba4();
void func_ov024_020cad7c();
};
+1
View File
@@ -1,5 +1,6 @@
#pragma once
#include "Message/BMGEnums.hpp"
#include "System/SysNew.hpp"
#include "global.h"
#include "types.h"
+213
View File
@@ -0,0 +1,213 @@
#pragma once
#include "versions.h"
enum MsgIndex_ {
// BMGGroup_maingame
MsgIndex_ViewTrain,
MsgIndex_GetItemNothing,
MsgIndex_GetItemNormalShield,
MsgIndex_GetItemBombBag,
MsgIndex_Empty_04,
MsgIndex_GetItemSmallKey,
MsgIndex_Empty_06,
MsgIndex_GetItemGreenRupee,
MsgIndex_GetItemBlueRupee,
MsgIndex_GetItemRedRupee,
MsgIndex_GetItemBigGreenRupee,
MsgIndex_GetItemBigRedRupee,
MsgIndex_GetItemBigGoldRupee,
MsgIndex_GetItemForceGem_18,
MsgIndex_GetItemForceGem_19,
MsgIndex_GetItemForceGem_20,
MsgIndex_GetItemFinalTrack,
MsgIndex_Empty_11,
MsgIndex_Empty_12,
MsgIndex_Empty_13,
MsgIndex_Empty_14,
MsgIndex_GetItemForceGem_35,
MsgIndex_GetItemForceGem_36,
MsgIndex_GetItemForceGem_37,
MsgIndex_GetItemLetter,
MsgIndex_GetItemHeartContainer,
MsgIndex_GetItemMediumQuiver,
MsgIndex_GetItemMediumBombBag,
MsgIndex_GetItemForceGem_43,
MsgIndex_GetItemForceGem_44,
MsgIndex_GetItemForceGem_45,
MsgIndex_GetItemForceGem_46,
MsgIndex_GetItemForceGem_47,
MsgIndex_GetItemForceGem_48,
MsgIndex_GetItemForceGem_49,
MsgIndex_GetItemForceGem_50,
MsgIndex_GetItemForceGem_51,
MsgIndex_GetItemForceGem_52,
MsgIndex_GetItemForceGem_53,
MsgIndex_GetItemForceGem_54,
MsgIndex_GetItemForceGem_55,
MsgIndex_GetItemForceGem_56,
MsgIndex_GetItemForceGem_57,
MsgIndex_Empty_2B,
MsgIndex_Empty_2C,
MsgIndex_Empty_2D,
MsgIndex_Empty_2E,
MsgIndex_Empty_2F,
MsgIndex_Empty_30,
MsgIndex_GetItemTenPriceCard,
MsgIndex_GetItemRedPotion,
MsgIndex_GetItemPurplePotion,
MsgIndex_GetItemYellowPotion,
MsgIndex_GetItemDemonFossil,
MsgIndex_GetItemStalfosSkull,
MsgIndex_GetItemStarFragment,
MsgIndex_GetItemBeeLarvae,
MsgIndex_GetItemWoodHeart,
MsgIndex_GetItemDarkPearlLoop,
MsgIndex_GetItemWhitePearlLoop,
MsgIndex_GetItemRutoCrown,
MsgIndex_GetItemDragonScale,
MsgIndex_GetItemPirateNecklace,
MsgIndex_GetItemPalaceDish,
MsgIndex_GetItemGoronAmber,
MsgIndex_GetItemMysticJade,
MsgIndex_GetItemAncientCoin,
MsgIndex_GetItemPricelessStone,
MsgIndex_GetItemRegalRing,
MsgIndex_Empty_45,
MsgIndex_Empty_46,
MsgIndex_Empty_47,
MsgIndex_GetItemLargeQuiver,
MsgIndex_GetItemLargeBombBag,
MsgIndex_Empty_4A,
MsgIndex_Empty_4B,
MsgIndex_Empty_4C,
MsgIndex_Empty_4D,
MsgIndex_GetItemScrollSpinAttack,
MsgIndex_GetItemScrollBeam,
MsgIndex_GetItemRabbitNet,
MsgIndex_GetItemBeedleCard,
MsgIndex_GetItemSilverCard,
MsgIndex_GetItemGoldCard,
MsgIndex_GetItemPlatinumCard,
MsgIndex_GetItemDiamondCard,
MsgIndex_GetItemFreebieCard,
MsgIndex_GetItemQuintupleCard,
MsgIndex_GetItemCarbenLetter,
#if !IS_JP
MsgIndex_GetItemRecruitUniform2,
MsgIndex_GetItemEngineerUniform,
#endif
MsgIndex_Empty_5B,
MsgIndex_Empty_5C,
MsgIndex_ShopSell,
MsgIndex_ShopQuit,
MsgIndex_ShopOK,
MsgIndex_Empty_60,
MsgIndex_Empty_61,
MsgIndex_Continue1,
MsgIndex_SaveAndQuit1,
MsgIndex_Continue2,
MsgIndex_SaveAndQuit2,
MsgIndex_Skip1,
MsgIndex_Skip2,
MsgIndex_Empty_68,
MsgIndex_Empty_69,
MsgIndex_Empty_6A,
MsgIndex_Empty_6B,
MsgIndex_Empty_6C,
MsgIndex_Empty_6D,
MsgIndex_MapPaintNotAllowed,
MsgIndex_SaveAsk,
MsgIndex_SaveProgress,
MsgIndex_SaveDone,
MsgIndex_CantReadSign,
MsgIndex_Empty_73,
MsgIndex_SaveAskQuit,
#if IS_JP
MsgIndex_TooDarkToRead,
#endif
MsgIndex_MiniGameQuit,
MsgIndex_ItLooksDifferent,
MsgIndex_NothingHappened,
MsgIndex_AskDrinkPotion,
MsgIndex_PlayedSongAwakening,
MsgIndex_PlayedSongRecovery,
MsgIndex_PlayedSongBirds,
MsgIndex_PlayedSongLight,
MsgIndex_PlayedSongDiscovery,
MsgIndex_CantHealMore,
MsgIndex_NothingToWake,
MsgIndex_CantHealHere,
MsgIndex_NoBirds,
MsgIndex_NoLight,
MsgIndex_NothingHidden,
MsgIndex_Empty_84,
MsgIndex_Empty_85,
MsgIndex_Empty_86,
MsgIndex_Empty_87,
MsgIndex_Empty_88,
MsgIndex_FairyHeal,
MsgIndex_FairyHealFirstTimePart1,
MsgIndex_FairyHealFirstTimePart2,
MsgIndex_Undefined,
MsgIndex_GossipStoneAskTreasures,
MsgIndex_GossipStoneNoTreasures,
MsgIndex_GossipStoneChoice2,
MsgIndex_GossipStoneChoice1SaidNo,
MsgIndex_GossipStoneChoice2SaidNo,
MsgIndex_GossipStoneNoMoney,
MsgIndex_GossipStonePaid,
MsgIndex_StampStand,
MsgIndex_StampStandNoBook,
MsgIndex_Empty_96,
MsgIndex_Empty_97,
MsgIndex_ForestLand,
MsgIndex_SnowLand,
MsgIndex_OceanLand,
MsgIndex_FireLand,
MsgIndex_TowerOfSpirits,
MsgIndex_TunnelToTheTower,
MsgIndex_WoodedTemple,
MsgIndex_BlizzardTemple,
MsgIndex_MarineTemple,
MsgIndex_MountainTemple,
MsgIndex_DesertTemple,
MsgIndex_PirateHideout,
MsgIndex_HyruleCastle,
MsgIndex_CastleTown,
MsgIndex_Mayscore,
MsgIndex_AnoukiVillage,
MsgIndex_PapuziaVillage,
MsgIndex_GoronVillage,
MsgIndex_TradingPost,
MsgIndex_IcySpring,
MsgIndex_OutsetVillage,
MsgIndex_WoodlandSanctuary,
MsgIndex_SnowfallSanctuary,
MsgIndex_IslandSanctuary,
MsgIndex_ValleySanctuary,
MsgIndex_DuneSanctuary,
MsgIndex_BridgeWorkersHouse,
MsgIndex_BossStagnox,
MsgIndex_BossFraaz,
MsgIndex_BossCactops,
MsgIndex_BossVulcano,
MsgIndex_BossCapbone,
MsgIndex_BossGhostTrain,
MsgIndex_BossStaven,
MsgIndex_BossMalladus1,
MsgIndex_BossMalladus2,
MsgIndex_GoronTargetRange,
MsgIndex_SnowdriftStation,
MsgIndex_LostAtSeaStation,
MsgIndex_DisorientationStation,
MsgIndex_EndsOfTheEarthStation,
MsgIndex_DarOreMine,
MsgIndex_RabbitHaven,
MsgIndex_SlipperyStation,
MsgIndex_ThreeQuestionMarks,
MsgIndex_Floor1,
MsgIndex_Floor2,
MsgIndex_Floor3,
MsgIndex_ZeldaPhantomTooFar,
};
+14 -7
View File
@@ -181,8 +181,8 @@ public:
/* 00C */ unk32 mUnk_00C;
/* 010 */ unk32 mUnk_010;
/* 014 */ unk16 mUnk_014;
/* 016 */ unk16 mSceneIndex;
/* 018 */ u8 mInteriorIndex; // "house" index but could be more?
/* 016 */ u16 mSceneIndex;
/* 018 */ u8 mRoomIndex; // "house" index but could be more?
/* 019 */ u8 mSpawnIndex;
/* 01A */ unk16 mUnk_01A;
/* 01C */ unk32 mUnk_01C;
@@ -374,7 +374,8 @@ struct SaveManager_36 {
struct SaveManager_00 {
/* 000 */ STRUCT_PAD(0x00, 0x36);
/* 036 */ SaveManager_36 mUnk_36[0x60];
/* 336 */
/* 336 */ STRUCT_PAD(0x336, 0xB30);
/* B30 */ unk32 mUnk_B30[1]; // flags, at least 1
/* BB8 */
};
@@ -398,11 +399,11 @@ public:
/* 244 */ unk32 mUnk_244;
bool IsUnk20A() {
return mUnk_20A == 0;
return this->mUnk_20A == 0;
}
unk32 IsUnk210() {
return mUnk_210 == 0;
BOOL IsUnk210() {
return this->mUnk_210 == 0;
}
SaveSlot *GetSaveSlot(int saveSlotIndex) {
@@ -416,7 +417,13 @@ public:
SaveManager();
void func_ov000_020a0b2c(UnkCallback param1, unk32 param2);
void func_ov000_020ba7c8(u16 saveSlotIndex);
bool func_ov000_020a0b70(void *param1, unk32 param2);
void func_ov001_020ba670();
void func_ov001_020ba7a8();
void func_ov001_020ba7c8(u16 saveSlotIndex);
void func_ov017_020c3040(void *param1, unk32 param2);
void func_ov019_020d08fc(unk32 param1, PTMF<SaveFile>::PTMFCallback param2);
bool func_ov019_020d0964(void);
+8
View File
@@ -387,6 +387,14 @@ public:
/* 00 */ OverlayIndex mLoadedOverlays[OverlaySlot_COUNT];
/* 48 */
bool IsPlayerSub() {
return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_PlayerSub;
}
bool IsMapA6() {
return this->mLoadedOverlays[OverlaySlot_13] == OverlayIndex_MapA6;
}
void Load(OverlaySlot slot, OverlayIndex index);
void LoadIfNotLoaded(OverlaySlot slot, OverlayIndex index);
void Unload(OverlaySlot slot);
+7 -2
View File
@@ -40,6 +40,10 @@ public:
void *operator new(size_t length, u32 id, u32 idLength = 4);
void *operator new[](size_t length, u32 id, u32 idLength = 4);
static inline void *operator new(size_t length, void *ptr = nullptr) {
#pragma unused(length)
return ptr;
}
class UnkStruct_02011e10_Sub1 {
public:
@@ -79,8 +83,9 @@ public:
/* 82 */ unk8 mUnk_82;
/* 83 */ unk8 mUnk_83;
void func_02013014();
void func_02013070();
unk32 func_02013014();
bool func_02013070();
void func_020130d4(unk32 param1);
void func_ov001_020ba588(unk32 param1, unk32 param2);
+16 -67
View File
@@ -46,82 +46,30 @@ public:
};
// similar to UnkSubStruct1
class TitleScreen_Sub3 {
class TitleScreen_Sub3 : public UnkSubStruct1_Base {
public:
/* 00 (vtable) */
/* 04 */ u16 mUnk_04;
/* 04 */ u16 mUnk_06;
/* 08 */ u16 mUnk_08; // 220
/* 08 */ bool mUnk_0A; // 222
/* 08 */ bool mUnk_0B; // 223
/* 0C */ bool mUnk_0C; // 224
/* 0C */ bool mUnk_0D;
/* 0C */ bool mUnk_0E;
/* 0C */ bool mUnk_0F;
/* 10 */ unk32 mUnk_10;
/* 14 */ unk32 mUnk_14;
/* 18 */ unk32 mUnk_18;
/* 1C */ unk32 mUnk_1C;
/* 00 (base) */
/* 20 */ unk32 mUnk_20;
/* 24 */
TitleScreen_Sub3();
void func_0201effc(unk32 param1, unk32 param2, unk32 param3);
bool func_0201f04c();
// data_020442d4 vtable
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
/* 0C */
/* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual void vfunc_04() override;
/* 08 */ virtual void vfunc_08() override;
void UnkOperations() {
int iVar1;
if (this->mUnk_08 != 0) {
iVar1 = this->mUnk_08 - this->mUnk_0D;
this->mUnk_08 = CLAMP(iVar1, 0, 0xFFFF);
} else {
if (this->mUnk_0A) {
if (this->mUnk_04 < this->mUnk_06) {
iVar1 = this->mUnk_04 + this->mUnk_0D;
if (iVar1 > this->mUnk_06) {
iVar1 = this->mUnk_06;
} else if (iVar1 < 0) {
iVar1 = 0;
}
this->mUnk_04 = iVar1;
this->vfunc_00();
if (this->mUnk_04 >= this->mUnk_06) {
this->mUnk_10 = this->mUnk_18;
this->mUnk_0A = false;
this->mUnk_0C = true;
}
}
} else {
if (this->mUnk_0B && this->mUnk_04 != 0) {
iVar1 = this->mUnk_04 - this->mUnk_0D;
if (iVar1 > this->mUnk_06) {
iVar1 = this->mUnk_06;
} else if (iVar1 < 0) {
iVar1 = 0;
}
this->mUnk_04 = iVar1;
this->vfunc_04();
if (this->mUnk_04 == 0) {
this->mUnk_10 = this->mUnk_14;
this->mUnk_0B = false;
this->mUnk_0C = true;
}
}
}
}
void Subprocess1_UnkValueSets() {
this->mUnk_10 = this->mUnk_18;
}
void Subprocess2_UnkValueSets() {
this->mUnk_10 = this->mUnk_14;
}
UnkSubStruct1_Methods;
};
class TitleScreen : public SysObject, public GameModeManagerBase_104 { // 0233c6d4
@@ -181,6 +129,7 @@ public:
class TitleScreenManager : public TitleScreenManager_Base {
public:
/* 000 (base) */
/* 154 */ GameModeBase *mpGameMode;
/* 158 */
TitleScreenManager(unk32 param1) NO_INLINE {
@@ -200,7 +149,7 @@ public:
/* 24 */ virtual void vfunc_24() override;
/* 28 */ virtual void vfunc_28(unk8 *param1) override;
/* 2C */ virtual void vfunc_2C(unk8 *param1) override;
/* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3, unk32 param4) override;
/* 38 */ virtual void vfunc_38(u32 param1, u8 param2, unk16 param3, unk16 param4) override;
static TitleScreenManager *Create(unk32 param1);
};
+218 -200
View File
@@ -11,31 +11,116 @@
extern "C" void func_0201e8d4(void *param1, void *param2);
class UnkSubStruct1 : public SysObject {
//! TODO: make this work with templates?
#define UnkSubStruct1_Methods \
int GetUnkValue1(bool isAdding) { \
int targetLimit; \
int nextValue; \
\
targetLimit = this->mUnk_06; \
\
if (isAdding) { \
nextValue = this->mUnk_04 + this->mUnk_0D; \
} else { \
nextValue = this->mUnk_04 - this->mUnk_0D; \
} \
\
if (nextValue > targetLimit) { \
nextValue = targetLimit; \
} else if (nextValue < 0) { \
nextValue = 0; \
} \
\
return nextValue; \
} \
\
void Subprocess1() { \
if (this->mUnk_04 < this->mUnk_06) { \
this->mUnk_04 = this->GetUnkValue1(true); \
this->vfunc_00(); \
\
if (this->mUnk_04 >= this->mUnk_06) { \
this->Subprocess1_UnkValueSets(); \
this->mUnk_0A = false; \
this->mUnk_0C = true; \
} \
} \
} \
\
void Subprocess2() { \
if (this->mUnk_0B) { \
if (this->mUnk_04 != 0) { \
this->mUnk_04 = this->GetUnkValue1(false); \
this->vfunc_04(); \
\
if (this->mUnk_04 == 0) { \
this->Subprocess2_UnkValueSets(); \
this->mUnk_0B = false; \
this->mUnk_0C = true; \
} \
} \
} \
} \
\
bool UnkCheck1() { \
bool value = true; \
\
if (this->mUnk_0A == false && this->mUnk_0B == false) { \
value = false; \
} \
\
return value; \
} \
\
void UpdateLogic() { \
s32 diff; \
\
if (this->mUnk_08 != 0) { \
diff = this->mUnk_08 - this->mUnk_0D; \
\
if (diff > 0xFFFF) { \
diff = 0xFFFF; \
} else if (diff < 0) { \
diff = 0; \
} \
\
this->mUnk_08 = diff; \
} else { \
if (this->mUnk_0A) { \
this->Subprocess1(); \
} else { \
this->Subprocess2(); \
} \
} \
} \
\
void UpdatePosition(Vec2s *pOutPos) { \
Vec2us fetch; \
func_0201e8d4(&fetch, this); \
Vec2s_SetU(pOutPos, &fetch); \
} \
\
void Update(Vec2s *pOutPos) { \
this->UpdateLogic(); \
this->UpdatePosition(pOutPos); \
}
class UnkSubStruct1_Base {
public:
/* 00 (vtable) */
/* 04 */ u16 mUnk_04;
/* 06 */ u16 mUnk_06;
/* 08 */ u16 mUnk_08;
/* 0A */ bool mUnk_0A;
/* 0B */ bool mUnk_0B;
/* 0C */ bool mUnk_0C;
/* 0D */ bool mUnk_0D;
/* 0E */ unk8 mUnk_0E;
/* 0F */ unk8 mUnk_0F;
/* 0D */ u8 mUnk_0D;
/* 10 */ unk32 mUnk_10; // brightness (in this context: of the background)
/* 14 */ unk32 mUnk_14;
/* 18 */ unk32 mUnk_18;
/* 1C */ unk32 mUnk_1C;
/* 20 */ unk32 mUnk_20;
/* 24 */ unk32 mUnk_24;
/* 28 */ unk32 mUnk_28;
/* 2C */ unk32 mUnk_2C;
/* 30 */
/* 20 */
UnkSubStruct1();
void func_0201ea68(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
u16 func_0201eaa0();
UnkSubStruct1_Base();
// data_02044330 vtable
/* 00 */ virtual void vfunc_00();
@@ -43,197 +128,54 @@ public:
/* 08 */ virtual void vfunc_08();
/* 0C */
bool UnkCheck1() {
bool value = true;
void func_0201ea68(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
u16 func_0201eaa0();
unk32 func_0201edbc();
};
if (mUnk_0A == false && mUnk_0B == false) {
value = false;
}
class UnkSubStruct1 : public UnkSubStruct1_Base {
public:
/* 00 (base) */
/* 20 */ unk32 mUnk_20;
/* 24 */ unk32 mUnk_24;
/* 28 */ unk32 mUnk_28;
/* 2C */ unk32 mUnk_2C;
/* 30 */
return value;
UnkSubStruct1() {}
void Subprocess1_UnkValueSets() {
this->mUnk_10 = this->mUnk_20;
this->mUnk_14 = this->mUnk_24;
}
void UnkOperations(Vec2s *pPos, bool doSetPos) {
int iVar1;
if (this->mUnk_08 != 0) {
iVar1 = this->mUnk_08 - this->mUnk_0D;
this->mUnk_08 = CLAMP(iVar1, 0, 0xFFFF);
} else {
if (this->mUnk_0A) {
if (this->mUnk_04 < this->mUnk_06) {
iVar1 = this->mUnk_04 + this->mUnk_0D;
if (iVar1 > this->mUnk_06) {
iVar1 = this->mUnk_06;
} else if (iVar1 < 0) {
iVar1 = 0;
}
this->mUnk_04 = iVar1;
this->vfunc_00();
if (this->mUnk_04 >= this->mUnk_06) {
this->mUnk_10 = this->mUnk_20;
this->mUnk_14 = this->mUnk_24;
this->mUnk_0A = false;
this->mUnk_0C = true;
}
}
} else {
if (this->mUnk_0B && this->mUnk_04 != 0) {
iVar1 = this->mUnk_04 - this->mUnk_0D;
if (iVar1 > this->mUnk_06) {
iVar1 = this->mUnk_06;
} else if (iVar1 < 0) {
iVar1 = 0;
}
this->mUnk_04 = iVar1;
this->vfunc_04();
if (this->mUnk_04 == 0) {
this->mUnk_10 = this->mUnk_18;
this->mUnk_14 = this->mUnk_1C;
this->mUnk_0B = false;
this->mUnk_0C = true;
}
}
}
}
if (doSetPos) {
Vec2us local_4c;
func_0201e8d4(&local_4c, this);
u16 x = local_4c.x;
u16 y = local_4c.y;
// necessary to flip r1 and r2
pPos->x = 0;
pPos->y = 0;
pPos->x = x;
pPos->y = y;
}
void Subprocess2_UnkValueSets() {
this->mUnk_10 = this->mUnk_18;
this->mUnk_14 = this->mUnk_1C;
}
void UnkOperations2(Vec2s *pPos, bool doSetPos) {
int iVar1;
UnkSubStruct1_Methods;
};
if (this->mUnk_08 != 0) {
iVar1 = this->mUnk_08 - this->mUnk_0D;
this->mUnk_08 = CLAMP2(iVar1, 0, 0xFFFF);
} else {
if (this->mUnk_0A) {
if (this->mUnk_04 < this->mUnk_06) {
iVar1 = this->mUnk_04 + this->mUnk_0D;
class UnkSubStruct1_Derived1 : public UnkSubStruct1_Base {
public:
/* 20 */ unk32 mUnk_20;
/* 24 */ unk32 mUnk_24;
/* 28 */ unk32 mUnk_28;
/* 2C */ unk32 mUnk_2C;
/* 30 */
if (iVar1 > this->mUnk_06) {
iVar1 = this->mUnk_06;
} else if (iVar1 < 0) {
iVar1 = 0;
}
UnkSubStruct1_Derived1();
this->mUnk_04 = iVar1;
this->vfunc_00();
if (this->mUnk_04 >= this->mUnk_06) {
this->mUnk_10 = this->mUnk_20;
this->mUnk_14 = this->mUnk_24;
this->mUnk_0A = false;
this->mUnk_0C = true;
}
}
} else {
if (this->mUnk_0B && this->mUnk_04 != 0) {
iVar1 = this->mUnk_04 - this->mUnk_0D;
if (iVar1 > this->mUnk_06) {
iVar1 = this->mUnk_06;
} else if (iVar1 < 0) {
iVar1 = 0;
}
this->mUnk_04 = iVar1;
this->vfunc_04();
if (this->mUnk_04 == 0) {
this->mUnk_10 = this->mUnk_18;
this->mUnk_14 = this->mUnk_1C;
this->mUnk_0B = false;
this->mUnk_0C = true;
}
}
}
}
if (doSetPos) {
Vec2us local_4c;
func_0201e8d4(&local_4c, this);
u16 x = local_4c.x;
u16 y = local_4c.y;
// necessary to flip r1 and r2
pPos->x = 0;
pPos->y = 0;
pPos->x = x;
pPos->y = y;
}
void Subprocess1_UnkValueSets() {
this->mUnk_10 = this->mUnk_18;
}
void UnkOperations3() {
int test;
int iVar1;
if (this->mUnk_08 != 0) {
iVar1 = this->mUnk_08 - this->mUnk_0D;
this->mUnk_08 = CLAMP(iVar1, 0, 0xFFFF);
} else {
if (this->mUnk_0A) {
if (this->mUnk_04 < this->mUnk_06) {
iVar1 = this->mUnk_04 + this->mUnk_0D;
if (iVar1 > this->mUnk_06) {
iVar1 = this->mUnk_06;
} else if (iVar1 < 0) {
iVar1 = 0;
}
this->mUnk_04 = iVar1;
this->vfunc_00();
if (this->mUnk_04 >= this->mUnk_06) {
this->mUnk_10 = this->mUnk_18;
this->mUnk_0A = false;
this->mUnk_0C = true;
}
}
} else {
if (this->mUnk_0B && this->mUnk_04 != 0) {
int iVar1 = this->mUnk_04 - this->mUnk_0D;
if (iVar1 > this->mUnk_06) {
iVar1 = this->mUnk_06;
} else if (iVar1 < 0) {
iVar1 = 0;
}
this->mUnk_04 = iVar1;
this->vfunc_04();
if (this->mUnk_04 == 0) {
this->mUnk_10 = this->mUnk_14;
this->mUnk_0B = false;
this->mUnk_0C = true;
}
}
}
}
void Subprocess2_UnkValueSets() {
this->mUnk_10 = this->mUnk_14;
}
UnkSubStruct1_Methods;
};
struct UnkStruct_ov019_020d24c8_28_258_00 {
@@ -254,7 +196,7 @@ public:
Vec2s mPos;
Vec2us mPosU;
};
/* 0E */ unk16 mUnk_0E;
/* 0E */ s16 mUnk_0E;
/* 10 */ unk16 mUnk_10;
/* 12 */ unk16 mUnk_12;
/* 14 */ unk16 mUnk_14;
@@ -364,6 +306,8 @@ public:
#define BTN_ID_RAIL_MAP_OCEAN_LOST_AT_SEA_STATION 0x77
#define BTN_ID_RAIL_MAP_SNOW_SLIPPERY_STATION 0x78
#define BTN_ID_UNK_80 0x80
#define BTN_ID_SHOP_QUIT 0x81 // quit shop
#define BTN_ID_SHOP_RETURN 0x82 // quit item preview
#define BTN_ID_SHOP_BUY 0x83
@@ -469,14 +413,15 @@ public:
#define BTN_ID_BATTLE_MENU_JOIN_GROUP 0xBB
#define BTN_ID_BATTLE_MENU_PLAYER_LIST 0xBD
class UnkSystem2_UnkSubSystem1_Base {
class UnkSystem2_UnkSubSystem1_Base : public GameModeLinkList<UnkSystem2_UnkSubSystem1_Base> {
public:
/* 00 (vtable) */
/* 04 */ GameModeLinkList<UnkSystem2_UnkSubSystem1_Base> mUnk_04;
/* 0C */ void *mUnk_0C;
/* 10 */ unk32 mButtonID;
/* 14 */ Vec2s mPos; // image position (among other things)
/* 18 */ STRUCT_PAD(0x18, 0x24);
/* 18 */ unk32 mUnk_18;
/* 1C */ unk32 mUnk_1C;
/* 20 */ unk32 mUnk_20;
/* 24 */ Vec2us mPosOffset; // used to shift the button when selected
/* 28 */ bool mUnk_28; // selected highlight effect when set to true
/* 29 */ bool mUnk_29; // related to having the button selected
@@ -513,13 +458,30 @@ public:
/* 0C */ virtual void vfunc_0C() override;
};
class UnkSystem2_UnkSubSystem7 {
class UnkSystem2_UnkSubSystem7_Base {
public:
/* 00 */ unk32 mUnk_00;
/* 00 (vtable) */
// data_ov000_020b1c88
/* 00 */ virtual void vfunc_00();
/* 00 */ virtual void vfunc_04();
};
class UnkSystem2_UnkSubSystem7 : public UnkSystem2_UnkSubSystem7_Base {
public:
/* 00 (base) */
~UnkSystem2_UnkSubSystem7();
};
class UnkSystem2_UnkSubSystem7_Derived2 {
public:
/* 00 */ UnkSystem2_UnkSubSystem7 mUnk_00;
/* 04 */ STRUCT_PAD(0x04, 0x64);
UnkSystem2_UnkSubSystem7_Derived2();
};
//! TODO: conflicts with UnkSystem2_UnkSubSystem1_Derived1? mUnk_34 type differs for some reasons
class UnkSystem2_UnkSubSystem1_Derived2 : public UnkSystem2_UnkSubSystem1_Base {
public:
@@ -549,6 +511,30 @@ public:
/* 0C */ virtual void vfunc_0C() override;
};
class UnkSystem2_UnkSubSystem1_Derived3 : public UnkSystem2_UnkSubSystem1_Base {
public:
/* 00 (base) */
/* 30 */ unk32 mUnk_30;
/* 34 */
UnkSystem2_UnkSubSystem1_Derived3();
// data_ov000_020b1f5c
/* 00 */ virtual ~UnkSystem2_UnkSubSystem1_Derived3() override {}
/* 0C */ virtual void vfunc_0C() override;
void func_ov000_02063a3c(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6);
};
class UnkSystem2_UnkSubSystem1_Derived4 : public UnkSystem2_UnkSubSystem1_Derived3 {
public:
UnkSystem2_UnkSubSystem1_Derived4() {}
// data_ov000_020b1f2c
/* 00 */ virtual ~UnkSystem2_UnkSubSystem1_Derived4() override {}
/* 0C */ virtual void vfunc_0C() override;
};
class UnkSystem2_UnkSubSystem5_Base_10 {
public:
/* 000 (vtable) */
@@ -687,15 +673,17 @@ public:
/* 00 */ UnkSystem2_UnkSubSystem1_Base *mUnk_00;
/* 04 */ UnkSystem2_UnkSubSystem5 mUnk_04;
UnkSystem2_UnkSubSystem3();
UnkSystem2_UnkSubSystem3(UnkSystem2_UnkSubSystem1_Base *param1, unk32 param2, unk32 param3, unk32 param4);
void func_ov000_02062f30();
void func_ov000_02062f18(void *param1, unk32 param2, unk32 param3);
};
class UnkSystem2_UnkSubSystem8_Base {
public:
/* 00 (vtable) */
/* 04 */ UnkSystem2_UnkSubSystem1_Derived2 *mUnk_04;
/* 04 */ UnkSystem2_UnkSubSystem1_Base *mUnk_04;
/* 08 */ bool mUnk_08;
/* 09 */ unk8 mUnk_09;
/* 0A */ unk8 mUnk_0A;
@@ -850,7 +838,7 @@ public:
void func_ov000_02060950();
void func_ov000_020609b0();
void func_ov000_020609c4(void);
void func_ov000_02060a98();
bool func_ov000_02060a98(unk32 param1);
void func_ov000_02060ad0();
unk32 func_ov000_02060af8(void);
void func_ov000_02060b50();
@@ -1115,3 +1103,33 @@ public:
UnkStruct_PlayerGet_ec();
~UnkStruct_PlayerGet_ec();
};
class UnkActorSystem2 : public GameModeManagerBase_104 {
public:
/* 000 (base) */
/* 01B */ bool mUnk_01B;
/* 01C */ UnkSubStruct19 mUnk_01C;
/* 094 */ UnkSubStruct19 mUnk_094;
/* 10C */ bool mUnk_10C;
/* 10C */ bool mUnk_10D;
UnkActorSystem2(bool param1);
// data_ov024_020d7bd0
/* 00 */ virtual ~UnkActorSystem2() override;
/* 08 */ virtual void vfunc_08(Input *pButtons, TouchControl *pTouchControl) override;
/* 10 */ virtual void vfunc_10(unk8 *param1) override;
void func_ov024_020c4ec0();
void func_ov024_020c4ed8();
void func_ov024_020c4ef0();
void func_ov024_020c4f08();
void func_ov024_020c4f18();
void func_ov024_020c4f28();
void func_ov024_020c4f4c();
void func_ov024_020c4f5c();
void func_ov024_020c4f6c();
bool func_ov024_020c4f7c();
bool func_ov024_020c510c();
void func_ov024_020c5120(bool param1);
};
+14
View File
@@ -0,0 +1,14 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_02049f8c {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_02049f8c();
~UnkStruct_02049f8c();
};
extern UnkStruct_02049f8c data_02049f8c;
+8 -5
View File
@@ -12,7 +12,7 @@ class GameModeFileSelect;
class UnkStruct_0204a060_Base3 : public SysObject {
public:
/* 00 (vtable) */
/* 04 */ GameModeLinkListNode mUnk_04;
/* 04 */ GameModeLinkList<UnkStruct_0204a060_Base3> mUnk_04;
/* 0C */ bool mUnk_0C;
/* 0D */ unk8 mUnk_0D;
/* 0E */ unk8 mUnk_0E;
@@ -35,6 +35,9 @@ public:
/* 14 */
UnkStruct_0204a060_Base2();
/* 00 */ virtual ~UnkStruct_0204a060_Base2() override;
void func_0201ba68();
};
@@ -42,8 +45,8 @@ class UnkStruct_0204a060_Base : public UnkStruct_0204a060_Base2 {
public:
/* 00 (base) */
/* 14 */ unk32 mUnk_14;
/* 18 */ unk8 mUnk_18;
/* 19 */ unk8 mUnk_19;
/* 18 */ bool mUnk_18;
/* 19 */ bool mUnk_19;
/* 1A */ u16 mUnk_1A;
/* 1C */ unk16 mUnk_1C;
/* 1E */ unk16 mUnk_1E;
@@ -54,10 +57,10 @@ public:
UnkStruct_0204a060_Base();
void func_0201bb84(unk32 param1, unk32 param2, unk32 param3);
void func_0201bba4(unk32 param1, unk32 param2);
void func_0201bbcc();
void func_0201bbcc(unk32 param1, unk32 param2);
// data_02044108 vtable
/* 00 */ virtual ~UnkStruct_0204a060_Base() override;
/* 00 */ WEAK virtual ~UnkStruct_0204a060_Base() override {}
/* 08 */ virtual bool vfunc_08(unk32 param1) override;
/* 0C */ virtual bool vfunc_0C(void);
/* 10 */ virtual bool vfunc_10(void);
+9 -6
View File
@@ -4,9 +4,6 @@
#include "System/SysNew.hpp"
#include "types.h"
class UnkStruct_0204a088;
extern UnkStruct_0204a088 *data_0204a088;
class UnkStruct_0204a088_Base : public SysObject {
public:
UnkStruct_0204a088_Base();
@@ -22,12 +19,18 @@ public:
/* 00C */ FileSelectManager_UnkDrawBase mUnk_0C[23]; // 23 possible overlays
/* 120 */ u16 mUnk_120;
/* 122 */ unk16 mUnk_122;
/* 123 */ unk8 mUnk_123;
/* 124 */ unk8 mUnk_124;
/* 125 */ unk8 mUnk_125;
/* 126 */ unk8 mUnk_126;
/* 127 */ bool mUnk_127;
/* 128 */ unk16 mUnk_128;
void func_ov000_02061098(void);
void func_ov000_020611dc(void *param1, unk32 param2);
void func_ov000_020611fc(unk32 param2); // sets new index
void func_ov000_02061224(void);
bool func_ov000_020611fc(unk32 param2); // sets new index
bool func_ov000_02061224(void);
void func_ov000_02061230(void);
void func_ov000_02061248(void);
};
extern UnkStruct_0204a088 *data_0204a088;
+43 -5
View File
@@ -104,6 +104,10 @@ public:
/* 04 */ unk32 mUnk_04;
UnkStruct_0204a110_Sub5();
void func_0201c494(unk32 param1);
void func_0201c4d8(unk32 param1, unk32 param2, unk32 param3);
void func_0201c504(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
};
class UnkStruct_0204a110_Sub6 {
@@ -122,12 +126,17 @@ public:
// data_020442b4 vtable
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
void func_0201ced8();
void func_0201cf30();
};
class UnkStruct_0204a110_Sub7_08 : public SysObject {
public:
/* 00 (vtable) */
/* 04 */ STRUCT_PAD(0x04, 0x30);
/* 04 */ STRUCT_PAD(0x04, 0x0A);
/* 0A */ bool mUnk_0A;
/* 0B */ STRUCT_PAD(0x0B, 0x30);
/* 30 */
UnkStruct_0204a110_Sub7_08();
@@ -136,6 +145,8 @@ public:
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
unk32 func_0201ec30();
};
struct UnkStruct_027e0120 {
@@ -147,7 +158,7 @@ extern UnkStruct_027e0120 data_027e0120;
class UnkStruct_0204a110_Sub7 {
public:
/* 00 */ unk8 mUnk_00;
/* 00 */ bool mUnk_00;
/* 01 */ unk8 mUnk_01;
/* 02 */ unk8 mUnk_02;
/* 03 */ unk8 mUnk_03;
@@ -157,6 +168,11 @@ public:
/* 1C */
UnkStruct_0204a110_Sub7();
void func_0201db14(unk32 param1, unk32 param2, Vec2s *param3, Vec2s *param4, unk32 param5, unk32 param6);
void func_0201dd58(unk32 param1, unk32 param2);
void func_0201dc10(s16 *param1, unk32 param2, unk32 param3);
void func_0201d628();
};
class UnkStruct_0204a110_Sub8 {
@@ -169,7 +185,14 @@ public:
/* 08 */ unk8 mUnk_0B;
/* 0C */ UnkSystem2_UnkSubSystem9 *mUnk_0C;
UnkSystem2_UnkSubSystem9 *GetUnk0C() {
return this->mUnk_0C;
}
UnkStruct_0204a110_Sub8();
void func_0201e588(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5);
void func_0201e698(void);
};
class UnkStruct_0204a110 {
@@ -189,31 +212,44 @@ public:
/* DA6 */ unk8 mUnk_DA6;
/* DA7 */ unk8 mUnk_DA7;
/* DA8 */ UnkStruct_0204a110_Sub6 mUnk_DA8;
/* DAC */ STRUCT_PAD(0xDBC, 0xDC0);
/* DBC */ STRUCT_PAD(0xDBC, 0xDC0);
/* DC0 */ UnkStruct_0204a110_Sub7 mUnk_DC0;
/* DDC */ UnkStruct_0204a110_Sub8 mUnk_DDC;
/* DEC */ GameModeManagerBase *mUnk_DEC;
/* DF0 */ unk16 mUnk_DF0;
/* DF0 */ u16 mUnk_DF0;
/* DF2 */ unk8 mUnk_DF2;
/* DF3 */ unk8 mUnk_DF3;
/* DF4 */ unk32 mUnk_DF4;
/* DF8 */ unk32 mUnk_DF8;
/* DFC */ unk8 mUnk_DFC;
/* DFD */ unk8 mUnk_DFD;
/* DFE */ unk8 mUnk_DFE;
/* DFE */ bool mUnk_DFE;
/* DFF */ unk8 mUnk_DFF;
/* E00 */ unk8 mUnk_E00;
/* E00 */ unk8 mUnk_E01;
/* E02 */ unk16 mUnk_E02;
/* E04 */ unk16 mUnk_E04;
/* E06 */ unk16 mUnk_E06; // pad?
/* E08 */
UnkStruct_0204a110_Sub5 *GetUnkD9C() {
return &this->mUnk_D9C;
}
UnkStruct_0204a110_Sub8 *GetUnkDDC() {
return &this->mUnk_DDC;
}
UnkStruct_0204a110();
unk32 func_01ff9b50();
void func_02018be0(unk32 param1);
void func_02018c2c();
void func_02018c78(unk32 param1);
void func_02018c90(unk32 param1);
void func_02018d34();
void func_02018d78(unk32 param1);
void func_020195a0(const char *param1, unk32 param2, unk32 param3, unk32 param4);
void func_0201967c(unk32 param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6);
void func_02019538(unk32 param1, unk32 param2);
@@ -223,6 +259,8 @@ public:
void func_02019408();
void func_02019454();
unk32 func_02019514();
void func_02019528();
bool func_02019548();
void func_ov001_020bd514(unk32 param1, void *param2, unk32 param3, unk32 param4);
void func_ov001_020bd58c(void);
-17
View File
@@ -1,17 +0,0 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_0204aeac {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_0204aeac();
~UnkStruct_0204aeac();
void func_0201c494(unk32 param1);
void func_0201c4d8(unk32 param1, unk32 param2, unk32 param3);
void func_0201c504(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
};
extern UnkStruct_0204aeac data_0204aeac;
-11
View File
@@ -1,11 +0,0 @@
#pragma once
#include "System/SysNew.hpp"
#include "types.h"
class UnkStruct_0204aeec : public SysObject {
public:
void func_0201e698(void);
};
extern UnkStruct_0204aeec data_0204aeec;
+3 -1
View File
@@ -2,6 +2,8 @@
#include "types.h"
class UnkSubStruct19;
class UnkStruct_0204af1c_00 {
public:
/* 0000 */ unk8 mUnk_0000[0x1490];
@@ -20,7 +22,7 @@ public:
UnkStruct_0204af1c();
void func_0201a800();
void func_0201aa44(void *param1, void *param2, unk32 param3, void *param4);
void func_0201aad0(void *param1, void *param2, unk32 param3, void *param4);
void func_0201aad0(UnkSubStruct19 *param1, void *param2, unk32 param3, void *param4);
};
extern UnkStruct_0204af1c data_0204af1c;
+17 -2
View File
@@ -1,16 +1,31 @@
#pragma once
#include "Game/GameModeManager.hpp"
#include "Item/Item.hpp"
#include "types.h"
class UnkStruct_020d8698 {
class UnkStruct_020d8698 : public GameModeManagerBase_104 {
public:
void func_ov024_020cd458(ItemFlag itemFlag, unk32 param2);
void func_ov024_020cd094();
void func_ov024_020cd150();
void func_ov024_020cd368(bool param1, bool param2);
void func_ov024_020cd3d0();
void func_ov024_020cd3e0(unk32 param1);
void func_ov024_020cd3f0(unk32 param1);
void func_ov024_020cd410();
void func_ov024_020cd420();
void func_ov024_020cd458(ItemFlag itemFlag, unk32 param2);
void func_ov024_020cd4e4(u16 param1);
bool func_ov024_020cd5c0(u16 param1);
void func_ov024_020cd3a4();
void func_ov024_020cd400();
/* 00 */ virtual ~UnkStruct_020d8698();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
/* 10 */ virtual void vfunc_10();
/* 14 */ virtual void vfunc_14();
/* 18 */ virtual void vfunc_18();
};
extern UnkStruct_020d8698 *data_ov024_020d8698;
+17
View File
@@ -0,0 +1,17 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_027e095c : public AutoInstance<UnkStruct_027e095c> {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_027e095c();
~UnkStruct_027e095c();
void func_ov000_020592ec();
void func_ov000_020592a0();
};
extern UnkStruct_027e095c *data_027e095c;
+39 -5
View File
@@ -4,17 +4,51 @@
#include "types.h"
#include <nitro/math.h>
class UnkStruct_027e0998 {
class UnkStruct_027e0998_Base {
public:
/* 00 */ unk32 mUnk_00;
/* 00 (vtable) */
/* 04 */ unk16 mUnk_04;
/* 06 */ STRUCT_PAD(0x06, 0x42);
/* 42 */ unk16 mUnk_42;
/* 44 */ unk32 mUnk_44;
/* 48 */ unk16 mUnk_48;
/* 4A */ unk16 mUnk_4A; // pad?
/* 4C */
UnkStruct_027e0998();
~UnkStruct_027e0998();
UnkStruct_027e0998_Base();
/* 00 */ virtual bool vfunc_00(Vec3p *pPos, void *param2, void *param3);
// data_ov000_020b1e08
/* 00 */ virtual bool vfunc_00(Vec3p *pPos, Vec2s *param2, u16 *param3);
/* 04 */
void func_ov000_02061760();
void func_ov000_02061764();
void func_ov000_02061768();
void func_ov000_02061850(unk32 param1);
unk32 func_ov000_02061a70();
static void SetInstance(UnkStruct_027e0998_Base *pInstance);
};
class UnkStruct_027e0998 : public UnkStruct_027e0998_Base {
public:
/* 00 (base) */
UnkStruct_027e0998();
~UnkStruct_027e0998(); // ClearInstance
// data_ov024_020d7c98
/* 00 */ virtual bool vfunc_00(Vec3p *pPos, Vec2s *param2, u16 *param3) override;
/* 04 */
bool func_ov024_020c716c();
bool func_ov024_020c7214(Vec3p *pPos, Vec2s *param2, u16 *param3);
bool func_ov024_020c727c(Vec2s *param1, u16 *param2);
bool func_ov024_020c7300(unk32 param1);
bool func_ov024_020c7354();
static void Destroy();
static UnkStruct_027e0998 *Create();
};
extern UnkStruct_027e0998 *data_027e0998;
+22 -7
View File
@@ -80,14 +80,26 @@ struct UnkStruct_func_ov000_020702a8 {
/* 20 */ unk16 mUnk_20;
};
class CourseEntry {
public:
/* 00 */ STRUCT_PAD(0x00, 0x17);
struct CourseRoomEntry {
u8 roomIndex;
u8 mapPaintIndex;
u8 unk_02;
u8 unk_03;
};
struct CourseEntry {
/* 00 */ const char name[16];
/* 10 */ unk32 unk_10;
/* 14 */ unk8 mNumRooms;
/* 15 */ unk8 unk_15;
/* 16 */ unk8 unk_16;
/* 17 */ u8 mSaveCourseIndex;
/* 18 */ STRUCT_PAD(0x18, 0x1D);
/* 1D */ u8 mUnk_1D;
/* 1E */ STRUCT_PAD(0x1E, 0x2C);
/* 2C */
/* 1D */ u8 unk_1D;
/* 1E */ u8 unk_1E;
/* 1F */ u8 unk_1F;
/* 20 */ u8 defaultMapPaintIndex;
/* 24 */ CourseRoomEntry roomEntries[];
};
class UnkStruct_027e09a0 {
@@ -97,8 +109,11 @@ public:
UnkStruct_027e09a0();
~UnkStruct_027e09a0();
CourseEntry *func_ov000_0207029c(unk32 param1);
CourseEntry *GetCourseEntry(u32 sceneIndex);
UnkStruct_func_ov000_020702a8 *func_ov000_020702a8(unk32 param1);
unk32 GetRoomEntryIndex();
CourseRoomEntry *GetRoomEntry(u32 sceneIndex, unk32 param2);
bool func_ov000_02070378(u32 param1);
};
extern UnkStruct_027e09a0 *data_027e09a0;
+65 -30
View File
@@ -6,6 +6,8 @@
#include "global.h"
#include "types.h"
struct SaveFile;
/*
naming scheme:
- test_xxx: debug area
@@ -18,6 +20,7 @@ naming scheme:
typedef u32 SceneIndex;
typedef u16 SceneIndex_Half;
enum SceneIndex_ {
/* -1 */ SceneIndex_None = -1,
/* 0 */ SceneIndex_test_trn = 0x00, //
/* 1 */ SceneIndex_test_trn2 = 0x01, //
/* 2 */ SceneIndex_test_pre = 0x02, //
@@ -152,16 +155,19 @@ struct UnkStruct_func_01ffd400 {
/* 1B */ u8 mUnk_1B;
};
struct UnkStruct_SceneChange1 {
/* 00 */ unk32 mNextSceneIndex;
struct UnkStruct_SceneChange1_Base {
/* 00 */ unk32 mSceneIndex;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk16 mUnk_08;
/* 0A */ u8 mRoomIndex;
/* 0B */ u8 mSpawnIndex;
/* 0C */ bool mNextIsCS;
/* 0C */ bool mIsCS;
/* 0D */ unk8 mUnk_0D;
/* 0E */ unk8 mCutsceneIndex;
/* 0E */ u8 mCutsceneIndex;
/* 0F */ unk8 mUnk_0F;
};
struct UnkStruct_SceneChange1 : public UnkStruct_SceneChange1_Base {
/* 10 */ unk8 mUnk_10;
/* 11 */ unk8 mUnk_11;
/* 12 */ unk8 mUnk_12;
@@ -169,13 +175,13 @@ struct UnkStruct_SceneChange1 {
/* 14 */
UnkStruct_SceneChange1() {
this->mNextSceneIndex = SceneIndex_Max;
this->mUnk_04 = 0;
this->mUnk_08 = 0;
this->mRoomIndex = 0xFF; // this changes when you enter a house, it's not clear if it has another purpose yet
this->mSpawnIndex = 0; // changing this then saving will change your spawn location after opening the save again
// (not the area)
this->mNextIsCS = false;
this->mSceneIndex = SceneIndex_Max;
this->mUnk_04 = 0;
this->mUnk_08 = 0;
this->mRoomIndex = 0xFF; // this changes when you enter a house, it's not clear if it has another purpose yet
this->mSpawnIndex = 0; // changing this then saving will change your spawn location after opening the save again
// (not the area)
this->mIsCS = false;
this->mUnk_0D = 0;
this->mCutsceneIndex = CutsceneIndex_None;
this->mUnk_0F = 0;
@@ -188,16 +194,16 @@ struct UnkStruct_SceneChange1 {
u8 spawnIndex = pEntry->mSpawnIndex;
u8 roomIndex = pEntry->mRoomIndex;
this->mNextSceneIndex = sceneIndex;
this->mUnk_04 = 0;
this->mUnk_08 = 0;
this->mRoomIndex = roomIndex;
this->mSpawnIndex = spawnIndex;
this->mNextIsCS = nextIsCS;
this->mUnk_0D = 0;
this->mCutsceneIndex = cutsceneIndex;
this->mUnk_0F = 0;
this->mUnk_10 = 0;
this->mSceneIndex = sceneIndex;
this->mUnk_04 = 0;
this->mUnk_08 = 0;
this->mRoomIndex = roomIndex;
this->mSpawnIndex = spawnIndex;
this->mIsCS = nextIsCS;
this->mUnk_0D = 0;
this->mCutsceneIndex = cutsceneIndex;
this->mUnk_0F = 0;
this->mUnk_10 = 0;
}
};
@@ -213,16 +219,14 @@ public:
class UnkStruct_027e09a4 : public SysObject {
public:
/* 00 */ unk32 mSceneIndex; // the scene index of the current area, this isn't saved when you save the game
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */ u8 mUnk_0C;
/* 0D */ unk8 mUnk_0D;
/* 0E */ u8 mCutsceneIndex;
/* 0F */ unk8 mUnk_0F;
/* 00 */ UnkStruct_SceneChange1_Base mUnk_00; // the infos of the current area, this isn't saved when you save the game
/* 10 */ unk32 *mUnk_10;
/* 14 */ UnkStruct_SceneChange1 mUnk_14;
/* 32 */ STRUCT_PAD(0x28, 0x54);
/* 28 */ unk32 mUnk_28;
/* 2C */ s16 mUnk_2C;
/* 2C */ unk16 mUnk_2E;
/* 30 */ Vec3p mUnk_30;
/* 3C */ STRUCT_PAD(0x3C, 0x54);
/* 54 */ void *mUnk_54; // vtable
/* 58 */ UnkStruct_WarpUnk1 *mpWarpUnk1;
/* 5C */ unk32 mUnk_5C;
@@ -230,6 +234,18 @@ public:
/* 64 */ unk32 mUnk_64;
/* 68 */
bool IsCutscene() {
return this->mUnk_00.mIsCS == true;
}
bool IsNotCutscene() {
return this->mUnk_00.mIsCS != true;
}
u8 CurrentCSIndex() {
return this->mUnk_00.mCutsceneIndex;
}
bool UnkCheck(unk32 sceneIndex) {
switch (sceneIndex) {
case SceneIndex_test_iwa:
@@ -253,9 +269,25 @@ public:
return false;
}
SceneIndex CurrentSceneIndex() {
return this->mUnk_00.mSceneIndex;
}
bool IsDarkRealm() {
return this->mUnk_00.mSceneIndex <= SceneIndex_t_eviltrain3 && this->mUnk_00.mSceneIndex >= SceneIndex_t_eviltrain;
}
bool IsPirate() {
return this->mUnk_00.mSceneIndex == SceneIndex_f_pirate;
}
bool IsPassenger() {
return this->mUnk_00.mSceneIndex == SceneIndex_f_passenger;
}
~UnkStruct_027e09a4();
unk32 func_01ffd3d8();
bool func_01ffd3d8();
UnkStruct_func_01ffd400 *func_01ffd400();
unk8 func_ov000_02070bd0(unk32 csIndex, unk32 param2);
@@ -270,12 +302,15 @@ public:
unk16 *func_ov000_02070538();
bool func_ov000_02070a9c(UnkStruct_SceneChange1 *param1);
bool func_ov000_02072154(UnkStruct_SceneChange1 *param1, unk32 param2);
void func_ov000_0207056c();
void func_ov000_020705e8(SaveFile *param1, unk32 param2);
void func_ov017_020bb994(void *param1);
void func_ov017_020bb994(unk32 param1);
void func_ov017_020bb994(void *, void *);
static void func_ov025_020c4a60();
static void Destroy();
};
extern UnkStruct_027e09a4 *data_027e09a4;
+85
View File
@@ -0,0 +1,85 @@
#pragma once
#include "Unknown/UnkMemFuncs.h"
#include "global.h"
#include "types.h"
#include <nitro/math.h>
struct UnkStruct_027e09ac_Base_00 {
/* 00 */ unk16 mUnk_00[2];
/* 04 */ unk16 mUnk_04[3];
/* 0A */ unk16 mUnk_0A;
/* 0C */ unk32 mUnk_0C;
};
class UnkStruct_027e09ac_Base {
public:
/* 000 */ UnkStruct_027e09ac_Base_00 mUnk_000;
/* 010 */ bool mUnk_010;
/* 011 */ unk8 mUnk_011; // pad?
/* 012 */ unk8 mUnk_012; // pad?
/* 013 */ unk8 mUnk_013; // pad?
/* 014 */
UnkStruct_027e09ac_Base();
};
class UnkStruct_027e09ac_14 {
public:
/* 00 */ u16 mUnk_00;
/* 02 */ u16 mUnk_02;
/* 04 */ u16 mUnk_04;
/* 06 */ u16 mUnk_06;
/* 08 */ u16 mUnk_08;
/* 0A */ u16 mUnk_0A;
/* 0C */ u16 mUnk_0C;
/* 0E */ u16 mUnk_0E;
/* 10 */ u16 mUnk_10;
/* 12 */ u16 mUnk_12;
/* 14 */ u16 mUnk_14;
/* 16 */ u16 mUnk_16;
/* 18 */ u16 mUnk_18;
/* 1A */ u16 mUnk_1A;
/* 1C */ u16 mUnk_1C;
/* 1E */ u16 mUnk_1E;
/* 20 */ u16 mUnk_20;
/* 22 */ u16 mUnk_22;
/* 24 */ u16 mUnk_24;
/* 26 */ u16 mUnk_26;
/* 28 */ u16 mUnk_28;
/* 2A */ u16 mUnk_2A[10];
/* 3E */ u16 mUnk_3E;
/* 40 */ u32 mUnk_40[8];
/* 60 */ u16 mUnk_60;
/* 62 */ u16 mUnk_62;
/* 64 */ u16 mUnk_64;
/* 66 */ u16 mUnk_66;
/* 68 */
void func_ov000_02071f98();
};
class UnkStruct_027e09ac : public AutoInstance<UnkStruct_027e09ac>, public UnkStruct_027e09ac_Base {
public:
/* 000 (base) */
/* 014 */ UnkStruct_027e09ac_14 mUnk_014;
/* 07C */ UnkStruct_027e09ac_14 mUnk_07C; //! TODO: type unsure but the size is consistent with the gap
/* 0E4 */ UnkStruct_027e09ac_14 mUnk_0E4;
/* 14C */ u16 mUnk_14C;
/* 14E */ u16 mUnk_14E;
/* 150 */ s16 mUnk_150;
/* 152 */ s16 mUnk_152;
/* 154 */ unk16 mUnk_154;
/* 156 */ bool mUnk_156;
/* 157 */ unk8 mUnk_157; // pad?
/* 158 */
UnkStruct_027e09ac();
~UnkStruct_027e09ac();
void func_ov000_020726f0(unk32 param1, unk32 param2, unk32 param3);
void func_ov000_020729c4(UnkStruct_027e09ac_14 *param1, u16 param2, u16 param3, s16 param4, s16 param5);
};
extern UnkStruct_027e09ac *data_027e09ac;
+76 -2
View File
@@ -1,20 +1,94 @@
#pragma once
#include "MapObject/MapObject.hpp"
#include "Save/AdventureFlags.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, 0xFD4);
/* FD4 */
UnkStruct_027e09b8_00();
~UnkStruct_027e09b8_00();
};
class UnkStruct_027e09b8_04 {
public:
/* 00 */ STRUCT_PAD(0x00, 0x64);
/* 64 */
UnkStruct_027e09b8_04();
~UnkStruct_027e09b8_04();
};
class UnkStruct_027e09b8_08 {
public:
/* 00 */ STRUCT_PAD(0x00, 0x00);
/* 00 */
UnkStruct_027e09b8_08();
~UnkStruct_027e09b8_08();
};
class UnkStruct_027e09b8_0C {
public:
/* 00 */ STRUCT_PAD(0x00, 0xC4);
/* C4 */ MapObjectId mMapObjId;
/* C8 */
UnkStruct_027e09b8_0C();
~UnkStruct_027e09b8_0C();
};
class UnkStruct_027e09b8_10 {
public:
/* 00 */ STRUCT_PAD(0x00, 0x18);
/* 18 */
UnkStruct_027e09b8_10();
~UnkStruct_027e09b8_10();
};
class UnkStruct_027e09b8 {
public:
/* 00 */ unk8 mUnk_00[0x14];
/* 00 */ UnkStruct_027e09b8_00 *mUnk_00;
/* 04 */ UnkStruct_027e09b8_04 *mUnk_04;
/* 08 */ UnkStruct_027e09b8_08 *mUnk_08;
/* 0C */ UnkStruct_027e09b8_0C *mUnk_0C;
/* 10 */ UnkStruct_027e09b8_10 *mUnk_10;
/* 14 */ u32 mAdventureFlags[32]; //! TODO
#if IS_JP
//! TODO: figure out if the other versions got these too
/* 94 */ u16 mUnk_94;
#endif
bool HasAdventureFlag(AdventureFlag flag) {
return GET_FLAG(this->mAdventureFlags, flag);
}
unk32 func_01ffd420();
unk32 func_ov000_020732ec(unk32 param1);
unk32 func_ov000_020732fc(unk32 param1);
unk32 func_ov000_020732dc(unk32 param1);
bool func_ov000_020732dc(unk32 param1);
unk32 func_ov000_0207330c();
unk32 func_ov000_02073470(void *param1, unk32 param2);
unk32 func_ov000_02073388(void *param1, unk32 param2);
void func_ov000_02073578(void *param1, unk32 param2);
#if IS_JP
void func_ov000_02074d78(unk32 param1);
#endif
};
extern UnkStruct_027e09b8 *data_027e09b8;
+5 -1
View File
@@ -134,7 +134,9 @@ public:
/* 08 */ unk32 mUnk_08;
/* 0C */ UnkStruct_027e0cd8_0c *mUnk_0C; // related to train?
/* 10 */ MapObjectManager *mUnk_10;
/* 14 */ STRUCT_PAD(0x14, 0x4C);
/* 14 */ STRUCT_PAD(0x14, 0x24);
/* 24 */ Vec3p mUnk_24;
/* 34 */ STRUCT_PAD(0x34, 0x4C);
/* 4C */
bool func_ov000_02081e30(unk32 param1, unk32 param2);
@@ -143,6 +145,8 @@ public:
void func_ov000_02081eec(unk16 param1, unk32 param2, unk32 param3);
bool func_ov000_02081f3c(unk16 param1, unk32 param2);
unk32 func_ov000_02081d5c();
bool func_ov000_02082124();
bool func_ov000_02081c28();
};
extern UnkStruct_027e0cd8 *data_027e0cd8;
+1
View File
@@ -11,6 +11,7 @@ public:
~UnkStruct_027e0cdc();
unk32 func_ov000_02082a28(unk32 param1);
unk32 func_ov000_02082a48(unk32 param1);
};
extern UnkStruct_027e0cdc *data_027e0cdc;
+27 -1
View File
@@ -22,6 +22,8 @@ public:
/* 2C */ unk32 mUnk_2C;
/* 30 */
void func_ov008_020b6a50();
void func_ov024_020d3d98(unk32 param1, unk32 param2);
void func_ov024_020d3ee8(unk32 param1, u16 param2, unk32 param3);
unk32 func_ov024_020d3dcc();
@@ -29,6 +31,26 @@ public:
void func_ov110_02185d3c(ItemId itemId);
};
class UnkStruct_027e0ce0_38_10 {
public:
void func_ov026_020f4870();
};
class UnkStruct_027e0ce0_38_158 {
public:
void func_ov026_020dc2d0();
};
class UnkStruct_027e0ce0_38 {
public:
/* 000 */ STRUCT_PAD(0x00, 0x10);
/* 010 */ UnkStruct_027e0ce0_38_10 *mUnk_010;
/* 014 */ STRUCT_PAD(0x14, 0x158);
/* 158 */ UnkStruct_027e0ce0_38_158 *mUnk_158;
// data_ov026_0213562c
};
// PlayerManager?
class UnkStruct_027e0ce0 {
public:
@@ -49,7 +71,7 @@ public:
/* 2C */ ItemManager *mUnk_2C; // same as above
/* 30 */ unk32 *mUnk_30; // ?
/* 34 */ UnkStruct_027e0ce0_34 *mUnk_34;
/* 38 */ unk32 *mUnk_38; // pointer to data_027e0478 when on the train
/* 38 */ UnkStruct_027e0ce0_38 *mUnk_38; // pointer to data_027e0478 when on the train
/* 3C */ unk32 mUnk_3C;
/* 40 */ unk32 *mUnk_40; // pointer to data_027e0478 when not on the train
/* 44 */
@@ -57,12 +79,16 @@ public:
Vec3p *func_01fff148(unk32 param1);
bool func_01fff1a4();
// overlay 0
void func_ov000_0208a318(unk32 param1, unk32 param2, unk32 param3);
void func_ov000_0208bbd4(unk32 param1, Vec3p *param2, u16 param3);
void func_ov000_0208bbd4(unk32 param1, Vec3p *param2, void *param3);
static UnkStruct_027e0ce0_34 *func_ov000_0205c904();
// overlay 17
void func_ov017_020bd69c();
};
extern UnkStruct_027e0ce0 *data_027e0ce0;
+101 -2
View File
@@ -1,16 +1,115 @@
#pragma once
#include "Unknown/Common.hpp"
#include "global.h"
#include "types.h"
class UnkStruct_027e0cf8 {
struct UnkStruct_027e0cf8_00_18 {
/* 00 */ UnkSubStruct19 mUnk_00;
/* 78 */ unk32 mUnk_78;
/* 7C */ unk32 mUnk_7C;
/* 80 */ unk32 mUnk_80;
};
class UnkStruct_027e0cf8_00 {
public:
/* 00 */ unk32 mUnk_00;
/* 0000 */ STRUCT_PAD(0x00, 0x18);
/* 0018 */ UnkStruct_027e0cf8_00_18 mUnk_0018[48];
/* 18D8 */ STRUCT_PAD(0x18D8, 0x2258);
/* 2258 */
UnkStruct_027e0cf8_00();
~UnkStruct_027e0cf8_00();
void func_ov024_020cfb7c(void *param1, Vec2s *param2, unk32 param3, u16 param4, unk32 param5, unk32 param6);
};
class UnkStruct_027e0cf8_04 {
public:
/* 00 */ STRUCT_PAD(0x00, 0x1C);
UnkStruct_027e0cf8_04();
void func_ov026_020dc300();
};
class UnkStruct_027e0cf8_08 {
public:
/* 000 */ STRUCT_PAD(0x00, 0x26C);
UnkStruct_027e0cf8_08();
~UnkStruct_027e0cf8_08();
void func_ov024_020d32d8();
void func_ov024_020d32e8(Vec2s *param1);
void func_ov024_020d3324(void *param1);
void func_ov024_020d3348(void *param1, unk32 param2, u16 param3, unk32 param4, unk32 param5);
void func_ov024_020d340c();
void func_ov024_020d341c(unk32 param1);
};
class UnkStruct_027e0cf8_0C {
public:
/* 000 */ STRUCT_PAD(0x00, 0x170);
UnkStruct_027e0cf8_0C();
~UnkStruct_027e0cf8_0C();
void func_ov024_020cff8c(void *param1, Vec2s *param2);
void func_ov024_020d0004();
void func_ov024_020d02e0();
void func_ov024_020d0340();
void func_ov024_020d03f8(Vec2s *param1);
void func_ov024_020d041c(Vec2s *param1);
void func_ov024_020d05d0(unk32 param1, unk32 param2);
};
class UnkStruct_027e0cf8 : AutoInstance<UnkStruct_027e0cf8> {
public:
/* 00 */ UnkStruct_027e0cf8_00 *mUnk_00;
/* 04 */ UnkStruct_027e0cf8_04 *mUnk_04;
/* 08 */ UnkStruct_027e0cf8_08 *mUnk_08;
/* 0C */ UnkStruct_027e0cf8_0C *mUnk_0C;
/* 10 */ Vec2s mUnk_10;
/* 14 */ Vec2s mUnk_14;
/* 18 */ unk32 mUnk_18;
/* 1C */ bool mUnk_1C;
/* 1D */ unk8 mUnk_1D;
/* 1E */ unk8 mUnk_1E;
/* 1F */ unk8 mUnk_1F;
/* 20 */ unk32 mUnk_20;
/* 24 */ unk32 mUnk_24;
/* 28 */ u16 mUnk_28;
/* 2A */ u16 mUnk_2A;
/* 2C */
UnkStruct_027e0cf8();
~UnkStruct_027e0cf8();
void func_ov017_020c390c();
void func_ov017_020c397c();
void func_ov017_020c39d4();
void func_ov024_020c755c(void *param1);
void func_ov024_020c75d0(void *param1, unk32 param2, u16 param3);
void func_ov024_020c7724();
void func_ov024_020c7750();
void func_ov024_020c7780();
void func_ov024_020c77b0(unk32 param1);
void func_ov024_020c77c0();
void func_ov024_020c77d0();
void func_ov024_020c77e0(Vec2s *param1);
void func_ov024_020c7804(Vec2s *param1);
void func_ov024_020c7828(unk32 param1);
void func_ov024_020c7878(unk32 param1, u16 param2);
void func_ov024_020c7884();
void func_ov024_020c7898();
bool func_ov024_020c78ac(unk32 *param1, unk16 *param2);
void func_ov024_020c78d0();
void func_ov024_020c78e4(unk32 param1);
void func_ov024_020c7900(unk32 param1);
static UnkStruct_027e0cf8 *Create();
};
extern UnkStruct_027e0cf8 *data_027e0cf8;
+1 -1
View File
@@ -3,7 +3,7 @@
#include "global.h"
#include "types.h"
class UnkStruct_027e0d00 {
class UnkStruct_027e0d00 : public AutoInstance<UnkStruct_027e0d00> {
public:
/* 00 */ unk32 mUnk_00;
+2
View File
@@ -17,6 +17,8 @@ public:
UnkStruct_027e0d34();
~UnkStruct_027e0d34();
bool func_ov031_020d97e4();
bool func_ov031_020d97f4();
void func_ov031_020d9844();
bool TryItemGive(ItemId itemId);
};
+21 -2
View File
@@ -101,6 +101,20 @@ public:
void func_ov000_020676f8(const char *bmgFileName, unk32 param2);
};
class UnkStruct_ov000_020b504c_Sub4_00 {
public:
/* 00 (vtable) */
/* 04 */
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
/* 10 */ virtual void vfunc_10();
/* 14 */ virtual void vfunc_14();
/* 18 */ virtual void vfunc_18(unk32 param1);
};
class UnkStruct_ov000_020b504c_Sub4 {
public:
/* 00 */ unk32 mUnk_00;
@@ -130,6 +144,11 @@ public:
unk8 func_ov000_02067cf8(unk32 param1, unk32 param2, UnkStruct_ov000_02067bc4::UnkStruct1 *param3); // ShowText?
void func_ov000_02067e60(u8 param1, unk32 param2);
unk32 func_ov000_020682c0(unk32 param1);
void func_ov000_02067f5c(unk32 param1);
unk32 func_ov000_02067f88(unk32 param1, unk32 param2);
UnkStruct_ov000_020b504c_Sub4_00 *func_ov000_02067bf0();
void func_ov000_02067b20();
void func_ov000_02068068(unk32 param1);
//! TODO: figure this out
void func_ov000_0206807c(unk32 param1, void *param2, unk32 param3, unk32 param4);
@@ -137,9 +156,9 @@ public:
void func_ov000_0206807c(unk32 param1, void *param2);
void func_ov000_0206807c(void *param1, void *param2);
void func_ov000_0206807c(void *param1, unk32 param2);
void func_ov000_02067b60();
unk32 func_ov000_02067f88(unk32 param1, unk32 param2);
void func_ov001_020be510();
void func_ov001_020be668(void);
void func_ov001_020be6f4(void);
};
@@ -9,6 +9,8 @@ public:
/* 84 */
UnkStruct_ov000_020b4eec();
SaveFile *func_ov001_020be12c();
};
extern UnkStruct_ov000_020b4eec data_ov000_020b4eec;
@@ -0,0 +1,20 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_ov000_020b4f70 {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_ov000_020b4f70();
~UnkStruct_ov000_020b4f70();
void func_ov000_020662e8();
void func_ov000_02066370();
void func_ov000_0206645c(unk8 *param1);
void func_ov000_0206654c();
void func_ov000_020665b8();
};
extern UnkStruct_ov000_020b4f70 *data_ov000_020b4f70;
+4 -2
View File
@@ -44,15 +44,17 @@ public:
UnkStruct_ov000_020b50c0();
void func_ov000_02069d3c(unk32 param1);
void func_ov000_02069d7c(void);
void func_ov000_02069d7c(unk32 param1);
void func_ov000_02069f58(void);
unk32 func_ov000_0206a5d8(unk32 param1);
void func_ov000_0206a6a4(unk32 param1);
void func_ov000_0206a758(void);
void func_ov000_0206a77c(void);
void func_ov001_020bd8ac(void);
void func_ov001_020bd854();
void func_ov001_020bd87c(void);
void func_ov001_020bd8dc(void);
void func_ov001_020bd8ac(void);
UnkStruct_ov018_020c5ac0 *func_ov018_020c5718(void);
};
+2 -1
View File
@@ -51,4 +51,5 @@ public:
void func_ov000_0206e7e8(unk32 param1);
};
extern UnkStruct_ov000_020b5214 data_ov000_020b5214;
extern UnkStruct_ov000_020b5214 data_ov000_020b5214_eur;
#define data_ov000_020b5214 data_ov000_020b5214_eur
@@ -19,6 +19,7 @@ public:
~UnkStruct_ov000_020b52b4();
void func_ov000_0206f6ac();
void func_ov000_0206f778(unk32 param1, unk32 param2, unk32 param3);
};
extern UnkStruct_ov000_020b52b4 data_ov000_020b52b4;
@@ -0,0 +1,20 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_ov017_020c3f70 {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_ov017_020c3f70();
// data_ov017_020c3f08
/* 00 */ virtual ~UnkStruct_ov017_020c3f70();
/* 08 */ virtual void vfunc_08(); //! TODO: probably inherited?
void func_ov017_020bba78();
void func_ov017_020bba94();
};
extern UnkStruct_ov017_020c3f70 data_ov017_020c3f70;
@@ -0,0 +1,67 @@
#pragma once
#include "Actor/ActorId.hpp"
#include "global.h"
#include "types.h"
class UnkActorSystem1 {
public:
/* 00 (vtable) */
/* 04 */ bool mUnk_04;
UnkActorSystem1();
// data_ov024_020d7b98
/* 00 */ virtual ~UnkActorSystem1();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
/* 10 */ virtual void vfunc_10(unk32 param1);
/* 14 */ virtual void vfunc_14(unk32 param1);
/* 18 */ virtual void vfunc_18(unk8 *param1);
/* 1C */ virtual void vfunc_1C(unk32 param1);
/* 20 */ virtual void vfunc_20(unk32 param1);
/* 24 */ virtual unk32 vfunc_24() = 0;
/* 28 */ virtual unk32 vfunc_28() = 0;
/* 2C */ virtual bool vfunc_2C();
/* 30 */
};
struct UnkActorSystem_Infos1 {
/* 0C */ s16 mUnk_00;
/* 0E */ unk16 mUnk_02;
/* 10 */ unk32 mUnk_04;
/* 14 */ unk32 mUnk_08;
/* 18 */ bool mUnk_0C;
/* 19 */ bool mUnk_0D;
/* 1A */ unk8 mUnk_0E; // pad?
/* 1B */ unk8 mUnk_0F; // pad?
};
class UnkStruct_ov024_020d8660 : public AutoInstance<UnkStruct_ov024_020d8660> {
public:
/* 00 */ UnkActorSystem1 *mUnk_00;
/* 04 */ ActorId mActorId;
/* 08 */ unk32 mUnk_08;
/* 0C */ UnkActorSystem_Infos1 mUnk_0C;
/* 1C */ unk32 mUnk_1C;
UnkStruct_ov024_020d8660();
~UnkStruct_ov024_020d8660();
void func_ov024_020c4a8c(UnkActorSystem1 *param1);
void func_ov024_020c4ac0();
void func_ov024_020c4b10();
void func_ov024_020c4b24();
void func_ov024_020c4b4c(unk32 param1);
void func_ov024_020c4ba0();
void func_ov024_020c4cc8();
bool func_ov024_020c4d74();
void func_ov024_020c4d88(ActorId actorId, unk32 param2);
void func_ov024_020c4dac(ActorId actorId, unk32 param2, UnkActorSystem_Infos1 *param3);
static void SetInstance(UnkStruct_ov024_020d8660 *pInstance);
static bool ClearInstance();
};
// related to minigames
extern UnkStruct_ov024_020d8660 *data_ov024_020d8660;
@@ -0,0 +1,171 @@
#pragma once
#include "Player/TouchControl.hpp"
#include "TitleScreen/TitleScreen.hpp"
#include "Unknown/Common.hpp"
#include "Unknown/UnkStruct_0204a110.hpp"
#include "global.h"
#include "types.h"
#include <nitro/button.h>
class UnkTitleCardSystem1 {
public:
/* 000 (vtable) */
/* 004 */ unk16 mUnk_004;
/* 006 */ unk16 mUnk_006; // pad?
/* 008 */ unk32 mUnk_008;
/* 00C */ unk32 mUnk_00C;
/* 010 */ unk32 mUnk_010;
/* 014 */ GameModeManagerBase_004 *mUnk_014;
/* 018 */ unk32 mUnk_018;
/* 01C */ unk32 mUnk_01C;
/* 020 */ unk16 mUnk_020;
/* 022 */ unk16 mUnk_022;
/* 024 */ unk16 mUnk_024;
/* 026 */ unk16 mUnk_026;
/* 028 */ unk32 mUnk_028;
/* 02C */ unk32 mUnk_02C;
/* 030 */ unk16 mUnk_030;
/* 034 */ unk16 mUnk_034;
/* 036 */ unk16 mUnk_036;
/* 038 */ unk16 mUnk_038;
/* 03A */ unk16 mUnk_03A;
/* 03C */ unk16 mUnk_03C;
/* 03E */ unk16 mUnk_03E;
/* 040 */ unk32 mUnk_040;
/* 044 */ unk32 mUnk_044;
/* 048 */ unk16 mUnk_048;
/* 04A */ unk16 mUnk_04A;
/* 04C */ unk16 mUnk_04C;
/* 04E */ unk16 mUnk_04E;
/* 050 */ unk16 mUnk_050;
/* 052 */ unk16 mUnk_052;
/* 054 */ unk16 mUnk_054;
/* 056 */ unk16 mUnk_056;
/* 058 */ unk32 mUnk_058;
/* 05C */ unk32 mUnk_05C;
/* 060 */ unk32 mUnk_060;
/* 064 */ UnkSystem2_UnkSubSystem9 mUnk_064;
/* 0A8 */ UnkSystem2_UnkSubSystem9 mUnk_0A8;
/* 0EC */ UnkSystem2_UnkSubSystem9 mUnk_0EC;
/* 130 */ unk32 mUnk_130;
/* 134 */ bool mUnk_134;
/* 135 */ unk8 mUnk_135; // pad?
/* 136 */ unk8 mUnk_136; // pad?
/* 137 */ unk8 mUnk_137; // pad?
/* 138 */
UnkTitleCardSystem1(GameModeManagerBase_004 *param1);
// data_ov024_020d7fd0
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
/* 10 */ virtual void vfunc_10();
/* 14 */ virtual void vfunc_14();
/* 18 */ virtual void vfunc_18();
/* 1C */
};
class UnkTitleCardSystem1_Derived1 : public UnkTitleCardSystem1 {
public:
/* 000 (base) */
/* 138 */ unk32 mUnk_138;
/* 13C */ unk16 mUnk_13C;
/* 13E */ unk16 mUnk_13E;
/* 140 */ bool mUnk_140;
/* 141 */ unk8 mUnk_141; // pad?
/* 142 */ unk8 mUnk_142; // pad?
/* 143 */ unk8 mUnk_143; // pad?
/* 144 */
UnkTitleCardSystem1_Derived1(GameModeManagerBase_004 *param1);
// data_ov024_020d8044
/* 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();
/* 20 */
};
class UnkStruct_ov024_020d8694_01C : public UnkTitleCardSystem1_Derived1 {
public:
/* 000 (base) */
/* 144 */ TitleScreen_Sub3 mUnk_144;
/* 168 */ bool mUnk_168;
/* 169 */ unk8 mUnk_169; // pad?
/* 16A */ unk8 mUnk_16A; // pad?
/* 16B */ unk8 mUnk_16B; // pad?
/* 16C */
UnkStruct_ov024_020d8694_01C(GameModeManagerBase_004 *param1);
// data_ov024_020d7ff4
/* 00 */ virtual void vfunc_00() override;
/* 1C */ virtual void vfunc_1C() override;
};
class UnkStruct_ov024_020d8694_188 : public UnkTitleCardSystem1_Derived1 {
public:
/* 000 (base) */
/* 144 */ UnkStruct_0204a110_Sub7_08 mUnk_144;
/* 174 */
UnkStruct_ov024_020d8694_188(GameModeManagerBase_004 *param1);
// data_ov024_020d801c
/* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual void vfunc_04() override;
/* 14 */ virtual void vfunc_14() override;
/* 1C */ virtual void vfunc_1C() override;
};
class UnkStruct_ov024_020d8694_2FC : public UnkTitleCardSystem1 {
public:
/* 000 (base) */
/* 138 */
UnkStruct_ov024_020d8694_2FC(GameModeManagerBase_004 *param1);
// data_ov024_020d7fac
/* 00 */ virtual void vfunc_00() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C() override;
/* 10 */ virtual void vfunc_10() override;
};
class UnkStruct_ov024_020d8694 : public AutoInstance<UnkStruct_ov024_020d8694>, public GameModeManagerBase_104 {
public:
/* 000 (vtable) */
/* 01C */ UnkStruct_ov024_020d8694_01C mUnk_01C;
/* 188 */ UnkStruct_ov024_020d8694_188 mUnk_188;
/* 2FC */ UnkStruct_ov024_020d8694_2FC mUnk_2FC;
/* 440 */
UnkStruct_ov024_020d8694(GameModeManagerBase_004 *param1);
// data_ov024_020d7f88
/* 00 */ virtual ~UnkStruct_ov024_020d8694();
/* 08 */ virtual void vfunc_08(Input *pButtons, TouchControl *pTouchControl);
/* 10 */ virtual void vfunc_10(unk8 *param1);
void func_ov024_020cafb8();
void func_ov024_020cafd8();
void func_ov024_020cb000();
void func_ov024_020cb020();
void func_ov024_020cb040();
void func_ov024_020cb054();
void func_ov024_020cb0ac();
void func_ov024_020cb0c4();
void func_ov024_020cb178();
void func_ov024_020cb194();
static UnkStruct_ov024_020d8694 *Create(GameModeManagerBase_004 *param1);
};
// related to title cards
extern UnkStruct_ov024_020d8694 *data_ov024_020d8694;
@@ -0,0 +1,28 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_ov024_020d86a0 : public AutoInstance<UnkStruct_ov024_020d86a0> {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */ unk8 mUnk_0C;
/* 0D */ unk8 mUnk_0D;
/* 0E */ unk8 mUnk_0E;
/* 0F */ bool mUnk_0F;
UnkStruct_ov024_020d86a0();
~UnkStruct_ov024_020d86a0();
void func_ov001_020bd818();
void func_ov024_020d167c();
static void Destroy();
static void SetInstance(UnkStruct_ov024_020d86a0 *pInstance);
static bool ClearInstance();
};
extern UnkStruct_ov024_020d86a0 *data_ov024_020d86a0;
@@ -0,0 +1,19 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_ov026_02138d10 {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_ov026_02138d10();
~UnkStruct_ov026_02138d10();
unk32 func_ov026_020e13f4();
unk32 func_ov026_020e18fc();
void func_ov026_020e1440();
bool func_ov026_020e6a6c();
};
extern UnkStruct_ov026_02138d10 *data_ov026_02138d10;
@@ -0,0 +1,16 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_ov026_0213f578 {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_ov026_0213f578();
~UnkStruct_ov026_0213f578();
void func_ov026_020f4844();
};
extern UnkStruct_ov026_0213f578 *data_ov026_0213f578;
@@ -0,0 +1,16 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_ov026_0213f590 {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_ov026_0213f590();
~UnkStruct_ov026_0213f590();
unk32 func_ov026_020f7cc0();
};
extern UnkStruct_ov026_0213f590 data_ov026_0213f590;
@@ -0,0 +1,16 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_ov031_02118fa4 {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_ov031_02118fa4();
~UnkStruct_ov031_02118fa4();
unk32 func_ov009_020b670c(unk32 param1);
};
extern UnkStruct_ov031_02118fa4 *data_ov031_02118fa4;
@@ -0,0 +1,15 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_ov088_02177218 {
public:
/* 00 (vtable) */
UnkStruct_ov088_02177218();
/* 00 */ virtual ~UnkStruct_ov088_02177218();
};
extern UnkStruct_ov088_02177218 *data_ov088_02177218;
+4
View File
@@ -16,6 +16,10 @@
#define UNSET_FLAG(arr, pos) ((arr)[((u32) (pos)) >> 5] &= ~(1 << ((pos) & 0x1F)))
#define FLAG(index, pos) (((index) << 5) | ((pos) & 0x1F))
#define GET_FLAG_ALT(arr, pos) (((arr)[(pos) >> 5] & (1 << ((0x1F - ((pos) & 0x1F))))) != 0)
#define SET_FLAG_ALT(arr, pos) ((arr)[(pos) >> 5] |= 1 << ((0x1F - ((pos) & 0x1F))))
#define UNSET_FLAG_ALT(arr, pos) ((arr)[(pos) >> 5] &= ~(1 << ((0x1F - ((pos) & 0x1F)))))
//! TODO: improve or remove? idk
#define VA_NARGS_IMPL(_1, _2, _3, _4, N, ...) N
#define VA_NARGS(...) VA_NARGS_IMPL(__VA_ARGS__, 4, 3, 2, 1)
+19 -8
View File
@@ -68,16 +68,27 @@ typedef s32 unk32;
DECL_PTMF(PTMF);
typedef void (*UnkCallback)(u16 param1);
template <typename T> class AutoInstance {
template <typename T> class Instance {
public:
AutoInstance() {
T::SetInstance((T *) this);
}
~AutoInstance() {
T::ClearInstance();
}
Instance();
~Instance();
};
template <typename T> class AutoInstance : public Instance<T> {
public:
AutoInstance() {}
~AutoInstance() {}
};
#define DECL_INSTANCE(T, gpInstance) \
template <typename T> Instance<T>::Instance() { \
gpInstance = (T *) this; \
} \
template <typename T> Instance<T>::~Instance() { \
gpInstance = NULL; \
} \
template class Instance<T>
#endif
#endif