mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
Nonmatchings + cleanup
This commit is contained in:
@@ -190,27 +190,27 @@ void func_80A8146C(ObjMine* this, s16* arg1, s16* arg2) {
|
||||
}
|
||||
}
|
||||
|
||||
#define NON_MATCHING
|
||||
#ifdef NON_MATCHING
|
||||
// stack, 1 var needs to go without changing code gen
|
||||
void func_80A81544(ObjMine* this, Vec3f* arg1) {
|
||||
ColliderJntSphElement* element = &this->collider.elements[0];
|
||||
Vec3s* sphere = &element->dim.worldSphere.center;
|
||||
Actor* temp_v1 = this->collider.base.ac;
|
||||
Actor* ac = this->collider.base.ac;
|
||||
Vec3f sp20;
|
||||
|
||||
if ((element->info.acHitInfo->toucher.dmgFlags & 0x13820)) {
|
||||
if ((this->collider.elements[0].info.acHitInfo->toucher.dmgFlags & 0x13820)) {
|
||||
Matrix_Push();
|
||||
Matrix_RotateYS(temp_v1->shape.rot.y, MTXMODE_NEW);
|
||||
Matrix_RotateXS(temp_v1->shape.rot.x, MTXMODE_APPLY);
|
||||
Matrix_RotateYS(ac->shape.rot.y, MTXMODE_NEW);
|
||||
Matrix_RotateXS(ac->shape.rot.x, MTXMODE_APPLY);
|
||||
Matrix_MultVecZ(1.0f, arg1);
|
||||
Matrix_Pop();
|
||||
} else {
|
||||
Vec3f sp20;
|
||||
Sphere16* sphere = &this->collider.elements[0].dim.worldSphere;
|
||||
|
||||
sp20.x = sphere->x - temp_v1->world.pos.x;
|
||||
sp20.y = sphere->y - temp_v1->world.pos.y;
|
||||
sp20.z = sphere->z - temp_v1->world.pos.z;
|
||||
sp20.x = sphere->center.x - ac->world.pos.x;
|
||||
sp20.y = sphere->center.y - ac->world.pos.y;
|
||||
sp20.z = sphere->center.z - ac->world.pos.z;
|
||||
if (!func_80A8120C(&sp20, arg1)) {
|
||||
Math_Vec3f_Copy(arg1, D_80A845D0);
|
||||
Math_Vec3f_Copy(arg1, &D_80A845D0[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -218,6 +218,7 @@ void func_80A81544(ObjMine* this, Vec3f* arg1) {
|
||||
void func_80A81544(ObjMine* this, Vec3f* arg1);
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Mine/func_80A81544.s")
|
||||
#endif
|
||||
#undef NON_MATCHING
|
||||
|
||||
void func_80A81640(ObjMine* this) {
|
||||
}
|
||||
@@ -369,7 +370,7 @@ void func_80A81B7C(ObjMine* this, s32 arg1) {
|
||||
ptr->unk_00.x = 0.9f;
|
||||
ptr->unk_18.y = 0.003f;
|
||||
|
||||
*(s16*)((u8*)ptr + 0x20) = (u32)Rand_Next() >> 0x13;
|
||||
*(s16*)((u8*)ptr + 0x20) = Rand_Next() >> 0x13;
|
||||
ptr->unk_24.x = -0.0002f;
|
||||
ptr->unk_30 = -0.0002f;
|
||||
|
||||
@@ -637,69 +638,58 @@ void func_80A82F98(ObjMine* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80A82FA8(ObjMine* this) {
|
||||
this->actor.flags |= 0x10;
|
||||
this->actor.flags |= ACTOR_FLAG_10;
|
||||
this->actionFunc = func_80A82FC8;
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// stack
|
||||
void func_80A82FC8(ObjMine* this, PlayState* play) {
|
||||
f32 phi_f0;
|
||||
Actor* thisx = &this->actor;
|
||||
Vec3f spA0;
|
||||
f32 sp9C;
|
||||
s32 pad;
|
||||
f32 phi_f12;
|
||||
f32 speed;
|
||||
f32 step;
|
||||
f32 target;
|
||||
s32 sp90;
|
||||
Vec3f sp84;
|
||||
Vec3f sp78;
|
||||
MtxF sp38;
|
||||
|
||||
Math_Vec3s_ToVec3f(&spA0, &this->unk_1B4[this->unk_1B0 + 1]);
|
||||
Math_Vec3f_Diff(&spA0, &this->actor.world.pos, &this->actor.velocity);
|
||||
|
||||
sp9C = Math3D_Vec3fMagnitude(&this->actor.velocity);
|
||||
if ((sp9C < (this->unk_1A8 * 8.0f)) && (this->unk_1A8 > 2.0f)) {
|
||||
phi_f0 = ((this->unk_1A8 - 2.0f) * 0.1f) + 2.0f;
|
||||
phi_f12 = this->unk_1A8 * 0.03f;
|
||||
Math_Vec3f_Diff(&spA0, &thisx->world.pos, &thisx->velocity);
|
||||
speed = Math3D_Vec3fMagnitude(&thisx->velocity);
|
||||
if ((speed < (this->unk_1A8 * 8.0f)) && (this->unk_1A8 > 2.0f)) {
|
||||
target = ((this->unk_1A8 - 2.0f) * 0.1f) + 2.0f;
|
||||
step = this->unk_1A8 * 0.03f;
|
||||
} else {
|
||||
phi_f0 = this->unk_1A8;
|
||||
phi_f12 = this->unk_1A8 * 0.16f;
|
||||
target = this->unk_1A8;
|
||||
step = this->unk_1A8 * 0.16f;
|
||||
}
|
||||
|
||||
Math_StepToF(&this->actor.speedXZ, phi_f0, phi_f12);
|
||||
|
||||
if ((this->actor.speedXZ + 0.05f) < sp9C) {
|
||||
Math_Vec3f_Scale(&this->actor.velocity, this->actor.speedXZ / sp9C);
|
||||
this->actor.world.pos.x += this->actor.velocity.x;
|
||||
this->actor.world.pos.y += this->actor.velocity.y;
|
||||
this->actor.world.pos.z += this->actor.velocity.z;
|
||||
Math_StepToF(&thisx->speedXZ, target, step);
|
||||
if ((thisx->speedXZ + 0.05f) < speed) {
|
||||
Math_Vec3f_Scale(&thisx->velocity, thisx->speedXZ / speed);
|
||||
thisx->world.pos.x += thisx->velocity.x;
|
||||
thisx->world.pos.y += thisx->velocity.y;
|
||||
thisx->world.pos.z += thisx->velocity.z;
|
||||
} else {
|
||||
this->actor.speedXZ *= 0.4f;
|
||||
thisx->speedXZ *= 0.4f;
|
||||
this->unk_1B0++;
|
||||
if (this->unk_1B0 >= this->unk_1AC) {
|
||||
this->unk_1B0 = 0;
|
||||
}
|
||||
func_80A811D0(this, this->unk_1B0);
|
||||
}
|
||||
|
||||
this->actor.floorHeight = BgCheck_EntityRaycastFloor5(&play->colCtx, &this->actor.floorPoly, &sp90,
|
||||
&this->actor, &this->actor.world.pos);
|
||||
|
||||
if (this->actor.flags & 0x40) {
|
||||
Math3D_CrossProduct(&D_80A845D0[0], &this->actor.velocity, &sp78);
|
||||
thisx->floorHeight = BgCheck_EntityRaycastFloor5(&play->colCtx, &thisx->floorPoly, &sp90, thisx, &thisx->world.pos);
|
||||
if (thisx->flags & 0x40) {
|
||||
Math3D_CrossProduct(&D_80A845D0[0], &thisx->velocity, &sp78);
|
||||
if (func_80A8120C(&sp78, &sp84)) {
|
||||
Matrix_RotateAxisF(this->actor.speedXZ * 0.03125f, &sp84, MTXMODE_NEW);
|
||||
Matrix_RotateYS(this->actor.shape.rot.y, MTXMODE_APPLY);
|
||||
Matrix_RotateXS(this->actor.shape.rot.x, MTXMODE_APPLY);
|
||||
Matrix_RotateZS(this->actor.shape.rot.z, MTXMODE_APPLY);
|
||||
Matrix_RotateAxisF(thisx->speedXZ * 0.03125f, &sp84, MTXMODE_NEW);
|
||||
Matrix_RotateYS(thisx->shape.rot.y, MTXMODE_APPLY);
|
||||
Matrix_RotateXS(thisx->shape.rot.x, MTXMODE_APPLY);
|
||||
Matrix_RotateZS(thisx->shape.rot.z, MTXMODE_APPLY);
|
||||
Matrix_Get(&sp38);
|
||||
Matrix_MtxFToYXZRot(&sp38, &this->actor.shape.rot, 0);
|
||||
Matrix_MtxFToYXZRot(&sp38, &thisx->shape.rot, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Mine/func_80A82FC8.s")
|
||||
#endif
|
||||
|
||||
void func_80A83214(ObjMine* this) {
|
||||
this->actor.flags |= 0x10;
|
||||
@@ -769,9 +759,9 @@ void func_80A832D0(ObjMine* this, PlayState* play) {
|
||||
Math_StepToF(&unkStruct->unk_48, 0.0f, 0.02f);
|
||||
}
|
||||
|
||||
if ((u32)Rand_Next() >> 0x1B == 0) {
|
||||
if ((Rand_Next() >> 0x1B) == 0) {
|
||||
unkStruct->unk_50 = Rand_ZeroOne() * unkStruct->unk_58;
|
||||
unkStruct->unk_54 = (u32)Rand_Next() >> 0x10;
|
||||
unkStruct->unk_54 = Rand_Next() >> 0x10;
|
||||
}
|
||||
|
||||
sp90 = Math_SinS(unkStruct->unk_54) * unkStruct->unk_50;
|
||||
@@ -891,11 +881,11 @@ void func_80A83B28(ObjMine* this, PlayState* play) {
|
||||
ptr->unk_24.x = -0.0002f;
|
||||
ptr->unk_30 = -0.0002f;
|
||||
ptr->unk_18.y = 0.003f;
|
||||
if (!((u32)Rand_Next() >> 0x1B)) {
|
||||
rand = (u32)Rand_Next() >> 0x10;
|
||||
if ((Rand_Next() >> 0x1B) == 0) {
|
||||
rand = Rand_Next() >> 0x10;
|
||||
ptr->unk_0C.z = Math_SinS(rand) * 1.8f * ptr->unk_18.y;
|
||||
ptr->unk_18.x = Math_CosS(rand) * 0.2f * ptr->unk_18.y;
|
||||
*(s16*)((u8*)ptr + 0x20) = (u32)Rand_Next() >> 0x13;
|
||||
*(s16*)((u8*)ptr + 0x20) = Rand_Next() >> 0x13;
|
||||
}
|
||||
|
||||
func_80A82C28(this, play);
|
||||
|
||||
Reference in New Issue
Block a user