mirror of
https://github.com/zeldaret/st
synced 2026-06-30 11:31:44 -04:00
Decompile Door Map Objects 1 (DRDS, DRCK, DRKY, DRSW, DRTC) (#56)
* random docs * "match" ctor * match ctor and link miniblocks * DRDS 98% * jp differences * improve MapObjectUnkDRDS::vfunc_04 * MapObjectDoorBase 78% * fix regressions * MapObjectDoorBase 98% * MapObjectUnkDRKY 98% * MapObjectUnkDRSW 100% * fix build issues * MapObjectUnkDRTC 100% * DRCK delinks * MapObjectUnkDRCK 98%
This commit is contained in:
@@ -0,0 +1,760 @@
|
||||
#define DOORBASE_DTOR_NOINLINE
|
||||
#include "MapObject/MapObjectDoorBase.hpp"
|
||||
#include "Unknown/Common.hpp"
|
||||
#include "Unknown/UnkMemFuncs.h"
|
||||
#include "Unknown/UnkStruct_0204af1c.hpp"
|
||||
#include "Unknown/UnkStruct_027e0998.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
|
||||
extern "C" unk32 func_01ffb464(unk32 param1);
|
||||
extern "C" void func_01ff9218(void *, unk32, unk32);
|
||||
extern "C" unk32 func_01ffb428(unk32, unk32);
|
||||
extern "C" void *func_ov000_02077590(unk32);
|
||||
|
||||
class UnkStruct_ov031_02117210 {
|
||||
public:
|
||||
/* 00 */ MapObject_10 mUnk_00[3];
|
||||
/* 6C */
|
||||
|
||||
UnkStruct_ov031_02117210();
|
||||
};
|
||||
|
||||
const UnkStruct_ov031_021150b0 data_ov031_02114ffc(0x1E66);
|
||||
UnkStruct_ov031_02117210 data_ov031_02117210;
|
||||
UnkStruct_ov019_020d24c8_28_258_00 data_ov031_02117204(NULL, 0);
|
||||
|
||||
ARM UnkStruct_ov031_02117210::UnkStruct_ov031_02117210() {
|
||||
this->mUnk_00[0].mUnk_0C.x = -FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_00[0].mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_00[0].mUnk_0C.z = -FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_00[0].mUnk_18.x = FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_00[0].mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_00[0].mUnk_18.z = FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_00[0].mUnk_04 &= 0xFE;
|
||||
this->mUnk_00[0].mUnk_08 = 0x7009;
|
||||
|
||||
this->mUnk_00[1].mUnk_0C.x = -FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_00[1].mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_00[1].mUnk_0C.z = -FLOAT_TO_Q20(1.35f);
|
||||
this->mUnk_00[1].mUnk_18.x = FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_00[1].mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_00[1].mUnk_18.z = FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_00[1].mUnk_04 &= 0xFE;
|
||||
this->mUnk_00[1].mUnk_08 = 0x7009;
|
||||
|
||||
this->mUnk_00[2].mUnk_0C.x = -FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_00[2].mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_00[2].mUnk_0C.z = -FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_00[2].mUnk_18.x = FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_00[2].mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_00[2].mUnk_18.z = FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_00[2].mUnk_04 &= 0xFE;
|
||||
this->mUnk_00[2].mUnk_08 = 0x7009;
|
||||
}
|
||||
|
||||
ARM MapObjectDoorBase::MapObjectDoorBase() :
|
||||
mUnk_68(NULL) {
|
||||
this->mUnk_6C = 0;
|
||||
this->mUnk_70 = 0x148;
|
||||
this->mUnk_74 = -1;
|
||||
this->mUnk_78 = 0x32;
|
||||
this->mUnk_7A = 0x19;
|
||||
this->mUnk_7C = 10;
|
||||
this->mUnk_7E = 0;
|
||||
this->mUnk_80 = 0;
|
||||
this->mUnk_82 = 0;
|
||||
this->mUnk_84 = 0;
|
||||
this->mUnk_86 = true;
|
||||
this->mUnk_87 = true;
|
||||
this->mUnk_88 = true;
|
||||
this->mUnk_89 = false;
|
||||
this->mUnk_8A = true;
|
||||
this->mUnk_8B = true;
|
||||
this->mUnk_8C = false;
|
||||
this->mUnk_8D = false;
|
||||
this->mUnk_8E = false;
|
||||
this->mUnk_8F = false;
|
||||
this->mUnk_90 = true;
|
||||
this->mUnk_91 = true;
|
||||
data_ov031_02117204.func_ov000_0205fc20(0x5D, 0x1F, NULL, NULL);
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::func_ov031_020fbf10(bool param1, bool param2) {
|
||||
if (this->IsOrientedVertically()) {
|
||||
this->mPos.z += FLOAT_TO_Q20(0.5f);
|
||||
Vec2b local_16(1, 2);
|
||||
this->func_ov000_0209d2f0(5, 1, &local_16);
|
||||
|
||||
} else {
|
||||
this->mPos.x += FLOAT_TO_Q20(0.5f);
|
||||
Vec2b local_18(2, 1);
|
||||
this->func_ov000_0209d2f0(5, 1, &local_18);
|
||||
}
|
||||
|
||||
MapObject_10 *pMapObject_10;
|
||||
if (!this->IsOrientedVertically()) {
|
||||
if (param1) {
|
||||
pMapObject_10 = &data_ov031_02117210.mUnk_00[1];
|
||||
} else {
|
||||
pMapObject_10 = &data_ov031_02117210.mUnk_00[0];
|
||||
}
|
||||
} else {
|
||||
pMapObject_10 = &data_ov031_02117210.mUnk_00[2];
|
||||
}
|
||||
|
||||
this->mUnk_10 = pMapObject_10;
|
||||
SET_FLAG(this->mFlags, MapObjFlag_5);
|
||||
|
||||
if (this->vfunc_64()) {
|
||||
this->vfunc_5C(8, 1);
|
||||
|
||||
if (param2) {
|
||||
this->func_ov031_020fcd40();
|
||||
}
|
||||
} else {
|
||||
this->vfunc_5C(2, 1);
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_08() {
|
||||
this->vfunc_70();
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
if (this->mUnk_80 > 0) {
|
||||
this->mUnk_80--;
|
||||
}
|
||||
|
||||
if (this->mUnk_80 > 0) {
|
||||
func_01ff9218(&this->mUnk_6C, 0, func_01ffb464(INT_TO_Q20(this->mUnk_80)));
|
||||
}
|
||||
|
||||
if (this->mUnk_80 == 0) {
|
||||
this->vfunc_5C(1, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_88) {
|
||||
this->vfunc_78();
|
||||
}
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_68()) {
|
||||
this->vfunc_5C(3, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 1:
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->mUnk_7A + this->mUnk_7C && this->vfunc_88()) {
|
||||
this->vfunc_58();
|
||||
this->vfunc_5C(2, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_68()) {
|
||||
this->vfunc_5C(3, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 2:
|
||||
if (this->vfunc_68()) {
|
||||
this->vfunc_5C(3, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 3:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= 0x1D) {
|
||||
this->vfunc_5C(4, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= 0x28) {
|
||||
this->vfunc_5C(5, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 5:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_80--;
|
||||
|
||||
if (this->mUnk_80 > 0) {
|
||||
func_01ff9218(&this->mUnk_6C, 0x1000, func_01ffb464(INT_TO_Q20(this->mUnk_80)));
|
||||
}
|
||||
|
||||
if (this->mUnk_88) {
|
||||
if (this->mUnk_80 > 7) {
|
||||
this->vfunc_78();
|
||||
} else {
|
||||
this->vfunc_7C();
|
||||
}
|
||||
}
|
||||
|
||||
if (this->mUnk_80 <= 0) {
|
||||
if (this->mUnk_80 == 0 && this->mUnk_91) {
|
||||
this->vfunc_40();
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= 0x32) {
|
||||
this->mUnk_82 = 0x32;
|
||||
this->vfunc_5C(6, 0);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 6:
|
||||
this->mUnk_82++;
|
||||
this->mUnk_84++;
|
||||
|
||||
if (this->mUnk_82 >= 0x32) {
|
||||
this->mUnk_82 = 0x32;
|
||||
this->vfunc_5C(7, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 7:
|
||||
this->mUnk_82++;
|
||||
this->mUnk_84++;
|
||||
|
||||
if (this->mUnk_82 >= 0x50) {
|
||||
this->vfunc_5C(8, 0);
|
||||
}
|
||||
|
||||
// fallthrough
|
||||
case 8:
|
||||
if (!this->vfunc_6C()) {
|
||||
break;
|
||||
}
|
||||
|
||||
this->vfunc_5C(0, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
this->vfunc_60();
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_40() {}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_0C() {
|
||||
if (this->mUnk_74 >= 0 && data_027e09b8->func_ov000_020732ec(this->mUnk_74)) {
|
||||
this->vfunc_08();
|
||||
} else if (this->mUnk_16 == 2 || this->mUnk_16 == 8) {
|
||||
this->vfunc_08();
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_60() {
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
if (!this->mUnk_86 && !GET_FLAG(this->mFlags, MapObjFlag_1) && this->mUnk_6C <= FLOAT_TO_Q20(0.5f)) {
|
||||
this->func_ov031_020fcf0c(1);
|
||||
}
|
||||
this->vfunc_54();
|
||||
break;
|
||||
case 2:
|
||||
if (this->mUnk_86 && !GET_FLAG(this->mFlags, MapObjFlag_1) && this->mUnk_6C <= FLOAT_TO_Q20(0.5f)) {
|
||||
this->func_ov031_020fcf0c(1);
|
||||
this->vfunc_58();
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (GET_FLAG(this->mFlags, MapObjFlag_1) && this->mUnk_6C >= FLOAT_TO_Q20(0.5f)) {
|
||||
this->func_ov031_020fcf0c(0);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (this->mUnk_86) {
|
||||
this->func_ov031_020fcf0c(1);
|
||||
this->vfunc_58();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
struct UnkStackStruct {
|
||||
s16 mUnk_00;
|
||||
s16 mUnk_02;
|
||||
s16 mUnk_04;
|
||||
s16 mUnk_06;
|
||||
unk32 mUnk_08;
|
||||
Vec3p mUnk_0C;
|
||||
u16 mUnk_18;
|
||||
u16 mUnk_1A;
|
||||
u16 mUnk_1C;
|
||||
u16 mUnk_1E;
|
||||
};
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
UnkStackStruct1 auStack_5c;
|
||||
UnkStackStruct1 auStack_9c;
|
||||
this->mUnk_16 = param1;
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
if (this->mUnk_88) {
|
||||
this->vfunc_74();
|
||||
}
|
||||
|
||||
this->mUnk_82 = 0;
|
||||
this->mUnk_84 = 0x0D;
|
||||
this->mUnk_80 =
|
||||
(MUL_Q20(INT_TO_Q20(this->mUnk_7A), func_01ffb428(this->mUnk_6C, 0x1000)) + FLOAT_TO_Q20(0.5f)) >> 12;
|
||||
|
||||
this->vfunc_50();
|
||||
|
||||
if (this->mUnk_86 && param2 == 0) {
|
||||
func_ov000_02072fd0(&auStack_5c);
|
||||
void *var_r0 = this;
|
||||
|
||||
if (this != NULL) {
|
||||
var_r0 = (u8 *) this + 0x40;
|
||||
}
|
||||
|
||||
auStack_5c.mUnk_04 = var_r0;
|
||||
auStack_5c.mUnk_00 = 0x7B;
|
||||
auStack_5c.mUnk_0C.x = this->mPos.x;
|
||||
auStack_5c.mUnk_0C.y = this->mPos.y;
|
||||
auStack_5c.mUnk_0C.z = this->mPos.z;
|
||||
auStack_5c.mUnk_08 = this->mUnk_7A + this->mUnk_7C + 1 + this->vfunc_8C();
|
||||
auStack_5c.mUnk_38 |= 0x80;
|
||||
|
||||
if (!this->mUnk_8C) {
|
||||
this->mUnk_48 = -1;
|
||||
} else {
|
||||
this->mUnk_48 = 0;
|
||||
this->vfunc_84(1, &this->mUnk_4C, &this->mUnk_4A);
|
||||
}
|
||||
|
||||
if (this->mUnk_90) {
|
||||
auStack_5c.mUnk_3A = 2;
|
||||
auStack_5c.mUnk_3B = 2;
|
||||
auStack_5c.mUnk_38 |= 0x41;
|
||||
} else {
|
||||
auStack_5c.mUnk_3A = 0;
|
||||
auStack_5c.mUnk_3B = 0;
|
||||
}
|
||||
|
||||
UnkStackStruct *puVar5 = (UnkStackStruct *) func_ov000_02077590(3);
|
||||
auStack_5c.mUnk_18 = puVar5->mUnk_00;
|
||||
auStack_5c.mUnk_1A = puVar5->mUnk_02;
|
||||
auStack_5c.mUnk_1C = puVar5->mUnk_04;
|
||||
auStack_5c.mUnk_1E = puVar5->mUnk_06;
|
||||
auStack_5c.mUnk_20 = puVar5->mUnk_08;
|
||||
auStack_5c.mUnk_24.coords = puVar5->mUnk_0C.coords;
|
||||
|
||||
u16 unk_18 = puVar5->mUnk_18;
|
||||
u16 unk_1A = puVar5->mUnk_1A;
|
||||
auStack_5c.mUnk_32 = unk_1A;
|
||||
auStack_5c.mUnk_30 = unk_18;
|
||||
|
||||
u16 unk_1C = puVar5->mUnk_1C;
|
||||
u16 unk_1E = puVar5->mUnk_1E;
|
||||
auStack_5c.mUnk_36 = unk_1E;
|
||||
auStack_5c.mUnk_34 = unk_1C;
|
||||
|
||||
auStack_5c.mUnk_1E = this->mUnk_14;
|
||||
this->mUnk_74 = data_027e09b8->func_ov000_02073388(&auStack_5c, 0);
|
||||
}
|
||||
|
||||
if (param2 == 0) {
|
||||
this->func_ov000_0209d614(0);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (this->mUnk_91) {
|
||||
this->vfunc_48();
|
||||
}
|
||||
|
||||
this->mUnk_82 = 0;
|
||||
this->vfunc_7C();
|
||||
break;
|
||||
case 2:
|
||||
this->mUnk_84 = 0x0D;
|
||||
this->func_ov031_020fcf0c(1);
|
||||
break;
|
||||
case 3:
|
||||
this->vfunc_7C();
|
||||
|
||||
this->mUnk_80 =
|
||||
(MUL_Q20(INT_TO_Q20(this->mUnk_78), func_01ffb428(0x1000 - this->mUnk_6C, 0x1000)) + FLOAT_TO_Q20(0.5f)) >> 12;
|
||||
|
||||
if (this->mUnk_8A) {
|
||||
this->mUnk_82 = 0;
|
||||
this->mUnk_84 = 0;
|
||||
|
||||
if (this->mUnk_86 && param2 == 0) {
|
||||
func_ov000_02072fd0(&auStack_9c);
|
||||
void *var_r1 = this;
|
||||
|
||||
if (this != NULL) {
|
||||
var_r1 = (u8 *) this + 0x40;
|
||||
}
|
||||
|
||||
auStack_9c.mUnk_04 = var_r1;
|
||||
auStack_9c.mUnk_00 = 0x76;
|
||||
auStack_9c.mUnk_0C.x = this->mPos.x;
|
||||
auStack_9c.mUnk_0C.y = this->mPos.y;
|
||||
auStack_9c.mUnk_0C.z = this->mPos.z;
|
||||
auStack_9c.mUnk_08 = this->mUnk_7E + (this->mUnk_78 + 0x51);
|
||||
auStack_9c.mUnk_3A = 9;
|
||||
auStack_9c.mUnk_3B = 2;
|
||||
auStack_9c.mUnk_38 |= 0x01;
|
||||
auStack_9c.mUnk_38 |= 0xC0;
|
||||
|
||||
if (this->mUnk_8D) {
|
||||
this->mUnk_48 = 0x19;
|
||||
this->vfunc_84(0, &this->mUnk_4C, &this->mUnk_4A);
|
||||
} else {
|
||||
this->mUnk_48 = -1;
|
||||
}
|
||||
|
||||
if (this->mUnk_89 && this->mUnk_20.mUnk_16 != 0) {
|
||||
auStack_9c.mUnk_38 |= 0x04;
|
||||
}
|
||||
|
||||
if (this->mUnk_8E) {
|
||||
auStack_9c.mUnk_38 |= 0x10;
|
||||
}
|
||||
|
||||
if (this->mUnk_8F) {
|
||||
auStack_9c.mUnk_38 |= 0x20;
|
||||
}
|
||||
|
||||
auStack_9c.mUnk_38 |= 0x200;
|
||||
|
||||
UnkStackStruct *puVar5 = (UnkStackStruct *) func_ov000_02077590(2);
|
||||
auStack_9c.mUnk_18 = puVar5->mUnk_00;
|
||||
auStack_9c.mUnk_1A = puVar5->mUnk_02;
|
||||
auStack_9c.mUnk_1C = puVar5->mUnk_04;
|
||||
auStack_9c.mUnk_1E = puVar5->mUnk_06;
|
||||
auStack_9c.mUnk_20 = puVar5->mUnk_08;
|
||||
auStack_9c.mUnk_24.coords = puVar5->mUnk_0C.coords;
|
||||
|
||||
u16 unk_18 = puVar5->mUnk_18;
|
||||
u16 unk_1A = puVar5->mUnk_1A;
|
||||
auStack_9c.mUnk_32 = unk_1A;
|
||||
auStack_9c.mUnk_30 = unk_18;
|
||||
|
||||
u16 unk_1C = puVar5->mUnk_1C;
|
||||
u16 unk_1E = puVar5->mUnk_1E;
|
||||
auStack_9c.mUnk_36 = unk_1E;
|
||||
auStack_9c.mUnk_34 = unk_1C;
|
||||
|
||||
auStack_9c.mUnk_1E = this->mUnk_14;
|
||||
this->mUnk_74 = data_027e09b8->func_ov000_02073388(&auStack_9c, 0);
|
||||
|
||||
this->mUnk_84 = 0x0D;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
this->vfunc_7C();
|
||||
|
||||
if (this->mUnk_8A && this->mUnk_86 && param2 == 0) {
|
||||
unk32 var_r5 = 1;
|
||||
unk32 var_r1_2 = 2;
|
||||
|
||||
if (this->IsOrientedVertically()) {
|
||||
var_r1_2 = -1;
|
||||
}
|
||||
|
||||
if (this->mUnk_8D != 0) {
|
||||
var_r5 = 2;
|
||||
}
|
||||
|
||||
if (this->mUnk_87) {
|
||||
unk32 sp8;
|
||||
MapObject::func_ov000_0209d54c(&sp8, this, 1, &this->mPos, var_r1_2, var_r5);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (this->mUnk_88) {
|
||||
this->vfunc_74();
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
this->vfunc_7C();
|
||||
break;
|
||||
case 7:
|
||||
break;
|
||||
case 8:
|
||||
this->vfunc_7C();
|
||||
|
||||
if (param2 == 0) {
|
||||
this->vfunc_80();
|
||||
}
|
||||
|
||||
this->func_ov031_020fcf0c(0);
|
||||
this->mUnk_82 = 0;
|
||||
this->mUnk_84 = 0;
|
||||
this->mUnk_6C = 0x1000;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_48() {}
|
||||
|
||||
ARM bool MapObjectDoorBase::vfunc_64() {
|
||||
return this->func_ov000_0209d668();
|
||||
}
|
||||
|
||||
ARM bool MapObjectDoorBase::vfunc_68() {
|
||||
return this->func_ov000_0209d29c(0);
|
||||
}
|
||||
|
||||
ARM bool MapObjectDoorBase::vfunc_6C() {
|
||||
return false;
|
||||
}
|
||||
|
||||
struct stack_struct {
|
||||
/* 00 */ void *mUnk_00;
|
||||
/* 04 */ unk8 mUnk_04;
|
||||
/* 05 */ unk8 mUnk_05;
|
||||
/* 06 */ u16 mUnk_06;
|
||||
/* 08 */
|
||||
};
|
||||
|
||||
extern "C" void func_01ff9fbc(Mat2p *, unk32, Mat2p *);
|
||||
extern q4 data_0203f964[];
|
||||
|
||||
ARM void MapObjectDoorBase::func_ov031_020fcb78(s8 *param1, s8 param2) {
|
||||
unk32 sp10;
|
||||
stack_struct sp8;
|
||||
unk32 sp4;
|
||||
bool var_r2;
|
||||
|
||||
if (!GET_FLAG(this->mFlags, MapObjFlag_5)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var_r2 = data_ov031_02117204.mUnk_04 & 1;
|
||||
|
||||
if (param1[0] != var_r2 && param1[1] != var_r2) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool uVar4 = (this->mUnk_84 % 0x1A) >= 0x0D ? true : false;
|
||||
|
||||
//! TODO: fake match?
|
||||
sp4 = *(u32 *) &this->mUnk_38;
|
||||
|
||||
if (data_027e0998->vfunc_00(&this->mPos, &sp10, &sp4) && uVar4 != 0) {
|
||||
Mat2p m;
|
||||
|
||||
if (this->IsOrientedVertically()) {
|
||||
Mat2p_InitRotation(&m, data_0203f964[0], data_0203f964[1]);
|
||||
} else {
|
||||
Mat2p_InitIdentity(&m);
|
||||
}
|
||||
|
||||
func_01ff9fbc(&m, data_027e0998->func_ov000_02061a70(), &m);
|
||||
|
||||
sp8.mUnk_06 = 0x00;
|
||||
MI_CpuFill32(0, &sp8, sizeof(sp8));
|
||||
sp8.mUnk_05 = -1;
|
||||
sp8.mUnk_06 |= 0x01;
|
||||
sp8.mUnk_00 = &m;
|
||||
data_0204af1c.func_0201aa44(&data_ov031_02117204, &sp10, 2, &sp8);
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_74() {}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_78() {}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_7C() {
|
||||
this->mUnk_68.func_ov000_020a0334();
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_80() {
|
||||
this->mUnk_74 = -1;
|
||||
this->func_ov031_020fcd40();
|
||||
|
||||
if (this->mUnk_8A && this->mUnk_86) {
|
||||
this->mUnk_8A = false;
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::func_ov031_020fcd40() {
|
||||
this->func_ov000_0209d2c4(1, 1);
|
||||
this->func_ov000_0209d614(1);
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_70() {
|
||||
switch (this->mUnk_16) {
|
||||
case 5:
|
||||
if (this->mUnk_80 > 0) {
|
||||
this->vfunc_44();
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
if (this->mUnk_80 > 0) {
|
||||
this->vfunc_4C();
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
break;
|
||||
case 4:
|
||||
break;
|
||||
case 6:
|
||||
break;
|
||||
case 7:
|
||||
break;
|
||||
case 8:
|
||||
break;
|
||||
default:
|
||||
this->vfunc_44();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_44() {}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_4C() {}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_84(unk32 param1, Vec3p *param2, unk16 *param3) {
|
||||
Vec3p local_20;
|
||||
*param3 = this->mUnk_14;
|
||||
|
||||
if (param1 != 0) {
|
||||
local_20.x = MUL_Q20(SIN((u16) this->mUnk_14), 0x1000);
|
||||
local_20.z = MUL_Q20(COS((u16) this->mUnk_14), 0x1000);
|
||||
local_20.y = 0;
|
||||
} else {
|
||||
local_20.x = MUL_Q20(SIN((u16) this->mUnk_14), 0xC00);
|
||||
local_20.z = MUL_Q20(COS((u16) this->mUnk_14), 0xC00);
|
||||
local_20.y = 0;
|
||||
|
||||
*param3 += -DEG_TO_ANG(180);
|
||||
}
|
||||
|
||||
Vec3p_Add(&this->mPos, &local_20, param2);
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::func_ov031_020fcf0c(unk32 param1) {
|
||||
if (param1 != 0) {
|
||||
SET_FLAG(this->mFlags, MapObjFlag_1);
|
||||
} else {
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_1);
|
||||
}
|
||||
}
|
||||
|
||||
ARM bool MapObjectDoorBase::func_ov031_020fcf30() {
|
||||
unk16 *plocal_10;
|
||||
unk16 local_10;
|
||||
|
||||
plocal_10 = (unk16 *) &local_10;
|
||||
|
||||
MapObject::func_ov000_0209d22c(plocal_10, this, 0);
|
||||
|
||||
if (*plocal_10 >= 0x4000 || *plocal_10 <= -0x4000) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc2_04() {}
|
||||
|
||||
// https://decomp.me/scratch/JINmb
|
||||
ARM void MapObjectDoorBase::vfunc2_08() {
|
||||
s32 temp_r0;
|
||||
s32 temp_r1;
|
||||
s32 temp_r2;
|
||||
u16 *temp_r2_2;
|
||||
u16 *temp_r3;
|
||||
u16 *temp_r3_2;
|
||||
|
||||
if (this->mUnk_16 != 1 || !this->mUnk_8C || (u16) (this->mUnk_14 + 0x2000) / DEG_TO_ANG(90) != 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool result = data_027e0ce0->func_01fff1a4();
|
||||
temp_r0 = this->mPos.x;
|
||||
temp_r1 = this->mPos.y;
|
||||
temp_r2 = this->mPos.z - FLOAT_TO_Q20(3.0f);
|
||||
|
||||
if (!result) {
|
||||
this->mUnk_4C.x = temp_r0;
|
||||
this->mUnk_4C.y = temp_r1;
|
||||
this->mUnk_4C.z = temp_r2;
|
||||
|
||||
// temp_r3 = sp - 4;
|
||||
// *temp_r3 = this->mUnk_4A;
|
||||
data_027e0ce0->func_ov000_0208bbd4(this->mUnk_44, &this->mUnk_4C, this->mUnk_4A);
|
||||
return;
|
||||
}
|
||||
|
||||
this->mUnk_4C.x = temp_r0 - FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_4C.y = temp_r1;
|
||||
this->mUnk_4C.z = temp_r2;
|
||||
|
||||
// temp_r3_2 = sp - 4;
|
||||
// *temp_r3_2 = this->mUnk_4A;
|
||||
data_027e0ce0->func_ov000_0208bbd4(this->mUnk_44, &this->mUnk_4C, this->mUnk_4A);
|
||||
|
||||
this->mUnk_5C.x = this->mPos.x + FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_5C.y = this->mPos.y;
|
||||
this->mUnk_5C.z = this->mPos.z - FLOAT_TO_Q20(3.0f);
|
||||
this->mUnk_5A = this->mUnk_4A;
|
||||
|
||||
// temp_r2_2 = sp - 4;
|
||||
// *temp_r2_2 = this->mUnk_5A;
|
||||
data_027e0ce0->func_ov000_0208bbd4(1, &this->mUnk_5C, this->mUnk_5A);
|
||||
}
|
||||
|
||||
ARM bool MapObjectDoorBase::vfunc_88() {
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM unk32 MapObjectDoorBase::vfunc_8C() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
ARM void MapObjectDoorBase::vfunc_50() {}
|
||||
ARM void MapObjectDoorBase::vfunc_54() {}
|
||||
ARM void MapObjectDoorBase::vfunc_58() {}
|
||||
|
||||
//! TODO: this is fake but we don't have any other choice currently to match the function order
|
||||
ARM MapObjectDoorBase::~MapObjectDoorBase() {}
|
||||
@@ -1,41 +1,425 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkDRCK.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
|
||||
extern "C" f32 func_02039f04(unk32);
|
||||
extern "C" void func_01ffaf74(Vec3p *, Mat4x3p *, Vec3p *);
|
||||
extern "C" void func_01ffcfcc(Vec3p *, Vec3p *, Vec3p *);
|
||||
extern "C" unk32 func_01ffb428(unk32, unk32);
|
||||
extern "C" unk32 func_01ffb464(unk32 param1);
|
||||
extern "C" void func_01ff9218(void *, unk32, unk32);
|
||||
|
||||
static const u32 data_ov031_02110c1c[] = {
|
||||
'DRCG',
|
||||
'DRCG',
|
||||
'DRTC',
|
||||
};
|
||||
|
||||
static const u16 data_ov031_02110c28[] = {0x00, 0x00, 0x00, 0x00, 0x07, 0x0A, 0x0C, 0x0C, 0x14, 0x00};
|
||||
|
||||
const UnkStruct_ov031_021150b0 data_ov031_02115328(0x1E66);
|
||||
|
||||
ARM DECL_PROFILE(MapObjectProfileUnkDRCK);
|
||||
|
||||
ARM MapObject *MapObjectProfileUnkDRCK::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkDRCK();
|
||||
return new(HeapIndex_ITCM) MapObjectUnkDRCK();
|
||||
}
|
||||
|
||||
ARM MapObjectProfileUnkDRCK::MapObjectProfileUnkDRCK() :
|
||||
MapObjectProfile(MapObjectId_DRCK) {}
|
||||
MapObjectProfile_Derived1(MapObjectId_DRCK, -1, 0) {
|
||||
this->mUnk_06 = 2;
|
||||
this->mUnk_1E |= 0x01;
|
||||
this->mUnk_0C = 0x399A;
|
||||
}
|
||||
|
||||
ARM MapObjectUnkDRCK::MapObjectUnkDRCK() {}
|
||||
ARM MapObjectUnkDRCK::MapObjectUnkDRCK() :
|
||||
mUnk_9C(1),
|
||||
mUnk_A0(0) {
|
||||
this->mUnk_8F = true;
|
||||
SET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
this->mUnk_18[0] = 0x0E;
|
||||
this->func_ov000_0209d2c4(1, 1);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ff598(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ff6a8(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ff6bc(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ff7bc(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ffb8c(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ffb98(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ffce4(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ffddc(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ffde4(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ffe1c(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ffe7c(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ffe8c(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ffe94(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ffe9c(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020ffeec(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_020fff10(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_021000ac(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_02100138(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_02100164(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_021001a8(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_021001ac(void) {}
|
||||
ARM void MapObjectUnkDRCK::func_ov031_021001b0(void) {}
|
||||
ARM u16 MapObjectUnkDRCK::vfunc2_1C(unk32 param1) {
|
||||
return data_ov031_02110c28[param1];
|
||||
}
|
||||
|
||||
ARM MapObjectUnkDRCK::~MapObjectUnkDRCK() {}
|
||||
ARM MapObjectProfileUnkDRCK::~MapObjectProfileUnkDRCK() {}
|
||||
// https://decomp.me/scratch/zmw3b
|
||||
ARM bool MapObjectUnkDRCK::vfunc_00(void) {
|
||||
Vec3p local_1c;
|
||||
Vec3p local_28;
|
||||
Vec3p local_40[2];
|
||||
|
||||
this->func_ov031_020fbf10(true, false);
|
||||
this->mUnk_8B = true;
|
||||
this->mUnk_6C = 0;
|
||||
this->func_ov031_020fcf0c(1);
|
||||
this->mUnk_8D = false;
|
||||
this->mUnk_88 = false;
|
||||
this->mUnk_78 = 10;
|
||||
this->mUnk_A4 = this->mUnk_20.mUnk_00[1];
|
||||
this->vfunc2_10();
|
||||
|
||||
local_1c.x = -0x1000;
|
||||
local_1c.y = 0;
|
||||
local_1c.z = -0x266;
|
||||
local_28.y = 0x2000;
|
||||
local_28.x = 0x1000;
|
||||
local_28.z = 0x266;
|
||||
|
||||
unk32 value = ((this->mUnk_20.mUnk_00[2] & 0xFF) << 8) | 0x21C07006;
|
||||
unk32 uVar2;
|
||||
if (this->mUnk_20.mUnk_00[3] == 0) {
|
||||
uVar2 = 0x1B;
|
||||
} else {
|
||||
uVar2 = 0x1C;
|
||||
}
|
||||
this->mUnk_A8.mUnk_07 = uVar2;
|
||||
|
||||
func_01ffcfcc(local_40, &local_1c, &local_28);
|
||||
|
||||
this->mUnk_A8.mUnk_0C.x = local_40[0].x;
|
||||
this->mUnk_A8.mUnk_0C.y = local_40[0].y;
|
||||
this->mUnk_A8.mUnk_0C.z = local_40[0].z;
|
||||
|
||||
this->mUnk_A8.mUnk_18.x = local_40[1].x;
|
||||
this->mUnk_A8.mUnk_18.y = local_40[1].y;
|
||||
this->mUnk_A8.mUnk_18.z = local_40[1].z;
|
||||
|
||||
this->mUnk_A8.mUnk_08 = value;
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc_08(void) {
|
||||
if (this->mUnk_A4 != 0 && this->func_ov000_0209d29c(0)) {
|
||||
this->mUnk_A4 = 0;
|
||||
}
|
||||
|
||||
if (this->mUnk_16 == 2) {
|
||||
this->mUnk_8B = this->func_ov031_020fcf30();
|
||||
}
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(4)) {
|
||||
this->vfunc_5C(4, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(5)) {
|
||||
this->vfunc_5C(5, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 5:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->vfunc_44();
|
||||
this->mUnk_80--;
|
||||
|
||||
if (this->mUnk_80 > 0) {
|
||||
func_01ff9218(&this->mUnk_6C, 0x1000, func_01ffb464(INT_TO_Q20(this->mUnk_80)));
|
||||
}
|
||||
|
||||
if (this->mUnk_88 != false) {
|
||||
if (this->mUnk_80 > 1) {
|
||||
this->vfunc_78();
|
||||
} else {
|
||||
this->vfunc_7C();
|
||||
}
|
||||
}
|
||||
|
||||
if (this->mUnk_80 <= 0) {
|
||||
if (this->mUnk_80 == 0 && this->mUnk_91) {
|
||||
this->vfunc_40();
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(6)) {
|
||||
this->mUnk_82 = this->vfunc2_1C(6);
|
||||
this->vfunc_5C(6, 0);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 6:
|
||||
this->mUnk_84++;
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(7)) {
|
||||
this->mUnk_82 = this->vfunc2_1C(7);
|
||||
this->vfunc_5C(7, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 7:
|
||||
this->mUnk_84++;
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(8)) {
|
||||
this->vfunc_5C(8, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 8:
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
break;
|
||||
default:
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc_18(s8 *param1, s8 param2) {
|
||||
this->func_ov031_020fcb78(param1, param2);
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/3XTMj
|
||||
ARM void MapObjectUnkDRCK::vfunc_14(void) {
|
||||
f32 factor;
|
||||
f32 uVar3;
|
||||
s32 sVar2;
|
||||
s32 sVar2_2;
|
||||
u16 uVar2;
|
||||
|
||||
if (this->mUnk_8B) {
|
||||
uVar3 = func_02039f04(this->mUnk_6C) / 4096.0f;
|
||||
factor = 16384.0f;
|
||||
} else {
|
||||
uVar3 = func_02039f04(this->mUnk_6C) / 4096.0f;
|
||||
factor = -16384.0f;
|
||||
}
|
||||
|
||||
s32 mul = factor * uVar3;
|
||||
sVar2 = (s16) mul;
|
||||
u16 angle = (u16) sVar2;
|
||||
|
||||
Mat3p m;
|
||||
Vec3p local_48;
|
||||
Vec3p temp;
|
||||
|
||||
Mat3p_InitYRotation(&m, SIN(angle), COS(angle));
|
||||
temp.x = this->mPos.x - FLOAT_TO_Q20(1.0f) + this->mUnk_70;
|
||||
temp.z = this->mPos.z;
|
||||
temp.y = this->mPos.y;
|
||||
local_48.x = temp.x;
|
||||
local_48.y = temp.y;
|
||||
local_48.z = temp.z;
|
||||
this->mUnk_94.vfunc_14(&m, &local_48);
|
||||
|
||||
u16 var = (-0x8000 - sVar2);
|
||||
Mat3p_InitYRotation(&m, SIN(var), COS(var));
|
||||
temp.x = this->mPos.x + FLOAT_TO_Q20(1.0f) - this->mUnk_70;
|
||||
temp.z = this->mPos.z;
|
||||
temp.y = this->mPos.y;
|
||||
local_48.x = temp.x;
|
||||
local_48.y = temp.y;
|
||||
local_48.z = temp.z;
|
||||
this->mUnk_94.vfunc_14(&m, &local_48);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
s32 var_r6;
|
||||
u32 temp_r8;
|
||||
UnkStackStruct1 sp8;
|
||||
s16 sp4;
|
||||
s16 *sp4Ptr;
|
||||
|
||||
this->mUnk_16 = param1;
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
this->vfunc_7C();
|
||||
|
||||
u16 result = ROUND_Q20(MUL_Q20(func_01ffb428(0x1000 - this->mUnk_6C, 0x1000), INT_TO_Q20(this->mUnk_78)));
|
||||
this->mUnk_80 = result;
|
||||
|
||||
if (this->mUnk_8A) {
|
||||
this->mUnk_82 = 0;
|
||||
this->mUnk_84 = 0;
|
||||
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
this->vfunc2_18();
|
||||
this->func_ov000_0209d2c4(1, 1);
|
||||
}
|
||||
|
||||
break;
|
||||
case 8:
|
||||
if (this->mUnk_20.mUnk_00[2] & 0xFF) {
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->func_ov031_020fcf0c(1);
|
||||
this->mUnk_10 = this->vfunc2_14();
|
||||
break;
|
||||
}
|
||||
|
||||
// fallthrough
|
||||
default:
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ARM MapObject_10 *MapObjectUnkDRCK::vfunc2_14(void) {
|
||||
return &this->mUnk_A8;
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRCK::func_ov031_020ffde4(void) {
|
||||
switch (this->mUnk_A4) {
|
||||
case 0:
|
||||
return true;
|
||||
case 1:
|
||||
if (!this->mUnk_8B) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
ARM unk32 MapObjectUnkDRCK::vfunc_28(void) {
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
return -1;
|
||||
default:
|
||||
this->vfunc_5C(3, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRCK::vfunc_64(void) {
|
||||
return this->func_ov000_0209d29c(1);
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRCK::vfunc_68(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRCK::vfunc_6C(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc_74(void) {
|
||||
data_027e0cec->func_ov000_0209ff8c(&this->mUnk_68, 0x89E, &this->mPos, 4);
|
||||
data_027e0cec->func_ov000_0209ff8c(&this->mUnk_A0, 0x89E, &this->mPos, 4);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc_7C(void) {
|
||||
this->MapObjectDoorBase::vfunc_7C();
|
||||
|
||||
if (this->mUnk_A0.mUnk_00 != NULL) {
|
||||
this->mUnk_A0.func_ov000_020a0334();
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc_78(void) {
|
||||
Vec3p local_24;
|
||||
Vec3p local_30;
|
||||
Vec3p VStack_3c;
|
||||
Vec3p VStack_48;
|
||||
Mat4x3p m;
|
||||
Vec3p local_84;
|
||||
Vec3p local_90;
|
||||
|
||||
Vec3p temp;
|
||||
temp.x = this->mPos.x;
|
||||
temp.z = this->mPos.z;
|
||||
temp.y = this->mPos.y;
|
||||
|
||||
local_24.x = temp.x - FLOAT_TO_Q20(0.999f);
|
||||
local_24.y = temp.y;
|
||||
local_24.z = temp.z;
|
||||
|
||||
local_30.x = temp.x + FLOAT_TO_Q20(0.999f);
|
||||
local_30.y = temp.y;
|
||||
local_30.z = temp.z;
|
||||
|
||||
f32 div = func_02039f04(this->mUnk_6C) / 4096.0f;
|
||||
s16 angle = 21845.0f * div;
|
||||
|
||||
Mat4x3p_InitYRotation(&m, SIN((u16) angle), COS((u16) angle));
|
||||
|
||||
local_84.x = FLOAT_TO_Q20(1.0f);
|
||||
local_84.y = 0;
|
||||
local_84.z = 0;
|
||||
|
||||
local_90.x = 0;
|
||||
local_90.y = 0;
|
||||
local_90.z = FLOAT_TO_Q20(0.3299f);
|
||||
|
||||
func_01ffaf74(&local_90, &m, &local_90);
|
||||
func_01ffaf74(&local_84, &m, &local_84);
|
||||
|
||||
Vec3p_Add(&local_24, &local_90, &local_24);
|
||||
Vec3p_Add(&local_24, &local_84, &VStack_3c);
|
||||
|
||||
local_90.x = -local_90.x;
|
||||
local_84.x = -local_84.x;
|
||||
Vec3p_Add(&local_30, &local_90, &local_30);
|
||||
Vec3p_Add(&local_30, &local_84, &VStack_48);
|
||||
|
||||
if (this->mUnk_68.mUnk_00 != NULL) {
|
||||
this->mUnk_68.mUnk_00->func_ov000_02052c48(&VStack_3c, &local_24);
|
||||
}
|
||||
|
||||
if (this->mUnk_A0.mUnk_00 != NULL) {
|
||||
this->mUnk_A0.mUnk_00->func_ov000_02052c48(&VStack_48, &local_30);
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc2_10(void) {
|
||||
unk32 index = this->mUnk_20.mUnk_00[0];
|
||||
this->mUnk_94.vfunc_08(GetUnkPointer2<MapObjectProfileUnkDRCK>(index, data_ov031_02110c1c[index]));
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc_40(void) {
|
||||
data_027e09a8->func_ov000_02071b30(0x143, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc_44(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x142, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc_48(void) {}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc_4C(void) {}
|
||||
|
||||
ARM void MapObjectUnkDRCK::vfunc2_18(void) {}
|
||||
|
||||
@@ -1,43 +1,754 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkDRDS.hpp"
|
||||
#include "Actor/ActorManager.hpp"
|
||||
#include "MapObject/MapObjectManager.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09bc.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0ce0.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
#include "Unknown/UnkStruct_027e0d34.hpp"
|
||||
#include "Unknown/UnkStruct_027e0d38.hpp"
|
||||
#include "Unknown/UnkStruct_027e0d8c.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b51b8.hpp"
|
||||
#include "versions.h"
|
||||
|
||||
extern "C" void *func_ov000_02077590(unk32);
|
||||
extern "C" unk32 func_01ffb428(unk32, unk32);
|
||||
extern "C" void func_01ffaf74(Vec3p *, Mat4x3p *, Vec3p *);
|
||||
extern "C" void func_01ff93c0(Vec3p *, q20);
|
||||
extern unk32 data_ov031_02110c00[];
|
||||
extern UnkStruct_ov000_020b34c4_Callback data_ov000_020b4cc4;
|
||||
|
||||
const UnkStruct_ov031_021150b0 data_ov031_021150b0(0x1E66);
|
||||
|
||||
ARM DECL_PROFILE(MapObjectProfileUnkDRDS);
|
||||
|
||||
ARM MapObject *MapObjectProfileUnkDRDS::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkDRDS();
|
||||
return new(HeapIndex_ITCM) MapObjectUnkDRDS();
|
||||
}
|
||||
|
||||
ARM MapObjectProfileUnkDRDS::MapObjectProfileUnkDRDS() :
|
||||
MapObjectProfile(MapObjectId_DRDS) {}
|
||||
MapObjectProfile_Derived2(MapObjectId_DRDS, MapObjectId_DRDS) {
|
||||
this->mUnk_0E = 1;
|
||||
this->mUnk_06 = -1;
|
||||
this->mUnk_1E &= ~0x01;
|
||||
}
|
||||
|
||||
ARM MapObjectUnkDRDS::MapObjectUnkDRDS() {}
|
||||
ARM MapObjectUnkDRDS::MapObjectUnkDRDS() :
|
||||
mUnk_94(GetUnkPointer1<MapObjectProfileUnkDRDS>()),
|
||||
mUnk_9C(1),
|
||||
mUnk_A0(0),
|
||||
mUnk_A1(false),
|
||||
mUnk_A2(false),
|
||||
mUnk_A3(0),
|
||||
mUnk_A4(-1),
|
||||
mUnk_A8(NULL) {
|
||||
this->mUnk_AC = 0;
|
||||
this->mUnk_AE = 0;
|
||||
this->mUnk_89 = true;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fd234(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fd284(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fd3f8(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fd404(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fd474(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fd7e8(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fd814(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fdc08(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fdcc4(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fdd70(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fdec8(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fdfc0(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fdfcc(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe04c(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe0d0(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe22c(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe250(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe278(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe2bc(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe2e8(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe32c(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe350(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe388(void) {}
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe5fc(void) {}
|
||||
ARM bool MapObjectUnkDRDS::vfunc_00(void) {
|
||||
this->func_ov031_020fbf10(true, false);
|
||||
this->mUnk_78 = 0x23;
|
||||
this->mUnk_7A = 0x0F;
|
||||
this->mUnk_7C = 0x28;
|
||||
this->mUnk_8C = 1;
|
||||
this->mUnk_58 = data_027e0ce0->func_01fff1a4();
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc_04(void) {
|
||||
UnkStruct_027e0cd8_0c *ptr;
|
||||
Vec3p auStack_20;
|
||||
|
||||
if (this->mUnk_20.mUnk_00[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]);
|
||||
this->vfunc_5C(2, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->mUnk_20.mUnk_00[1] == 3) {
|
||||
this->mUnk_8C = 0;
|
||||
}
|
||||
|
||||
if (this->mUnk_20.mUnk_00[1] == 4) {
|
||||
if (this->func_ov000_0209d29c(0) != 0) {
|
||||
this->mUnk_6C = 0;
|
||||
this->MapObjectDoorBase::vfunc_5C(2, 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this->vfunc_5C(8, 1);
|
||||
|
||||
#if IS_JP
|
||||
//! TODO: non-matching
|
||||
UnkStruct_ov000_020b34c4 stack;
|
||||
bool run = true;
|
||||
stack.mUnk_00 = &data_ov000_020b4cc4;
|
||||
stack.mUnk_04 = MapObjectId_DRDS;
|
||||
|
||||
MapObject **ppMapObject =
|
||||
gpMapObjManager->func_01fff520((UnkStruct_ov000_020b34c4 *) &stack.mUnk_00, gpMapObjManager->mMapObjTable);
|
||||
|
||||
if (ppMapObject != gpMapObjManager->mUnk_08) {
|
||||
MapObjectUnkDRDS *pMapObject = (MapObjectUnkDRDS *) *ppMapObject;
|
||||
u32 temp1;
|
||||
u32 temp2;
|
||||
|
||||
if (pMapObject != NULL) {
|
||||
temp1 = *(u32 *) &this->mUnk_38;
|
||||
temp2 = *(u32 *) &pMapObject->mUnk_38;
|
||||
|
||||
if (temp2 != temp1 && pMapObject->mUnk_A2) {
|
||||
run = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (run) {
|
||||
data_027e0cd8->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]);
|
||||
}
|
||||
#else
|
||||
data_027e0cd8->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]);
|
||||
#endif
|
||||
|
||||
ptr = data_027e0cd8->mUnk_0C;
|
||||
|
||||
if (this->func_ov031_020fdec8()) {
|
||||
this->mUnk_A2 = true;
|
||||
this->mUnk_8C = 0;
|
||||
ptr->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]);
|
||||
this->vfunc_5C(0, 0);
|
||||
|
||||
UnkStruct_027e09bc_0c *uVar5 = data_027e09bc->mUnk_0C;
|
||||
MapObjectUnkDRDS::func_ov031_020fe5fc(&auStack_20, this);
|
||||
|
||||
uVar5->func_ov000_0207834c(&auStack_20, (unk32) func_ov000_02077590(0), 0);
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc2_04(void) {
|
||||
this->MapObjectDoorBase::vfunc2_04();
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc2_08(void) {
|
||||
this->mUnk_8C = 1;
|
||||
this->vfunc_84(1, &this->mUnk_4C, &this->mUnk_4A);
|
||||
this->MapObjectDoorBase::vfunc2_08();
|
||||
|
||||
if (this->mUnk_A2) {
|
||||
data_027e09bc->mUnk_0C->func_ov000_02078230(0);
|
||||
}
|
||||
|
||||
data_ov000_020b51b8.func_ov000_0206c96c(data_ov031_02110c00[this->mUnk_20.mUnk_00[3]]);
|
||||
}
|
||||
|
||||
struct UnkStruct_Copy {
|
||||
unk32 data[8];
|
||||
};
|
||||
|
||||
// https://decomp.me/scratch/KLkdU
|
||||
ARM void MapObjectUnkDRDS::vfunc_08(void) {
|
||||
UnkStruct_Copy sp3C;
|
||||
UnkStruct_Copy sp1C;
|
||||
Vec3p sp10;
|
||||
Vec3p sp4;
|
||||
|
||||
if (this->mUnk_AC < this->mUnk_AE) {
|
||||
this->mUnk_AC++;
|
||||
}
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
if (this->mUnk_A2) {
|
||||
u16 max = this->mUnk_AE;
|
||||
u16 timer = this->mUnk_AC;
|
||||
|
||||
if (timer < max) {
|
||||
if (max - timer == 1) {
|
||||
this->mUnk_88 = 1;
|
||||
this->vfunc_74();
|
||||
|
||||
UnkStruct_Copy *temp_r0_3 = (UnkStruct_Copy *) func_ov000_02077590(3);
|
||||
|
||||
sp3C = *temp_r0_3;
|
||||
((unk16 *) sp3C.data)[3] = this->mUnk_14;
|
||||
|
||||
UnkStruct_027e09bc_0c *temp_r5 = data_027e09bc->mUnk_0C;
|
||||
|
||||
this->func_ov031_020fe5fc(&sp10, this);
|
||||
temp_r5->func_ov000_02078764(&sp10, &sp3C, 0);
|
||||
data_ov000_020b51b8.func_ov000_0206d134(0x0F);
|
||||
|
||||
if (data_027e0ce0->func_01fff1a4()) {
|
||||
data_027e0d8c->func_ov093_02166058();
|
||||
}
|
||||
} else {
|
||||
UnkStruct_Copy *temp_r0_3 = (UnkStruct_Copy *) func_ov000_02077590(0);
|
||||
|
||||
sp1C = *temp_r0_3;
|
||||
|
||||
UnkStruct_027e09bc_0c *temp_r7_2 = data_027e09bc->mUnk_0C;
|
||||
this->func_ov031_020fe5fc(&sp4, this);
|
||||
temp_r7_2->func_ov000_02078764(&sp4, &sp1C, 0);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
case 1:
|
||||
if (!this->mUnk_86 || data_027e09b8->func_ov000_020732ec(this->mUnk_74)) {
|
||||
if (!this->mUnk_A2) {
|
||||
if (data_027e09b8->func_ov000_0207330c() == 0x0A) {
|
||||
data_027e0d34->func_ov031_020d9844();
|
||||
|
||||
if (data_027e0ce0->func_01fff1a4()) {
|
||||
data_027e0d8c->func_ov093_02166068();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
UnkStruct_027e09b8 *temp_r6 = data_027e09b8;
|
||||
unk32 temp_r4 = this->vfunc_8C();
|
||||
|
||||
if (temp_r4 + 0x0A == temp_r6->func_ov000_0207330c()) {
|
||||
data_027e0d34->func_ov031_020d9844();
|
||||
|
||||
if (data_027e0ce0->func_01fff1a4()) {
|
||||
data_027e0d8c->func_ov093_02166068();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (this->mUnk_20.mUnk_00[1] == 4 && this->func_ov000_0209d29c(0) != 0) {
|
||||
if (this->func_ov000_0209d29c(1) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->vfunc_68() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->mUnk_A1) {
|
||||
return;
|
||||
}
|
||||
|
||||
data_ov000_020b51b8.func_ov000_0206d0bc(0);
|
||||
this->mUnk_A1 = true;
|
||||
|
||||
unk32 temp = data_027e0cd8->mUnk_0C->func_ov000_02080a44();
|
||||
data_ov000_020b51b8.func_ov000_0206d0ec(temp, 0x78, 0x7F, -1);
|
||||
this->func_ov000_0209d2c4(1, 1);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
this->vfunc2_10();
|
||||
|
||||
if (this->mUnk_16 == 2 && this->mUnk_A4 == 0 && !this->mUnk_A1) {
|
||||
data_ov000_020b51b8.func_ov000_0206d0bc(5);
|
||||
this->mUnk_A1 = true;
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc_0C(void) {
|
||||
this->MapObjectDoorBase::vfunc_0C();
|
||||
|
||||
if ((u16) this->mUnk_16 <= 1) {
|
||||
this->vfunc_08();
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
UnkStruct_027e0cd8 **ptr;
|
||||
s32 var_r6;
|
||||
u32 temp_r8;
|
||||
UnkStackStruct1 sp8;
|
||||
s16 sp4;
|
||||
s16 *sp4Ptr;
|
||||
|
||||
this->mUnk_16 = param1;
|
||||
this->mUnk_AE = 0;
|
||||
this->mUnk_AC = 0;
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
this->vfunc_7C();
|
||||
|
||||
sp4Ptr = (s16 *) &sp4;
|
||||
MapObject::func_ov000_0209d22c(sp4Ptr, this, 0);
|
||||
|
||||
if (*sp4Ptr >= 0x4000 || *sp4Ptr <= -0x4000) {
|
||||
this->mUnk_8B = 0;
|
||||
} else {
|
||||
this->mUnk_8B = 1;
|
||||
}
|
||||
|
||||
u16 result = ROUND_Q20(MUL_Q20(func_01ffb428(0x1000 - this->mUnk_6C, 0x1000), INT_TO_Q20(this->mUnk_78)));
|
||||
this->mUnk_80 = result;
|
||||
|
||||
if (this->mUnk_8A) {
|
||||
this->mUnk_82 = 0;
|
||||
|
||||
if (this->mUnk_86 != 0) {
|
||||
if (param2 == 0) {
|
||||
func_ov000_02072fd0(&sp8);
|
||||
|
||||
unk32 temp = this->mUnk_78 + 0x5B;
|
||||
|
||||
sp8.mUnk_00 = 0x7B;
|
||||
sp8.mUnk_08 = temp;
|
||||
sp8.mUnk_3A = 7;
|
||||
sp8.mUnk_3B = 7;
|
||||
sp8.mUnk_38 |= 0x80;
|
||||
sp8.mUnk_0C.x = this->mPos.x;
|
||||
sp8.mUnk_0C.y = this->mPos.y;
|
||||
sp8.mUnk_0C.z = this->mPos.z;
|
||||
|
||||
if (this->mUnk_89 && this->mUnk_20.mUnk_16) {
|
||||
sp8.mUnk_38 |= 4;
|
||||
}
|
||||
|
||||
this->mUnk_74 = data_027e09b8->func_ov000_02073388(&sp8, 0);
|
||||
}
|
||||
}
|
||||
|
||||
data_ov000_020b51b8.func_ov000_0206d0bc(5);
|
||||
this->mUnk_A1 = 1;
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
break;
|
||||
case 0:
|
||||
this->func_ov000_0209d2c4(1, 0);
|
||||
this->func_ov000_0209d2c4(0, 1);
|
||||
|
||||
if (this->mUnk_A2 == 0) {
|
||||
data_ov000_020b51b8.func_ov000_0206d134(0x0F);
|
||||
}
|
||||
|
||||
data_027e0d38->func_ov031_020d9c44(4);
|
||||
|
||||
if (this->mUnk_A2 != 0) {
|
||||
this->mUnk_AE = this->vfunc_8C() * 2;
|
||||
this->mUnk_AC = 0;
|
||||
this->mUnk_88 = 0;
|
||||
this->mUnk_90 = false;
|
||||
}
|
||||
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
|
||||
if (this->mUnk_86 && param2 == 0 && this->mUnk_90 && data_027e0ce0->func_01fff1a4()) {
|
||||
data_027e0d8c->func_ov093_02166058();
|
||||
}
|
||||
|
||||
return;
|
||||
case 2:
|
||||
ptr = &data_027e0cd8; // whyyy
|
||||
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
|
||||
var_r6 = 1;
|
||||
temp_r8 = data_027e09a4->mSceneIndex;
|
||||
|
||||
if (param2 != 0 && (temp_r8 - SceneIndex_tekiya00) > 4) {
|
||||
var_r6 = 0;
|
||||
}
|
||||
|
||||
if ((temp_r8 == SceneIndex_tekiya03 && (*ptr)->func_ov000_02081d5c() == 4) ||
|
||||
(temp_r8 == SceneIndex_tekiya00 && (*ptr)->func_ov000_02081d5c() == 0) ||
|
||||
(temp_r8 == SceneIndex_tekiya02 && (*ptr)->func_ov000_02081d5c() == 0) ||
|
||||
(temp_r8 == SceneIndex_tekiya02 && (*ptr)->func_ov000_02081d5c() == 5)) {
|
||||
var_r6 = 0;
|
||||
}
|
||||
|
||||
if (var_r6 != 0) {
|
||||
data_ov000_020b51b8.func_ov000_0206c9a8(data_ov031_02110c00[this->mUnk_20.mUnk_00[3]], 0, 0x7F, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 8:
|
||||
ptr = &data_027e0cd8;
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->func_ov000_0209d2c4(0, 0);
|
||||
|
||||
if (param2 == 0) {
|
||||
(*ptr)->mUnk_0C->func_ov000_0208053c(this->mUnk_20.mUnk_00[0]);
|
||||
}
|
||||
|
||||
if (param2 == 0) {
|
||||
data_ov000_020b51b8.func_ov000_0206d0ec((*ptr)->mUnk_0C->func_ov000_02080a44(), 0x78, 0x7F, -1);
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRDS::vfunc_64(void) {
|
||||
UnkStruct_027e0cd8_0c *pUVar4;
|
||||
unk32 var_r0;
|
||||
bool var_r5;
|
||||
|
||||
switch (this->mUnk_20.mUnk_00[1]) {
|
||||
case 1:
|
||||
case 4:
|
||||
if (MapObjectDoorBase::vfunc_64()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
pUVar4 = data_027e0cd8->mUnk_0C;
|
||||
if (pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], data_027e0ce0->func_01fff148(0)) == 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);
|
||||
} else {
|
||||
var_r0 = gpActorManager->func_ov000_0209704c();
|
||||
}
|
||||
|
||||
if (var_r0 == 0) {
|
||||
var_r5 = true;
|
||||
}
|
||||
|
||||
return var_r5;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return MapObjectDoorBase::vfunc_64();
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRDS::vfunc_68(void) {
|
||||
UnkStruct_027e0cd8_0c *pUVar2 = data_027e0cd8->mUnk_0C;
|
||||
|
||||
if (this->mUnk_20.mUnk_00[2] == 1) {
|
||||
if (func_ov000_0209d29c(1)) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
if (func_ov000_0209d668()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
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]);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return gpActorManager->func_ov000_0209704c() == 0;
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRDS::vfunc_6C(void) {
|
||||
UnkStruct_027e0cd8_0c *pUVar5;
|
||||
|
||||
switch (this->mUnk_20.mUnk_00[1]) {
|
||||
case 1:
|
||||
case 4:
|
||||
pUVar5 = data_027e0cd8->mUnk_0C;
|
||||
|
||||
if (this->mUnk_20.mUnk_00[2] == 1) {
|
||||
if (this->func_ov000_0209d29c(1) != 0) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (this->func_ov000_0209d668() != 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->mUnk_20.mUnk_00[0] != 0) {
|
||||
if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mUnk_00[0], NULL) == 0) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (gpActorManager->func_ov000_0209704c() == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (pUVar5->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], data_027e0ce0->func_01fff148(0)) != 0) {
|
||||
pUVar5->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (this->mUnk_20.mUnk_00[1] == 3) {
|
||||
if (this->func_ov000_0209d29c(0) != 0) {
|
||||
u16 uVar4 = this->mUnk_20.mUnk_00[0];
|
||||
|
||||
if (uVar4 != 0 && gpActorManager->func_ov000_020970c8(uVar4, 0) != 0) {
|
||||
data_027e0cd8->mUnk_0C->func_ov000_020803ec(this->mUnk_20.mUnk_00[0]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRDS::func_ov031_020fdec8(void) {
|
||||
UnkStruct_027e0cd8_0c *pUVar4;
|
||||
Vec3p *uVar3;
|
||||
int iVar1;
|
||||
|
||||
switch (this->mUnk_20.mUnk_00[1]) {
|
||||
case 1:
|
||||
case 4:
|
||||
if (this->mUnk_20.mUnk_00[2] == 1) {
|
||||
if (this->func_ov000_0209d29c(1) != 0) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (this->func_ov000_0209d668() != 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->mUnk_20.mUnk_00[0] != 0) {
|
||||
if (gpActorManager->func_ov000_020970c8(this->mUnk_20.mUnk_00[0], 0) == 0) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (gpActorManager->func_ov000_0209704c() == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
pUVar4 = data_027e0cd8->mUnk_0C;
|
||||
uVar3 = pUVar4->func_ov001_020b8a5c(data_027e09a4->func_ov000_02070560()->mSpawnIndex, 0);
|
||||
|
||||
if (pUVar4->func_ov000_020802ec(this->mUnk_20.mUnk_00[0], uVar3) != 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc_18(s8 *param1, s8 param2) {
|
||||
this->func_ov031_020fcb78(param1, param2);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc_14(void) {
|
||||
Mat3p m;
|
||||
Mat3p_InitYRotation(&m, SIN((u16) this->mUnk_14), COS((u16) this->mUnk_14));
|
||||
|
||||
Vec3p pos(this->mPos);
|
||||
pos.y += -(this->mUnk_6C * 2);
|
||||
|
||||
this->mUnk_94.vfunc_14(&m, &pos);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc2_10(void) {
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
default:
|
||||
if (data_027e09b8->func_ov000_020732ec(this->mUnk_74) != 0) {
|
||||
if (this->mUnk_68.mUnk_00 != NULL) {
|
||||
this->mUnk_68.mUnk_00->mUnk_24 &= ~0x08;
|
||||
}
|
||||
} else if (this->mUnk_68.mUnk_00 != NULL) {
|
||||
this->mUnk_68.mUnk_00->mUnk_24 |= 0x08;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/DEJfq
|
||||
ARM void MapObjectUnkDRDS::vfunc_74(void) {
|
||||
Vec3p local_28;
|
||||
Vec3p local_34;
|
||||
Vec3p local_40;
|
||||
Vec3p local_4c;
|
||||
Mat4x3p m;
|
||||
|
||||
q20 b33 = 0xB33;
|
||||
|
||||
local_34.x = this->mPos.x;
|
||||
local_34.y = this->mPos.y;
|
||||
local_34.z = this->mPos.z;
|
||||
|
||||
local_40.x = 0;
|
||||
local_40.y = 0;
|
||||
local_40.z = b33;
|
||||
|
||||
local_4c.x = 0;
|
||||
local_4c.y = 0;
|
||||
local_4c.z = -b33;
|
||||
|
||||
local_28.x = local_34.x;
|
||||
local_28.y = local_34.y;
|
||||
local_28.z = local_34.z;
|
||||
|
||||
u16 var_r5 = (u16) (this->mUnk_14 + DEG_TO_ANG(45));
|
||||
|
||||
if (((u16) this->mUnk_14 / DEG_TO_ANG(90)) == 2 && this->mUnk_16 == 5) {
|
||||
var_r5 = 0;
|
||||
}
|
||||
|
||||
Mat4x3p_InitYRotation(&m, SIN(var_r5), COS(var_r5));
|
||||
|
||||
func_01ffaf74(&local_40, &m, &local_40);
|
||||
func_01ffaf74(&local_4c, &m, &local_4c);
|
||||
|
||||
Vec3p_Add(&local_28, &local_40, &local_28);
|
||||
Vec3p_Add(&local_34, &local_4c, &local_34);
|
||||
|
||||
data_027e0cec->func_ov000_0209ff8c(&this->mUnk_68, 0x8CF, &local_28, 4);
|
||||
data_027e0cec->func_ov000_0209ff8c(&this->mUnk_A8, 0x8CF, &local_34, 4);
|
||||
|
||||
if (this->mUnk_68.mUnk_00 != NULL) {
|
||||
this->mUnk_68.mUnk_00->mUnk_A4 = var_r5;
|
||||
}
|
||||
|
||||
if (this->mUnk_A8.mUnk_00 != NULL) {
|
||||
this->mUnk_A8.mUnk_00->mUnk_A4 = var_r5;
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc_7C(void) {
|
||||
this->MapObjectDoorBase::vfunc_7C();
|
||||
|
||||
if (this->mUnk_A8.mUnk_00 != NULL) {
|
||||
this->mUnk_A8.func_ov000_020a0334();
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc_40(void) {
|
||||
data_027e09a8->func_ov000_02071b30(0x138, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc_44(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x137, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc_48(void) {
|
||||
data_027e09a8->func_ov000_02071b30(0x13A, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc_4C(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x139, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRDS::vfunc_88(void) {
|
||||
return !data_027e09b8->func_01ffd420();
|
||||
}
|
||||
|
||||
ARM unk32 MapObjectUnkDRDS::vfunc_8C(void) {
|
||||
if (this->mUnk_A2) {
|
||||
if (data_027e0ce0->func_01fff1a4()) {
|
||||
return 0x28;
|
||||
}
|
||||
|
||||
return 0x14;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::vfunc_84(unk32 param1, Vec3p *param2, unk16 *param3) {
|
||||
s16 iVar1;
|
||||
|
||||
if (!this->mUnk_58) {
|
||||
MapObjectDoorBase::vfunc_84(param1, param2, param3);
|
||||
return;
|
||||
}
|
||||
|
||||
Vec3p local_24;
|
||||
*param3 = this->mUnk_14;
|
||||
iVar1 = this->mUnk_14 + DEG_TO_ANG(30);
|
||||
if (param1 != 0) {
|
||||
local_24.x = MUL_Q20(SIN((u16) iVar1), 0x1666);
|
||||
local_24.z = MUL_Q20(COS((u16) iVar1), 0x1666);
|
||||
local_24.y = 0;
|
||||
} else {
|
||||
local_24.x = MUL_Q20(SIN((u16) iVar1), 0x10CD);
|
||||
local_24.z = MUL_Q20(COS((u16) iVar1), 0x10CD);
|
||||
local_24.y = 0;
|
||||
|
||||
*param3 += DEG_TO_ANG(180);
|
||||
}
|
||||
Vec3p_Add(&this->mPos, &local_24, param2);
|
||||
|
||||
Vec3p local_30;
|
||||
this->mUnk_5A = this->mUnk_14;
|
||||
iVar1 = this->mUnk_14 - DEG_TO_ANG(30);
|
||||
if (param1 != 0) {
|
||||
local_30.x = MUL_Q20(SIN((u16) iVar1), 0x1666);
|
||||
local_30.z = MUL_Q20(COS((u16) iVar1), 0x1666);
|
||||
local_30.y = 0;
|
||||
} else {
|
||||
local_30.x = MUL_Q20(SIN((u16) iVar1), 0x10CD);
|
||||
local_30.z = MUL_Q20(COS((u16) iVar1), 0x10CD);
|
||||
local_30.y = 0;
|
||||
this->mUnk_5A += DEG_TO_ANG(180);
|
||||
}
|
||||
Vec3p_Add(&this->mPos, &local_30, &this->mUnk_5C);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRDS::func_ov031_020fe5fc(Vec3p *param1, MapObjectUnkDRDS *thisx) {
|
||||
if (data_027e0ce0->func_01fff1a4()) {
|
||||
Vec3p *piVar2 = data_027e0ce0->func_01fff148(1);
|
||||
Vec3p *piVar3 = data_027e0ce0->func_01fff148(0);
|
||||
|
||||
Vec3p temp(piVar3->x, piVar3->y, piVar3->z);
|
||||
Vec3p pos(temp.x + piVar2->x, temp.y + piVar2->y, temp.z + piVar2->z);
|
||||
|
||||
func_01ff93c0(&pos, FLOAT_TO_Q20(0.5f));
|
||||
param1->coords = pos.coords;
|
||||
} else {
|
||||
Vec3p *piVar4 = data_027e0ce0->func_01fff148(0);
|
||||
param1->coords = piVar4->coords;
|
||||
}
|
||||
}
|
||||
|
||||
ARM MapObjectUnkDRDS::~MapObjectUnkDRDS() {}
|
||||
ARM MapObjectProfileUnkDRDS::~MapObjectProfileUnkDRDS() {}
|
||||
|
||||
@@ -1,36 +1,246 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkDRKY.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0ce0.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
|
||||
extern "C" f32 func_02039f04(unk32);
|
||||
extern "C" void func_01ffaf74(Vec3p *, Mat4x3p *, Vec3p *);
|
||||
|
||||
const UnkStruct_ov031_021150b0 data_ov031_02115184(0x1E66);
|
||||
|
||||
ARM DECL_PROFILE(MapObjectProfileUnkDRKY);
|
||||
|
||||
ARM MapObject *MapObjectProfileUnkDRKY::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkDRKY();
|
||||
return new(HeapIndex_ITCM) MapObjectUnkDRKY();
|
||||
}
|
||||
|
||||
ARM MapObjectProfileUnkDRKY::MapObjectProfileUnkDRKY() :
|
||||
MapObjectProfile(MapObjectId_DRKY) {}
|
||||
MapObjectProfile_Derived2(MapObjectId_DRKY, MapObjectId_DRKY) {
|
||||
this->mUnk_0E = 1;
|
||||
this->mUnk_06 = 2;
|
||||
this->mUnk_1E |= 0x01;
|
||||
this->mUnk_0C = 0x2666;
|
||||
}
|
||||
|
||||
ARM MapObjectUnkDRKY::MapObjectUnkDRKY() {}
|
||||
ARM MapObjectUnkDRKY::MapObjectUnkDRKY() :
|
||||
mUnk_94(GetUnkPointer1<MapObjectProfileUnkDRKY>()),
|
||||
mUnk_9C(1),
|
||||
mUnk_A0(0),
|
||||
mUnk_A4(false) {
|
||||
this->mUnk_8F = true;
|
||||
SET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
this->mUnk_18[0] = 0x0E;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020fe86c(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020fe888(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020fe8a0(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020fe8ac(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020fe9f8(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020fea88(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020feabc(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020feb4c(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020feb58(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020feb60(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020feb68(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020febb8(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020febdc(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020fed78(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020feda4(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020fede8(void) {}
|
||||
ARM void MapObjectUnkDRKY::func_ov031_020fedec(void) {}
|
||||
ARM bool MapObjectUnkDRKY::vfunc_00(void) {
|
||||
this->func_ov031_020fbf10(true, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRKY::vfunc_08(void) {
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
this->mUnk_A4 = false;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRKY::vfunc_18(s8 *param1, s8 param2) {
|
||||
this->MapObjectDoorBase::func_ov031_020fcb78(param1, param2);
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/XO3u2
|
||||
ARM void MapObjectUnkDRKY::vfunc_14(void) {
|
||||
f32 factor;
|
||||
f32 uVar3;
|
||||
s32 sVar2;
|
||||
s32 sVar2_2;
|
||||
u16 uVar2;
|
||||
|
||||
if (this->mUnk_8B) {
|
||||
uVar3 = func_02039f04(this->mUnk_6C) / 4096.0f;
|
||||
factor = 16384.0f;
|
||||
} else {
|
||||
uVar3 = func_02039f04(this->mUnk_6C) / 4096.0f;
|
||||
factor = -16384.0f;
|
||||
}
|
||||
|
||||
s32 mul = factor * uVar3;
|
||||
sVar2 = (s16) mul;
|
||||
u16 angle = (u16) sVar2;
|
||||
|
||||
Mat3p m;
|
||||
Vec3p local_48;
|
||||
Vec3p temp;
|
||||
|
||||
Mat3p_InitYRotation(&m, SIN(angle), COS(angle));
|
||||
temp.x = this->mPos.x - FLOAT_TO_Q20(1.0f) + this->mUnk_70;
|
||||
temp.z = this->mPos.z;
|
||||
temp.y = this->mPos.y;
|
||||
local_48.x = temp.x;
|
||||
local_48.y = temp.y;
|
||||
local_48.z = temp.z;
|
||||
this->mUnk_94.vfunc_14(&m, &local_48);
|
||||
|
||||
u16 var = (-0x8000 - sVar2);
|
||||
Mat3p_InitYRotation(&m, SIN(var), COS(var));
|
||||
temp.x = this->mPos.x + FLOAT_TO_Q20(1.0f) - this->mUnk_70;
|
||||
temp.z = this->mPos.z;
|
||||
temp.y = this->mPos.y;
|
||||
local_48.x = temp.x;
|
||||
local_48.y = temp.y;
|
||||
local_48.z = temp.z;
|
||||
this->mUnk_94.vfunc_14(&m, &local_48);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRKY::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
this->mUnk_8D = true;
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
if (param2 == 0) {
|
||||
data_027e0ce0->mUnk_2C->func_ov000_020a87c8(-1);
|
||||
}
|
||||
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
data_027e09a8->func_ov000_02071b30(0x134, &this->mPos, 0);
|
||||
break;
|
||||
case 8:
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRKY::func_ov031_020fea88(void) {
|
||||
if (this->mUnk_A4) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (data_027e0ce0->mUnk_2C->mKeyAmount != 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
ARM unk32 MapObjectUnkDRKY::vfunc_28(void) {
|
||||
if (this->mUnk_A4) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (data_027e0ce0->mUnk_2C->mKeyAmount == 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
return -1;
|
||||
default:
|
||||
this->vfunc_5C(3, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRKY::vfunc_64(void) {
|
||||
return this->func_ov000_0209d668();
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRKY::vfunc_68(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRKY::vfunc_6C(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRKY::vfunc_74(void) {
|
||||
data_027e0cec->func_ov000_0209ff8c(&this->mUnk_68, 0x89E, &this->mPos, 4);
|
||||
data_027e0cec->func_ov000_0209ff8c(&this->mUnk_A0, 0x89E, &this->mPos, 4);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRKY::vfunc_7C(void) {
|
||||
this->MapObjectDoorBase::vfunc_7C();
|
||||
|
||||
if (this->mUnk_A0.mUnk_00 != NULL) {
|
||||
this->mUnk_A0.func_ov000_020a0334();
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRKY::vfunc_78(void) {
|
||||
Vec3p local_24;
|
||||
Vec3p local_30;
|
||||
Vec3p VStack_3c;
|
||||
Vec3p VStack_48;
|
||||
Mat4x3p m;
|
||||
Vec3p local_84;
|
||||
Vec3p local_90;
|
||||
|
||||
Vec3p temp;
|
||||
temp.x = this->mPos.x;
|
||||
temp.z = this->mPos.z;
|
||||
temp.y = this->mPos.y;
|
||||
|
||||
local_24.x = temp.x - FLOAT_TO_Q20(0.999f);
|
||||
local_24.y = temp.y;
|
||||
local_24.z = temp.z;
|
||||
|
||||
local_30.x = temp.x + FLOAT_TO_Q20(0.999f);
|
||||
local_30.y = temp.y;
|
||||
local_30.z = temp.z;
|
||||
|
||||
f32 div = func_02039f04(this->mUnk_6C) / 4096.0f;
|
||||
s16 angle = 16384.0f * div;
|
||||
|
||||
Mat4x3p_InitYRotation(&m, SIN((u16) angle), COS((u16) angle));
|
||||
|
||||
local_84.x = FLOAT_TO_Q20(1.0f);
|
||||
local_84.y = 0;
|
||||
local_84.z = 0;
|
||||
|
||||
local_90.x = 0;
|
||||
local_90.y = 0;
|
||||
local_90.z = FLOAT_TO_Q20(0.3299f);
|
||||
|
||||
func_01ffaf74(&local_90, &m, &local_90);
|
||||
func_01ffaf74(&local_84, &m, &local_84);
|
||||
|
||||
Vec3p_Add(&local_24, &local_90, &local_24);
|
||||
Vec3p_Add(&local_24, &local_84, &VStack_3c);
|
||||
|
||||
local_90.x = -local_90.x;
|
||||
local_84.x = -local_84.x;
|
||||
Vec3p_Add(&local_30, &local_90, &local_30);
|
||||
Vec3p_Add(&local_30, &local_84, &VStack_48);
|
||||
|
||||
if (this->mUnk_68.mUnk_00 != NULL) {
|
||||
this->mUnk_68.mUnk_00->func_ov000_02052c48(&VStack_3c, &local_24);
|
||||
}
|
||||
|
||||
if (this->mUnk_A0.mUnk_00 != NULL) {
|
||||
this->mUnk_A0.mUnk_00->func_ov000_02052c48(&VStack_48, &local_30);
|
||||
}
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRKY::vfunc_40(void) {
|
||||
data_027e09a8->func_ov000_02071b30(0x136, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRKY::vfunc_44(void) {
|
||||
unk32 stack = *(u32 *) &this->mUnk_38;
|
||||
data_027e09a8->func_ov000_02071d34(&stack, 0x135, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRKY::vfunc_48(void) {}
|
||||
|
||||
ARM void MapObjectUnkDRKY::vfunc_4C(void) {}
|
||||
|
||||
ARM MapObjectUnkDRKY::~MapObjectUnkDRKY() {}
|
||||
ARM MapObjectProfileUnkDRKY::~MapObjectProfileUnkDRKY() {}
|
||||
|
||||
@@ -1,35 +1,338 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkDRSW.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
#include "versions.h"
|
||||
|
||||
extern "C" void func_01ffaf74(Vec3p *, Mat4x3p *, Vec3p *);
|
||||
extern "C" q20 func_01ffb464(q20);
|
||||
extern "C" void func_01ff9218(q20 *, q20, q20);
|
||||
|
||||
const UnkStruct_ov031_021150b0 data_ov031_02115254(0x1E66);
|
||||
|
||||
ARM DECL_PROFILE(MapObjectProfileUnkDRSW);
|
||||
|
||||
ARM MapObject *MapObjectProfileUnkDRSW::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkDRSW();
|
||||
return new(HeapIndex_ITCM) MapObjectUnkDRSW();
|
||||
}
|
||||
|
||||
ARM MapObjectProfileUnkDRSW::MapObjectProfileUnkDRSW() :
|
||||
MapObjectProfile(MapObjectId_DRSW) {}
|
||||
MapObjectProfile_Derived2(MapObjectId_DRSW, MapObjectId_DRSW) {
|
||||
this->mUnk_06 = -1;
|
||||
this->mUnk_1E &= ~0x01;
|
||||
}
|
||||
|
||||
ARM MapObjectUnkDRSW::MapObjectUnkDRSW() {}
|
||||
ARM MapObjectUnkDRSW::MapObjectUnkDRSW() :
|
||||
mUnk_094(0) {
|
||||
this->mUnkPos = FLOAT_TO_Q20(0.0f);
|
||||
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020feee4(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020fefac(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff07c(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff100(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff110(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff130(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff1b0(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff1bc(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff288(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff2d8(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff318(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff38c(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff3d0(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff3fc(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff43c(void) {}
|
||||
ARM void MapObjectUnkDRSW::func_ov031_020ff468(void) {}
|
||||
#if IS_JP
|
||||
this->mUnk_140 = false;
|
||||
this->mUnk_141 = false;
|
||||
#endif
|
||||
|
||||
this->mUnk_8E = true;
|
||||
this->mUnk_8F = true;
|
||||
this->mUnk_89 = true;
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRSW::vfunc_00(void) {
|
||||
this->mUnk_094.vfunc_08(this->vfunc2_10());
|
||||
this->func_ov031_020fbf10(true, true);
|
||||
|
||||
if (this->mUnk_20.mUnk_00[3] == 1) {
|
||||
this->mUnk_8F = false;
|
||||
}
|
||||
|
||||
#if IS_JP
|
||||
if (this->mUnk_20.mUnk_00[2] == 1) {
|
||||
this->mUnk_141 = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
this->mUnk_0F4.mUnk_0C.x = -FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_0F4.mUnk_0C.z = -FLOAT_TO_Q20(1.35f);
|
||||
|
||||
this->mUnk_0F4.mUnk_18.x = FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_0F4.mUnk_18.z = FLOAT_TO_Q20(0.35f);
|
||||
|
||||
this->mUnk_0F4.mUnk_04 &= ~0x01;
|
||||
this->mUnk_0F4.mUnk_08 = 0x7009;
|
||||
|
||||
#if IS_JP
|
||||
this->mUnk_118.mUnk_0C.x = -FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_118.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_118.mUnk_0C.z = -FLOAT_TO_Q20(1.0f);
|
||||
|
||||
this->mUnk_118.mUnk_18.x = FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_118.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_118.mUnk_18.z = FLOAT_TO_Q20(1.0f);
|
||||
|
||||
this->mUnk_118.mUnk_04 &= ~0x01;
|
||||
this->mUnk_118.mUnk_08 = 0x7009;
|
||||
|
||||
if (!this->IsOrientedVertically()) {
|
||||
this->mUnk_10 = &this->mUnk_0F4;
|
||||
this->mUnk_140 = true;
|
||||
} else if (this->mUnk_141) {
|
||||
this->mUnk_10 = &this->mUnk_118;
|
||||
this->mUnk_140 = true;
|
||||
}
|
||||
#else
|
||||
if (!this->IsOrientedVertically()) {
|
||||
this->mUnk_10 = &this->mUnk_0F4;
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRSW::vfunc_08(void) {
|
||||
if (this->mUnk_20.mUnk_00[3] == 2 && data_027e09b8->func_01ffd420()) {
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
} else if (this->mUnk_16 == 5 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
} else {
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
}
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRSW::vfunc_64(void) {
|
||||
return this->func_ov000_0209d29c(0);
|
||||
}
|
||||
|
||||
ARM bool MapObjectUnkDRSW::vfunc_6C(void) {
|
||||
if (this->func_ov000_0209d29c(0)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRSW::vfunc_14(void) {
|
||||
u16 angle = this->mUnk_14;
|
||||
Mat3p m;
|
||||
|
||||
Mat3p_InitYRotation(&m, SIN(angle), COS(angle));
|
||||
|
||||
Vec3p local_40(this->mPos);
|
||||
local_40.y -= this->mUnk_6C * 2;
|
||||
this->mUnk_094.vfunc_14(&m, &local_40);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRSW::vfunc_18(s8 *param1, s8 param2) {
|
||||
this->func_ov031_020fcb78(param1, param2);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRSW::vfunc_74(void) {
|
||||
Vec3p local_20(this->mPos);
|
||||
Vec3p local_2c(0, 0, 0x666);
|
||||
Mat4x3p m;
|
||||
u16 angle = this->mUnk_14;
|
||||
|
||||
Mat4x3p_InitYRotation(&m, SIN(angle), COS(angle));
|
||||
func_01ffaf74(&local_2c, &m, &local_2c);
|
||||
Vec3p_Add(&local_20, &local_2c, &local_20);
|
||||
|
||||
data_027e0cec->func_ov000_0209ff8c(&this->mUnk_68, 0x8CF, &local_20, 4);
|
||||
|
||||
if (this->mUnk_68.mUnk_00 != NULL) {
|
||||
this->mUnk_68.mUnk_00->mUnk_A4 = this->mUnk_14;
|
||||
}
|
||||
}
|
||||
|
||||
ARM void *MapObjectUnkDRSW::vfunc2_10(void) {
|
||||
return GetUnkPointer1<MapObjectProfileUnkDRSW>();
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRSW::vfunc_50(void) {
|
||||
#if IS_JP
|
||||
if (!this->mUnk_140) {
|
||||
return;
|
||||
}
|
||||
|
||||
u16 uVar1 = this->GetDirection();
|
||||
|
||||
if (!this->IsOrientedVertically()) {
|
||||
this->mUnkPos = FLOAT_TO_Q20(0.35f);
|
||||
|
||||
this->mUnk_0F4.mUnk_0C.x = -FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_0F4.mUnk_0C.z = FLOAT_TO_Q20(0.35f);
|
||||
|
||||
this->mUnk_0F4.mUnk_18.x = FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_0F4.mUnk_18.z = FLOAT_TO_Q20(0.35f);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this->mUnk_141) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (uVar1 == 3) {
|
||||
this->mUnkPos = FLOAT_TO_Q20(0.35f);
|
||||
|
||||
this->mUnk_118.mUnk_0C.x = FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_118.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_118.mUnk_0C.z = -FLOAT_TO_Q20(1.0f);
|
||||
|
||||
this->mUnk_118.mUnk_18.x = FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_118.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_118.mUnk_18.z = FLOAT_TO_Q20(1.0f);
|
||||
} else {
|
||||
this->mUnkPos = -FLOAT_TO_Q20(0.35f);
|
||||
|
||||
this->mUnk_118.mUnk_0C.x = -FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_118.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_118.mUnk_0C.z = -FLOAT_TO_Q20(1.0f);
|
||||
|
||||
this->mUnk_118.mUnk_18.x = -FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_118.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_118.mUnk_18.z = FLOAT_TO_Q20(1.0f);
|
||||
}
|
||||
#else
|
||||
this->mUnkPos = FLOAT_TO_Q20(0.35f);
|
||||
|
||||
this->mUnk_0F4.mUnk_0C.x = -FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_0F4.mUnk_0C.z = FLOAT_TO_Q20(0.35f);
|
||||
|
||||
this->mUnk_0F4.mUnk_18.x = FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_0F4.mUnk_18.z = FLOAT_TO_Q20(0.35f);
|
||||
#endif
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRSW::vfunc_54(void) {
|
||||
this->func_ov031_020fcf0c(1);
|
||||
|
||||
#if IS_JP
|
||||
if (!this->mUnk_140) {
|
||||
return;
|
||||
}
|
||||
|
||||
u16 uVar1 = this->GetDirection();
|
||||
|
||||
if (!this->IsOrientedVertically()) {
|
||||
if (this->mUnk_80 > 0) {
|
||||
func_01ff9218(&this->mUnkPos, -FLOAT_TO_Q20(1.35f), func_01ffb464(INT_TO_Q20(this->mUnk_80)));
|
||||
}
|
||||
|
||||
q20 temp_118 = this->mUnkPos;
|
||||
this->mUnk_0F4.mUnk_0C.x = -FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_0F4.mUnk_0C.z = temp_118;
|
||||
|
||||
this->mUnk_0F4.mUnk_18.x = FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_0F4.mUnk_18.z = FLOAT_TO_Q20(0.35f);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this->mUnk_141) {
|
||||
return;
|
||||
}
|
||||
|
||||
s16 cond_80 = this->mUnk_80;
|
||||
|
||||
if (uVar1 == 3) {
|
||||
if (this->mUnk_80 > 0) {
|
||||
func_01ff9218(&this->mUnkPos, -FLOAT_TO_Q20(0.35f), func_01ffb464(INT_TO_Q20(this->mUnk_80)));
|
||||
}
|
||||
|
||||
this->mUnk_118.mUnk_0C.x = this->mUnkPos;
|
||||
this->mUnk_118.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_118.mUnk_0C.z = -FLOAT_TO_Q20(1.0f);
|
||||
|
||||
this->mUnk_118.mUnk_18.x = FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_118.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_118.mUnk_18.z = FLOAT_TO_Q20(1.0f);
|
||||
} else {
|
||||
if (this->mUnk_80 > 0) {
|
||||
func_01ff9218(&this->mUnkPos, FLOAT_TO_Q20(0.35f), func_01ffb464(INT_TO_Q20(this->mUnk_80)));
|
||||
}
|
||||
|
||||
this->mUnk_118.mUnk_0C.x = -FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_118.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_118.mUnk_0C.z = -FLOAT_TO_Q20(1.0f);
|
||||
|
||||
this->mUnk_118.mUnk_18.x = this->mUnkPos;
|
||||
this->mUnk_118.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_118.mUnk_18.z = FLOAT_TO_Q20(1.0f);
|
||||
}
|
||||
#else
|
||||
if (this->mUnk_80 > 0) {
|
||||
func_01ff9218(&this->mUnkPos, -FLOAT_TO_Q20(1.35f), func_01ffb464(INT_TO_Q20(this->mUnk_80)));
|
||||
}
|
||||
|
||||
q20 temp_118 = this->mUnkPos;
|
||||
this->mUnk_0F4.mUnk_0C.x = -FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_0F4.mUnk_0C.z = temp_118;
|
||||
|
||||
this->mUnk_0F4.mUnk_18.x = FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_0F4.mUnk_18.z = FLOAT_TO_Q20(0.35f);
|
||||
#endif
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRSW::vfunc_58(void) {
|
||||
#if IS_JP
|
||||
if (!this->mUnk_140) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this->IsOrientedVertically()) {
|
||||
this->mUnk_0F4.mUnk_0C.x = -FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_0F4.mUnk_0C.z = -FLOAT_TO_Q20(1.35f);
|
||||
|
||||
this->mUnk_0F4.mUnk_18.x = FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_0F4.mUnk_18.z = FLOAT_TO_Q20(0.35f);
|
||||
} else {
|
||||
if (this->mUnk_141) {
|
||||
this->mUnk_118.mUnk_0C.x = -FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_118.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_118.mUnk_0C.z = -FLOAT_TO_Q20(1.0f);
|
||||
|
||||
this->mUnk_118.mUnk_18.x = FLOAT_TO_Q20(0.35f);
|
||||
this->mUnk_118.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_118.mUnk_18.z = FLOAT_TO_Q20(1.0f);
|
||||
}
|
||||
}
|
||||
#else
|
||||
this->mUnk_0F4.mUnk_0C.x = -FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_0C.y = FLOAT_TO_Q20(0.0f);
|
||||
this->mUnk_0F4.mUnk_0C.z = -FLOAT_TO_Q20(1.35f);
|
||||
|
||||
this->mUnk_0F4.mUnk_18.x = FLOAT_TO_Q20(1.0f);
|
||||
this->mUnk_0F4.mUnk_18.y = FLOAT_TO_Q20(2.4f);
|
||||
this->mUnk_0F4.mUnk_18.z = FLOAT_TO_Q20(0.35f);
|
||||
#endif
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRSW::vfunc_40(void) {
|
||||
data_027e09a8->func_ov000_02071b30(0x131, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRSW::vfunc_44(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x130, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRSW::vfunc_48(void) {
|
||||
data_027e09a8->func_ov000_02071b30(0x133, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRSW::vfunc_4C(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x132, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM MapObjectUnkDRSW::~MapObjectUnkDRSW() {}
|
||||
ARM MapObjectProfileUnkDRSW::~MapObjectProfileUnkDRSW() {}
|
||||
|
||||
@@ -1,26 +1,55 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkDRTC.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/Common.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
|
||||
extern u32 data_ov031_02110c3c[];
|
||||
|
||||
ARM DECL_PROFILE(MapObjectProfileUnkDRTC);
|
||||
|
||||
ARM MapObject *MapObjectProfileUnkDRTC::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkDRTC();
|
||||
return new(HeapIndex_ITCM) MapObjectUnkDRTC();
|
||||
}
|
||||
|
||||
ARM MapObjectProfileUnkDRTC::MapObjectProfileUnkDRTC() :
|
||||
MapObjectProfile(MapObjectId_DRTC) {}
|
||||
MapObjectProfile_Derived1(MapObjectId_DRTC, -1, 0) {
|
||||
this->mUnk_06 = -1;
|
||||
this->mUnk_1E &= ~0x01;
|
||||
}
|
||||
|
||||
ARM MapObjectUnkDRTC::MapObjectUnkDRTC() {}
|
||||
ARM MapObjectUnkDRTC::MapObjectUnkDRTC() {
|
||||
this->mUnk_18[0] = 0x0F;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRTC::func_ov031_021002fc(void) {}
|
||||
ARM void MapObjectUnkDRTC::func_ov031_02100314(void) {}
|
||||
ARM void MapObjectUnkDRTC::func_ov031_021003a0(void) {}
|
||||
ARM void MapObjectUnkDRTC::func_ov031_021003c8(void) {}
|
||||
ARM void MapObjectUnkDRTC::func_ov031_0210040c(void) {}
|
||||
ARM void MapObjectUnkDRTC::func_ov031_02100410(void) {}
|
||||
ARM void MapObjectUnkDRTC::func_ov031_02100414(void) {}
|
||||
ARM bool MapObjectUnkDRTC::vfunc_00(void) {
|
||||
this->MapObjectUnkDRCK::vfunc_00();
|
||||
this->mUnk_88 = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRTC::vfunc2_10(void) {
|
||||
MapObjectProfileUnkDRTC *p = GET_PROFILE(MapObjectProfileUnkDRTC);
|
||||
unk32 index = this->mUnk_20.mUnk_00[0];
|
||||
this->mUnk_94.vfunc_08(GetUnkPointer2<MapObjectProfileUnkDRTC>(index, data_ov031_02110c3c[index]));
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRTC::vfunc_40(void) {
|
||||
data_027e09a8->func_ov000_02071b30(0x148, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRTC::vfunc_44(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x147, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM void MapObjectUnkDRTC::vfunc_48(void) {}
|
||||
|
||||
ARM void MapObjectUnkDRTC::vfunc_4C(void) {}
|
||||
|
||||
ARM void MapObjectUnkDRTC::vfunc2_18(void) {
|
||||
data_027e09a8->func_ov000_02071b30(0x146, &this->mPos, 0);
|
||||
}
|
||||
|
||||
ARM MapObjectUnkDRTC::~MapObjectUnkDRTC() {}
|
||||
|
||||
ARM MapObjectProfileUnkDRTC::~MapObjectProfileUnkDRTC() {}
|
||||
|
||||
Reference in New Issue
Block a user