Merge remote-tracking branch 'zeldaret/main' into game-state

This commit is contained in:
Aetias
2025-07-06 11:30:55 +02:00
37 changed files with 561 additions and 162 deletions
+36 -50
View File
@@ -84,20 +84,6 @@ struct astruct_16 {
/* 2c */
}; // What is this struct?
// This might be FlagsUnk2
struct UnkStruct_02082348 {
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0c */ unk32 mUnk_0c;
/* 10 */ unk16 mUnk_10;
/* 12 */ u8 mUnk_12;
/* 13 */ u8 mUnk_13;
/* 14 */ u8 mUnk_14;
/* 15 */ u8 mUnk_15;
/* 16 */
};
struct UnkStruct_027e077c {
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
@@ -203,17 +189,17 @@ ARM void MapManager::func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_
ARM void MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) {
void *pvVar3;
unk32 uVar2;
UnkStruct_02082348 local_40[2];
FlagsUnk2 local_40[2];
local_40[1].mUnk_00 = 0x47;
local_40[1].mUnk_04 = 0;
local_40[1].mUnk_08 = 0;
local_40[1].mUnk_0c = -2;
local_40[1].mUnk_10 = 0;
local_40[1].mUnk_12 = -1;
local_40[1].mUnk_13 = 0;
local_40[1].mUnk_14 = 0;
local_40[1].mUnk_15 = 0;
local_40[1].mUnk_00.mUnk_00 = 0x47;
local_40[1].mUnk_04.mUnk_00 = 0;
local_40[1].mUnk_04.mUnk_04 = 0;
local_40[1].mUnk_04.mUnk_08 = -2;
local_40[1].mUnk_04.mUnk_0c = 0;
local_40[1].mUnk_04.mUnk_0e = -1;
local_40[1].mUnk_04.mUnk_0f = 0;
local_40[1].mUnk_04.mUnk_10 = 0;
local_40[1].mUnk_04.mUnk_11 = 0;
if (param_2 != 0) {
*param_3 = 0xb;
*(unk8 *) (param_3 + 1) = 2;
@@ -221,8 +207,8 @@ ARM void MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) {
} else {
this->func_ov00_02082348((unk32 *) &local_40[1]);
*param_3 = ((UnkStruct_027e0d38_UnkC *) &local_40[1])->func_ov000_020a5e9c();
*(unk8 *) (param_3 + 1) = local_40[1].mUnk_12;
*(u8 *) ((int) param_3 + 5) = local_40[1].mUnk_13;
*(unk8 *) (param_3 + 1) = local_40[1].mUnk_04.mUnk_0e;
*(u8 *) ((int) param_3 + 5) = local_40[1].mUnk_04.mUnk_0f;
}
param_3[2] = ((UnkStruct_027e0d38_UnkC *) ((unk32) (data_027e0d38->mUnk_28) + 0x1c))->func_ov000_020a5e9c();
*(u8 *) (param_3 + 4) = *(u8 *) ((int) data_027e0d38->mUnk_28 + 0x2e);
@@ -239,19 +225,19 @@ ARM void MapManager::func_ov00_0208210c(unk32 param_2, unk32 *param_3) {
param_3[0xb] = *(unk32 *) ((int) pvVar3 + 0x64);
*(unk16 *) ((int) param_3 + 0x16) = *(unk16 *) ((int) data_027e0d38->mUnk_28 + 0x68);
pvVar3 = data_027e0d38->mUnk_28;
local_40[0].mUnk_00 = *(unk32 *) ((int) pvVar3 + 0x70);
local_40[0].mUnk_04 = *(unk32 *) ((int) pvVar3 + 0x74);
local_40[0].mUnk_08 = *(unk32 *) ((int) pvVar3 + 0x78);
local_40[0].mUnk_0c = *(unk32 *) ((int) pvVar3 + 0x7c);
local_40[0].mUnk_10 = *(unk16 *) ((int) pvVar3 + 0x80);
local_40[0].mUnk_12 = *(u8 *) ((int) pvVar3 + 0x82);
local_40[0].mUnk_13 = *(u8 *) ((int) pvVar3 + 0x83);
local_40[0].mUnk_14 = *(u8 *) ((int) pvVar3 + 0x84);
local_40[0].mUnk_15 = *(u8 *) ((int) pvVar3 + 0x85);
local_40[0].mUnk_00.mUnk_00 = *(unk32 *) ((int) pvVar3 + 0x70);
local_40[0].mUnk_04.mUnk_00 = *(unk32 *) ((int) pvVar3 + 0x74);
local_40[0].mUnk_04.mUnk_04 = *(unk32 *) ((int) pvVar3 + 0x78);
local_40[0].mUnk_04.mUnk_08 = *(unk32 *) ((int) pvVar3 + 0x7c);
local_40[0].mUnk_04.mUnk_0c = *(unk16 *) ((int) pvVar3 + 0x80);
local_40[0].mUnk_04.mUnk_0e = *(u8 *) ((int) pvVar3 + 0x82);
local_40[0].mUnk_04.mUnk_0f = *(u8 *) ((int) pvVar3 + 0x83);
local_40[0].mUnk_04.mUnk_10 = *(u8 *) ((int) pvVar3 + 0x84);
local_40[0].mUnk_04.mUnk_11 = *(u8 *) ((int) pvVar3 + 0x85);
uVar2 = ((UnkStruct_027e0d38_UnkC *) &local_40[0])->func_ov000_020a5e9c();
param_3[0x70] = uVar2;
*(u8 *) ((int) param_3 + 0x1be) = local_40[0].mUnk_12;
*(u8 *) ((int) param_3 + 0x1bf) = local_40[0].mUnk_13;
*(u8 *) ((int) param_3 + 0x1be) = local_40[0].mUnk_04.mUnk_0e;
*(u8 *) ((int) param_3 + 0x1bf) = local_40[0].mUnk_04.mUnk_0f;
func_ov000_02096324(data_027e0f70, param_3);
func_ov000_0209d6e8(data_027e0f7c, param_3);
if (this->mCourse->mType != CourseType_TempleOfTheOceanKing) {
@@ -268,16 +254,16 @@ ARM void MapManager::func_ov00_0208230c(s32 *param_2) {
}
ARM void MapManager::func_ov00_02082348(unk32 *param_2) {
UnkStruct_02082348 unkStruct;
unkStruct.mUnk_00 = 0x47;
unkStruct.mUnk_04 = 0;
unkStruct.mUnk_08 = 0;
unkStruct.mUnk_0c = -2;
unkStruct.mUnk_10 = 0;
unkStruct.mUnk_12 = -1;
unkStruct.mUnk_13 = 0;
unkStruct.mUnk_14 = 0;
unkStruct.mUnk_15 = 0;
FlagsUnk2 unkStruct;
unkStruct.mUnk_00.mUnk_00 = 0x47;
unkStruct.mUnk_04.mUnk_00 = 0;
unkStruct.mUnk_04.mUnk_04 = 0;
unkStruct.mUnk_04.mUnk_08 = -2;
unkStruct.mUnk_04.mUnk_0c = 0;
unkStruct.mUnk_04.mUnk_0e = -1;
unkStruct.mUnk_04.mUnk_0f = 0;
unkStruct.mUnk_04.mUnk_10 = 0;
unkStruct.mUnk_04.mUnk_11 = 0;
this->func_ov00_0208230c((s32 *) &unkStruct);
func_ov000_02078bf0((s32 *) &unkStruct, param_2);
}
@@ -766,9 +752,9 @@ ARM void MapManager::func_ov00_0208315c(s32 *param_2, s32 *param_3) {
if (*piVar4 == -2 || piVar4 == piVar2) {
pvVar3 = data_027e0d38->mUnk_28;
local_2c.x = pvVar3->mUnk_5c[0];
local_2c.y = pvVar3->mUnk_5c[1];
local_2c.z = pvVar3->mUnk_5c[2];
local_2c.x = pvVar3->mUnk_5c.mUnk_00;
local_2c.y = pvVar3->mUnk_5c.mUnk_04;
local_2c.z = pvVar3->mUnk_5c.mUnk_08;
this->func_ov00_02083298((u32) * (u8 *) (*(s32 *) data_027e0d38->mUnk_28 + 0x56), &local_2c, param_2, param_3);
return;
}
+262 -12
View File
@@ -1,13 +1,263 @@
#include "Game/GameModeAdventure.hpp"
#include "global.h"
GameModeAdventure *GameModeAdventure::Create(unk32 param1) {}
GameModeAdventure::GameModeAdventure(unk32 param1) :
GameModePlay(param1) {}
void func_ov009_02112d68() {}
GameModeAdventure::~GameModeAdventure() {}
unk32 GameModeAdventure::vfunc_08(unk32 param1) {}
void GameModeAdventure::vfunc_0c(u16 *param1) {}
void GameModeAdventure::vfunc_10(u16 *param1) {}
void GameModeAdventure::vfunc_14(u16 *param1) {}
void GameModeAdventure::vfunc_1c() {}
void GameModeAdventure::vfunc_20() {}
#include "DTCM/UnkStruct_027e0d38.hpp"
#include "Game/Game.hpp"
#include "Game/GameModeAdventure.hpp"
#include "Message/MsgProc.hpp"
#include "Save/AdventureFlags.hpp"
#include "System/OverlayManager.hpp"
extern unk32 data_027e1044;
extern unk32 data_ov000_020eab04;
extern unk32 data_ov000_020eab08;
extern unk8 data_ov000_020eab09;
extern "C" void *func_ov003_020f4510();
extern "C" void func_ov000_02078b0c();
extern "C" void func_ov003_020f4534();
extern UnkStruct_0211ac0c data_ov009_0211f5dc;
extern "C" void func_ov029_0216dcf4(unk32 *, unk32);
extern unk32 data_ov022_0217a4ac;
extern "C" void func_ov015_0217707c(unk32 *);
extern unk32 data_027e1060;
extern "C" void func_ov005_0210274c(void *, unk32, u16 *);
extern "C" void func_ov005_021026f8(void *, unk32, u16 *);
extern "C" void func_ov005_02102828(void *, unk32, u16 *);
extern "C" void func_ov003_020f40c0(unk32 **, u16 *);
extern "C" void func_ov003_020f40e8(unk32 **, u16 *);
THUMB GameModeAdventure *GameModeAdventure::Create(unk32 param1) {
return new(data_027e0ce0[1], 4) GameModeAdventure(param1);
}
// non-matching
THUMB GameModeAdventure::GameModeAdventure(unk32 param1) :
GameModePlay(param1) {
FlagsUnk2 local_28;
this->mUnk_008 = new(data_027e0ce0[1], 4) UnkStruct_0211a9ac();
this->mUnk_00c = new(data_027e0ce0[1], 4) UnkStruct_020fadf4(this->mUnk_008);
this->mUnk_010 = new(data_027e0ce0[1], 4) UnkStruct_020f2978();
this->mUnk_014 = new(data_027e0ce0[1], 4) UnkStruct_0211ac0c(this->mUnk_010);
data_027e1044 = param1;
func_ov003_020f4510();
local_28.mUnk_00.mUnk_00 = 0x47;
local_28.mUnk_04.mUnk_00 = 0;
local_28.mUnk_04.mUnk_04 = 0;
local_28.mUnk_04.mUnk_08 = -2;
local_28.mUnk_04.mUnk_0c = 0;
local_28.mUnk_04.mUnk_0e = -1;
local_28.mUnk_04.mUnk_0f = 0;
local_28.mUnk_04.mUnk_10 = 0;
local_28.mUnk_04.mUnk_11 = 0;
if (gGame.mUnk_102 != 0) {
AdventureFlags::Get_FlagsUnk_00(0x17, &local_28);
} else {
if (gGame.mPrevModeId == 1) {
AdventureFlags::Get_FlagsUnk_00(0x17, &local_28);
} else if (data_ov000_020eab04 == 0x47) {
AdventureFlags::Get_FlagsUnk_00(0x01, &local_28);
} else {
unk32 index = AdventureFlags::func_ov00_02097ecc();
if (index != 0x21) {
AdventureFlags::Get_FlagsUnk_00(index, &local_28);
} else {
local_28.mUnk_00.mUnk_00 = data_ov000_020eab04;
local_28.mUnk_04.mUnk_0e = data_ov000_020eab08;
local_28.mUnk_04.mUnk_0f = data_ov000_020eab09;
}
}
}
local_28.func_ov004_02100ae0();
data_027e0d38->func_ov004_02100bcc();
gOverlayManager.LoadIfNotLoaded(OverlayIndex_2, OverlayId_05);
}
ARM UnkStruct_020f2978_00::~UnkStruct_020f2978_00() {}
// non-matching
THUMB GameModeAdventure::~GameModeAdventure() {
func_ov000_02078b0c();
func_ov003_020f4534();
data_027e1044 = 0;
if (this->mUnk_014 != NULL) {
this->mUnk_014->mUnk_04.Unregister();
delete this->mUnk_014;
}
delete this->mUnk_010;
delete this->mUnk_00c;
delete this->mUnk_008;
}
// non-matching
ARM unk32 GameModeAdventure::vfunc_08(unk32 param1) {
unk32 uVar2 = 0;
if (data_027e0d38->mUnk_14 == 1) {
uVar2 = data_027e0d38->func_ov005_02100b7c(param1);
} else {
if (data_027e0d38->mUnk_0c.func_ov000_020a5e9c() == 2) {
func_ov015_0217707c(&data_027e1060);
uVar2 = data_027e0d38->func_ov005_02100b7c(param1);
} else {
if (this->mUnk_00c->func_ov009_0211370c() == 0) {
if (this->mUnk_00c->func_ov009_021136c4() != 0) {
this->mUnk_008->func_ov002_020f50c0(param1);
} else {
if (data_ov009_0211f5dc.func_ov009_021136e8() != 0) {
if (this->mUnk_014->func_ov009_0211370c() == 0) {
if (this->mUnk_014->func_ov009_021136c4() != 0) {
uVar2 = this->mUnk_010->func_ov003_020f2a2c();
} else {
uVar2 = data_027e0d38->func_ov005_02100b7c(param1);
if (data_027e0d38->mUnk_14 == 1) {
return uVar2;
}
if (gOverlayManager.mLoadedOverlays[OverlayIndex_6] == OverlayId_29) {
func_ov029_0216dcf4(&data_ov022_0217a4ac, param1);
} else {
func_ov003_020f4060(&data_ov009_0211f5b4);
}
}
}
}
data_027e1054->func_ov003_020f4960();
}
data_ov009_0211f5dc.func_ov003_020fb148();
}
this->mUnk_00c->func_ov009_021135d0();
this->mUnk_014->func_ov009_0211372c();
data_027e0e28->func_ov000_0207bc9c();
}
}
return uVar2;
}
ARM void GameModeAdventure::vfunc_0c(u16 *param1) {
if (data_027e0d38->mUnk_14 == 1) {
func_ov005_021026f8(data_027e0d38->mUnk_24, data_027e0d38->mUnk_04, param1);
return;
}
if (this->mUnk_00c->func_ov009_0211370c() != 0) {
return;
}
if (this->mUnk_00c->func_ov009_021136c4() != 0) {
this->mUnk_008->func_ov002_020f5390(param1);
return;
}
if (data_ov009_0211f5dc.func_ov009_021136e8() == 0) {
return;
}
if (this->mUnk_014->func_ov009_021136e8() == 0) {
return;
}
func_ov005_021026f8(data_027e0d38->mUnk_24, data_027e0d38->mUnk_04, param1);
func_ov003_020f40c0(&data_ov009_0211f5b4, param1);
data_027e1054->func_ov003_020f4a5c();
}
ARM void GameModeAdventure::vfunc_10(u16 *param1) {
if (data_027e0d38->mUnk_14 == 1) {
func_ov005_0210274c(data_027e0d38->mUnk_24, data_027e0d38->mUnk_04, param1);
return;
}
if (this->mUnk_00c->func_ov009_0211370c() != 0) {
return;
}
if (this->mUnk_00c->func_ov009_021136c4() != 0) {
this->mUnk_008->func_ov002_020f5504(param1);
return;
}
if (this->mUnk_014->func_ov009_0211370c() != 0) {
return;
}
if (this->mUnk_014->func_ov009_021136c4() != 0) {
this->mUnk_010->func_ov003_020f2acc();
return;
}
func_ov005_0210274c(data_027e0d38->mUnk_24, data_027e0d38->mUnk_04, param1);
func_ov003_020f40e8(&data_ov009_0211f5b4, param1);
if (data_ov009_0211f5dc.func_ov009_021136c4() == 0) {
return;
}
data_ov009_0211f5dc.func_ov003_020fb258(param1);
}
ARM void GameModeAdventure::vfunc_14(u16 *param1) {
if (data_027e0d38->mUnk_14 == 1) {
func_ov005_02102828(data_027e0d38->mUnk_24, data_027e0d38->mUnk_04, param1);
return;
}
if (this->mUnk_00c->func_ov009_0211370c() != 0) {
return;
}
if (this->mUnk_00c->func_ov009_021136c4() != 0) {
this->mUnk_008->func_ov002_020f56c8(param1);
return;
}
if (data_ov009_0211f5dc.func_ov009_0211370c() != 0) {
return;
}
if (data_ov009_0211f5dc.func_ov009_021136c4() != 0) {
data_ov009_0211f5dc.func_ov003_020fb26c();
return;
}
if (this->mUnk_014->func_ov009_021136e8() == 0) {
return;
}
func_ov005_02102828(data_027e0d38->mUnk_24, data_027e0d38->mUnk_04, param1);
}
THUMB void GameModeAdventure::vfunc_1c() {
this->GameModePlay::vfunc_1c();
if (data_027e0d38->mUnk_14 != 1) {
this->mUnk_00c->func_ov003_020fae64();
data_ov009_0211f5dc.func_ov003_020faf90();
this->mUnk_014->func_ov009_0211ac2c();
data_027e1054->func_ov003_020f4678(1);
}
}
THUMB void GameModeAdventure::vfunc_20() {
if (data_027e0d38->mUnk_14 != 1) {
data_027e1054->func_ov003_02f46f8();
data_ov009_0211f5dc.func_ov003_020fb010();
}
this->GameModePlay::vfunc_20();
}
+6 -6
View File
@@ -1,8 +1,8 @@
#include "Game/GameMode.hpp"
GameMode::~GameMode() {}
void GameMode::func_0202c0b8() {}
void GameMode::vfunc_0c(u16 *param1) {}
void GameMode::vfunc_10(u16 *param1) {}
void GameMode::vfunc_14(u16 *param1) {}
void GameMode::vfunc_18() {}
THUMB GameMode::~GameMode() {}
THUMB void GameMode::func_0202c0b8() {}
THUMB void GameMode::vfunc_0c(u16 *param1) {}
THUMB void GameMode::vfunc_10(u16 *param1) {}
THUMB void GameMode::vfunc_14(u16 *param1) {}
THUMB void GameMode::vfunc_18() {}
+2 -2
View File
@@ -961,7 +961,7 @@ ARM bool UnkStruct_020397f8::func_0203c1a0() {
pVar1 = (s8 *) data_027e103c->func_ov000_020cef9c();
iVar3 = data_027e0f7c.func_ov000_0209d90c(pVar1[0x24F], 0);
data_027e1054.func_ov003_020f4760(iVar3[1], 0);
data_027e1054->func_ov003_020f4760(iVar3[1], 0);
data_ov000_020eec9c.func_ov000_020d77e4(6);
data_027e103c->func_ov000_020cfb58();
@@ -977,7 +977,7 @@ ARM bool UnkStruct_020397f8::func_0203c1a0() {
}
ARM bool UnkStruct_020397f8::func_0203c25c(UnkStruct_020397f8 *param1) {
if (data_027e1054.mUnk_00->mUnk_00->mUnk_95 != 0) {
if (data_027e1054->mUnk_00->mUnk_00->mUnk_95 != 0) {
return false;
}