mirror of
https://github.com/zeldaret/st
synced 2026-08-06 18:02:49 -04:00
Decompile overlay 24 (Part 1) (#65)
* GameModeAdventure_001 OK * GameModeAdventure_024 17% * GameModeAdventure_024 73% * GameModeAdventure_024 99% * jp region differences * rename GameModeAdventure_024 and GameModeAdventure + UnkStruct_ov000_020d8660_024 OK * UnkActorSystem1OK * UnkActorSystem2 OK * delink more of ov024 & UnkStruct_027e0998_024 OK * improve instance stuff & UnkStruct_027e0cf8_024 OK * AdventureModeManager_160_024 OK & GameModeStartUp OK * fix regressions * fix regressions 2 * AdventureModeManager_170 OK * AdventureModeManager_174_Base OK * AdventureModeManager_174 OK * mark GameModeAdventure_024 as complete * AdventureModeManager_178 OK * AdventureModeManager_180 OK * AdventureModeManager_184_024 OK * AdventureModeManager_18C_024 OK & AdventureModeManager_190_024 OK * AdventureModeManager_15C_20_00 61% * AdventureModeManager_15C_20_00 OK * jp version differences * delink what's left in the overlay * fix regressions * AdventureModeManager_1B8_Base_024 98% * AdventureModeManager_1B8 48% and link AdventureModeManager_024 * AdventureModeManager_1B8_Base and AdventureModeManager_1B8 OK * oops * mark statics as local
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
|
||||
#include "Game/GameMode.hpp"
|
||||
// #include "Unknown/UnkStruct_0204a060.hpp"
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
class GameModeAdventure : public GameModeBase {
|
||||
public:
|
||||
GameModeAdventure();
|
||||
|
||||
// data_ov024_020d7b68 vtable
|
||||
/* 00 */ virtual ~GameModeAdventure() override;
|
||||
/* 08 */ virtual void vfunc_08() override; // Init
|
||||
/* 0C */ virtual void vfunc_0C() override; // Update
|
||||
/* 10 */ virtual void vfunc_10() override;
|
||||
/* 14 */ virtual void vfunc_14() override;
|
||||
/* 18 */ virtual void vfunc_18() override;
|
||||
/* 1C */ virtual void vfunc_1C() override;
|
||||
/* 20 */ virtual void vfunc_20() override;
|
||||
};
|
||||
@@ -26,6 +26,8 @@ public:
|
||||
void func_0201bfec();
|
||||
void func_0201c00c(unk32 param1, unk32 param2);
|
||||
void func_0201c068(unk16 param1);
|
||||
void func_0201c0c4(unk32 param1);
|
||||
void func_0201c0e4();
|
||||
void func_0201c19c();
|
||||
void func_0201c124(unk32 param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5);
|
||||
void func_0201c1e4();
|
||||
@@ -44,22 +46,67 @@ public:
|
||||
GameModeLinkListNode();
|
||||
~GameModeLinkListNode();
|
||||
|
||||
GameModeLinkListNode *GetNode() {
|
||||
GameModeLinkListNode *node = (GameModeLinkListNode *) this;
|
||||
if (node != NULL) {
|
||||
node = (GameModeLinkListNode *) ((u32 *) node + 1);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
GameModeLinkListNode *GetNext() {
|
||||
GameModeLinkListNode *next = mNext;
|
||||
if (next != NULL) {
|
||||
next = (GameModeLinkListNode *) ((u32 *) next - 1);
|
||||
}
|
||||
return next;
|
||||
}
|
||||
|
||||
GameModeLinkListNode *GetNext3() {
|
||||
GameModeLinkListNode *next = this;
|
||||
if (next != NULL) {
|
||||
next = (GameModeLinkListNode *) ((u32 *) next - 1);
|
||||
}
|
||||
return next;
|
||||
}
|
||||
|
||||
GameModeLinkListNode *GetUnk() {
|
||||
GameModeLinkListNode *prev = (GameModeLinkListNode *) *((u32 *) this + 2);
|
||||
if (prev != NULL) {
|
||||
prev = (GameModeLinkListNode *) ((u32 *) prev - 1);
|
||||
}
|
||||
return prev;
|
||||
}
|
||||
|
||||
GameModeLinkListNode *GetUnk2() {
|
||||
GameModeLinkListNode *prev = (GameModeLinkListNode *) *((u32 *) this + 1);
|
||||
if (prev != NULL) {
|
||||
prev = (GameModeLinkListNode *) ((u32 *) prev - 1);
|
||||
}
|
||||
return prev;
|
||||
}
|
||||
|
||||
GameModeLinkListNode *GetPrev() {
|
||||
GameModeLinkListNode *prev = mPrev;
|
||||
if (prev != NULL) {
|
||||
prev = (GameModeLinkListNode *) ((u32 *) prev - 1);
|
||||
}
|
||||
return prev;
|
||||
}
|
||||
|
||||
template <typename T> T *GetTarget() {
|
||||
return (T *) this;
|
||||
}
|
||||
|
||||
void func_020166cc(GameModeLinkListNode *param1);
|
||||
void func_020166f4(GameModeLinkListNode *param1);
|
||||
unk32 func_0201673c();
|
||||
|
||||
static void func_020166ac(GameModeLinkListNode *param1);
|
||||
};
|
||||
|
||||
template <typename T> class GameModeLinkList : public GameModeLinkListNode {
|
||||
public:
|
||||
GameModeLinkList *GetNext() {
|
||||
GameModeLinkListNode *next = mNext;
|
||||
if (next != NULL) {
|
||||
next = (GameModeLinkListNode *) ((u32 *) next - 1);
|
||||
}
|
||||
return (GameModeLinkList *) next;
|
||||
}
|
||||
|
||||
GameModeLinkList *GetNext2() {
|
||||
GameModeLinkListNode *next = (GameModeLinkListNode *) *((u8 **) this + 2);
|
||||
if (next != NULL) {
|
||||
@@ -68,12 +115,12 @@ public:
|
||||
return (GameModeLinkList *) next;
|
||||
}
|
||||
|
||||
GameModeLinkList *GetPrev() {
|
||||
GameModeLinkListNode *prev = mPrev;
|
||||
if (prev != NULL) {
|
||||
prev = (GameModeLinkListNode *) ((u32 *) prev - 1);
|
||||
}
|
||||
return (GameModeLinkList *) prev;
|
||||
GameModeLinkList *GetNextList() {
|
||||
return (GameModeLinkList *) this->GetNext();
|
||||
}
|
||||
|
||||
GameModeLinkList *GetPrevList() {
|
||||
return (GameModeLinkList *) this->GetPrev();
|
||||
}
|
||||
|
||||
T *GetTarget() {
|
||||
@@ -89,6 +136,14 @@ public:
|
||||
return (GameModeLinkList<GameModeManagerBase_104_0C> *) this;
|
||||
}
|
||||
|
||||
GameModeLinkListNode *GetUnk3() {
|
||||
GameModeLinkListNode *prev = (GameModeLinkListNode *) *((u32 *) this - 1);
|
||||
if (prev != NULL) {
|
||||
prev = (GameModeLinkListNode *) ((u32 *) prev - 1);
|
||||
}
|
||||
return prev;
|
||||
}
|
||||
|
||||
// data_ov000_020b1e48 vtable
|
||||
/* 00 */ virtual ~GameModeManagerBase_104_0C();
|
||||
/* 08 */ virtual void vfunc_08(void *param1);
|
||||
@@ -103,19 +158,30 @@ public:
|
||||
/* 0C */ GameModeManagerBase_104_0C mUnk_0C;
|
||||
};
|
||||
|
||||
class AdventureModeManager_160_14;
|
||||
class AdventureModeManager_160_18;
|
||||
class AdventureModeManager_1B8;
|
||||
|
||||
class GameModeManagerBase_104 : public GameModeManagerBase_104_00 {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
/* 18 */ bool mUnk_18;
|
||||
/* 19 */ bool mUnk_19;
|
||||
/* 1A */ bool mUnk_1A;
|
||||
/* 1B */ unk8 mUnk_1B;
|
||||
/* 1C */
|
||||
|
||||
GameModeLinkList<GameModeManagerBase_104> *GetOrigin() {
|
||||
return (GameModeLinkList<GameModeManagerBase_104> *) this;
|
||||
}
|
||||
|
||||
GameModeLinkListNode *GetNode() {
|
||||
GameModeLinkListNode *node = (GameModeLinkListNode *) this;
|
||||
if (node != NULL) {
|
||||
node = (GameModeLinkListNode *) ((u32 *) node + 1);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
GameModeManagerBase_104();
|
||||
|
||||
// data_ov000_020b1e60 vtable
|
||||
@@ -125,6 +191,8 @@ public:
|
||||
/* 10 */ virtual void vfunc_10(unk8 *param1);
|
||||
/* 14 */ virtual void vfunc_14(unk8 *param1);
|
||||
/* 18 */ virtual void vfunc_18(void);
|
||||
|
||||
void func_ov088_0217230c();
|
||||
};
|
||||
|
||||
class GameModeManagerBase : public SysObject {
|
||||
@@ -180,10 +248,11 @@ public:
|
||||
bool func_02018af0(GameModeLinkList<GameModeManagerBase_104> *param1);
|
||||
bool func_02018b54(GameModeLinkList<GameModeManagerBase_104> *param1);
|
||||
bool func_02018b90(GameModeLinkList<GameModeManagerBase_104> *param1, unk8 *param2);
|
||||
void func_02018bc4(unk32 param1);
|
||||
|
||||
// data_02044064 vtable
|
||||
/* 00 */ virtual void vfunc_00();
|
||||
/* 04 */ virtual void vfunc_04();
|
||||
/* 04 */ virtual void vfunc_04(unk32 param1);
|
||||
/* 08 */ virtual ~GameModeManagerBase();
|
||||
/* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2, unk32 param3);
|
||||
/* 14 */ virtual void vfunc_14();
|
||||
@@ -199,32 +268,29 @@ public:
|
||||
static GameModeManagerBase *Create(unk32 param1);
|
||||
};
|
||||
|
||||
class TitleScreen;
|
||||
class MainGame;
|
||||
|
||||
class TitleScreenManager_Base : public GameModeManagerBase {
|
||||
public:
|
||||
/* 000 (base) */
|
||||
/* 154 */ GameModeBase *mpGameMode;
|
||||
/* 154 */
|
||||
|
||||
TitleScreenManager_Base();
|
||||
|
||||
TitleScreen *GetTitleScreen() {
|
||||
return (TitleScreen *) this->mpGameMode;
|
||||
}
|
||||
|
||||
MainGame *GetMainGame() {
|
||||
return (MainGame *) this->mpGameMode;
|
||||
}
|
||||
|
||||
// data_ov000_020b1d14 vtable
|
||||
/* 08 */ virtual ~TitleScreenManager_Base() override;
|
||||
/* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2, unk32 param3) override;
|
||||
/* 38 */ virtual void vfunc_38(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
|
||||
/* 38 */ virtual void vfunc_38(u32 param1, u8 param2, unk16 param3, unk16 param4);
|
||||
/* 3C */ virtual void vfunc_3C();
|
||||
/* 40 */ virtual void vfunc_40();
|
||||
/* 44 */ virtual void vfunc_44();
|
||||
/* 48 */
|
||||
|
||||
void func_ov000_02060fc8(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
|
||||
};
|
||||
|
||||
extern TitleScreenManager_Base *data_027e0994;
|
||||
|
||||
class AdventureModeManager;
|
||||
|
||||
static inline AdventureModeManager *GetAdventureModeManager() {
|
||||
return (AdventureModeManager *) data_027e0994;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ public:
|
||||
GameModeStartUp();
|
||||
|
||||
// data_ov018_020c5b28 vtable
|
||||
/* 00 */ virtual ~GameModeStartUp() override {}
|
||||
// /* 00 */ virtual ~GameModeStartUp() override {}
|
||||
/* 0C */ virtual void vfunc_0C() override;
|
||||
/* 20 */ virtual void vfunc_20() override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user