mirror of
https://github.com/zeldaret/st
synced 2026-09-01 01:31:57 -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:
@@ -38,7 +38,6 @@ THUMB ActorManager *ActorManager::Create() {
|
||||
}
|
||||
|
||||
THUMB ActorManager::ActorManager() {
|
||||
this->SetInstance(this);
|
||||
this->mUnk_20 = 0;
|
||||
this->mUnk_21 = 0;
|
||||
this->mUnk_22 = 0;
|
||||
@@ -63,8 +62,6 @@ THUMB ActorManager::~ActorManager() {
|
||||
if (this->mActorTable != NULL) {
|
||||
delete this->mActorTable;
|
||||
}
|
||||
|
||||
this->ClearInstance();
|
||||
}
|
||||
|
||||
THUMB void ActorManager::func_ov001_020bafdc() {
|
||||
@@ -98,7 +95,7 @@ THUMB void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param
|
||||
int aligned0A = ALIGN_NEXT(unk_0A, 8);
|
||||
int aligned08 = ALIGN_NEXT(unk_08, 8);
|
||||
|
||||
int iVar5 = data_027e09a0->func_ov000_020702a8(data_027e09a4->mSceneIndex)->mUnk_20;
|
||||
int iVar5 = data_027e09a0->func_ov000_020702a8(data_027e09a4->mUnk_00.mSceneIndex)->mUnk_20;
|
||||
|
||||
s32 allocCount;
|
||||
if (data_027e09a4->mUnk_60 == 0) {
|
||||
@@ -124,7 +121,7 @@ THUMB void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param
|
||||
unk32 iVar5;
|
||||
|
||||
if (func_01ffd3b0() != 0) {
|
||||
iVar5 = data_027e09a4->mSceneIndex;
|
||||
iVar5 = data_027e09a4->mUnk_00.mSceneIndex;
|
||||
|
||||
if (iVar5 == SceneIndex_f_rabbit) {
|
||||
this->mUnk_34 = 0xFFFFECCD; // ~0x1332
|
||||
@@ -154,8 +151,8 @@ THUMB void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param
|
||||
auStack_28.func_ov000_02059270(0x24, "drop4", 0x2D200000);
|
||||
auStack_28.func_ov000_02059270(0x25, "drop5", 0x2D200000);
|
||||
|
||||
CourseEntry *ptr = data_027e09a0->func_ov000_0207029c(iVar5);
|
||||
if ((ptr->mUnk_1D - 1) == 1) {
|
||||
CourseEntry *ptr = data_027e09a0->GetCourseEntry(iVar5);
|
||||
if ((ptr->unk_1D - 1) == 1) {
|
||||
auStack_28.func_ov000_02059270(0x38, "mic_0", 0x35B00000);
|
||||
auStack_28.func_ov000_02059270(0x39, "mic_1", 0x35B00000);
|
||||
auStack_28.func_ov000_02059270(0x3A, "mic_on", 0x35B00000);
|
||||
@@ -199,7 +196,7 @@ THUMB void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param
|
||||
}
|
||||
}
|
||||
|
||||
if (data_027e09a4->UnkCheck(data_027e09a4->mSceneIndex)) {
|
||||
if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00.mSceneIndex)) {
|
||||
func_ov071_0215e8d4();
|
||||
}
|
||||
|
||||
@@ -212,7 +209,7 @@ THUMB void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param
|
||||
THUMB void ActorManager::func_ov001_020bb414(ActorManager *instance) {
|
||||
func_ov001_020ba59c(&data_0204999c);
|
||||
|
||||
if (data_027e09a4->UnkCheck(data_027e09a4->mSceneIndex)) {
|
||||
if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00.mSceneIndex)) {
|
||||
instance->func_ov001_020bb844();
|
||||
}
|
||||
|
||||
@@ -225,7 +222,7 @@ THUMB void ActorManager::func_ov001_020bb414(ActorManager *instance) {
|
||||
}
|
||||
|
||||
THUMB void ActorManager::func_ov001_020bb488() {
|
||||
if (data_027e09a4->mUnk_0C != 1) {
|
||||
if (data_027e09a4->IsNotCutscene()) {
|
||||
switch (data_027e09a4->func_01ffd400()->mUnk_10) {
|
||||
case 0x00:
|
||||
case 0x01:
|
||||
@@ -244,7 +241,7 @@ THUMB void ActorManager::func_ov001_020bb488() {
|
||||
data_027e0cf4->func_ov021_020f8cdc();
|
||||
}
|
||||
|
||||
if (data_027e09a4->UnkCheck(data_027e09a4->mSceneIndex)) {
|
||||
if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00.mSceneIndex)) {
|
||||
data_027e0d70->func_ov071_0215e8f8();
|
||||
}
|
||||
}
|
||||
@@ -264,7 +261,7 @@ THUMB void ActorManager::func_ov001_020bb548() {
|
||||
i++;
|
||||
}
|
||||
|
||||
unk32 value = data_027e09a4->mSceneIndex;
|
||||
unk32 value = data_027e09a4->mUnk_00.mSceneIndex;
|
||||
if (data_027e09a4->UnkCheck(value)) {
|
||||
data_027e0d70->func_ov071_0215e9ac();
|
||||
|
||||
@@ -321,7 +318,7 @@ THUMB void ActorManager::func_ov001_020bb6b0(UnkStruct_SceneChange1 *param1) {
|
||||
for (int i = 0; i < ARRAY_LEN(data_ov000_020ab1ac); i++) {
|
||||
UnkStruct_ov000_020ab1ac *pEntry = &data_ov000_020ab1ac[i];
|
||||
|
||||
if (pEntry->mUnk_00 == iVar5->mActorId && pEntry->mUnk_04 == param1->mNextSceneIndex &&
|
||||
if (pEntry->mUnk_00 == iVar5->mActorId && pEntry->mUnk_04 == param1->mSceneIndex &&
|
||||
pEntry->mUnk_08 == param1->mRoomIndex) {
|
||||
(*piVar1)->mUnk_39 = 1;
|
||||
(*piVar1)->vfunc_08();
|
||||
@@ -337,7 +334,7 @@ THUMB void ActorManager::func_ov001_020bb6b0(UnkStruct_SceneChange1 *param1) {
|
||||
THUMB bool ActorManager::func_ov001_020bb728(s32 param1) {
|
||||
UnkStruct_SceneChange1 *piVar1 = data_027e09a4->func_ov000_02070560();
|
||||
|
||||
if (piVar1->mNextSceneIndex != SceneIndex_f_water || piVar1->mRoomIndex != 0) {
|
||||
if (piVar1->mSceneIndex != SceneIndex_f_water || piVar1->mRoomIndex != 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -402,11 +399,4 @@ THUMB void ActorManager::func_ov001_020bb844() {
|
||||
}
|
||||
}
|
||||
|
||||
THUMB void ActorManager::SetInstance(ActorManager *instance) {
|
||||
gpActorManager = instance;
|
||||
}
|
||||
|
||||
THUMB int ActorManager::ClearInstance() {
|
||||
gpActorManager = NULL;
|
||||
//! @bug: the function expects a return value (though it seems unused)
|
||||
}
|
||||
DECL_INSTANCE(ActorManager, gpActorManager);
|
||||
|
||||
@@ -12,7 +12,7 @@ CargoManager::CargoManager() {
|
||||
CargoManager::~CargoManager() {}
|
||||
|
||||
void CargoManager::func_ov001_020bf830() {
|
||||
if (this->mCargo.mAmount == 0 && data_027e09a4->func_01ffd3d8() == 0) {
|
||||
if (this->mCargo.mAmount == 0 && !data_027e09a4->func_01ffd3d8()) {
|
||||
this->mCargo.mType = CargoType_None;
|
||||
}
|
||||
|
||||
@@ -20,13 +20,6 @@ void CargoManager::func_ov001_020bf830() {
|
||||
this->mUnk_1C = 0;
|
||||
}
|
||||
|
||||
void CargoManager::SetInstance(CargoManager *pInstance) {
|
||||
gpCargoManager = pInstance;
|
||||
}
|
||||
|
||||
bool CargoManager::ClearInstance() {
|
||||
gpCargoManager = NULL;
|
||||
//! @bug: missing return
|
||||
}
|
||||
DECL_INSTANCE(CargoManager, gpCargoManager);
|
||||
|
||||
THUMB_END
|
||||
|
||||
@@ -0,0 +1,366 @@
|
||||
#include "Game/Game.hpp"
|
||||
#include "Game/GameModeAdventure.hpp"
|
||||
#include "MainGame/AdventureMode.hpp"
|
||||
#include "Save/SaveManager.hpp"
|
||||
#include "System/OverlayManager.hpp"
|
||||
#include "Unknown/UnkStruct_0204a110.hpp"
|
||||
#include "Unknown/UnkStruct_020d8698.hpp"
|
||||
#include "Unknown/UnkStruct_027e0998.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a4.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cf8.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b4f70.hpp"
|
||||
#include "Unknown/UnkStruct_ov024_020d8694.hpp"
|
||||
#include "Unknown/UnkStruct_ov024_020d86a0.hpp"
|
||||
#include "Unknown/UnkStruct_ov088_02177218.hpp"
|
||||
|
||||
#include <dsprot.h>
|
||||
|
||||
extern "C" {
|
||||
void *func_ov024_020d1658();
|
||||
void *func_ov000_02066294();
|
||||
void *func_ov024_020ccd1c();
|
||||
void GX_SetGraphicsMode(unk32 param1, unk32 param2, unk32 param3);
|
||||
void GXS_SetGraphicsMode(unk32 param1);
|
||||
}
|
||||
|
||||
extern int data_ov001_020c27a8;
|
||||
extern int data_ov001_020c276c;
|
||||
|
||||
THUMB_BEGIN
|
||||
|
||||
AdventureModeManager *AdventureModeManager::Create(unk32 param1) {
|
||||
return new(HeapIndex_1) AdventureModeManager(param1);
|
||||
}
|
||||
|
||||
AdventureModeManager::AdventureModeManager(unk32 param1) {
|
||||
this->mUnk_154 = 0;
|
||||
this->mUnk_158 = &this->mUnk_104;
|
||||
this->mUnk_15C = new(HeapIndex_1) AdventureModeManager_15C();
|
||||
this->mUnk_160 = NULL;
|
||||
this->mUnk_164 = NULL;
|
||||
this->mUnk_168 = NULL;
|
||||
this->mUnk_16C = NULL;
|
||||
this->mUnk_174 = NULL;
|
||||
this->mUnk_178 = NULL;
|
||||
this->mUnk_17C = NULL;
|
||||
this->mUnk_180 = NULL;
|
||||
this->mUnk_184 = NULL;
|
||||
this->mUnk_188 = NULL;
|
||||
this->mUnk_18C = NULL;
|
||||
this->mUnk_190 = NULL;
|
||||
this->mUnk_194 = NULL;
|
||||
this->mUnk_198 = NULL;
|
||||
this->mUnk_19C = NULL;
|
||||
this->mUnk_1A0 = NULL;
|
||||
this->mUnk_1A4 = NULL;
|
||||
this->mUnk_1A8 = NULL;
|
||||
this->mUnk_1AC = new(HeapIndex_1) AdventureModeManager_1AC();
|
||||
this->mUnk_1B0 = NULL;
|
||||
this->mUnk_1B4 = false;
|
||||
this->mUnk_1B5 = false;
|
||||
this->mUnk_1B8 = NULL;
|
||||
this->mUnk_1BC = NULL;
|
||||
this->mUnk_1C0 = 0;
|
||||
this->mAllowMapPaint = false;
|
||||
|
||||
UnkStruct_027e0998::Create();
|
||||
func_ov024_020d1658();
|
||||
|
||||
this->mUnk_170 = new(HeapIndex_1) AdventureModeManager_170(&this->mUnk_104);
|
||||
|
||||
GX_SetGraphicsMode(1, 0, 1);
|
||||
GXS_SetGraphicsMode(5);
|
||||
|
||||
this->mUnk_1C4.sceneIndex = SceneIndex_None;
|
||||
this->mUnk_1C4.unk_04 = 0;
|
||||
this->mUnk_1C4.unk_06 = -1;
|
||||
}
|
||||
|
||||
void AdventureModeManager::vfunc_10(unk32 param1, unk32 param2, unk32 param3) {
|
||||
data_027e0998->func_ov000_02061760();
|
||||
}
|
||||
|
||||
void AdventureModeManager::func_ov001_020c00d4() {
|
||||
GetAdventureModeManager()->mUnk_16C = new(HeapIndex_1) AdventureModeManager_16C(&GetAdventureModeManager()->mUnk_104);
|
||||
}
|
||||
|
||||
void AdventureModeManager::func_ov001_020c0104() {
|
||||
GetAdventureModeManager()->mUnk_1B8 = new(HeapIndex_1) AdventureModeManager_1B8(2, 1, 1);
|
||||
GetAdventureModeManager()->mUnk_1B8->mUnk_08 = 1;
|
||||
GetAdventureModeManager()->mUnk_164 =
|
||||
new(HeapIndex_1) AdventureModeManager_164(&GetAdventureModeManager()->mUnk_104, &GetAdventureModeManager()->mUnk_004);
|
||||
GetAdventureModeManager()->mUnk_19C = new(HeapIndex_1) AdventureModeManager_19C(&GetAdventureModeManager()->mUnk_104);
|
||||
|
||||
if (DSProt_DetectNotDummy(NULL) != 0) {
|
||||
DSProt_DetectNotFlashcart(AdventureModeManager::func_ov001_020c00d4);
|
||||
}
|
||||
}
|
||||
|
||||
void AdventureModeManager::func_ov001_020c0194() {
|
||||
GetAdventureModeManager()->mUnk_1B8 = new(HeapIndex_1) AdventureModeManager_1B8(2, 1, 1);
|
||||
GetAdventureModeManager()->mUnk_1B8->mUnk_08 = 1;
|
||||
GetAdventureModeManager()->mUnk_164 =
|
||||
new(HeapIndex_1) AdventureModeManager_164(&GetAdventureModeManager()->mUnk_104, &GetAdventureModeManager()->mUnk_004);
|
||||
GetAdventureModeManager()->mUnk_19C = new(HeapIndex_1) AdventureModeManager_19C(&GetAdventureModeManager()->mUnk_104);
|
||||
}
|
||||
|
||||
void AdventureModeManager::vfunc_14() {
|
||||
data_027e09a4->func_ov000_0207056c();
|
||||
UnkStruct_027e0cf8::Create();
|
||||
|
||||
if (data_027e09a4->func_01ffd3d8()) {
|
||||
this->mUnk_004.func_ov001_020bd734(&data_ov001_020c276c);
|
||||
|
||||
if (data_027e09a4->IsNotCutscene()) {
|
||||
if (data_027e09a4->IsDarkRealm()) {
|
||||
this->mUnk_004.func_0201c00c(6, 1);
|
||||
} else {
|
||||
this->mUnk_004.func_0201c00c(4, 1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this->mUnk_004.func_ov001_020bd734(&data_ov001_020c27a8);
|
||||
if (data_027e09a4->IsNotCutscene()) {
|
||||
this->mUnk_004.func_0201c00c(0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (data_027e09a4->func_01ffd3d8()) {
|
||||
if (DSProt_DetectEmulator(AdventureModeManager::func_ov001_020c0194) == 0) {
|
||||
AdventureModeManager::func_ov001_020c0104();
|
||||
}
|
||||
} else {
|
||||
if (gOverlayManager.mLoadedOverlays[OverlaySlot_9] == OverlayIndex_PlayerSub) {
|
||||
this->mUnk_1BC = new(HeapIndex_1) AdventureModeManager_1BC();
|
||||
}
|
||||
|
||||
this->mUnk_1B8 = new(HeapIndex_1) AdventureModeManager_1B8(2, 1, 0);
|
||||
|
||||
if (data_027e09a4->IsNotCutscene()) {
|
||||
this->mUnk_168 = new(HeapIndex_1) AdventureModeManager_168(&this->mUnk_104);
|
||||
}
|
||||
|
||||
this->mUnk_188 = new(HeapIndex_1) AdventureModeManager_188(&this->mUnk_104);
|
||||
|
||||
if (gOverlayManager.mLoadedOverlays[OverlaySlot_6] == OverlayIndex_Land) {
|
||||
this->mUnk_194 = new(HeapIndex_1) AdventureModeManager_194(&this->mUnk_104);
|
||||
}
|
||||
|
||||
if (gOverlayManager.mLoadedOverlays[OverlaySlot_7] == OverlayIndex_Field) {
|
||||
this->mUnk_198 = new(HeapIndex_1) AdventureModeManager_198(&this->mUnk_104);
|
||||
}
|
||||
|
||||
if (gOverlayManager.mLoadedOverlays[OverlaySlot_8] == OverlayIndex_Village) {
|
||||
this->mUnk_17C = new(HeapIndex_1) AdventureModeManager_17C(&this->mUnk_104);
|
||||
this->mUnk_1A0 = new(HeapIndex_1) AdventureModeManager_1A0(&this->mUnk_104);
|
||||
this->mUnk_1A4 = new(HeapIndex_1) AdventureModeManager_1A4(&this->mUnk_104);
|
||||
}
|
||||
|
||||
if (data_027e09a4->IsCutscene()) {
|
||||
this->mUnk_1A8 = new(HeapIndex_1) AdventureModeManager_1A8(&this->mUnk_104);
|
||||
}
|
||||
|
||||
AdventureModeManager_1B0 *var_r5 = new(HeapIndex_1) AdventureModeManager_1B0();
|
||||
this->mUnk_1B0 = var_r5;
|
||||
|
||||
if (data_027e09a4->IsNotCutscene()) {
|
||||
//! TODO: fake match?
|
||||
GameModeLinkListNode *pList = (GameModeLinkListNode *) &this->mUnk_104;
|
||||
((GameModeLinkListNode *) ((u8 *) pList + 4))->func_020166cc(var_r5->GetNode());
|
||||
|
||||
var_r5->vfunc_18();
|
||||
this->mUnk_1B5 = true;
|
||||
}
|
||||
|
||||
if (data_027e09a4->IsCutscene()) {
|
||||
this->mUnk_104.func_ov088_0217230c();
|
||||
}
|
||||
|
||||
func_ov000_02066294();
|
||||
}
|
||||
|
||||
func_ov024_020ccd1c();
|
||||
|
||||
if (data_027e09a4->IsNotCutscene()) {
|
||||
GameModeManagerBase_104 *ptr = &this->mUnk_104;
|
||||
GameModeLinkListNode *origin = data_ov024_020d8698->GetOrigin();
|
||||
ptr->mList.func_020166cc(data_ov024_020d8698->GetNode());
|
||||
((UnkStruct_020d8698 *) origin)->vfunc_18();
|
||||
this->mUnk_1B4 = true;
|
||||
}
|
||||
|
||||
this->mUnk_160 = new(HeapIndex_1) AdventureModeManager_160(&this->mUnk_104, this->mUnk_1B8);
|
||||
this->mUnk_184 = new(HeapIndex_1) AdventureModeManager_184(&this->mUnk_104);
|
||||
this->mUnk_174 = new(HeapIndex_1) AdventureModeManager_174(&this->mUnk_104);
|
||||
this->mUnk_178 = new(HeapIndex_1) AdventureModeManager_178(&this->mUnk_104);
|
||||
this->mUnk_180 = new(HeapIndex_1) AdventureModeManager_180(&this->mUnk_104);
|
||||
this->mUnk_18C = new(HeapIndex_1) AdventureModeManager_18C(&this->mUnk_104);
|
||||
this->mUnk_190 = new(HeapIndex_1) AdventureModeManager_190(&this->mUnk_104);
|
||||
|
||||
UnkStruct_ov024_020d8694::Create(&this->mUnk_004);
|
||||
data_ov024_020d86a0->func_ov001_020bd818();
|
||||
}
|
||||
|
||||
void AdventureModeManager::vfunc_18() {
|
||||
delete this->mUnk_1B8;
|
||||
this->mUnk_1B8 = NULL;
|
||||
|
||||
delete this->mUnk_160;
|
||||
this->mUnk_160 = NULL;
|
||||
|
||||
delete this->mUnk_190;
|
||||
this->mUnk_190 = NULL;
|
||||
|
||||
delete this->mUnk_18C;
|
||||
this->mUnk_18C = NULL;
|
||||
|
||||
delete this->mUnk_180;
|
||||
this->mUnk_180 = NULL;
|
||||
|
||||
delete this->mUnk_17C;
|
||||
this->mUnk_17C = NULL;
|
||||
|
||||
delete this->mUnk_178;
|
||||
this->mUnk_178 = NULL;
|
||||
|
||||
delete this->mUnk_174;
|
||||
this->mUnk_174 = NULL;
|
||||
|
||||
delete this->mUnk_184;
|
||||
this->mUnk_184 = NULL;
|
||||
|
||||
AdventureModeManager::func_ov001_020c083c();
|
||||
if (data_ov024_020d8698 != NULL) {
|
||||
AdventureModeManager::func_ov001_020c0894();
|
||||
this->mUnk_1B4 = false;
|
||||
}
|
||||
|
||||
if (data_027e09a4->func_01ffd3d8()) {
|
||||
delete this->mUnk_16C;
|
||||
this->mUnk_16C = NULL;
|
||||
|
||||
delete this->mUnk_19C;
|
||||
this->mUnk_19C = NULL;
|
||||
|
||||
delete this->mUnk_164;
|
||||
this->mUnk_164 = NULL;
|
||||
} else {
|
||||
if (data_027e09a4->IsCutscene()) {
|
||||
AdventureModeManager::func_ov001_020c0824();
|
||||
}
|
||||
|
||||
delete this->mUnk_1B0;
|
||||
this->mUnk_1B0 = NULL;
|
||||
this->mUnk_1B5 = false;
|
||||
|
||||
if (this->mUnk_168 != NULL) {
|
||||
delete this->mUnk_168;
|
||||
this->mUnk_168 = NULL;
|
||||
}
|
||||
|
||||
delete this->mUnk_188;
|
||||
this->mUnk_188 = NULL;
|
||||
|
||||
AdventureModeManager::func_ov001_020c0854();
|
||||
|
||||
delete this->mUnk_1BC;
|
||||
this->mUnk_1BC = NULL;
|
||||
|
||||
delete this->mUnk_198;
|
||||
this->mUnk_198 = NULL;
|
||||
|
||||
delete this->mUnk_194;
|
||||
this->mUnk_194 = NULL;
|
||||
|
||||
if (gOverlayManager.mLoadedOverlays[8] == OverlayIndex_Village) {
|
||||
delete this->mUnk_1A0;
|
||||
this->mUnk_1A0 = NULL;
|
||||
|
||||
delete this->mUnk_1A4;
|
||||
this->mUnk_1A4 = NULL;
|
||||
}
|
||||
|
||||
if (data_027e09a4->IsCutscene()) {
|
||||
delete this->mUnk_1A8;
|
||||
this->mUnk_1A8 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
AdventureModeManager::func_ov001_020c0874();
|
||||
this->mUnk_004.func_ov001_020bd784();
|
||||
}
|
||||
|
||||
void AdventureModeManager::vfunc_1C() {
|
||||
if (this->mUnk_1BC != NULL) {
|
||||
this->mUnk_1BC->func_ov093_02175514();
|
||||
}
|
||||
|
||||
data_ov024_020d8698->func_ov024_020cd094();
|
||||
data_ov024_020d8698->func_ov024_020cd150();
|
||||
|
||||
if (!data_027e09a4->func_01ffd3d8()) {
|
||||
this->mUnk_1B0->func_ov031_0210fad0();
|
||||
}
|
||||
}
|
||||
|
||||
void AdventureModeManager::vfunc_20() {
|
||||
if (data_ov000_020b4f70 != NULL) {
|
||||
data_ov000_020b4f70->func_ov000_020662e8();
|
||||
}
|
||||
|
||||
this->func_ov024_020c699c();
|
||||
data_ov024_020d8694->func_ov024_020cb0c4();
|
||||
}
|
||||
|
||||
void AdventureModeManager::func_ov001_020c0824() {
|
||||
if (data_ov088_02177218 != NULL) {
|
||||
delete data_ov088_02177218;
|
||||
}
|
||||
}
|
||||
|
||||
void AdventureModeManager::func_ov001_020c083c() {
|
||||
if (data_ov024_020d8694 != NULL) {
|
||||
delete data_ov024_020d8694;
|
||||
}
|
||||
}
|
||||
|
||||
void AdventureModeManager::func_ov001_020c0854() {
|
||||
if (data_ov000_020b4f70 != NULL) {
|
||||
delete data_ov000_020b4f70;
|
||||
}
|
||||
}
|
||||
|
||||
void AdventureModeManager::func_ov001_020c0874() {
|
||||
if (data_027e0cf8 != NULL) {
|
||||
delete data_027e0cf8;
|
||||
}
|
||||
}
|
||||
|
||||
void AdventureModeManager::func_ov001_020c0894() {
|
||||
if (data_ov024_020d8698 != NULL) {
|
||||
delete data_ov024_020d8698;
|
||||
}
|
||||
}
|
||||
|
||||
UnkStruct_ov000_020b4f70::~UnkStruct_ov000_020b4f70() {
|
||||
data_ov000_020b4f70 = NULL;
|
||||
}
|
||||
|
||||
AdventureModeManager_15C::AdventureModeManager_15C() :
|
||||
mUnk_00(0),
|
||||
mUnk_20(&this->mUnk_04) {
|
||||
this->mUnk_44 = 0;
|
||||
this->mUnk_45 = 0;
|
||||
this->mUnk_46 = 0;
|
||||
this->mUnk_47 = 0;
|
||||
|
||||
unk32 value = data_0204999c.func_02013014();
|
||||
this->mUnk_20.mUnk_00 = new(HeapIndex_1) AdventureModeManager_15C_20_00(0);
|
||||
data_0204999c.func_020130d4(value);
|
||||
}
|
||||
|
||||
AdventureModeManager_15C::~AdventureModeManager_15C() {
|
||||
delete this->mUnk_20.mUnk_00;
|
||||
}
|
||||
|
||||
THUMB_END
|
||||
@@ -0,0 +1,26 @@
|
||||
#include "Game/Game.hpp"
|
||||
#include "Game/GameModeAdventure.hpp"
|
||||
#include "MainGame/AdventureMode.hpp"
|
||||
#include "Unknown/UnkStruct_0204a110.hpp"
|
||||
|
||||
extern "C" {
|
||||
void *func_ov001_020b6520(unk32 param1);
|
||||
void func_ov020_020c4ac0(void *);
|
||||
void func_0201659c();
|
||||
}
|
||||
|
||||
extern int data_ov001_020c27a8;
|
||||
extern int data_ov001_020c276c;
|
||||
|
||||
THUMB_BEGIN
|
||||
|
||||
GameModeAdventure::GameModeAdventure() {
|
||||
func_0201659c();
|
||||
gGame.func_02013370(2);
|
||||
data_0204a110.func_ov001_020bd514(0, AdventureModeManager::Create, 0, 1);
|
||||
gSaveManager.func_ov001_020ba670();
|
||||
gSaveManager.func_ov001_020ba7a8();
|
||||
func_ov020_020c4ac0(func_ov001_020b6520(0));
|
||||
}
|
||||
|
||||
THUMB_END
|
||||
@@ -5,11 +5,11 @@
|
||||
#include "Unknown/UnkStruct_027e09a4.hpp"
|
||||
|
||||
THUMB void ItemManager::func_ov001_020bb9f8() {
|
||||
if (data_027e09a4->mUnk_0C != 1 && gOverlayManager.mLoadedOverlays[OverlaySlot_10] != OverlayIndex_PlayerPhantom) {
|
||||
if (data_027e09a4->IsNotCutscene() && gOverlayManager.mLoadedOverlays[OverlaySlot_10] != OverlayIndex_PlayerPhantom) {
|
||||
this->mTearsAmount = 0;
|
||||
}
|
||||
|
||||
CourseEntry *pEntry = data_027e09a0->func_ov000_0207029c(data_027e09a4->mSceneIndex);
|
||||
CourseEntry *pEntry = data_027e09a0->GetCourseEntry(data_027e09a4->mUnk_00.mSceneIndex);
|
||||
|
||||
if (pEntry->mSaveCourseIndex < SaveCourseIndex_Max) {
|
||||
this->mKeyAmount = gSaveManager.mUnk_000->mUnk_36[pEntry->mSaveCourseIndex].mKeyAmount;
|
||||
|
||||
@@ -26,7 +26,7 @@ inline bool Test3(s32 val) {
|
||||
bool ret = true;
|
||||
|
||||
if (!Test2(val)) {
|
||||
if (*((volatile unk32 *) &data_027e09a4->mSceneIndex) != 36) {
|
||||
if (*((volatile unk32 *) &data_027e09a4->mUnk_00.mSceneIndex) != 36) {
|
||||
ret = false;
|
||||
}
|
||||
}
|
||||
@@ -36,11 +36,11 @@ inline bool Test3(s32 val) {
|
||||
|
||||
// https://decomp.me/scratch/svwnb
|
||||
bool PassengerManager::func_ov001_020bf870() {
|
||||
s32 sceneIndex = data_027e09a4->mSceneIndex;
|
||||
s32 sceneIndex = data_027e09a4->mUnk_00.mSceneIndex;
|
||||
bool ret = true;
|
||||
|
||||
if (!Test3(sceneIndex)) {
|
||||
if (*((volatile unk32 *) &data_027e09a4->mSceneIndex) != 37) {
|
||||
if (*((volatile unk32 *) &data_027e09a4->mUnk_00.mSceneIndex) != 37) {
|
||||
ret = false;
|
||||
}
|
||||
}
|
||||
@@ -78,13 +78,6 @@ bool PassengerManager::func_ov001_020bfa1c() {
|
||||
return !((date2 << 0x1B) & 1);
|
||||
}
|
||||
|
||||
void PassengerManager::SetInstance(PassengerManager *pInstance) {
|
||||
gpPassengerManager = pInstance;
|
||||
}
|
||||
|
||||
bool PassengerManager::ClearInstance() {
|
||||
gpPassengerManager = NULL;
|
||||
//! @bug missing return
|
||||
}
|
||||
DECL_INSTANCE(PassengerManager, gpPassengerManager);
|
||||
|
||||
THUMB_END
|
||||
|
||||
Reference in New Issue
Block a user