mirror of
https://github.com/zeldaret/st
synced 2026-09-02 01:43:15 -04:00
Decompile overlay 0 map objects (#49)
* add missing scratch link * ActorUnk_ov000_020a8bb0_a4_00 -> UnkSystem4 * match mapobj switch step * SWST -> SwitchStep * dsd format * fix playerget regression * fix fake match * BLCM -> MiniBlocks * match mapobj miniblocks * minor improvement * fix regressions
This commit is contained in:
@@ -14,7 +14,7 @@ ARM void ActorUnk_ov000_020a8bb0::func_ov000_020a8ae0(q20 param1) {
|
||||
this->mVel.y = posY;
|
||||
}
|
||||
|
||||
ARM ActorUnk_ov000_020a8bb0::ActorUnk_ov000_020a8bb0(ActorUnk_ov000_020a8bb0_a4_00 *param1, unk32 param2) {
|
||||
ARM ActorUnk_ov000_020a8bb0::ActorUnk_ov000_020a8bb0(UnkSystem4 *param1, unk32 param2) {
|
||||
unk32 uVar2;
|
||||
|
||||
this->mUnk_0b0 = 0;
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
#include "MapObject/MapObjectMiniBlocks.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
|
||||
extern "C" void func_01ff9638(void *, s16);
|
||||
|
||||
enum {
|
||||
MiniBlocksVariant_BLCM,
|
||||
MiniBlocksVariant_BKCT,
|
||||
MiniBlocksVariant_BLKF,
|
||||
MiniBlocksVariant_Max,
|
||||
};
|
||||
|
||||
static const u32 data_ov000_020af574[] = {
|
||||
'BLCM',
|
||||
'BKCT',
|
||||
'BLKF',
|
||||
};
|
||||
|
||||
ARM DECL_PROFILE(MapObjectProfileMiniBlocks);
|
||||
|
||||
ARM MapObject *MapObjectProfileMiniBlocks::Create() {
|
||||
return new(HeapIndex_ITCM) MapObjectMiniBlocks();
|
||||
}
|
||||
|
||||
ARM MapObjectProfileMiniBlocks::MapObjectProfileMiniBlocks() :
|
||||
MapObjectProfile_Derived1(MapObjectId_MiniBlocks, -1, 0) {
|
||||
this->mUnk_06 = -1;
|
||||
this->mUnk_1E &= ~0x01;
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/euvAz
|
||||
ARM MapObjectMiniBlocks::MapObjectMiniBlocks() :
|
||||
mUnk_40() {
|
||||
this->mUnk_44 = 0;
|
||||
this->mUnk_48 = 1;
|
||||
}
|
||||
|
||||
ARM bool MapObjectMiniBlocks::vfunc_00(void) {
|
||||
GET_PROFILE(MapObjectProfileMiniBlocks)->func_ov000_0209ccd8(this->mUnk_22, data_ov000_020af574[this->mUnk_22]);
|
||||
UnkStruct_027e0cd8_0c *pUnkStruct_027e0cd8_0c = data_027e0cd8->mUnk_0c;
|
||||
u8 uVar6;
|
||||
|
||||
if (this->mUnk_22 != MiniBlocksVariant_BLKF) {
|
||||
Vec2b vec(this->mUnk_3A.x, this->mUnk_3A.y);
|
||||
this->mPos.y = pUnkStruct_027e0cd8_0c->func_01ffedf4(&vec);
|
||||
}
|
||||
|
||||
Vec3p vec(FLOAT_TO_Q20(0.0f), FLOAT_TO_Q20(0.0f), FLOAT_TO_Q20(0.0f));
|
||||
uVar6 = 0;
|
||||
|
||||
switch (this->mUnk_20) {
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
uVar6 = 1;
|
||||
break;
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
case 11:
|
||||
uVar6 = 2;
|
||||
break;
|
||||
default:
|
||||
if (this->mUnk_22 == MiniBlocksVariant_BLKF) {
|
||||
vec.x = FLOAT_TO_Q20(0.0f);
|
||||
vec.y = FLOAT_TO_Q20(0.0f);
|
||||
vec.z = -FLOAT_TO_Q20(0.375f);
|
||||
} else {
|
||||
vec.x = FLOAT_TO_Q20(0.0f);
|
||||
vec.y = FLOAT_TO_Q20(0.0f);
|
||||
vec.z = -FLOAT_TO_Q20(0.25f);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
MapObjectProfile_Derived2_20_Base_50 *ptr = GET_PROFILE(MapObjectProfileMiniBlocks)->vfunc_1C(this->mUnk_22)->mUnk_50;
|
||||
void *var_r1;
|
||||
if (ptr != NULL) {
|
||||
u16 *temp_r1 = (u16 *) ((u8 *) ptr + 8);
|
||||
u32 *var_r0;
|
||||
|
||||
if (temp_r1 != NULL && uVar6 < ptr->mUnk_09) {
|
||||
u32 unk_0E = ptr->mUnk_0E;
|
||||
u16 temp = *((u16 *) ((u8 *) temp_r1 + unk_0E));
|
||||
var_r0 = (u32 *) ((u8 *) temp_r1 + unk_0E + 4 + temp * uVar6);
|
||||
} else {
|
||||
var_r0 = NULL;
|
||||
}
|
||||
|
||||
if (var_r0 != NULL) {
|
||||
var_r1 = (void *) ((u8 *) ptr + *var_r0);
|
||||
goto next;
|
||||
}
|
||||
}
|
||||
|
||||
var_r1 = NULL;
|
||||
|
||||
next:
|
||||
this->mUnk_40.vfunc_08((unk32) var_r1);
|
||||
|
||||
unk32 var_r0_2;
|
||||
unk32 var_r0;
|
||||
switch (this->mUnk_20) {
|
||||
case 1:
|
||||
case 6:
|
||||
case 8:
|
||||
this->mUnk_14 = -0x8000;
|
||||
break;
|
||||
case 2:
|
||||
case 7:
|
||||
case 9:
|
||||
this->mUnk_14 = 0x4000;
|
||||
break;
|
||||
case 3:
|
||||
case 5:
|
||||
case 11:
|
||||
this->mUnk_14 = -0x4000;
|
||||
break;
|
||||
default:
|
||||
this->mUnk_14 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
func_01ff9638(&vec, -this->mUnk_14);
|
||||
Vec3p_Add(&this->mPos, &vec, &this->mPos);
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void MapObjectMiniBlocks::vfunc_14(void) {
|
||||
Mat3p m;
|
||||
u16 unk_14 = this->mUnk_14;
|
||||
Mat3p_InitYRotation(&m, SIN(unk_14), COS(unk_14));
|
||||
this->mUnk_40.vfunc_14(&m, &this->mPos);
|
||||
}
|
||||
|
||||
ARM MapObjectMiniBlocks::~MapObjectMiniBlocks() {}
|
||||
ARM MapObjectProfileMiniBlocks::~MapObjectProfileMiniBlocks() {}
|
||||
@@ -0,0 +1,252 @@
|
||||
#include "MapObject/MapObjectSwitchStep.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkMemFuncs.h"
|
||||
#include "Unknown/UnkStruct_0204af1c.hpp"
|
||||
#include "Unknown/UnkStruct_027e0998.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a4.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b5214.hpp"
|
||||
|
||||
extern "C" unk32 func_0200f218(unk32, const char *);
|
||||
|
||||
static const char data_ov000_020af550[] = "switch";
|
||||
static const char data_ov000_020af560[] = "switchB";
|
||||
|
||||
UnkStruct_ov019_020d24c8_28_258_00 MapObjectSwitchStep_data_020b6118(0, 0);
|
||||
|
||||
ARM DECL_PROFILE(MapObjectProfileSwitchStep);
|
||||
|
||||
ARM MapObject *MapObjectProfileSwitchStep::Create() {
|
||||
return new(HeapIndex_ITCM) MapObjectSwitchStep();
|
||||
}
|
||||
|
||||
ARM MapObjectProfileSwitchStep::MapObjectProfileSwitchStep() :
|
||||
MapObjectProfileSwitchStep_Base(MapObjectId_SwitchStep) {
|
||||
this->mUnk_D4.mUnk_08 = 0x2DC04009;
|
||||
|
||||
this->mUnk_E0.x = -FLOAT_TO_Q20(0.5f);
|
||||
this->mUnk_E0.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_E0.z = -FLOAT_TO_Q20(0.5f);
|
||||
|
||||
this->mUnk_EC.x = FLOAT_TO_Q20(0.5f);
|
||||
this->mUnk_EC.y = FLOAT_TO_Q20(0.5f);
|
||||
this->mUnk_EC.z = FLOAT_TO_Q20(0.5f);
|
||||
|
||||
this->mUnk_06 = 1;
|
||||
this->mUnk_0C = 0xC00;
|
||||
this->mUnk_20.mUnk_15 = 1;
|
||||
}
|
||||
|
||||
ARM MapObjectSwitchStep_40::MapObjectSwitchStep_40(void) :
|
||||
UnkSystem4(0) {
|
||||
this->mUnk_60 = 0;
|
||||
this->mUnk_62 = true;
|
||||
this->func_ov000_0209dde0();
|
||||
}
|
||||
|
||||
ARM void MapObjectSwitchStep_40::func_ov000_0209dde0(void) {
|
||||
if (!this->mUnk_62) {
|
||||
this->func_ov000_02057c38(2, 2);
|
||||
return;
|
||||
}
|
||||
|
||||
this->func_ov000_02057c38(6, 2);
|
||||
}
|
||||
|
||||
ARM void MapObjectSwitchStep_40::vfunc_1C(UnkSystem4_vfunc_1C *param1) {
|
||||
unk32 iVar1 = param1->mUnk_04[1];
|
||||
if (iVar1 != 0) {
|
||||
iVar1 += 0x40;
|
||||
} else {
|
||||
iVar1 = 0;
|
||||
}
|
||||
|
||||
unk32 uVar2;
|
||||
if (iVar1 == 0) {
|
||||
uVar2 = -1;
|
||||
} else {
|
||||
uVar2 = func_0200f218(iVar1, data_ov000_020af560);
|
||||
}
|
||||
|
||||
if (param1->mUnk_00[1] == uVar2) {
|
||||
if (this->mUnk_62) {
|
||||
param1->mUnk_B4->mUnk_00 &= ~0x04;
|
||||
param1->mUnk_B4->mUnk_50 = this->mUnk_60;
|
||||
param1->mUnk_B4->mUnk_4C = 0;
|
||||
param1->mUnk_B4->mUnk_54 = 0;
|
||||
} else {
|
||||
param1->mUnk_B8[0] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ARM MapObjectSwitchStep::MapObjectSwitchStep() :
|
||||
mUnk_A4(&mUnk_C4, 0) {
|
||||
this->mUnk_E4 = 0;
|
||||
this->mUnk_E6 = 0;
|
||||
this->mUnk_E8 = 0;
|
||||
this->mUnk_EA = 0;
|
||||
this->mUnk_EB = 0;
|
||||
|
||||
MapObjectProfile_Derived2_20_Base_50 *ptr = GET_PROFILE_20_50(MapObjectProfileSwitchStep);
|
||||
void *var_r1;
|
||||
if (ptr != NULL) {
|
||||
u8 *temp_r1 = (u8 *) ptr + 8;
|
||||
u32 *var_r0;
|
||||
u8 zero = 0;
|
||||
|
||||
if (temp_r1 != NULL && ptr->mUnk_09 > zero) {
|
||||
var_r0 = (u32 *) (temp_r1 + ptr->mUnk_0E + 4);
|
||||
} else {
|
||||
var_r0 = NULL;
|
||||
}
|
||||
|
||||
if (var_r0 != NULL) {
|
||||
var_r1 = (void *) ((u8 *) ptr + *var_r0);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
var_r1 = NULL;
|
||||
|
||||
end:
|
||||
this->mUnk_40.vfunc_08((unk32) var_r1);
|
||||
this->mUnk_A4.mUnk_00 = this->mUnk_40.mUnk_04;
|
||||
|
||||
MapObjectProfile_Derived2_20 *temp_r6 = GET_PROFILE_20(MapObjectProfileSwitchStep);
|
||||
unk32 temp_r5 = temp_r6->func_ov000_02058a24();
|
||||
this->mUnk_A4.func_ov000_020577a4(temp_r6->func_ov000_02058a84(3, data_ov000_020af550), temp_r5, 1);
|
||||
|
||||
this->mUnk_10 = GET_PROFILE_D4(MapObjectProfileSwitchStep);
|
||||
}
|
||||
|
||||
ARM MapObjectSwitchStep::~MapObjectSwitchStep() {
|
||||
if (this->mUnk_20 == 2) {
|
||||
this->func_ov000_0209e11c(0, 1);
|
||||
this->func_ov000_0209d2c4(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
ARM bool MapObjectSwitchStep::vfunc_00(void) {
|
||||
SET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
this->mUnk_18 = 1;
|
||||
|
||||
SET_FLAG(this->mFlags, MapObjFlag_10);
|
||||
this->mUnk_19 = 1;
|
||||
|
||||
if (this->func_ov000_0209d29c(0)) {
|
||||
this->func_ov000_0209e11c(2, 1);
|
||||
} else {
|
||||
this->func_ov000_0209e11c(0, 1);
|
||||
}
|
||||
|
||||
if (data_027e09a4->mSceneIndex >= SceneIndex_battle01 && data_027e09a4->mSceneIndex < SceneIndex_Max) {
|
||||
MapObjectSwitchStep_data_020b6118.func_ov000_0205fc20(0x78, 0x0C, NULL, NULL);
|
||||
SET_FLAG(this->mFlags, MapObjFlag_5);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void MapObjectSwitchStep::func_ov000_0209e11c(unk32 param1, unk32 param2) {
|
||||
this->mUnk_16 = param1;
|
||||
this->mUnk_E6 = -1;
|
||||
this->mUnk_E4 = 0;
|
||||
this->mUnk_A4.func_01ffc3b4();
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
if (param2 == 0) {
|
||||
this->func_ov000_0209d2c4(0, 0);
|
||||
data_027e09a8->func_ov000_02071b30(0x123, &this->mPos, 0);
|
||||
}
|
||||
|
||||
this->mUnk_40.mUnk_62 = 1;
|
||||
this->mUnk_40.mUnk_60 = 0;
|
||||
this->mUnk_A4.func_ov000_020577f8(0);
|
||||
break;
|
||||
case 1:
|
||||
this->mUnk_E8 = 0;
|
||||
data_027e09a8->func_ov000_02071b30(0x121, &this->mPos, 0);
|
||||
this->mUnk_A4.func_ov000_020577f8(0);
|
||||
this->func_ov000_0209e11c(2, 0);
|
||||
break;
|
||||
case 2:
|
||||
this->mUnk_40.mUnk_60 = -0x19A;
|
||||
this->func_ov000_0209d2c4(0, 1);
|
||||
this->mUnk_40.mUnk_62 = 0;
|
||||
|
||||
if (param2 == 0) {
|
||||
data_027e09a8->func_ov000_02071b30(0x122, &this->mPos, 0);
|
||||
} else {
|
||||
this->mUnk_EA = 1;
|
||||
}
|
||||
|
||||
if (this->mUnk_20 == 2) {
|
||||
this->mUnk_E6 = this->mUnk_22;
|
||||
this->mUnk_E4 = 0;
|
||||
}
|
||||
|
||||
this->mUnk_A4.func_ov000_020577f8(0x1000);
|
||||
break;
|
||||
case 3:
|
||||
this->func_ov000_0209d2c4(0, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectSwitchStep::vfunc_20(void) {
|
||||
switch (this->mUnk_16) {
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
break;
|
||||
default:
|
||||
this->func_ov000_0209e11c(1, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_EA = 1;
|
||||
}
|
||||
|
||||
struct stack_struct {
|
||||
/* 00 */ unk16 mUnk_00;
|
||||
/* 02 */ unk16 mUnk_02;
|
||||
/* 04 */ unk8 mUnk_04;
|
||||
/* 05 */ unk8 mUnk_05;
|
||||
/* 06 */ u16 mUnk_06;
|
||||
/* 08 */
|
||||
};
|
||||
|
||||
ARM void MapObjectSwitchStep::vfunc_18(void) {
|
||||
if (!GET_FLAG(this->mFlags, MapObjFlag_5)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (data_027e09a4->mSceneIndex >= SceneIndex_battle01 && data_027e09a4->mSceneIndex < SceneIndex_Max) {
|
||||
unk32 sp10;
|
||||
stack_struct sp8;
|
||||
unk32 sp4;
|
||||
|
||||
//! TODO: fake match?
|
||||
sp4 = *(u32 *) &this->mUnk_38;
|
||||
|
||||
if (data_027e0998->vfunc_00(&this->mPos, &sp10, &sp4)) {
|
||||
sp8.mUnk_06 = 0x00;
|
||||
MI_CpuFill32(0, &sp8, sizeof(sp8));
|
||||
sp8.mUnk_05 = -1;
|
||||
sp8.mUnk_06 |= 0x01;
|
||||
data_0204af1c.func_0201aa44(&MapObjectSwitchStep_data_020b6118, &sp10, 2, &sp8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectSwitchStep::func_ov000_0209e38c(void) {
|
||||
if (this->mUnk_E6 - this->mUnk_E4 < 0x3C) {
|
||||
data_ov000_020b5214.func_ov000_0206e7e8(0x92);
|
||||
} else {
|
||||
data_ov000_020b5214.func_ov000_0206e7e8(0x91);
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkBLCM.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
ARM DECL_PROFILE(MapObjectProfileUnkBLCM);
|
||||
|
||||
ARM MapObject *MapObjectProfileUnkBLCM::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkBLCM();
|
||||
}
|
||||
|
||||
ARM MapObjectProfileUnkBLCM::MapObjectProfileUnkBLCM() :
|
||||
MapObjectProfile(MapObjectId_BLCM) {}
|
||||
|
||||
ARM MapObjectUnkBLCM::MapObjectUnkBLCM() {}
|
||||
|
||||
ARM void MapObjectUnkBLCM::func_ov000_0209e4b0(void) {}
|
||||
ARM void MapObjectUnkBLCM::func_ov000_0209e6ac(void) {}
|
||||
|
||||
ARM MapObjectUnkBLCM::~MapObjectUnkBLCM() {}
|
||||
ARM MapObjectProfileUnkBLCM::~MapObjectProfileUnkBLCM() {}
|
||||
@@ -1,29 +0,0 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkSWST.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
ARM DECL_PROFILE(MapObjectProfileUnkSWST);
|
||||
|
||||
ARM MapObject *MapObjectProfileUnkSWST::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkSWST();
|
||||
}
|
||||
|
||||
ARM MapObjectProfileUnkSWST::MapObjectProfileUnkSWST() :
|
||||
MapObjectProfile(MapObjectId_SWST) {}
|
||||
|
||||
ARM MapObjectUnkSWST::MapObjectUnkSWST() {}
|
||||
|
||||
ARM void MapObjectUnkSWST::func_ov000_0209dda4(void) {}
|
||||
ARM void MapObjectUnkSWST::func_ov000_0209dde0(void) {}
|
||||
ARM void MapObjectUnkSWST::func_ov000_0209de10(void) {}
|
||||
ARM void MapObjectUnkSWST::func_ov000_0209df9c(void) {}
|
||||
ARM void MapObjectUnkSWST::func_ov000_0209e068(void) {}
|
||||
ARM void MapObjectUnkSWST::func_ov000_0209e11c(void) {}
|
||||
ARM void MapObjectUnkSWST::func_ov000_0209e280(void) {}
|
||||
ARM void MapObjectUnkSWST::func_ov000_0209e2b4(void) {}
|
||||
ARM void MapObjectUnkSWST::func_ov000_0209e38c(void) {}
|
||||
ARM void MapObjectUnkSWST::func_ov000_0209e3c8(void) {}
|
||||
|
||||
ARM MapObjectUnkSWST::~MapObjectUnkSWST() {}
|
||||
ARM MapObjectProfileUnkSWST::~MapObjectProfileUnkSWST() {}
|
||||
@@ -27,7 +27,7 @@ UnkStruct_02186240 data_ov110_02186240;
|
||||
|
||||
extern "C" void func_ov000_0205ca74(unk32);
|
||||
extern "C" void func_01ffb6e4(unk32, const void *, void *);
|
||||
extern "C" void func_01ffc5a0(UnkStruct_PlayerGet_8c *, unk32, u16, void *, unk32);
|
||||
extern "C" void func_01ffc5a0(UnkSystem4 *, unk32, u16, void *, unk32);
|
||||
extern "C" void func_ov000_0208f820();
|
||||
extern "C" unk32 func_ov024_020d5354(unk32 *, u16 *);
|
||||
extern "C" void func_ov000_02058fc4(unk32 *, UnkStruct_PlayerGet_74 *, Vec3p *);
|
||||
@@ -776,7 +776,7 @@ ARM void PlayerGet::vfunc_18(unk32 param1, unk32 param2, unk32 param3) {
|
||||
case 0x3A:
|
||||
break;
|
||||
case 0x3B:
|
||||
if (param3 != 0 && this->mUnk_54.mItemId != ItemId_Nothing && this->mUnk_90 != 0) {
|
||||
if (param3 != 0 && this->mUnk_54.mItemId != ItemId_Nothing && this->mUnk_8c.mUnk_04 != 0) {
|
||||
Vec3p_Add(this->mUnk_34, (Vec3p *) &data_ov110_021861ec.mUnk_00, &auStack_18);
|
||||
func_ov000_02058fc4(data_027e0958, &this->mUnk_74, &auStack_18);
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ extern q4 data_02041964[];
|
||||
extern q4 data_0203f964[];
|
||||
extern q4 data_0203feb0[];
|
||||
extern "C" void func_01ffb714(Vec3p *, Vec3p *, void *);
|
||||
extern "C" void func_01ff9638(void *, unk32);
|
||||
extern "C" void func_01ff9638(void *, s16);
|
||||
extern "C" q20 func_01ffb800(void *);
|
||||
extern "C" void func_01ff9770(void *);
|
||||
extern "C" void func_ov000_02072fd0(void *);
|
||||
|
||||
@@ -91,6 +91,7 @@ THUMB void *UnkFileSystem3::vfunc_08(unk32 param1) {
|
||||
return this->mpFile;
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/Y2SB8
|
||||
THUMB UnkFileSystem2::UnkFileSystem2(void *param1, unk32 param2) :
|
||||
UnkFileSystem1(param1) {
|
||||
this->mUnk_14 = param2;
|
||||
|
||||
Reference in New Issue
Block a user