Decompile MainSelect overlay (#8)

* Decompile MainSelect overlay (~90%)

* cleanup

* jp delinks

* fixed build and linking errors
This commit is contained in:
Yanis
2026-01-11 01:31:08 +01:00
committed by GitHub
parent 8adcd6e88a
commit 1713ffc43b
226 changed files with 14537 additions and 6508 deletions
+488
View File
@@ -0,0 +1,488 @@
#pragma once
#include "Game/GameModeManager.hpp"
#include "System/SysNew.hpp"
#include "global.h"
#include "nitro/math.h"
#include "types.h"
extern "C" void func_0201e8d4(void *param1, void *param2);
struct Vec2s_cpp {
/* 0 */ s16 x;
/* 1 */ s16 y;
/* 2 */
Vec2s_cpp() {};
Vec2s_cpp(s16 __x, s16 __y) {
x = __x;
y = __y;
}
void operator=(Vec2s_cpp &from) {
x = from.x;
y = from.y;
}
void operator+=(Vec2s_cpp &from) {
x = from.x + x;
y = from.y + y;
}
Vec2s_cpp &operator+(Vec2s_cpp &from) {
Vec2s_cpp vec(x + from.x, y + from.y);
return vec;
}
Vec2s_cpp *operator&() {
return this;
}
};
struct Vec2us_cpp {
/* 0 */ u16 x;
/* 1 */ u16 y;
/* 2 */
Vec2us_cpp() {};
Vec2us_cpp(u16 __x, u16 __y) {
x = __x;
y = __y;
}
void operator=(Vec2us_cpp &from) {
x = from.x;
y = from.y;
}
void operator+=(Vec2us_cpp &from) {
x += from.x;
y += from.y;
}
Vec2us_cpp &operator+(Vec2us_cpp &from) {
Vec2us_cpp vec(x + from.x, y + from.y);
return vec;
}
Vec2us_cpp *operator&() {
return this;
}
};
class UnkSubStruct1 {
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;
/* 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 */
UnkSubStruct1();
void func_0201ea68(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
u16 func_0201eaa0();
// data_02044330 vtable
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
/* 0C */
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_copy;
Vec2us local_4c;
func_0201e8d4(&local_4c_copy, this);
local_4c.x = local_4c_copy.y;
local_4c.y = local_4c_copy.x;
pPos->x = local_4c.x;
pPos->y = local_4c.y;
}
}
};
class UnkSystem2_UnkSubSystem1_Base {
public:
/* 04 */ GameModeManagerBase_104_04 mUnk_04;
/* 0C */ void *mUnk_0C;
/* 10 */ unk32 mUnk_10;
/* 14 */ Vec2s mPos; // image position (among other things)
/* 18 */ STRUCT_PAD(0x18, 0x24);
/* 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
/* 2A */ bool mUnk_2A; // disables button action
/* 2A */ bool mUnk_2B;
/* 2C */ bool mUnk_2C;
/* 2D */ unk8 mUnk_2D;
/* 2E */ unk8 mUnk_2E;
/* 2F */ unk8 mUnk_2F;
UnkSystem2_UnkSubSystem1_Base();
// data_ov000_020b1ecc vtable
/* 00 */ virtual ~UnkSystem2_UnkSubSystem1_Base();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
};
// this class is related to the selectable buttons (actually more related to texture with things on top)
class UnkSystem2_UnkSubSystem1_Derived1 : public UnkSystem2_UnkSubSystem1_Base {
public:
/* 00 (vtable) */
/* 30 */ void *mUnk_30; // related to the background texture draw (idle)
/* 34 */ unk32 mUnk_34; // related to the texture draw
/* 38 */ unk16 mUnk_38; // related to the texture draw
/* 3C */ Vec2us mUnk_3A; // overlaid elements position (text, icons etc...), relative to background position
/* 40 */ unk16 mUnk_3E;
/* 40 */ unk32 mUnk_40;
/* 44 */ unk32 mUnk_44;
/* 48 */ void *mUnk_48; // related to the background texture draw (selected)
/* 4C */ unk32 mUnk_4C;
/* 50 */ unk16 mUnk_50; // related to the texture draw
/* 50 */ unk16 mUnk_52;
/* 54 */ unk32 mUnk_54;
/* 58 */ unk32 mUnk_58;
/* 5C */ unk32 mUnk_5C;
/* 60 */
UnkSystem2_UnkSubSystem1_Derived1();
UnkSystem2_UnkSubSystem1_Derived1(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6);
void func_ov000_020633c0(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6);
// data_ov000_020b1efc vtable
/* 00 */ virtual ~UnkSystem2_UnkSubSystem1_Derived1() override {}
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C() override;
};
class UnkSystem2_UnkSubSystem7 {
public:
/* 00 */ unk32 mUnk_00;
~UnkSystem2_UnkSubSystem7();
};
//! TODO: conflicts with UnkSystem2_UnkSubSystem1_Derived1? mUnk_34 type differs for some reasons
class UnkSystem2_UnkSubSystem1_Derived2 : public UnkSystem2_UnkSubSystem1_Base {
public:
/* 00 (vtable) */
/* 30 */ void *mUnk_30; // related to the background texture draw (idle)
/* 34 */ UnkSystem2_UnkSubSystem7 mUnk_34; // related to the texture draw
/* 38 */ unk16 mUnk_38; // related to the texture draw
/* 3C */ Vec2us mUnk_3A; // overlaid elements position (text, icons etc...), relative to background position
/* 40 */ unk16 mUnk_3E;
/* 40 */ unk32 mUnk_40;
/* 44 */ unk32 mUnk_44;
/* 48 */ void *mUnk_48; // related to the background texture draw (selected)
/* 4C */ unk32 mUnk_4C;
/* 50 */ unk16 mUnk_50; // related to the texture draw
/* 50 */ unk16 mUnk_52;
/* 54 */ unk32 mUnk_54;
/* 58 */ unk32 mUnk_58;
/* 5C */ unk32 mUnk_5C;
/* 60 */
UnkSystem2_UnkSubSystem1_Derived2(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6);
void func_ov000_020633c0(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6);
// data_ov000_020b1efc vtable
/* 00 */ virtual ~UnkSystem2_UnkSubSystem1_Derived2() override {}
/* 08 */ virtual void vfunc_08() override;
/* 0C */ virtual void vfunc_0C() override;
};
class UnkSystem2_UnkSubSystem3 {
public:
/* 00 */ UnkSystem2_UnkSubSystem1_Base *mUnk_00;
/* 04 */
UnkSystem2_UnkSubSystem3(UnkSystem2_UnkSubSystem1_Base *param1, unk32 param2, unk32 param3, unk32 param4);
void func_ov000_02062f30();
};
class UnkSystem2_UnkSubSystem5_Base_10 {
public:
/* 000 (vtable) */
/* 014 */ void *mUnk_014;
/* 018 */ unk32 mUnk_018;
/* 01C */ void *mUnk_01C;
/* 020 */ unk32 mUnk_020;
/* 024 */ unk32 mUnk_024;
/* 028 */ unk8 mUnk_028;
/* 029 */ unk8 mUnk_029;
/* 02A */ unk8 mUnk_02A;
/* 02B */ unk8 mUnk_02B;
/* 02C */ unk32 mUnk_02C;
/* 030 */ unk32 mUnk_030;
/* 034 */ unk32 mUnk_034;
/* 038 */ unk32 mUnk_038;
/* 03C */ unk32 mUnk_03C;
/* 040 */ unk32 mUnk_040;
/* 044 */ unk32 mUnk_044;
/* 048 */ unk32 mUnk_048;
/* 04C */ unk32 mUnk_04C;
/* 050 */ STRUCT_PAD(0x50, 0x130);
// data_ov000_020b20fc (vtable)
/* 00 */ virtual ~UnkSystem2_UnkSubSystem5_Base_10();
/* 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 */ virtual void vfunc_1C();
/* 20 */ virtual void vfunc_20();
/* 24 */ virtual void vfunc_24();
/* 28 */ virtual void vfunc_28();
/* 2C */ virtual void vfunc_2C();
/* 30 */ virtual void vfunc_30();
/* 34 */ virtual void vfunc_34();
/* 38 */ virtual void vfunc_38();
/* 3C */ virtual void vfunc_3C();
/* 40 */ virtual void vfunc_40();
/* 44 */ virtual void vfunc_44();
/* 48 */ virtual void vfunc_48();
/* 4C */
};
class UnkSystem2_UnkSubSystem5_Base {
public:
/* 000 (vtable) */
/* 004 */ wchar_t *mpString; // in this context it points to the player's name
/* 008 */ unk16 mUnk_008;
/* 00A */ unk16 mUnk_00A;
/* 00C */ void *mUnk_00C;
/* 010 */ UnkSystem2_UnkSubSystem5_Base_10 mUnk_010;
~UnkSystem2_UnkSubSystem5_Base();
/* 00 */ virtual void vfunc_00();
/* 04 */
};
class UnkSystem2_UnkSubSystem11 {
public:
/* 00 (vtable) */
/* 04 */ void *mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */ unk32 mUnk_0C;
/* 10 */ unk32 mUnk_10;
/* 14 */ unk32 mUnk_14;
/* 18 */ void *mUnk_18;
/* 1C */ void *mUnk_1C;
/* 20 */
void func_ov000_02061f60();
~UnkSystem2_UnkSubSystem11();
// data_ov000_020b1e9c vtable
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
};
// this class seems related to drawing strings?
class UnkSystem2_UnkSubSystem5 : public UnkSystem2_UnkSubSystem5_Base {
public:
/* 000 (base) */
/* 130 */ STRUCT_PAD(0x130, 0x140);
/* 140 */ unk16 mUnk_140;
/* 142 */ unk16 mUnk_142;
/* 144 */ unk16 mUnk_144;
/* 146 */ unk16 mUnk_146;
/* 148 */ unk32 mUnk_148;
/* 14C */ unk8 mUnk_14C; // 0x544
/* 14D */ unk8 mUnk_14D; // 0x545
/* 14E */ unk8 mUnk_14E; // 0x546
/* 14F */ unk8 mUnk_14F; // 0x547
/* 150 */ UnkSystem2_UnkSubSystem11 mUnk_150;
/* 170 */ void *mUnk_170;
/* 144 */ STRUCT_PAD(0x174, 0x238);
/* 238 */
UnkSystem2_UnkSubSystem5() {}
UnkSystem2_UnkSubSystem5(unk32 param1, unk32 param2);
~UnkSystem2_UnkSubSystem5() {}
void func_0201f498();
void func_0201f4b4(unk32 param1);
void func_0201f500(void *param1);
void func_0201f730(unk32 param1);
void func_0201f9c4();
void func_0201fb78(wchar_t *param1);
void func_0201fa70(unk32 param1);
// data_0204439c vtable
/* 00 */ virtual void vfunc_00() override;
/* 04 */
};
class UnkSystem2_UnkSubSystem8_Base {
public:
/* 00 (vtable) */
/* 04 */ UnkSystem2_UnkSubSystem1_Derived2 *mUnk_04;
/* 08 */ bool mUnk_08;
/* 09 */ unk8 mUnk_09;
/* 0A */ unk8 mUnk_0A;
/* 0B */ unk8 mUnk_0B;
/* 0C */
UnkSystem2_UnkSubSystem8_Base(UnkSystem2_UnkSubSystem1_Derived2 *param1);
// data_ov000_020b1fac vtable
/* 00 */ virtual void vfunc_00() = 0;
/* 04 */ virtual void vfunc_04() = 0;
};
// seems to be related to the animations of the ui elements
class UnkSystem2_UnkSubSystem9 : public UnkSubStruct1 {
public:
/* 00 (base) */
/* 30 */ unk32 mUnk_30;
/* 34 */ unk32 mUnk_34;
/* 38 */ unk32 mUnk_38;
/* 3C */ unk32 mUnk_3C;
/* 40 */ unk32 mUnk_40;
/* 44 */
UnkSystem2_UnkSubSystem9();
// data_020442f4 vtable
/* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual void vfunc_04() override;
/* 08 */ virtual void vfunc_08() override;
/* 0C */
//! TODO: conflict with UnkStruct_ov019_020d24c8_28_304
void func_0201e874(unk32 param1, void *param2, void *param3, unk32 param4);
};
class UnkSystem2_UnkSubSystem8 : public UnkSystem2_UnkSubSystem8_Base {
public:
/* 00 (base) */
/* 0C */ UnkSystem2_UnkSubSystem9 mUnk_0C;
/* 50 */
UnkSystem2_UnkSubSystem8() :
UnkSystem2_UnkSubSystem8_Base(NULL) {}
UnkSystem2_UnkSubSystem8(UnkSystem2_UnkSubSystem1_Derived2 *param1) :
UnkSystem2_UnkSubSystem8_Base(param1) {}
UnkSystem2_UnkSubSystem8(UnkSystem2_UnkSubSystem1_Derived1 *param1) :
UnkSystem2_UnkSubSystem8_Base((UnkSystem2_UnkSubSystem1_Derived2 *) param1) {}
void func_ov000_02064080(void *param1, void *param2, unk32 param3, u16 param4);
void func_ov000_0206415c(void *param1, unk32 param2, unk32 param3, unk32 param4);
void func_ov000_02063f64();
// data_ov000_020b1f8c vtable
/* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual void vfunc_04() override;
};
class UnkSystem3 {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */
UnkSystem3(const char *path, unk32 param2);
~UnkSystem3();
void func_02015410(const char *path, unk32 param2);
void func_02015460(const char *param1, void *param2, unk32 param3);
};
class UnkSystem4 {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */ unk32 mUnk_0C;
/* 10 */
~UnkSystem4();
};
class UnkSystem5 {
public:
/* 00 */ char *mUnk_00;
/* 04 */ char *mUnk_04;
/* 08 */ char *mUnk_08;
/* 10 */ UnkSystem4 mUnk_0F00;
/* 20 */ UnkSystem4 mUnk_0F10;
/* 30 */ UnkSystem4 mUnk_0F20;
/* 40 */
UnkSystem5() {}
~UnkSystem5() {}
void func_020171e4();
void func_02017520(const char *nscrPath, const char *ncgrPath, const char *nclrPath);
};
+257
View File
@@ -0,0 +1,257 @@
#pragma once
#include "FileSelect/FileSelectMain.hpp"
#include "FileSelect/FileSelectUnkDraw.hpp"
#include "Game/GameModeManager.hpp"
#include "System/SysNew.hpp"
#include "Unknown/UnkSystem1.hpp"
#include "global.h"
#include "iterator.hpp"
#include "nitro/math.h"
#include "regs.h"
#include "types.h"
extern const unk16 data_ov019_020d1bb0[];
extern "C" void func_ov001_020bd6a8();
class UnkStructSub2 {
public:
UnkStructSub2();
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
};
class UnkStructSub4 {
public:
/* 00 */ unk8 mUnk_00[0x18];
/* 18 */ unk32 mUnk_0018;
/* 1C */ unk32 mUnk_001C;
/* 20 */ unk32 mUnk_0020;
/* 20 */ unk32 mUnk_0024;
/* 28 */ u8 mUnk_0028; // bool?
/* 28 */ unk8 mUnk_0029;
/* 28 */ unk8 mUnk_002A;
/* 28 */ unk8 mUnk_002B;
/* 2C */ UnkStructSub2 mUnk_002C;
/* 30 */ STRUCT_PAD(0x30, 0x5C);
/* 5C */ unk16 mUnk_5C;
/* 5C */ unk16 mUnk_5E;
/* 60 */ STRUCT_PAD(0x60, 0x6E);
/* 6E */ unk8 mUnk_6E;
/* 6F */ unk8 mUnk_6F;
/* 70 */ unk32 mUnk_70;
/* 74 */ unk16 mUnk_74;
/* 76 */ unk16 mUnk_76;
/* 78 */
void func_ov000_02060b64(void);
};
// related to UnkStructSub2 but unsure how
class FileSelect_UnkClass7 {
public:
class Sub5 {
public:
u16 one;
u16 two;
};
/* 0000 (vtable) */
/* 0004 */ UnkStructSub4 mUnk_0004[30];
/* 0E14 */ Sub5 mUnk_0E14[30];
// data_ov019_020d22a8 vtable
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
};
class FileSelect_UnkClass2_Sub4_Base : public GameModeManagerBase_104 {
public:
/* 0000 (vtable) */
FileSelect_UnkClass2_Sub4_Base() {}
/* 00 */ virtual ~FileSelect_UnkClass2_Sub4_Base() override {}
};
class FileSelectSubScreen : public FileSelect_UnkClass2_Sub4_Base {
public:
/* 0000 (base) */
/* 001C */ unk32 mUnk_001C;
/* 0020 */ unk32 mUnk_0020;
/* 0020 */ unk32 mUnk_0024;
/* 0028 */ u8 mUnk_0028; // bool?
/* 0028 */ unk8 mUnk_0029;
/* 0028 */ unk8 mUnk_002A;
/* 0028 */ unk8 mUnk_002B;
/* 002C */ UnkStructSub2 mUnk_002C;
/* 007C */ STRUCT_PAD(0x30, 0xEB8);
/* 0EB8 */ UnkSystem3 mUnk_0EB8;
/* 0EC4 */ UnkSystem3 mUnk_0EC4;
/* 0ED0 */ UnkSystem3 mUnk_0ED0;
/* 0EDC */ UnkSystem3 mUnk_0EDC;
/* 0EE8 */ UnkSystem3 mUnk_0EE8;
/* 0EF4 */ UnkSystem5 mUnk_0EF4;
/* 0F30 */ UnkSystem5 mUnk_0F30;
/* 0F6C */ UnkSystem5 mUnk_0F6C;
/* 0FA8 */ UnkSystem5 mUnk_0FA8;
/* 0FE4 */ UnkSystem5 mUnk_0FE4;
/* 1020 */
FileSelectSubScreen();
void func_ov019_020cf73c(unk32 param1, unk32 param2);
// data_ov019_020d22b8 vtable
/* 00 */ virtual ~FileSelectSubScreen() override {}
/* 08 */ virtual void vfunc_08() override;
/* 10 */ virtual void vfunc_10() override;
};
class FileSelectManager : public GameModeManagerBase { // 0x02262dbc
public:
/* 000 (base) */
/* 154 */ GameModeManagerBase_104 *mUnk_154;
/* 158 */ FileSelectMain *mUnk_158;
/* 15C */ FileSelectSubScreen *mUnk_15C;
/* 160 */ FileSelectManager_160 *mUnk_160;
/* 164 */ FileSelectManager_164 *mUnk_164;
/* 168 */ UnkSystem1_ov019_Derived2 mUnk_168;
/* 180 */
// clang-format off
FileSelectManager(unk32 param1) NO_INLINE :
mUnk_154(&this->mUnk_104),
mUnk_158(NULL),
mUnk_15C(NULL),
mUnk_160(NULL),
mUnk_164(NULL) {
REG_DISPCNT &= 0xFFCFFFEF;
REG_DISPCNT |= 0x00200010;
REG_DISPCNT_SUB &= 0xFFCFFFEF;
REG_DISPCNT_SUB |= 0x00200010;
this->mUnk_004.func_ov001_020bd734((unk32*)data_ov019_020d1bb0);
func_ov001_020bd6a8();
}
// clang-format on
void func_ov019_020c5038();
void func_ov019_020c503c();
void func_ov019_020c51a8();
// data_ov019_020d1dc0 vtable
/* 08 */ virtual ~FileSelectManager() override;
/* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2, unk32 param3) override;
/* 24 */ virtual void vfunc_24() override;
/* 28 */ virtual void vfunc_28(unk32 param1) override;
/* 2C */ virtual void vfunc_2C(unk32 param1) override;
static GameModeManagerBase *Create(unk32 param1);
};
// static initializers classes
class UnkStruct_ov019_020d1d80 {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_ov019_020d1d80(unk32 param1) {
this->mUnk_00 = param1;
}
};
class UnkStruct_ov019_020d1e4c {
public:
/* 00 */ unk16 mUnk_00;
/* 00 */ u16 mUnk_02;
/* 04 */ u16 mUnk_04[2];
/* 08 */ unk32 mUnk_08;
/* 0C */ unk32 mUnk_0C;
/* 10 */ unk32 mUnk_10;
/* 14 */ unk32 mUnk_14;
/* 18 */ unk32 mUnk_18;
/* 1C */ Vec2s mUnk_1C;
/* 20 */ unk32 mUnk_20;
};
class UnkStruct_ov019_020d1e94 {
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 */
};
class UnkStruct_ov019_020d1e70 {
public:
/* 00 */ Vec2s mUnk_00;
/* 04 */ Vec2s mUnk_04;
/* 08 */ Vec2s mUnk_08;
/* 0C */ unk32 mUnk_0C;
/* 10 */ Vec2s mUnk_10;
/* 14 */ Vec2s mUnk_14;
/* 18 */ Vec2s mUnk_18;
/* 1C */ Vec2s mUnk_1C;
/* 20 */ Vec2s mUnk_20;
/* 24 */
static UnkStruct_ov019_020d1e4c data_ov019_020d1e4c;
static UnkStruct_ov019_020d1e94 data_ov019_020d1e94;
UnkStruct_ov019_020d1e70() {
this->mUnk_00.x = 0x80;
this->mUnk_00.y = 0x60;
data_ov019_020d1e94.mUnk_00 = 0x80;
data_ov019_020d1e94.mUnk_02 = 0x60;
this->mUnk_20.x = 0x00;
this->mUnk_20.y = 0x100;
this->mUnk_1C.x = 0x00;
this->mUnk_1C.y = -0x1E;
this->mUnk_18.x = 0x00;
this->mUnk_18.y = 0x64;
this->mUnk_14.x = 0x00;
this->mUnk_14.y = 0x64;
this->mUnk_10.x = 0x00;
this->mUnk_10.y = 0x32;
data_ov019_020d1e4c.mUnk_1C.x = 0x00;
data_ov019_020d1e4c.mUnk_1C.y = 0x100;
this->mUnk_08.x = 0x00;
this->mUnk_08.y = 0x100;
this->mUnk_04.x = 0x00;
this->mUnk_04.y = 0x32;
this->mUnk_00.x = 0x00;
this->mUnk_00.y = 0x32;
data_ov019_020d1e4c.mUnk_10 = 0x20003;
this->mUnk_0C = 0x20004;
}
};
extern const UnkStruct_ov019_020d1e70 data_ov019_020d1e70;
+299
View File
@@ -0,0 +1,299 @@
#pragma once
#include "FileSelect/UnkSubStruct9.hpp"
#include "Game/GameModeManager.hpp"
#include "Save/SaveManager.hpp"
#include "Unknown/UnkSystem1.hpp"
#include "global.h"
#include "iterator.hpp"
#include "nitro/math.h"
#include "types.h"
typedef Iterator<UnkSubStruct9, MAX_SAVE_SLOTS> FileSlotIterator;
/*
- "Slot Select" refers to the screen where you choose which file to use
- "File Manager" refers to the screen with the "start", "copy" and "erase" buttons
- "Choose Mode" refers to the screen with the "adventure" and "battle" buttons (it also hosts "contact mode" and "options")
- "Enter Game Mode" refers to the transition from the file select to battle mode or adventure mode
- "From" means "load the elements from that screen when coming from the previous one"
- "To" means "unload the elements from that screen and load the next one"
*/
typedef u32 FileSelectState;
enum FileSelectState_ {
/* 0x00 */ FileSelectState_Unk_00 = 0, // none or pre-init?
/* 0x01 */ FileSelectState_Init = 1,
/* 0x02 */ FileSelectState_SlotSelectIdle = 2,
/* 0x03 */ FileSelectState_SlotSelectToFileManager = 3,
/* 0x04 */ FileSelectState_FileManagerFromSlotSelect = 4,
/* 0x05 */ FileSelectState_FileManagerToSlotSelect = 5,
/* 0x06 */ FileSelectState_SlotSelectFromFileManager = 6,
/* 0x07 */ FileSelectState_FileManagerIdle = 7,
/* 0x08 */ FileSelectState_FileManagerToChooseMode = 8,
/* 0x09 */ FileSelectState_ChooseModeFromFileManager = 9,
/* 0x0A */ FileSelectState_ChooseModeToFileManager = 10,
/* 0x0B */ FileSelectState_FileManagerFromChooseMode = 11,
/* 0x0C */ FileSelectState_ChooseModeIdle = 12,
/* 0x0D */ FileSelectState_ChooseModeToEnterGameMode = 13,
/* 0x0E */ FileSelectState_EnterGameMode = 14,
/* 0x0F */ FileSelectState_SlotSelectToNewFile = 15,
/* 0x10 */ FileSelectState_NewFileToSlotSelect = 16,
/* 0x11 */ FileSelectState_FileManagerToCopyErase = 17,
/* 0x12 */ FileSelectState_CopyEraseFromFileManager = 18,
/* 0x13 */ FileSelectState_ChooseModeToContactMode = 19, // contact mode is another overlay to there's no "from" variant
/* 0x14 */ FileSelectState_OptionsToChooseMode = 20,
/* 0x15 */ FileSelectState_NewFileFromSlotSelect = 21,
/* 0x16 */ FileSelectState_OptionsFromChooseMode = 22,
/* 0x17 */ FileSelectState_Max = 23
};
typedef u32 FileSelectExitMode;
enum FileSelectExitMode_ {
/* 0x00 */ FileSelectExitMode_AdventureMode = 0,
/* 0x01 */ FileSelectExitMode_BattleMode = 1,
/* 0x02 */ FileSelectExitMode_Unk_2 = 2,
/* 0x03 */ FileSelectExitMode_Unk_3 = 3,
};
// used to draw the swords from the adventure and battle buttons
class UnkSubStruct19 {
public:
/* 00 */ void *mUnk_00;
/* 04 */ void *mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */ unk32 mUnk_0C; // pause the animation timer (in this context: pause the shiny animation on the sword)
/* 10 */ unk32 mUnk_10; // animation timer
/* 14 */ unk32 mUnk_14; // animation speed (also affects above timer)
/* 18 */ unk32 mUnk_18;
/* 1C */ void *mUnk_1C; // pointer to animation bank ("ABNK")
/* 20 */ unk32 mUnk_20;
/* 24 */ unk32 mUnk_24;
/* 28 */ unk32 mUnk_28;
/* 2C */ unk32 mUnk_2C;
/* 30 */ void *mUnk_30; // pointer to somewhere inside "CEBK"
/* 34 */ void *mUnk_34;
/* 38 */ unk32 mUnk_38;
/* 3C */ unk32 mUnk_3C;
/* 40 */ unk32 mUnk_40; // related to the width of the texture (scaling matrix?)
/* 44 */ unk32 mUnk_44; // related to the height of the texture
/* 48 */ Vec2us mUnk_48;
/* 4C */ unk32 mUnk_4C;
/* 50 */ unk32 mUnk_50;
/* 54 */ unk32 mUnk_54;
/* 58 */ unk32 mUnk_58; // another timer?
/* 5C */ Vec2us mUnk_5C; // position of the animated texture
/* 60 */ unk32 mUnk_60;
/* 64 */ unk32 mUnk_64;
/* 68 */ unk32 mUnk_68;
/* 6C */ unk32 mUnk_6C;
/* 70 */ unk32 mUnk_70;
/* 74 */ unk32 mUnk_74;
/* 78 */
UnkSubStruct19();
};
class FileSelectMain : public GameModeManagerBase_104 { // 022E5F70
public:
/* 0000 (base) */
/* 001C */ FileSelectState mState;
/* 0020 */ FileSelectExitMode mExitMode;
/* 0024 */ s8 mSaveSlotIndex;
/* 0025 */ unk8 mUnk_0025;
/* 0026 */ unk8 mUnk_0026;
/* 0027 */ unk8 mUnk_0027;
/* 0028 */ unk32 mUnk_0028;
/* 002C */ UnkSubStruct1 mUnk_002C;
/* 005C */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_005C;
/* 00BC */ UnkSystem2_UnkSubSystem9 mUnk_00BC;
// upper "select file"
/* 0100 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_0100;
/* 0160 */ UnkSystem2_UnkSubSystem3 mUnk_0160;
/* 0164 */ UnkSystem2_UnkSubSystem5 mUnk_0164;
/* 039C */ UnkSystem2_UnkSubSystem9 mUnk_039C;
/* 03E0 */ FileSlotIterator mUnk_03E0;
/* 03E8 */ UnkSystem2_UnkSubSystem8 mUnk_03E8[2]; // "1" and "2" icons
// "start" button
/* 0488 */ UnkSystem2_UnkSubSystem1_Derived2 mUnk_0488;
/* 04E8 */ unk8 mUnk_04E8[0x38];
/* 0520 */ UnkSystem2_UnkSubSystem3 mUnk_0520;
/* 0524 */ UnkSystem2_UnkSubSystem5 mUnk_0524;
/* 075C */ UnkSystem2_UnkSubSystem9 mUnk_075C;
/* 07A0 */ UnkSystem2_UnkSubSystem9 mUnk_07A0;
// "copy" button
/* 07E4 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_07E4;
/* 0844 */ UnkSystem2_UnkSubSystem3 mUnk_0844;
/* 0848 */ UnkSystem2_UnkSubSystem5 mUnk_0848;
/* 0A80 */ UnkSystem2_UnkSubSystem9 mUnk_0A80;
// "erase" button
/* 0AC4 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_0AC4;
/* 0B24 */ UnkSystem2_UnkSubSystem3 mUnk_0B24;
/* 0B28 */ UnkSystem2_UnkSubSystem5 mUnk_0B28;
/* 0D60 */ UnkSystem2_UnkSubSystem9 mUnk_0D60;
// "adventure" button
/* 0DA4 */ UnkSystem2_UnkSubSystem1_Derived2 mUnk_0DA4;
/* 0E04 */ unk8 mUnk_0E04[0x38];
/* 0E3C */ UnkSystem2_UnkSubSystem3 mUnk_0E3C;
/* 0E40 */ UnkSystem2_UnkSubSystem5 mUnk_0E40;
/* 1078 */ UnkSystem2_UnkSubSystem9 mUnk_1078;
// adventure mode animated sword icon
/* 10BC */ UnkSystem2_UnkSubSystem9 mUnk_10BC;
/* 1100 */ UnkSystem2_UnkSubSystem9 mUnk_1100;
/* 1144 */ UnkSubStruct19 mUnk_1144;
// "battle" button
/* 11BC */ UnkSystem2_UnkSubSystem1_Derived2 mUnk_11BC;
/* 121C */ unk8 mUnk_121C[0x38];
/* 1254 */ UnkSystem2_UnkSubSystem3 mUnk_1254;
/* 1258 */ UnkSystem2_UnkSubSystem5 mUnk_1258;
/* 1490 */ UnkSystem2_UnkSubSystem9 mUnk_1490;
// battle mode animated sword icon
/* 14D4 */ UnkSystem2_UnkSubSystem9 mUnk_14D4;
/* 1518 */ UnkSystem2_UnkSubSystem9 mUnk_1518;
/* 155C */ UnkSubStruct19 mUnk_155C;
// "contact mode" button
/* 15D4 */ UnkSystem2_UnkSubSystem1_Derived2 mUnk_15D4;
/* 1634 */ unk8 mUnk_1634[0x38];
/* 166C */ UnkSystem2_UnkSubSystem3 mUnk_166C;
/* 1670 */ UnkSystem2_UnkSubSystem5 mUnk_1670;
/* 18A8 */ UnkSystem2_UnkSubSystem9 mUnk_18A8;
// "options" button
/* 18EC */ UnkSystem2_UnkSubSystem1_Derived2 mUnk_18EC;
/* 194C */ unk8 mUnk_194C[0x38];
/* 1984 */ UnkSystem2_UnkSubSystem3 mUnk_1984;
/* 1988 */ UnkSystem2_UnkSubSystem5 mUnk_1988;
/* 1BC0 */ UnkSystem2_UnkSubSystem9 mUnk_1BC0;
/* 1C04 */ UnkSystem1_ov019_Derived3 mUnk_1C04;
/* 1C28 */
UnkSubStruct9 &GetUnk03E0(int saveSlotIndex) {
return this->mUnk_03E0.GetRef(saveSlotIndex);
}
UnkSubStruct9 &GetUnk03E0() {
return this->GetUnk03E0(this->mSaveSlotIndex);
}
FileSelectMain();
void func_ov019_020c61dc();
void func_ov019_020c63dc();
void func_ov019_020c6c14();
void func_ov019_020c6c18();
void func_ov019_020c6c54();
void func_ov019_020c6c9c();
void func_ov019_020c6ca0();
void func_ov019_020c6cd0();
void func_ov019_020c6d10();
void func_ov019_020c6e3c();
void func_ov019_020c7000();
void func_ov019_020c72a0();
void func_ov019_020c757c();
void func_ov019_020c7a44();
void func_ov019_020c7dc8();
void func_ov019_020c8524();
void func_ov019_020c854c();
void func_ov019_020c8c4c();
void func_ov019_020c92dc();
void func_ov019_020ca6a4();
void func_ov019_020ca940();
bool func_ov019_020cb238();
void func_ov019_020cb2a8();
void func_ov019_020cb2dc();
void func_ov019_020cb324();
void SetState(FileSelectState state);
void func_ov019_020cb6e8();
void func_ov019_020cb5dc();
void func_ov019_020cb664();
void func_ov019_020cb718();
bool func_ov019_020cb748();
// data_ov019_020d1edc
void func_ov019_020c6d08();
void func_ov019_020c6d0c();
void func_ov019_020c6d48();
void func_ov019_020c6e14();
void func_ov019_020c717c();
void func_ov019_020c71d0();
void func_ov019_020c71f0();
void func_ov019_020c7210();
void func_ov019_020c7274();
void func_ov019_020c7768();
void func_ov019_020c77b8();
void func_ov019_020c7804();
void func_ov019_020c7858();
void func_ov019_020c7878();
void func_ov019_020c78ac();
void func_ov019_020c7910();
void func_ov019_020c7c3c();
void func_ov019_020c7c48();
void func_ov019_020c7c70();
void func_ov019_020c7d3c();
void func_ov019_020c80dc();
void func_ov019_020c80e8();
// data_ov019_020d1f94
void func_ov019_020c8290();
void func_ov019_020c82c4();
void func_ov019_020c8454();
void func_ov019_020c8aac();
void func_ov019_020c8ad8();
void func_ov019_020c8b10();
void func_ov019_020c8b48();
void func_ov019_020c8b74();
void func_ov019_020c9b28();
void func_ov019_020c9b70();
void func_ov019_020c9bcc();
void func_ov019_020c9c18();
void func_ov019_020c9c70();
void func_ov019_020c9d88();
void func_ov019_020c9e08();
void func_ov019_020ca80c();
void func_ov019_020ca844();
void func_ov019_020ca87c();
void func_ov019_020ca8b4();
void func_ov019_020cb180();
void func_ov019_020cb1dc();
void func_ov019_020c80f4();
// data_ov019_020d204c
void func_ov019_020cb26c();
void func_ov019_020cb4bc();
void func_ov019_020cb4c8();
void func_ov019_020cb4d4();
void func_ov019_020cb4e0();
void func_ov019_020cb4ec();
void func_ov019_020cb4f8();
void func_ov019_020cb504();
void func_ov019_020cb510();
void func_ov019_020cb51c();
void func_ov019_020cb528();
void func_ov019_020cb534();
void func_ov019_020cb540();
void func_ov019_020cb54c();
void func_ov019_020cb558();
void func_ov019_020cb564();
void func_ov019_020cb570();
void func_ov019_020cb57c();
void func_ov019_020cb588();
void func_ov019_020cb5b0();
void func_ov019_020cb5bc();
void func_ov019_020cb268();
// data_ov019_020d1ec0 vtable
/* 00 */ virtual ~FileSelectMain() override;
/* 08 */ virtual void vfunc_08() override;
/* 10 */ virtual void vfunc_10() override;
/* 18 */ virtual void vfunc_18(void) override;
};
+128
View File
@@ -0,0 +1,128 @@
#pragma once
#include "FileSelect/Common.hpp"
#include "Game/GameModeManager.hpp"
#include "global.h"
#include "nitro/math.h"
#include "types.h"
#define MAX_MIC_LEVELS 4
#define MIC_LEVEL_1 0 // green bar
#define MIC_LEVEL_2 1 // yellow bar
#define MIC_LEVEL_3 2 // orange bar
#define MIC_LEVEL_4 3 // red bar
typedef u32 FSMicTestState;
enum FSMicTestState_ {
/* 0x00 */ FSMicTestState_MicTestIdle = 0,
/* 0x01 */ FSMicTestState_OptionsToMicTest = 1,
/* 0x02 */ FSMicTestState_MicTestToOptions = 2,
/* 0x03 */ FSMicTestState_OptionsIdle = 3,
/* 0x04 */ FSMicTestState_Max = 4
};
class UnkStruct_ov019_020d24c8_28_258 {
public:
/* 00 */ void *mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk16 mUnk_08;
/* 0A */ Vec2us_cpp mPos;
/* 0E */ unk16 mUnk_0E;
/* 10 */ unk16 mUnk_10;
/* 12 */ unk16 mUnk_12;
/* 14 */ unk16 mUnk_14;
/* 16 */ unk16 mUnk_16;
/* 18 */
UnkStruct_ov019_020d24c8_28_258() {
mUnk_00 = NULL;
mUnk_04 = 0;
mPos.x = 0;
mPos.y = 0;
};
UnkStruct_ov019_020d24c8_28_258(unk32 param1, unk32 param2) :
mUnk_00(0),
mUnk_04(0) {
this->UnknownAction(param1, param2);
}
void UnknownAction(unk32 param1, unk32 param2) {
this->func_ov000_0205fc20(param1, param2, &this->mPos, &this->mUnk_0E);
this->mUnk_12 = param1;
this->mUnk_14 = param2;
}
void func_ov000_0205fc20(unk32 param1, unk32 param2, void *param3, void *param4);
};
class UnkStruct_ov019_020d24c8_28_270_18 {
public:
/* 00 */ UnkStruct_ov019_020d24c8_28_258 mUnk_00[MAX_MIC_LEVELS];
/* 60 */
};
class UnkStruct_ov019_020d24c8_28_270 {
public:
/* 00 */ UnkStruct_ov019_020d24c8_28_258 mUnk_00;
/* 18 */ UnkStruct_ov019_020d24c8_28_270_18 mUnk_18;
/* 78 */ bool mUnk_78[MAX_MIC_LEVELS];
/* 7C */ u8 mUnk_7C[15];
/* 8B */ unk8 mUnk_8B;
/* 8C */ u16 mUnk_8C;
/* 8E */ Vec2s mUnk_8E; // mic test's background rectangles position
/* 90 */ unk16 mUnk_92;
/* 94 */
UnkStruct_ov019_020d24c8_28_270();
void func_ov019_020cf130();
void func_ov019_020cf168();
void func_ov019_020cf21c();
};
class UnkStruct_ov019_020d24c8_28_304 {
public:
/* 00 */ UnkSystem2_UnkSubSystem9 mUnk_000;
/* 44 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_044;
/* A4 */ UnkSystem2_UnkSubSystem8 mUnk_0A4;
/* F4 */
UnkStruct_ov019_020d24c8_28_304(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5, unk32 param6) :
mUnk_044(param1, param2, param3, param4, param5, param6),
mUnk_0A4(&mUnk_044) {}
void func_0201e874(unk32 param1, void *param2, void *param3, unk32 param4);
};
// defines the mic test screen (0x022e9b84)
class FileSelectMicTest : public GameModeManagerBase_104 {
public:
/* 000 (base) */
/* 01C */ FSMicTestState mState;
/* 020 */ UnkSystem2_UnkSubSystem5 mUnk_020; // "mic test" string
/* 258 */ UnkStruct_ov019_020d24c8_28_258 mUnk_258; // "mic test" background
/* 270 */ UnkStruct_ov019_020d24c8_28_270 mUnk_270; // microphone level display (green to red bars + background)
/* 304 */ UnkStruct_ov019_020d24c8_28_304 mUnk_304; // "go back" arrow
/* 3F8 */ UnkSystem2_UnkSubSystem5 mUnk_3F8; // "please face the mic" string
/* 630 */ bool mUnk_630;
/* 631 */ unk8 mUnk_631;
/* 632 */ unk8 mUnk_632;
/* 633 */ unk8 mUnk_633;
/* 634 */
FileSelectMicTest();
void func_ov019_020cea74();
void func_ov019_020cefe4();
void func_ov019_020ceff8();
// data_ov019_020d225c
void func_ov019_020cea6c();
void func_ov019_020cea70();
void func_ov019_020ceaac();
void func_ov019_020cebcc();
// data_ov019_020d2284 vtable
/* 00 */ virtual ~FileSelectMicTest() override;
/* 08 */ virtual void vfunc_08() override;
/* 10 */ virtual void vfunc_10() override;
/* 14 */ virtual void vfunc_14() override;
};
+173
View File
@@ -0,0 +1,173 @@
#pragma once
#include "FileSelect/Common.hpp"
#include "FileSelect/FileSelectMicTest.hpp"
#include "Game/GameModeManager.hpp"
#include "System/SysNew.hpp"
#include "global.h"
#include "types.h"
typedef u32 FSOptionsState;
enum FSOptionsState_ {
/* 0x00 */ FSOptionsState_Idle = 0,
/* 0x01 */ FSOptionsState_OptionsFromChooseMode = 1,
/* 0x02 */ FSOptionsState_OptionsToChooseMode = 2,
/* 0x03 */ FSOptionsState_OptionsToMicTest = 3,
/* 0x04 */ FSOptionsState_MicTestIdle = 4,
/* 0x05 */ FSOptionsState_OptionsFromMicTest = 5,
/* 0x06 */ FSOptionsState_SaveSettings = 6,
/* 0x07 */ FSOptionsState_Max = 7
};
class UnkStruct_ov019_020d24c8_2C_24_FC3 {
public:
/* 00 */ unk8 mUnk_00;
/* 01 */ unk8 mUnk_01;
/* 02 */
UnkStruct_ov019_020d24c8_2C_24_FC3() {}
};
class UnkStruct_ov019_020d24c8_2C_24_FB0 : public SysObject {
public:
/* 00 */ UnkSystem2_UnkSubSystem5 *mUnk_00[6];
/* 18 */
UnkStruct_ov019_020d24c8_2C_24_FB0() {}
};
class UnkStruct_ov019_020d24c8_2C_24_FB8 : public SysObject {
public:
/* 00 */ UnkSystem2_UnkSubSystem1_Derived1 *mUnk_00[6];
/* 18 */
UnkStruct_ov019_020d24c8_2C_24_FB8() {}
};
class UnkStruct_ov019_020d24c8_2C_24 {
public:
/* 0000 */ s32 mSaveSlotIndex;
/* 0004 */ Vec2s mUnk_004;
/* 0008 */ UnkStruct_ov019_020d24c8_28_258 mUnk_008;
// message speed
/* 0020 */ UnkSystem2_UnkSubSystem5 mUnk_020; // label
/* 0258 */ UnkSystem2_UnkSubSystem5 mUnk_258; // current string
/* 0490 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_490; // left arrow
/* 04F0 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_4F0; // right arrow
// sound settings
/* 0550 */ UnkSystem2_UnkSubSystem5 mUnk_550; // label
/* 0788 */ UnkSystem2_UnkSubSystem5 mUnk_788; // current string
/* 09C0 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_9C0; // left arrow
/* 0A20 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_A20; // right arrow
// handedness
/* 0A80 */ UnkSystem2_UnkSubSystem5 mUnk_A80; // label
/* 0CB8 */ UnkSystem2_UnkSubSystem5 mUnk_CB8; // current type string
/* 0EF0 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_EF0; // left arrow
/* 0F50 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_F50; // right arrow
/* 0FB0 */ UnkStruct_ov019_020d24c8_2C_24_FB0 *mUnk_FB0;
/* 0FB4 */ UnkStruct_ov019_020d24c8_2C_24_FB0 *mUnk_FB4;
/* 0FB8 */ UnkStruct_ov019_020d24c8_2C_24_FB8 *mUnk_FB8;
/* 0FBC */ UnkStruct_ov019_020d24c8_2C_24_FB8 *mUnk_FBC;
/* 0FC0 */ u8 mUnk_FC0;
/* 0FC1 */ u8 mUnk_FC1;
/* 0FC2 */ u8 mUnk_FC2;
/* 0FC3 */ STRUCT_PAD(0xFC3, 0x103E);
/* 103E */ unk16 mUnk_103E;
/* 1040 */
UnkStruct_ov019_020d24c8_2C_24(GameModeManagerBase_104_0C *param1, s32 saveSlotIndex);
~UnkStruct_ov019_020d24c8_2C_24();
void func_ov019_020ce414();
void func_ov019_020ce4dc();
void func_ov019_020ce61c(bool decrement);
void func_ov019_020ce668(bool decrement);
void func_ov019_020ce6c8();
unk32 func_ov019_020ce704(u8 param1);
unk32 func_ov019_020ce74c(u8 param1);
unk32 func_ov019_020ce7a0(u8 param1);
void func_ov019_020ce7d4(unk32 param1);
};
// defines the options screen (022ea1c8)
class FileSelectOptions : public GameModeManagerBase_104 {
public:
/* 0000 (base) */
/* 001C */ FSOptionsState mState;
/* 0020 */ u8 mUnk_0020; // bool?
/* 0020 */ unk8 mUnk_0021;
/* 0020 */ unk8 mUnk_0022;
/* 0020 */ unk8 mUnk_0023;
/* 0024 */ UnkStruct_ov019_020d24c8_2C_24 mUnk_0024;
/* 1064 */ UnkSystem2_UnkSubSystem9 mUnk_1064;
// "options" string
/* 10A8 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_10A8;
/* 1108 */ UnkSystem2_UnkSubSystem3 mUnk_1108;
/* 110C */ UnkSystem2_UnkSubSystem5 mUnk_110C;
/* 1344 */ UnkSystem2_UnkSubSystem9 mUnk_1344;
// "mic test" button
/* 1388 */ UnkSystem2_UnkSubSystem1_Derived2 mUnk_1388;
/* 13E8 */ unk8 mUnk_13E8[0x38];
/* 1420 */ UnkSystem2_UnkSubSystem8 mUnk_1420;
/* 1470 */ UnkSystem2_UnkSubSystem3 mUnk_1470;
/* 1474 */ UnkSystem2_UnkSubSystem5 mUnk_1474;
// "ok" button
/* 16AC */ UnkSystem2_UnkSubSystem1_Derived2 mUnk_16AC;
/* 170C */ unk8 mUnk_170C[0x38];
/* 1744 */ UnkSystem2_UnkSubSystem8 mUnk_1744;
/* 1794 */ UnkSystem2_UnkSubSystem3 mUnk_1794;
/* 1798 */ UnkSystem2_UnkSubSystem5 mUnk_1798;
// "cancel" button
/* 19D0 */ UnkSystem2_UnkSubSystem1_Derived2 mUnk_19D0;
/* 1A30 */ unk8 mUnk_1A30[0x38];
/* 1A68 */ UnkSystem2_UnkSubSystem8 mUnk_1A68;
/* 1AB8 */ UnkSystem2_UnkSubSystem3 mUnk_1AB8;
/* 1ABC */ UnkSystem2_UnkSubSystem5 mUnk_1ABC;
/* 1CF4 */ unk8 mUnk_1CF4;
/* 1CF5 */ bool mUnk_1CF5;
/* 1CF6 */ unk8 mUnk_1CF6;
/* 1CF7 */ unk8 mUnk_1CF7;
/* 1CF8 */
FileSelectOptions(s32 saveSlotIndex);
void func_ov019_020ccd40();
void func_ov019_020ccdf4();
void func_ov019_020cd8d4();
bool func_ov019_020cdbdc();
void func_ov019_020cde8c(FSOptionsState state);
void func_ov019_020cde9c();
// data_ov019_020d2188
void func_ov019_020cd7f8(void);
void func_ov019_020cdc0c(void);
void func_ov019_020cdc38(void);
void func_ov019_020cdc60(void);
void func_ov019_020cdc5c(void);
void func_ov019_020cdc8c(void);
void func_ov019_020cdcb8(void);
// data_ov019_020d21c0
void func_ov019_020cce04(void);
void func_ov019_020cce30(void);
void func_ov019_020cd16c(void);
void func_ov019_020cd41c(void);
void func_ov019_020cd5f8(void);
void func_ov019_020cd614(void);
void func_ov019_020cd788(void);
// data_ov019_020d2200 vtable
/* 00 */ virtual ~FileSelectOptions() override;
/* 08 */ virtual void vfunc_08() override;
/* 10 */ virtual void vfunc_10() override;
static GameModeManagerBase_104 *Create(void *param1, s32 saveSlotIndex);
};
@@ -0,0 +1,43 @@
#pragma once
#include "FileSelect/Common.hpp"
#include "System/SysNew.hpp"
#include "global.h"
#include "nitro/math.h"
#include "types.h"
class FileSelectOptions;
class FileSelectMicTest;
class OptionsManagerAssessor {
public:
OptionsManagerAssessor();
~OptionsManagerAssessor();
};
class FileSelectOptionsManager : public OptionsManagerAssessor,
public GameModeManagerBase_104 { // 0x022E9B44
public:
/* 00 (base) */
/* 1C */ unk32 mUnk_1C;
/* 20 */ u8 mUnk_20; // bool?
/* 21 */ unk8 mUnk_21;
/* 22 */ unk8 mUnk_22;
/* 23 */ unk8 mUnk_23;
/* 24 */ GameModeManagerBase_104 *mUnk_24;
/* 28 */ FileSelectMicTest *mpMicTest;
/* 2C */ FileSelectOptions *mpOptions;
/* 30 */
FileSelectOptionsManager(void *param1, unk32 param2);
void func_ov019_020cc85c(unk32 param1);
unk32 func_ov019_020cc874();
// data_ov019_020d2224 vtable
/* 00 */ virtual ~FileSelectOptionsManager() override;
/* 08 */ virtual void vfunc_08() override;
static GameModeManagerBase_104 *Create(void *param1, s32 saveSlotIndex);
};
extern FileSelectOptionsManager *gpFSOptionsManager;
+76
View File
@@ -0,0 +1,76 @@
#pragma once
#include "FileSelect/FileSelectMain.hpp"
#include "Game/GameModeManager.hpp"
#include "System/SysNew.hpp"
#include "global.h"
class FileSelectManager_UnkDrawBase : public SysObject {
public:
/* 00 (vtable) */
/* 04 */ GameModeManagerBase_104_04 mUnk_04;
/* 0C */
FileSelectManager_UnkDrawBase();
// data_ov000_020b1dd8 vtable
/* 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();
/* 18 */ virtual void vfunc_18(unk32 param1);
/* 1C */ virtual void vfunc_1C(unk32 param1);
/* 20 */ virtual void vfunc_20();
/* 24 */ virtual void vfunc_24();
/* 28 */
};
class FileSelectManager_160 : public FileSelectManager_UnkDrawBase {
public:
/* 00 (vtable) */
/* 0C */ unk32 mUnk_0C;
/* 10 */ FileSelectMain *mUnk_10;
/* 14 */ GameModeManagerBase_104 *mUnk_14;
/* 18 */ GameModeManagerBase_104 *mUnk_18;
/* 1C */ void *mUnk_1C;
/* 20 */
FileSelectManager_160(GameModeManagerBase_104 *param1, FileSelectMain *param2);
// data_ov019_020d23e0 vtable
/* 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;
/* 18 */ virtual void vfunc_18(unk32 param1) override;
/* 1C */ virtual void vfunc_1C(unk32 param1) override;
/* 20 */ virtual void vfunc_20() override;
/* 24 */ virtual void vfunc_24() override;
/* 28 */
};
class FileSelectManager_164 : public FileSelectManager_UnkDrawBase {
public:
/* 00 (base) */
/* 0C */ unk32 mUnk_0C;
/* 10 */ FileSelectMain *mUnk_10;
/* 14 */ GameModeManagerBase_104 *mUnk_14;
/* 18 */ GameModeManagerBase_104 *mUnk_18;
/* 1C */
FileSelectManager_164(GameModeManagerBase_104 *param1, FileSelectMain *param2);
// data_ov019_020d2410 vtable
/* 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;
/* 18 */ virtual void vfunc_18(unk32 param1) override;
/* 1C */ virtual void vfunc_1C(unk32 param1) override;
/* 20 */ virtual void vfunc_20() override;
static void func_ov019_020d02f4();
};
+88
View File
@@ -0,0 +1,88 @@
#pragma once
#include "FileSelect/FileSelectMicTest.hpp"
#include "System/SysNew.hpp"
#include "global.h"
#include "iterator.hpp"
#include "nitro/math.h"
#include "types.h"
class UnkStructSub4_2 {
public:
/* 00 */ void *mUnk_00;
/* 04 */ void *mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 08 */ unk32 mUnk_0C;
/* 10 */ unk32 mUnk_10;
/* 14 */ unk32 mUnk_14;
/* 18 */ unk32 mUnk_18;
/* 1C */ unk32 mUnk_1C;
/* 20 */ unk32 mUnk_20;
/* 24 */ unk32 mUnk_24;
/* 28 */ u8 mUnk_28; // bool?
/* 29 */ unk8 mUnk_29;
/* 2A */ unk8 mUnk_2A;
/* 2B */ unk8 mUnk_2B;
/* 2C */ unk32 mUnk_2C;
/* 30 */ STRUCT_PAD(0x30, 0x5C);
/* 5C */ unk16 mUnk_5C;
/* 5E */ unk16 mUnk_5E;
/* 60 */ STRUCT_PAD(0x60, 0x6E);
/* 6E */ unk8 mUnk_6E;
/* 6F */ unk8 mUnk_6F;
/* 70 */ unk32 mUnk_70;
/* 74 */ unk16 mUnk_74;
/* 76 */ unk16 mUnk_76;
/* 78 */
void func_ov000_02060b64(void);
};
// file tab manager?
class UnkSubStruct9 : public SysObject {
public:
/* 000 */ u8 mSaveSlotIndex; // save slot index, 0 for file 1 and 1 for file 2
/* 001 */ unk8 mUnk_001;
/* 002 */ unk8 mUnk_002;
/* 003 */ unk8 mUnk_003;
/* 004 */ UnkSystem2_UnkSubSystem1_Derived1 mUnk_004;
/* 064 */ UnkSystem2_UnkSubSystem5 mUnk_064;
/* 29C */ UnkStruct_ov019_020d24c8_28_258 mUnk_29C; // top-left 1 and 2 icons
/* 2B4 */ UnkStruct_ov019_020d24c8_28_258 mUnk_2B4; // static hearts (hearts before beating heart)
/* 2CC */ UnkStructSub4_2 mUnk_2CC;
/* 344 */ UnkStructSub4_2 mUnk_344;
/* 3BC */ UnkStructSub4_2 mUnk_3BC;
/* 434 */ UnkStructSub4_2 mUnk_434;
/* 4AC */ UnkStructSub4_2 mUnk_4AC;
/* 524 */ UnkStructSub4_2 mUnk_524; // forest dungeon icon
/* 59C */ UnkStructSub4_2 mUnk_59C; // snow dungeon icon
/* 614 */ UnkStructSub4_2 mUnk_614; // ocean dungeon icon
/* 68C */ UnkStructSub4_2 mUnk_68C; // fire dungeon icon
/* 704 */ UnkStructSub4_2 mUnk_704; // desert dungeon icon
/* 77C */ Vec2us mUnk_77C;
// int pad[10];
/* 780 */
struct stack_struct2 {
u16 param1;
u16 param2;
void operator=(stack_struct2 &from) {
this->param1 = from.param1;
this->param2 = from.param2;
}
};
UnkSubStruct9();
UnkSubStruct9(stack_struct1 param1);
void Init();
void Init(stack_struct1 param1);
void func_ov019_020cbaec();
bool IsPlayerNameSet();
void func_ov019_020cbb40();
void func_ov019_020cbb94();
void func_ov019_020cbc0c();
void func_ov019_020cc5ac(Vec2us *param1);
void func_ov000_02062be0();
};