mirror of
https://github.com/zeldaret/st
synced 2026-08-26 08:02:50 -04:00
Decompiling some actors and objects of overlay 031 (#123)
* feat: decompiling skdo * feat: update * fix: match back .data of doors * feat: fully decompiled SWCH for eur missing bss for JP * feat: increase matching code * feat: decompile most part of SCCN * feat: update * feat: progress sccn jap data * feat: progress decompiling * fix: build issues * feat: increase matching * refactor: rename BLST to Blast * feat: increase grss * refactor: rename unkgrss to grass * refactor: rename id * refactor: change to fx32 * feat: complete RMTG actor * refactor: use ARRAY_LENGTH macro
This commit is contained in:
@@ -205,17 +205,17 @@ unk32 MapObjectChestBase::vfunc_28() {
|
||||
}
|
||||
|
||||
ItemId MapObjectChestBase::func_ov031_021037d0() {
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
switch (this->mState) {
|
||||
case MapObjChestBaseState_0:
|
||||
case MapObjChestBaseState_1:
|
||||
case MapObjChestBaseState_4:
|
||||
case MapObjChestBaseState_5:
|
||||
case MapObjChestBaseState_6:
|
||||
case MapObjChestBaseState_7:
|
||||
case MapObjChestBaseState_8:
|
||||
return ItemId_None;
|
||||
case 2:
|
||||
case 3:
|
||||
case MapObjChestBaseState_2:
|
||||
case MapObjChestBaseState_3:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -230,7 +230,7 @@ ItemId MapObjectChestBase::func_ov031_021037d0() {
|
||||
}
|
||||
|
||||
bool MapObjectChestBase::func_ov031_02103864() {
|
||||
return this->mUnk_16 == 8 ? true : false;
|
||||
return this->mState == MapObjChestBaseState_8 ? true : false;
|
||||
}
|
||||
|
||||
void MapObjectChestBase::func_ov031_02103878() {
|
||||
|
||||
@@ -108,21 +108,21 @@ void MapObjectDoorBase::func_ov031_020fbf10(bool param1, bool param2) {
|
||||
SET_FLAG(this->mFlags, MapObjFlag_5);
|
||||
|
||||
if (this->vfunc_64()) {
|
||||
this->vfunc_5C(8, 1);
|
||||
this->vfunc_5C(MapObjDoorBaseState_8, 1);
|
||||
|
||||
if (param2) {
|
||||
this->func_ov031_020fcd40();
|
||||
}
|
||||
} else {
|
||||
this->vfunc_5C(2, 1);
|
||||
this->vfunc_5C(MapObjDoorBaseState_2, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectDoorBase::vfunc_08() {
|
||||
this->vfunc_70();
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorBaseState_0:
|
||||
if (this->mUnk_80 > 0) {
|
||||
this->mUnk_80--;
|
||||
}
|
||||
@@ -132,7 +132,7 @@ void MapObjectDoorBase::vfunc_08() {
|
||||
}
|
||||
|
||||
if (this->mUnk_80 == 0) {
|
||||
this->vfunc_5C(1, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_1, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -143,65 +143,65 @@ void MapObjectDoorBase::vfunc_08() {
|
||||
}
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_68()) {
|
||||
this->vfunc_5C(3, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_3, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 1:
|
||||
case MapObjDoorBaseState_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);
|
||||
this->vfunc_5C(MapObjDoorBaseState_2, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_68()) {
|
||||
this->vfunc_5C(3, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_3, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 2:
|
||||
case MapObjDoorBaseState_2:
|
||||
if (this->vfunc_68()) {
|
||||
this->vfunc_5C(3, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_3, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 3:
|
||||
case MapObjDoorBaseState_3:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= 0x1D) {
|
||||
this->vfunc_5C(4, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_4, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
case MapObjDoorBaseState_4:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= 0x28) {
|
||||
this->vfunc_5C(5, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_5, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 5:
|
||||
case MapObjDoorBaseState_5:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -228,36 +228,36 @@ void MapObjectDoorBase::vfunc_08() {
|
||||
|
||||
if (this->mUnk_82 >= 0x32) {
|
||||
this->mUnk_82 = 0x32;
|
||||
this->vfunc_5C(6, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_6, 0);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 6:
|
||||
case MapObjDoorBaseState_6:
|
||||
this->mUnk_82++;
|
||||
this->mUnk_84++;
|
||||
|
||||
if (this->mUnk_82 >= 0x32) {
|
||||
this->mUnk_82 = 0x32;
|
||||
this->vfunc_5C(7, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_7, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 7:
|
||||
case MapObjDoorBaseState_7:
|
||||
this->mUnk_82++;
|
||||
this->mUnk_84++;
|
||||
|
||||
if (this->mUnk_82 >= 0x50) {
|
||||
this->vfunc_5C(8, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_8, 0);
|
||||
}
|
||||
|
||||
// fallthrough
|
||||
case 8:
|
||||
case MapObjDoorBaseState_8:
|
||||
if (!this->vfunc_6C()) {
|
||||
break;
|
||||
}
|
||||
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorBaseState_0, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -271,31 +271,31 @@ void MapObjectDoorBase::vfunc_40() {}
|
||||
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) {
|
||||
} else if (this->mState == MapObjDoorBaseState_2 || this->mState == MapObjDoorBaseState_8) {
|
||||
this->vfunc_08();
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectDoorBase::vfunc_60() {
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorBaseState_0:
|
||||
if (!this->mUnk_86 && !GET_FLAG(this->mFlags, MapObjFlag_1) && this->mUnk_6C <= FLOAT_TO_FX32(0.5f)) {
|
||||
this->func_ov031_020fcf0c(1);
|
||||
}
|
||||
this->vfunc_54();
|
||||
break;
|
||||
case 2:
|
||||
case MapObjDoorBaseState_2:
|
||||
if (this->mUnk_86 && !GET_FLAG(this->mFlags, MapObjFlag_1) && this->mUnk_6C <= FLOAT_TO_FX32(0.5f)) {
|
||||
this->func_ov031_020fcf0c(1);
|
||||
this->vfunc_58();
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case MapObjDoorBaseState_5:
|
||||
if (GET_FLAG(this->mFlags, MapObjFlag_1) && this->mUnk_6C >= FLOAT_TO_FX32(0.5f)) {
|
||||
this->func_ov031_020fcf0c(0);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case MapObjDoorBaseState_1:
|
||||
if (this->mUnk_86) {
|
||||
this->func_ov031_020fcf0c(1);
|
||||
this->vfunc_58();
|
||||
@@ -319,13 +319,13 @@ struct UnkStackStruct {
|
||||
u16 mUnk_1E;
|
||||
};
|
||||
|
||||
void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
void MapObjectDoorBase::vfunc_5C(MapObjState state, unk32 param2) {
|
||||
UnkStackStruct1 auStack_5c;
|
||||
UnkStackStruct1 auStack_9c;
|
||||
this->mUnk_16 = param1;
|
||||
this->mState = state;
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorBaseState_0:
|
||||
if (this->mUnk_88) {
|
||||
this->vfunc_74();
|
||||
}
|
||||
@@ -395,7 +395,7 @@ void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
this->func_ov000_0209d614(0);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case MapObjDoorBaseState_1:
|
||||
if (this->mUnk_91) {
|
||||
this->vfunc_48();
|
||||
}
|
||||
@@ -403,11 +403,11 @@ void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
this->mUnk_82 = 0;
|
||||
this->vfunc_7C();
|
||||
break;
|
||||
case 2:
|
||||
case MapObjDoorBaseState_2:
|
||||
this->mUnk_84 = 0x0D;
|
||||
this->func_ov031_020fcf0c(1);
|
||||
break;
|
||||
case 3:
|
||||
case MapObjDoorBaseState_3:
|
||||
this->vfunc_7C();
|
||||
|
||||
this->mUnk_80 =
|
||||
@@ -484,7 +484,7 @@ void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
case MapObjDoorBaseState_4:
|
||||
this->vfunc_7C();
|
||||
|
||||
if (this->mUnk_8A && this->mUnk_86 && param2 == 0) {
|
||||
@@ -505,17 +505,17 @@ void MapObjectDoorBase::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case MapObjDoorBaseState_5:
|
||||
if (this->mUnk_88) {
|
||||
this->vfunc_74();
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
case MapObjDoorBaseState_6:
|
||||
this->vfunc_7C();
|
||||
break;
|
||||
case 7:
|
||||
case MapObjDoorBaseState_7:
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorBaseState_8:
|
||||
this->vfunc_7C();
|
||||
|
||||
if (param2 == 0) {
|
||||
@@ -621,30 +621,30 @@ void MapObjectDoorBase::func_ov031_020fcd40() {
|
||||
}
|
||||
|
||||
void MapObjectDoorBase::vfunc_70() {
|
||||
switch (this->mUnk_16) {
|
||||
case 5:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorBaseState_5:
|
||||
if (this->mUnk_80 > 0) {
|
||||
this->vfunc_44();
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
case MapObjDoorBaseState_0:
|
||||
if (this->mUnk_80 > 0) {
|
||||
this->vfunc_4C();
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case MapObjDoorBaseState_1:
|
||||
break;
|
||||
case 2:
|
||||
case MapObjDoorBaseState_2:
|
||||
break;
|
||||
case 3:
|
||||
case MapObjDoorBaseState_3:
|
||||
break;
|
||||
case 4:
|
||||
case MapObjDoorBaseState_4:
|
||||
break;
|
||||
case 6:
|
||||
case MapObjDoorBaseState_6:
|
||||
break;
|
||||
case 7:
|
||||
case MapObjDoorBaseState_7:
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorBaseState_8:
|
||||
break;
|
||||
default:
|
||||
this->vfunc_44();
|
||||
@@ -709,7 +709,7 @@ void MapObjectDoorBase::vfunc2_08() {
|
||||
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) {
|
||||
if (this->mState != MapObjDoorBaseState_1 || !this->mUnk_8C || (u16) (this->mUnk_14 + 0x2000) / DEG_TO_ANG(90) != 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -725,7 +725,7 @@ void MapObjectDoorBase::vfunc2_08() {
|
||||
|
||||
// temp_r3 = sp - 4;
|
||||
// *temp_r3 = this->mUnk_4A;
|
||||
data_027e0ce0->func_ov000_0208bbd4(this->mUnk_44, &this->mUnk_4C, this->mUnk_4A);
|
||||
data_027e0ce0->func_ov000_0208bbd4(this->mUnk_04, &this->mUnk_4C, this->mUnk_4A);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -735,7 +735,7 @@ void MapObjectDoorBase::vfunc2_08() {
|
||||
|
||||
// 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);
|
||||
data_027e0ce0->func_ov000_0208bbd4(this->mUnk_04, &this->mUnk_4C, this->mUnk_4A);
|
||||
|
||||
this->mUnk_5C.x = this->mPos.x + FLOAT_TO_FX32(1.0f);
|
||||
this->mUnk_5C.y = this->mPos.y;
|
||||
|
||||
@@ -98,46 +98,46 @@ void MapObjectDoorClick::vfunc_08(void) {
|
||||
this->mUnk_A4 = 0;
|
||||
}
|
||||
|
||||
if (this->mUnk_16 == 2) {
|
||||
if (this->mState == MapObjDoorClickState_2) {
|
||||
this->mUnk_8B = this->func_ov031_020fcf30();
|
||||
}
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorClickState_3:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(4)) {
|
||||
this->vfunc_5C(4, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_4, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
case MapObjDoorClickState_4:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(5)) {
|
||||
this->vfunc_5C(5, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_5, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 5:
|
||||
case MapObjDoorClickState_5:
|
||||
this->mUnk_84++;
|
||||
|
||||
if (!this->mUnk_86 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -165,31 +165,31 @@ void MapObjectDoorClick::vfunc_08(void) {
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(6)) {
|
||||
this->mUnk_82 = this->vfunc2_1C(6);
|
||||
this->vfunc_5C(6, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_6, 0);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case 6:
|
||||
case MapObjDoorClickState_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);
|
||||
this->vfunc_5C(MapObjDoorClickState_7, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 7:
|
||||
case MapObjDoorClickState_7:
|
||||
this->mUnk_84++;
|
||||
this->mUnk_82++;
|
||||
|
||||
if (this->mUnk_82 >= this->vfunc2_1C(8)) {
|
||||
this->vfunc_5C(8, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_8, 0);
|
||||
}
|
||||
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorClickState_8:
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
break;
|
||||
default:
|
||||
@@ -246,17 +246,17 @@ void MapObjectDoorClick::vfunc_14(void) {
|
||||
this->mUnk_94.vfunc_14(&m, &local_48);
|
||||
}
|
||||
|
||||
void MapObjectDoorClick::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
void MapObjectDoorClick::vfunc_5C(MapObjState state, unk32 param2) {
|
||||
s32 var_r6;
|
||||
u32 temp_r8;
|
||||
UnkStackStruct1 sp8;
|
||||
s16 sp4;
|
||||
s16 *sp4Ptr;
|
||||
|
||||
this->mUnk_16 = param1;
|
||||
this->mState = state;
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorClickState_3:
|
||||
this->vfunc_7C();
|
||||
|
||||
u16 result = ROUND_FX32(MUL_FX32(func_01ffb428(0x1000 - this->mUnk_6C, 0x1000), INT_TO_FX32(this->mUnk_78)));
|
||||
@@ -272,9 +272,9 @@ void MapObjectDoorClick::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorClickState_8:
|
||||
if (this->mUnk_20.mParams[2] & 0xFF) {
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
this->func_ov031_020fcf0c(1);
|
||||
this->mUnk_10 = this->vfunc2_14();
|
||||
break;
|
||||
@@ -282,7 +282,7 @@ void MapObjectDoorClick::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
|
||||
// fallthrough
|
||||
default:
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -308,16 +308,16 @@ bool MapObjectDoorClick::func_ov031_020ffde4(void) {
|
||||
}
|
||||
|
||||
unk32 MapObjectDoorClick::vfunc_28(void) {
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorClickState_3:
|
||||
case MapObjDoorClickState_4:
|
||||
case MapObjDoorClickState_5:
|
||||
case MapObjDoorClickState_6:
|
||||
case MapObjDoorClickState_7:
|
||||
case MapObjDoorClickState_8:
|
||||
return -1;
|
||||
default:
|
||||
this->vfunc_5C(3, 0);
|
||||
this->vfunc_5C(MapObjDoorClickState_3, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ extern "C" unk32 func_01ffb428(unk32, unk32);
|
||||
extern "C" void func_01ffaf74(VecFx32 *, Mat4x3p *, VecFx32 *);
|
||||
extern "C" void func_01ff93c0(VecFx32 *, fx32);
|
||||
extern unk32 data_ov031_02110c00[];
|
||||
extern UnkStruct_ov000_020b34c4_Callback data_ov000_020b4cc4;
|
||||
|
||||
const UnkStruct_ov031_021150b0 data_ov031_021150b0(0x1E66);
|
||||
|
||||
@@ -70,7 +69,7 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) {
|
||||
ptr = data_027e0cd8->mUnk_0C;
|
||||
ptr->func_ov000_0208053c(this->mUnk_20.mParams[0]);
|
||||
ptr->func_ov000_020803ec(this->mUnk_20.mParams[0]);
|
||||
this->vfunc_5C(2, 1);
|
||||
this->vfunc_5C(MapObjDoorDangerSpawnState_2, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -81,22 +80,19 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) {
|
||||
if (this->mUnk_20.mParams[1] == 4) {
|
||||
if (this->func_ov000_0209d29c(0) != 0) {
|
||||
this->mUnk_6C = 0;
|
||||
this->MapObjectDoorBase::vfunc_5C(2, 1);
|
||||
this->MapObjectDoorBase::vfunc_5C(MapObjDoorDangerSpawnState_2, 1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this->vfunc_5C(8, 1);
|
||||
this->vfunc_5C(MapObjDoorDangerSpawnState_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_DoorDangerSpawn;
|
||||
MapObjectDoorDangerSpawn_ov031_02116e24 stack(MapObjectId_DoorDangerSpawn);
|
||||
bool run = true;
|
||||
|
||||
MapObject **ppMapObject =
|
||||
gpMapObjManager->func_01fff520((UnkStruct_ov000_020b34c4 *) &stack.mUnk_00, gpMapObjManager->mMapObjTable);
|
||||
MapObject **ppMapObject = gpMapObjManager->func_01fff520(&stack, gpMapObjManager->mMapObjTable);
|
||||
|
||||
if (ppMapObject != gpMapObjManager->mUnk_08) {
|
||||
MapObjectDoorDangerSpawn *pMapObject = (MapObjectDoorDangerSpawn *) *ppMapObject;
|
||||
@@ -126,7 +122,7 @@ void MapObjectDoorDangerSpawn::vfunc_04(void) {
|
||||
this->mUnk_A2 = true;
|
||||
this->mUnk_8C = 0;
|
||||
ptr->func_ov000_020803ec(this->mUnk_20.mParams[0]);
|
||||
this->vfunc_5C(0, 0);
|
||||
this->vfunc_5C(MapObjDoorDangerSpawnState_0, 0);
|
||||
|
||||
UnkStruct_027e09bc_0C *uVar5 = data_027e09bc->mUnk_0C;
|
||||
MapObjectDoorDangerSpawn::func_ov031_020fe5fc(&auStack_20, this);
|
||||
@@ -166,8 +162,8 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
|
||||
this->mUnk_AC++;
|
||||
}
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorDangerSpawnState_0:
|
||||
if (this->mUnk_A2) {
|
||||
u16 max = this->mUnk_AE;
|
||||
u16 timer = this->mUnk_AC;
|
||||
@@ -204,7 +200,7 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
case 1:
|
||||
case MapObjDoorDangerSpawnState_1:
|
||||
if (!this->mUnk_86 || data_027e09b8->func_ov000_020732ec(this->mUnk_74)) {
|
||||
if (!this->mUnk_A2) {
|
||||
if (data_027e09b8->func_ov000_0207330c() == 0x0A) {
|
||||
@@ -228,7 +224,7 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case MapObjDoorDangerSpawnState_2:
|
||||
if (this->mUnk_20.mParams[1] == 4 && this->func_ov000_0209d29c(0) != 0) {
|
||||
if (this->func_ov000_0209d29c(1) != 0) {
|
||||
return;
|
||||
@@ -258,7 +254,7 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
this->vfunc2_10();
|
||||
|
||||
if (this->mUnk_16 == 2 && this->mUnk_A4 == 0 && !this->mUnk_A1) {
|
||||
if (this->mState == MapObjDoorDangerSpawnState_2 && this->mUnk_A4 == 0 && !this->mUnk_A1) {
|
||||
data_ov000_020b51b8.func_ov000_0206d0bc(5);
|
||||
this->mUnk_A1 = true;
|
||||
}
|
||||
@@ -267,12 +263,12 @@ void MapObjectDoorDangerSpawn::vfunc_08(void) {
|
||||
void MapObjectDoorDangerSpawn::vfunc_0C(void) {
|
||||
this->MapObjectDoorBase::vfunc_0C();
|
||||
|
||||
if ((u16) this->mUnk_16 <= 1) {
|
||||
if ((u16) this->mState <= MapObjDoorDangerSpawnState_1) {
|
||||
this->vfunc_08();
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
void MapObjectDoorDangerSpawn::vfunc_5C(MapObjState state, unk32 param2) {
|
||||
UnkStruct_027e0cd8 **ptr;
|
||||
s32 var_r6;
|
||||
u32 temp_r8;
|
||||
@@ -280,12 +276,12 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
s16 sp4;
|
||||
s16 *sp4Ptr;
|
||||
|
||||
this->mUnk_16 = param1;
|
||||
this->mState = state;
|
||||
this->mUnk_AE = 0;
|
||||
this->mUnk_AC = 0;
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorDangerSpawnState_3:
|
||||
this->vfunc_7C();
|
||||
|
||||
sp4Ptr = (s16 *) &sp4;
|
||||
@@ -331,10 +327,10 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
break;
|
||||
case 4:
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
case MapObjDoorDangerSpawnState_4:
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
break;
|
||||
case 0:
|
||||
case MapObjDoorDangerSpawnState_0:
|
||||
this->func_ov000_0209d2c4(1, false);
|
||||
this->func_ov000_0209d2c4(0, true);
|
||||
|
||||
@@ -351,17 +347,17 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
this->mUnk_90 = false;
|
||||
}
|
||||
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
|
||||
if (this->mUnk_86 && param2 == 0 && this->mUnk_90 && data_027e0ce0->func_01fff1a4()) {
|
||||
data_027e0d8c->func_ov093_02166058();
|
||||
}
|
||||
|
||||
return;
|
||||
case 2:
|
||||
case MapObjDoorDangerSpawnState_2:
|
||||
ptr = &data_027e0cd8; // whyyy
|
||||
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
|
||||
var_r6 = 1;
|
||||
temp_r8 = data_027e09a4->CurrentSceneIndex();
|
||||
@@ -382,9 +378,9 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
}
|
||||
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorDangerSpawnState_8:
|
||||
ptr = &data_027e0cd8;
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
this->func_ov000_0209d2c4(0, false);
|
||||
|
||||
if (param2 == 0) {
|
||||
@@ -397,7 +393,7 @@ void MapObjectDoorDangerSpawn::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
|
||||
break;
|
||||
default:
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -577,8 +573,8 @@ void MapObjectDoorDangerSpawn::vfunc_14(void) {
|
||||
}
|
||||
|
||||
void MapObjectDoorDangerSpawn::vfunc2_10(void) {
|
||||
switch (this->mUnk_16) {
|
||||
case 0:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorDangerSpawnState_0:
|
||||
default:
|
||||
if (data_027e09b8->func_ov000_020732ec(this->mUnk_74) != 0) {
|
||||
if (this->mUnk_68.mUnk_00 != NULL) {
|
||||
@@ -588,14 +584,14 @@ void MapObjectDoorDangerSpawn::vfunc2_10(void) {
|
||||
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:
|
||||
case MapObjDoorDangerSpawnState_1:
|
||||
case MapObjDoorDangerSpawnState_2:
|
||||
case MapObjDoorDangerSpawnState_3:
|
||||
case MapObjDoorDangerSpawnState_4:
|
||||
case MapObjDoorDangerSpawnState_5:
|
||||
case MapObjDoorDangerSpawnState_6:
|
||||
case MapObjDoorDangerSpawnState_7:
|
||||
case MapObjDoorDangerSpawnState_8:
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -628,7 +624,7 @@ void MapObjectDoorDangerSpawn::vfunc_74(void) {
|
||||
|
||||
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) {
|
||||
if (((u16) this->mUnk_14 / DEG_TO_ANG(90)) == 2 && this->mState == MapObjDoorDangerSpawnState_5) {
|
||||
var_r5 = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -91,12 +91,12 @@ void MapObjectDoorKey::vfunc_14(void) {
|
||||
this->mUnk_94.vfunc_14(&m, &local_48);
|
||||
}
|
||||
|
||||
void MapObjectDoorKey::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
void MapObjectDoorKey::vfunc_5C(MapObjState state, unk32 param2) {
|
||||
this->mUnk_8D = true;
|
||||
this->MapObjectDoorBase::vfunc_5C(param1, param2);
|
||||
this->MapObjectDoorBase::vfunc_5C(state, param2);
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorKeyState_3:
|
||||
if (param2 == 0) {
|
||||
data_027e0ce0->mUnk_2C->GetInventory()->GiveSmallKeys(-1);
|
||||
}
|
||||
@@ -104,7 +104,7 @@ void MapObjectDoorKey::vfunc_5C(unk32 param1, unk32 param2) {
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
data_027e09a8->func_ov000_02071b30(0x134, &this->mPos, 0);
|
||||
break;
|
||||
case 8:
|
||||
case MapObjDoorKeyState_8:
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_9);
|
||||
break;
|
||||
default:
|
||||
@@ -133,16 +133,16 @@ unk32 MapObjectDoorKey::vfunc_28(void) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (this->mUnk_16) {
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
switch (this->mState) {
|
||||
case MapObjDoorKeyState_3:
|
||||
case MapObjDoorKeyState_4:
|
||||
case MapObjDoorKeyState_5:
|
||||
case MapObjDoorKeyState_6:
|
||||
case MapObjDoorKeyState_7:
|
||||
case MapObjDoorKeyState_8:
|
||||
return -1;
|
||||
default:
|
||||
this->vfunc_5C(3, 0);
|
||||
this->vfunc_5C(MapObjDoorKeyState_3, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ bool MapObjectDoorSwitch::vfunc_00(void) {
|
||||
void MapObjectDoorSwitch::vfunc_08(void) {
|
||||
if (this->mUnk_20.mParams[3] == 2 && data_027e09b8->func_01ffd420()) {
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
} else if (this->mUnk_16 == 5 && this->vfunc_6C()) {
|
||||
} else if (this->mState == MapObjDoorSwitchState_5 && this->vfunc_6C()) {
|
||||
this->vfunc_5C(0, 0);
|
||||
} else {
|
||||
this->MapObjectDoorBase::vfunc_08();
|
||||
|
||||
@@ -0,0 +1,167 @@
|
||||
#include "MapObject/MapObjectGrass.hpp"
|
||||
|
||||
#include "System/Random.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
|
||||
DECL_PROFILE(MapObjectProfileGrass);
|
||||
|
||||
MapObject *MapObjectProfileGrass::Create() {
|
||||
return new(HeapIndex_ITCM) MapObjectGrass();
|
||||
}
|
||||
|
||||
// non-matching
|
||||
MapObjectProfileGrass::MapObjectProfileGrass() :
|
||||
MapObjectProfile_Derived2(MapObjectId_Grass, MapObjectId_Grass) {}
|
||||
|
||||
MapObjectGrass::MapObjectGrass() :
|
||||
mUnk_58(0x0),
|
||||
mUnk_5C(FLOAT_TO_FX32(0.0f)),
|
||||
mUnk_64(-1) {
|
||||
this->mUnk_62 = 0x0;
|
||||
this->mUnk_60 = 0x0;
|
||||
SET_FLAG(this->mFlags, MapObjFlag_6);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool MapObjectGrass::vfunc_00() {}
|
||||
|
||||
void MapObjectGrass::vfunc_08() {
|
||||
MapObjState state = this->mState;
|
||||
if (state != MapObjGrassState_1) {
|
||||
if (state == MapObjGrassState_2 && this->func_ov031_021016b4()) {
|
||||
this->vfunc_38(MapObjGrassState_3, 0x0);
|
||||
}
|
||||
} else if (this->func_ov031_02101778()) {
|
||||
this->vfunc_38(MapObjGrassState_0, 0x0);
|
||||
}
|
||||
if (this->mUnk_64 > -1) {
|
||||
--this->mUnk_64;
|
||||
}
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void MapObjectGrass::vfunc_14() {
|
||||
VecFx32 vec;
|
||||
for (unk32 i = 0; i < ARRAY_LEN(this->mUnk_40); ++i) {
|
||||
VecFx32_Add(&this->mUnk_40[i], &this->mPos, &vec);
|
||||
vec.x += this->mUnk_5C;
|
||||
}
|
||||
}
|
||||
|
||||
bool MapObjectGrass::vfunc_38(MapObjState state, unk32 param2) {
|
||||
if (this->mState == state) {
|
||||
return true;
|
||||
}
|
||||
this->mState = state;
|
||||
switch (this->mState) {
|
||||
case MapObjGrassState_0:
|
||||
this->mUnk_5C = FLOAT_TO_FX32(0.0f);
|
||||
if (param2 != 0) {
|
||||
this->func_ov031_021018a4(0x0);
|
||||
}
|
||||
break;
|
||||
case MapObjGrassState_2:
|
||||
this->mUnk_58 = 0x0;
|
||||
this->mUnk_5C = FLOAT_TO_FX32(0.0f);
|
||||
|
||||
VecFx32 vec;
|
||||
for (unk32 i = 0; i < ARRAY_LEN(this->mUnk_40); ++i) {
|
||||
VecFx32_Init(this->mUnk_40[i].x, this->mUnk_40[i].y + FLOAT_TO_FX32(0.35f), this->mUnk_40[i].z, &vec);
|
||||
VecFx32_Add(&vec, &this->mPos, &vec);
|
||||
this->vfunc_3C(&vec);
|
||||
}
|
||||
|
||||
if (this->GetMapObjectId() == MapObjectId_GRSV) {
|
||||
data_027e09a8->func_ov000_02071b30(0xFB, &this->mPos, 0);
|
||||
} else {
|
||||
data_027e09a8->func_ov000_02071b30(0xF7, &this->mPos, 0);
|
||||
}
|
||||
this->func_ov031_021018a4(0x1);
|
||||
break;
|
||||
case MapObjGrassState_1:
|
||||
this->mUnk_5C = FLOAT_TO_FX32(0.0f);
|
||||
this->mUnk_58 = 0x0;
|
||||
break;
|
||||
case MapObjGrassState_3:
|
||||
this->mUnk_5C = FLOAT_TO_FX32(0.0f);
|
||||
this->func_ov031_021018a4(0x1);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool MapObjectGrass::func_ov031_021016b4() {}
|
||||
|
||||
void MapObjectGrass::vfunc_3C(VecFx32 *param1) {
|
||||
data_027e0cec->func_ov000_0209feac(0x923, param1, 0x4, 0x0, 0x0);
|
||||
}
|
||||
|
||||
bool MapObjectGrass::func_ov031_02101778() {
|
||||
this->mUnk_5C = gRandom.Next32(0x4CD) + 0xFFFFFD9A;
|
||||
if (this->mUnk_58 >= 4U) {
|
||||
return true;
|
||||
}
|
||||
++this->mUnk_58;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MapObjectGrass::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) {
|
||||
if (this->mUnk_64 != -0x1) {
|
||||
return false;
|
||||
}
|
||||
switch (param2) {
|
||||
case 0x7:
|
||||
case 0x8:
|
||||
case 0xC:
|
||||
if (this->mState >= MapObjGrassState_2) {
|
||||
return false;
|
||||
}
|
||||
this->vfunc_38(MapObjGrassState_2, 0x0);
|
||||
return false;
|
||||
case 0x4:
|
||||
if (this->mState >= MapObjGrassState_1) {
|
||||
return false;
|
||||
}
|
||||
this->vfunc_38(MapObjGrassState_1, 0x0);
|
||||
return false;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectGrass::func_ov031_021018a4(unk16 param1) {
|
||||
if (param1 != 0x0) {
|
||||
this->mUnk_60 = 0x4;
|
||||
this->mUnk_62 = 0x4;
|
||||
return;
|
||||
}
|
||||
if (this->mUnk_20.mParams[1] == 0x1) {
|
||||
this->mUnk_60 = 0x3;
|
||||
} else {
|
||||
this->mUnk_60 = gRandom.Next32(0x3);
|
||||
}
|
||||
this->mUnk_62 = gRandom.Next32(0x3);
|
||||
}
|
||||
|
||||
unk32 MapObjectGrass::func_ov031_02101950() {
|
||||
if (!(this->mState != MapObjGrassState_0 && this->mState != MapObjGrassState_1)) {
|
||||
return 0x15;
|
||||
}
|
||||
return 0x16;
|
||||
}
|
||||
|
||||
void MapObjectGrass::func_ov031_02101968(unk32 param1) {
|
||||
if (param1 != 0x0) {
|
||||
this->mUnk_64 = 0xA;
|
||||
}
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void MapObjectGrass::func_ov031_02101978(unk32 param1, VecFx32 *param2) {
|
||||
VecFx32_Copy(param2, &this->mUnk_40[param1]);
|
||||
}
|
||||
@@ -21,7 +21,7 @@ MapObject *MapObjectProfilePot::Create() {
|
||||
}
|
||||
|
||||
MapObjectProfilePot::MapObjectProfilePot() :
|
||||
MapObjectProfilePot_Base(MapObjectId_TSUB, MapObjectId_TSUB) {
|
||||
MapObjectProfilePot_Base(MapObjectId_Pot, MapObjectId_Pot) {
|
||||
this->mUnk_0E = 0x0;
|
||||
this->mUnk_D4.mUnk_08 = 0x7007;
|
||||
this->mUnk_D4.mUnk_0C.x = FLOAT_TO_FX32(0.0f);
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkGRSS.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
DECL_PROFILE(MapObjectProfileUnkGRSS);
|
||||
|
||||
MapObject *MapObjectProfileUnkGRSS::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkGRSS();
|
||||
}
|
||||
|
||||
MapObjectProfileUnkGRSS::MapObjectProfileUnkGRSS() :
|
||||
MapObjectProfile(MapObjectId_GRSS) {}
|
||||
|
||||
MapObjectUnkGRSS::MapObjectUnkGRSS() {}
|
||||
|
||||
void MapObjectUnkGRSS::func_ov031_021010e0(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101170(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_0210148c(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101504(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101578(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_021016b4(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_0210173c(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101778(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_021017ec(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_021018a4(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101950(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101968(void) {}
|
||||
void MapObjectUnkGRSS::func_ov031_02101978(void) {}
|
||||
|
||||
MapObjectUnkGRSS::~MapObjectUnkGRSS() {}
|
||||
MapObjectProfileUnkGRSS::~MapObjectProfileUnkGRSS() {}
|
||||
@@ -1,34 +1,423 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "MapObject/MapObjectUnkSKDI.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
#include "Actor/ActorManager.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
|
||||
struct UnkStackStruct;
|
||||
DECL_PROFILE(MapObjectProfileUnkSKDI);
|
||||
|
||||
MapObject *MapObjectProfileUnkSKDI::Create() {
|
||||
return new(HeapIndex_2) MapObjectUnkSKDI();
|
||||
return new(HeapIndex_ITCM) MapObjectUnkSKDI();
|
||||
}
|
||||
|
||||
MapObjectProfileUnkSKDI::MapObjectProfileUnkSKDI() :
|
||||
MapObjectProfile(MapObjectId_SKDI) {}
|
||||
MapObjectProfile_Derived2(MapObjectId_SKDI, MapObjectId_SKDI) {
|
||||
this->mUnk_06 = -0x1;
|
||||
this->mUnk_1E &= 0xFFFE;
|
||||
}
|
||||
|
||||
MapObjectUnkSKDI::MapObjectUnkSKDI() {}
|
||||
MapObjectUnkSKDI::MapObjectUnkSKDI() :
|
||||
mUnk_040(GetModelFromProfile<MapObjectProfileUnkSKDI>()),
|
||||
mUnk_048(0x1),
|
||||
mUnk_07C(0x0),
|
||||
mUnk_080(-0x1),
|
||||
mUnk_084(0x0),
|
||||
mUnk_086(0x0),
|
||||
mUnk_087(0x1),
|
||||
mUnk_088(0x0),
|
||||
mUnk_089(0x0),
|
||||
mUnk_08C(0x3000, 0x1),
|
||||
mUnk_0F8(0x0),
|
||||
mUnk_0FA(0x0),
|
||||
mUnk_0FC(0x0) {
|
||||
SET_FLAG(this->mFlags, MapObjFlag_10);
|
||||
this->mUnk_18[1] = 0x12;
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_02106190(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_021061dc(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106224(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_021062ec(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_021063cc(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_021063dc(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_0210643c(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106678(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106a70(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106a84(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106c78(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106c98(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106ca0(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106ca8(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106cb0(void) {}
|
||||
void MapObjectUnkSKDI::func_ov031_02106190() {
|
||||
this->mUnk_04C[0].mUnk_04 = 0x8C0;
|
||||
this->mUnk_04C[0].mUnk_08 = 0x4;
|
||||
|
||||
MapObjectUnkSKDI::~MapObjectUnkSKDI() {}
|
||||
MapObjectProfileUnkSKDI::~MapObjectProfileUnkSKDI() {}
|
||||
this->mUnk_04C[1].mUnk_04 = 0x8C1;
|
||||
this->mUnk_04C[1].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_04C[2].mUnk_04 = 0x8C2;
|
||||
this->mUnk_04C[2].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_04C[3].mUnk_04 = 0x8C2;
|
||||
this->mUnk_04C[3].mUnk_08 = 0x4;
|
||||
this->mUnk_04C[3].func_ov000_020a0334();
|
||||
|
||||
this->mUnk_0FC = 0x0;
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_021061dc() {
|
||||
this->mUnk_04C[0].mUnk_04 = 0x8B8;
|
||||
this->mUnk_04C[0].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_04C[1].mUnk_04 = 0x8B9;
|
||||
this->mUnk_04C[1].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_04C[2].mUnk_04 = 0x8BA;
|
||||
this->mUnk_04C[2].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_04C[3].mUnk_04 = 0x8BB;
|
||||
this->mUnk_04C[3].mUnk_08 = 0x4;
|
||||
|
||||
this->mUnk_0FC = 0x1;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool MapObjectUnkSKDI::vfunc_00() {
|
||||
unk32 var1;
|
||||
if (this->mUnk_20.mParams[2] == 0x1) {
|
||||
var1 = 0x1;
|
||||
} else {
|
||||
var1 = 0x0;
|
||||
}
|
||||
this->mUnk_07C = var1;
|
||||
VecFx32_Copy(&this->mPos, &this->mUnk_08C.mUnk_00);
|
||||
if (var1 == 1) {
|
||||
var1 = 0x7806;
|
||||
} else {
|
||||
var1 = 0x7406;
|
||||
}
|
||||
|
||||
this->mUnk_0D4.mUnk_08 = (var1 & ~0x7000) | 0x7000;
|
||||
VecFx32_Init(FLOAT_TO_FX32(-0.5002f), FLOAT_TO_FX32(0.0f), FLOAT_TO_FX32(-0.5002f), &this->mUnk_0D4.mUnk_0C);
|
||||
VecFx32_Init(FLOAT_TO_FX32(0.5f), FLOAT_TO_FX32(1.2f), FLOAT_TO_FX32(0.5f), &this->mUnk_0D4.mUnk_18);
|
||||
|
||||
if (this->mUnk_07C == 0x0) {
|
||||
this->func_ov031_02106190();
|
||||
} else {
|
||||
this->func_ov031_021061dc();
|
||||
}
|
||||
|
||||
this->mUnk_10 = &this->mUnk_0D4;
|
||||
if (this->mUnk_20.mParams[1] == 0x1) {
|
||||
var1 = 0x1;
|
||||
} else {
|
||||
var1 = 0x0;
|
||||
}
|
||||
this->mUnk_086 = var1;
|
||||
return true;
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::vfunc_04() {
|
||||
data_027e0cd8->mUnk_0C->func_ov000_02080a5c(&this->mUnk_08C.mUnk_00);
|
||||
|
||||
if (this->mUnk_20.mParams[0] == 0x0) {
|
||||
if ((!this->func_ov000_0209d29c(0x0) && this->mUnk_20.mUnk_0A[0] != 0x0) ||
|
||||
(!this->func_ov000_0209d29c(0x1) && this->mUnk_20.mUnk_0A[1] != 0x0)) {
|
||||
this->func_ov031_02106678(0x2, 0x1);
|
||||
return;
|
||||
}
|
||||
this->func_ov031_02106678(0x1, 0x1);
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->func_ov000_0209d29c(0x0) || this->func_ov000_0209d29c(0x1)) {
|
||||
this->func_ov031_02106678(0x1, 0x1);
|
||||
return;
|
||||
}
|
||||
this->func_ov031_02106678(0x2, 0x1);
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::vfunc_08() {
|
||||
this->func_ov031_0210643c(0x0);
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::vfunc_0C() {
|
||||
if (this->mUnk_080 >= 0x0 && data_027e09b8->func_ov000_020732ec(this->mUnk_080) != 0x0) {
|
||||
this->func_ov031_0210643c(0x1);
|
||||
return;
|
||||
}
|
||||
if (this->mState != MapObjUnkSKDIState_0 && this->mState != MapObjUnkSKDIState_1 && this->mState != MapObjUnkSKDIState_2) {
|
||||
return;
|
||||
}
|
||||
this->func_ov031_0210643c(0x0);
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_0210643c(unk32 param1) {
|
||||
switch (this->mState) {
|
||||
case MapObjUnkSKDIState_0:
|
||||
++this->mUnk_084;
|
||||
if (this->mUnk_084 < 0x6) {
|
||||
return;
|
||||
}
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_1, 0x0);
|
||||
break;
|
||||
case MapObjUnkSKDIState_3:
|
||||
if (param1 == 0x0) {
|
||||
return;
|
||||
}
|
||||
if ((u32) data_027e09b8->func_ov000_0207330c() < 0x1E) {
|
||||
return;
|
||||
}
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0x0);
|
||||
break;
|
||||
case MapObjUnkSKDIState_1:
|
||||
if (this->func_ov000_0209d3b4(0x0, FLOAT_TO_FX32(2.0f)) != 0x0) {
|
||||
VecFx32 vec;
|
||||
VecFx32_Init(this->mPos.x, this->mPos.y + FLOAT_TO_FX32(1.25f), this->mPos.z, &vec);
|
||||
UnkStruct_027e0cec *data = data_027e0cec;
|
||||
for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) {
|
||||
data->func_ov000_020a0140(ptr, &vec);
|
||||
}
|
||||
} else {
|
||||
UnkStruct_027e0cec *data = data_027e0cec;
|
||||
for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) {
|
||||
data->func_ov000_020a0110(ptr);
|
||||
}
|
||||
}
|
||||
if (this->func_ov000_0209d29c(0x0) != 0 || this->mUnk_20.mUnk_0A[0] == 0x0) {
|
||||
if (this->func_ov000_0209d29c(0x1) != 0) {
|
||||
return;
|
||||
}
|
||||
if (this->mUnk_20.mUnk_0A[1] == 0x0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_2, 0x0);
|
||||
break;
|
||||
case MapObjUnkSKDIState_2:
|
||||
if (this->func_ov000_0209d29c(0x1) != 0x0) {
|
||||
if (this->mUnk_086 != 0) {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_3, 0x0);
|
||||
} else {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0x0);
|
||||
}
|
||||
}
|
||||
unk32 temp_r1 = this->mUnk_0FA;
|
||||
if (temp_r1 != 0 && ((u32) this->mUnk_0F8 >= (u32) temp_r1)) {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0x0);
|
||||
this->mUnk_0FA = 0x0;
|
||||
this->mUnk_0F8 = 0x0;
|
||||
}
|
||||
if (data_027e09b8->func_01ffd420() != 0) {
|
||||
return;
|
||||
}
|
||||
if (this->mUnk_0F8 < this->mUnk_0FA) {
|
||||
++this->mUnk_0F8;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_02106678(MapObjState state, unk32 param2) {
|
||||
VecFx32 sp48;
|
||||
if (this->mState == state) {
|
||||
return;
|
||||
}
|
||||
this->mState = state;
|
||||
VecFx32_Init(this->mPos.x, this->mPos.y + FLOAT_TO_FX32(1.25f), this->mPos.z, &sp48);
|
||||
|
||||
switch (this->mState) {
|
||||
case MapObjUnkSKDIState_0:
|
||||
if (param2 == 0x0) {
|
||||
if (this->mUnk_0FC == 0x0) {
|
||||
data_027e0cec->func_ov000_0209feac(0x8C5, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x8C6, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e09a8->func_ov000_02071b30(0x108, &this->mPos, 0x0);
|
||||
} else {
|
||||
data_027e0cec->func_ov000_0209feac(0x8BE, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x8BF, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e09a8->func_ov000_02071b30(0x10A, &this->mPos, 0x0);
|
||||
}
|
||||
}
|
||||
this->mUnk_084 = 0x0;
|
||||
break;
|
||||
case MapObjUnkSKDIState_3:
|
||||
if (param2 == 0x0 && this->mUnk_087 != 0x0) {
|
||||
UnkStackStruct1 stack;
|
||||
|
||||
func_ov000_02072fd0(&stack);
|
||||
stack.mUnk_08 = 0x3C;
|
||||
stack.mUnk_00 = 0x80;
|
||||
stack.mUnk_3A = 0x07;
|
||||
stack.mUnk_38 |= 0x80;
|
||||
|
||||
VecFx32_Copy(&this->mPos, &stack.mUnk_0C);
|
||||
|
||||
if (this->mUnk_20.mUnk_16) {
|
||||
stack.mUnk_38 |= 0x4;
|
||||
}
|
||||
|
||||
this->mUnk_080 = data_027e09b8->func_ov000_02073388(&stack, 0x0);
|
||||
this->mUnk_087 = 0x0;
|
||||
break;
|
||||
}
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0x0);
|
||||
break;
|
||||
case MapObjUnkSKDIState_1:
|
||||
SET_FLAG(this->mFlags, MapObjFlag_7);
|
||||
SET_FLAG(this->mFlags, MapObjFlag_8);
|
||||
if (param2 == 0x0) {
|
||||
if (this->mUnk_07C != this->mUnk_0FC && this->mUnk_088 == 0x0) {
|
||||
break;
|
||||
}
|
||||
this->func_ov000_0209d2c4(0x0, true);
|
||||
}
|
||||
UnkStruct_027e0cec *data = data_027e0cec;
|
||||
for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) {
|
||||
data->func_ov000_020a0140(ptr, &sp48);
|
||||
}
|
||||
unk32 dc = this->mUnk_0D4.mUnk_08;
|
||||
if (this->mUnk_0FC == 0x1) {
|
||||
dc = (dc & ~0xE00) | 0x800;
|
||||
} else {
|
||||
dc = (dc & ~0xE00) | 0x400;
|
||||
}
|
||||
this->mUnk_0D4.mUnk_08 = dc;
|
||||
this->mUnk_080 = -1;
|
||||
this->mUnk_0BC = 0x3000;
|
||||
UNSET_FLAG(this->mFlags, MapObjFlag_10);
|
||||
break;
|
||||
case MapObjUnkSKDIState_2:
|
||||
SET_FLAG(this->mFlags, MapObjFlag_7);
|
||||
this->mFlags[0] &= 0xFEFF;
|
||||
this->mUnk_0FA = 0x0;
|
||||
this->mUnk_0F8 = 0x0;
|
||||
if (param2 == 0) {
|
||||
this->func_ov000_0209d2c4(0x0, false);
|
||||
UnkStruct_027e0cec *data = data_027e0cec;
|
||||
for (ActorUnkBOMB_unk *ptr = this->mUnk_04C; ptr != this->mUnk_04C + ARRAY_LEN(this->mUnk_04C); ++ptr) {
|
||||
data->func_ov000_020a0110(ptr);
|
||||
}
|
||||
if (this->mUnk_0FC == 0) {
|
||||
data_027e0cec->func_ov000_0209feac(0x8C3, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x8C4, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e09a8->func_ov000_02071b30(0x109, &this->mPos, 0x0);
|
||||
} else {
|
||||
data_027e0cec->func_ov000_0209feac(0x8BC, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x8BD, &sp48, 0x4, 0x0, 0x0);
|
||||
data_027e09a8->func_ov000_02071b30(0x10B, &this->mPos, 0x0);
|
||||
}
|
||||
}
|
||||
this->mUnk_0D4.mUnk_08 &= ~0xE00;
|
||||
this->mUnk_080 = -1;
|
||||
this->mUnk_0BC = 0x800;
|
||||
SET_FLAG(this->mFlags, MapObjFlag_10);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_02106a70() {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_2, 0x0);
|
||||
}
|
||||
|
||||
// ActorItemBoomerang?
|
||||
class ActorUnk_MapObjectUnkSKDI_vfunc_1C : public Actor {
|
||||
public:
|
||||
/* 000 (base) */
|
||||
/* 094 */ STRUCT_PAD(0x094, 0x128);
|
||||
/* 128 */ unk32 mUnk_128;
|
||||
/* 12C */
|
||||
};
|
||||
|
||||
// non-matching
|
||||
bool MapObjectUnkSKDI::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) {
|
||||
bool var_r1 = false;
|
||||
if (param1.type_index == 0x102) {
|
||||
if (param1.unk_id == 1 || param1.unk_id == 3) {
|
||||
var_r1 = true;
|
||||
}
|
||||
}
|
||||
if (var_r1 != 0 && param1.unk_id == 1) {
|
||||
if (data_027e0ce0->mEquippedItem != ActorId_PMTB) {
|
||||
return false;
|
||||
}
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0x0);
|
||||
return true;
|
||||
}
|
||||
|
||||
switch (param2) {
|
||||
case 0x4:
|
||||
if (this->mState != MapObjUnkSKDIState_2) {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_2, 0x0);
|
||||
this->mUnk_0F8 = 0;
|
||||
unk32 var = 0x28;
|
||||
if (this->mUnk_20.mParams[3] != 0) {
|
||||
var = this->mUnk_20.mParams[3];
|
||||
}
|
||||
this->mUnk_0FA = var;
|
||||
}
|
||||
return false;
|
||||
case 0x3:
|
||||
return false;
|
||||
case 0xC:
|
||||
var_r1 = true;
|
||||
if (data_027e09a4->mUnk_00.sceneIndex == SceneIndex_d_snow26 && this->mUnk_0FA != 0x0) {
|
||||
var_r1 = false;
|
||||
}
|
||||
if (this->mState == MapObjUnkSKDIState_2 && var_r1) {
|
||||
ActorUnk_MapObjectUnkSKDI_vfunc_1C *actor =
|
||||
(ActorUnk_MapObjectUnkSKDI_vfunc_1C *) gpActorManager->func_01fff3b4(param1);
|
||||
if (actor != NULL) {
|
||||
switch (actor->mUnk_128) {
|
||||
case 0x1:
|
||||
switch (this->mUnk_07C) {
|
||||
case 0x0:
|
||||
this->func_ov031_02106190();
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0);
|
||||
break;
|
||||
case 0x1:
|
||||
this->func_ov031_02106190();
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0x2:
|
||||
switch (this->mUnk_07C) {
|
||||
case 0x0:
|
||||
this->func_ov031_021061dc();
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0);
|
||||
break;
|
||||
case 0x1:
|
||||
this->func_ov031_021061dc();
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::vfunc_14() {
|
||||
this->mUnk_040.vfunc_18(&this->mPos);
|
||||
}
|
||||
|
||||
unk32 MapObjectUnkSKDI::vfunc_38() {
|
||||
return this->mUnk_07C;
|
||||
}
|
||||
|
||||
unk32 MapObjectUnkSKDI::vfunc_3C() {
|
||||
return this->mUnk_0FC;
|
||||
}
|
||||
|
||||
s16 MapObjectUnkSKDI::vfunc_40() {
|
||||
return this->mState;
|
||||
}
|
||||
|
||||
void MapObjectUnkSKDI::func_ov031_02106cb0(unk32 param1) {
|
||||
this->func_ov031_02106678(MapObjUnkSKDIState_0, param1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user