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
+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;