mirror of
https://github.com/zeldaret/st
synced 2026-07-08 22:34:49 -04:00
Decompiling actor for boomerang (#93)
* feat: begin decompiling ActorItemBoomerang * feat: decompile functions * refactor: rename function and use ActorState * feat: match vfunc * feat: magic stuff on addresses to match .data * feat: more black magic * feat: improvements * feat: match .data * feat: unmatch .data 😭 * feat: match stuff * refactor: move shotarrows' class used in boomerang * feat: fix mangled names * feat: weird magic * fix: build issues * fix: build issue for jp version * fix: back to +0.2% :yeah: * feat: improvements before changing laptop * feat: continue decompiling * fix: build issues * feat: improvements * feat: solve build on eur * fix: build issue * fix: better match * fix: match back ActorShotArrow data * feat: increase .text matching * fix: propagate changes to ActorShotArrow * feat: matching func_ov031_020e5034 * fix: logical errors * fix: replace whiles with fors * style: use uppercased hex value Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * style: do not use fx32 for global timer Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * style: add parameters name in prototypes Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * style: use bool instead of unk32 for external function Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com> * style: use DEG2ANG * refactor: use ActorRef instead of u16 * style: use boring array access instead of chad pointer manipulation * fix: use bool as return type for ActorItemBoomerang::vfunc_2C * feat: remove old non-matching comments * style: explicit null check * revert: change vfunc_2C back to void signature and change 01fff5d0 function's signature to bool --------- Co-authored-by: Yanis <35189056+Yanis002@users.noreply.github.com>
This commit is contained in:
@@ -103,7 +103,7 @@ bool MapObject::func_ov000_0209d144(Vec2s *param1, unk32 param2, unk32 param3) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool MapObject::vfunc_1C() {
|
||||
bool MapObject::vfunc_1C(ActorRef param1, unk32 param2, VecFx32 *param3) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,437 @@
|
||||
#include "Actor/ActorItemBoomerang.hpp"
|
||||
|
||||
#include "MapObject/MapObjectUnkICEB.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
#include "Unknown/UnkStruct_027e09a8.hpp"
|
||||
#include "Unknown/UnkStruct_027e09b4.hpp"
|
||||
#include "Unknown/UnkStruct_027e09c0.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cd8.hpp"
|
||||
#include "Unknown/UnkStruct_027e0cec.hpp"
|
||||
#include "Unknown/UnkStruct_027e0d2c.hpp"
|
||||
|
||||
extern "C" void func_01ff916c(void *, int, int);
|
||||
extern "C" void func_01ff93c0(VecFx32 *, unk32);
|
||||
extern "C" void func_01ff97c8(VecFx32 *, int);
|
||||
extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, void *);
|
||||
extern "C" unk32 func_01ffb9cc(VecFx32 *, VecFx32 *);
|
||||
extern "C" void func_01ffe6c4(Actor **, ActorRef, VecFx32 *, VecFx32 *, s32, VecFx32 *, UnkStruct_ov031_Items_00 *);
|
||||
extern "C" void func_01ffedac(u16 *, VecFx32 *);
|
||||
extern "C" bool func_ov000_0205aeac();
|
||||
extern "C" bool func_ov000_020982d8();
|
||||
|
||||
DECL_PROFILE(ActorProfileItemBoomerang);
|
||||
|
||||
Actor *ActorProfileItemBoomerang::Create() {
|
||||
return new(HeapIndex_2) ActorItemBoomerang();
|
||||
}
|
||||
|
||||
ActorProfileItemBoomerang::ActorProfileItemBoomerang() :
|
||||
ActorProfile(ActorId_ITBM) {}
|
||||
|
||||
// non-matching
|
||||
ActorItemBoomerang::ActorItemBoomerang() :
|
||||
mUnk_94(data_027e0ce0->func_ov000_0208ed30(0x0, 0x1, ItemManager::func_ov000_020a8974(0x1)->mUnk_10)),
|
||||
mUnk_9C(true),
|
||||
mUnk_11C(this),
|
||||
mUnk_12C(),
|
||||
mUnk_138(0x0),
|
||||
mUnk_13A(0x0),
|
||||
mUnk_13C((u16) 0x8D71),
|
||||
mUnk_140(0x1000, 0x0) {
|
||||
this->mState = ActorItemBoomerangState_0;
|
||||
this->mUnk_52 = 0xFFFF;
|
||||
this->mUnk_50 = 0x0;
|
||||
}
|
||||
|
||||
bool ActorItemBoomerang::vfunc_18(unk32 param1) {
|
||||
this->mUnk_CC.mUnk_30.func_ov031_020e45fc();
|
||||
|
||||
this->mUnk_A0.mUnk_0C.x = FLOAT_TO_FX32(0.0f);
|
||||
this->mUnk_A0.mUnk_0C.y = FLOAT_TO_FX32(-0.1003f);
|
||||
this->mUnk_A0.mUnk_0C.z = FLOAT_TO_FX32(0.0f);
|
||||
this->mUnk_A0.mUnk_18 = FLOAT_TO_FX32(0.4f);
|
||||
|
||||
this->mUnk_10C.x = FLOAT_TO_FX32(0.0f);
|
||||
this->mUnk_10C.y = FLOAT_TO_FX32(-0.1003f);
|
||||
this->mUnk_10C.z = FLOAT_TO_FX32(0.0f);
|
||||
this->mUnk_118 = FLOAT_TO_FX32(0.0f);
|
||||
|
||||
this->func_ov031_020e5034(0x0);
|
||||
|
||||
unk16 sin = SIN((u16) this->mAngle);
|
||||
unk16 cos = COS((u16) this->mAngle);
|
||||
|
||||
this->mVel.x = MUL_FX32(sin, FLOAT_TO_FX32(0.5f));
|
||||
this->mVel.z = MUL_FX32(cos, FLOAT_TO_FX32(0.5f));
|
||||
this->mVel.y = FLOAT_TO_FX32(0.0f);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorItemBoomerang::SetState(ActorState state) {
|
||||
this->mState = state;
|
||||
this->mUnk_52 = 0xFFFF;
|
||||
this->mUnk_50 = 0;
|
||||
}
|
||||
|
||||
void ActorItemBoomerang::func_ov031_020e49b0(unk32 param1) {
|
||||
data_027e09a8->func_ov000_02071b30(param1, &this->mPos, 0);
|
||||
data_027e09a8->func_ov000_02071eac(&this->mPos);
|
||||
this->func_ov031_020e5220();
|
||||
|
||||
if (this->mState == ActorItemBoomerangState_1) {
|
||||
return;
|
||||
}
|
||||
this->mVel.x = FLOAT_TO_FX32(0.0f);
|
||||
this->mVel.y = FLOAT_TO_FX32(0.0f);
|
||||
this->mVel.z = FLOAT_TO_FX32(0.0f);
|
||||
|
||||
data_027e0d2c->func_ov031_020d95b4();
|
||||
this->SetState(ActorItemBoomerangState_1);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorItemBoomerang::vfunc_20() {
|
||||
VecFx32_Copy(&this->mPos, &this->mPrevPos);
|
||||
VecFx32_Add(&this->mPos, &this->mVel, &this->mPos);
|
||||
|
||||
if (func_ov000_0205aeac() && this->mUnk_128 == 0x1 || this->mUnk_128 == 0x2) {
|
||||
VecFx32_Copy(&this->mPos, &this->mUnk_140.mUnk_00);
|
||||
}
|
||||
|
||||
this->IsTimerOut();
|
||||
this->mAngle += DEG_TO_ANG(45);
|
||||
this->func_ov031_020e52a0();
|
||||
data_027e09a8->func_ov000_02071d34(&this->mRef, this->mUnk_13C, &this->mPos, 0x0);
|
||||
|
||||
bool var2 = false;
|
||||
switch (this->mState) {
|
||||
case ActorItemBoomerangState_0:
|
||||
this->mUnk_A0.mUnk_0C.z = this->mPos.z;
|
||||
this->mUnk_A0.mUnk_0C.y = this->mPos.y + FLOAT_TO_FX32(-0.1003f);
|
||||
this->mUnk_A0.mUnk_0C.x = this->mPos.x;
|
||||
this->mUnk_A0.mUnk_18 = FLOAT_TO_FX32(0.3f);
|
||||
|
||||
data_027e09c0->func_ov000_0207e58c(this->mRef, 0xC, 0x8, &this->mUnk_A0);
|
||||
|
||||
bool var1 = false;
|
||||
if (data_027e0ce0->func_ov000_0208bc1c(0x1, 0x0, 0x16, 0x0, 0x0, 0x0)) {
|
||||
var1 = true;
|
||||
this->mUnk_13A = 0x14;
|
||||
this->mUnk_138 = 0x0;
|
||||
}
|
||||
|
||||
Actor *sp54; /* actor* ? */
|
||||
func_01ffe6c4(&sp54, this->mRef, &this->mPos, &this->mPrevPos, 0x1C, NULL, &this->mUnk_11C);
|
||||
unk32 tmp = sp54->func_ov000_0207df88((Cylinder *) &this->mUnk_CC.mUnk_30.mUnk_00, 0xC);
|
||||
func_01ffe6c4(&sp54, this->mRef, &this->mPos, &this->mPrevPos, 0x1F, NULL, &this->mUnk_11C);
|
||||
|
||||
if ((tmp | sp54->func_ov000_0207e294((Cylinder *) &this->mUnk_10C)) == 0 && !var1) {
|
||||
if (data_027e0ce0->mUnk_2C->mEquippedItem != ItemFlag_Boomerang) {
|
||||
this->SetState(ActorItemBoomerangState_1);
|
||||
return;
|
||||
}
|
||||
|
||||
VecFx32 sp6C;
|
||||
ActorRef sp14;
|
||||
if (!data_027e0d2c->func_ov031_020d962c(&this->mPos, 0x4CD, &sp6C, &sp14)) {
|
||||
this->SetState(ActorItemBoomerangState_1);
|
||||
} else {
|
||||
unk32 vecLength = VecFx32_Length(&this->mVel);
|
||||
unk32 lengthModified = (vecLength << 0xA) + 0x800;
|
||||
unk32 sp18 = lengthModified;
|
||||
func_01ff916c(&sp18, 0x0, MUL_FX32(vecLength, lengthModified));
|
||||
func_01ffb714(&sp6C, &this->mPos, &this->mVel);
|
||||
func_01ff97c8(&this->mPos, sp18 + 0x200);
|
||||
}
|
||||
|
||||
if (sp14.type != 0) {
|
||||
this->mUnk_CC.mUnk_0C.z = this->mPos.z;
|
||||
this->mUnk_CC.mUnk_0C.y = this->mPos.y + FLOAT_TO_FX32(-0.1003f);
|
||||
this->mUnk_CC.mUnk_18 = 0xA000;
|
||||
this->mUnk_CC.mUnk_0C.x = this->mPos.x;
|
||||
data_027e09c0->func_ov000_0207e58c(this->mRef, 0xC, 0x8, &this->mUnk_CC);
|
||||
return;
|
||||
}
|
||||
if (!(sp14.data & 0x1000)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Vec2bCpp pos;
|
||||
pos.x = 0x0;
|
||||
pos.y = 0x0;
|
||||
MapObject *object = gpMapObjManager->func_01fff498(pos);
|
||||
if (object == NULL) {
|
||||
return;
|
||||
}
|
||||
object->vfunc_1C(this->mRef, 0xC, &this->mVel);
|
||||
if (object->mUnk_10 != NULL) {
|
||||
unk32 val = object->mUnk_10->mUnk_0C.y;
|
||||
if (val == 0x2) {
|
||||
this->func_ov031_020e5034(0x1);
|
||||
} else if (val == 0x4) {
|
||||
this->func_ov031_020e5034(0x2);
|
||||
}
|
||||
}
|
||||
MapObjectId objectId = object->GetMapObjectId();
|
||||
if (objectId != MapObjectId_SKDI && objectId != MapObjectId_SWHT && objectId != MapObjectId_TSUB) {
|
||||
this->func_ov031_020e49b0(0x8D70);
|
||||
}
|
||||
return;
|
||||
}
|
||||
this->func_ov031_020e49b0(0x8D70);
|
||||
break;
|
||||
case ActorItemBoomerangState_1:
|
||||
this->mUnk_A0.mUnk_0C.z = this->mPos.z;
|
||||
this->mUnk_A0.mUnk_0C.y = this->mPos.y + FLOAT_TO_FX32(-0.1003f);
|
||||
this->mUnk_A0.mUnk_0C.x = this->mPos.x;
|
||||
this->mUnk_A0.mUnk_18 = FLOAT_TO_FX32(0.3f);
|
||||
|
||||
data_027e09c0->func_ov000_0207e58c(this->mRef, 0xC, 0x8, &this->mUnk_A0);
|
||||
Actor *sp24; /* actor* ? */
|
||||
func_01ffe6c4(&sp24, this->mRef, &this->mPos, &this->mPrevPos, 0x1C, NULL, &this->mUnk_11C);
|
||||
sp24->func_ov000_0207df88((Cylinder *) &this->mUnk_CC.mUnk_30.mUnk_00, 0xC);
|
||||
|
||||
bool var3 = false;
|
||||
if ((u32) this->mUnk_138 < (u32) this->mUnk_13A) {
|
||||
++this->mUnk_138;
|
||||
} else {
|
||||
var2 = true;
|
||||
}
|
||||
if (var2 && data_027e0ce0->func_ov000_0208bc1c(0x1, 0x0, 0x16, 0x0, 0x0, 0x0)) {
|
||||
var3 = true;
|
||||
}
|
||||
if (var3) {
|
||||
this->mUnk_13A = 0x14;
|
||||
this->mUnk_138 = 0x0;
|
||||
this->func_ov031_020e49b0(0x8D70);
|
||||
}
|
||||
|
||||
u16 spC;
|
||||
VecFx32 sp3C;
|
||||
VecFx32_Copy(data_027e0ce0->func_01fff148(0x0), &sp3C);
|
||||
|
||||
if (func_01ffb9cc(&sp3C, &this->mPos) <= 0x800) {
|
||||
if (this->mUnk_128 == 0x2) {
|
||||
func_01ffedac(&spC, &sp3C);
|
||||
|
||||
Vec2bCpp pos;
|
||||
pos.x = 0x0;
|
||||
pos.y = 0x0;
|
||||
MapObject *object = gpMapObjManager->func_01fff498(pos);
|
||||
if (object != NULL && object->GetMapObjectId() == MapObjectId_ICEB) {
|
||||
((MapObjectUnkICEB *) object)->func_ov094_02174870();
|
||||
}
|
||||
}
|
||||
data_027e0d2c->func_ov031_020d95b4();
|
||||
this->Kill();
|
||||
return;
|
||||
}
|
||||
VecFx32 sp48;
|
||||
func_01ff93c0(&this->mVel, 0xC00);
|
||||
func_01ffb714(&sp3C, &this->mPos, &sp48);
|
||||
func_01ff97c8(&sp48, 0x200);
|
||||
VecFx32_Add(&this->mVel, &sp48, &this->mVel);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ActorItemBoomerang::func_ov031_020e5034(unk32 param1) {
|
||||
if (this->mUnk_128 == param1) {
|
||||
return;
|
||||
}
|
||||
this->mUnk_128 = param1;
|
||||
UnkStruct_PlayerGet_ec *ptr = NULL;
|
||||
|
||||
switch (this->mUnk_128) {
|
||||
case 0x1:
|
||||
this->mUnk_13C = 0x8D72;
|
||||
for (ptr = this->mUnk_12C; ptr != (void *) &this->mUnk_138; ++ptr) {
|
||||
ptr->func_ov000_020a0334();
|
||||
}
|
||||
|
||||
data_027e0cec->func_ov000_0209ff8c(&this->mUnk_12C[0], 0x818, &this->mPos, 0x2);
|
||||
data_027e0cec->func_ov000_0209ff8c(&this->mUnk_12C[1], 0x819, &this->mPos, 0x2);
|
||||
|
||||
if (!func_ov000_0205aeac()) {
|
||||
return;
|
||||
}
|
||||
if (this->mUnk_12C[0].mUnk_00 != NULL) {
|
||||
this->mUnk_12C[0].mUnk_00->mUnk_A0 = 0;
|
||||
}
|
||||
if (this->mUnk_12C[1].mUnk_00 != NULL) {
|
||||
this->mUnk_12C[1].mUnk_00->mUnk_A0 = 0;
|
||||
}
|
||||
data_027e0cd8->mUnk_0C->func_ov000_02080a5c(&this->mUnk_140.mUnk_00);
|
||||
return;
|
||||
case 0x2:
|
||||
this->mUnk_13C = 0x8D73;
|
||||
for (ptr = this->mUnk_12C; ptr != (void *) &this->mUnk_138; ++ptr) {
|
||||
ptr->func_ov000_020a0334();
|
||||
}
|
||||
|
||||
data_027e0cec->func_ov000_020a00d4(&this->mUnk_12C[0], 0x815, 0x816, 0x817, &this->mPos, 0x2);
|
||||
if (!func_ov000_0205aeac()) {
|
||||
return;
|
||||
}
|
||||
if (this->mUnk_12C[0].mUnk_00 != NULL) {
|
||||
this->mUnk_12C[0].mUnk_00->mUnk_A0 = 0;
|
||||
}
|
||||
if (this->mUnk_12C[1].mUnk_00 != NULL) {
|
||||
this->mUnk_12C[1].mUnk_00->mUnk_A0 = 0;
|
||||
}
|
||||
if (this->mUnk_12C[2].mUnk_00 != NULL) {
|
||||
this->mUnk_12C[2].mUnk_00->mUnk_A0 = 0;
|
||||
}
|
||||
data_027e0cd8->mUnk_0C->func_ov000_02080a5c(&this->mUnk_140.mUnk_00);
|
||||
return;
|
||||
default:
|
||||
this->mUnk_13C = 0x8D71;
|
||||
if (!func_ov000_0205aeac()) {
|
||||
return;
|
||||
}
|
||||
data_027e0cd8->mUnk_0C->func_ov000_02080a78(&this->mUnk_140.mUnk_00);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ActorItemBoomerang::func_ov031_020e5220() {
|
||||
data_027e0cec->func_ov000_0209feac(0x81A, &this->mPos, 0x2, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x81B, &this->mPos, 0x2, 0x0, 0x0);
|
||||
data_027e0cec->func_ov000_0209feac(0x81C, &this->mPos, 0x2, 0x0, 0x0);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorItemBoomerang::func_ov031_020e52a0() {
|
||||
if (this->mUnk_128 == 0x1 || this->mUnk_128 == 0x2) {
|
||||
for (UnkStruct_PlayerGet_ec *ptr = this->mUnk_12C; ptr != (void *) &this->mUnk_138; ++ptr) {
|
||||
// non sense
|
||||
ptr->mUnk_00->mUnk_28 = this->mPos.x + ptr->mUnk_00->mUnk_24;
|
||||
ptr->mUnk_00->mUnk_2C = this->mPos.y + ptr->mUnk_00->mUnk_28;
|
||||
ptr->mUnk_00->mUnk_30 = this->mPos.z + ptr->mUnk_00->mUnk_2C;
|
||||
}
|
||||
return;
|
||||
}
|
||||
for (UnkStruct_PlayerGet_ec *ptr = this->mUnk_12C; ptr != (void *) &this->mUnk_138; ++ptr) {
|
||||
ptr->func_ov000_020a0334();
|
||||
}
|
||||
}
|
||||
|
||||
// non-matching
|
||||
void ActorItemBoomerang::vfunc_2C(unk32 param1) {
|
||||
if (Actor::func_01fff5d0(param1, 0x0)) {
|
||||
this->mUnk_94.func_01ffc6d4((u16) this->mAngle, &this->mPos);
|
||||
data_027e09b4->func_ov017_020c08c4(&this->mPos, 0x400, 0x400, 0x1F, 0x0, 0x1);
|
||||
}
|
||||
}
|
||||
|
||||
void ActorItemBoomerang_A0::vfunc_10(Actor *actor) {
|
||||
data_027e0d2c->func_ov031_020d95c8(actor->mRef);
|
||||
}
|
||||
|
||||
void ActorItemBoomerang_CC::vfunc_10(Actor *actor) {
|
||||
data_027e0d2c->func_ov031_020d95c8(actor->mRef);
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorItemBoomerang_CC::vfunc_0C(Actor *actor, VecFx32 *param2) {
|
||||
if (actor != NULL) {
|
||||
if (actor->mRef.Get32() == this->mUnk_2C && actor->mVel.x == FLOAT_TO_FX32(0.0f) &&
|
||||
actor->mVel.y == FLOAT_TO_FX32(0.0f) && actor->mVel.z == FLOAT_TO_FX32(0.0f)) {
|
||||
this->mUnk_2C = 0x0;
|
||||
return UnkStruct_ov031_Items_01::vfunc_0C(actor, param2);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void ActorItemBoomerang_Unknown::func_ov031_020e45fc() {
|
||||
this->mUnk_00 = 0x0;
|
||||
this->mUnk_04.x = FLOAT_TO_FX32(-0.1003f);
|
||||
this->mUnk_04.y = FLOAT_TO_FX32(0.0f);
|
||||
this->mUnk_04.z = FLOAT_TO_FX32(0.3f);
|
||||
}
|
||||
|
||||
ActorItemBoomerang_11C::ActorItemBoomerang_11C(ActorItemBoomerang *param1) :
|
||||
mUnk_08(param1) {}
|
||||
|
||||
ActorItemBoomerang_11C::~ActorItemBoomerang_11C() {}
|
||||
|
||||
// non-matching
|
||||
bool ActorItemBoomerang_11C::vfunc_08(const UnkStruct_ov031_020f3310 *param1) {
|
||||
u32 var = param1->mUnk_04->mUnk_24[param1->mUnk_00->mUnk_06];
|
||||
|
||||
if (((var >> 0x18) & 1) == 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return func_ov000_020982d8();
|
||||
}
|
||||
|
||||
bool ActorItemBoomerang_11C::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2) {
|
||||
u32 val = (param1->mUnk_08 >> 9) & 7;
|
||||
if (val == 0x2) {
|
||||
this->mUnk_08->func_ov031_020e5034(0x1);
|
||||
}
|
||||
|
||||
if (val == 0x4) {
|
||||
this->mUnk_08->func_ov031_020e5034(0x2);
|
||||
}
|
||||
|
||||
if (param1->mUnk_08 >> 0x18 & 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;
|
||||
|
||||
MapObject *mapObject = gpMapObjManager->func_01fff498(pos);
|
||||
if (mapObject != NULL) {
|
||||
if (mapObject->GetMapObjectId() == MapObjectId_ICEB || mapObject->GetMapObjectId() == MapObjectId_THAW) {
|
||||
mapObject->vfunc_1C(this->mUnk_08->mRef, 0xC, &this->mUnk_08->mVel);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if (param2 & 0x1000) {
|
||||
pos.x = (u8) param2 >> 16;
|
||||
pos.y = (u8) param2 >> 24;
|
||||
|
||||
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_TSUB:
|
||||
mapObject->vfunc_1C(this->mUnk_08->mRef, 0xC, &this->mUnk_08->mVel);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UnkStruct_027e0ce0_38_Base::vfunc_0C(param1, param2);
|
||||
}
|
||||
|
||||
void ActorItemBoomerang_Unknown::func_ov031_020e5704() {
|
||||
this->mUnk_00 = 0;
|
||||
}
|
||||
|
||||
ActorItemBoomerang::~ActorItemBoomerang() {
|
||||
if (data_027e0d2c) {
|
||||
data_027e0d2c->func_ov031_020d95b4();
|
||||
}
|
||||
if (func_ov000_0205aeac()) {
|
||||
data_027e0cd8->mUnk_0C->func_ov000_02080a78(&this->mUnk_140.mUnk_00);
|
||||
}
|
||||
}
|
||||
|
||||
ActorProfileItemBoomerang::~ActorProfileItemBoomerang() {}
|
||||
@@ -67,7 +67,7 @@ typedef struct {
|
||||
} UnkStack_ov031_020f2310;
|
||||
|
||||
struct UnkStruct_020f1b04 {
|
||||
/* 0C */ unk32 mUnk_0C;
|
||||
/* 0C */ Actor *mUnk_0C;
|
||||
/* 10 */ STRUCT_PAD(0x10, 0x24);
|
||||
/* 24 */
|
||||
};
|
||||
@@ -96,7 +96,7 @@ extern "C" void func_01ffad5c(Mat4x3p *, Mat4x3p *, Mat4x3p *);
|
||||
extern "C" void func_01ffb714(VecFx32 *, VecFx32 *, VecFx32 *);
|
||||
extern "C" fx16 func_01ffbbe0(fx32, fx32);
|
||||
extern "C" bool func_01ffccf4(VecFx32 *, VecFx32 *, VecFx32 *, unk32 *);
|
||||
extern "C" void func_01ffe6c4(unk32 *, ActorRef, VecFx32 *, VecFx32 *, s32, VecFx32 *, unk32);
|
||||
extern "C" void func_01ffe6c4(Actor **, ActorRef, VecFx32 *, VecFx32 *, s32, VecFx32 *, unk32);
|
||||
extern "C" void func_0200eab0(G3d_Model *, unk16, u8);
|
||||
extern "C" UnkResourceStruct2 *func_0200f05c(G3d_NameList *, char *);
|
||||
extern "C" void func_ov000_02057c98(ModelRender *param1, UnkSystem5 *param2);
|
||||
@@ -330,7 +330,7 @@ void ActorShotArrow::func_ov031_020f1b04() {
|
||||
}
|
||||
|
||||
if (!this->func_ov017_020beeec(0x0)) {
|
||||
stack.mUnk_0C = 0;
|
||||
stack.mUnk_0C = NULL;
|
||||
VecFx32 *mPos = &this->mPos;
|
||||
func_01ffe6c4(&stack.mUnk_0C, this->mRef, mPos, &this->mPrevPos, (s16) this->mUnk_44, mPos, 0);
|
||||
|
||||
@@ -846,14 +846,13 @@ void ActorShotArrow::func_ov031_020f2cac(VecFx32 *param1, bool param2) {
|
||||
|
||||
// non-matching
|
||||
void ActorShotArrow::func_ov031_020f2ef0() {
|
||||
unk32 value;
|
||||
Actor *value = NULL;
|
||||
ActorShotArrow_178 *unk_178;
|
||||
|
||||
value = 0;
|
||||
unk_178 = &this->mUnk_178;
|
||||
func_01ffe6c4(&value, this->mRef.Get32(), &this->mPos, &this->mVel, (s16) this->mUnk_44, &this->mPos, 0);
|
||||
|
||||
this->mUnk_46 = (s16) (func_ov000_0207df88(&value, this->mUnk_30, 0x3) | func_ov000_0207e294(this->mUnk_30));
|
||||
this->mUnk_46 = (s16) (value->func_ov000_0207df88(this->mUnk_30, 0x3) | func_ov000_0207e294(this->mUnk_30));
|
||||
}
|
||||
|
||||
void ActorShotArrow::func_ov031_020f2f5c(VecFx32 *param1) {
|
||||
@@ -990,7 +989,7 @@ bool ActorShotArrow_178::vfunc_08(const UnkStruct_ov031_020f3310 *param1) {
|
||||
}
|
||||
|
||||
// non-matching
|
||||
bool ActorShotArrow_178::vfunc_0C() {}
|
||||
bool ActorShotArrow_178::vfunc_0C(const UnkStruct_ov031_020e54d4 *param1, unk32 param2) {}
|
||||
|
||||
ActorShotArrow_194::ActorShotArrow_194(ActorShotArrow *param1) {
|
||||
this->mUnk_2C = param1;
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#include "Actor/ActorUnkITBM.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
|
||||
DECL_PROFILE(ActorProfileUnkITBM);
|
||||
|
||||
Actor *ActorProfileUnkITBM::Create() {
|
||||
return new(HeapIndex_2) ActorUnkITBM();
|
||||
}
|
||||
|
||||
ActorProfileUnkITBM::ActorProfileUnkITBM() :
|
||||
ActorProfile(ActorId_ITBM) {}
|
||||
|
||||
ActorUnkITBM::ActorUnkITBM() {}
|
||||
|
||||
void ActorUnkITBM::func_ov031_020e45fc(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e4760(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e4774(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e4788(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e48d0(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e4994(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e49b0(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e4a20(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e5034(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e5220(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e52a0(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e5354(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e53c8(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e53e4(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e5400(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e544c(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e5488(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e54a4(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e54d4(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e5704(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e5710(void) {}
|
||||
void ActorUnkITBM::func_ov031_020e572c(void) {}
|
||||
|
||||
ActorUnkITBM::~ActorUnkITBM() {}
|
||||
ActorProfileUnkITBM::~ActorProfileUnkITBM() {}
|
||||
Reference in New Issue
Block a user