Decompile overlay 24 (Part 1) (#65)

* GameModeAdventure_001 OK

* GameModeAdventure_024 17%

* GameModeAdventure_024 73%

* GameModeAdventure_024 99%

* jp region differences

* rename GameModeAdventure_024 and GameModeAdventure + UnkStruct_ov000_020d8660_024 OK

* UnkActorSystem1OK

* UnkActorSystem2 OK

* delink more of ov024 & UnkStruct_027e0998_024 OK

* improve instance stuff & UnkStruct_027e0cf8_024 OK

* AdventureModeManager_160_024 OK & GameModeStartUp OK

* fix regressions

* fix regressions 2

* AdventureModeManager_170 OK

* AdventureModeManager_174_Base OK

* AdventureModeManager_174 OK

* mark GameModeAdventure_024 as complete

* AdventureModeManager_178 OK

* AdventureModeManager_180 OK

* AdventureModeManager_184_024 OK

* AdventureModeManager_18C_024 OK & AdventureModeManager_190_024 OK

* AdventureModeManager_15C_20_00 61%

* AdventureModeManager_15C_20_00 OK

* jp version differences

* delink what's left in the overlay

* fix regressions

* AdventureModeManager_1B8_Base_024 98%

* AdventureModeManager_1B8 48% and link AdventureModeManager_024

* AdventureModeManager_1B8_Base and AdventureModeManager_1B8 OK

* oops

* mark statics as local
This commit is contained in:
Yanis
2026-05-18 21:14:27 +02:00
committed by GitHub
parent 0f74fd4201
commit 90203403dd
250 changed files with 10263 additions and 2619 deletions
+21
View File
@@ -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;
};
+95 -29
View File
@@ -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;
}
+1 -1
View File
@@ -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;