mirror of
https://github.com/zeldaret/st
synced 2026-10-09 13:56:17 -04:00
Match ActorBomb (#158)
* actor prog from overlay 0 * fix build issues * ActorBomb OK for eur * ActorBomb OK for eur1, usa and jp * fix regressions
This commit is contained in:
@@ -33,16 +33,14 @@ Actor::Actor() {
|
||||
|
||||
Actor::~Actor() {}
|
||||
|
||||
// non-matching (equivalent)
|
||||
void Actor::func_ov000_0209848c(ActorProfile *param1) {
|
||||
Cylinder *temp_r3 = ¶m1->mUnk_04;
|
||||
unk32 unk_1c = param1->mUnk_1C;
|
||||
unk32 temp_r2 = param1->mUnk_1C;
|
||||
|
||||
this->mpProfile = param1;
|
||||
|
||||
this->mUnk_34 = ¶m1->mUnk_04;
|
||||
this->mUnk_30 = ¶m1->mUnk_04;
|
||||
this->mYOffset = unk_1c;
|
||||
this->mUnk_34 = temp_r3;
|
||||
this->mUnk_30 = temp_r3;
|
||||
this->mYOffset = temp_r2;
|
||||
}
|
||||
|
||||
bool Actor::Init(unk32 param1) {
|
||||
|
||||
@@ -28,11 +28,12 @@ ActorUnkSWTM::~ActorUnkSWTM() {
|
||||
}
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/qkP8m
|
||||
bool ActorUnkSWTM::Init(unk32 param1) {
|
||||
this->mUnk_9E = this->mUnk_5C.mUnk_1A[1];
|
||||
#pragma unused(param1)
|
||||
|
||||
this->mUnk_98 = this->mUnk_5C.mParams[2];
|
||||
this->mUnk_A4 = this->mUnk_5C.mParams[1] * 30;
|
||||
this->mUnk_9E = this->mUnk_5C.mUnk_1A[1];
|
||||
this->mUnk_A0 = this->mUnk_9E + this->mUnk_5C.mParams[0];
|
||||
this->mUnk_A2 = this->mUnk_5C.mUnk_18[1];
|
||||
this->mUnk_9C = this->mUnk_9E;
|
||||
|
||||
@@ -17,14 +17,14 @@ MapObject::MapObject() {
|
||||
this->mState = MapObjState_None;
|
||||
this->mFlags[0] = 0;
|
||||
this->mUnk_20.Init();
|
||||
*(u32 *) &this->mUnk_38 = 0;
|
||||
this->mRef.Reset();
|
||||
|
||||
UnkStruct_ov000_020b5d34 *ptr1 = &data_ov000_020b5d34;
|
||||
this->mpProfile = ptr1->mpProfile;
|
||||
|
||||
UnkStruct_ov000_020b5d34_00 *ptr2 = ptr1->mUnk_00;
|
||||
|
||||
*(u32 *) &this->mUnk_38 = *ptr2->mUnk_00;
|
||||
this->mRef = *ptr2->mUnk_00;
|
||||
|
||||
VecFx32 *ptr = ptr2->mUnk_08;
|
||||
this->mPos.x = ptr->x;
|
||||
@@ -144,24 +144,24 @@ void MapObject::func_ov000_0209d2f0(unk32 param1, unk32 param2, Vec2bCpp *param3
|
||||
UnkStruct_027e0cd8_0C_Base *temp_r5 = data_027e0cd8->mUnk_0C;
|
||||
Vec2bCpp sp0(0, 0);
|
||||
|
||||
sp0.x = this->mUnk_3A.x;
|
||||
sp0.x = this->mRef.unk_02.x;
|
||||
|
||||
s32 tempX = param3->x;
|
||||
tempX += this->mUnk_3A.x;
|
||||
tempX += this->mRef.unk_02.x;
|
||||
|
||||
if (this->mUnk_3A.x < tempX) {
|
||||
if (this->mRef.unk_02.x < tempX) {
|
||||
do {
|
||||
sp0.y = this->mUnk_3A.y;
|
||||
sp0.y = this->mRef.unk_02.y;
|
||||
|
||||
s32 tempY = param3->y;
|
||||
tempY += this->mUnk_3A.y;
|
||||
tempY += this->mRef.unk_02.y;
|
||||
|
||||
if (this->mUnk_3A.y < tempY) {
|
||||
if (this->mRef.unk_02.y < tempY) {
|
||||
do {
|
||||
temp_r5->func_ov000_020801b0(&sp0, param1, param2);
|
||||
} while (++sp0.y < param3->y + this->mUnk_3A.y);
|
||||
} while (++sp0.y < param3->y + this->mRef.unk_02.y);
|
||||
}
|
||||
} while (++sp0.x < param3->x + this->mUnk_3A.x);
|
||||
} while (++sp0.x < param3->x + this->mRef.unk_02.x);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ void MapObject::func_ov000_0209d434(s8 *param1, UnkStruct_ov019_020d24c8_28_258_
|
||||
return;
|
||||
}
|
||||
|
||||
if (data_027e0998->vfunc_00(&this->mPos, &sp10, (ActorRef *) &this->mUnk_38)) {
|
||||
if (data_027e0998->vfunc_00(&this->mPos, &sp10, (ActorRef *) &this->mRef)) { //! TODO: ref conflicts
|
||||
spC.mUnk_06 = 0x00;
|
||||
MI_CpuFill32(0, &spC, sizeof(spC));
|
||||
spC.mUnk_05 = -1;
|
||||
|
||||
@@ -39,7 +39,7 @@ bool MapObjectMiniBlocks::Init(void) {
|
||||
u8 uVar6;
|
||||
|
||||
if (this->mUnk_20.mParams[1] != MiniBlocksVariant_BLKF) {
|
||||
Vec2bCpp vec(this->mUnk_3A.x, this->mUnk_3A.y);
|
||||
Vec2bCpp vec(this->mRef.unk_02.x, this->mRef.unk_02.y);
|
||||
this->mPos.y = pUnkStruct_027e0cd8_0C->func_01ffedf4(&vec);
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ bool MapObjectPot_Base::SetState(MapObjState state, unk32 param2) {
|
||||
case MapObjPot_BaseState_1:
|
||||
this->vfunc_48();
|
||||
if (this->vfunc_40()) {
|
||||
func_ov000_020a14e4(this->mUnk_38, &this->mPos);
|
||||
func_ov000_020a14e4(this->mRef.unk_00, &this->mPos);
|
||||
} else {
|
||||
if (this->vfunc_4C()) {
|
||||
unk32 val = this->vfunc_54();
|
||||
|
||||
@@ -52,29 +52,18 @@ void MapObjectSwitchStep_40::func_ov000_0209dde0(void) {
|
||||
this->func_ov000_02057c38(6, 2);
|
||||
}
|
||||
|
||||
void MapObjectSwitchStep_40::vfunc_1C(UnkSystem4_vfunc_1C *param1) {
|
||||
unk32 iVar1 = param1->mUnk_04[1];
|
||||
if (iVar1 != 0) {
|
||||
iVar1 += 0x40;
|
||||
} else {
|
||||
iVar1 = 0;
|
||||
}
|
||||
void MapObjectSwitchStep_40::vfunc_1C(G3d_RenderState *param1) {
|
||||
G3d_NameList *iVar1 = G3d_GetBoneList(param1->renderObj->model);
|
||||
uint uVar2 = iVar1 != NULL ? func_0200f218(iVar1, data_ov000_020af560) : -1;
|
||||
|
||||
unk32 uVar2;
|
||||
if (iVar1 == 0) {
|
||||
uVar2 = -1;
|
||||
} else {
|
||||
uVar2 = func_0200f218(iVar1, data_ov000_020af560);
|
||||
}
|
||||
|
||||
if (param1->mUnk_00[1] == uVar2) {
|
||||
if (param1->currentCmd[1] == uVar2) {
|
||||
if (this->mUnk_62) {
|
||||
param1->mUnk_B4->mUnk_00 &= ~0x04;
|
||||
param1->mUnk_B4->mUnk_50 = this->mUnk_60;
|
||||
param1->mUnk_B4->mUnk_4C = 0;
|
||||
param1->mUnk_B4->mUnk_54 = 0;
|
||||
} else {
|
||||
param1->mUnk_B8[0] = 0;
|
||||
*param1->visibilityPtr = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -205,7 +194,7 @@ void MapObjectSwitchStep::vfunc_18(s8 *param1) {
|
||||
ActorRef sp4;
|
||||
|
||||
//! TODO: fake match?
|
||||
sp4 = *(ActorRef *) &this->mUnk_38;
|
||||
sp4 = *(ActorRef *) &this->mRef;
|
||||
|
||||
if (data_027e0998->vfunc_00(&this->mPos, &sp10, &sp4)) {
|
||||
sp8.mUnk_06 = 0x00;
|
||||
|
||||
@@ -159,7 +159,7 @@ void MapObjectManager::func_ov017_020c033c(unk32 *param1, MapObjectManager *this
|
||||
sp16.y = param2->y;
|
||||
|
||||
if (pMapObj->func_ov000_0209d144(&sp16, param3, temp_r0)) {
|
||||
*param1 = *(s32 *) &pMapObj->mUnk_38;
|
||||
*param1 = pMapObj->mRef.Get32();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ bool UnkStruct_027e0998::vfunc_00(VecFx32 *pPos, Vec2s *param2, ActorRef *param3
|
||||
return this->func_ov024_020c727c(param2, param3);
|
||||
case 4:
|
||||
if (data_027e09a4->IsTrain()) {
|
||||
u32 value = *(u32 *) param3;
|
||||
u32 value = param3->Get32();
|
||||
|
||||
// position? param3 could be a Vec2us
|
||||
u16 stack[4];
|
||||
|
||||
@@ -29,7 +29,7 @@ ActorProfileBlast::ActorProfileBlast() :
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorBlast_E8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {}
|
||||
bool ActorBlast_E8::vfunc_0C(MapObjRef ref, UnkStruct_ov031_020e54d4 *param2, const VecFx32 *param3, const VecFx32 *param4) {}
|
||||
|
||||
ActorBlast::ActorBlast() :
|
||||
mUnk_94(FX_F32_TO_FX32(0.625f)),
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "MainGame/AdventureMode.hpp"
|
||||
#include "Map/MapObjectId.hpp"
|
||||
#include "MapObject/MapObjectBombFlower.hpp"
|
||||
#include "MapObject/MapObjectManager.hpp"
|
||||
#include "MapObject/MapObjectProfile.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
@@ -17,6 +18,13 @@
|
||||
#include "Unknown/UnkStruct_027e0d38.hpp"
|
||||
#include "Unknown/UnkStruct_027e0d8c.hpp"
|
||||
#include "Unknown/UnkStruct_ov000_020b5d34.hpp"
|
||||
#include "global.h"
|
||||
#include "math.hpp"
|
||||
#include "nitro/fx.h"
|
||||
#include "nitro/math.h"
|
||||
#include "nns/g3d/sbc.h"
|
||||
|
||||
#pragma readonly_strings on
|
||||
|
||||
struct UnkStruct_ov031_020e5d18_00 {
|
||||
/* 00 */ Actor *mUnk_00;
|
||||
@@ -26,13 +34,28 @@ struct UnkStruct_ov031_020e5d18_00 {
|
||||
|
||||
extern VecFx32 data_027e07d4;
|
||||
extern unk32 data_ov000_020aecf8;
|
||||
extern VecFx32 data_ov031_02110a10;
|
||||
extern VecFx32 data_ov031_02110a28;
|
||||
extern char data_ov031_02110a50;
|
||||
extern char data_ov031_02110a60;
|
||||
extern char data_ov031_02110a70;
|
||||
|
||||
static ActorUnkZLSL_AnimationTag data_ov031_02112be8 = {.index = 0, .name = "bomb_clanim", .unknown = 0};
|
||||
static const VecFx32 data_ov031_02110a28[] = {
|
||||
{0xCD, 0xD9A, 0x00},
|
||||
{0xCD, 0xC00, 0x00},
|
||||
};
|
||||
|
||||
static const VecFx32 data_ov031_02110a10[] = {
|
||||
{0x00, 0xC00, 0x00},
|
||||
{0x00, 0xB33, 0x00},
|
||||
};
|
||||
|
||||
static const char data_ov031_021109fc[20] = "Fbomb_h";
|
||||
|
||||
static const char data_ov031_02110a40[][16] = {
|
||||
"Fbomb",
|
||||
"Fbomb_clanim",
|
||||
"bomb",
|
||||
"bomb_clanim",
|
||||
};
|
||||
|
||||
static ActorUnkZLSL_AnimationTag data_ov031_02112be8 = {.index = 0, .name = "bomb_clanim", .unknown = 0};
|
||||
|
||||
static PTMF<ActorBomb> data_ov031_02112c00[ActorBombState_Max] = {
|
||||
&ActorBomb::func_ov031_020e1da0, // ActorUnkBOMBState_0
|
||||
&ActorBomb::func_ov031_020e1ed8, // ActorUnkBOMBState_1
|
||||
@@ -66,7 +89,7 @@ ActorProfileBomb::ActorProfileBomb() :
|
||||
|
||||
G3d_Model *ActorBomb::func_ov031_020e1540(u16 param1) {
|
||||
if (param1 == 0x0) {
|
||||
return data_027e0ce0->mUnk_1C->func_ov000_0208ed30(0x0, 0x1, &data_ov031_02110a60);
|
||||
return data_027e0ce0->mUnk_1C->func_ov000_0208ed30(0x0, 0x1, (char *) data_ov031_02110a40[2]);
|
||||
}
|
||||
|
||||
return G3d_GetModelPtr(
|
||||
@@ -75,19 +98,24 @@ G3d_Model *ActorBomb::func_ov031_020e1540(u16 param1) {
|
||||
|
||||
UnkStruct_ov000_02058a84 *ActorBomb::func_ov031_020e15d0(u16 param1) {
|
||||
if (param1 == 0x0) {
|
||||
return data_027e0ce0->mUnk_1C->func_ov000_0208ee94(0x0, 0x1, &data_ov031_02110a70, 0x1);
|
||||
return data_027e0ce0->mUnk_1C->func_ov000_0208ee94(0x0, 0x1, (char *) data_ov031_02110a40[3], 0x1);
|
||||
}
|
||||
return ((MapObjectProfileBombFlower *) data_ov000_020b5d34.GetProfileFromId(MapObjectId_BombFlower))
|
||||
->mUnk_20.func_ov000_02058a84(0x1, &data_ov031_02110a50);
|
||||
|
||||
MapObjectProfileBombFlower *pProfile =
|
||||
((MapObjectProfileBombFlower *) data_ov000_020b5d34.GetProfileFromId(MapObjectId_BombFlower));
|
||||
|
||||
return pProfile->mUnk_20.func_ov000_02058a84(0x1, (char *) data_ov031_02110a40[1]);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
// seems not to be in the actor
|
||||
// use a pattern like this->mUnk_04->mUnk_04
|
||||
// so it's not ActorBomb and the class has at
|
||||
// least 0xB3 bytes so it does not seem to be
|
||||
// one of the auxiliary classes
|
||||
void ActorBomb::func_ov031_020e1634() {}
|
||||
void ActorBomb::func_ov031_020e1634(G3d_RenderState *param1) {
|
||||
G3d_NameList *iVar1 = G3d_GetBoneList(param1->renderObj->model);
|
||||
uint uVar2 = iVar1 != NULL ? func_0200f218(iVar1, data_ov031_021109fc) : -1;
|
||||
uint uVar3 = param1->flag & 0x04 ? param1->currentBoneId : -1;
|
||||
|
||||
if (uVar2 == uVar3) {
|
||||
*param1->visibilityPtr = false;
|
||||
}
|
||||
}
|
||||
|
||||
ActorBomb::ActorBomb() :
|
||||
mUnk_094(this->func_ov031_020e1540(this->mUnk_5C.mParams[0])),
|
||||
@@ -112,10 +140,10 @@ ActorBomb::ActorBomb() :
|
||||
{
|
||||
if (this->mUnk_5C.mParams[0] != 0x1) {
|
||||
this->mUnk_1EF = false;
|
||||
this->mUnk_17C = &data_ov031_02110a28;
|
||||
this->mUnk_17C = (VecFx32 *) &data_ov031_02110a28;
|
||||
} else {
|
||||
func_0200b578(&this->mUnk_094.mRenderObj, this->func_ov031_020e1634, 0x0, 0x2, 0x2);
|
||||
this->mUnk_17C = &data_ov031_02110a10;
|
||||
func_0200b578(&this->mUnk_094.mRenderObj, ActorBomb::func_ov031_020e1634, 0x0, 0x2, 0x2);
|
||||
this->mUnk_17C = (VecFx32 *) &data_ov031_02110a10;
|
||||
this->mUnk_1EF = true;
|
||||
}
|
||||
this->mUnk_164[0].mUnk_04 = 0x810;
|
||||
@@ -165,14 +193,8 @@ void ActorBomb::func_ov031_020e1908() {
|
||||
this->mUnk_1F0 = true;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorBomb::func_ov031_020e1920(VecFx32 *param1) {
|
||||
fx32 y = param1->y;
|
||||
fx32 z = param1->z;
|
||||
fx32 x = param1->x;
|
||||
this->mUnk_1CC.x = x;
|
||||
this->mUnk_1CC.y = y;
|
||||
this->mUnk_1CC.z = z;
|
||||
void ActorBomb::func_ov031_020e1920(const VecFx32 *param1) {
|
||||
VecFx32_Copy(param1, &this->mUnk_1CC);
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e193c() {
|
||||
@@ -232,26 +254,30 @@ void ActorBomb::Update() {
|
||||
}
|
||||
|
||||
void ActorBomb::vfunc_24() {
|
||||
if (this->mState != ActorBombState_1) {
|
||||
return;
|
||||
if (this->mState == ActorBombState_1) {
|
||||
this->func_ov031_020e1ed8();
|
||||
this->func_ov031_020e193c();
|
||||
}
|
||||
this->func_ov031_020e1ed8();
|
||||
this->func_ov031_020e193c();
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorBomb::func_ov031_020e1b1c() {
|
||||
UnkStruct_ov000_02058a84 *param1 = this->func_ov031_020e15d0(this->mUnk_5C.mParams[0]);
|
||||
bool var_r3;
|
||||
|
||||
bool param3 = !(param1->mUnk_6 & 0x2);
|
||||
|
||||
this->mUnk_0F4.func_ov000_020577a4(param1, 0x0, param3);
|
||||
// weird but less weird than `func_ov019_020d0c90`
|
||||
switch (param1->mUnk_06 & 2) {
|
||||
default:
|
||||
var_r3 = false;
|
||||
break;
|
||||
case 0:
|
||||
var_r3 = true;
|
||||
break;
|
||||
}
|
||||
|
||||
this->mUnk_0F4.func_ov000_020577a4(param1, 0, var_r3);
|
||||
this->mUnk_0F4.mUnk_04.mUnk_04 = 0x1000;
|
||||
this->mUnk_0F4.mUnk_04.mUnk_00 = data_ov031_02112be8.unknown;
|
||||
|
||||
this->mUnk_094.func_ov000_02057cf4();
|
||||
|
||||
this->mUnk_094.func_ov000_02057c98(&this->mUnk_0F4);
|
||||
}
|
||||
|
||||
@@ -523,15 +549,16 @@ void ActorBomb::vfunc_2C(Actor_vfunc_30 *param1) {
|
||||
data_027e09b4->func_ov017_020c08c4(&sp0C, 0x59A, 0x59A, 0x1F, 0x0, 0x1);
|
||||
}
|
||||
|
||||
// non-matching (switch case)
|
||||
void ActorBomb::func_ov031_020e238c() {
|
||||
this->Actor::func_ov000_020989e0();
|
||||
|
||||
if (!(this->mUnk_134.mUnk_08 & 0x3FFFF)) {
|
||||
return;
|
||||
}
|
||||
|
||||
u16 value = this->mUnk_134.mUnk_1C;
|
||||
switch ((s32) value) {
|
||||
switch (this->mUnk_134.mUnk_1C) {
|
||||
case 14:
|
||||
break;
|
||||
case 15:
|
||||
this->mUnk_134.mUnk_04 &= ~0x8000;
|
||||
data_027e0d8c->func_ov093_021661c0(this->mRef);
|
||||
@@ -540,6 +567,7 @@ void ActorBomb::func_ov031_020e238c() {
|
||||
if (!data_027e0d38->func_ov031_020d9c04(0x1, 0x0, 0x0)) {
|
||||
break;
|
||||
}
|
||||
|
||||
this->SetState(ActorBombState_4);
|
||||
break;
|
||||
case 0:
|
||||
@@ -655,76 +683,108 @@ void ActorBomb::func_ov031_020e2780(VecFx32 *param1) {
|
||||
this->mVel.z = ROUND_FX32(this->mVel.z * FX_F32_TO_FX32(0.75f));
|
||||
}
|
||||
|
||||
// non-matching
|
||||
fx32 ActorBomb::func_ov031_020e2820(UnkStruct_ov031_Items_00 *param1) {
|
||||
UnkStruct_ov031_020e5d18_00 sp60;
|
||||
sp60.mUnk_00 = NULL;
|
||||
VecFx32 sp54 = this->mPos;
|
||||
VecFx32 sp48 = this->mPrevPos;
|
||||
VecFx32 sp54;
|
||||
VecFx32 sp48;
|
||||
VecFx32 sp3C;
|
||||
VecFx32 sp30;
|
||||
VecFx32 sp24;
|
||||
VecFx32 sp18;
|
||||
VecFx32 sp0C;
|
||||
fx32 var_r11;
|
||||
fx32 var_r8;
|
||||
|
||||
var_r11 = 0;
|
||||
sp60.mUnk_00 = NULL;
|
||||
|
||||
sp54 = this->mPos;
|
||||
sp48 = this->mPrevPos;
|
||||
|
||||
func_01ffb714(&sp54, &sp48, &sp3C);
|
||||
fx32 sp3CLength = VecFx32_Length(&sp3C);
|
||||
var_r8 = VecFx32_Length(&sp3C);
|
||||
|
||||
VecFx32 sp0C = sp48;
|
||||
VecFx32 sp30 = sp0C;
|
||||
VecFx32 sp24 = sp0C;
|
||||
VecFx32 sp18 = sp3C;
|
||||
sp0C = sp48;
|
||||
sp30 = sp0C;
|
||||
sp24 = sp0C;
|
||||
sp18 = sp3C;
|
||||
|
||||
if (VecFx32_TryNormalize(&sp18) != 0x0) {
|
||||
while (sp3CLength != FX_F32_TO_FX32(0.0f)) {
|
||||
if (sp3CLength > FX_F32_TO_FX32(0.5f)) {
|
||||
while (var_r8 != FX_F32_TO_FX32(0.0f)) {
|
||||
if (var_r8 > FX_F32_TO_FX32(0.5f)) {
|
||||
func_01ffb974(FX_F32_TO_FX32(0.5f), &sp18, &sp24, &sp24);
|
||||
sp3CLength -= FX_F32_TO_FX32(0.5f);
|
||||
var_r8 -= FX_F32_TO_FX32(0.5f);
|
||||
} else {
|
||||
func_01ffb974(sp3CLength, &sp18, &sp24, &sp24);
|
||||
sp3CLength = FX_F32_TO_FX32(0.0f);
|
||||
func_01ffb974(var_r8, &sp18, &sp24, &sp24);
|
||||
var_r8 = FX_F32_TO_FX32(0.0f);
|
||||
}
|
||||
|
||||
func_01ffe6c4(&sp60.mUnk_00, this->mRef, &sp24, &sp30, (s16) this->mUnk_44, &this->mPos, param1);
|
||||
|
||||
if (!this->Actor::func_ov000_0207e294(this->mUnk_30)) {
|
||||
VecFx32_Copy(&sp24, &sp30);
|
||||
//! TODO: fake match?
|
||||
var_r11 = ((Actor *) &sp60)->func_ov000_0207e294(this->mUnk_30);
|
||||
|
||||
if (var_r11 != 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
VecFx32_Copy(&sp24, &sp30);
|
||||
}
|
||||
}
|
||||
|
||||
return sp3CLength;
|
||||
return var_r11;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
fx32 ActorBomb::func_ov031_020e295c(UnkStruct_ov031_Items_00 *param1) {
|
||||
UnkStruct_ov031_020e5d18_00 sp60;
|
||||
sp60.mUnk_00 = NULL;
|
||||
VecFx32 sp54 = this->mPos;
|
||||
VecFx32 sp48 = this->mPrevPos;
|
||||
VecFx32 sp54;
|
||||
VecFx32 sp48;
|
||||
VecFx32 sp3C;
|
||||
VecFx32 sp30;
|
||||
VecFx32 sp24;
|
||||
VecFx32 sp18;
|
||||
VecFx32 sp0C;
|
||||
fx32 var_r11;
|
||||
fx32 var_r8;
|
||||
|
||||
var_r11 = 0;
|
||||
sp60.mUnk_00 = NULL;
|
||||
|
||||
sp54 = this->mPos;
|
||||
sp48 = this->mPrevPos;
|
||||
|
||||
func_01ffb714(&sp54, &sp48, &sp3C);
|
||||
fx32 sp3CLength = VecFx32_Length(&sp3C);
|
||||
var_r8 = VecFx32_Length(&sp3C);
|
||||
|
||||
VecFx32 sp0C = sp48;
|
||||
VecFx32 sp30 = sp0C;
|
||||
VecFx32 sp24 = sp0C;
|
||||
VecFx32 sp18 = sp3C;
|
||||
sp0C = sp48;
|
||||
sp30 = sp0C;
|
||||
sp24 = sp0C;
|
||||
sp18 = sp3C;
|
||||
|
||||
if (VecFx32_TryNormalize(&sp18) != 0x0) {
|
||||
while (sp3CLength != FX_F32_TO_FX32(0.0f)) {
|
||||
if (sp3CLength > FX_F32_TO_FX32(0.5f)) {
|
||||
while (var_r8 != FX_F32_TO_FX32(0.0f)) {
|
||||
if (var_r8 > FX_F32_TO_FX32(0.5f)) {
|
||||
func_01ffb974(FX_F32_TO_FX32(0.5f), &sp18, &sp24, &sp24);
|
||||
sp3CLength -= FX_F32_TO_FX32(0.5f);
|
||||
var_r8 -= FX_F32_TO_FX32(0.5f);
|
||||
} else {
|
||||
func_01ffb974(sp3CLength, &sp18, &sp24, &sp24);
|
||||
sp3CLength = FX_F32_TO_FX32(0.0f);
|
||||
func_01ffb974(var_r8, &sp18, &sp24, &sp24);
|
||||
var_r8 = FX_F32_TO_FX32(0.0f);
|
||||
}
|
||||
|
||||
func_01ffe6c4(&sp60.mUnk_00, this->mRef, &sp24, &sp30, (s16) this->mUnk_44, &this->mPos, param1);
|
||||
|
||||
if (!this->Actor::func_ov000_0207df88(this->mUnk_30, 0x10)) {
|
||||
VecFx32_Copy(&sp24, &sp30);
|
||||
//! TODO: fake match?
|
||||
var_r11 = ((Actor *) &sp60)->func_ov000_0207df88(this->mUnk_30, 0x10);
|
||||
|
||||
if (var_r11 != 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
VecFx32_Copy(&sp24, &sp30);
|
||||
}
|
||||
}
|
||||
|
||||
return sp3CLength;
|
||||
return var_r11;
|
||||
}
|
||||
|
||||
void ActorBomb::func_ov031_020e2a9c() {
|
||||
@@ -821,18 +881,182 @@ ActorBomb_180::~ActorBomb_180() {
|
||||
this->mUnk_08 = NULL;
|
||||
}
|
||||
|
||||
// non-matching (wrong instruction in condition)
|
||||
bool ActorBomb_180::vfunc_08(const UnkStruct_ov031_020f3310 *param1, unk32 param2) {
|
||||
if (((((u32) param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06]) >> 0x19) & 1) == 1) {
|
||||
if (((param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06] >> 0x19) & 0x01) == 0x01) {
|
||||
return false;
|
||||
}
|
||||
|
||||
VecFx16_Copy2VecFx32(¶m1->mUnk_08, &this->mUnk_0C);
|
||||
this->mUnk_0C.y = param1->mUnk_08.y;
|
||||
this->mUnk_0C.z = param1->mUnk_08.z;
|
||||
this->mUnk_0C.x = param1->mUnk_08.x;
|
||||
|
||||
return this->UnkStruct_ov031_Items_00::vfunc_08(param1, param2);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorBomb_180::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {}
|
||||
bool ActorBomb_180::vfunc_0C(MapObjRef ref, UnkStruct_ov031_020e54d4 *param2, const VecFx32 *param3, const VecFx32 *param4) {
|
||||
MapObjRef sp54;
|
||||
VecFx32 sp24;
|
||||
VecFx32 sp18;
|
||||
VecFx32 spC;
|
||||
Vec2bCpp sp0;
|
||||
s32 var_r0;
|
||||
s32 var_r0_2;
|
||||
s32 var_r0_3;
|
||||
s32 var_r1;
|
||||
s32 var_r2;
|
||||
s32 var_r3;
|
||||
s32 var_r4;
|
||||
s32 var_r5;
|
||||
|
||||
if (((param2->mUnk_08 >> 0x19) & 0x01) == 0x01) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var_r4 = 0;
|
||||
|
||||
if (ref.unk_00_u16 == 0x1000) {
|
||||
sp54 = ref;
|
||||
sp0 = sp54.GetUnk02();
|
||||
|
||||
MapObject *temp_r0 = gpMapObjManager->func_01fff498(sp0);
|
||||
|
||||
if (temp_r0 != NULL) {
|
||||
switch (temp_r0->GetMapObjectId()) {
|
||||
case MapObjectId_TMLV:
|
||||
case MapObjectId_SWHT:
|
||||
case MapObjectId_MLVC:
|
||||
case MapObjectId_LVVT:
|
||||
case MapObjectId_FRWL:
|
||||
case MapObjectId_LVCM: {
|
||||
ActorBlast::func_ov031_020e3b9c(this->mUnk_08, 0, 0);
|
||||
this->mUnk_08->Kill();
|
||||
return false;
|
||||
}
|
||||
case MapObjectId_BombFlower:
|
||||
if (temp_r0->mState == 0) {
|
||||
ActorBlast::func_ov031_020e3b9c(this->mUnk_08, 0, 0);
|
||||
this->mUnk_08->Kill();
|
||||
return false;
|
||||
}
|
||||
|
||||
break;
|
||||
case MapObjectId_FLSP:
|
||||
var_r4 = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var_r5 = 0;
|
||||
|
||||
switch (param2->vfunc_00()) {
|
||||
case 0:
|
||||
case 1:
|
||||
func_01ffb714(&this->mUnk_08->mPos, param4, &sp24);
|
||||
sp24.y = 0;
|
||||
break;
|
||||
case 2:
|
||||
param2->vfunc_14(&spC);
|
||||
VecFx32_Add(&spC, param4, &spC);
|
||||
VecFx32_Add(&sp18, param4, &sp18);
|
||||
|
||||
var_r0 = 0;
|
||||
if (param3->x > spC.x && param3->x < sp18.x) {
|
||||
var_r0 = 1;
|
||||
}
|
||||
|
||||
var_r1 = 0;
|
||||
if (param3->z > spC.z && param3->z < sp18.z) {
|
||||
var_r1 = 1;
|
||||
}
|
||||
|
||||
if (var_r4 != 0) {
|
||||
if (var_r0 != 0 && var_r1 != 0) {
|
||||
ActorBlast::func_ov031_020e3b9c(this->mUnk_08, 0, 0);
|
||||
this->mUnk_08->Kill();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (var_r0 != 0 && var_r1 != 0) {
|
||||
if (param2->mUnk_04 & 0x01) {
|
||||
sp24.x = 0;
|
||||
sp24.y = 0x1000;
|
||||
sp24.z = 0;
|
||||
var_r5 = 1;
|
||||
} else {
|
||||
func_01ffb714(&this->mUnk_08->mPos, param4, &sp24);
|
||||
|
||||
var_r2 = ABS2(sp24.z);
|
||||
var_r3 = ABS2(sp24.x);
|
||||
|
||||
if (var_r3 > var_r2) {
|
||||
if (sp24.x > 0) {
|
||||
sp24.x = 0x1000;
|
||||
sp24.y = 0;
|
||||
sp24.z = 0;
|
||||
} else {
|
||||
sp24.x = -0x1000;
|
||||
sp24.y = 0;
|
||||
sp24.z = 0;
|
||||
}
|
||||
} else if (sp24.z > 0) {
|
||||
sp24.x = 0;
|
||||
sp24.y = 0;
|
||||
sp24.z = 0x1000;
|
||||
} else {
|
||||
sp24.x = 0;
|
||||
sp24.y = 0;
|
||||
sp24.z = -0x1000;
|
||||
}
|
||||
}
|
||||
} else if (var_r1 != 0) {
|
||||
var_r0_3 = param3->z <= param4->z ? -0x1000 : 0x1000;
|
||||
sp24.x = 0;
|
||||
sp24.y = 0;
|
||||
sp24.z = var_r0_3;
|
||||
} else {
|
||||
if (param3->x <= param4->x) {
|
||||
var_r0_2 = -0x1000;
|
||||
} else {
|
||||
var_r0_2 = 0x1000;
|
||||
}
|
||||
|
||||
sp24.x = var_r0_2;
|
||||
sp24.y = 0;
|
||||
sp24.z = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (VecFx32_IsCleared(&this->mUnk_0C)) {
|
||||
this->mUnk_0C.x = sp24.x;
|
||||
this->mUnk_0C.y = sp24.y;
|
||||
this->mUnk_0C.z = sp24.z;
|
||||
}
|
||||
|
||||
MapObjRef reffffff = ref;
|
||||
u32 refdata = ref.Get32();
|
||||
if (this->mUnk_18 == reffffff.Get32()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
this->mUnk_18 = refdata;
|
||||
|
||||
if (var_r5 != 0) {
|
||||
if (((ActorBomb *) this->mUnk_08)->func_ov031_020e1d58()) {
|
||||
((ActorBomb *) this->mUnk_08)->func_ov031_020e2680(&sp24);
|
||||
}
|
||||
} else {
|
||||
((ActorBomb *) this->mUnk_08)->func_ov031_020e2780(&sp24);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ActorBomb_180::vfunc_10(ActorRef param1, unk32 param2) {
|
||||
if (param1.type == 0x1) {
|
||||
@@ -846,11 +1070,13 @@ bool ActorBomb_180::vfunc_10(ActorRef param1, unk32 param2) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// non-matching (unreachable code ?)
|
||||
bool ActorBomb_ov031_020e2134::vfunc_08(const UnkStruct_ov031_020f3310 *param1, unk32 param2) {
|
||||
if ((((u32) param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06] >> 0x9) & 0x7) == 0xA) {
|
||||
// the cast is required otherwise the compiler will ignore that condition since it's always false
|
||||
//! TODO: is this a macro/inline?
|
||||
if ((s32) ((param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06] >> 0x09) & 0x07) == 0x0A) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return this->UnkStruct_ov031_Items_00::vfunc_08(param1, param2);
|
||||
}
|
||||
|
||||
|
||||
@@ -348,7 +348,6 @@ ActorItemBoomerang_11C::ActorItemBoomerang_11C(ActorItemBoomerang *param1) :
|
||||
|
||||
ActorItemBoomerang_11C::~ActorItemBoomerang_11C() {}
|
||||
|
||||
// non-matching
|
||||
bool ActorItemBoomerang_11C::vfunc_08(const UnkStruct_ov031_020f3310 *param1, unk32 param2) {
|
||||
u32 var = param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06];
|
||||
|
||||
@@ -359,54 +358,64 @@ bool ActorItemBoomerang_11C::vfunc_08(const UnkStruct_ov031_020f3310 *param1, un
|
||||
return this->UnkStruct_ov031_Items_00::vfunc_08(param1, param2);
|
||||
}
|
||||
|
||||
bool ActorItemBoomerang_11C::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {
|
||||
u32 val = (param1->mUnk_08 >> 9) & 7;
|
||||
bool ActorItemBoomerang_11C::vfunc_0C(MapObjRef ref, UnkStruct_ov031_020e54d4 *param2, const VecFx32 *param3,
|
||||
const VecFx32 *param4) {
|
||||
u32 val = (param2->mUnk_08 >> 9) & 7;
|
||||
|
||||
if (val == 0x2) {
|
||||
this->mUnk_08->func_ov031_020e5034(0x1);
|
||||
}
|
||||
|
||||
if (val == 0x4) {
|
||||
} else if (val == 0x4) {
|
||||
this->mUnk_08->func_ov031_020e5034(0x2);
|
||||
}
|
||||
|
||||
if (param1->mUnk_08 >> 0x18 & 1) {
|
||||
if (((param2->mUnk_08 >> 0x18) & 1) == 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Vec2bCpp pos;
|
||||
if (this->mUnk_08->mState == ActorItemBoomerangState_1) {
|
||||
if (*param2 & 0x1000) {
|
||||
pos.x = (u8) *param2 >> 16;
|
||||
pos.y = (u8) *param2 >> 24;
|
||||
if (ref.unk_00_u16 & 0x1000) {
|
||||
MapObjRef ref2 = ref;
|
||||
Vec2bCpp pos = ref2.GetUnk02();
|
||||
|
||||
MapObject *mapObject = gpMapObjManager->func_01fff498(pos);
|
||||
if (mapObject != NULL) {
|
||||
if (mapObject->GetMapObjectId() == MapObjectId_ICEB || mapObject->GetMapObjectId() == MapObjectId_THAW) {
|
||||
|
||||
if (mapObject == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (mapObject->GetMapObjectId()) {
|
||||
case MapObjectId_ICEB:
|
||||
case MapObjectId_THAW:
|
||||
mapObject->vfunc_1C(this->mUnk_08->mRef, 0xC, &this->mUnk_08->mVel);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if (*param2 & 0x1000) {
|
||||
pos.x = (u8) *param2 >> 16;
|
||||
pos.y = (u8) *param2 >> 24;
|
||||
if (ref.unk_00_u16 & 0x1000) {
|
||||
MapObjRef ref2 = ref;
|
||||
Vec2bCpp pos = ref2.GetUnk02();
|
||||
|
||||
MapObject *mapObject = gpMapObjManager->func_01fff498(pos);
|
||||
if (mapObject != NULL) {
|
||||
switch (mapObject->GetMapObjectId()) {
|
||||
case MapObjectId_SKDI:
|
||||
case MapObjectId_SWHT:
|
||||
data_027e0d2c->func_ov031_020d95c8(*param2);
|
||||
case MapObjectId_Pot:
|
||||
mapObject->vfunc_1C(this->mUnk_08->mRef, 0xC, &this->mUnk_08->mVel);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mapObject == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (mapObject->GetMapObjectId()) {
|
||||
case MapObjectId_SKDI:
|
||||
case MapObjectId_SWHT:
|
||||
data_027e0d2c->func_ov031_020d95c8(*(ActorRef *) &ref); //! TODO: ref conflicts
|
||||
case MapObjectId_Pot:
|
||||
mapObject->vfunc_1C(this->mUnk_08->mRef, 0xC, &this->mUnk_08->mVel);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
UnkStruct_027e0ce0_38_Base::vfunc_0C(param1, param2, param3);
|
||||
return this->UnkStruct_027e0ce0_38_Base::vfunc_0C(ref, param2, param3, param4);
|
||||
}
|
||||
|
||||
void ActorItemBoomerang_Unknown::func_ov031_020e5704() {
|
||||
|
||||
@@ -59,7 +59,8 @@ ActorProfileRollingStone::ActorProfileRollingStone() :
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorRollingStone_104::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {}
|
||||
bool ActorRollingStone_104::vfunc_0C(MapObjRef ref, UnkStruct_ov031_020e54d4 *param2, const VecFx32 *param3,
|
||||
const VecFx32 *param4) {}
|
||||
|
||||
bool ActorRollingStone_104::vfunc_10(ActorRef param1, unk32 param2) {
|
||||
if (param1.type != 0x0) {
|
||||
|
||||
@@ -965,7 +965,8 @@ bool ActorShotArrow_178::vfunc_08(const UnkStruct_ov031_020f3310 *param1, unk32
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorShotArrow_178::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {}
|
||||
bool ActorShotArrow_178::vfunc_0C(MapObjRef ref, UnkStruct_ov031_020e54d4 *param2, const VecFx32 *param3,
|
||||
const VecFx32 *param4) {}
|
||||
|
||||
ActorShotArrow_194::ActorShotArrow_194(ActorShotArrow *param1) {
|
||||
this->mUnk_2C = param1;
|
||||
|
||||
@@ -17,13 +17,13 @@ struct UnkStruct_ov031_020e5d18_00 {
|
||||
static const Cylinder data_ov031_02113114(FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f), FX_F32_TO_FX32(0.0f),
|
||||
FX_F32_TO_FX32(0.35f));
|
||||
|
||||
// non-matching
|
||||
bool ActorUnkSWBM_94::vfunc_08(const UnkStruct_ov031_020f3310 *param1, unk32 param2) {
|
||||
return (((u32) param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06] >> 0x16) & 0x1) != 0x1;
|
||||
}
|
||||
|
||||
bool ActorUnkSWBM_94::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {
|
||||
return (((u32) param2[0x2] >> 0x16) & 0x1) != 0x1;
|
||||
bool ActorUnkSWBM_94::vfunc_0C(MapObjRef ref, UnkStruct_ov031_020e54d4 *param2, const VecFx32 *param3, const VecFx32 *param4) {
|
||||
#pragma unused(ref, param3, param4)
|
||||
return ((param2->mUnk_08 >> 0x16) & 0x1) != 0x1;
|
||||
}
|
||||
|
||||
bool ActorUnkSWBM_98::vfunc_0C(Actor *param1, VecFx32 *vector) {
|
||||
@@ -42,13 +42,14 @@ bool ActorUnkSWBM_98::vfunc_0C(Actor *param1, VecFx32 *vector) {
|
||||
|
||||
void ActorUnkSWBM_98::vfunc_10(Actor *actor) {
|
||||
switch (GET_FLAG(actor->mFlags, ActorFlag_17)) {
|
||||
case false:
|
||||
case false: {
|
||||
ActorUnkSWBM *actorSWBM = this->mUnk_2C;
|
||||
if (actorSWBM->mState != ActorUnkSWBMState_0) {
|
||||
break;
|
||||
}
|
||||
actorSWBM->func_ov031_020e6e84(ActorUnkSWBMState_1);
|
||||
break;
|
||||
}
|
||||
case true:
|
||||
this->mUnk_2C->func_ov031_020e6d80(0x8C98);
|
||||
break;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "MapObject/MapObjectBombFlower.hpp"
|
||||
#include "Actor/ActorRef.hpp"
|
||||
#include "CommonFuncs.hpp"
|
||||
|
||||
#include "Actor/ActorBomb.hpp"
|
||||
@@ -103,7 +104,7 @@ void MapObjectBombFlower::func_ov031_02102728(unk32 param1) {
|
||||
params.mUnk_28 = 0;
|
||||
params.func_ov000_020975f8();
|
||||
|
||||
params.mUnk_28 = *(unk32 *) &this->mUnk_38;
|
||||
params.mUnk_28 = *(ActorRef *) &this->mRef; //! TODO: ref conflicts
|
||||
VecFx32_Copy(&this->mPos, ¶ms.mInitialPos);
|
||||
|
||||
params.mParams[0] = 0x0;
|
||||
|
||||
@@ -25,26 +25,12 @@ MapObjectTreasureSpawned_74::MapObjectTreasureSpawned_74(G3d_Model *param1) :
|
||||
ModelRender(param1),
|
||||
mUnk_60(1) {}
|
||||
|
||||
void MapObjectTreasureSpawned_74::vfunc_1C(UnkSystem4_vfunc_1C *param1) {
|
||||
unk32 iVar1;
|
||||
unk32 uVar2;
|
||||
void MapObjectTreasureSpawned_74::vfunc_1C(G3d_RenderState *param1) {
|
||||
G3d_NameList *iVar1 = G3d_GetBoneList(param1->renderObj->model);
|
||||
uint uVar2 = iVar1 != NULL ? func_0200f218(iVar1, "box_B") : -1;
|
||||
|
||||
if (param1->mUnk_04[1] != 0) {
|
||||
iVar1 = param1->mUnk_04[1] + 0x40;
|
||||
} else {
|
||||
iVar1 = 0;
|
||||
}
|
||||
|
||||
if (iVar1 != 0) {
|
||||
uVar2 = func_0200f218(iVar1, "box_B");
|
||||
} else {
|
||||
uVar2 = -1;
|
||||
}
|
||||
|
||||
if (param1->mUnk_00[1] == uVar2) {
|
||||
if (!this->mUnk_60) {
|
||||
*param1->mUnk_B8 = 0;
|
||||
}
|
||||
if (param1->currentCmd[1] == uVar2 && !this->mUnk_60) {
|
||||
*param1->visibilityPtr = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +60,7 @@ bool MapObjectChestBase::Init() {
|
||||
if (this->mUnk_20.mParams[3] == 1) {
|
||||
this->mPos.x += 0x7FC;
|
||||
|
||||
Vec2bCpp sp48(this->mUnk_3A.x, this->mUnk_3A.y);
|
||||
Vec2bCpp sp48(this->mRef.unk_02.x, this->mRef.unk_02.y);
|
||||
pUVar2->func_ov000_020801b0(&sp48, 7, 1);
|
||||
|
||||
sp48.x++;
|
||||
@@ -125,12 +111,12 @@ void MapObjectChestBase::Setup() {
|
||||
|
||||
VecFx32_Add((VecFx32 *) &sp3C, &spC, (VecFx32 *) &sp3C);
|
||||
|
||||
local_68.x = this->mUnk_3A.x;
|
||||
local_68.y = this->mUnk_3A.y;
|
||||
local_68.x = this->mRef.unk_02.x;
|
||||
local_68.y = this->mRef.unk_02.y;
|
||||
iVar2 = pUVar5->func_01ffedf4((Vec2bCpp *) &local_68);
|
||||
|
||||
if (this->mUnk_20.mParams[3] == 1) {
|
||||
Vec2bCpp temp_r0(this->mUnk_3A.x, this->mUnk_3A.y);
|
||||
Vec2bCpp temp_r0(this->mRef.unk_02.x, this->mRef.unk_02.y);
|
||||
temp_r0.x--;
|
||||
|
||||
if (pUVar5->func_01ffedf4((Vec2bCpp *) &temp_r0) > iVar2 || gpMapObjManager->func_01fff498(local_5e) != NULL) {
|
||||
@@ -142,10 +128,10 @@ void MapObjectChestBase::Setup() {
|
||||
sp3C.x += FX_F32_TO_FX32(0.5f);
|
||||
}
|
||||
} else {
|
||||
Vec2bCpp temp_r0(this->mUnk_3A.x, this->mUnk_3A.y);
|
||||
Vec2bCpp temp_r0(this->mRef.unk_02.x, this->mRef.unk_02.y);
|
||||
temp_r0.x--;
|
||||
temp_r0.y += 2;
|
||||
// local_5e.y = this->mUnk_3A.y + (this->mUnk_3A.x - 1);
|
||||
// local_5e.y = this->mRef.unk_02.y + (this->mRef.unk_02.x - 1);
|
||||
// local_6c.y += local_5e.y;
|
||||
// local_5e.y += 2;
|
||||
|
||||
@@ -159,7 +145,7 @@ void MapObjectChestBase::Setup() {
|
||||
}
|
||||
}
|
||||
|
||||
local_62.x = (this->mUnk_3A.y - 1) + this->mUnk_3A.x;
|
||||
local_62.x = (this->mRef.unk_02.y - 1) + this->mRef.unk_02.x;
|
||||
|
||||
if (gpMapObjManager->func_ov000_0209c3a8(&local_62) == MapObjectId_MiniBlocks &&
|
||||
iVar2 == pUVar5->func_01ffedf4(&local_62)) {
|
||||
@@ -167,8 +153,8 @@ void MapObjectChestBase::Setup() {
|
||||
}
|
||||
|
||||
if (data_027e09a4->CurrentSceneIndex() == SceneIndex_d_flame) {
|
||||
local_64.x = this->mUnk_3A.x;
|
||||
local_66.y = this->mUnk_3A.y;
|
||||
local_64.x = this->mRef.unk_02.x;
|
||||
local_66.y = this->mRef.unk_02.y;
|
||||
|
||||
local_66.x = local_64.x - 1;
|
||||
local_64.y = local_66.y - 1;
|
||||
|
||||
@@ -550,7 +550,7 @@ void MapObjectDoorBase::func_ov031_020fcb78(s8 *param1) {
|
||||
bool uVar4 = (this->mUnk_84 % 0x1A) >= 0x0D ? true : false;
|
||||
|
||||
//! TODO: fake match?
|
||||
sp4 = *(ActorRef *) &this->mUnk_38;
|
||||
sp4 = *(ActorRef *) &this->mRef; //! TODO: ref conflicts
|
||||
|
||||
if (data_027e0998->vfunc_00(&this->mPos, &sp10, &sp4) && uVar4 != 0) {
|
||||
MtxFx22 m;
|
||||
|
||||
@@ -409,7 +409,7 @@ void MapObjectDoorClick::vfunc_40(void) {
|
||||
}
|
||||
|
||||
void MapObjectDoorClick::vfunc_44(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
unk32 local_c = *(u32 *) &this->mRef;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x142, &this->mPos, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -95,8 +95,8 @@ void MapObjectDoorDangerSpawn::Setup(void) {
|
||||
u32 temp2;
|
||||
|
||||
if (pMapObject != NULL) {
|
||||
temp1 = *(u32 *) &this->mUnk_38;
|
||||
temp2 = *(u32 *) &pMapObject->mUnk_38;
|
||||
temp1 = *(u32 *) &this->mRef;
|
||||
temp2 = *(u32 *) &pMapObject->mRef;
|
||||
|
||||
if (temp2 != temp1 && pMapObject->mUnk_A2) {
|
||||
run = false;
|
||||
@@ -649,7 +649,7 @@ void MapObjectDoorDangerSpawn::vfunc_40(void) {
|
||||
}
|
||||
|
||||
void MapObjectDoorDangerSpawn::vfunc_44(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
unk32 local_c = *(u32 *) &this->mRef;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x137, &this->mPos, 0);
|
||||
}
|
||||
|
||||
@@ -658,7 +658,7 @@ void MapObjectDoorDangerSpawn::vfunc_48(void) {
|
||||
}
|
||||
|
||||
void MapObjectDoorDangerSpawn::vfunc_4C(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
unk32 local_c = *(u32 *) &this->mRef;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x139, &this->mPos, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -231,7 +231,7 @@ void MapObjectDoorKey::vfunc_40(void) {
|
||||
}
|
||||
|
||||
void MapObjectDoorKey::vfunc_44(void) {
|
||||
unk32 stack = *(u32 *) &this->mUnk_38;
|
||||
unk32 stack = *(u32 *) &this->mRef;
|
||||
data_027e09a8->func_ov000_02071d34(&stack, 0x135, &this->mPos, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -320,7 +320,7 @@ void MapObjectDoorSwitch::vfunc_40(void) {
|
||||
}
|
||||
|
||||
void MapObjectDoorSwitch::vfunc_44(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
unk32 local_c = *(u32 *) &this->mRef;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x130, &this->mPos, 0);
|
||||
}
|
||||
|
||||
@@ -329,7 +329,7 @@ void MapObjectDoorSwitch::vfunc_48(void) {
|
||||
}
|
||||
|
||||
void MapObjectDoorSwitch::vfunc_4C(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
unk32 local_c = *(u32 *) &this->mRef;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x132, &this->mPos, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ void MapObjectDoorTouch::vfunc_40(void) {
|
||||
}
|
||||
|
||||
void MapObjectDoorTouch::vfunc_44(void) {
|
||||
unk32 local_c = *(u32 *) &this->mUnk_38;
|
||||
unk32 local_c = *(u32 *) &this->mRef;
|
||||
data_027e09a8->func_ov000_02071d34(&local_c, 0x147, &this->mPos, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ bool ActorKeese_2AC::vfunc_08(const UnkStruct_ov031_020f3310 *param1, unk32 para
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorKeese_2AC::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {}
|
||||
bool ActorKeese_2AC::vfunc_0C(MapObjRef ref, UnkStruct_ov031_020e54d4 *param2, const VecFx32 *param3, const VecFx32 *param4) {}
|
||||
|
||||
bool ActorKeese::Init(unk32 param1) {
|
||||
this->mUnk_0B0.func_ov000_02057c38(0x6, 0x2);
|
||||
|
||||
@@ -49,15 +49,16 @@ MapObjectUnkSWSW_40::MapObjectUnkSWSW_40(G3d_Model *pModel) :
|
||||
this->ModelRender::func_ov000_02057c38(0x6, 0x2);
|
||||
}
|
||||
|
||||
void MapObjectUnkSWSW_40::vfunc_1C(UnkSystem4_vfunc_1C *param1) {
|
||||
if (param1->mUnk_00[0x1] == this->mUnk_60) {
|
||||
void MapObjectUnkSWSW_40::vfunc_1C(G3d_RenderState *param1) {
|
||||
if (param1->currentCmd[1] == this->mUnk_60) {
|
||||
param1->mUnk_B4->mUnk_00 &= ~0x2;
|
||||
MtxFx33_InitXRotation(¶m1->mUnk_B4->mUnk_28, SIN((u16) this->mUnk_68), COS((u16) this->mUnk_68));
|
||||
}
|
||||
|
||||
if (param1->mUnk_00[0x1] != this->mUnk_64) {
|
||||
if (param1->currentCmd[1] != this->mUnk_64) {
|
||||
return;
|
||||
}
|
||||
|
||||
param1->mUnk_B4->mUnk_00 &= ~0x2;
|
||||
MtxFx33_InitXRotation(¶m1->mUnk_B4->mUnk_28, SIN((u16) this->mUnk_6A), COS((u16) this->mUnk_6A));
|
||||
}
|
||||
@@ -492,7 +493,7 @@ ActorUnkNSSW *MapObjectUnkSWSW::func_ov032_02121dc8(VecFx32 *param1) {
|
||||
params.func_ov000_020975f8();
|
||||
|
||||
params.mInitialAngle = this->mAngle.angle_s;
|
||||
params.mUnk_28 = *(unk32 *) &this->mUnk_38;
|
||||
params.mUnk_28 = this->mRef.Get32(); //! TODO: ref conflicts
|
||||
|
||||
VecFx32_Init(param1->x, param1->y, param1->z, ¶ms.mInitialPos);
|
||||
|
||||
|
||||
@@ -1173,17 +1173,13 @@ bool UnkStruct_ov063_02162ea8::vfunc_08(const UnkStruct_ov031_020f3310 *param1,
|
||||
return retVal;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool UnkStruct_ov063_02162ea8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 *param2, unk32 param3) {
|
||||
UnkStruct_02162ea8_vfunc_0C *param2Struct = (UnkStruct_02162ea8_vfunc_0C *) param2;
|
||||
if ((*(u16 *) ¶m2Struct->mUnk_04 & 0x1000) != 0) {
|
||||
UnkStruct_02162ea8_vfunc_0C tmp;
|
||||
tmp.mUnk_04 = *(volatile unk32 *) ¶m2Struct->mUnk_04;
|
||||
bool UnkStruct_ov063_02162ea8::vfunc_0C(MapObjRef ref, UnkStruct_ov031_020e54d4 *param2, const VecFx32 *param3,
|
||||
const VecFx32 *param4) {
|
||||
if (ref.unk_00_u16 & 0x1000) {
|
||||
MapObjRef ref2 = ref;
|
||||
Vec2bCpp pos = ref2.GetUnk02();
|
||||
|
||||
Vec2bCpp vec;
|
||||
*(unk32 *) &vec = tmp.mUnk_04;
|
||||
|
||||
MapObject *mapObject = gpMapObjManager->func_01fff498(vec);
|
||||
MapObject *mapObject = gpMapObjManager->func_01fff498(pos);
|
||||
|
||||
if (mapObject != NULL) {
|
||||
MapObjectId id = mapObject->GetMapObjectId();
|
||||
@@ -1193,8 +1189,7 @@ bool UnkStruct_ov063_02162ea8::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1,
|
||||
}
|
||||
}
|
||||
|
||||
return UnkStruct_027e0ce0_38_Base::vfunc_0C((const UnkStruct_ov031_020e54d4 *) param2Struct->mUnk_04, param2,
|
||||
param2Struct->mUnk_04);
|
||||
return UnkStruct_027e0ce0_38_Base::vfunc_0C(ref, param2, param3, param4);
|
||||
}
|
||||
|
||||
void UnkStruct_ov063_02162f14::vfunc_3C() {
|
||||
|
||||
@@ -218,7 +218,7 @@ void MapObjectUnkSAND::vfunc_0C() {
|
||||
|
||||
void MapObjectUnkSAND::vfunc_14(unk32 param1) {
|
||||
VecFx32 sp4 = this->mPos;
|
||||
Vec2bCpp sp0 = this->mUnk_3A;
|
||||
Vec2bCpp sp0 = this->mRef.GetUnk02();
|
||||
|
||||
for (int var_r7 = 0; var_r7 < ARRAY_LEN(this->mUnk_40); var_r7++) {
|
||||
if (this->mUnk_40[var_r7].mUnk_00 != 0) {
|
||||
|
||||
@@ -163,9 +163,9 @@ void PlayerSceneChange::vfunc_0C(UnkStruct_PlayerGet_vfunc_0C_param1 *param1) {
|
||||
|
||||
if (this->mUnk_68 == 0x19) {
|
||||
pDRTY->func_ov034_02121d84();
|
||||
this->mUnk_8C = pDRTY->mUnk_38;
|
||||
this->mUnk_8C = pDRTY->mRef.Get32();
|
||||
} else if (pDRTY->GetMapObjectId() == MapObjectId_DRTY) {
|
||||
*(u32 *) this->mUnk_94 = pDRTY->mUnk_38;
|
||||
*(u32 *) this->mUnk_94 = pDRTY->mRef.Get32();
|
||||
|
||||
switch (pDRTY->mUnk_CC) {
|
||||
case 1:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "CommonFuncs.hpp"
|
||||
#include "MapObject/MapObject.hpp"
|
||||
#include "MapObject/MapObjectManager.hpp"
|
||||
|
||||
MapObject *MapObjectManager::func_01fff498(Vec2bCpp param1) {
|
||||
|
||||
Reference in New Issue
Block a user