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
+23
View File
@@ -0,0 +1,23 @@
#pragma once
#include "types.h"
//! TODO: temporary place until this is documented properly
extern "C" {
void Fill16(int value, u16 *dst, size_t size);
void Copy16(u16 *src, u16 *dest, size_t size);
void Fill32(int value, void *dest, size_t size);
// Copy32
// Stream32
void Fill256(int value, void *dst, size_t size);
void Copy256(void *src, void *dest, size_t size);
// CopySingle256
// CopySingle288
// CopySingle384
// CopySingle512
void Fill(u8 *dst, int value, size_t size);
// Copy
// Zero288
// Swap32
}
+22
View File
@@ -0,0 +1,22 @@
#pragma once
#include "Game/GameMode.hpp"
#include "types.h"
class GameModeFileSelect;
class UnkStruct_02049a2c {
public:
/* 00 */ GameModeBase *mUnk_00;
/* 04 */ unk8 mUnk_04[0xE8 - 0x04];
/* E8 */
void Run(void);
void func_02013370(unk32 param1);
GameModeFileSelect *GetUnk00_FileSelect() {
return (GameModeFileSelect *) this->mUnk_00;
}
};
extern UnkStruct_02049a2c data_02049a2c;
+11
View File
@@ -0,0 +1,11 @@
#pragma once
#include "types.h"
class UnkStruct_02049b80 {
public:
void func_02013ecc(unk32 param1, UnkCallback param2, unk32 param3);
void func_02013ee8(unk32 param1, unk32 param2);
};
extern UnkStruct_02049b80 data_02049b80;
+15
View File
@@ -0,0 +1,15 @@
#pragma once
#include "types.h"
class UnkStruct_02049bd4 {
public:
/* 00 */ unk16 mUnk_00;
/* 02 */ u16 mUnk_02;
/* 04 */ u16 mUnk_04;
void func_02014c60(unk32 param1);
void func_02014cdc(unk32 param1);
};
extern UnkStruct_02049bd4 data_02049bd4;
+73
View File
@@ -0,0 +1,73 @@
#pragma once
#include "FileSelect/Common.hpp"
#include "Game/GameModeManager.hpp"
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_ov000_02067bc4.hpp"
#include "types.h"
class UnkStruct_0204a060_Base2 : public SysObject {
public:
/* 00 (vtable) */
/* 04 */ GameModeManagerBase_104_04 mUnk_04;
/* 0C */ unk8 mUnk_0C;
/* 0D */ unk8 mUnk_0D;
/* 0E */ unk8 mUnk_0E;
/* 0F */ unk8 mUnk_0F;
/* 10 */ unk16 mUnk_10;
/* 12 */ unk16 mUnk_12;
/* 14 */
UnkStruct_0204a060_Base2();
void func_0201ba68();
void func_0201bacc();
// data_020440f4 vtable
/* 00 */ virtual ~UnkStruct_0204a060_Base2();
/* 08 */ virtual bool vfunc_08(unk32 param1);
/* 0C */
};
class UnkStruct_0204a060_Base : public UnkStruct_0204a060_Base2 {
public:
/* 00 (base) */
/* 14 */ unk32 mUnk_14;
/* 18 */ unk8 mUnk_18;
/* 19 */ unk8 mUnk_19;
/* 1A */ unk16 mUnk_1A;
/* 1C */ unk16 mUnk_1C;
/* 1E */ unk16 mUnk_1E;
/* 20 */ unk16 mUnk_20;
/* 22 */ unk16 mUnk_22;
/* 24 */
UnkStruct_0204a060_Base();
void func_0201bb38();
void func_0201bb84(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
void func_0201bba4();
void func_0201bbcc();
// data_02044108 vtable
/* 00 */ 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);
/* 14 */
};
class UnkStruct_0204a060 : public UnkStruct_0204a060_Base {
public:
/* 00 (base) */
/* 24 */ void *callback; //! TODO: is it a PTMF?
UnkStruct_0204a060();
bool func_020183d4(bool param1, void *param2, unk32 param3);
// data_02044048 vtable
/* 00 */ virtual ~UnkStruct_0204a060() override;
/* 0C */ virtual bool vfunc_0C(void) override;
/* 14 */
};
extern UnkStruct_0204a060 data_0204a060;
+29
View File
@@ -0,0 +1,29 @@
#pragma once
#include "FileSelect/FileSelectUnkDraw.hpp"
#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();
~UnkStruct_0204a088_Base(); //! TODO: most likely inlined but can't make it work for some reasons
};
class UnkStruct_0204a088 : public UnkStruct_0204a088_Base {
public:
/* 00 */ unk32 mUnk_00;
/* 00 */ unk32 mUnk_04;
/* 00 */ unk32 mUnk_08;
/* 0C */ FileSelectManager_UnkDrawBase mUnk_0C[23];
void func_ov000_02061098(void);
void func_ov000_020611dc(void *param1, unk32 param2);
void func_ov000_020611fc(unk32 param2);
void func_ov000_02061224(void);
void func_ov000_02061230(void);
void func_ov000_02061248(void);
};
+41
View File
@@ -0,0 +1,41 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_0204a110_Sub1 {
public:
/* 00 */ unk8 mUnk_00[0x0A];
/* 0A */ u8 mUnk_0A; // bools?
/* 0B */ u8 mUnk_0B; // bools?
bool UnkCheck1() {
bool value = true;
if (mUnk_0A == 0 && mUnk_0B == 0) {
value = false;
}
return value;
}
};
class UnkStruct_0204a110 {
public:
/* 000 */ unk32 mUnk_000;
/* 004 */ STRUCT_PAD(0x04, 0xDA4);
/* DA4 */ unk8 mUnk_DA4;
/* DA5 */ unk8 mUnk_DA5;
/* DA6 */ unk8 mUnk_DA6;
/* DA7 */ unk8 mUnk_DA7;
/* DA8 */ unk8 mUnk_DA8[0xDE8 - 0xDA8];
/* DE8 */ UnkStruct_0204a110_Sub1 *mUnk_DE8;
unk32 func_01ff9b50();
void func_ov001_020bd514(unk32 param1, void *param2, unk32 param3, unk32 param4);
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);
};
extern UnkStruct_0204a110 data_0204a110;
+11
View File
@@ -0,0 +1,11 @@
#pragma once
#include "System/SysNew.hpp"
#include "types.h"
class UnkStruct_0204aeec : public SysObject {
public:
void func_0201e698(void);
};
extern UnkStruct_0204aeec data_0204aeec;
+13
View File
@@ -0,0 +1,13 @@
#pragma once
#include "types.h"
class UnkStruct_0204af1c {
public:
/* 00 */ unk32 mUnk_00;
void func_0201aa44(void *param1, void *param2, unk32 param3, void *param4);
void func_0201aad0(void *param1, void *param2, unk32 param3, void *param4);
};
extern UnkStruct_0204af1c data_0204af1c;
+66 -1
View File
@@ -3,14 +3,79 @@
#include "Item/Item.hpp"
#include "types.h"
class UnkStruct_ov000_02067bc4_Sub1 {
public:
unk32 func_02022128(void);
};
class UnkStruct_ov000_02067bc4_Sub2 {
public:
unk8 mUnk_00[0x10];
unk32 mUnk_10;
unk8 mUnk_14[0x40];
unk32 mUnk_54;
};
class UnkStruct_ov000_02067bc4 {
public:
class UnkStruct1 {
public:
unk16 mUnk_00;
unk16 mUnk_02;
unk32 mUnk_04;
unk32 mUnk_08;
unk8 mUnk_0C;
unk8 mUnk_0D;
unk8 mUnk_0E;
unk8 mUnk_0F;
UnkStruct1(unk32 param1) {
mUnk_00 = 0;
mUnk_08 = -1;
mUnk_0C = 0;
mUnk_0D = 0;
mUnk_04 = 0;
}
UnkStruct1() {
mUnk_00 = 0;
mUnk_08 = -1;
mUnk_0C = 0;
mUnk_0D = 0;
mUnk_04 = 0;
}
};
public:
/* 000 (vtable) */
/* 004 */ unk32 mUnk_004;
/* 004 */ UnkStruct_ov000_02067bc4_Sub2 *mUnk_008;
/* 004 */ unk8 mUnk_00C[0x30 - 0x00C];
/* 030 */ unk32 mUnk_030;
/* 034 */ unk8 mUnk_034[0x160 - 0x034];
/* 160 */ UnkStruct_ov000_02067bc4_Sub1 mUnk_160;
/* 00 */ virtual unk32 vfunc_00();
/* 04 */ virtual unk32 vfunc_04();
/* 08 */ virtual unk32 vfunc_08();
void func_02021bec(unk16 param1);
void func_02021c08();
void func_02021c2c();
UnkStruct_ov000_02067bc4 *func_ov000_02067bc4(unk32);
void func_ov000_02067cf8(ItemId itemId, unk32 param2, unk32 *param3);
unk8 func_ov000_02067cf8(unk32 param1, unk32 param2, UnkStruct1 *param3);
void *func_ov000_02067bb4(unk32 param1);
void func_ov000_02067e60(u8 param1, unk32 param2);
void func_ov000_0206807c(unk32 param1, void *param2, unk32 param3, unk32 param4);
void func_ov000_0206807c(unk32 param1, void *param2, unk32 param3);
void func_ov000_0206807c(unk32 param1, void *param2);
void func_ov000_0206807c(void *param1, void *param2);
void func_ov000_0206807c(void *param1, unk32 param2);
unk32 func_ov000_020682c0(unk32 param1);
void func_ov001_020be668(void);
void func_ov001_020be6f4(void);
};
extern UnkStruct_ov000_02067bc4 data_ov000_020b504c;
+1 -1
View File
@@ -138,7 +138,7 @@ public:
this->mItemId = itemId;
}
UnkStruct_ov000_0208f820_04() {};
UnkStruct_ov000_0208f820_04() {}
};
class UnkStruct_ov000_0208f820 : public SysObject {
@@ -0,0 +1,14 @@
#pragma once
#include "types.h"
class UnkStruct_ov000_020b50c0 {
public:
void func_ov000_0206a6a4(unk32 param1);
void func_ov000_0206a758(void);
void func_ov000_0206a77c(void);
void func_ov000_020bd8ac(void);
void func_ov001_020bd8dc(void);
};
extern UnkStruct_ov000_020b50c0 data_ov000_020b50c0;
@@ -10,9 +10,11 @@ public:
/* 0c */ unk32 mUnk_0c;
/* 10 */ unk32 mUnk_10;
void func_ov000_0206d0bc(unk32 param1);
void func_ov000_0206d274(unk32 param1);
void func_ov000_0206c96c(unk32 param1);
void func_ov000_0206c9a8(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
void func_ov000_0206c608(unk32 param1, unk32 param2, unk32 param3);
};
extern UnkStruct_ov000_020b51b8 data_ov000_020b51b8;
@@ -0,0 +1,13 @@
#pragma once
#include "types.h"
class UnkStruct_ov000_020b5214 {
public:
/* 00 */ unk32 mUnk_00;
void func_ov000_0206db44(unk32 param1);
void func_ov000_0206d6b4(unk32 param1, unk32 param2);
};
extern UnkStruct_ov000_020b5214 data_ov000_020b5214;
@@ -0,0 +1,13 @@
#pragma once
#include "types.h"
class UnkStruct_ov003_020ba740 {
public:
/* 000 */ unk8 mUnk_000[0x9D0];
/* 9D0 */ wchar_t mUnk_9D0[9];
void func_ov003_020b69d8(unk32 param1);
};
extern UnkStruct_ov003_020ba740 *data_ov003_020ba740;
+292
View File
@@ -0,0 +1,292 @@
#pragma once
#include "Save/SaveManager.hpp"
#include "System/SysNew.hpp"
#include "global.h"
#include "types.h"
// seems to be a filesystem targeting the save file
// data_ov000_020b2078
class UnkSystem1_ov000_Base : public SysObject {
public:
/* 00 (vtable) */
UnkSystem1_ov000_Base(unk32 param1, unk32 param2);
/* 00 */ virtual void vfunc_00(); // func_ov000_020667d8
/* 04 */ virtual void vfunc_04(); // func_ov000_020667f4
/* 08 */ virtual void vfunc_08(unk32 param1); // func_ov000_020669cc
/* 0C */ virtual void vfunc_0C(); // func_ov000_020669d0
/* 10 */ virtual void vfunc_10(); // func_ov000_02066a5c
/* 14 */ virtual void vfunc_14(); // func_ov000_02066dfc
/* 18 */ virtual void vfunc_18(); // func_ov000_020669d8
/* 1C */ virtual unk32 vfunc_1C(u32 param1, unk32 param2, unk32 param3); // func_ov000_02067234
/* 20 */ virtual unk32 vfunc_20(unk32 param1, unk32 param2, unk32 param3); // func_ov000_0206723c
/* 24 */
};
// data_ov000_020b20a4
class UnkSystem1_ov000_Derived1 : public UnkSystem1_ov000_Base {
public:
/* 00 (base) */
/* 04 */ unk16 mUnk_04;
/* 06 */ unk16 mUnk_06;
/* 08 */ unk32 mUnk_08;
/* 0C */ unk32 mUnk_0C;
/* 10 */ unk16 mUnk_10;
/* 12 */ unk8 mUnk_12; // file slot index
/* 13 */ unk8 mUnk_13;
/* 14 */
UnkSystem1_ov000_Derived1();
UnkSystem1_ov000_Derived1(unk32 param1, unk32 param2);
/* 08 */ virtual void vfunc_08(unk32 param1) override; // func_ov000_020673c8
/* 0C */ virtual void vfunc_0C() override; // func_ov000_02067434
/* 10 */ virtual void vfunc_10() override; // func_ov000_02067474
/* 24 */ virtual ~UnkSystem1_ov000_Derived1(); // func_ov000_020672ac & func_ov000_020672f4
};
// data_ov000_020b489c
class UnkSystem1_ov000_Derived2 : public UnkSystem1_ov000_Base {
public:
/* 00 (base) */
UnkSystem1_ov000_Derived2(unk32 param1, unk32 param2);
/* 08 */ virtual void vfunc_08(unk32 param1) override; // func_ov000_0209fbec
/* 0C */ virtual void vfunc_0C() override; // func_ov000_0209fcdc
/* 24 */ virtual ~UnkSystem1_ov000_Derived2() override; // func_ov000_0209fb18 & func_ov000_0209fb5c
};
// data_ov010_020b8e10
class UnkSystem1_ov010 : public UnkSystem1_ov000_Derived1 {
public:
/* 00 (base) */
UnkSystem1_ov010(unk32 param1, unk32 param2);
/* 08 */ virtual void vfunc_08(unk32 param1) override; // func_ov010_020b8844
/* 1C */ virtual unk32 vfunc_1C(u32 param1, unk32 param2, unk32 param3) override; // func_ov010_020b8878
/* 24 */ virtual ~UnkSystem1_ov010() override; // func_ov010_020b65f0
};
class UnkSystem1_ov010_Derived1 : public UnkSystem1_ov010 {
public:
/* 00 (base) */
UnkSystem1_ov010_Derived1(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov010_Derived1() override; // func_ov010_020b88b0
};
// data_ov016_020b8278
class UnkSystem1_ov016 : public UnkSystem1_ov000_Derived1 {
public:
/* 00 (base) */
UnkSystem1_ov016(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov016() override; // func_ov016_020b7650
};
class UnkSystem1_ov016_Derived1 : public UnkSystem1_ov016 {
public:
/* 00 (base) */
UnkSystem1_ov016_Derived1(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov016_Derived1() override; // func_ov016_020b7664
/* 2C */ virtual void vfunc_2C(); // func_ov016_020b776c
};
// data_ov019_020d1e00
class UnkSystem1_ov019_1 : public UnkSystem1_ov000_Derived1 {
public:
/* 00 (base) */
UnkSystem1_ov019_1();
UnkSystem1_ov019_1(unk32 param1, unk32 param2) :
UnkSystem1_ov000_Derived1(param1, param2) {}
/* 24 */ virtual ~UnkSystem1_ov019_1() override {} // func_ov019_020c4914
};
class UnkSystem1_ov019_Derived1 : public UnkSystem1_ov019_1 {
public:
/* 00 (base) */
/* 14 */ SaveFile *mUnk_14;
/* 18 */ unk16 mUnk_18;
/* 1A */ unk8 mUnk_1A; // bool?
/* 1B */ u8 mUnk_1B; // bool?
/* 1C */
UnkSystem1_ov019_Derived1();
UnkSystem1_ov019_Derived1(unk32 param1, unk32 param2);
void func_ov019_020c5200();
unk32 func_ov019_020c5540(bool param1, unk16 param2);
void func_ov019_020c5590(unk32 param1, unk32 param2, unk32 param3);
/* 08 */ virtual void vfunc_08(unk32 param1) override; // func_ov019_020c523c
/* 1C */ virtual unk32 vfunc_1C(u32 param1, unk32 param2, unk32 param3) override; // func_ov019_020c5284
/* 20 */ virtual unk32 vfunc_20(unk32 param1, unk32 param2, unk32 param3) override; // func_ov019_020c5430
/* 24 */ WEAK virtual ~UnkSystem1_ov019_Derived1() override {} // func_ov019_020c5614
};
class UnkSystem1_ov019_2 : public UnkSystem1_ov000_Derived1 {
public:
/* 00 (base) */
UnkSystem1_ov019_2(unk32 param1, unk32 param2) :
UnkSystem1_ov000_Derived1(param1, param2) {}
/* 24 */ virtual ~UnkSystem1_ov019_2() override {} // func_ov019_020c4c38
};
// used to create new files
class UnkSystem1_ov019_Derived2 : public UnkSystem1_ov019_2 { // 0x02262F24
public:
/* 00 (base) */
/* 14 */ bool mUnk_14;
/* 15 */ u8 mUnk_15;
/* 16 */ unk8 mUnk_16;
/* 17 */ unk8 mUnk_17;
/* 18 */
UnkSystem1_ov019_Derived2();
// data_ov019_020d2440 vtable
/* 08 */ virtual void vfunc_08(unk32 param1) override; // func_ov019_020d035c
/* 1C */ virtual unk32 vfunc_1C(u32 param1, unk32 param2, unk32 param3) override; // func_ov019_020d03a4
/* 24 */ WEAK virtual ~UnkSystem1_ov019_Derived2() override {} // func_ov019_020d0594
};
class UnkSystem1_ov019_3 : public UnkSystem1_ov000_Derived1 {
public:
/* 00 (base) */
/* 14 */
UnkSystem1_ov019_3(unk32 param1, unk32 param2) :
UnkSystem1_ov000_Derived1(param1, param2) {}
/* 24 */ virtual ~UnkSystem1_ov019_3() override {} // func_ov019_020c5fd0
};
// used to copy and delete files
class UnkSystem1_ov019_Derived3 : public UnkSystem1_ov019_3 {
public:
/* 00 (base) */
/* 14 */ bool mUnk_14;
/* 15 */ unk8 mUnk_15;
/* 16 */ unk8 mUnk_16;
/* 17 */ unk8 mUnk_17;
/* 18 */ unk32 mUnk_18; // operating mode: 0 for copy and 1 for erase
/* 1C */ unk32 mUnk_1C;
/* 20 */ u8 mUnk_20; // bool?
/* 21 */ bool mUnk_21;
/* 22 */ unk8 mUnk_22;
/* 22 */ unk8 mUnk_23;
UnkSystem1_ov019_Derived3();
// data_ov019_020d2474 vtable
/* 04 */ virtual void vfunc_04() override;
/* 08 */ virtual void vfunc_08(unk32 param1) override;
/* 1C */ virtual unk32 vfunc_1C(u32 param1, unk32 param2, unk32 param3) override;
/* 24 */ WEAK virtual ~UnkSystem1_ov019_Derived3() override {}
};
// data_ov036_021225f4
class UnkSystem1_ov036 : public UnkSystem1_ov000_Derived1 {
public:
/* 00 (base) */
UnkSystem1_ov036(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov036() override; // func_ov036_0211eb68
};
class UnkSystem1_ov036_Derived1 : public UnkSystem1_ov036 {
public:
/* 00 (base) */
UnkSystem1_ov036_Derived1(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov036_Derived1() override; // func_ov036_02120c18
};
// data_ov056_0213ec20
class UnkSystem1_ov056 : public UnkSystem1_ov000_Derived1 {
public:
/* 00 (base) */
UnkSystem1_ov056(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov056() override; // func_ov056_0213b910
};
class UnkSystem1_ov056_Derived1 : public UnkSystem1_ov056 {
public:
/* 00 (base) */
UnkSystem1_ov056_Derived1(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov056_Derived1() override; // func_ov056_0213d4dc
};
// data_ov059_02163a28
class UnkSystem1_ov059 : public UnkSystem1_ov000_Derived1 {
public:
/* 00 (base) */
UnkSystem1_ov059(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov059() override; // func_ov059_021605c8 (?)
};
class UnkSystem1_ov059_Derived1 : public UnkSystem1_ov059 {
public:
/* 00 (base) */
UnkSystem1_ov059_Derived1(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov059_Derived1() override; // func_ov059_02160d98
};
// data_ov062_021608e8
class UnkSystem1_ov062 : public UnkSystem1_ov000_Derived1 {
public:
/* 00 (base) */
UnkSystem1_ov062(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov062() override; // func_ov062_0215cf18
};
class UnkSystem1_ov062_Derived1 : public UnkSystem1_ov062 {
public:
/* 00 (base) */
UnkSystem1_ov062_Derived1(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov062_Derived1() override; // func_ov062_0215e734
};
// data_ov063_02163714
class UnkSystem1_ov063 : public UnkSystem1_ov000_Derived1 {
public:
/* 00 (base) */
UnkSystem1_ov063(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov063() override; // func_ov063_0215f1c0
};
class UnkSystem1_ov063_Derived1 : public UnkSystem1_ov063 {
public:
/* 00 (base) */
UnkSystem1_ov063_Derived1(unk32 param1, unk32 param2);
/* 24 */ virtual ~UnkSystem1_ov063_Derived1() override; // func_ov063_0215f29c
};