Decompile overlay 1 (Part 3) (#95)

* ZeldaArrangeBinary OK

* ZeldaMapBinary 26%

* UnkStruct_SceneChange1 -> EntranceInfo

* cleanup EntranceInfo ctors

* fix regressions

* ZeldaMapBinary 47%

* fix regressions

* ZeldaMapBinary 73%

* ZeldaMapBinary 89%

* ZeldaMapBinary 99%
This commit is contained in:
Yanis
2026-07-01 04:09:04 +02:00
committed by GitHub
parent 6ea40b4493
commit 4074a603d2
76 changed files with 1924 additions and 643 deletions
+4 -4
View File
@@ -21,11 +21,11 @@ ActorProfileUnkSWOB::ActorProfileUnkSWOB() :
ActorUnkSWOB::ActorUnkSWOB() {}
bool ActorUnkSWOB::vfunc_18(unk32 param1) {
this->mUnk_9E = this->mUnk_5C.mUnk_1C_0;
this->mUnk_9E = this->mUnk_5C.mUnk_1A[1];
this->mUnk_94 = this->mUnk_5C.mParams[1];
this->mUnk_98 = this->mUnk_5C.mParams[2];
this->mUnk_A0 = this->mUnk_9E + this->mUnk_5C.mParams[0];
this->mUnk_A2 = this->mUnk_5C.mUnk_18.y;
this->mUnk_A2 = this->mUnk_5C.mUnk_18[1];
this->mUnk_9C = this->mUnk_9E;
if (this->func_ov000_02098a60(0)) {
@@ -73,9 +73,9 @@ void ActorUnkSWOB::func_ov000_0209aa30(void) {
case 3:
data_ov000_020b5214.func_ov000_0206db44(0xA3);
s16 unk_78 = this->mUnk_5C.mUnk_1C_0;
s16 unk_78 = this->mUnk_5C.mUnk_1A[1];
if (unk_78 > 0) {
data_027e0cd8->func_ov000_02081d7c((s16) (unk_78 - 1), this->mUnk_5C.mUnk_18.y, true);
data_027e0cd8->func_ov000_02081d7c((s16) (unk_78 - 1), this->mUnk_5C.mUnk_18[1], true);
}
break;
case 2: {
+2 -2
View File
@@ -30,11 +30,11 @@ ActorUnkSWTM::~ActorUnkSWTM() {
// https://decomp.me/scratch/qkP8m
bool ActorUnkSWTM::vfunc_18(unk32 param1) {
this->mUnk_9E = this->mUnk_5C.mUnk_1C_0;
this->mUnk_9E = this->mUnk_5C.mUnk_1A[1];
this->mUnk_98 = this->mUnk_5C.mParams[2];
this->mUnk_A4 = this->mUnk_5C.mParams[1] * 30;
this->mUnk_A0 = this->mUnk_9E + this->mUnk_5C.mParams[0];
this->mUnk_A2 = this->mUnk_5C.mUnk_18.y;
this->mUnk_A2 = this->mUnk_5C.mUnk_18[1];
this->mUnk_9C = this->mUnk_9E;
if (this->func_ov000_02098a60(0)) {
+2 -2
View File
@@ -69,11 +69,11 @@ void Actor_Derived1::vfunc_1C() {
}
bool Actor_Derived1::func_ov000_020a8db0() {
return data_027e0cd8->func_ov000_02081e30(this->mUnk_5C.mUnk_1A, this->mUnk_5C.mUnk_18.x);
return data_027e0cd8->func_ov000_02081e30(this->mUnk_5C.mUnk_1A[0], this->mUnk_5C.mUnk_18[0]);
}
bool Actor_Derived1::func_ov000_020a8dd0() {
return data_027e0cd8->func_ov000_02081e30(this->mUnk_5C.mUnk_1C_0, this->mUnk_5C.mUnk_18.y);
return data_027e0cd8->func_ov000_02081e30(this->mUnk_5C.mUnk_1A[1], this->mUnk_5C.mUnk_18[1]);
}
// non-matching
+1 -1
View File
@@ -826,7 +826,7 @@ CutsceneParamsEntry *Cutscene_GetParamEntry(s32 csIndex) {
return (CutsceneParamsEntry *) &gCSParamsEntries[csIndex];
}
s32 func_ov000_020a7840(unk32 param1) {}
s32 func_ov000_020a7840(unk32 param1, unk32 param2) {}
bool Cutscene_IsAdventureFlagSet(s32 csIndex) {
CutsceneParamsEntry *pEntry = Cutscene_GetParamEntry(csIndex);
+6 -6
View File
@@ -21,7 +21,7 @@ MapObject::MapObject() {
this->mUnk_10 = NULL;
this->mUnk_16 = -1;
this->mFlags[0] = 0;
this->mUnk_20.func_ov000_0209c7c8();
this->mUnk_20.Init();
*(u32 *) &this->mUnk_38 = 0;
UnkStruct_ov000_020b5d34 *ptr1 = &data_ov000_020b5d34;
@@ -54,7 +54,7 @@ bool MapObject::vfunc_00() {
void MapObject::vfunc_04() {}
void MapObject::func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx) {
void MapObject::func_ov000_0209d0bc(Vec2bCpp *param1, MapObject *thisx) {
VecFx32 pos;
Vec2p out;
@@ -71,13 +71,13 @@ void MapObject::func_ov000_0209d0bc(Vec2b *param1, MapObject *thisx) {
bool MapObject::func_ov000_0209d114() {
bool result[2];
MapObject::func_ov000_0209d0bc((Vec2b *) &result, this);
MapObject::func_ov000_0209d0bc((Vec2bCpp *) &result, this);
return result[0];
}
bool MapObject::func_ov000_0209d12c() {
bool result[2];
MapObject::func_ov000_0209d0bc((Vec2b *) &result, this);
MapObject::func_ov000_0209d0bc((Vec2bCpp *) &result, this);
return result[1];
}
@@ -145,9 +145,9 @@ void MapObject::func_ov000_0209d2c4(unk32 param1, bool param2) {
data_027e0cd8->func_ov000_02081d7c(this->mUnk_20.mUnk_0A[param1], this->mUnk_20.mUnk_08[param1], param2);
}
void MapObject::func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2b *param3) {
void MapObject::func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2bCpp *param3) {
UnkStruct_027e0cd8_0C_Base *temp_r5 = data_027e0cd8->mUnk_0C;
Vec2b sp0(0, 0);
Vec2bCpp sp0(0, 0);
sp0.x = this->mUnk_3A.x;
@@ -0,0 +1,60 @@
#include "MapObject/MapObjectManager.hpp"
#include "Unknown/UnkStruct_027e0cd8.hpp"
#include "Unknown/UnkStruct_ov000_020b5d34.hpp"
MapObject *MapObjectManager::AllocateMapObject(MapObjectId mapObjId, Vec2b param2, u16 param3, unk32 param4, u8 param5) {
s16 *pUnkPos = &this->mUnk_0C[param2.y][param2.x];
if (*pUnkPos >= 0) {
return NULL;
}
MapObject **ppTable = this->mMapObjTable;
while (ppTable != this->mMapObjTableEnd && *ppTable != NULL ? true : false) {
ppTable++;
}
if (ppTable != this->mMapObjTableEnd) {
VecFx32 sp14;
UnkStruct_MapObjCreateData spawnData;
spawnData.raw_pos = 0;
spawnData.unk_00 = 0x1000;
spawnData.pos.x = param2.x;
spawnData.pos.y = param2.y;
data_027e0cd8->mUnk_0C->func_ov000_020808f4(&sp14, (void *) &param2, param5);
UnkStruct_ov000_020b5d34_00 args;
args.mUnk_00 = (unk32 *) &spawnData;
args.mUnk_04 = (MapObject_20 *) param4;
args.mUnk_08 = &sp14;
args.mUnk_0C = (s16 *) &param3;
data_ov000_020b5d34.mUnk_00 = &args;
MapObject *pMapObj = data_ov000_020b5d34.CreateMapObject(mapObjId);
*ppTable = pMapObj;
if (pMapObj->vfunc_00()) {
// init was successful, proceed and return the pointer
// this seems to set map object table index in an array that uses tile pos to figure out which map obj it is
*pUnkPos = ppTable - this->mMapObjTable;
MapObject **ppNext = ppTable + 1;
if (ppNext <= this->mUnk_08) {
ppNext = this->mUnk_08;
}
this->mUnk_08 = ppNext;
return pMapObj;
} else {
// init failed, destroy the new map object and return NULL
delete pMapObj;
*ppTable = NULL;
}
}
return NULL;
}
@@ -35,12 +35,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]]);
->func_ov000_0209ccd8(this->mUnk_20.mParams[1], data_ov000_020af574[this->mUnk_20.mParams[1]]);
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);
if (this->mUnk_20.mParams[1] != MiniBlocksVariant_BLKF) {
Vec2bCpp vec(this->mUnk_3A.x, this->mUnk_3A.y);
this->mPos.y = pUnkStruct_027e0cd8_0C->func_01ffedf4(&vec);
}
@@ -50,7 +50,7 @@ bool MapObjectMiniBlocks::vfunc_00(void) {
vec.z = FLOAT_TO_FX32(0.0f);
uVar6 = 0;
switch (this->mUnk_20.mUnk_00[0]) {
switch (this->mUnk_20.mParams[0]) {
case 4:
case 5:
case 6:
@@ -64,7 +64,7 @@ bool MapObjectMiniBlocks::vfunc_00(void) {
uVar6 = 2;
break;
default:
if (this->mUnk_20.mUnk_00[1] == MiniBlocksVariant_BLKF) {
if (this->mUnk_20.mParams[1] == MiniBlocksVariant_BLKF) {
vec.x = FLOAT_TO_FX32(0.0f);
vec.y = FLOAT_TO_FX32(0.0f);
vec.z = -FLOAT_TO_FX32(0.375f);
@@ -76,12 +76,12 @@ bool MapObjectMiniBlocks::vfunc_00(void) {
break;
}
BMDSectionModel *pSectionModel = GET_PROFILE(MapObjectProfileMiniBlocks)->vfunc_1C(this->mUnk_20.mUnk_00[1])->mUnk_50;
BMDSectionModel *pSectionModel = GET_PROFILE(MapObjectProfileMiniBlocks)->vfunc_1C(this->mUnk_20.mParams[1])->mUnk_50;
this->mUnk_40.vfunc_08(G3d_GetModelVariantPtr(pSectionModel, uVar6));
unk32 var_r0_2;
unk32 var_r0;
switch (this->mUnk_20.mUnk_00[0]) {
switch (this->mUnk_20.mParams[0]) {
case 1:
case 6:
case 8:
@@ -18,10 +18,10 @@ void MapObject_20::func_ov000_0209c7ac(MapObjectId mapObjId) {
data_ov000_020b5d3c[UnkStruct_ov000_020b5d34::func_ov000_0209c718(mapObjId)] = NULL;
}
void MapObject_20::func_ov000_0209c7c8() {
void MapObject_20::Init() {
this->mUnk_16 = 0;
this->mUnk_10 = 0;
MI_CpuFill32(0, this->mUnk_00, sizeof(this->mUnk_00));
MI_CpuFill32(0, this->mParams, sizeof(this->mParams));
MI_CpuFill16(0, this->mUnk_08, sizeof(this->mUnk_08));
MI_CpuFill16(0, this->mUnk_0A, sizeof(this->mUnk_0A));
this->mUnk_14 = -1;
@@ -99,7 +99,7 @@ MapObjectSwitchStep::MapObjectSwitchStep() :
}
MapObjectSwitchStep::~MapObjectSwitchStep() {
if (this->mUnk_20.mUnk_00[0] == 2) {
if (this->mUnk_20.mParams[0] == 2) {
this->func_ov000_0209e11c(0, 1);
this->func_ov000_0209d2c4(0, false);
}
@@ -118,7 +118,7 @@ bool MapObjectSwitchStep::vfunc_00(void) {
this->func_ov000_0209e11c(0, 1);
}
if (data_027e09a4->mUnk_00.mSceneIndex >= SceneIndex_battle01 && data_027e09a4->mUnk_00.mSceneIndex < SceneIndex_Max) {
if (data_027e09a4->mUnk_00.sceneIndex >= SceneIndex_battle01 && data_027e09a4->mUnk_00.sceneIndex < SceneIndex_Max) {
MapObjectSwitchStep_data_020b6118.func_ov000_0205fc20(0x78, 0x0C, NULL, NULL);
SET_FLAG(this->mFlags, MapObjFlag_5);
}
@@ -160,8 +160,8 @@ void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) {
this->mUnk_EA = 1;
}
if (this->mUnk_20.mUnk_00[0] == 2) {
this->mUnk_E6 = this->mUnk_20.mUnk_00[1];
if (this->mUnk_20.mParams[0] == 2) {
this->mUnk_E6 = this->mUnk_20.mParams[1];
this->mUnk_E4 = 0;
}
@@ -203,7 +203,7 @@ void MapObjectSwitchStep::vfunc_18(s8 *param1, s8 param2) {
return;
}
if (data_027e09a4->mUnk_00.mSceneIndex >= SceneIndex_battle01 && data_027e09a4->mUnk_00.mSceneIndex < SceneIndex_Max) {
if (data_027e09a4->mUnk_00.sceneIndex >= SceneIndex_battle01 && data_027e09a4->mUnk_00.sceneIndex < SceneIndex_Max) {
Vec2s sp10;
stack_struct sp8;
u32 sp4;
+16 -16
View File
@@ -27,9 +27,9 @@ struct UnkStruct_ov000_020ab1ac {
};
extern UnkStruct_ov000_020ab1ac data_ov000_020ab1ac[30];
const u32 data_ov001_020c2638[] = {ActorId_FOMC, ActorId_FOMA, ActorId_FOMB, ActorId_FOPD, ActorId_FOMR};
const u16 data_ov001_020c2624[] = {0x01AE, 0x01AF, 0x01B0, 0x01B1, 0x01B2};
const u16 data_ov001_020c262e[] = {0x01CB, 0x01CC, 0x01CD, 0x01CE, 0x01CF};
const ActorId data_ov001_020c2638[] = {ActorId_FOMC, ActorId_FOMA, ActorId_FOMB, ActorId_FOPD, ActorId_FOMR};
const u16 data_ov001_020c2624[] = {0x01AE, 0x01AF, 0x01B0, 0x01B1, 0x01B2};
const u16 data_ov001_020c262e[] = {0x01CB, 0x01CC, 0x01CD, 0x01CE, 0x01CF};
THUMB_BEGIN
@@ -95,7 +95,7 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) {
int aligned0A = ALIGN_NEXT(unk_0A, 8);
int aligned08 = ALIGN_NEXT(unk_08, 8);
int iVar5 = data_027e09a0->func_ov000_020702a8(data_027e09a4->mUnk_00.mSceneIndex)->mUnk_20;
int iVar5 = data_027e09a0->func_ov000_020702a8(data_027e09a4->CurrentSceneIndex())->mUnk_20;
s32 allocCount;
if (data_027e09a4->mUnk_60 == 0) {
@@ -121,7 +121,7 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) {
unk32 iVar5;
if (data_027e09a4->IsLand() != 0) {
iVar5 = data_027e09a4->mUnk_00.mSceneIndex;
iVar5 = data_027e09a4->CurrentSceneIndex();
if (iVar5 == SceneIndex_f_rabbit) {
this->mUnk_34 = 0xFFFFECCD; // ~0x1332
@@ -196,7 +196,7 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) {
}
}
if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00.mSceneIndex)) {
if (data_027e09a4->UnkCheck(data_027e09a4->CurrentSceneIndex())) {
func_ov071_0215e8d4();
}
@@ -209,7 +209,7 @@ void ActorManager::func_ov001_020bb018(ZOBHeader *pHeader) {
void ActorManager::func_ov001_020bb414() {
func_ov001_020ba59c(&data_0204999c);
if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00.mSceneIndex)) {
if (data_027e09a4->UnkCheck(data_027e09a4->CurrentSceneIndex())) {
this->func_ov001_020bb844();
}
@@ -241,7 +241,7 @@ void ActorManager::func_ov001_020bb488() {
data_027e0cf4->func_ov021_020f8cdc();
}
if (data_027e09a4->UnkCheck(data_027e09a4->mUnk_00.mSceneIndex)) {
if (data_027e09a4->UnkCheck(data_027e09a4->CurrentSceneIndex())) {
data_027e0d70->func_ov071_0215e8f8();
}
}
@@ -261,7 +261,7 @@ void ActorManager::func_ov001_020bb548() {
i++;
}
unk32 value = data_027e09a4->mUnk_00.mSceneIndex;
unk32 value = data_027e09a4->CurrentSceneIndex();
if (data_027e09a4->UnkCheck(value)) {
data_027e0d70->func_ov071_0215e9ac();
@@ -307,7 +307,7 @@ void ActorManager::func_ov001_020bb630() {
}
}
void ActorManager::func_ov001_020bb6b0(UnkStruct_SceneChange1 *param1) {
void ActorManager::func_ov001_020bb6b0(EntranceInfo *param1) {
ActorProfile **piVar1 = data_ov000_020b539c_eur.func_ov000_02073dc();
ActorProfile **piVar2 = data_ov000_020b539c_eur.func_ov000_02073e8();
@@ -318,8 +318,8 @@ 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->mSceneIndex &&
pEntry->mUnk_08 == param1->mRoomIndex) {
if (pEntry->mUnk_00 == iVar5->mActorId && pEntry->mUnk_04 == param1->sceneIndex &&
pEntry->mUnk_08 == param1->roomIndex) {
(*piVar1)->mUnk_39 = 1;
(*piVar1)->vfunc_08();
}
@@ -331,10 +331,10 @@ void ActorManager::func_ov001_020bb6b0(UnkStruct_SceneChange1 *param1) {
}
}
bool ActorManager::func_ov001_020bb728(s32 param1) {
UnkStruct_SceneChange1 *piVar1 = data_027e09a4->func_ov000_02070560();
bool ActorManager::func_ov001_020bb728(ActorId actorId) {
EntranceInfo *piVar1 = data_027e09a4->func_ov000_02070560();
if (piVar1->mSceneIndex != SceneIndex_f_water || piVar1->mRoomIndex != 0) {
if (piVar1->sceneIndex != SceneIndex_f_water || piVar1->roomIndex != 0) {
return false;
}
@@ -342,7 +342,7 @@ bool ActorManager::func_ov001_020bb728(s32 param1) {
int value;
int value2;
if (param1 == data_ov001_020c2638[i]) {
if (actorId == data_ov001_020c2638[i]) {
value = data_ov001_020c2624[i] & 0x1F;
value2 = data_027e09b8->mAdventureFlags[(u32) data_ov001_020c2624[i] >> 5];
+1 -1
View File
@@ -11,7 +11,7 @@ void ItemManager::func_ov001_020bb9f8() {
this->mTearsAmount = 0;
}
CourseListEntry *pEntry = data_027e09a0->GetCourseEntry(data_027e09a4->mUnk_00.mSceneIndex);
CourseListEntry *pEntry = data_027e09a0->GetCourseEntry(data_027e09a4->CurrentSceneIndex());
if (pEntry->saveCourseIndex < SaveCourseIndex_Max) {
this->mKeyAmount = gSaveManager.mUnk_000->unk_030[pEntry->saveCourseIndex].keyAmount;
+3 -3
View File
@@ -26,7 +26,7 @@ inline bool Test3(s32 val) {
bool ret = true;
if (!Test2(val)) {
if (*((volatile unk32 *) &data_027e09a4->mUnk_00.mSceneIndex) != 36) {
if (*((volatile unk32 *) &data_027e09a4->mUnk_00.sceneIndex) != 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->mUnk_00.mSceneIndex;
s32 sceneIndex = data_027e09a4->mUnk_00.sceneIndex;
bool ret = true;
if (!Test3(sceneIndex)) {
if (*((volatile unk32 *) &data_027e09a4->mUnk_00.mSceneIndex) != 37) {
if (*((volatile unk32 *) &data_027e09a4->mUnk_00.sceneIndex) != 37) {
ret = false;
}
}
+28 -25
View File
@@ -69,7 +69,9 @@ UnkStruct_027e09a4 *UnkStruct_027e09a4::Create(unk32 param1) {
return new(HeapIndex_1) UnkStruct_027e09a4(param1);
}
UnkStruct_027e09a4::UnkStruct_027e09a4(unk32 param1) {
UnkStruct_027e09a4::UnkStruct_027e09a4(unk32 param1) :
mUnk_00(false),
mUnk_14(false) {
this->mUnk_28 = 0;
this->mUnk_54 = NULL;
this->mpWarpUnk1 = NULL;
@@ -108,7 +110,7 @@ UnkStruct_027e09a4::UnkStruct_027e09a4(unk32 param1) {
void UnkStruct_027e09a4::func_ov001_020b662c() {
UnkStruct_WarpUnk1 *ptr = this->mpWarpUnk1;
ptr->mUnk_78 = this->mUnk_00;
ptr->mCurEntrance = this->mUnk_00;
this->mUnk_14 = this->mUnk_00;
this->func_ov001_020b6758(&this->mUnk_00, false);
}
@@ -144,7 +146,7 @@ void UnkStruct_027e09a4::func_ov001_020b66dc() {
UnkStruct_027e09a0::Destroy();
}
void UnkStruct_027e09a4::func_ov001_020b6758(const UnkStruct_SceneChange1 *param1, bool param2) {
void UnkStruct_027e09a4::func_ov001_020b6758(const EntranceInfo *param1, bool param2) {
OverlayIndex index;
unk32 unk_10;
@@ -191,7 +193,7 @@ void UnkStruct_027e09a4::func_ov001_020b6758(const UnkStruct_SceneChange1 *param
}
if (this->IsCutscene()) {
data_027e09b8->func_ov001_020b76c0(param1->mCutsceneIndex);
data_027e09b8->func_ov001_020b76c0(param1->csIndex);
}
this->mUnk_54->func_ov001_020b6fa0(this->GetCurrentCourseEntry());
@@ -223,16 +225,16 @@ void UnkStruct_027e09a4::func_ov001_020b68a4(bool param1, bool param2, bool para
UnkStruct_027e095c::Destroy();
}
void UnkStruct_027e09a4::func_ov001_020b6924(const UnkStruct_SceneChange1 *param1, bool param2) {
void UnkStruct_027e09a4::func_ov001_020b6924(const EntranceInfo *param1, bool param2) {
unk32 iVar5;
unk32 iVar6;
u8 cVar1;
u8 cVar2;
iVar6 = this->GetCurrentCourseEntry()->unk_10;
iVar5 = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10;
iVar5 = data_027e09a0->GetCourseEntry(param1->sceneIndex)->unk_10;
cVar1 = data_027e09a0->GetCourseEntry(this->CurrentSceneIndex())->unk_1C;
cVar2 = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_1C;
cVar2 = data_027e09a0->GetCourseEntry(param1->sceneIndex)->unk_1C;
this->func_ov001_020b69b4(param1, param2);
this->func_ov001_020b68a4(data_ov000_020b21c4[iVar5] != data_ov000_020b21c4[iVar6],
@@ -240,7 +242,7 @@ void UnkStruct_027e09a4::func_ov001_020b6924(const UnkStruct_SceneChange1 *param
this->func_ov001_020b6758(param1, param2);
}
void UnkStruct_027e09a4::func_ov001_020b69b4(const UnkStruct_SceneChange1 *param1, bool param2) {
void UnkStruct_027e09a4::func_ov001_020b69b4(const EntranceInfo *param1, bool param2) {
VecFx32 vec1;
VecFx32 vec2;
unk32 local_34;
@@ -253,7 +255,7 @@ void UnkStruct_027e09a4::func_ov001_020b69b4(const UnkStruct_SceneChange1 *param
for (int i = 0; i < ARRAY_LEN(data_ov001_020c25d4); i++) {
SceneIndex sceneIndex = data_ov001_020c25d4[i];
if (sceneIndex == param1->mSceneIndex) {
if (sceneIndex == param1->sceneIndex) {
bVar1 = true;
index = i;
}
@@ -285,11 +287,11 @@ void UnkStruct_027e09a4::func_ov001_020b69b4(const UnkStruct_SceneChange1 *param
this->mUnk_2C.mUnk_10 = this->func_ov000_02070538()->mUnk_12;
} else {
if (this->GetCurrentCourseEntry()->unk_10 == 4) {
switch (param1->mSceneIndex) {
switch (param1->sceneIndex) {
case SceneIndex_d_water27:
case SceneIndex_f_forest2:
case SceneIndex_f_snow2:
switch (param1->mSceneIndex) {
switch (param1->sceneIndex) {
case SceneIndex_d_water27:
this->mUnk_2C.mSceneIndex = SceneIndex_t_area2;
local_34 = 0x0D;
@@ -414,8 +416,7 @@ DECL_INSTANCE_DTOR(UnkStruct_027e095c, data_027e095c);
DECL_INSTANCE_DTOR(UnkStruct_027e0958, data_027e0958);
DECL_INSTANCE_DTOR(UnkStruct_027e0954, data_027e0954);
UnkStruct_027e09a4_54_Base::UnkStruct_027e09a4_54_Base(unk32 *param1) :
mUnk_1C((s32) 0) {
UnkStruct_027e09a4_54_Base::UnkStruct_027e09a4_54_Base(unk32 *param1) {
this->mUnk_04.Clear();
this->mUnk_0C[0] = L'\0';
this->mUnk_0C[7] = L'\0';
@@ -448,8 +449,8 @@ void UnkStruct_027e09a4_54_Base::vfunc_0C() {
}
void UnkStruct_027e09a4_54_Base::func_ov001_020b6fa0(CourseListEntry *pCourseEntry) {
if (this->mUnk_1C.mIsCS == true) {
data_0204a110.func_02018d78(Cutscene_GetParamEntry(this->mUnk_1C.mCutsceneIndex)->mUnk_14);
if (this->mUnk_1C.isCS == true) {
data_0204a110.func_02018d78(Cutscene_GetParamEntry(this->mUnk_1C.csIndex)->mUnk_14);
} else {
if (data_027e09a4->mUnk_60 == 0) {
if (data_027e09a4->IsDarkRealm()) {
@@ -489,7 +490,9 @@ UnkStruct_WarpUnk1_24::UnkStruct_WarpUnk1_24() {
this->mUnk_2A = false;
}
UnkStruct_WarpUnk1::UnkStruct_WarpUnk1() {
UnkStruct_WarpUnk1::UnkStruct_WarpUnk1() :
mCurEntrance(false),
mNextEntrance(false) {
this->mSpawnTransitionType = 0;
this->mUnk_A0.mUnk_04.x = 0;
this->mUnk_A0.mUnk_04.y = 0;
@@ -525,8 +528,8 @@ bool UnkStruct_WarpUnk1::func_ov001_020b7144() {
this->mUnk_A0.mUnk_12 = func_ov026_02106564(NULL);
}
this->mUnk_A0.mSceneIndex = this->mUnk_78.mSceneIndex;
this->mUnk_A0.mRoomIndex = this->mUnk_78.mRoomIndex;
this->mUnk_A0.mSceneIndex = this->mCurEntrance.sceneIndex;
this->mUnk_A0.mRoomIndex = this->mCurEntrance.roomIndex;
switch (this->mSpawnTransitionType) {
case 0x04:
@@ -540,8 +543,8 @@ bool UnkStruct_WarpUnk1::func_ov001_020b7144() {
iVar9 = true;
break;
default:
if (((this->mUnk_78.mSceneIndex != this->mUnk_8C.mSceneIndex) || (this->mUnk_8C.mIsCS == true) ||
(this->mUnk_78.mIsCS == true))) {
if (((this->mCurEntrance.sceneIndex != this->mNextEntrance.sceneIndex) || (this->mNextEntrance.isCS == true) ||
(this->mCurEntrance.isCS == true))) {
iVar9 = true;
} else {
iVar9 = false;
@@ -550,18 +553,18 @@ bool UnkStruct_WarpUnk1::func_ov001_020b7144() {
}
data_ov000_020b50c0.func_ov000_0206a014();
this->mUnk_78 = this->mUnk_8C;
this->mCurEntrance = this->mNextEntrance;
if (iVar9) {
data_027e09a4->func_ov001_020b6924(&this->mUnk_8C, this->mSpawnTransitionType == 2);
data_027e09a4->func_ov001_020b6924(&this->mNextEntrance, this->mSpawnTransitionType == 2);
} else {
data_027e0cd8->func_ov001_020b7c08(&this->mUnk_8C, &this->mUnk_A0);
data_027e0cd8->func_ov001_020b7c08(&this->mNextEntrance, &this->mUnk_A0);
}
uVar8 = 0;
bVar2 = false;
data_027e0cd8->mUnk_0C->func_ov001_020b8a5c(this->mUnk_8C.mSpawnIndex, 0);
data_027e0cd8->mUnk_0C->func_ov001_020b8a5c(this->mNextEntrance.spawnIndex, 0);
this->Detach();
this->mUnk_0C = false;
@@ -573,7 +576,7 @@ bool UnkStruct_WarpUnk1::func_ov001_020b7144() {
LinkListImpl::Detach((LinkListNode *) ((u8 *) &this->mUnk_50 + 4));
this->mUnk_50.mUnk_0C = false;
if (this->mUnk_8C.mIsCS == true) {
if (this->mNextEntrance.isCS == true) {
this->Detach();
this->mUnk_0C = false;
} else {
+30 -30
View File
@@ -67,12 +67,12 @@ UnkStruct_027e0cd8::~UnkStruct_027e0cd8() {
DELETE(this->mUnk_08);
}
void UnkStruct_027e0cd8::func_ov001_020b7830(const UnkStruct_SceneChange1 *param1) {
void UnkStruct_027e0cd8::func_ov001_020b7830(const EntranceInfo *param1) {
CourseListEntry *pEntry;
UnkStruct_func_ov000_020702a8 *pUnk1;
pEntry = data_027e09a0->GetCourseEntry(param1->mSceneIndex);
pUnk1 = data_027e09a0->func_ov000_020702a8(param1->mSceneIndex);
pEntry = data_027e09a0->GetCourseEntry(param1->sceneIndex);
pUnk1 = data_027e09a0->func_ov000_020702a8(param1->sceneIndex);
wchar_t sp80[16];
sp80[0] = L'\0';
@@ -83,7 +83,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7830(const UnkStruct_SceneChange1 *param
sp70.func_020154ec("MCS");
bool isCS = true;
if (param1->mIsCS != true) {
if (param1->isCS != true) {
isCS = false;
}
@@ -119,7 +119,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7830(const UnkStruct_SceneChange1 *param
}
}
this->func_ov001_020b8120(param1->mSceneIndex);
this->func_ov001_020b8120(param1->sceneIndex);
if (pEntry->unk_21 != -1) {
wchar_t sp30[16];
@@ -135,12 +135,12 @@ void UnkStruct_027e0cd8::func_ov001_020b7830(const UnkStruct_SceneChange1 *param
this->func_ov001_020b7b38(pEntry, pUnk1);
}
UnkStruct_SceneChange1 sceneChange(param1);
if (sceneChange.mRoomIndex != 0xFF) {
func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.mRoomIndex);
EntranceInfo sceneChange(param1);
if (sceneChange.roomIndex != 0xFF) {
func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.roomIndex);
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];
sceneChange.roomIndex = this->mUnk_04->mUnk_40[this->mUnk_04->mUnk_10][this->mUnk_04->mUnk_11];
}
this->func_ov001_020b7d64(&sceneChange);
@@ -203,22 +203,22 @@ void UnkStruct_027e0cd8::func_ov001_020b7b38(const CourseListEntry *pEntry, cons
}
}
void UnkStruct_027e0cd8::func_ov001_020b7c08(const UnkStruct_SceneChange1 *param1, const UnkStruct_WarpUnk1_A0 *param2) {
UnkStruct_SceneChange1 sceneChange(param1);
void UnkStruct_027e0cd8::func_ov001_020b7c08(const EntranceInfo *param1, const UnkStruct_WarpUnk1_A0 *param2) {
EntranceInfo sceneChange(param1);
Vec2s sp4;
if (this->mUnk_30 == param1->mSceneIndex && DSProt_DetectNotFlashcart(NULL) != 0) {
if (this->mUnk_30 == param1->sceneIndex && DSProt_DetectNotFlashcart(NULL) != 0) {
data_ov084_02164690 = &sceneChange;
}
if (!this->func_ov000_02082124() &&
(param1->mSceneIndex < SceneIndex_tekiya00 || param1->mSceneIndex > SceneIndex_tekiya09)) {
(param1->sceneIndex < SceneIndex_tekiya00 || param1->sceneIndex > SceneIndex_tekiya09)) {
#if IS_JP
VecFx32_Copy(&param2->mUnk_04, &this->mUnk_24);
#endif
if (param1->mSceneIndex == SceneIndex_f_water) {
switch (param1->mRoomIndex) {
if (param1->sceneIndex == SceneIndex_f_water) {
switch (param1->roomIndex) {
case 1:
this->mUnk_24.x = 0x16000;
this->mUnk_24.z = 0xFFFF6000;
@@ -240,7 +240,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7c08(const UnkStruct_SceneChange1 *param
}
} else {
#if IS_JP
if (param1->mSceneIndex == SceneIndex_f_snow2 && param1->mRoomIndex == 2) {
if (param1->sceneIndex == SceneIndex_f_snow2 && param1->roomIndex == 2) {
this->mUnk_24.x = 0xFFFFF000;
this->mUnk_24.z = 0xFFFF0000;
}
@@ -253,15 +253,15 @@ void UnkStruct_027e0cd8::func_ov001_020b7c08(const UnkStruct_SceneChange1 *param
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) {
if (sceneChange.roomIndex != ROOM_INDEX_NONE) {
if (this->mUnk_30 == sceneChange.sceneIndex && DSProt_DetectNotEmulator(func_ov084_0216122c) == 0) {
func_ov084_021612ac();
}
func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.mRoomIndex);
func_ov000_02081520(&sp4, this->mUnk_04, sceneChange.roomIndex);
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];
sceneChange.roomIndex = this->mUnk_04->mUnk_40[this->mUnk_04->mUnk_10][this->mUnk_04->mUnk_11];
}
this->func_ov001_020b7d64(&sceneChange);
@@ -276,7 +276,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7c08(const UnkStruct_SceneChange1 *param
}
}
void UnkStruct_027e0cd8::func_ov001_020b7d64(const UnkStruct_SceneChange1 *param1) {
void UnkStruct_027e0cd8::func_ov001_020b7d64(const EntranceInfo *param1) {
UnkStruct_027e0cd8_04_0C *iVar7;
u32 temp_r1;
u16 uVar5;
@@ -286,7 +286,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7d64(const UnkStruct_SceneChange1 *param
iVar7 = this->mUnk_04->mUnk_0C;
switch (data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10) {
switch (data_027e09a0->GetCourseEntry(param1->sceneIndex)->unk_10) {
case 0:
case 1:
case 3:
@@ -331,9 +331,9 @@ void UnkStruct_027e0cd8::func_ov001_020b7e50() {
DELETE(this->mUnk_0C);
}
void UnkStruct_027e0cd8::func_ov001_020b7e68(const UnkStruct_SceneChange1 *param1, bool param2) {
void UnkStruct_027e0cd8::func_ov001_020b7e68(const EntranceInfo *param1, bool param2) {
if (this->mUnk_10 != NULL) {
this->mUnk_10->func_ov024_020d2520((UnkStruct_SceneChange1 *) param1);
this->mUnk_10->func_ov024_020d2520((EntranceInfo *) param1);
}
data_ov000_020b504c.func_ov001_020be92c(this->mUnk_04->mUnk_0C);
@@ -352,7 +352,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7e68(const UnkStruct_SceneChange1 *param
data_ov024_020d8660->func_ov024_020c4ba0();
}
unk32 unk_10 = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->unk_10;
unk32 unk_10 = data_027e09a0->GetCourseEntry(param1->sceneIndex)->unk_10;
if (data_027e09a4->mUnk_60 == 1) {
for (int i = 0; i < 4; i++) {
@@ -362,21 +362,21 @@ void UnkStruct_027e0cd8::func_ov001_020b7e68(const UnkStruct_SceneChange1 *param
}
} 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);
const UnkStruct_ov001_020c40f4 *arg = this->mUnk_0C->func_ov001_020b8a5c(param1->spawnIndex, 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;
u8 temp_spawn = param1->spawnIndex;
UnkStruct_027e0ce0 *ptr = data_027e0ce0;
const UnkStruct_ov001_020c40f4 *spC = temp_pUnkC->func_ov001_020b8a5c(param1->mSpawnIndex, 0);
const UnkStruct_ov001_020c40f4 *spC = temp_pUnkC->func_ov001_020b8a5c(param1->spawnIndex, 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;
unk32 iVar7 = data_027e09a0->GetCourseEntry(param1->sceneIndex)->unk_10;
data_027e09c0->func_ov000_0207da40();
this->mUnk_0C->vfunc_08();
@@ -390,7 +390,7 @@ void UnkStruct_027e0cd8::func_ov001_020b7e68(const UnkStruct_SceneChange1 *param
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);
data_027e09a0->func_ov000_02070310(param1->sceneIndex, param1->roomIndex, &auStack_18);
if (auStack_18[1] < 0x100) {
SET_FLAG(ptr->unk_004.unk_0C, auStack_18[1]);
+42 -42
View File
@@ -67,7 +67,7 @@ UnkStruct_027e0cd8_0C_Base::UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param
mUnk_084_00(0),
mUnk_084_01(0),
mUnk_098(0),
mUnk_09C(&param1->mUnk_00),
mUnk_09C((Vec2us *) &param1->mUnk_00),
mUnk_0AC(false),
mUnk_0AD(false),
mUnk_0AE(false),
@@ -89,9 +89,9 @@ UnkStruct_027e0cd8_0C_Base::UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param
mUnk_12C(false),
mUnk_12D(false),
mUnk_12E(false),
mUnk_130(0),
mUnk_134(0),
mUnk_138(0) {
mpROMB(NULL),
mpCAME(NULL),
mpCMPT(NULL) {
Vec2s local_30;
VecFx32 sp18;
VecFx32 spC;
@@ -123,7 +123,7 @@ UnkStruct_027e0cd8_0C_Base::UnkStruct_027e0cd8_0C_Base(UnkStruct_027e0cd8 *param
this->mUnk_13C.Init(data_ov001_020c40f4, 0x40);
Vec2s_Copy(&this->mUnk_09C, &local_30);
Vec2s_Copy((Vec2s *) &this->mUnk_09C, &local_30);
gpMapObjManager->func_ov001_020baea0(&local_30);
data_027e095c->func_ov000_020592a0();
}
@@ -132,9 +132,9 @@ 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->mpROMB = NULL;
this->mpCMPT = NULL;
this->mpCAME = NULL;
this->mUnk_154.clear();
this->func_ov001_020b8aec();
}
@@ -143,36 +143,36 @@ 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;
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b85d0(const EntranceInfo *param1) {
this->mIsCS = param1->isCS;
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);
snprintf((char *) local_c8, sizeof(local_c8), "M%02d", param1->roomIndex);
this->mUnk_084[0] = local_c8[0];
this->mUnk_084[1] = local_c8[1];
CourseListEntry *pEntry = data_027e09a0->GetCourseEntry(param1->mSceneIndex);
CourseListEntry *pEntry = data_027e09a0->GetCourseEntry(param1->sceneIndex);
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);
snprintf((char *) local_34, sizeof(local_34), "Map/%s/map%02d.bin", pEntry->name, param1->roomIndex);
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);
snprintf((char *) local_34, sizeof(local_34), "%s:zcb/%s_%02d.zcb", local_c8, pEntry->name, param1->roomIndex);
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);
snprintf((char *) local_64, sizeof(local_64), "%s:zmb/%s_%02d.zmb", local_c8, pEntry->name, param1->roomIndex);
UnkFileSystem3 local_74((char *) local_64);
local_74.vfunc_08(0x10);
@@ -180,53 +180,53 @@ void UnkStruct_027e0cd8_0C_Base::func_ov001_020b85d0(const UnkStruct_SceneChange
zmbFileInfos.pFile = local_74.mpFile;
zmbFileInfos.size = local_74.mFileSize;
zmbFileInfos.unk_08 = 0;
zmbFileInfos.unk_0A = 0;
zmbFileInfos.unk_0C = 0;
zmbFileInfos.unk_10 = 0;
zmbFileInfos.unk_14 = 0;
zmbFileInfos.unk_0E = 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);
if (param1->isCS == false) {
gpActorManager->func_ov001_020bb6b0((EntranceInfo *) 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);
snprintf((char *) local_34, sizeof(local_34), "%s:zob/motype_%02d_%1d.zob", local_c8, param1->roomIndex, 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);
snprintf((char *) local_34, sizeof(local_34), "%s:zob/motype_%02d_%1d.zob", local_c8, param1->roomIndex, 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);
snprintf((char *) local_34, sizeof(local_34), "%s:zob/npctype_%02d_%1d.zob", local_c8, param1->roomIndex, 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);
snprintf((char *) local_34, sizeof(local_34), "%s:zob/npctype_%02d_%1d.zob", local_c8, param1->roomIndex, 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);
this->vfunc_40(param1->spawnIndex);
if (param1->mSceneIndex == SceneIndex_t_area1) {
if (param1->sceneIndex == SceneIndex_t_area1) {
if (GET_FLAG(data_027e09b8->mAdventureFlags, AdventureFlag_ObtainedSnowSource)) {
this->mUnk_110 = 0x0A;
}
} else if (param1->mSceneIndex == SceneIndex_t_area3) {
} else if (param1->sceneIndex == SceneIndex_t_area3) {
if (GET_FLAG(data_027e09b8->mAdventureFlags, AdventureFlag_ObtainedFireSource)) {
this->mUnk_110 = 0x10;
this->mUnk_114 = 0x1F;
@@ -236,8 +236,8 @@ void UnkStruct_027e0cd8_0C_Base::func_ov001_020b85d0(const UnkStruct_SceneChange
this->func_ov001_020b8db8();
this->func_ov001_020b8e24();
if (param1->mIsCS == true) {
this->mUnk_114 = Cutscene_GetParamEntry(param1->mCutsceneIndex)->mUnk_0E;
if (param1->isCS == true) {
this->mUnk_114 = Cutscene_GetParamEntry(param1->csIndex)->mUnk_0E;
}
data_027e09ac->func_ov000_020726f0(this->mUnk_114, 0x00, 0x00);
@@ -263,20 +263,20 @@ void UnkStruct_027e0cd8_0C_Base::func_ov001_020b88ec() {
}
}
void UnkStruct_027e0cd8_0C_Base::LoadSceneModel(const UnkStruct_SceneChange1 *param1) {
const char *pName = data_027e09a0->GetCourseEntry(param1->mSceneIndex)->name;
void UnkStruct_027e0cd8_0C_Base::LoadSceneModel(const EntranceInfo *param1) {
const char *pName = data_027e09a0->GetCourseEntry(param1->sceneIndex)->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);
snprintf((char *) local_40, sizeof(local_40), "%s:nsbmd/%s_%02d.nsbmd", this->mUnk_084, pName, param1->roomIndex);
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);
snprintf((char *) local_78, sizeof(local_78), path, pName, param1->roomIndex);
this->mUnk_070.vfunc_0C();
this->mUnk_070.mUnk_04 = (char *) local_78;
@@ -289,9 +289,9 @@ void UnkStruct_027e0cd8_0C_Base::LoadSceneModel(const UnkStruct_SceneChange1 *pa
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;
void UnkStruct_027e0cd8_0C_Base::vfunc_1C(const EntranceInfo *param1, bool param2, bool param3) {
SceneIndex sceneIndex = param1->sceneIndex;
u8 roomIndex = param1->roomIndex;
if (param2 != 0) {
if (param3 == 0) {
@@ -352,7 +352,7 @@ void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8b94(ZMBEntryARAB *pARAB) {
this->mUnk_148.push_back(ptr);
}
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c30(const UnkStruct_027e0cd8_0C_Base_154_00 &param1) {
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c30(const EntranceInfo &param1) {
this->mUnk_154.push_back(param1);
}
@@ -360,16 +360,16 @@ 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_020b8c90(ZMBSectionCMPT *pCMPT) {
this->mpCMPT = pCMPT;
}
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c98(unk32 param1) {
this->mUnk_134 = param1;
void UnkStruct_027e0cd8_0C_Base::func_ov001_020b8c98(ZMBSectionCAME *pCAME) {
this->mpCAME = pCAME;
}
void UnkStruct_027e0cd8_0C_Base::vfunc_34(unk32 param1) {
this->mUnk_130 = param1;
void UnkStruct_027e0cd8_0C_Base::ZMB_ParseROMB(ZMBSectionROMB *pROMB) {
this->mpROMB = pROMB;
}
void UnkStruct_027e0cd8_0C_Base::vfunc_40(u8 spawnIndex) {
+157
View File
@@ -0,0 +1,157 @@
#include "Unknown/UnkStruct_027e0cd8.hpp"
#include "files.h"
BOOL ZAB_ParseFile(FileInfos *pFileInfos, u32 sceneIndex, UnkStruct_027e0cd8_04 *pDst, const CourseListEntry *pEntry,
const UnkStruct_func_ov000_020702a8 *pUnk1, BOOL param6) {
int i;
ZABHeader *pHeader = (ZABHeader *) pFileInfos->pFile;
ZABSectionHeader *pSection = (ZABSectionHeader *) ((u8 *) pHeader + sizeof(ZABHeader));
for (i = 0; i < pHeader->nSections; i++) {
switch (pSection->type) {
case ZABSectionType_CABM:
ZAB_ParseCAMB(pFileInfos, (ZABSectionCABM *) pSection, sceneIndex, pDst, pEntry, pUnk1, param6);
break;
case ZABSectionType_CABI:
ZAB_ParseCABI(pFileInfos, (ZABSectionCABI *) pSection, param6);
break;
default:
break;
}
pSection = (ZABSectionHeader *) ((u8 *) pSection + pSection->nSize);
}
return true;
}
BOOL ZAB_ParseCAMB(FileInfos *pFileInfos, ZABSectionCABM *pCABM, u32 sceneIndex, UnkStruct_027e0cd8_04 *pDst,
const CourseListEntry *pEntry, const UnkStruct_func_ov000_020702a8 *pUnk1, BOOL param6) {
u8 params[2];
u8 uVar4[2];
u8 unk_04[2];
u8 unk_02[2];
u8 unk_00[2];
Vec2p sp44;
s32 sp24;
s32 sp20;
u8 entry_unk_00;
u8 entry_unk_01;
u8 entry_unk_02;
s8 entry_unk_03;
u32 entry_unk_04;
CourseListRoomEntry sp3A;
CourseListRoomEntry local;
int i;
if (!param6) {
unk_04[0] = pCABM->header.unk_08;
unk_04[1] = pCABM->header.unk_09;
*(u16 *) &pDst->mUnk_12 = *(u16 *) &unk_04;
unk_02[0] = pCABM->header.unk_08;
unk_02[1] = pCABM->header.unk_09;
*(u16 *) &pDst->mUnk_10 = *(u16 *) &unk_02;
unk_00[0] = pCABM->header.unk_0A;
unk_00[1] = pCABM->header.unk_0B;
*(u16 *) &pDst->mUnk_14 = *(u16 *) &unk_00;
if (pCABM->header.unk_0C == 0) {
params[0] = 1;
} else {
pDst->mUnk_01 = true;
params[0] = pCABM->header.unk_0C;
}
if (pCABM->header.unk_0D == 0) {
params[1] = 1;
} else {
pDst->mUnk_01 = true;
params[1] = pCABM->header.unk_0D;
}
*(u16 *) &pDst->mUnk_16 = *(u16 *) params;
if (pDst->mUnk_01) {
sp44.x = 0;
sp44.y = 0;
*(u16 *) uVar4 = *(u16 *) &pDst->mUnk_16;
if (uVar4[0] > uVar4[1]) {
sp44.y = (SUBSCREEN_HEIGHT / (uVar4[0] * 2)) * (uVar4[0] - uVar4[1]);
} else if (uVar4[0] < uVar4[1]) {
sp44.x = (SUBSCREEN_WIDTH / (uVar4[1] * 2)) * (uVar4[1] - ((u8 *) uVar4)[0]);
}
pDst->mUnk_18 = sp44;
}
}
pDst->func_ov000_02081874(pCABM->header.nEntries);
sp24 = 0x80000000;
sp20 = 0x7FFFFFFF;
for (i = 0; i < pCABM->header.nEntries; i++) {
entry_unk_00 = pCABM->entries[i].unk_00;
entry_unk_01 = pCABM->entries[i].unk_01;
entry_unk_02 = pCABM->entries[i].unk_02;
entry_unk_03 = pCABM->entries[i].unk_03;
entry_unk_04 = pCABM->entries[i].unk_04;
ZAB_GetRoomEntry(pFileInfos, entry_unk_00, pEntry, &sp3A);
*(u16 *) &local = *(u16 *) &sp3A;
local.unk_02 = sp3A.unk_02;
if (local.unk_02 >= 0x100 && local.unk_02 != 0xFFFF) {
local.unk_02 = 0xFFFF;
}
if (local.mapPaintIndex >= 0x78 && local.mapPaintIndex != 0xFF) {
local.mapPaintIndex = 0xFF;
}
if (param6 == 0) {
pDst->func_ov000_020818d0(&local, entry_unk_01, entry_unk_02, entry_unk_03, entry_unk_04);
} else {
pDst->func_ov000_0208199c(sceneIndex, &local, entry_unk_03);
}
if (entry_unk_03 != 0) {
if (entry_unk_03 < sp20) {
sp20 = entry_unk_03;
}
if (entry_unk_03 > sp24) {
sp24 = entry_unk_03;
}
}
}
pDst->func_ov000_020819a4(pUnk1);
if (sp24 != 0x80000000) {
pDst->mUnk_04 = sp24;
pDst->mUnk_08 = sp20;
}
return true;
}
BOOL ZAB_ParseCABI(FileInfos *pFileInfos, ZABSectionCABI *pCABI, BOOL param3) {
return true;
}
BOOL ZAB_GetRoomEntry(FileInfos *pFileInfos, u8 param2, const CourseListEntry *pEntry, CourseListRoomEntry *param4) {
for (int i = 0; i < pEntry->numRooms; i++) {
if (param2 == pEntry->roomEntries[i].roomIndex) {
*param4 = pEntry->roomEntries[i];
return true;
}
}
param4->roomIndex = ROOM_INDEX_NONE;
return false;
}
+676
View File
@@ -0,0 +1,676 @@
#include "Actor/ActorManager.hpp"
#include "MapObject/MapObjectManager.hpp"
#include "Physics/AABB.hpp"
#include "System/OverlayManager.hpp"
#include "Unknown/UnkStruct_027e0960.hpp"
#include "Unknown/UnkStruct_027e09a4.hpp"
#include "Unknown/UnkStruct_027e09b8.hpp"
#include "Unknown/UnkStruct_027e0cd8.hpp"
#include "Unknown/UnkStruct_027e0ce0.hpp"
#include "Unknown/UnkStruct_ov000_020b5d34.hpp"
#include "files.h"
extern AABB data_027e0c90;
extern int data_ov089_02171540;
extern "C" fx32 func_ov000_02080068(fx32 x);
extern "C" fx32 func_ov000_02080080(fx32 x);
extern "C" void func_ov089_02165b18(void *);
extern "C" fx32 func_ov000_020775d8(fx32);
extern "C" BOOL ZMB_020ba350(ZMBFileInfos *pFileInfos, u8 param2, UnkStruct_027e0cd8_0C_Base *pDst);
extern "C" void ZMB_020ba388(CustomVector<EntranceInfo> *pVector, size_t param2);
extern "C" void ZMB_020ba408(CustomVector<UnkStruct_027e0cd8_0C_Base_148_00_Base *> *pVector, size_t param2);
BOOL ZMB_ParseFile(ZMBFileInfos *pFileInfos, UnkStruct_027e0cd8_0C_Base *pDst, bool param3) {
bool isVersion2;
ZMBHeader *pHeader;
ZMBSectionHeader *pSection;
pHeader = (ZMBHeader *) pFileInfos->pFile;
if (pHeader->type != FileType_ZMBv1 && pHeader->type == FileType_ZMBv2) {
isVersion2 = true;
} else {
isVersion2 = false;
}
pSection = (ZMBSectionHeader *) ((u8 *) pHeader + sizeof(ZMBHeader));
for (int i = 0; i < pHeader->nSections; i++, pSection = (ZMBSectionHeader *) ((u8 *) pSection + pSection->nSize)) {
if (isVersion2 == true) {
continue;
}
if (param3) {
switch (pSection->type) {
case ZMBSectionType_ROMB:
ZMB_ParseROMB(pFileInfos, (ZMBSectionROMB *) pSection, pDst);
break;
case ZMBSectionType_ROOM:
ZMB_ParseROOM(pFileInfos, (ZMBSectionROOM *) pSection, pDst);
break;
default:
break;
}
} else {
switch (pSection->type) {
case ZMBSectionType_LDLB:
ZMB_ParseLDLB(pFileInfos, (ZMBSectionLDLB *) pSection, pDst);
break;
case ZMBSectionType_MapObjects:
ZMB_ParseMapObjList(pFileInfos, (ZMBSectionMapObjectList *) pSection, pDst);
break;
case ZMBSectionType_ARAB:
ZMB_ParseARAB(pFileInfos, (ZMBSectionARAB *) pSection, pDst);
break;
case ZMBSectionType_RALB:
ZMB_ParseRALB(pFileInfos, (ZMBSectionRALB *) pSection, pDst);
break;
case ZMBSectionType_NPCA:
ZMB_ParseActorList(pFileInfos, (ZMBSectionActorList *) pSection, pDst);
break;
case ZMBSectionType_PLYR:
ZMB_ParsePLYR(pFileInfos, (ZMBSectionPLYR *) pSection, pDst);
break;
case ZMBSectionType_WARP:
ZMB_ParseWARP(pFileInfos, (ZMBSectionWARP *) pSection, pDst);
break;
case ZMBSectionType_CAME:
ZMB_ParseCAME(pFileInfos, (ZMBSectionCAME *) pSection, pDst);
break;
case ZMBSectionType_CMPT:
ZMB_ParseCMPT(pFileInfos, (ZMBSectionCMPT *) pSection, pDst);
break;
default:
break;
}
}
}
return true;
}
BOOL ZMB_ParseROMB(ZMBFileInfos *pFileInfos, ZMBSectionROMB *pSection, UnkStruct_027e0cd8_0C_Base *pDst) {
pDst->ZMB_ParseROMB(pSection);
return true;
}
BOOL ZMB_ParseLDLB(ZMBFileInfos *pFileInfos, ZMBSectionLDLB *pSection, UnkStruct_027e0cd8_0C_Base *pDst) {
pDst->mUnk_104 = UnkFlags1_None;
bool isCs = data_027e09a4->mUnk_00.isCS;
for (u16 i = 0; i < pSection->header.nEntries; i++) {
ZMBEntryLBLB *pEntry = &pSection->entries[i];
if (!(pEntry->unk_01 != 0xFF && isCs != pEntry->unk_01) &&
!(pEntry->unk_04 != 0 && !data_027e0cd8->func_ov000_02081e30(pEntry->unk_04, pEntry->unk_03))) {
u8 unk_00 = pEntry->unk_00;
if (pEntry->unk_02 != 0) {
SET_FLAG2(pDst->mUnk_104, unk_00);
} else {
UNSET_FLAG2(pDst->mUnk_104, unk_00);
}
}
}
if (data_027e09a4->CurrentSceneIndex() - SceneIndex_t_area0 <= 1 && GET_FLAG2(pDst->mUnk_104, UnkFlags1_6)) {
if (data_027e0cd8->func_ov001_020b80fc(data_027e09a4->CurrentSceneIndex())) {
UNSET_FLAG2(pDst->mUnk_104, UnkFlags1_6);
SET_FLAG2(pDst->mUnk_104, UnkFlags1_7);
} else {
SET_FLAG2(pDst->mUnk_104, UnkFlags1_6);
UNSET_FLAG2(pDst->mUnk_104, UnkFlags1_7);
}
}
for (int i = 0; i < UnkFlags1_Max; i++) {
if (GET_FLAG2(pDst->mUnk_104, i)) {
pDst->func_ov001_020b88c0(i);
}
}
return true;
}
BOOL ZMB_ParseARAB(ZMBFileInfos *pFileInfos, ZMBSectionARAB *pSection, UnkStruct_027e0cd8_0C_Base *pDst) {
size_t capacity = pDst->mUnk_148.capacity();
if (pSection->header.nEntries > capacity) {
ZMB_020ba408(&pDst->mUnk_148, pSection->header.nEntries);
}
for (u16 i = 0; i < pSection->header.nEntries; i++) {
pDst->func_ov001_020b8b94(&pSection->entries[i]);
}
return true;
}
BOOL ZMB_ParseRALB(ZMBFileInfos *pFileInfos, ZMBSectionRALB *pSection, UnkStruct_027e0cd8_0C_Base *pDst) {
u32 nEntries = pSection->header.nEntries;
if (nEntries == 0) {
return true;
}
data_027e0960->func_ov000_0205a1fc(nEntries);
u8 *offset = (u8 *) pSection->entries;
for (u8 i = 0; i < nEntries; i++) {
ZMBEntryRALB *pEntry = (ZMBEntryRALB *) offset;
u8 numPoints = pEntry->numPoints;
data_027e0960->func_ov000_0205a288(i, pEntry);
offset += sizeof(ZMBEntryRALB);
for (u8 j = 0; j < numPoints; j++) {
ZMBRALBPoint *pPoint = (ZMBRALBPoint *) offset;
pPoint->angle = UNK_FX_OPERATION_1(INT_TO_FX32(pPoint->angle));
if (data_027e09a4->CurrentSceneIndex() != SceneIndex_b_flame &&
data_027e09a4->CurrentSceneIndex() != SceneIndex_tekiya08) {
fx32 y = pPoint->pos.y;
pPoint->pos.y = 0x7FFFEFFF;
pPoint->pos.y = y + pDst->vfunc_28(&pPoint->pos, 0, 0);
}
data_027e0960->func_ov000_0205a2a4(i, pPoint);
offset += pPoint->unk_12;
}
}
data_027e0960->func_ov000_0205a2c8();
data_027e0960->func_ov000_0205a1a4();
return true;
}
BOOL ZMB_ParseWARP(ZMBFileInfos *pFileInfos, ZMBSectionWARP *pSection, UnkStruct_027e0cd8_0C_Base *pDst) {
if (pSection->header.nEntries + 8 > pDst->mUnk_154.cap()) {
ZMB_020ba388(&pDst->mUnk_154, pSection->header.nEntries + 8);
}
for (u16 i = 0; i < pSection->header.nEntries; i++) {
ZMBEntryWARP *pEntry = &pSection->entries[i];
if (ZMB_020ba350(pFileInfos, pEntry->unk_16, pDst)) {
pDst->func_ov001_020b8c30(EntranceInfo(pEntry));
}
}
return true;
}
// https://decomp.me/scratch/DThHL
BOOL ZMB_ParseMapObjList(ZMBFileInfos *pFileInfos, ZMBSectionMapObjectList *pSection, UnkStruct_027e0cd8_0C_Base *pDst) {
for (u16 i = 0; i < pSection->header.nEntries; i++) {
ZMBMapObjEntry *pEntry = &pSection->entries[i];
struct {
u16 angle;
Vec2b pos;
} allocData;
allocData.pos.x = pEntry->pos.x;
allocData.pos.y = pEntry->pos.y;
MapObject_20 local_30;
local_30.Init();
for (int j = 0; j < ARRAY_LEN(pEntry->params); j++) {
local_30.mParams[j] = pEntry->params[j];
}
for (int j = 0; j < ARRAY_LEN(pEntry->unk_10); j++) {
local_30.mUnk_08[j] = (pEntry->unk_10[j] >> 12) & 0xF;
local_30.mUnk_0A[j] = (pEntry->unk_10[j] & 0xFFF);
}
local_30.mUnk_10 = pEntry->unk_14;
if (pEntry->unk_19 == 0) {
local_30.mUnk_16 = false;
} else {
local_30.mUnk_16 = true;
}
local_30.mUnk_17 = pEntry->unk_18;
MapObjectProfile *pProfile = data_ov000_020b5d34.GetProfileFromId(pEntry->id);
if (pProfile == NULL) {
continue;
}
switch (pProfile->func_ov000_0209c8e4(&local_30)) {
case 0:
local_30.mUnk_14 = pFileInfos->unk_08;
pFileInfos->unk_08++;
break;
case 1:
local_30.mUnk_14 = pFileInfos->unk_0A;
pFileInfos->unk_0A++;
break;
case 2:
local_30.mUnk_14 = pFileInfos->unk_0C;
pFileInfos->unk_0C++;
break;
default:
break;
}
if (ZMB_020ba350(pFileInfos, pEntry->unk_18, pDst)) {
allocData.angle = UNK_FX_OPERATION_1(INT_TO_FX32(pEntry->angle));
gpMapObjManager->AllocateMapObject(pEntry->id, allocData.pos, allocData.angle, (int) &local_30, 1);
}
}
return true;
}
BOOL ZMB_ParseActorList(ZMBFileInfos *pFileInfos, ZMBSectionActorList *pSection, UnkStruct_027e0cd8_0C_Base *pDst) {
s32 xMod16;
s32 yMod16;
Vec2us somePos;
somePos = pDst->mUnk_09C;
for (u16 i = 0; i < pSection->header.nEntries; i++) {
ZMBActorEntry *pEntry = &pSection->entries[i];
s32 posX = (u8) (pEntry->pos.x / 16);
s32 posY = (u8) (pEntry->pos.y / 16);
xMod16 = (u8) (pEntry->pos.x % 16);
yMod16 = (u8) (pEntry->pos.y % 16);
if (posX < somePos.x && posY < somePos.y) {
bool iVar6 = data_027e0cd8->func_ov000_02081edc(pFileInfos->unk_0E);
if (ZMB_020ba350(pFileInfos, pEntry->unk_1C, pDst)) {
ActorProfile *pProfile = data_ov000_020b539c_eur.GetProfileFromId(pEntry->id);
if (pProfile == NULL) {
continue;
}
if (!iVar6 || pProfile->mUnk_15) {
VecFx32 local_24;
local_24.x = func_ov000_02080068(posX);
local_24.x += MUL_FX32(INT_TO_FX32(xMod16), 256);
local_24.z = func_ov000_02080080(posY);
local_24.z += MUL_FX32(INT_TO_FX32(yMod16), 256);
local_24.y = 0x7FFFEFFF;
local_24.y = pDst->vfunc_28(&local_24, 0x01, 0x00);
u8 bStack_40[2];
bStack_40[0] = posX;
bStack_40[1] = posY;
unk32 value = pDst->func_ov000_02080180(bStack_40);
if (value == 0x14 || value == 0x47) {
local_24.y = 0;
}
local_24.y += UNK_FX_OPERATION_2(INT_TO_FX32(pEntry->unk_08));
ActorParams actorParams;
actorParams.mUnk_28.Reset();
actorParams.func_ov000_020975f8();
actorParams.mInitialPos.x = local_24.x;
actorParams.mInitialPos.y = local_24.y;
actorParams.mInitialPos.z = local_24.z;
for (int j = 0; j < ARRAY_LEN(pEntry->params); j++) {
actorParams.mParams[j] = pEntry->params[j];
}
for (int j = 0; j < ARRAY_LEN(pEntry->unk_14); j++) {
actorParams.mUnk_18[j] = (pEntry->unk_14[j] >> 12) & 0x0F;
actorParams.mUnk_1A[j] = (pEntry->unk_14[j] & 0xFFF);
}
actorParams.mUnk_0E = pEntry->unk_09;
actorParams.mUnk_20 = pEntry->unk_18;
if (pEntry->unk_1D == 0) {
actorParams.mUnk_0F = false;
} else {
actorParams.mUnk_0F = true;
}
actorParams.mInitialAngle = UNK_FX_OPERATION_1(INT_TO_FX32(pEntry->angle));
actorParams.mUnk_24 = pFileInfos->unk_0E;
actorParams.mUnk_26_0 = pEntry->unk_1C;
if (!ActorManager::func_ov001_020bb728(pEntry->id)) {
data_ov000_020b539c_eur.func_ov000_02097444(pEntry->id, &actorParams, 0x00);
}
}
}
pFileInfos->unk_0E++;
}
}
return true;
}
BOOL ZMB_ParseROOM(ZMBFileInfos *pFileInfos, ZMBSectionROOM *pSection, UnkStruct_027e0cd8_0C_Base *pDst) {
for (u16 i = 0; i < pSection->header.nEntries; i++) {
ZMBEntryROOM *pEntry = &pSection->entries[i];
pDst->mUnk_108 = pEntry->unk_00;
if (pEntry->unk_01 == 0xFF) {
pDst->mUnk_110 = 0xFF;
} else {
pDst->mUnk_110 = pEntry->unk_01;
}
if (pEntry->unk_06 == 0xFF) {
pDst->mUnk_10C = data_027e09a4->mUnk_54->mUnk_30;
} else {
pDst->mUnk_10C = pEntry->unk_06;
}
u8 var_r1_3 = pEntry->unk_07;
if (pEntry->unk_07 == 0xFF) {
switch (data_027e09a4->GetCurrentCourseEntry()->unk_10) {
case 0x00:
var_r1_3 = 0x00;
break;
case 0x02:
case 0x04:
var_r1_3 = 0x02;
break;
case 0x05:
var_r1_3 = 0x0F;
break;
default:
var_r1_3 = 0x01;
break;
}
} else {
var_r1_3 = pEntry->unk_07;
}
pDst->mUnk_114 = var_r1_3;
fx32 var_r7 = UNK_FX_OPERATION_2(INT_TO_FX32(pEntry->unk_02));
switch (pEntry->unk_03) {
case 1:
data_027e0cd8->mUnk_16 = true;
break;
case 2:
data_027e0cd8->mUnk_16 = false;
break;
default:
break;
}
pDst->mUnk_0B0 = pEntry->unk_04;
pDst->mUnk_0B2 = pEntry->unk_04;
pDst->mUnk_0B1 = pEntry->unk_05;
pDst->mUnk_0B3 = pEntry->unk_05;
pDst->mUnk_0FC = pEntry->unk_08;
pDst->mUnk_118 = pEntry->unk_0C;
switch (data_027e09a4->CurrentSceneIndex()) {
case SceneIndex_b_deago:
if (data_027e09b8->HasAdventureFlag(AdventureFlag_WatchedStavenPostBattleCS) &&
!data_027e09b8->HasAdventureFlag(AdventureFlag_WatchedMalladusOnTOSSummitCS)) {
pDst->mUnk_118 = 0x01;
}
break;
case SceneIndex_d_main_s:
if (data_027e09b8->HasAdventureFlag(AdventureFlag_WatchedStavenPostBattleCS) &&
!data_027e09b8->HasAdventureFlag(AdventureFlag_WatchedMalladusOnTOSSummitCS)) {
pDst->mUnk_118 = 0x01;
}
break;
case SceneIndex_d_main:
if (data_027e09a4->func_ov000_02070560()->roomIndex == 20 &&
!data_027e09b8->HasAdventureFlag(AdventureFlag_WatchedStavenPostBattleCS)) {
pDst->mUnk_118 = 0x01;
}
break;
default:
break;
}
if (pEntry->unk_0D == 0xFF) {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_1);
} else {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_1);
pDst->mUnk_0AF = pEntry->unk_0D_bool;
}
if (pEntry->unk_10 & 0x001) {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_0);
} else {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_0);
}
if (pEntry->unk_10 & 0x002) {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_5);
} else {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_5);
}
if (pEntry->unk_10 & 0x004) {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_6);
} else {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_6);
}
if (pEntry->unk_10 & 0x008) {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_8);
var_r7 += FLOAT_TO_FX32(1.2f);
} else {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_8);
}
if (pEntry->unk_10 & 0x010) {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_2);
} else {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_2);
}
if (pEntry->unk_10 & 0x020) {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_3);
} else {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_3);
}
if (pEntry->unk_10 & 0x040) {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_4);
} else {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_4);
}
if (pEntry->unk_10 & 0x080) {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_7);
} else {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_7);
}
if (pEntry->unk_10 & 0x100) {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_9);
} else {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_9);
}
if (pEntry->unk_10 & 0x200) {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_10);
} else {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_10);
}
pDst->mUnk_11C = pEntry->unk_0E + 1;
if (pEntry->unk_0F == 0) {
UNSET_FLAG2(pDst->mUnk_128, UnkFlags2_11);
} else {
SET_FLAG2(pDst->mUnk_128, UnkFlags2_11);
}
data_027e0c90.max.y = pDst->mUnk_0A4 + var_r7;
}
if (data_027e09a4->IsLand() || data_027e09a4->GetCurrentCourseEntry()->unk_10 == 0x05) {
if (GET_FLAG2(pDst->mUnk_128, UnkFlags2_4)) {
data_02049ba0.Unload(OverlaySlot_12);
} else if (GET_FLAG2(pDst->mUnk_128, UnkFlags2_2) || data_027e09a4->CurrentSceneIndex() == SceneIndex_b_flame ||
data_027e09a4->CurrentSceneIndex() == SceneIndex_tekiya08 ||
data_027e09a4->CurrentSceneIndex() == SceneIndex_battle03 ||
data_027e09a4->CurrentSceneIndex() == SceneIndex_battle05 ||
data_027e09a4->CurrentSceneIndex() == SceneIndex_battle09 ||
data_027e09a4->CurrentSceneIndex() == SceneIndex_battle11) {
data_02049ba0.LoadIfNotLoaded(OverlaySlot_12, OverlayIndex_MapLava);
} else if (GET_FLAG2(pDst->mUnk_128, UnkFlags2_3)) {
data_02049ba0.LoadIfNotLoaded(OverlaySlot_12, OverlayIndex_MapWater);
} else {
data_02049ba0.Unload(OverlaySlot_12);
}
}
data_027e0ce0->mUnk_1C->func_ov001_020bd0a4(GET_FLAG2(pDst->mUnk_128, UnkFlags2_11));
if (GET_FLAG2(pDst->mUnk_128, UnkFlags2_9) ? true : false) {
data_02049ba0.Unload(OverlaySlot_10);
data_02049ba0.LoadIfNotLoaded(OverlaySlot_9, OverlayIndex_ASR);
func_ov089_02165b18(&data_ov089_02171540);
} else if (gOverlayManager.IsASR()) {
data_02049ba0.LoadIfNotLoaded(OverlaySlot_9, OverlayIndex_Land2);
}
return true;
}
BOOL ZMB_ParsePLYR(ZMBFileInfos *pFileInfos, ZMBSectionPLYR *pSection, UnkStruct_027e0cd8_0C_Base *pDst) {
for (u16 i = 0; i < pSection->header.nEntries; i++) {
ZMBEntryPLYR *pEntry = &pSection->entries[i];
if (ZMB_020ba350(pFileInfos, pEntry->unk_11, pDst)) {
s32 unk_00 = ROUND_FX32(pEntry->unk_00.x);
s32 unk_08 = ROUND_FX32(pEntry->unk_00.z);
s32 tile_x = unk_00 / 16;
s32 tile_z = unk_08 / 16;
s32 xMod16 = unk_00 % 16;
s32 zMod16 = unk_08 % 16;
fx32 z = func_ov000_02080080(tile_z);
z += MUL_FX32(INT_TO_FX32(zMod16), 256);
fx32 x = func_ov000_02080068(tile_x);
x += MUL_FX32(INT_TO_FX32(xMod16), 256);
VecFx32 local_20;
local_20.x = x;
local_20.y = 0x7FFFEFFF;
local_20.z = z;
fx16 unk_0C = (u16) UNK_FX_OPERATION_1(INT_TO_FX32(pEntry->unk_0C));
u8 unk_0E = pEntry->unk_0E;
u8 unk_12;
u8 unk_0F = pEntry->unk_0F;
u8 unk_10 = pEntry->unk_10;
unk_12 = pEntry->unk_12;
if (unk_12 != 0) {
local_20.y = pEntry->unk_00.y;
}
UnkStruct_ov001_020c40f4 unkData(0); //! TODO: solve ctor oddities
unkData.mUnk_00 = local_20;
unkData.mUnk_0C = unk_0C;
unkData.mUnk_0E = unk_0E;
unkData.mUnk_0F = unk_12;
unkData.mUnk_10 = unk_0F;
unkData.mUnk_14 = unk_10;
UnkStruct_ov001_020c40f4 *pEnd = pDst->mUnk_13C.end();
UnkStruct_ov001_020c40f4 *new_var = &unkData;
if (pEnd != NULL) {
pEnd->mUnk_00 = new_var->mUnk_00;
pEnd->mUnk_0C = new_var->mUnk_0C;
pEnd->mUnk_0E = new_var->mUnk_0E;
pEnd->mUnk_0F = new_var->mUnk_0F;
pEnd->mUnk_10 = new_var->mUnk_10;
pEnd->mUnk_14 = new_var->mUnk_14;
}
pDst->mUnk_13C.grow_by(1);
}
}
return true;
}
BOOL ZMB_ParseCAME(ZMBFileInfos *pFileInfos, ZMBSectionCAME *pSection, UnkStruct_027e0cd8_0C_Base *pDst) {
for (u16 i = 0; i < pSection->header.nEntries; i++) {
ZMBEntryCAME *pEntry = &pSection->entries[i];
pEntry->unk_00 = func_ov000_020775d8(pEntry->unk_00);
VecFx32 vec;
VecFx32_Copy(&pEntry->unk_04, &vec);
pEntry->unk_04.y += pDst->vfunc_28(&vec, 0x01, 0x00);
pEntry->unk_10 = UNK_FX_OPERATION_1(INT_TO_FX32(pEntry->unk_10));
pEntry->unk_12 = UNK_FX_OPERATION_1(INT_TO_FX32(pEntry->unk_12));
}
pDst->func_ov001_020b8c98(pSection);
return true;
}
BOOL ZMB_ParseCMPT(ZMBFileInfos *pFileInfos, ZMBSectionCMPT *pSection, UnkStruct_027e0cd8_0C_Base *pDst) {
for (u16 i = 0; i < pSection->header.nEntries; i++) {
ZMBEntryCMPT *pEntry = &pSection->entries[i];
if (pEntry->unk_0D != 0) {
VecFx32 vec;
VecFx32_Copy(&pEntry->unk_00, &vec);
pEntry->unk_00.y += pDst->vfunc_28(&vec, 0x01, 0x00);
}
}
pDst->func_ov001_020b8c90(pSection);
return true;
}
BOOL ZMB_020ba350(ZMBFileInfos *pFileInfos, u8 param2, UnkStruct_027e0cd8_0C_Base *pDst) {
BOOL isCS = pDst->mIsCS;
if (param2 == 0xFF) {
return true;
}
if (param2 < 2) {
return (param2 == isCS);
}
if (GET_FLAG2(pDst->mUnk_104, (u8) (param2 - 2))) {
return true;
}
return false;
}
void ZMB_020ba388(CustomVector<EntranceInfo> *pVector, size_t param2) {
pVector->reallocate_copy(param2);
}
void ZMB_020ba408(CustomVector<UnkStruct_027e0cd8_0C_Base_148_00_Base *> *pVector, size_t param2) {
pVector->reallocate_copy_alt(param2);
}
+1 -1
View File
@@ -36,7 +36,7 @@ bool ActorUnkOBPC::vfunc_18(unk32 param1) {
}
bool ActorUnkOBPC::func_ov024_020d6f74(void) {
if (this->mUnk_5C.mUnk_1C_0 != 0) {
if (this->mUnk_5C.mUnk_1A[1] != 0) {
return this->func_ov000_02098a60(1);
}
@@ -458,7 +458,7 @@ bool AdventureModeManager::func_ov024_020c5dac() {
bool AdventureModeManager::func_ov024_020c5ecc() {
if (data_ov026_02138d10->func_ov026_020e13f4() != 0 && data_027e09b8->func_01ffd420() == 0 &&
func_ov024_020d5304(data_027e09a4->mUnk_00.mSceneIndex) &&
func_ov024_020d5304(data_027e09a4->mUnk_00.sceneIndex) &&
(data_ov024_020d8660 == NULL || data_ov024_020d8660->mUnk_00 == NULL) && this->func_ov024_020c6a20() != 0 &&
data_ov026_0213f590.func_ov026_020f7cc0() == 0) {
return true;
@@ -515,7 +515,7 @@ bool AdventureModeManager::func_ov024_020c60f4() {
}
bool AdventureModeManager::func_ov024_020c623c() {
u32 scene = data_027e09a4->mUnk_00.mSceneIndex;
u32 scene = data_027e09a4->mUnk_00.sceneIndex;
if ((gOverlayManager.IsMapA6() && ActorUnkTUTO::func_ov037_02120a64() != 0) ||
(data_027e09a4->GetCurrentCourseEntry()->unk_10 == 6 && scene == SceneIndex_f_trnnpc) ||
@@ -911,7 +911,7 @@ void AdventureModeManager::func_ov024_020c6d2c(unk32 param1) {
bool AdventureModeManager::func_ov024_020c6d64() {
if (data_027e09a4 != NULL && data_ov000_020b64f8 != NULL) {
if (data_027e09a4->IsCutscene() && Cutscene_GetParamEntry(data_027e09a4->mUnk_00.mCutsceneIndex)->mUnk_18 == 1) {
if (data_027e09a4->IsCutscene() && Cutscene_GetParamEntry(data_027e09a4->mUnk_00.csIndex)->mUnk_18 == 1) {
return true;
}
}
@@ -928,8 +928,8 @@ void AdventureModeManager::func_ov024_020c6db8(unk32 param1) {
}
bool AdventureModeManager::func_ov024_020c6dec() {
if (this->mUnk_1CC.sceneIndex == data_027e09a4->mUnk_00.mSceneIndex) {
if (this->mUnk_1CC.sceneIndex == data_027e09a4->mUnk_00.mSceneIndex) {
if (this->mUnk_1CC.sceneIndex == data_027e09a4->mUnk_00.sceneIndex) {
if (this->mUnk_1CC.sceneIndex == data_027e09a4->mUnk_00.sceneIndex) {
if (this->mUnk_1CC.unk_04 == data_027e0cd8->func_ov000_02081d5c()) {
return true;
}
+2 -2
View File
@@ -109,8 +109,8 @@ u16 *MiscAdvManager::GetStampDate(unk32 index) {
return (u16 *) &this->mStampDates[index];
}
Vec2b *MiscAdvManager::GetStampPos(unk32 index) {
return (Vec2b *) &this->mStampPositions[index];
Vec2bCpp *MiscAdvManager::GetStampPos(unk32 index) {
return (Vec2bCpp *) &this->mStampPositions[index];
}
void MiscAdvManager::func_ov024_020d64b4(s8 param1, unk32 param2, const u16 *param3) {
+1 -1
View File
@@ -267,7 +267,7 @@ bool PassengerManager::CanCompleteTrip() {
bool result = false;
if (this->mPassenger.mActorId != ActorId_None && this->mPassenger.mUnk_04 == 0 &&
data_027e09a4->mUnk_00.mSceneIndex != SceneIndex_t_minigame) {
data_027e09a4->CurrentSceneIndex() != SceneIndex_t_minigame) {
result = true;
}
+2 -2
View File
@@ -28,8 +28,8 @@ void UnkDataStruct4::func_ov024_020d2518() {}
void UnkDataStruct4::func_ov024_020d251c() {}
void UnkDataStruct4::func_ov024_020d2520(UnkStruct_SceneChange1 *param1) {
this->func_ov024_020d2538(param1->mSceneIndex, param1->mRoomIndex, NULL);
void UnkDataStruct4::func_ov024_020d2520(EntranceInfo *param1) {
this->func_ov024_020d2538(param1->sceneIndex, param1->roomIndex, NULL);
}
void UnkDataStruct4::func_ov024_020d2538(u32 sceneIndex, u8 roomIndex, UnkDataStruct4_14_2 *param3) {
+1 -1
View File
@@ -8,7 +8,7 @@ BOOL ZTB_ParseFile(FileInfos *pFileInfos, UnkDataStruct4 *pDst) {
ZTBHeader *pHeader = (ZTBHeader *) pFileInfos->pFile;
ZTBSectionHeader *pSection = (ZTBSectionHeader *) ((u8 *) pHeader + sizeof(ZTBHeader));
for (int i = 0; i < pHeader->nEntries; i++) {
for (int i = 0; i < pHeader->nSections; i++) {
switch (pSection->type) {
case ZTBSectionType_GRDB:
ZTB_ParseGRDB(pFileInfos, pDst, (ZTBSectionGRDB *) pSection);
+1 -1
View File
@@ -25,7 +25,7 @@ GameModeTitleScreen::~GameModeTitleScreen() {
void GameModeTitleScreen::vfunc_08() {
this->GameModeBase::vfunc_08();
UnkStruct_SceneChange1 stack(Cutscene_GetParamEntry(CutsceneIndex_TitleScreen), true);
EntranceInfo stack(Cutscene_GetParamEntry(CutsceneIndex_TitleScreen), true);
data_027e09a4->func_ov000_020707a8(&stack);
}
+1 -1
View File
@@ -182,7 +182,7 @@ void ActorRupee::func_ov031_020e9068() {
}
}
if (this->mUnk_5C.mUnk_24 >= 0 && this->mUnk_5C.mUnk_1A != 0) {
if (this->mUnk_5C.mUnk_24 >= 0 && this->mUnk_5C.mUnk_1A[0] != 0) {
this->func_ov000_02098a88(0, 1);
}
+2 -2
View File
@@ -3,7 +3,7 @@
#include "Unknown/UnkStruct_027e0cd8.hpp"
extern "C" void func_01ffedac(Vec2b *, VecFx32 *);
extern "C" void func_01ffedac(Vec2bCpp *, VecFx32 *);
DECL_PROFILE(ActorProfileUnkNORE);
@@ -17,7 +17,7 @@ ActorProfileUnkNORE::ActorProfileUnkNORE() :
ActorUnkNORE::ActorUnkNORE() {}
bool ActorUnkNORE::vfunc_18(unk32 param1) {
Vec2b local_vec;
Vec2bCpp local_vec;
UnkStruct_027e0cd8_0C_Base *unk_obj = data_027e0cd8->mUnk_0C;
+1 -1
View File
@@ -20,7 +20,7 @@ bool ActorUnkSWON::vfunc_18(unk32 param1) {
}
this->func_ov000_020984d0();
this->func_ov000_020984f0();
if (this->mUnk_5C.mUnk_1C_0) {
if (this->mUnk_5C.mUnk_1A[1]) {
this->func_ov000_02098a88(0x1, 0x1);
}
break;
+15 -15
View File
@@ -73,10 +73,10 @@ bool MapObjectChestBase::vfunc_00() {
UnkStruct_027e0cd8_0C_Base *pUVar2 = data_027e0cd8->mUnk_0C;
if (this->mUnk_20.mUnk_00[3] == 1) {
if (this->mUnk_20.mParams[3] == 1) {
this->mPos.x += 0x7FC;
Vec2b sp48(this->mUnk_3A.x, this->mUnk_3A.y);
Vec2bCpp sp48(this->mUnk_3A.x, this->mUnk_3A.y);
pUVar2->func_ov000_020801b0(&sp48, 7, 1);
sp48.x++;
@@ -84,7 +84,7 @@ bool MapObjectChestBase::vfunc_00() {
}
this->vfunc_38(this->vfunc_3C(), 1);
this->mItemId = this->mUnk_20.mUnk_00[0];
this->mItemId = this->mUnk_20.mParams[0];
return true;
}
@@ -98,11 +98,11 @@ void MapObjectChestBase::vfunc_04() {
VecFx32 local_44;
VecFx32 sp18;
VecFx32 spC;
Vec2b local_5e;
Vec2b local_62;
Vec2b local_64;
Vec2b local_66;
Vec2b local_68;
Vec2bCpp local_5e;
Vec2bCpp local_62;
Vec2bCpp local_64;
Vec2bCpp local_66;
Vec2bCpp local_68;
Vec2us local_6c;
pUVar5 = data_027e0cd8->mUnk_0C;
@@ -129,22 +129,22 @@ void MapObjectChestBase::vfunc_04() {
local_68.x = this->mUnk_3A.x;
local_68.y = this->mUnk_3A.y;
iVar2 = pUVar5->func_01ffedf4((Vec2b *) &local_68);
iVar2 = pUVar5->func_01ffedf4((Vec2bCpp *) &local_68);
if (this->mUnk_20.mUnk_00[3] == 1) {
Vec2b temp_r0(this->mUnk_3A.x, this->mUnk_3A.y);
if (this->mUnk_20.mParams[3] == 1) {
Vec2bCpp temp_r0(this->mUnk_3A.x, this->mUnk_3A.y);
temp_r0.x--;
if (pUVar5->func_01ffedf4((Vec2b *) &temp_r0) > iVar2 || gpMapObjManager->func_01fff498(local_5e) != NULL) {
if (pUVar5->func_01ffedf4((Vec2bCpp *) &temp_r0) > iVar2 || gpMapObjManager->func_01fff498(local_5e) != NULL) {
sp48.x -= FLOAT_TO_FX32(0.5f);
}
temp_r0.x += 3;
if (pUVar5->func_01ffedf4((Vec2b *) &temp_r0) > iVar2 || gpMapObjManager->func_01fff498(local_5e) != NULL) {
if (pUVar5->func_01ffedf4((Vec2bCpp *) &temp_r0) > iVar2 || gpMapObjManager->func_01fff498(local_5e) != NULL) {
sp3C.x += FLOAT_TO_FX32(0.5f);
}
} else {
Vec2b temp_r0(this->mUnk_3A.x, this->mUnk_3A.y);
Vec2bCpp temp_r0(this->mUnk_3A.x, this->mUnk_3A.y);
temp_r0.x--;
temp_r0.y += 2;
// local_5e.y = this->mUnk_3A.y + (this->mUnk_3A.x - 1);
@@ -168,7 +168,7 @@ void MapObjectChestBase::vfunc_04() {
sp48.z -= FLOAT_TO_FX32(0.5f);
}
if (data_027e09a4->mUnk_00.mSceneIndex == SceneIndex_d_flame) {
if (data_027e09a4->CurrentSceneIndex() == SceneIndex_d_flame) {
local_64.x = this->mUnk_3A.x;
local_66.y = this->mUnk_3A.y;
+2 -2
View File
@@ -82,12 +82,12 @@ MapObjectDoorBase::MapObjectDoorBase() :
void MapObjectDoorBase::func_ov031_020fbf10(bool param1, bool param2) {
if (this->IsOrientedVertically()) {
this->mPos.z += FLOAT_TO_FX32(0.5f);
Vec2b local_16(1, 2);
Vec2bCpp local_16(1, 2);
this->func_ov000_0209d2f0(5, 1, &local_16);
} else {
this->mPos.x += FLOAT_TO_FX32(0.5f);
Vec2b local_18(2, 1);
Vec2bCpp local_18(2, 1);
this->func_ov000_0209d2f0(5, 1, &local_18);
}
@@ -60,7 +60,7 @@ bool MapObjectDoorClick::vfunc_00(void) {
this->mUnk_8D = false;
this->mUnk_88 = false;
this->mUnk_78 = 10;
this->mUnk_A4 = this->mUnk_20.mUnk_00[1];
this->mUnk_A4 = this->mUnk_20.mParams[1];
this->vfunc2_10();
local_1c.x = -0x1000;
@@ -70,9 +70,9 @@ bool MapObjectDoorClick::vfunc_00(void) {
local_28.x = 0x1000;
local_28.z = 0x266;
unk32 value = ((this->mUnk_20.mUnk_00[2] & 0xFF) << 8) | 0x21C07006;
unk32 value = ((this->mUnk_20.mParams[2] & 0xFF) << 8) | 0x21C07006;
unk32 uVar2;
if (this->mUnk_20.mUnk_00[3] == 0) {
if (this->mUnk_20.mParams[3] == 0) {
uVar2 = 0x1B;
} else {
uVar2 = 0x1C;
@@ -273,7 +273,7 @@ void MapObjectDoorClick::vfunc_5C(unk32 param1, unk32 param2) {
break;
case 8:
if (this->mUnk_20.mUnk_00[2] & 0xFF) {
if (this->mUnk_20.mParams[2] & 0xFF) {
this->MapObjectDoorBase::vfunc_5C(param1, param2);
this->func_ov031_020fcf0c(1);
this->mUnk_10 = this->vfunc2_14();
@@ -405,7 +405,7 @@ void MapObjectDoorClick::vfunc_78(void) {
}
void MapObjectDoorClick::vfunc2_10(void) {
unk32 index = this->mUnk_20.mUnk_00[0];
unk32 index = this->mUnk_20.mParams[0];
this->mUnk_94.vfunc_08(GetModelFromProfile2<MapObjectProfileDoorClick>(index, data_ov031_02110c1c[index]));
}
@@ -64,21 +64,21 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) {
UnkStruct_027e0cd8_0C_Base *ptr;
VecFx32 auStack_20;
if (this->mUnk_20.mUnk_00[1] == 2) {
if (this->mUnk_20.mParams[1] == 2) {
this->mUnk_6C = 0;
ptr = data_027e0cd8->mUnk_0C;
ptr->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]);
ptr->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]);
ptr->func_ov000_0208053c(this->mUnk_20.mParams[0]);
ptr->func_ov000_020803ec(this->mUnk_20.mParams[0]);
this->vfunc_5C(2, 1);
return;
}
if (this->mUnk_20.mUnk_00[1] == 3) {
if (this->mUnk_20.mParams[1] == 3) {
this->mUnk_8C = 0;
}
if (this->mUnk_20.mUnk_00[1] == 4) {
if (this->mUnk_20.mParams[1] == 4) {
if (this->func_ov000_0209d29c(0) != 0) {
this->mUnk_6C = 0;
this->MapObjectDoorBase::vfunc_5C(2, 1);
@@ -114,10 +114,10 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) {
}
if (run) {
data_027e0cd8->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]);
data_027e0cd8->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mParams[0]);
}
#else
data_027e0cd8->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]);
data_027e0cd8->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mParams[0]);
#endif
ptr = data_027e0cd8->mUnk_0C;
@@ -125,7 +125,7 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) {
if (this->func_ov031_020fdec8()) {
this->mUnk_A2 = true;
this->mUnk_8C = 0;
ptr->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]);
ptr->func_ov000_020803ec(this->mUnk_20.mParams[0]);
this->vfunc_5C(0, 0);
UnkStruct_027e09bc_0C *uVar5 = data_027e09bc->mUnk_0C;
@@ -148,7 +148,7 @@ void MapObjectDoorDangerSpawn::vfunc2_08(void) {
data_027e09bc->mUnk_0C->func_ov000_02078230(0);
}
data_ov000_020b51b8.func_ov000_0206c96c(data_ov031_02110c00[this->mUnk_20.mUnk_00[3]]);
data_ov000_020b51b8.func_ov000_0206c96c(data_ov031_02110c00[this->mUnk_20.mParams[3]]);
}
struct UnkStruct_Copy {
@@ -229,7 +229,7 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
}
break;
case 2:
if (this->mUnk_20.mUnk_00[1] == 4 && this->func_ov000_0209d29c(0) != 0) {
if (this->mUnk_20.mParams[1] == 4 && this->func_ov000_0209d29c(0) != 0) {
if (this->func_ov000_0209d29c(1) != 0) {
return;
}
@@ -364,7 +364,7 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
this->MapObjectDoorBase::vfunc_5C(param1, param2);
var_r6 = 1;
temp_r8 = data_027e09a4->mUnk_00.mSceneIndex;
temp_r8 = data_027e09a4->CurrentSceneIndex();
if (param2 != 0 && (temp_r8 - SceneIndex_tekiya00) > 4) {
var_r6 = 0;
@@ -378,7 +378,7 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
}
if (var_r6 != 0) {
data_ov000_020b51b8.func_ov000_0206c9a8(data_ov031_02110c00[this->mUnk_20.mUnk_00[3]], 0, 0x7F, 0);
data_ov000_020b51b8.func_ov000_0206c9a8(data_ov031_02110c00[this->mUnk_20.mParams[3]], 0, 0x7F, 0);
}
break;
@@ -388,7 +388,7 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
this->func_ov000_0209d2c4(0, false);
if (param2 == 0) {
(*ptr)->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]);
(*ptr)->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mParams[0]);
}
if (param2 == 0) {
@@ -407,7 +407,7 @@ bool MapObjectDoorDangerSpawn::vfunc_64(void) {
unk32 var_r0;
bool var_r5;
switch (this->mUnk_20.mUnk_00[1]) {
switch (this->mUnk_20.mParams[1]) {
case 1:
case 4:
if (MapObjectDoorBase::vfunc_64()) {
@@ -415,15 +415,15 @@ bool MapObjectDoorDangerSpawn::vfunc_64(void) {
}
pUVar4 = data_027e0cd8->mUnk_0C;
if (!pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], data_027e0ce0->func_01fff148(0))) {
if (!pUVar4->func_ov000_020802ec(this->mUnk_20.mParams[0], data_027e0ce0->func_01fff148(0))) {
return true;
}
var_r0 = 0;
var_r5 = false;
if (this->mUnk_20.mUnk_00[0] != 0) {
var_r0 = gpActorManager->func_ov000_020970c8(this->mUnk_20.mUnk_00[0], NULL);
if (this->mUnk_20.mParams[0] != 0) {
var_r0 = gpActorManager->func_ov000_020970c8(this->mUnk_20.mParams[0], NULL);
} else {
var_r0 = gpActorManager->func_ov000_0209704c();
}
@@ -443,7 +443,7 @@ bool MapObjectDoorDangerSpawn::vfunc_64(void) {
bool MapObjectDoorDangerSpawn::vfunc_68(void) {
UnkStruct_027e0cd8_0C_Base *pUVar2 = data_027e0cd8->mUnk_0C;
if (this->mUnk_20.mUnk_00[2] == 1) {
if (this->mUnk_20.mParams[2] == 1) {
if (func_ov000_0209d29c(1)) {
return true;
}
@@ -453,9 +453,9 @@ bool MapObjectDoorDangerSpawn::vfunc_68(void) {
}
}
if (this->mUnk_20.mUnk_00[0] != 0) {
if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mUnk_00[0], &this->mUnk_A4) == 0) {
pUVar2->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]);
if (this->mUnk_20.mParams[0] != 0) {
if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mParams[0], &this->mUnk_A4) == 0) {
pUVar2->func_ov000_0208053c(this->mUnk_20.mParams[0]);
return true;
}
@@ -468,12 +468,12 @@ bool MapObjectDoorDangerSpawn::vfunc_68(void) {
bool MapObjectDoorDangerSpawn::vfunc_6C(void) {
UnkStruct_027e0cd8_0C_Base *pUVar5;
switch (this->mUnk_20.mUnk_00[1]) {
switch (this->mUnk_20.mParams[1]) {
case 1:
case 4:
pUVar5 = data_027e0cd8->mUnk_0C;
if (this->mUnk_20.mUnk_00[2] == 1) {
if (this->mUnk_20.mParams[2] == 1) {
if (this->func_ov000_0209d29c(1) != 0) {
return false;
}
@@ -483,8 +483,8 @@ bool MapObjectDoorDangerSpawn::vfunc_6C(void) {
}
}
if (this->mUnk_20.mUnk_00[0] != 0) {
if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mUnk_00[0], NULL) == 0) {
if (this->mUnk_20.mParams[0] != 0) {
if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mParams[0], NULL) == 0) {
return false;
}
} else {
@@ -493,8 +493,8 @@ bool MapObjectDoorDangerSpawn::vfunc_6C(void) {
}
}
if (pUVar5->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], data_027e0ce0->func_01fff148(0))) {
pUVar5->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]);
if (pUVar5->func_ov000_020802ec(this->mUnk_20.mParams[0], data_027e0ce0->func_01fff148(0))) {
pUVar5->func_ov000_020803ec(this->mUnk_20.mParams[0]);
return true;
}
@@ -503,12 +503,12 @@ bool MapObjectDoorDangerSpawn::vfunc_6C(void) {
break;
}
if (this->mUnk_20.mUnk_00[1] == 3) {
if (this->mUnk_20.mParams[1] == 3) {
if (this->func_ov000_0209d29c(0) != 0) {
u16 uVar4 = this->mUnk_20.mUnk_00[0];
u16 uVar4 = this->mUnk_20.mParams[0];
if (uVar4 != 0 && gpActorManager->func_ov000_020970c8(uVar4, 0) != 0) {
data_027e0cd8->mUnk_0C->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]);
data_027e0cd8->mUnk_0C->func_ov000_020803ec(this->mUnk_20.mParams[0]);
return true;
}
}
@@ -524,10 +524,10 @@ bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) {
VecFx32 *uVar3;
int iVar1;
switch (this->mUnk_20.mUnk_00[1]) {
switch (this->mUnk_20.mParams[1]) {
case 1:
case 4:
if (this->mUnk_20.mUnk_00[2] == 1) {
if (this->mUnk_20.mParams[2] == 1) {
if (this->func_ov000_0209d29c(1) != 0) {
return false;
}
@@ -537,8 +537,8 @@ bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) {
}
}
if (this->mUnk_20.mUnk_00[0] != 0) {
if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mUnk_00[0], 0) == 0) {
if (this->mUnk_20.mParams[0] != 0) {
if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mParams[0], 0) == 0) {
return false;
}
} else {
@@ -548,9 +548,9 @@ bool MapObjectDoorDangerSpawn::func_ov031_020fdec8(void) {
}
pUVar4 = data_027e0cd8->mUnk_0C;
uVar3 = (VecFx32 *) &pUVar4->func_ov001_020b8a5c(data_027e09a4->func_ov000_02070560()->mSpawnIndex, 0)->mUnk_00;
uVar3 = (VecFx32 *) &pUVar4->func_ov001_020b8a5c(data_027e09a4->func_ov000_02070560()->spawnIndex, 0)->mUnk_00;
if (pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], uVar3)) {
if (pUVar4->func_ov000_020802ec(this->mUnk_20.mParams[0], uVar3)) {
return true;
}
@@ -41,12 +41,12 @@ bool MapObjectDoorSwitch::vfunc_00(void) {
this->mUnk_094.vfunc_08(this->GetModel());
this->func_ov031_020fbf10(true, true);
if (this->mUnk_20.mUnk_00[3] == 1) {
if (this->mUnk_20.mParams[3] == 1) {
this->mUnk_8F = false;
}
#if IS_JP
if (this->mUnk_20.mUnk_00[2] == 1) {
if (this->mUnk_20.mParams[2] == 1) {
this->mUnk_141 = true;
}
#endif
@@ -91,7 +91,7 @@ bool MapObjectDoorSwitch::vfunc_00(void) {
}
void MapObjectDoorSwitch::vfunc_08(void) {
if (this->mUnk_20.mUnk_00[3] == 2 && data_027e09b8->func_01ffd420()) {
if (this->mUnk_20.mParams[3] == 2 && data_027e09b8->func_01ffd420()) {
this->MapObjectDoorBase::vfunc_08();
} else if (this->mUnk_16 == 5 && this->vfunc_6C()) {
this->vfunc_5C(0, 0);
@@ -29,7 +29,7 @@ bool MapObjectDoorTouch::vfunc_00(void) {
void MapObjectDoorTouch::vfunc2_10(void) {
MapObjectProfileDoorTouch *p = GET_PROFILE(MapObjectProfileDoorTouch);
unk32 index = this->mUnk_20.mUnk_00[0];
unk32 index = this->mUnk_20.mParams[0];
this->mUnk_94.vfunc_08(GetModelFromProfile2<MapObjectProfileDoorTouch>(index, data_ov031_02110c3c[index]));
}
+2 -2
View File
@@ -888,7 +888,7 @@ void PlayerGet::vfunc_10(unk32 param1, unk32 param2) {
break;
case ItemId_RecruitUniform2:
case ItemId_EngineerUniform:
if (data_027e09a4->mUnk_00.mSceneIndex == SceneIndex_f_first) {
if (data_027e09a4->CurrentSceneIndex() == SceneIndex_f_first) {
this->mUnk_28->func_ov058_02152a24();
}
break;
@@ -897,7 +897,7 @@ void PlayerGet::vfunc_10(unk32 param1, unk32 param2) {
}
if (this->mUnk_54.mUnk_00.type_index == REF_TYPE_INDEX(ActorRefType_0, 0x1000)) {
Vec2b stack;
Vec2bCpp stack;
stack.x = this->mUnk_54.mUnk_00.type_index;
stack.y = this->mUnk_54.mUnk_00.unk_id;
@@ -12,7 +12,8 @@
extern "C" void func_ov000_0205ca74(unk32);
extern "C" void func_ov000_0205d65c(void *, VecFx32 *, VecFx32 *, u32);
PlayerSceneChange::PlayerSceneChange() {
PlayerSceneChange::PlayerSceneChange() :
mUnk_54(false) {
this->mUnk_68 = this->mUnk_2C->mUnk_14C;
this->mUnk_6C = -1;
@@ -77,16 +78,16 @@ extern "C" void func_01ff930c(UnkStruct_ov000_0208f820_40 *, unk16, unk32);
// https://decomp.me/scratch/c7PhN
void PlayerSceneChange::vfunc_0C(UnkStruct_PlayerGet_vfunc_0C_param1 *param1) {
const fx16 *pSinCosTable = gSinCosTable;
Vec2b stack4;
Vec2bCpp stack4;
s16 stack3;
Vec2b stack2;
Vec2bCpp stack2;
UnkStackStruct1 stack;
switch (param1->mUnk_04) {
case 0x3C: {
int iVar19 = data_027e0cd8->mUnk_0C->func_ov000_02080658((this->mUnk_2C->mUnk_148 >> 16) & 0x3F, &this->mUnk_54);
if (iVar19 != 0 && this->mUnk_28->mUnk_94 != 0 && func_ov096_02179c14()) {
this->mUnk_54.mUnk_10 = 1;
this->mUnk_54.unk_10 = 1;
}
switch (this->mUnk_68) {
@@ -301,7 +302,7 @@ void PlayerSceneChange::vfunc_0C(UnkStruct_PlayerGet_vfunc_0C_param1 *param1) {
this->mUnk_68 = data_027e09a4->func_ov000_02070554();
}
SceneIndex eScene = data_027e09a4->mUnk_00.mSceneIndex;
SceneIndex eScene = data_027e09a4->CurrentSceneIndex();
if (eScene == SceneIndex_tekiya07) {
this->mUnk_68 = 0x18;
} else {
+1 -1
View File
@@ -9,7 +9,7 @@ struct UnkStruct {
extern "C" void func_01ffecdc(int, void *);
MapObject *MapObjectManager::func_01fff498(Vec2b param1) {
MapObject *MapObjectManager::func_01fff498(Vec2bCpp param1) {
if (this->mUnk_0C[param1.y][param1.x] < 0) {
return NULL;
}