mirror of
https://github.com/zeldaret/st
synced 2026-08-10 11:14:06 -04:00
Decompile overlay 1 (Part 2) (#91)
* UnkStruct_027e09b8_001 OK * match func_ov001_020b7830 * fix build issues * UnkStruct_027e0cd8_001 49% * UnkStruct_027e0cd8_001 OK * fix build issues * UnkStruct_027e0cd8_0C_001 92% * port some MSL C++ headers from rb3 and key decomps * fix build issues * UnkStruct_027e0cd8_0C_001 98%
This commit is contained in:
@@ -48,7 +48,7 @@ void ActorUnkEFIK::vfunc_20() {
|
||||
for (int i = 0; i < length; i++) {
|
||||
u8 j;
|
||||
u8 k;
|
||||
UnkStruct_027e0cd8_0c *pUVar5 = data_027e0cd8->mUnk_0C;
|
||||
UnkStruct_027e0cd8_0C_Base *pUVar5 = data_027e0cd8->mUnk_0C;
|
||||
|
||||
u8 bStack_3c[2];
|
||||
bStack_3c[0] = 0;
|
||||
|
||||
@@ -15,6 +15,7 @@ extern "C" void func_01ffb9cc(VecFx32 *, VecFx32 *);
|
||||
extern "C" u16 func_01ffbbe0(fx32 x, fx32 z);
|
||||
extern "C" void func_01ffecdc(unk32 param1, Cylinder *param2);
|
||||
extern "C" bool func_01ffd768(unk32, void *, void *, unk8);
|
||||
extern "C" void func_01fff6d0(void *, VecFx32 *param1, s32 *param2, s32 *param3);
|
||||
|
||||
MapObject::MapObject() {
|
||||
this->mUnk_10 = NULL;
|
||||
@@ -57,9 +58,9 @@ void MapObject::func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx) {
|
||||
VecFx32 pos;
|
||||
Vec2p out;
|
||||
|
||||
MapObjectManager *t = data_027e0cd8->mUnk_10;
|
||||
pos = thisx->mPos;
|
||||
t->func_01fff6d0(&pos, (fx32 *) &out.y, (fx32 *) &out.x);
|
||||
UnkStruct_027e0cd8_10 *ptr = data_027e0cd8->mUnk_10;
|
||||
pos = thisx->mPos;
|
||||
func_01fff6d0(ptr, &pos, (fx32 *) &out.y, (fx32 *) &out.x);
|
||||
|
||||
Vec2p temp;
|
||||
temp.y = out.x;
|
||||
@@ -145,7 +146,7 @@ void MapObject::func_ov000_0209d2c4(unk32 param1, bool param2) {
|
||||
}
|
||||
|
||||
void MapObject::func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3) {
|
||||
UnkStruct_027e0cd8_0c *temp_r5 = data_027e0cd8->mUnk_0C;
|
||||
UnkStruct_027e0cd8_0C_Base *temp_r5 = data_027e0cd8->mUnk_0C;
|
||||
Vec2b sp0(0, 0);
|
||||
|
||||
sp0.x = this->mUnk_3A.x;
|
||||
|
||||
@@ -36,12 +36,12 @@ MapObjectMiniBlocks::MapObjectMiniBlocks() {
|
||||
bool MapObjectMiniBlocks::vfunc_00(void) {
|
||||
GET_PROFILE(MapObjectProfileMiniBlocks)
|
||||
->func_ov000_0209ccd8(this->mUnk_20.mUnk_00[1], data_ov000_020af574[this->mUnk_20.mUnk_00[1]]);
|
||||
UnkStruct_027e0cd8_0c *pUnkStruct_027e0cd8_0c = data_027e0cd8->mUnk_0C;
|
||||
UnkStruct_027e0cd8_0C_Base *pUnkStruct_027e0cd8_0C = data_027e0cd8->mUnk_0C;
|
||||
u8 uVar6;
|
||||
|
||||
if (this->mUnk_20.mUnk_00[1] != MiniBlocksVariant_BLKF) {
|
||||
Vec2b vec(this->mUnk_3A.x, this->mUnk_3A.y);
|
||||
this->mPos.y = pUnkStruct_027e0cd8_0c->func_01ffedf4(&vec);
|
||||
this->mPos.y = pUnkStruct_027e0cd8_0C->func_01ffedf4(&vec);
|
||||
}
|
||||
|
||||
VecFx32 vec;
|
||||
|
||||
@@ -83,9 +83,9 @@ void ActorManager::func_ov001_020bafdc() {
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/UywfM
|
||||
void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param2 *param1) {
|
||||
u16 unk_0A = param1->mUnk_0A;
|
||||
u16 unk_08 = param1->mUnk_08;
|
||||
void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) {
|
||||
u16 unk_0A = pHeader->unk_0A;
|
||||
u16 unk_08 = pHeader->unk_08;
|
||||
|
||||
this->mActorCount = 0;
|
||||
this->mNextActorId = 0;
|
||||
@@ -206,19 +206,19 @@ void ActorManager::func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param2 *par
|
||||
}
|
||||
}
|
||||
|
||||
void ActorManager::func_ov001_020bb414(ActorManager *instance) {
|
||||
void ActorManager::func_ov001_020bb414() {
|
||||
func_ov001_020ba59c(&data_0204999c);
|
||||
|
||||
if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00.mSceneIndex)) {
|
||||
instance->func_ov001_020bb844();
|
||||
this->func_ov001_020bb844();
|
||||
}
|
||||
|
||||
if (instance->mActorTable != 0) {
|
||||
delete instance->mActorTable;
|
||||
if (this->mActorTable != 0) {
|
||||
delete this->mActorTable;
|
||||
}
|
||||
|
||||
instance->mActorTable = NULL;
|
||||
instance->mActorTableEnd = NULL;
|
||||
this->mActorTable = NULL;
|
||||
this->mActorTableEnd = NULL;
|
||||
}
|
||||
|
||||
void ActorManager::func_ov001_020bb488() {
|
||||
@@ -228,7 +228,7 @@ void ActorManager::func_ov001_020bb488() {
|
||||
case 0x01:
|
||||
case 0x03:
|
||||
case 0x06:
|
||||
if (data_027e0cd8->mUnk_0C->mUnk_128 & 0x800) {
|
||||
if (data_027e0cd8->GetUnk0C()->mUnk_128 & 0x800) {
|
||||
func_ov031_020ea100();
|
||||
}
|
||||
break;
|
||||
@@ -363,7 +363,7 @@ bool ActorManager::func_ov001_020bb728(s32 param1) {
|
||||
}
|
||||
|
||||
void ActorManager::func_ov001_020bb7b0(ZeldaObjectList *pObjList) {
|
||||
for (s32 i = 0; i < pObjList->nEntries; i++) {
|
||||
for (s32 i = 0; i < pObjList->header.nEntries; i++) {
|
||||
u32 id = pObjList->aIdList[i];
|
||||
ActorProfile *pActorProfile = data_ov000_020b539c_eur.GetProfileFromId(id);
|
||||
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_0204a088.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_02067bc4.hpp"
|
||||
|
||||
#include <nitro/mi.h>
|
||||
|
||||
struct UnkStruct_ov000_02073080 {
|
||||
/* 00 */ STRUCT_PAD(0x00, 0x08);
|
||||
/* 08 */ CutsceneIndex csIndex;
|
||||
/* 0C */ STRUCT_PAD(0x0C, 0x1C);
|
||||
/* 1C */
|
||||
};
|
||||
extern "C" void func_ov000_02073080(void *);
|
||||
|
||||
UnkStruct_027e09b8 *UnkStruct_027e09b8::Create() {
|
||||
return new(HeapIndex_1) UnkStruct_027e09b8();
|
||||
}
|
||||
|
||||
UnkStruct_027e09b8::UnkStruct_027e09b8() {
|
||||
MI_CpuFill32(0, this->mAdventureFlags, sizeof(this->mAdventureFlags));
|
||||
this->mUnk_94 = 0;
|
||||
this->mUnk_96 = false;
|
||||
this->mUnk_97 = false;
|
||||
MI_CpuFill32(0, this->mUnk_04, sizeof(this->mUnk_04));
|
||||
|
||||
this->mUnk_00 = new(HeapIndex_1) UnkStruct_027e09b8_00();
|
||||
this->mUnk_04[0] = new(HeapIndex_1) UnkStruct_027e09b8_04();
|
||||
this->mUnk_04[2] = new(HeapIndex_1) UnkStruct_027e09b8_0C();
|
||||
|
||||
if (data_0204a088 != NULL) {
|
||||
this->mUnk_04[3] = new(HeapIndex_1) UnkStruct_027e09b8_10();
|
||||
}
|
||||
|
||||
this->mUnk_98 = new(HeapIndex_1) UnkStruct_027e09b8_98();
|
||||
}
|
||||
|
||||
UnkStruct_027e09b8::~UnkStruct_027e09b8() {
|
||||
for (int i = 0; i < ARRAY_LEN(this->mUnk_04); i++) {
|
||||
delete this->mUnk_04[i];
|
||||
}
|
||||
|
||||
delete this->mUnk_00;
|
||||
|
||||
if (this->mUnk_98 != NULL) {
|
||||
DELETE(this->mUnk_98);
|
||||
}
|
||||
}
|
||||
|
||||
void UnkStruct_027e09b8::ImportAdventureFlags(AdventureFlag *pAdventureFlags) {
|
||||
MI_CpuCopy32(pAdventureFlags, this->mAdventureFlags, sizeof(this->mAdventureFlags));
|
||||
}
|
||||
|
||||
void UnkStruct_027e09b8::func_ov001_020b76c0(CutsceneIndex csIndex) {
|
||||
UnkStruct_ov000_02073080 auStack_30;
|
||||
|
||||
func_ov000_02073080(&auStack_30);
|
||||
auStack_30.csIndex = csIndex;
|
||||
|
||||
this->mUnk_04[1] = new(HeapIndex_1) UnkStruct_027e09b8_08(&auStack_30);
|
||||
|
||||
this->func_ov000_02073610(&auStack_30, 0);
|
||||
data_ov000_020b504c.func_ov001_020be998();
|
||||
}
|
||||
|
||||
void UnkStruct_027e09b8::func_ov001_020b7700() {
|
||||
if (this->mUnk_04[1] != NULL) {
|
||||
data_ov000_020b504c.func_ov001_020be504();
|
||||
DELETE(this->mUnk_04[1]);
|
||||
}
|
||||
}
|
||||
|
||||
void UnkStruct_027e09b8::func_ov001_020b7728() {
|
||||
this->mUnk_00->func_ov000_02073b5c();
|
||||
|
||||
for (int i = 0; i < ARRAY_LEN(this->mUnk_04); i++) {
|
||||
if (this->mUnk_04[i] != NULL) {
|
||||
this->mUnk_04[i]->vfunc_0C();
|
||||
}
|
||||
}
|
||||
|
||||
this->mUnk_98->func_ov000_020a7b34();
|
||||
}
|
||||
|
||||
DECL_INSTANCE(UnkStruct_027e09b8, data_027e09b8);
|
||||
|
||||
@@ -0,0 +1,492 @@
|
||||
#include "Actor/ActorManager.hpp"
|
||||
#include "Save/SaveManager.hpp"
|
||||
#include "System/OverlayManager.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/Common.hpp"
|
||||
#include "Unknown/UnkStruct_02049bac.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a0.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a4.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09bc.hpp"
|
||||
#include "Unknown/UnkStruct_027e09c0.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0ce0.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_02067bc4.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b50c0.hpp"
|
||||
#include "Unknown/UnkStruct_ov024_020d8660.hpp"
|
||||
#include "Unknown/UnkStruct_ov024_020d8694.hpp"
|
||||
#include "Unknown/UnkStruct_ov026_02138d10.hpp"
|
||||
#include "files.h"
|
||||
#include "versions.h"
|
||||
|
||||
#include <dsprot.h>
|
||||
#include <printf.h>
|
||||
|
||||
extern "C" void func_ov026_020e9208();
|
||||
extern "C" void func_ov000_02081520(void *, void *, u8);
|
||||
extern "C" void func_ov000_020814ec(void *, void *);
|
||||
extern "C" void func_ov084_0216122c();
|
||||
extern "C" void func_ov084_021612ac();
|
||||
extern void *data_ov084_02164690;
|
||||
|
||||
struct UnkStruct7 {
|
||||
/* 00 */ u16 unk_00;
|
||||
/* 02 */ Vec2s unk_02;
|
||||
/* 04 */
|
||||
};
|
||||
|
||||
UnkStruct_027e0cd8 *UnkStruct_027e0cd8::Create() {
|
||||
return new(HeapIndex_1) UnkStruct_027e0cd8();
|
||||
}
|
||||
|
||||
UnkStruct_027e0cd8::UnkStruct_027e0cd8() :
|
||||
mUnk_04(NULL),
|
||||
mUnk_08(NULL),
|
||||
mUnk_0C(NULL),
|
||||
mUnk_10(NULL),
|
||||
mUnk_16(true),
|
||||
mUnk_17(true),
|
||||
mUnk_30(-1),
|
||||
mUnk_34(-1) {
|
||||
|
||||
UnkStruct_027e09bc *ptr = data_027e09bc;
|
||||
UnkSystem8 *pList = GetLinkListRef(this->mUnk_18);
|
||||
ptr->mUnk_48.Prepend(pList);
|
||||
|
||||
VecFx32_Init(0, 0, 0, &this->mUnk_24);
|
||||
|
||||
for (int i = 0; i < ARRAY_LEN(this->mUnk_38); i++) {
|
||||
this->mUnk_38[i] = 0;
|
||||
this->mUnk_48[i] = false;
|
||||
}
|
||||
}
|
||||
|
||||
UnkStruct_027e0cd8::~UnkStruct_027e0cd8() {
|
||||
DELETE(this->mUnk_04);
|
||||
DELETE(this->mUnk_08);
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8::func_ov001_020b7830(const UnkStruct_SceneChange1 *param1) {
|
||||
CourseListEntry *pEntry;
|
||||
UnkStruct_func_ov000_020702a8 *pUnk1;
|
||||
|
||||
pEntry = data_027e09a0->GetCourseEntry(param1->mSceneIndex);
|
||||
pUnk1 = data_027e09a0->func_ov000_020702a8(param1->mSceneIndex);
|
||||
|
||||
wchar_t sp80[16];
|
||||
sp80[0] = L'\0';
|
||||
sp80[sizeof(sp80) / 2 - 1] = L'\0';
|
||||
snprintf((char *) sp80, sizeof(sp80), "Map/%s/course.bin", pEntry->name);
|
||||
|
||||
UnkStruct2 sp70((char *) sp80, 0x01);
|
||||
sp70.func_020154ec("MCS");
|
||||
|
||||
bool isCS = true;
|
||||
if (param1->mIsCS != true) {
|
||||
isCS = false;
|
||||
}
|
||||
|
||||
UnkFileSystem3 sp60(isCS ? "MCS:objlist/npctype_1.zob" : "MCS:objlist/npctype.zob");
|
||||
gpActorManager->func_ov001_020bb018((ZOBHeader *) sp60.vfunc_08(sizeof(ZOBHeader)));
|
||||
|
||||
UnkFileSystem3 sp50(isCS ? "MCS:objlist/motype_1.zob" : "MCS:objlist/motype.zob");
|
||||
gpMapObjManager->func_ov001_020bacd8((ZOBHeader *) sp50.vfunc_08(sizeof(ZOBHeader)));
|
||||
|
||||
UnkStruct7 sp4;
|
||||
Vec2s_Copy(&pUnk1->mUnk_10, &sp4.unk_02);
|
||||
Vec2s_Copy(&sp4.unk_02, &this->mUnk_00);
|
||||
|
||||
this->mUnk_14 = pEntry->unk_10;
|
||||
this->mUnk_04 = new(HeapIndex_1) UnkStruct_027e0cd8_04();
|
||||
|
||||
if (pEntry->unk_21 != -1) {
|
||||
this->mUnk_08 = new(HeapIndex_1) UnkStruct_027e0cd8_04();
|
||||
}
|
||||
|
||||
if (DSProt_DetectEmulator(NULL) == 0) {
|
||||
this->mUnk_30 = 0x1C;
|
||||
}
|
||||
|
||||
if (this->mUnk_14 == 0x02 || this->mUnk_14 == 0x04) {
|
||||
this->mUnk_10 = new(HeapIndex_1) UnkStruct_027e0cd8_10();
|
||||
func_ov026_020e9208();
|
||||
} else if (data_027e09a4->mUnk_60 == 0 && data_ov024_020d8694 != NULL) {
|
||||
if (data_027e09a4->CurrentSceneIndex() == SceneIndex_d_main) {
|
||||
data_ov024_020d8694->func_ov024_020cb000(20);
|
||||
} else {
|
||||
data_ov024_020d8694->func_ov024_020cafb8(20);
|
||||
}
|
||||
}
|
||||
|
||||
this->func_ov001_020b8120(param1->mSceneIndex);
|
||||
|
||||
if (pEntry->unk_21 != -1) {
|
||||
wchar_t sp30[16];
|
||||
sp30[0] = L'\0';
|
||||
sp30[sizeof(sp30) / 2 - 1] = L'\0';
|
||||
|
||||
snprintf((char *) sp30, sizeof(sp30), "Map/%s/course.bin", data_027e09a0->GetCourseEntry(pEntry->unk_21)->name);
|
||||
|
||||
UnkStruct2 sp20((const char *) sp30, 0x01);
|
||||
sp20.func_020154ec("MCT");
|
||||
this->func_ov001_020b7b38(pEntry, pUnk1);
|
||||
} else {
|
||||
this->func_ov001_020b7b38(pEntry, pUnk1);
|
||||
}
|
||||
|
||||
UnkStruct_SceneChange1 sceneChange(param1);
|
||||
if (sceneChange.mRoomIndex != 0xFF) {
|
||||
func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.mRoomIndex);
|
||||
func_ov000_020814ec(this->mUnk_04, &sp4);
|
||||
} else {
|
||||
sceneChange.mRoomIndex = this->mUnk_04->mUnk_40[this->mUnk_04->mUnk_10][this->mUnk_04->mUnk_11];
|
||||
}
|
||||
|
||||
this->func_ov001_020b7d64(&sceneChange);
|
||||
this->func_ov001_020b7e68(&sceneChange, 0x01);
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8::func_ov001_020b7a7c() {
|
||||
this->func_ov001_020b818c();
|
||||
this->func_ov001_020b803c();
|
||||
|
||||
data_02049ba0.Unload(OverlaySlot_12);
|
||||
data_02049ba0.Unload(OverlaySlot_16);
|
||||
data_02049ba0.Unload(OverlaySlot_15);
|
||||
data_02049ba0.Unload(OverlaySlot_14);
|
||||
data_02049ba0.Unload(OverlaySlot_13);
|
||||
|
||||
this->func_ov001_020b7e50();
|
||||
this->mUnk_30 = -1;
|
||||
|
||||
if (data_027e09a4->mUnk_60 == 0) {
|
||||
this->func_ov000_02081ca0();
|
||||
}
|
||||
|
||||
DELETE(this->mUnk_04);
|
||||
DELETE(this->mUnk_08);
|
||||
|
||||
if (this->mUnk_10 != NULL) {
|
||||
DELETE(this->mUnk_10);
|
||||
}
|
||||
|
||||
gpMapObjManager->func_ov001_020bad80();
|
||||
gpActorManager->func_ov001_020bb414();
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8::func_ov001_020b7b38(const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1) {
|
||||
if (pEntry->saveCourseIndex < SaveCourseIndex_Max) {
|
||||
SaveManager_00 *ptr = gSaveManager.mUnk_000;
|
||||
this->mUnk_04->func_ov000_02081354(pEntry, pUnk1, &ptr->unk_030[pEntry->saveCourseIndex], false);
|
||||
SET_FLAG(ptr->unk_004.unk_00, pEntry->saveCourseIndex);
|
||||
} else {
|
||||
SaveFile_00000_0000_Data_184 local_1c;
|
||||
MI_CpuFill32(0, &local_1c, sizeof(local_1c));
|
||||
this->mUnk_04->func_ov000_02081354(pEntry, pUnk1, &local_1c, false);
|
||||
}
|
||||
|
||||
this->mUnk_34 = pEntry->unk_21;
|
||||
|
||||
if (this->mUnk_34 != SceneIndex_None) {
|
||||
CourseListEntry *pOtherEntry = data_027e09a0->GetCourseEntry(this->mUnk_34);
|
||||
UnkStruct_func_ov000_020702a8 *pOtherUnk1 = data_027e09a0->func_ov000_020702a8(this->mUnk_34);
|
||||
|
||||
if (pOtherEntry->saveCourseIndex < SaveCourseIndex_Max) {
|
||||
this->mUnk_08->func_ov000_02081354(pOtherEntry, pOtherUnk1,
|
||||
&gSaveManager.mUnk_000->unk_030[pOtherEntry->saveCourseIndex], true);
|
||||
} else {
|
||||
SaveFile_00000_0000_Data_184 local_1c;
|
||||
MI_CpuFill32(0, &local_1c, sizeof(local_1c));
|
||||
this->mUnk_08->func_ov000_02081354(pOtherEntry, pOtherUnk1, &local_1c, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8::func_ov001_020b7c08(const UnkStruct_SceneChange1 *param1, const UnkStruct_WarpUnk1_A0 *param2) {
|
||||
UnkStruct_SceneChange1 sceneChange(param1);
|
||||
Vec2s sp4;
|
||||
|
||||
if (this->mUnk_30 == param1->mSceneIndex && DSProt_DetectNotFlashcart(NULL) != 0) {
|
||||
data_ov084_02164690 = &sceneChange;
|
||||
}
|
||||
|
||||
if (!this->func_ov000_02082124() &&
|
||||
(param1->mSceneIndex < SceneIndex_tekiya00 || param1->mSceneIndex > SceneIndex_tekiya09)) {
|
||||
#if IS_JP
|
||||
VecFx32_Copy(¶m2->mUnk_04, &this->mUnk_24);
|
||||
#endif
|
||||
|
||||
if (param1->mSceneIndex == SceneIndex_f_water) {
|
||||
switch (param1->mRoomIndex) {
|
||||
case 1:
|
||||
this->mUnk_24.x = 0x16000;
|
||||
this->mUnk_24.z = 0xFFFF6000;
|
||||
break;
|
||||
case 2:
|
||||
this->mUnk_24.x = 0xFFFE8000;
|
||||
this->mUnk_24.z = 0x8000;
|
||||
break;
|
||||
case 3:
|
||||
this->mUnk_24.x = 0xFFFFD000;
|
||||
this->mUnk_24.z = 0x8800;
|
||||
break;
|
||||
case 4:
|
||||
this->mUnk_24.x = 0x8000;
|
||||
this->mUnk_24.z = 0xFFFFE800;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
#if IS_JP
|
||||
if (param1->mSceneIndex == SceneIndex_f_snow2 && param1->mRoomIndex == 2) {
|
||||
this->mUnk_24.x = 0xFFFFF000;
|
||||
this->mUnk_24.z = 0xFFFF0000;
|
||||
}
|
||||
#else
|
||||
VecFx32_Copy(¶m2->mUnk_04, &this->mUnk_24);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
this->func_ov001_020b803c();
|
||||
this->func_ov001_020b7e50();
|
||||
|
||||
if (sceneChange.mRoomIndex != ROOM_INDEX_NONE) {
|
||||
if (this->mUnk_30 == sceneChange.mSceneIndex && DSProt_DetectNotEmulator(func_ov084_0216122c) == 0) {
|
||||
func_ov084_021612ac();
|
||||
}
|
||||
|
||||
func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.mRoomIndex);
|
||||
func_ov000_020814ec(this->mUnk_04, &sp4);
|
||||
} else {
|
||||
sceneChange.mRoomIndex = this->mUnk_04->mUnk_40[this->mUnk_04->mUnk_10][this->mUnk_04->mUnk_11];
|
||||
}
|
||||
|
||||
this->func_ov001_020b7d64(&sceneChange);
|
||||
this->func_ov001_020b7e68(&sceneChange, 0x00);
|
||||
|
||||
if (data_027e09a4->mUnk_60 == 0 && data_ov024_020d8694 != NULL) {
|
||||
if (data_027e09a4->CurrentSceneIndex() == SceneIndex_f_first && this->func_ov000_02081d5c() == 0) {
|
||||
data_ov024_020d8694->func_ov024_020cafd8(20);
|
||||
} else {
|
||||
data_ov024_020d8694->func_ov024_020cb000(20);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8::func_ov001_020b7d64(const UnkStruct_SceneChange1 *param1) {
|
||||
UnkStruct_027e0cd8_04_0C *iVar7;
|
||||
u32 temp_r1;
|
||||
u16 uVar5;
|
||||
u16 uVar6;
|
||||
u16 uVar4;
|
||||
u16 uVar3;
|
||||
|
||||
iVar7 = this->mUnk_04->mUnk_0C;
|
||||
|
||||
switch (data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 3:
|
||||
case 6:
|
||||
this->mUnk_0C = new(HeapIndex_1) UnkStruct_027e0cd8_0C(this);
|
||||
|
||||
uVar3 = iVar7->mUnk_0C & 0x0F;
|
||||
temp_r1 = iVar7->mUnk_0C;
|
||||
uVar5 = (temp_r1 >> 4) & 0x0F;
|
||||
uVar6 = (temp_r1 >> 8) & 0x0F;
|
||||
uVar4 = (temp_r1 >> 12) & 0x0F;
|
||||
|
||||
if (uVar3 != 0) {
|
||||
data_02049ba0.LoadIfNotLoaded(OverlaySlot_13, uVar3 - 1 + OverlayIndex_MapA1);
|
||||
}
|
||||
|
||||
if (uVar5 != 0) {
|
||||
data_02049ba0.LoadIfNotLoaded(OverlaySlot_14, uVar5 - 1 + OverlayIndex_MapB1);
|
||||
}
|
||||
|
||||
if (uVar6 != 0) {
|
||||
data_02049ba0.LoadIfNotLoaded(OverlaySlot_15, uVar6 - 1 + OverlayIndex_MapC1);
|
||||
}
|
||||
|
||||
if (uVar4 != 0) {
|
||||
data_02049ba0.LoadIfNotLoaded(OverlaySlot_16, uVar4 - 1 + OverlayIndex_MapD1);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 4:
|
||||
this->mUnk_0C = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Derived2(this);
|
||||
break;
|
||||
case 5:
|
||||
this->mUnk_0C = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Derived3(this);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8::func_ov001_020b7e50() {
|
||||
DELETE(this->mUnk_0C);
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8::func_ov001_020b7e68(const UnkStruct_SceneChange1 *param1, bool param2) {
|
||||
if (this->mUnk_10 != NULL) {
|
||||
this->mUnk_10->func_ov024_020d2520((UnkStruct_SceneChange1 *) param1);
|
||||
}
|
||||
|
||||
data_ov000_020b504c.func_ov001_020be92c(this->mUnk_04->mUnk_0C);
|
||||
this->mUnk_0C->func_ov001_020b85d0(param1);
|
||||
this->mUnk_0C->vfunc_1C(param1, this->mUnk_04->mUnk_01, param2);
|
||||
|
||||
data_ov000_020b50c0.func_ov001_020bde4c(param1);
|
||||
data_027e0ce0->func_ov001_020bc65c();
|
||||
data_027e09bc->func_ov001_020babe8();
|
||||
data_027e0960->func_ov000_0205a11c();
|
||||
gpActorManager->func_ov001_020bb488();
|
||||
gpMapObjManager->func_ov001_020bada0();
|
||||
data_0204a110.func_ov001_020bd678();
|
||||
|
||||
if (data_027e09a4->mUnk_60 == 0) {
|
||||
data_ov024_020d8660->func_ov024_020c4ba0();
|
||||
}
|
||||
|
||||
unk32 unk_10 = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10;
|
||||
|
||||
if (data_027e09a4->mUnk_60 == 1) {
|
||||
for (int i = 0; i < 4; i++) {
|
||||
UnkStruct_027e0ce0 *ptr = data_027e0ce0;
|
||||
const UnkStruct_ov001_020c40f4 *arg = this->mUnk_0C->func_ov001_020b8a5c(i, 0x00);
|
||||
ptr->func_ov001_020bc6d8(i, arg);
|
||||
}
|
||||
} else if (unk_10 == 2 || unk_10 == 4) {
|
||||
UnkStruct_027e0ce0 *ptr = data_027e0ce0;
|
||||
const UnkStruct_ov001_020c40f4 *arg = this->mUnk_0C->func_ov001_020b8a5c(param1->mSpawnIndex, 0x00);
|
||||
ptr->func_ov001_020bc6e8(arg);
|
||||
} else {
|
||||
UnkStruct_027e0cd8_0C_Base *temp_pUnkC = this->mUnk_0C;
|
||||
u32 temp_unk118 = temp_pUnkC->mUnk_118;
|
||||
u8 temp_spawn = param1->mSpawnIndex;
|
||||
UnkStruct_027e0ce0 *ptr = data_027e0ce0;
|
||||
|
||||
const UnkStruct_ov001_020c40f4 *spC = temp_pUnkC->func_ov001_020b8a5c(param1->mSpawnIndex, 0);
|
||||
|
||||
ptr->func_ov001_020bc6fc(spC, temp_pUnkC->func_ov001_020b8a5c(temp_spawn, 1), temp_pUnkC->mUnk_11C, temp_unk118);
|
||||
}
|
||||
|
||||
data_027e09bc->func_ov000_020771c8();
|
||||
unk32 iVar7 = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10;
|
||||
data_027e09c0->func_ov000_0207da40();
|
||||
this->mUnk_0C->vfunc_08();
|
||||
|
||||
if (iVar7 == 2 || iVar7 == 4) {
|
||||
data_ov026_02138d10->func_ov026_020dca14();
|
||||
}
|
||||
|
||||
gpMapObjManager->func_ov001_020bac9c();
|
||||
gpActorManager->func_ov001_020bafdc();
|
||||
|
||||
if (data_027e09a4->mUnk_60 == 0) {
|
||||
SaveManager_00 *ptr = gSaveManager.mUnk_000;
|
||||
u16 auStack_18[2];
|
||||
data_027e09a0->func_ov000_02070310(param1->mSceneIndex, param1->mRoomIndex, &auStack_18);
|
||||
|
||||
if (auStack_18[1] < 0x100) {
|
||||
SET_FLAG(ptr->unk_004.unk_0C, auStack_18[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8::func_ov001_020b803c() {
|
||||
this->mUnk_0C->vfunc_20();
|
||||
|
||||
if (data_027e09a4->mUnk_60 == 0 && data_ov024_020d8660 != NULL) {
|
||||
data_ov024_020d8660->func_ov024_020c4cc8();
|
||||
}
|
||||
|
||||
data_0204a110.func_ov001_020bd68c();
|
||||
gpMapObjManager->func_ov001_020badb4();
|
||||
gpActorManager->func_ov001_020bb548();
|
||||
data_027e0ce0->func_ov001_020bc69c();
|
||||
data_027e09bc->func_ov001_020bac08();
|
||||
data_027e0cec->func_ov001_020bf028();
|
||||
data_027e0960->func_ov000_0205a120();
|
||||
data_027e09b8->func_ov001_020b7728();
|
||||
DELETE_ARRAY(gSaveManager.mUnk_244);
|
||||
data_ov000_020b50c0.func_ov001_020bde5c();
|
||||
data_ov000_020b504c.func_ov001_020be94c();
|
||||
this->mUnk_0C->func_ov001_020b88ec();
|
||||
|
||||
if (this->mUnk_10 != NULL) {
|
||||
this->mUnk_10->func_ov024_020d2564();
|
||||
}
|
||||
}
|
||||
|
||||
bool UnkStruct_027e0cd8::func_ov001_020b80fc(SceneIndex sceneIndex) {
|
||||
int index;
|
||||
|
||||
switch (sceneIndex) {
|
||||
case SceneIndex_t_area0:
|
||||
index = 0;
|
||||
break;
|
||||
case SceneIndex_t_area1:
|
||||
index = 1;
|
||||
break;
|
||||
default:
|
||||
index = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (index == 2) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return this->mUnk_48[index];
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8::func_ov001_020b8120(SceneIndex sceneIndex) {
|
||||
int index;
|
||||
|
||||
switch (sceneIndex) {
|
||||
case SceneIndex_t_area0:
|
||||
index = 0;
|
||||
break;
|
||||
case SceneIndex_t_area1:
|
||||
index = 1;
|
||||
break;
|
||||
default:
|
||||
index = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (index != 2) {
|
||||
s64 value = data_02049bac.func_02014b00();
|
||||
|
||||
if (value > (this->mUnk_38[index] + 600) || value < this->mUnk_38[index]) {
|
||||
this->mUnk_48[index] = ((u32) value / 300) & 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8::func_ov001_020b818c() {
|
||||
int index;
|
||||
|
||||
switch (data_027e09a4->CurrentSceneIndex()) {
|
||||
case SceneIndex_t_area0:
|
||||
index = 0;
|
||||
break;
|
||||
case SceneIndex_t_area1:
|
||||
index = 1;
|
||||
break;
|
||||
default:
|
||||
index = 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (index != 2) {
|
||||
this->mUnk_38[index] = data_02049bac.func_02014b00();
|
||||
}
|
||||
}
|
||||
|
||||
DECL_INSTANCE(UnkStruct_027e0cd8, data_027e0cd8);
|
||||
|
||||
@@ -0,0 +1,488 @@
|
||||
#include "Actor/ActorManager.hpp"
|
||||
#include "Cutscene/Cutscene.hpp"
|
||||
#include "Game/GameModeManager.hpp"
|
||||
#include "MapObject/MapObjectManager.hpp"
|
||||
#include "Physics/AABB.hpp"
|
||||
#include "Unknown/UnkStruct_027e095c.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a0.hpp"
|
||||
#include "Unknown/UnkStruct_027e09ac.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b0.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09c0.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
|
||||
#include <nns/g3d/g3d.h>
|
||||
#include <printf.h>
|
||||
#include <vector>
|
||||
|
||||
extern "C" BMDSectionModel *func_ov000_0205abcc(void *, void *, unk32, unk32, unk32);
|
||||
extern "C" void func_ov089_02165c34(void *);
|
||||
extern AABB data_027e0ca8;
|
||||
extern AABB data_027e0cc0;
|
||||
extern AABB data_027e0c90;
|
||||
extern int data_ov089_02171540;
|
||||
|
||||
static UnkStruct_ov001_020c40f4 data_ov001_020c40f4[0x40];
|
||||
|
||||
struct UnkStruct_ov001_020c2a40 {
|
||||
/* 00 */ unk32 unk_00;
|
||||
/* 04 */ unk32 unk_04;
|
||||
/* 08 */ unk16 unk_08;
|
||||
/* 0A */ u8 unk_0A;
|
||||
/* 0B */ u8 unk_0B;
|
||||
/* 0C */ u8 unk_0C;
|
||||
/* 0D */ u8 unk_0D;
|
||||
/* 0E */ u8 unk_0E;
|
||||
/* 0F */ u8 unk_0F;
|
||||
/* 10 */ u8 unk_10;
|
||||
/* 11 */ STRUCT_PAD(0x11, 0x14); // pad?
|
||||
/* 14 */
|
||||
|
||||
UnkStruct_ov001_020c2a40(unk32 param1, unk32 param2, unk16 param3, unk8 param4, unk8 param5, unk8 param6, unk8 param7) {
|
||||
this->unk_00 = param1;
|
||||
this->unk_04 = param2;
|
||||
this->unk_08 = param3;
|
||||
this->unk_0A = param4;
|
||||
this->unk_0B = param5;
|
||||
this->unk_0C = param6;
|
||||
this->unk_0D = param7;
|
||||
this->unk_0E = 0x2B;
|
||||
this->unk_0F = 0;
|
||||
this->unk_10 = 0;
|
||||
}
|
||||
};
|
||||
|
||||
static const UnkStruct_ov001_020c2a40 data_ov001_020c2a40[] = {
|
||||
UnkStruct_ov001_020c2a40(0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C),
|
||||
UnkStruct_ov001_020c2a40(0x29, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x3D),
|
||||
UnkStruct_ov001_020c2a40(0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E),
|
||||
UnkStruct_ov001_020c2a40(0x04, 0x00, 0x00, 0x00, 0xFA, 0x00, 0x3F),
|
||||
};
|
||||
|
||||
// https://decomp.me/scratch/JcRNn
|
||||
UnkStruct_027e0cd8_0C_Base::UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param1) :
|
||||
mUnk_004(NULL, 0x9B, 0x01, 0x01),
|
||||
mSceneRender(NULL),
|
||||
mUnk_070(NULL, 0x9B, 0x01, 0x00),
|
||||
mUnk_084_00(0),
|
||||
mUnk_084_01(0),
|
||||
mUnk_098(0),
|
||||
mUnk_09C(¶m1->mUnk_00),
|
||||
mUnk_0AC(false),
|
||||
mUnk_0AD(false),
|
||||
mUnk_0AE(false),
|
||||
mUnk_0AF(false),
|
||||
mUnk_0FC(0),
|
||||
mIsCS(false),
|
||||
mUnk_104(0),
|
||||
mUnk_108(0),
|
||||
mUnk_10C(0),
|
||||
mUnk_110(0),
|
||||
mUnk_114(0),
|
||||
mUnk_118(0),
|
||||
mUnk_11C(1),
|
||||
mUnk_120(0),
|
||||
mUnk_124(0),
|
||||
mUnk_128(0),
|
||||
mUnk_12A(true),
|
||||
mUnk_12B(false),
|
||||
mUnk_12C(false),
|
||||
mUnk_12D(false),
|
||||
mUnk_12E(false),
|
||||
mUnk_130(0),
|
||||
mUnk_134(0),
|
||||
mUnk_138(0) {
|
||||
Vec2s local_30;
|
||||
VecFx32 sp18;
|
||||
VecFx32 spC;
|
||||
|
||||
this->mUnk_0A0 = 0;
|
||||
this->mUnk_0A4 = 0;
|
||||
this->mUnk_0A8 = 0;
|
||||
|
||||
fx32 y = (this->mUnk_11C << 14);
|
||||
fx32 z = ((u32) (u16) this->mUnk_09C.y >> 1) << 12;
|
||||
fx32 x = ((u32) (u16) this->mUnk_09C.x >> 1) << 12;
|
||||
|
||||
data_027e0c90.min.x = -x;
|
||||
data_027e0c90.min.y = -y;
|
||||
data_027e0c90.min.z = -z;
|
||||
|
||||
data_027e0c90.max.x = x;
|
||||
data_027e0c90.max.y = 0;
|
||||
data_027e0c90.max.z = z;
|
||||
|
||||
spC = data_027e0c90.min;
|
||||
data_027e0ca8.min = spC;
|
||||
|
||||
sp18 = data_027e0c90.max;
|
||||
data_027e0ca8.max = sp18;
|
||||
|
||||
data_027e0cc0.min = spC;
|
||||
data_027e0cc0.max = sp18;
|
||||
|
||||
this->mUnk_13C.Init(data_ov001_020c40f4, 0x40);
|
||||
|
||||
Vec2s_Copy(&this->mUnk_09C, &local_30);
|
||||
gpMapObjManager->func_ov001_020baea0(&local_30);
|
||||
data_027e095c->func_ov000_020592a0();
|
||||
}
|
||||
|
||||
UnkStruct_027e0cd8_0C_Base::~UnkStruct_027e0cd8_0C_Base() {
|
||||
data_027e095c->func_ov000_020592ec();
|
||||
gpMapObjManager->func_ov001_020baf28();
|
||||
DELETE(this->mUnk_098);
|
||||
this->mUnk_130 = 0;
|
||||
this->mUnk_138 = 0;
|
||||
this->mUnk_134 = 0;
|
||||
this->mUnk_154.clear();
|
||||
this->func_ov001_020b8aec();
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::vfunc_38() {}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::vfunc_08() {}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b85d0(const UnkStruct_SceneChange1 *param1) {
|
||||
this->mIsCS = param1->mIsCS;
|
||||
|
||||
wchar_t local_c8[2];
|
||||
local_c8[0] = L'\0';
|
||||
local_c8[sizeof(local_c8) / 2 - 1] = L'\0';
|
||||
snprintf((char *) local_c8, sizeof(local_c8), "M%02d", param1->mRoomIndex);
|
||||
this->mUnk_084[0] = local_c8[0];
|
||||
this->mUnk_084[1] = local_c8[1];
|
||||
|
||||
CourseListEntry *pEntry = data_027e09a0->GetCourseEntry(param1->mSceneIndex);
|
||||
|
||||
wchar_t local_34[16];
|
||||
local_34[0] = L'\0';
|
||||
local_34[sizeof(local_34) / 2 - 1] = L'\0';
|
||||
snprintf((char *) local_34, sizeof(local_34), "Map/%s/map%02d.bin", pEntry->name, param1->mRoomIndex);
|
||||
|
||||
this->mUnk_004.~UnkSystem3();
|
||||
this->mUnk_004.mUnk_00 = local_34;
|
||||
this->mUnk_004.func_0201541c((char *) local_c8, 0x10);
|
||||
this->LoadSceneModel(param1);
|
||||
|
||||
snprintf((char *) local_34, sizeof(local_34), "%s:zcb/%s_%02d.zcb", local_c8, pEntry->name, param1->mRoomIndex);
|
||||
UnkFileSystem3 local_44((char *) local_34);
|
||||
data_027e09c0->func_ov001_020be3dc(&local_44, this);
|
||||
|
||||
wchar_t local_64[16];
|
||||
local_64[0] = L'\0';
|
||||
local_64[sizeof(local_64) / 2 - 1] = L'\0';
|
||||
snprintf((char *) local_64, sizeof(local_64), "%s:zmb/%s_%02d.zmb", local_c8, pEntry->name, param1->mRoomIndex);
|
||||
UnkFileSystem3 local_74((char *) local_64);
|
||||
local_74.vfunc_08(0x10);
|
||||
|
||||
ZMBFileInfos zmbFileInfos;
|
||||
zmbFileInfos.pFile = local_74.mpFile;
|
||||
zmbFileInfos.size = local_74.mFileSize;
|
||||
zmbFileInfos.unk_08 = 0;
|
||||
zmbFileInfos.unk_0C = 0;
|
||||
zmbFileInfos.unk_10 = 0;
|
||||
zmbFileInfos.unk_14 = 0;
|
||||
ZMB_ParseFile(&zmbFileInfos, this, true);
|
||||
|
||||
gpMapObjManager->func_ov001_020bade0();
|
||||
gpActorManager->func_ov001_020bb630();
|
||||
|
||||
if (param1->mIsCS == false) {
|
||||
gpActorManager->func_ov001_020bb6b0((UnkStruct_SceneChange1 *) param1);
|
||||
}
|
||||
|
||||
data_027e095c->func_ov000_020592a0();
|
||||
|
||||
u32 isCs = this->mIsCS;
|
||||
snprintf((char *) local_34, sizeof(local_34), "%s:zob/motype_%02d_%1d.zob", local_c8, param1->mRoomIndex, isCs);
|
||||
UnkFileSystem3 local_94((char *) local_34);
|
||||
this->mUnk_0B4 = (ZeldaObjectList *) local_94.vfunc_08(sizeof(ZOBHeader));
|
||||
gpMapObjManager->func_ov001_020bae40(this->mUnk_0B4);
|
||||
for (int i = 0; i < ARRAY_LEN(this->mUnk_0B8); i++) {
|
||||
// i + 2 because 0 is the default one and 1 is the cutscene one
|
||||
snprintf((char *) local_34, sizeof(local_34), "%s:zob/motype_%02d_%1d.zob", local_c8, param1->mRoomIndex, i + 2);
|
||||
UnkFileSystem3 local_a4((char *) local_34);
|
||||
this->mUnk_0B8[i] = (ZeldaObjectList *) local_a4.vfunc_08(sizeof(ZOBHeader));
|
||||
}
|
||||
|
||||
isCs = this->mIsCS;
|
||||
snprintf((char *) local_34, sizeof(local_34), "%s:zob/npctype_%02d_%1d.zob", local_c8, param1->mRoomIndex, isCs);
|
||||
UnkFileSystem3 local_b4((char *) local_34);
|
||||
this->mUnk_0D8 = (ZeldaObjectList *) local_b4.vfunc_08(sizeof(ZOBHeader));
|
||||
gpActorManager->func_ov001_020bb7b0(this->mUnk_0D8);
|
||||
for (int i = 0; i < ARRAY_LEN(this->mUnk_0DC); i++) {
|
||||
// i + 2 because 0 is the default one and 1 is the cutscene one
|
||||
snprintf((char *) local_34, sizeof(local_34), "%s:zob/npctype_%02d_%1d.zob", local_c8, param1->mRoomIndex, i + 2);
|
||||
UnkFileSystem3 local_c4((char *) local_34);
|
||||
this->mUnk_0DC[i] = (ZeldaObjectList *) local_c4.vfunc_08(sizeof(ZOBHeader));
|
||||
}
|
||||
|
||||
data_027e09b0->func_ov000_02072cc4(0x0000, 0x7FFF);
|
||||
ZMB_ParseFile(&zmbFileInfos, this, false);
|
||||
this->vfunc_40(param1->mSpawnIndex);
|
||||
|
||||
if (param1->mSceneIndex == SceneIndex_t_area1) {
|
||||
if (GET_FLAG(data_027e09b8->mAdventureFlags, AdventureFlag_ObtainedSnowSource)) {
|
||||
this->mUnk_110 = 0x0A;
|
||||
}
|
||||
} else if (param1->mSceneIndex == SceneIndex_t_area3) {
|
||||
if (GET_FLAG(data_027e09b8->mAdventureFlags, AdventureFlag_ObtainedFireSource)) {
|
||||
this->mUnk_110 = 0x10;
|
||||
this->mUnk_114 = 0x1F;
|
||||
}
|
||||
}
|
||||
|
||||
this->func_ov001_020b8db8();
|
||||
this->func_ov001_020b8e24();
|
||||
|
||||
if (param1->mIsCS == true) {
|
||||
this->mUnk_114 = Cutscene_GetParamEntry(param1->mCutsceneIndex)->mUnk_0E;
|
||||
}
|
||||
|
||||
data_027e09ac->func_ov000_020726f0(this->mUnk_114, 0x00, 0x00);
|
||||
this->vfunc_38();
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b88c0(unk32 param1) {
|
||||
gpMapObjManager->func_ov001_020bae40(this->mUnk_0B8[param1]);
|
||||
gpActorManager->func_ov001_020bb7b0(this->mUnk_0DC[param1]);
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b88ec() {
|
||||
this->func_ov001_020b8e54();
|
||||
this->mUnk_088.func_ov000_0208261c();
|
||||
gpMapObjManager->func_ov001_020bae6c();
|
||||
gpActorManager->func_ov001_020bb7f0();
|
||||
data_027e095c->func_ov000_020592ec();
|
||||
data_027e09c0->func_ov001_020be400();
|
||||
this->mUnk_004.~UnkSystem3();
|
||||
|
||||
if (this->mUnk_128 & 0x200) {
|
||||
func_ov089_02165c34(&data_ov089_02171540);
|
||||
}
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::LoadSceneModel(const UnkStruct_SceneChange1 *param1) {
|
||||
const char *pName = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->name;
|
||||
|
||||
wchar_t local_40[20];
|
||||
local_40[0] = L'\0';
|
||||
local_40[sizeof(local_40) / 2 - 1] = L'\0';
|
||||
snprintf((char *) local_40, sizeof(local_40), "%s:nsbmd/%s_%02d.nsbmd", this->mUnk_084, pName, param1->mRoomIndex);
|
||||
UnkFileSystem3 local_50((char *) local_40);
|
||||
|
||||
wchar_t local_78[20];
|
||||
local_78[0] = L'\0';
|
||||
local_78[sizeof(local_78) / 2 - 1] = L'\0';
|
||||
const char *path = "Map/%s/map%02d.nsbtx";
|
||||
snprintf((char *) local_78, sizeof(local_78), path, pName, param1->mRoomIndex);
|
||||
|
||||
this->mUnk_070.vfunc_0C();
|
||||
this->mUnk_070.mUnk_04 = (char *) local_78;
|
||||
this->mUnk_070.vfunc_08(0x10);
|
||||
|
||||
BMDSectionModel *pBMD = func_ov000_0205abcc(&local_50, &this->mUnk_070, 0x01, 0x00, 0x00);
|
||||
G3d_Model *pModel = G3d_GetModelPtr(pBMD);
|
||||
G3d_0200e6a0(pModel, 0x00, 0x40);
|
||||
G3d_0200e6a0(pModel, 0x00, 0x80);
|
||||
this->mSceneRender.vfunc_08(pModel);
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::vfunc_1C(const UnkStruct_SceneChange1 *param1, bool param2, bool param3) {
|
||||
SceneIndex sceneIndex = param1->mSceneIndex;
|
||||
u8 roomIndex = param1->mRoomIndex;
|
||||
|
||||
if (param2 != 0) {
|
||||
if (param3 == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
roomIndex = 99;
|
||||
}
|
||||
|
||||
gpCurrentGameModeMgr->vfunc_38(sceneIndex, roomIndex, 0x01, 0x00);
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::vfunc_20() {}
|
||||
|
||||
const UnkStruct_ov001_020c40f4 *UnkStruct_027e0cd8_0C_Base::func_ov001_020b8a5c(unk32 spawnIndex, unk32 param1) {
|
||||
UnkStruct_ov001_020c40f4 *result =
|
||||
std::find_if(this->mUnk_13C.begin(), this->mUnk_13C.end(), UnkStruct_ov001_020c40f4::Predicate(spawnIndex, param1));
|
||||
|
||||
if (param1 == 0) {
|
||||
if (result == this->mUnk_13C.end()) {
|
||||
result = this->mUnk_13C.begin();
|
||||
}
|
||||
|
||||
if (result->mUnk_0F == 0) {
|
||||
result->mUnk_00.y = this->vfunc_28(&result->mUnk_00, 1, 0);
|
||||
}
|
||||
|
||||
return result;
|
||||
} else {
|
||||
if (result == this->mUnk_13C.end()) {
|
||||
return this->func_ov001_020b8a5c(spawnIndex, 0x00);
|
||||
}
|
||||
|
||||
if (result->mUnk_0F == 0) {
|
||||
result->mUnk_00.y = this->vfunc_28(&result->mUnk_00, 1, 0);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8aec() {
|
||||
STACK_PAD(0x24);
|
||||
this->mUnk_148.unk_action1();
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8b94(ZMBEntryARAB *pARAB) {
|
||||
UnkStruct_027e0cd8_0C_Base_148_00_Base *ptr = NULL;
|
||||
|
||||
if (pARAB->unk_0C == 1) {
|
||||
ptr = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Base_148_02(pARAB);
|
||||
} else if (pARAB->unk_0D == 1) {
|
||||
ptr = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Base_148_01(pARAB);
|
||||
} else {
|
||||
ptr = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Base_148_00(pARAB);
|
||||
}
|
||||
|
||||
this->mUnk_148.push_back(ptr);
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c30(const UnkStruct_027e0cd8_0C_Base_154_00 ¶m1) {
|
||||
this->mUnk_154.push_back(param1);
|
||||
}
|
||||
|
||||
void *UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c80(unk32 param1) {
|
||||
return (void *) &data_ov001_020c2a40[param1 - 0x3C];
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c90(unk32 param1) {
|
||||
this->mUnk_138 = param1;
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c98(unk32 param1) {
|
||||
this->mUnk_134 = param1;
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::vfunc_34(unk32 param1) {
|
||||
this->mUnk_130 = param1;
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::vfunc_40(u8 spawnIndex) {
|
||||
switch (spawnIndex) {
|
||||
case 0xFB:
|
||||
case 0xFC:
|
||||
case 0xFD:
|
||||
case 0xFE: {
|
||||
UnkStruct_ov001_020c40f4 stack_elem;
|
||||
UnkStruct_WarpUnk1_A0 *pEntry = data_027e09a4->func_ov000_02070538();
|
||||
VecFx32 pos = pEntry->mUnk_04;
|
||||
fx16 angle = DEG_TO_ANG(0);
|
||||
|
||||
switch (spawnIndex) {
|
||||
case 0xFB:
|
||||
pos.z = data_027e0c90.max.z - FLOAT_TO_FX32(0.5f);
|
||||
angle = DEG_TO_ANG(180);
|
||||
break;
|
||||
case 0xFC:
|
||||
pos.z = data_027e0c90.min.z + FLOAT_TO_FX32(0.5f);
|
||||
angle = DEG_TO_ANG(0);
|
||||
break;
|
||||
case 0xFD:
|
||||
pos.x = data_027e0c90.max.x - FLOAT_TO_FX32(0.5f);
|
||||
angle = DEG_TO_ANG(270);
|
||||
break;
|
||||
case 0xFE:
|
||||
pos.x = data_027e0c90.min.x + FLOAT_TO_FX32(0.5f);
|
||||
angle = DEG_TO_ANG(90);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
stack_elem.mUnk_0E = spawnIndex;
|
||||
VecFx32_Copy(&pos, &stack_elem.mUnk_00);
|
||||
stack_elem.mUnk_0C = angle;
|
||||
stack_elem.mUnk_10 = 0xFD;
|
||||
|
||||
UnkStruct_ov001_020c40f4 *pEnd = this->mUnk_13C.end();
|
||||
if (pEnd != NULL) {
|
||||
pEnd->mUnk_00 = stack_elem.mUnk_00;
|
||||
pEnd->mUnk_0C = stack_elem.mUnk_0C;
|
||||
pEnd->mUnk_0E = stack_elem.mUnk_0E;
|
||||
pEnd->mUnk_0F = stack_elem.mUnk_0F;
|
||||
pEnd->mUnk_10 = stack_elem.mUnk_10;
|
||||
pEnd->mUnk_14 = stack_elem.mUnk_14;
|
||||
}
|
||||
|
||||
this->mUnk_13C.grow_by(1);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8db8() {
|
||||
unk32 uVar1;
|
||||
|
||||
uVar1 = 0;
|
||||
switch (this->mUnk_110) {
|
||||
case 0x00:
|
||||
case 0x03:
|
||||
uVar1 = 0x0A;
|
||||
break;
|
||||
case 0x0E:
|
||||
uVar1 = 0x01;
|
||||
break;
|
||||
case 0x05:
|
||||
case 0x09:
|
||||
uVar1 = 0x02;
|
||||
break;
|
||||
case 0x0A:
|
||||
uVar1 = 0x03;
|
||||
break;
|
||||
case 0x02:
|
||||
uVar1 = 0x04;
|
||||
break;
|
||||
case 0x0F:
|
||||
uVar1 = 0x05;
|
||||
break;
|
||||
case 0x10:
|
||||
uVar1 = 0x06;
|
||||
break;
|
||||
case 0x08:
|
||||
uVar1 = 0x00;
|
||||
break;
|
||||
case 0x0C:
|
||||
uVar1 = 0x09;
|
||||
break;
|
||||
case 0x06:
|
||||
uVar1 = 0x07;
|
||||
break;
|
||||
case 0x01:
|
||||
case 0x07:
|
||||
case 0x04:
|
||||
case 0x0B:
|
||||
break;
|
||||
default:
|
||||
uVar1 = 0x00;
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_088.func_ov000_020823a8(uVar1);
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8e24() {
|
||||
if (this->mUnk_110 == 7 && this->mUnk_098 == NULL) {
|
||||
this->mUnk_098 = new(HeapIndex_1) UnkStruct_027e0cd8_0C_Base_98();
|
||||
}
|
||||
}
|
||||
|
||||
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8e54() {
|
||||
DELETE(this->mUnk_098);
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ void CargoManager::RemoveAmount(unk32 decr) {
|
||||
|
||||
bool CargoManager::func_ov017_020bec9c() {
|
||||
if (data_027e09a4->IsTrain()) {
|
||||
return data_027e0cd8->mUnk_0C->mUnk_160->func_ov026_02106aa8();
|
||||
return data_027e0cd8->GetUnk0C()->mUnk_160->func_ov026_02106aa8();
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
@@ -123,7 +123,7 @@ SaveManager::SaveManager() {
|
||||
this->mUnk_20A = 0;
|
||||
this->mUnk_214 = 0;
|
||||
this->mpSaveFile = NULL;
|
||||
this->mUnk_244 = 0;
|
||||
this->mUnk_244 = NULL;
|
||||
|
||||
func_020327c8(&this->mUnk_004, 0x1021);
|
||||
|
||||
|
||||
@@ -117,8 +117,8 @@ void ActorUnkOBPC::SetState(ActorState state, int param2) {
|
||||
}
|
||||
|
||||
bool ActorUnkOBPC::func_ov024_020d7154(void) {
|
||||
u8 temp_r4 = this->mUnk_5C.mParams[0];
|
||||
UnkStruct_027e0cd8_0c *temp_r5 = data_027e0cd8->mUnk_0C;
|
||||
u8 temp_r4 = this->mUnk_5C.mParams[0];
|
||||
UnkStruct_027e0cd8_0C_Base *temp_r5 = data_027e0cd8->mUnk_0C;
|
||||
ActorManager *pActorMgr;
|
||||
VecFx32 sp10;
|
||||
|
||||
|
||||
@@ -601,8 +601,8 @@ void AdventureModeManager::vfunc_34(unk32 param1, unk32 param2) {
|
||||
}
|
||||
}
|
||||
|
||||
void AdventureModeManager::vfunc_38(u32 param1, u8 param2, unk16 param3, unk16 param4) {
|
||||
this->func_ov024_020c6514(param1, param2, param3, param4);
|
||||
void AdventureModeManager::vfunc_38(u32 sceneIndex, u8 roomIndex, unk16 param3, unk16 param4) {
|
||||
this->func_ov024_020c6514(sceneIndex, roomIndex, param3, param4);
|
||||
}
|
||||
|
||||
void AdventureModeManager::func_ov024_020c6514(SceneIndex sceneIndex, u8 param2, unk16 param3, unk16 param4) {
|
||||
|
||||
@@ -40,7 +40,7 @@ void AdventureModeManager_184::vfunc_0C(unk32 param1) {
|
||||
}
|
||||
|
||||
data_0204a088->func_ov000_02061248();
|
||||
MapObjectId mapObjId = data_027e09b8->mUnk_0C->mMapObjId;
|
||||
MapObjectId mapObjId = data_027e09b8->GetUnk0C()->mMapObjId;
|
||||
|
||||
if (data_027e09a4->IsTrain() || (data_027e09b8->func_ov000_020732dc(2) &&
|
||||
(mapObjId != MapObjectId_WDST ||
|
||||
@@ -77,7 +77,7 @@ void AdventureModeManager_184::func_ov024_020c979c(unk32 param1) {
|
||||
return;
|
||||
}
|
||||
|
||||
MapObjectId mapObjId = data_027e09b8->mUnk_0C->mMapObjId;
|
||||
MapObjectId mapObjId = data_027e09b8->GetUnk0C()->mMapObjId;
|
||||
|
||||
if (data_027e09a4->IsTrain()) {
|
||||
if (data_027e09a4->IsDarkRealm()) {
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
#include "files.h"
|
||||
|
||||
#include <nitro/mi.h>
|
||||
#include <printf.h>
|
||||
|
||||
extern "C" void func_02026800(void *, int, const char *, ...);
|
||||
extern "C" unk32 func_02032784(unk32 param1);
|
||||
extern "C" unk32 func_ov000_0205c7ac(unk32, unk32);
|
||||
extern "C" bool func_ov000_0205c74c(unk32, unk32, unk32, unk32);
|
||||
@@ -55,20 +55,20 @@ void UnkDataStruct4::func_ov024_020d258c(u32 sceneIndex, u8 roomIndex) {
|
||||
|
||||
sp10[0] = L'\0';
|
||||
sp10[1] = L'\0';
|
||||
func_02026800(sp10, sizeof(sp10), "T%02d", roomIndex);
|
||||
snprintf((char *) sp10, sizeof(sp10), "T%02d", roomIndex);
|
||||
|
||||
sp34[0] = L'\0';
|
||||
sp34[15] = L'\0';
|
||||
pEntry = data_027e09a0->GetCourseEntry(sceneIndex);
|
||||
const char *string = "Map/%s/train%02d.bin";
|
||||
func_02026800(sp34, sizeof(sp34), string, pEntry->name, roomIndex);
|
||||
snprintf((char *) sp34, sizeof(sp34), string, pEntry->name, roomIndex);
|
||||
|
||||
UnkStruct2 sp24(NULL, 1);
|
||||
sp24.mUnk_04 = (char *) sp34;
|
||||
sp24.func_020154ec((char *) sp10);
|
||||
|
||||
pEntry = data_027e09a0->GetCourseEntry(sceneIndex);
|
||||
func_02026800(sp34, sizeof(sp34), "%s:ztb/%s_%02d.ztb", sp10, pEntry->name, roomIndex);
|
||||
snprintf((char *) sp34, sizeof(sp34), "%s:ztb/%s_%02d.ztb", sp10, pEntry->name, roomIndex);
|
||||
|
||||
UnkFileSystem3 sp14((char *) sp34);
|
||||
sp14.vfunc_08(0x10);
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
#include "Unknown/UnkStruct_027e0d00.hpp"
|
||||
// clang-format on
|
||||
|
||||
extern "C" void func_02026800(void *, int, const char *, ...);
|
||||
#include <printf.h>
|
||||
|
||||
extern const char *data_ov000_020aa244; // ".narc"
|
||||
extern const char *data_ov000_020aa24c; // ".bin"
|
||||
extern const char *data_ov000_020aa250[4];
|
||||
@@ -24,11 +25,11 @@ DATA_ALIGN_FIX();
|
||||
|
||||
void UnkStruct_027e0d00_20::func_ov024_020d4e9c(wchar_t *param1, unk32 param2, bool param3) {
|
||||
const char *fileExt = param3 ? data_ov000_020aa24c : data_ov000_020aa244;
|
||||
func_02026800(param1, 0x40, "%s/anim%s", data_ov024_020d8474[param2], fileExt);
|
||||
snprintf((char *) param1, 0x40, "%s/anim%s", data_ov024_020d8474[param2], fileExt);
|
||||
}
|
||||
|
||||
void UnkStruct_027e0d00_20::func_ov024_020d4edc(wchar_t *param1, wchar_t *param2, unk32 param3) {
|
||||
func_02026800(param1, 0x40, "%s:/anm%s", param2, data_ov000_020aa250[param3]);
|
||||
snprintf((char *) param1, 0x40, "%s:/anm%s", param2, data_ov000_020aa250[param3]);
|
||||
}
|
||||
|
||||
UnkStruct_027e0d00_20::UnkStruct_027e0d00_20(unk32 param1, unk32 param2) :
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#include "versions.h"
|
||||
|
||||
extern "C" void func_01ffedac(u16 *, VecFx32 *);
|
||||
extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0c *, VecFx32 *);
|
||||
extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0C_Base *, VecFx32 *);
|
||||
extern "C" void func_ov000_0205c1f0(unk32 *, u16);
|
||||
extern "C" void func_ov000_0205c204(unk32 *, VecFx32 *, unk32, unk32, unk32);
|
||||
extern "C" void func_ov017_020bf99c();
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "Unknown/UnkStruct_027e0d34.hpp"
|
||||
|
||||
extern "C" void func_01ffedac(u16 *, VecFx32 *);
|
||||
extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0c *, VecFx32 *);
|
||||
extern "C" void func_01fff05c(u32 *, UnkStruct_027e0cd8_0C_Base *, VecFx32 *);
|
||||
extern "C" unk32 func_02017158();
|
||||
extern "C" void func_ov017_020bf99c();
|
||||
extern "C" void func_ov031_0210acd4(u8);
|
||||
@@ -472,7 +472,7 @@ void ActorRupee::func_ov031_020e9740() {
|
||||
unk32 sp4;
|
||||
unk32 *psp4;
|
||||
s32 temp_r2;
|
||||
UnkStruct_027e0cd8_0c *temp_r0;
|
||||
UnkStruct_027e0cd8_0C_Base *temp_r0;
|
||||
|
||||
func_01ffedac(&sp0, &this->mPos);
|
||||
sp4 = 0;
|
||||
|
||||
@@ -19,7 +19,7 @@ ActorUnkNORE::ActorUnkNORE() {}
|
||||
bool ActorUnkNORE::vfunc_18(unk32 param1) {
|
||||
Vec2b local_vec;
|
||||
|
||||
UnkStruct_027e0cd8_0c *unk_obj = data_027e0cd8->mUnk_0C;
|
||||
UnkStruct_027e0cd8_0C_Base *unk_obj = data_027e0cd8->mUnk_0C;
|
||||
|
||||
func_01ffedac(&local_vec, &this->mPos);
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ bool MapObjectChestBase::vfunc_00() {
|
||||
SET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
this->mUnk_18[0] = 0x0D;
|
||||
|
||||
UnkStruct_027e0cd8_0c *pUVar2 = data_027e0cd8->mUnk_0C;
|
||||
UnkStruct_027e0cd8_0C_Base *pUVar2 = data_027e0cd8->mUnk_0C;
|
||||
|
||||
if (this->mUnk_20.mUnk_00[3] == 1) {
|
||||
this->mPos.x += 0x7FC;
|
||||
@@ -91,7 +91,7 @@ bool MapObjectChestBase::vfunc_00() {
|
||||
// non-matching
|
||||
void MapObjectChestBase::vfunc_04() {
|
||||
fx32 iVar2;
|
||||
UnkStruct_027e0cd8_0c *pUVar5;
|
||||
UnkStruct_027e0cd8_0C_Base *pUVar5;
|
||||
VecFx32 sp48;
|
||||
VecFx32 sp3C;
|
||||
VecFx32 local_38;
|
||||
|
||||
@@ -61,7 +61,7 @@ bool MapObjectDoorDangerSpawn::vfunc_00(void) {
|
||||
}
|
||||
|
||||
void MapObjectDoorDangerSpawn::vfunc_04(void) {
|
||||
UnkStruct_027e0cd8_0c *ptr;
|
||||
UnkStruct_027e0cd8_0C_Base *ptr;
|
||||
VecFx32 auStack_20;
|
||||
|
||||
if (this->mUnk_20.mUnk_00[1] == 2) {
|
||||
@@ -403,7 +403,7 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
bool MapObjectDoorDangerSpawn::vfunc_64(void) {
|
||||
UnkStruct_027e0cd8_0c *pUVar4;
|
||||
UnkStruct_027e0cd8_0C_Base *pUVar4;
|
||||
unk32 var_r0;
|
||||
bool var_r5;
|
||||
|
||||
@@ -441,7 +441,7 @@ bool MapObjectDoorDangerSpawn::vfunc_64(void) {
|
||||
}
|
||||
|
||||
bool MapObjectDoorDangerSpawn::vfunc_68(void) {
|
||||
UnkStruct_027e0cd8_0c *pUVar2 = data_027e0cd8->mUnk_0C;
|
||||
UnkStruct_027e0cd8_0C_Base *pUVar2 = data_027e0cd8->mUnk_0C;
|
||||
|
||||
if (this->mUnk_20.mUnk_00[2] == 1) {
|
||||
if (func_ov000_0209d29c(1)) {
|
||||
@@ -466,7 +466,7 @@ bool MapObjectDoorDangerSpawn::vfunc_68(void) {
|
||||
}
|
||||
|
||||
bool MapObjectDoorDangerSpawn::vfunc_6C(void) {
|
||||
UnkStruct_027e0cd8_0c *pUVar5;
|
||||
UnkStruct_027e0cd8_0C_Base *pUVar5;
|
||||
|
||||
switch (this->mUnk_20.mUnk_00[1]) {
|
||||
case 1:
|
||||
@@ -520,7 +520,7 @@ bool MapObjectDoorDangerSpawn::vfunc_6C(void) {
|
||||
}
|
||||
|
||||
bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) {
|
||||
UnkStruct_027e0cd8_0c *pUVar4;
|
||||
UnkStruct_027e0cd8_0C_Base *pUVar4;
|
||||
VecFx32 *uVar3;
|
||||
int iVar1;
|
||||
|
||||
@@ -548,7 +548,7 @@ bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) {
|
||||
}
|
||||
|
||||
pUVar4 = data_027e0cd8->mUnk_0C;
|
||||
uVar3 = pUVar4->func_ov001_020b8a5c(data_027e09a4->func_ov000_02070560()->mSpawnIndex, 0);
|
||||
uVar3 = (VecFx32 *) &pUVar4->func_ov001_020b8a5c(data_027e09a4->func_ov000_02070560()->mSpawnIndex, 0)->mUnk_00;
|
||||
|
||||
if (pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], uVar3)) {
|
||||
return true;
|
||||
|
||||
@@ -416,7 +416,7 @@ void PlayerSceneChange::vfunc_0C(UnkStruct_PlayerGet_vfunc_0C_param1 *param1) {
|
||||
case 0x1E:
|
||||
case 0x1F:
|
||||
default:
|
||||
UnkStruct_027e0cd8_0c *ptr = data_027e0cd8->mUnk_0C;
|
||||
UnkStruct_027e0cd8_0C_Base *ptr = data_027e0cd8->mUnk_0C;
|
||||
|
||||
switch (this->mUnk_68) {
|
||||
case 0x0F:
|
||||
@@ -682,9 +682,9 @@ void PlayerSceneChange::vfunc_10(unk32 param1, unk32 param2) {
|
||||
case 0x11:
|
||||
case 0x13:
|
||||
case 0x24: {
|
||||
UnkStruct_027e0cd8_0c *temp_r0_13 = data_027e0cd8->mUnk_0C;
|
||||
fx32 temp_r0_14 = temp_r0_13->vfunc_28(this->mUnk_34, 0, 0);
|
||||
VecFx32 *temp_r2_9 = this->mUnk_34;
|
||||
UnkStruct_027e0cd8_0C_Base *temp_r0_13 = data_027e0cd8->mUnk_0C;
|
||||
fx32 temp_r0_14 = temp_r0_13->vfunc_28(this->mUnk_34, 0, 0);
|
||||
VecFx32 *temp_r2_9 = this->mUnk_34;
|
||||
|
||||
if (temp_r2_9->y < temp_r0_14) {
|
||||
temp_r2_9->y = temp_r0_14;
|
||||
|
||||
@@ -125,14 +125,14 @@ void GameModeManagerBase::func_0201875c(void) {
|
||||
}
|
||||
}
|
||||
|
||||
struct UnkStruct5 {
|
||||
struct UnkStruct6 {
|
||||
void *a;
|
||||
unk32 b;
|
||||
};
|
||||
|
||||
void GameModeManagerBase::func_02018830(unk8 *param1) {
|
||||
unk32 id = this->mNextButtonID;
|
||||
UnkStruct5 local_28;
|
||||
UnkStruct6 local_28;
|
||||
local_28.a = param1;
|
||||
local_28.b = id;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user