mirror of
https://github.com/zeldaret/st
synced 2026-05-23 06:54:21 -04:00
Decompile Title overlay (#20)
* Decompile Title overlay * math structs as cpp when applicable * fixes and improvements * regressions fix 1 * regressions fix 2
This commit is contained in:
@@ -14,40 +14,6 @@
|
||||
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:
|
||||
@@ -58,7 +24,7 @@ public:
|
||||
};
|
||||
|
||||
/* 0000 (vtable) */
|
||||
/* 0004 */ UnkStructSub4 mUnk_0004[30];
|
||||
/* 0004 */ UnkSubStruct19 mUnk_0004[30];
|
||||
/* 0E14 */ Sub5 mUnk_0E14[30];
|
||||
|
||||
// data_ov019_020d22a8 vtable
|
||||
@@ -104,8 +70,8 @@ public:
|
||||
|
||||
// data_ov019_020d22b8 vtable
|
||||
/* 00 */ virtual ~FileSelectSubScreen() override {}
|
||||
/* 08 */ virtual void vfunc_08() override;
|
||||
/* 10 */ virtual void vfunc_10() override;
|
||||
/* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override;
|
||||
/* 10 */ virtual void vfunc_10(unk8 *param1) override;
|
||||
};
|
||||
|
||||
class FileSelectManager : public GameModeManagerBase { // 0x02262dbc
|
||||
|
||||
@@ -55,44 +55,6 @@ enum FileSelectExitMode_ {
|
||||
/* 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) */
|
||||
@@ -293,7 +255,7 @@ public:
|
||||
|
||||
// data_ov019_020d1ec0 vtable
|
||||
/* 00 */ virtual ~FileSelectMain() override;
|
||||
/* 08 */ virtual void vfunc_08() override;
|
||||
/* 10 */ virtual void vfunc_10() override;
|
||||
/* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override;
|
||||
/* 10 */ virtual void vfunc_10(unk8 *param1) override;
|
||||
/* 18 */ virtual void vfunc_18(void) override;
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "FileSelect/Common.hpp"
|
||||
#include "Game/GameModeManager.hpp"
|
||||
#include "Unknown/Common.hpp"
|
||||
#include "global.h"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
@@ -21,41 +21,6 @@ enum FSMicTestState_ {
|
||||
/* 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];
|
||||
@@ -122,7 +87,7 @@ public:
|
||||
|
||||
// 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;
|
||||
/* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override;
|
||||
/* 10 */ virtual void vfunc_10(unk8 *param1) override;
|
||||
/* 14 */ virtual void vfunc_14(unk8 *param1) override;
|
||||
};
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "FileSelect/Common.hpp"
|
||||
#include "FileSelect/FileSelectMicTest.hpp"
|
||||
#include "Game/GameModeManager.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/Common.hpp"
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
@@ -166,8 +166,8 @@ public:
|
||||
|
||||
// data_ov019_020d2200 vtable
|
||||
/* 00 */ virtual ~FileSelectOptions() override;
|
||||
/* 08 */ virtual void vfunc_08() override;
|
||||
/* 10 */ virtual void vfunc_10() override;
|
||||
/* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override;
|
||||
/* 10 */ virtual void vfunc_10(unk8 *param1) override;
|
||||
|
||||
static GameModeManagerBase_104 *Create(void *param1, s32 saveSlotIndex);
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "FileSelect/Common.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/Common.hpp"
|
||||
#include "global.h"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
@@ -35,7 +35,7 @@ public:
|
||||
|
||||
// data_ov019_020d2224 vtable
|
||||
/* 00 */ virtual ~FileSelectOptionsManager() override;
|
||||
/* 08 */ virtual void vfunc_08() override;
|
||||
/* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override;
|
||||
|
||||
static GameModeManagerBase_104 *Create(void *param1, s32 saveSlotIndex);
|
||||
};
|
||||
|
||||
@@ -7,37 +7,6 @@
|
||||
#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:
|
||||
@@ -49,16 +18,16 @@ public:
|
||||
/* 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
|
||||
/* 2CC */ UnkSubStruct19 mUnk_2CC;
|
||||
/* 344 */ UnkSubStruct19 mUnk_344;
|
||||
/* 3BC */ UnkSubStruct19 mUnk_3BC;
|
||||
/* 434 */ UnkSubStruct19 mUnk_434;
|
||||
/* 4AC */ UnkSubStruct19 mUnk_4AC;
|
||||
/* 524 */ UnkSubStruct19 mUnk_524; // forest dungeon icon
|
||||
/* 59C */ UnkSubStruct19 mUnk_59C; // snow dungeon icon
|
||||
/* 614 */ UnkSubStruct19 mUnk_614; // ocean dungeon icon
|
||||
/* 68C */ UnkSubStruct19 mUnk_68C; // fire dungeon icon
|
||||
/* 704 */ UnkSubStruct19 mUnk_704; // desert dungeon icon
|
||||
/* 77C */ Vec2us mUnk_77C;
|
||||
// int pad[10];
|
||||
/* 780 */
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "Player/TouchControl.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "nitro/math.h"
|
||||
#include "types.h"
|
||||
@@ -8,7 +9,7 @@ class GameModeManagerBase_004 : public SysObject {
|
||||
public:
|
||||
void func_ov001_020bd734(unk32 *param1);
|
||||
void func_ov001_020bd784();
|
||||
void func_0201c00c(unk32 param1, unk32 param2, unk32 param3);
|
||||
void func_0201c00c(unk32 param1, unk32 param2);
|
||||
};
|
||||
|
||||
class GameModeManagerBase_104_04 {
|
||||
@@ -19,8 +20,10 @@ public:
|
||||
|
||||
void func_020166ac(void);
|
||||
void func_020166cc(void *param1);
|
||||
void func_020166f4(void *param1);
|
||||
|
||||
GameModeManagerBase_104_04();
|
||||
~GameModeManagerBase_104_04();
|
||||
};
|
||||
|
||||
class GameModeManagerBase_104_0C_04 {
|
||||
@@ -41,22 +44,30 @@ public:
|
||||
/* 0C */ virtual void vfunc_0C();
|
||||
};
|
||||
|
||||
struct GameModePTMFParam2Struct {
|
||||
/* 00 */ unk16 mUnk_00;
|
||||
/* 00 */ volatile u16 mButtons;
|
||||
};
|
||||
|
||||
class GameModeManagerBase_104 : public SysObject {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
/* 04 */ GameModeManagerBase_104_04 mUnk_04;
|
||||
/* 0C */ GameModeManagerBase_104_0C mUnk_0C;
|
||||
/* 18 */ u32 mUnk_18;
|
||||
/* 18 */ unk8 mUnk_18;
|
||||
/* 19 */ unk8 mUnk_19;
|
||||
/* 1A */ unk8 mUnk_1A;
|
||||
/* 1B */ unk8 mUnk_1B;
|
||||
/* 1C */
|
||||
|
||||
GameModeManagerBase_104();
|
||||
|
||||
// data_ov000_020b1e60 vtable
|
||||
/* 00 */ virtual ~GameModeManagerBase_104();
|
||||
/* 08 */ virtual void vfunc_08();
|
||||
/* 0C */ virtual void vfunc_0C();
|
||||
/* 10 */ virtual void vfunc_10();
|
||||
/* 14 */ virtual void vfunc_14();
|
||||
/* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl);
|
||||
/* 0C */ virtual void vfunc_0C(unk32 param1);
|
||||
/* 10 */ virtual void vfunc_10(unk8 *param1);
|
||||
/* 14 */ virtual void vfunc_14(unk8 *param1);
|
||||
/* 18 */ virtual void vfunc_18(void);
|
||||
|
||||
static GameModeManagerBase_104 *Create(void *param1, s32 saveSlotIndex);
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/GameMode.hpp"
|
||||
#include "Unknown/UnkStruct_0204a060.hpp"
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
class GameModeTitleScreen : public GameModeBase {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 04 */
|
||||
|
||||
GameModeTitleScreen();
|
||||
|
||||
// data_ov025_020c5a68 vtable
|
||||
/* 00 */ virtual ~GameModeTitleScreen() override;
|
||||
/* 08 */ virtual void vfunc_08(unk32 param1, unk32 param2, unk32 param3) override;
|
||||
/* 0C */ virtual void vfunc_0C() override;
|
||||
/* 10 */ virtual void vfunc_10() override;
|
||||
/* 14 */ virtual void vfunc_14() override;
|
||||
/* 18 */ virtual void vfunc_18() override;
|
||||
/* 1C */ virtual void vfunc_1C() override;
|
||||
/* 20 */ virtual void vfunc_20() override;
|
||||
};
|
||||
|
||||
extern void func_ov018_020c4b08(unk16 *param1);
|
||||
extern void func_ov018_020c4e8c(void);
|
||||
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include "types.h"
|
||||
|
||||
typedef u16 TouchFlags;
|
||||
enum TouchFlag_ {
|
||||
TouchFlag_TouchedNow = 0x0001,
|
||||
TouchFlag_UntouchedNow = 0x0002,
|
||||
TouchFlag_Repeat = 0x0004,
|
||||
};
|
||||
|
||||
#define CHECK_TOUCH_FLAGS(pTC, flags) ((pTC)->mFlags & (flags))
|
||||
|
||||
class TouchControl {
|
||||
public:
|
||||
/* 00 */ u16 mUnk_00;
|
||||
/* 00 */ u16 mUnk_02;
|
||||
/* 04 */ unk32 mUnk_04;
|
||||
/* 08 */ unk32 mUnk_08;
|
||||
/* 0C */ unk32 mUnk_0C;
|
||||
/* 10 */ unk32 mUnk_10;
|
||||
/* 14 */ unk32 mUnk_14;
|
||||
/* 18 */ unk32 mUnk_18;
|
||||
/* 1C */ unk32 mUnk_1C;
|
||||
/* 20 */ TouchFlags mFlags;
|
||||
};
|
||||
@@ -0,0 +1,221 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/GameModeManager.hpp"
|
||||
#include "Unknown/Common.hpp"
|
||||
#include "regs.h"
|
||||
#include "types.h"
|
||||
|
||||
extern "C" {
|
||||
void GX_SetGraphicsMode(unk32 param1, unk32 param2, unk32 param3);
|
||||
void GXS_SetGraphicsMode(unk32 param1);
|
||||
}
|
||||
|
||||
DECL_PTMF(TitleScreenPTMF, GameModePTMFParam2Struct *param1, TouchControl *pTouchControl);
|
||||
|
||||
typedef u32 TitleScreenState;
|
||||
enum TitleScreenState_ {
|
||||
TitleScreenState_None = 0, // does nothing
|
||||
TitleScreenState_IdleBeforeUI = 1,
|
||||
TitleScreenState_DrawUIOnInput = 2,
|
||||
TitleScreenState_DrawUIOnCsCmd = 3, //! TODO: definitely related to the cs, "cs cmd" is assumed
|
||||
TitleScreenState_IdleBeforeFileSelect = 4,
|
||||
TitleScreenState_ToFileSelect = 5,
|
||||
TitleScreenState_Max = 6
|
||||
};
|
||||
|
||||
class TitleScreenManager_Base : public GameModeManagerBase {
|
||||
public:
|
||||
/* 000 (base) */
|
||||
/* 154 */
|
||||
|
||||
TitleScreenManager_Base();
|
||||
|
||||
// data_ov000_020b1d14 vtable
|
||||
/* 08 */ virtual ~TitleScreenManager_Base() override;
|
||||
/* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2, unk32 param3) override;
|
||||
/* 38 */ virtual void vfunc_38();
|
||||
/* 3C */ virtual void vfunc_3C();
|
||||
/* 40 */ virtual void vfunc_40();
|
||||
/* 44 */ virtual void vfunc_44();
|
||||
/* 48 */
|
||||
};
|
||||
|
||||
class TitleScreen_Sub2_Base {
|
||||
public:
|
||||
/* 00 */ GameModeManagerBase_104_04 mUnk_00;
|
||||
/* 08 */
|
||||
|
||||
TitleScreen_Sub2_Base() {}
|
||||
};
|
||||
|
||||
class TitleScreen_Sub2 : public TitleScreen_Sub2_Base {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
/* 0C */ unk32 mUnk_0C;
|
||||
/* 10 */ bool mUnk_10;
|
||||
/* 11 */ unk8 mUnk_11;
|
||||
/* 12 */ unk8 mUnk_12;
|
||||
/* 13 */ unk8 mUnk_13;
|
||||
|
||||
TitleScreen_Sub2() :
|
||||
mUnk_0C(0),
|
||||
mUnk_10(false) {}
|
||||
|
||||
// data_ov025_020c5b24 vtable
|
||||
/* 00 */ virtual void vfunc_00();
|
||||
};
|
||||
|
||||
// similar to UnkSubStruct1
|
||||
class TitleScreen_Sub3 {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
/* 04 */ u16 mUnk_04;
|
||||
/* 04 */ u16 mUnk_06;
|
||||
/* 08 */ u16 mUnk_08; // 220
|
||||
/* 08 */ bool mUnk_0A; // 222
|
||||
/* 08 */ bool mUnk_0B; // 223
|
||||
/* 0C */ bool mUnk_0C; // 224
|
||||
/* 0C */ bool mUnk_0D;
|
||||
/* 0C */ bool mUnk_0E;
|
||||
/* 0C */ bool mUnk_0F;
|
||||
/* 10 */ unk32 mUnk_10;
|
||||
/* 14 */ unk32 mUnk_14;
|
||||
/* 18 */ unk32 mUnk_18;
|
||||
/* 1C */ unk32 mUnk_1C;
|
||||
/* 20 */ unk32 mUnk_20;
|
||||
|
||||
TitleScreen_Sub3();
|
||||
void func_0201effc(unk32 param1, unk32 param2, unk32 param3);
|
||||
bool func_0201f04c();
|
||||
|
||||
// data_020442d4 vtable
|
||||
/* 00 */ virtual void vfunc_00();
|
||||
/* 04 */ virtual void vfunc_04();
|
||||
/* 08 */ virtual void vfunc_08();
|
||||
/* 0C */
|
||||
|
||||
void UnkOperations() {
|
||||
int iVar1;
|
||||
|
||||
if (this->mUnk_08 != 0) {
|
||||
iVar1 = this->mUnk_08 - this->mUnk_0D;
|
||||
this->mUnk_08 = CLAMP(iVar1, 0, 0xFFFF);
|
||||
} else {
|
||||
if (this->mUnk_0A) {
|
||||
if (this->mUnk_04 < this->mUnk_06) {
|
||||
iVar1 = this->mUnk_04 + this->mUnk_0D;
|
||||
|
||||
if (iVar1 > this->mUnk_06) {
|
||||
iVar1 = this->mUnk_06;
|
||||
} else if (iVar1 < 0) {
|
||||
iVar1 = 0;
|
||||
}
|
||||
|
||||
this->mUnk_04 = iVar1;
|
||||
this->vfunc_00();
|
||||
|
||||
if (this->mUnk_04 >= this->mUnk_06) {
|
||||
this->mUnk_10 = this->mUnk_18;
|
||||
this->mUnk_0A = false;
|
||||
this->mUnk_0C = true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this->mUnk_0B && this->mUnk_04 != 0) {
|
||||
iVar1 = this->mUnk_04 - this->mUnk_0D;
|
||||
|
||||
if (iVar1 > this->mUnk_06) {
|
||||
iVar1 = this->mUnk_06;
|
||||
} else if (iVar1 < 0) {
|
||||
iVar1 = 0;
|
||||
}
|
||||
|
||||
this->mUnk_04 = iVar1;
|
||||
this->vfunc_04();
|
||||
|
||||
if (this->mUnk_04 == 0) {
|
||||
this->mUnk_10 = this->mUnk_14;
|
||||
this->mUnk_0B = false;
|
||||
this->mUnk_0C = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
class TitleScreen : public GameModeManagerBase_104 { // 0233c6d4
|
||||
public:
|
||||
/* 000 (base) */
|
||||
/* 01C */ TitleScreenState mState;
|
||||
/* 020 */ bool mShowUI;
|
||||
/* 021 */ u8 mUnk_021;
|
||||
/* 022 */ unk8 mUnk_022;
|
||||
/* 023 */ unk8 mUnk_023;
|
||||
/* 024 */ UnkSubStruct19 mUnk_024; // feather
|
||||
/* 09C */ UnkSubStruct19 mUnk_09C; // green rectangle
|
||||
/* 114 */ UnkSubStruct19 mUnk_114; // "touch screen!" text
|
||||
/* 18C */ UnkSubStruct19 mUnk_18C; // copyright text
|
||||
/* 204 */ TitleScreen_Sub2 mUnk_204;
|
||||
/* 218 */ TitleScreen_Sub3 mUnk_218;
|
||||
/* 23C */ UnkStruct_ov019_020d24c8_28_258 mUnk_23C;
|
||||
/* 254 */ UnkSubStruct19 mUnk_254; // logo shine
|
||||
/* 2CC */ UnkSubStruct19 mUnk_2CC; // logo shine outline (it's barely visible)
|
||||
/* 344 */ unk32 mUnk_344;
|
||||
/* 348 */
|
||||
|
||||
TitleScreen();
|
||||
|
||||
void func_ov025_020c4e54();
|
||||
void func_ov025_020c4e6c();
|
||||
void func_ov025_020c4e90();
|
||||
void func_ov025_020c4ea0(TitleScreenState state);
|
||||
void func_ov025_020c592c();
|
||||
void func_ov025_020c5964();
|
||||
void func_ov025_020c5988();
|
||||
|
||||
// data_ov025_020c5aec
|
||||
void func_ov025_020c5200(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl);
|
||||
void func_ov025_020c5204(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl);
|
||||
void func_ov025_020c5240(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl);
|
||||
void func_ov025_020c53d0(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl);
|
||||
void func_ov025_020c55a4(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl);
|
||||
void func_ov025_020c55e4(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl);
|
||||
|
||||
// data_ov025_020c5b30 vtable
|
||||
/* 00 */ virtual ~TitleScreen() override;
|
||||
/* 08 */ virtual void vfunc_08(GameModePTMFParam2Struct *param1, TouchControl *pTouchControl) override;
|
||||
/* 0C */ virtual void vfunc_0C(unk32 param1) override;
|
||||
/* 10 */ virtual void vfunc_10(unk8 *param1) override;
|
||||
/* 14 */ virtual void vfunc_14(unk8 *param1) override;
|
||||
};
|
||||
|
||||
class TitleScreenManager : public TitleScreenManager_Base {
|
||||
public:
|
||||
/* 000 (base) */
|
||||
/* 154 */ TitleScreen *mpTitleScreen;
|
||||
/* 158 */
|
||||
|
||||
TitleScreenManager(unk32 param1) NO_INLINE {
|
||||
this->mpTitleScreen = NULL;
|
||||
GX_SetGraphicsMode(1, 0, 1);
|
||||
GXS_SetGraphicsMode(5);
|
||||
REG_BG3CNT_SUB = (REG_BG3CNT_SUB & 0x0043) | 0x4E14;
|
||||
}
|
||||
|
||||
void func_ov025_020c4c20();
|
||||
void func_ov025_020c4c30();
|
||||
|
||||
// data_ov025_020c5a98 vtable
|
||||
/* 08 */ virtual ~TitleScreenManager() override;
|
||||
/* 14 */ virtual void vfunc_14() override;
|
||||
/* 18 */ virtual void vfunc_18() override;
|
||||
/* 24 */ virtual void vfunc_24() override;
|
||||
/* 28 */ virtual void vfunc_28(unk32 param1) override;
|
||||
/* 2C */ virtual void vfunc_2C(unk32 param1) override;
|
||||
/* 38 */ virtual void vfunc_38() override;
|
||||
|
||||
static TitleScreenManager *Create(unk32 param1);
|
||||
};
|
||||
|
||||
extern TitleScreenManager *data_027e0994;
|
||||
@@ -8,68 +8,6 @@
|
||||
|
||||
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 SysObject {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
@@ -172,6 +110,67 @@ public:
|
||||
pPos->y = local_4c.y;
|
||||
}
|
||||
}
|
||||
|
||||
void UnkOperations2(Vec2s *pPos, bool doSetPos) {
|
||||
int iVar1;
|
||||
|
||||
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;
|
||||
|
||||
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 {
|
||||
@@ -517,3 +516,103 @@ struct UnkResult {
|
||||
|
||||
UnkResult(const char *path);
|
||||
};
|
||||
|
||||
class UnkStruct_ov019_020d24c8_28_258 {
|
||||
public:
|
||||
/* 00 */ void *mUnk_00;
|
||||
/* 04 */ unk32 mUnk_04;
|
||||
/* 08 */ unk16 mUnk_08;
|
||||
/* 0A */ union { //! TODO: figure out
|
||||
Vec2s mPos;
|
||||
Vec2us mPosU;
|
||||
};
|
||||
/* 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() {
|
||||
this->mUnk_00 = NULL;
|
||||
this->mUnk_04 = 0;
|
||||
this->mPos.x = 0;
|
||||
this->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 UnkStructSub2 {
|
||||
public:
|
||||
UnkStructSub2();
|
||||
|
||||
/* 00 */ virtual void vfunc_00();
|
||||
/* 04 */ virtual void vfunc_04();
|
||||
};
|
||||
|
||||
// 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 */ u8 mUnk_28; // bool?
|
||||
/* 29 */ unk8 mUnk_29;
|
||||
/* 2A */ unk8 mUnk_2A;
|
||||
/* 2B */ unk8 mUnk_2B;
|
||||
/* 2C */ UnkStructSub2 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 */ unk16 mUnk_6C;
|
||||
/* 6E */ bool mUnk_6E;
|
||||
/* 6F */ unk8 mUnk_6F;
|
||||
/* 70 */ unk32 mUnk_70;
|
||||
/* 74 */ unk16 mUnk_74;
|
||||
/* 76 */ unk16 mUnk_76;
|
||||
/* 78 */
|
||||
|
||||
UnkSubStruct19();
|
||||
|
||||
void func_ov000_0206082c(unk32 param1, unk32 param2);
|
||||
void func_ov000_02060950();
|
||||
void func_ov000_020609b0();
|
||||
void func_ov000_020609c4(void);
|
||||
void func_ov000_02060a98();
|
||||
void func_ov000_02060ad0();
|
||||
unk32 func_ov000_02060af8(void);
|
||||
void func_ov000_02060b50();
|
||||
void func_ov000_02060b64(void);
|
||||
};
|
||||
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
class UnkStruct_02049be0 {
|
||||
public:
|
||||
/* 00 */ unk32 mUnk_00;
|
||||
|
||||
UnkStruct_02049be0();
|
||||
~UnkStruct_02049be0();
|
||||
|
||||
char *func_02014ff4();
|
||||
};
|
||||
|
||||
extern UnkStruct_02049be0 data_02049be0;
|
||||
@@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include "FileSelect/Common.hpp"
|
||||
#include "Game/GameModeManager.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/Common.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_02067bc4.hpp"
|
||||
#include "types.h"
|
||||
|
||||
|
||||
@@ -15,10 +15,12 @@ public:
|
||||
|
||||
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];
|
||||
/* 000 */ unk32 mUnk_00;
|
||||
/* 000 */ unk32 mUnk_04;
|
||||
/* 000 */ unk32 mUnk_08;
|
||||
/* 00C */ FileSelectManager_UnkDrawBase mUnk_0C[23];
|
||||
/* 120 */ u16 mUnk_120;
|
||||
/* 122 */ unk16 mUnk_122;
|
||||
|
||||
void func_ov000_02061098(void);
|
||||
void func_ov000_020611dc(void *param1, unk32 param2);
|
||||
|
||||
@@ -193,10 +193,7 @@ public:
|
||||
/* DF2 */ unk8 mUnk_DF2;
|
||||
/* DF3 */ unk8 mUnk_DF3;
|
||||
/* DF4 */ unk32 mUnk_DF4;
|
||||
/* DF8 */ unk8 mUnk_DF8;
|
||||
/* DF9 */ unk8 mUnk_DF9;
|
||||
/* DFA */ unk8 mUnk_DFA;
|
||||
/* DFB */ unk8 mUnk_DFB;
|
||||
/* DF8 */ unk32 mUnk_DF8;
|
||||
/* DFC */ unk8 mUnk_DFC;
|
||||
/* DFD */ unk8 mUnk_DFD;
|
||||
/* DFE */ unk8 mUnk_DFE;
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
#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;
|
||||
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/GameModeManager.hpp"
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
class UnkStruct_027e0954 {
|
||||
public:
|
||||
/* 00 */ unk32 mUnk_00;
|
||||
/* 04 */ unk32 mUnk_04;
|
||||
/* 08 */ unk32 mUnk_08;
|
||||
/* 0C */ unk32 mUnk_0C;
|
||||
/* 10 */ unk32 mUnk_10;
|
||||
/* 14 */ GameModeManagerBase_104_04 mUnk_14;
|
||||
|
||||
UnkStruct_027e0954();
|
||||
~UnkStruct_027e0954();
|
||||
};
|
||||
|
||||
extern UnkStruct_027e0954 *data_027e0954;
|
||||
@@ -1,12 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#include "System/SysNew.hpp"
|
||||
#include "types.h"
|
||||
|
||||
class UnkStruct_027e09a4 {
|
||||
class UnkStruct_027e09a4 : public SysObject {
|
||||
public:
|
||||
/* 00 */ unk32 mUnk_00;
|
||||
|
||||
~UnkStruct_027e09a4();
|
||||
|
||||
unk8 func_ov000_02070bd0(unk32, unk32);
|
||||
void func_ov000_020707a8(void *param1);
|
||||
void func_ov000_02070834(void *param1);
|
||||
void func_ov000_0207087c(unk32 param1);
|
||||
void func_ov000_020708d8(unk32 param1);
|
||||
void func_ov000_02070938(unk32 param1);
|
||||
void func_ov000_02070a4c(unk32 param1);
|
||||
|
||||
void func_ov017_020bb994(void *param1);
|
||||
void func_ov017_020bb994(unk32 param1);
|
||||
void func_ov017_020bb994(void *, void *);
|
||||
|
||||
static void func_ov025_020c4a60();
|
||||
};
|
||||
|
||||
extern UnkStruct_027e09a4 *data_027e09a4;
|
||||
|
||||
@@ -45,8 +45,9 @@ public:
|
||||
|
||||
UnkStruct_ov000_020b5214();
|
||||
|
||||
void func_ov000_0206db44(unk32 param1);
|
||||
void func_ov000_0206d6b4(unk32 param1, unk32 param2);
|
||||
void func_ov000_0206d83c(unk32 param1);
|
||||
void func_ov000_0206db44(unk32 param1);
|
||||
};
|
||||
|
||||
extern UnkStruct_ov000_020b5214 data_ov000_020b5214;
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
#define BTN_A (1 << 0) // 0x0001
|
||||
#define BTN_B (1 << 1) // 0x0002
|
||||
#define BTN_SELECT (1 << 2) // 0x0004
|
||||
#define BTN_START (1 << 3) // 0x0008
|
||||
#define BTN_DRIGHT (1 << 4) // 0x0010
|
||||
#define BTN_DLEFT (1 << 5) // 0x0020
|
||||
#define BTN_DUP (1 << 6) // 0x0040
|
||||
#define BTN_DDOWN (1 << 7) // 0x0080
|
||||
#define BTN_R (1 << 8) // 0x0100
|
||||
#define BTN_L (1 << 9) // 0x0200
|
||||
|
||||
#define CHECK_BUTTON_COMBO(value, btn) ((value) & (btn))
|
||||
+175
-26
@@ -10,6 +10,7 @@ extern "C" {
|
||||
|
||||
#define ABS(x) ((x) < 0 ? -(x) : (x))
|
||||
#define CLAMP(x, min, max) ((x) > (max) ? (max) : (x) < (min) ? (min) : (x))
|
||||
#define CLAMP2(x, min, max) ((x) > (max) ? (max) : (x) >= (min) ? (x) : (min))
|
||||
|
||||
// Q20.12 fixed point number
|
||||
typedef s32 q20;
|
||||
@@ -28,41 +29,154 @@ typedef s16 q4;
|
||||
#define SIN(n) (gSinCosTable[2 * ((n) >> 4)])
|
||||
#define COS(n) (gSinCosTable[2 * ((n) >> 4) + 1])
|
||||
|
||||
u32 func_01ff9f3c(s32 a, s32 b);
|
||||
s32 Atan2(s32 x, s32 y);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
u32 CoDivide64By32(u32 a, u32 b);
|
||||
u32 func_01ff98f0(u32 a, u32 b);
|
||||
u32 CoReciprocal(u32 x);
|
||||
u64 func_01ff992c(u32 x);
|
||||
u32 CoSqrt(u32 x);
|
||||
u32 CoInvSqrt(u32 x);
|
||||
u32 AwaitDivisionResult();
|
||||
u32 GetDivisionResult();
|
||||
void StartReciprocal(u32 x);
|
||||
void StartSqrt(u32 x);
|
||||
void func_01ff9ac4(u32 x);
|
||||
u32 AwaitSqrtResult();
|
||||
void StartDivision64By32(u32 a, u32 b);
|
||||
u32 CoDivide32(u32 a, u32 b);
|
||||
u32 CoRemainder(u32 a, u32 b);
|
||||
#ifdef __cplusplus
|
||||
struct Vec2b {
|
||||
/* 0 */ u8 x;
|
||||
/* 1 */ u8 y;
|
||||
/* 2 */
|
||||
|
||||
bool Approach(unk32 *src, unk32 dest, unk32 step);
|
||||
bool Approach_thunk(unk32 *src, unk32 dest, unk32 step);
|
||||
extern q4 gSinCosTable[];
|
||||
Vec2b() {}
|
||||
Vec2b(u8 X, u8 Y) {
|
||||
x = X;
|
||||
y = Y;
|
||||
}
|
||||
};
|
||||
|
||||
struct Vec2s {
|
||||
/* 0 */ s16 x;
|
||||
/* 1 */ s16 y;
|
||||
/* 2 */
|
||||
|
||||
Vec2s() {}
|
||||
Vec2s(s16 X, s16 Y) {
|
||||
x = X;
|
||||
y = Y;
|
||||
}
|
||||
};
|
||||
|
||||
struct Vec2us {
|
||||
/* 0 */ u16 x;
|
||||
/* 2 */ u16 y;
|
||||
/* 4 */
|
||||
|
||||
Vec2us() {}
|
||||
Vec2us(u16 X, u16 Y) {
|
||||
x = X;
|
||||
y = Y;
|
||||
}
|
||||
};
|
||||
|
||||
struct Vec2p {
|
||||
/* 0 */ q20 x;
|
||||
/* 4 */ q20 y;
|
||||
/* 8 */
|
||||
|
||||
Vec2p() {}
|
||||
Vec2p(q20 X, q20 Y) {
|
||||
x = X;
|
||||
y = Y;
|
||||
}
|
||||
};
|
||||
|
||||
struct Vec3p {
|
||||
/* 0 */ q20 x;
|
||||
/* 4 */ q20 y;
|
||||
/* 8 */ q20 z;
|
||||
/* c */
|
||||
|
||||
Vec3p() {}
|
||||
Vec3p(q20 X, q20 Y, q20 Z) {
|
||||
x = X;
|
||||
y = Y;
|
||||
z = Z;
|
||||
}
|
||||
};
|
||||
|
||||
struct Vec4p {
|
||||
/* 00 */ q20 x;
|
||||
/* 04 */ q20 y;
|
||||
/* 08 */ q20 z;
|
||||
/* 0c */ q20 w;
|
||||
/* 10 */
|
||||
|
||||
Vec4p() {}
|
||||
Vec4p(q20 X, q20 Y, q20 Z, q20 W) {
|
||||
x = X;
|
||||
y = Y;
|
||||
z = Z;
|
||||
w = W;
|
||||
}
|
||||
};
|
||||
|
||||
struct Mat2p {
|
||||
/* 00 */ Vec2p xColumn;
|
||||
/* 08 */ Vec2p yColumn;
|
||||
/* 10 */
|
||||
|
||||
Mat2p() {}
|
||||
Mat2p(Vec2p X, Vec2p Y) {
|
||||
xColumn = X;
|
||||
yColumn = Y;
|
||||
}
|
||||
};
|
||||
|
||||
struct Mat3p {
|
||||
/* 00 */ Vec3p xColumn;
|
||||
/* 0c */ Vec3p yColumn;
|
||||
/* 18 */ Vec3p zColumn;
|
||||
/* 24 */
|
||||
|
||||
Mat3p() {}
|
||||
Mat3p(Vec3p X, Vec3p Y, Vec3p Z) {
|
||||
xColumn = X;
|
||||
yColumn = Y;
|
||||
zColumn = Z;
|
||||
}
|
||||
};
|
||||
|
||||
struct Mat4x3p {
|
||||
/* 00 */ Vec3p xColumn;
|
||||
/* 0c */ Vec3p yColumn;
|
||||
/* 18 */ Vec3p zColumn;
|
||||
/* 24 */ Vec3p wColumn;
|
||||
/* 30 */
|
||||
|
||||
Mat4x3p() {}
|
||||
Mat4x3p(Vec3p X, Vec3p Y, Vec3p Z, Vec3p W) {
|
||||
xColumn = X;
|
||||
yColumn = Y;
|
||||
zColumn = Z;
|
||||
wColumn = W;
|
||||
}
|
||||
};
|
||||
|
||||
struct Mat4p {
|
||||
/* 00 */ Vec4p xColumn;
|
||||
/* 10 */ Vec4p yColumn;
|
||||
/* 20 */ Vec4p zColumn;
|
||||
/* 30 */ Vec4p wColumn;
|
||||
/* 40 */
|
||||
|
||||
Mat4p() {}
|
||||
Mat4p(Vec4p X, Vec4p Y, Vec4p Z, Vec4p W) {
|
||||
xColumn = X;
|
||||
yColumn = Y;
|
||||
zColumn = Z;
|
||||
wColumn = W;
|
||||
}
|
||||
};
|
||||
#else
|
||||
extern "C" {
|
||||
typedef struct Vec2b {
|
||||
/* 0 */ u8 x;
|
||||
/* 1 */ u8 y;
|
||||
/* 2 */
|
||||
} Vec2b;
|
||||
|
||||
typedef struct Vec2s {
|
||||
/* 0 */ s16 x;
|
||||
/* 1 */ s16 y;
|
||||
/* 2 */
|
||||
} Vec2s;
|
||||
|
||||
typedef struct Vec2us {
|
||||
/* 0 */ u16 x;
|
||||
/* 2 */ u16 y;
|
||||
@@ -118,6 +232,41 @@ typedef struct Mat4p {
|
||||
/* 30 */ Vec4p wColumn;
|
||||
/* 40 */
|
||||
} Mat4p;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct VEC2S {
|
||||
/* 0 */ s16 x;
|
||||
/* 1 */ s16 y;
|
||||
/* 2 */
|
||||
} VEC2S;
|
||||
|
||||
u32 func_01ff9f3c(s32 a, s32 b);
|
||||
s32 Atan2(s32 x, s32 y);
|
||||
|
||||
u32 CoDivide64By32(u32 a, u32 b);
|
||||
u32 func_01ff98f0(u32 a, u32 b);
|
||||
u32 CoReciprocal(u32 x);
|
||||
u64 func_01ff992c(u32 x);
|
||||
u32 CoSqrt(u32 x);
|
||||
u32 CoInvSqrt(u32 x);
|
||||
u32 AwaitDivisionResult();
|
||||
u32 GetDivisionResult();
|
||||
void StartReciprocal(u32 x);
|
||||
void StartSqrt(u32 x);
|
||||
void func_01ff9ac4(u32 x);
|
||||
u32 AwaitSqrtResult();
|
||||
void StartDivision64By32(u32 a, u32 b);
|
||||
u32 CoDivide32(u32 a, u32 b);
|
||||
u32 CoRemainder(u32 a, u32 b);
|
||||
|
||||
bool Approach(unk32 *src, unk32 dest, unk32 step);
|
||||
bool Approach_thunk(unk32 *src, unk32 dest, unk32 step);
|
||||
extern q4 gSinCosTable[];
|
||||
|
||||
extern const Vec3p gVec3p_ZERO;
|
||||
|
||||
|
||||
@@ -31,4 +31,6 @@
|
||||
#define REG_WININ_SUB REG_HALFWORD(ARM9_IO_BASE | 0x00001048)
|
||||
#define REG_WINOUT_SUB REG_HALFWORD(ARM9_IO_BASE | 0x0000104A)
|
||||
|
||||
#define REG_BG3CNT_SUB REG_HALFWORD(ARM9_IO_BASE | 0x0000100E)
|
||||
|
||||
#define SHARED_WORK_C3C REG_WORD(SHARED_WORK_BASE | 0xC3C)
|
||||
|
||||
+17
-15
@@ -23,30 +23,32 @@ typedef s32 unk32;
|
||||
#define CEIL_DIV(a, b) (((a) + (b) - 1) / (b))
|
||||
|
||||
#ifdef __cplusplus
|
||||
template <typename T> struct PTMF {
|
||||
typedef void (T::*PTMFCallback)();
|
||||
#define DECL_PTMF(name, ...) \
|
||||
template <typename T> struct name { \
|
||||
typedef void (T::*PTMFCallback)(__VA_ARGS__); \
|
||||
\
|
||||
PTMFCallback callback; \
|
||||
};
|
||||
|
||||
PTMFCallback callback;
|
||||
|
||||
#define CALL_PTMF(cls, data, ...) \
|
||||
#define CALL_PTMF(type, data, ...) \
|
||||
{ \
|
||||
PTMF<cls> &ptr = (data); \
|
||||
type &ptr = (data); \
|
||||
(this->*ptr.callback)(__VA_ARGS__); \
|
||||
}
|
||||
|
||||
#define STATIC_CALL_PTMF(cls, data, thisx, ...) \
|
||||
{ \
|
||||
PTMF<cls> &ptr = (data); \
|
||||
((thisx)->*ptr.callback)(__VA_ARGS__); \
|
||||
#define STATIC_CALL_PTMF(type, data, thisx, ...) \
|
||||
{ \
|
||||
type &ptr = (data); \
|
||||
((thisx)->*ptr.callback)(__VA_ARGS__); \
|
||||
}
|
||||
|
||||
#define STATIC_PTMFCALLBACK(cls, data, thisx, ...) \
|
||||
{ \
|
||||
PTMF<cls>::PTMFCallback &ptr = (data); \
|
||||
((thisx)->*ptr)(__VA_ARGS__); \
|
||||
#define STATIC_PTMFCALLBACK(type, data, thisx, ...) \
|
||||
{ \
|
||||
type::PTMFCallback &ptr = (data); \
|
||||
((thisx)->*ptr)(__VA_ARGS__); \
|
||||
}
|
||||
};
|
||||
|
||||
DECL_PTMF(PTMF);
|
||||
typedef void (*UnkCallback)(u16 param1);
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user