mirror of
https://github.com/HarbourMasters/Starship.git
synced 2025-02-03 08:43:56 +03:00
fix func_i3_801AE168 NON_MATCHING
This commit is contained in:
parent
c289b5d213
commit
8754a483f2
@ -1699,13 +1699,11 @@ void func_i3_801ADF7C(f32 xPos, f32 yPos, f32 zPos, f32 xRot, f32 yRot, f32 zRot
|
|||||||
}
|
}
|
||||||
|
|
||||||
// OBJ_ACTOR_255 draw
|
// OBJ_ACTOR_255 draw
|
||||||
#ifdef NON_MATCHING
|
|
||||||
// float calculation acts oddly. seems to depend on how many references there are to static vars.
|
|
||||||
void func_i3_801AE168(Actor* actor) {
|
void func_i3_801AE168(Actor* actor) {
|
||||||
|
s32 i;
|
||||||
f32 xz;
|
f32 xz;
|
||||||
f32 yRot;
|
f32 yRot;
|
||||||
f32 xRot;
|
f32 xRot;
|
||||||
s32 i;
|
|
||||||
s32 index;
|
s32 index;
|
||||||
|
|
||||||
Matrix_Pop(&gGfxMatrix);
|
Matrix_Pop(&gGfxMatrix);
|
||||||
@ -1715,30 +1713,34 @@ void func_i3_801AE168(Actor* actor) {
|
|||||||
if ((actor->iwork[1] != 10) && (i == 0)) {
|
if ((actor->iwork[1] != 10) && (i == 0)) {
|
||||||
i = 1;
|
i = 1;
|
||||||
}
|
}
|
||||||
index = actor->iwork[0] * 50 + actor->unk_04E - D_i3_801BFB64[actor->iwork[1]];
|
|
||||||
if (index < actor->iwork[0] * 50) {
|
index = ((actor->iwork[0] * 50) + actor->unk_04E) - D_i3_801BFB64[i];
|
||||||
|
|
||||||
|
if (index < (actor->iwork[0] * 50)) {
|
||||||
if (index > 0) {
|
if (index > 0) {
|
||||||
index -= actor->iwork[0] * 50;
|
index -= actor->iwork[0] * 50;
|
||||||
}
|
}
|
||||||
index = index + (actor->iwork[0] + 1) * 50;
|
index = index + ((actor->iwork[0] + 1) * 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
D_i3_801C27C0 = &D_i3_801C27C8[index];
|
D_i3_801C27C0 = &D_i3_801C27C8[index];
|
||||||
|
|
||||||
xRot = D_i3_801C27C0->rot.x;
|
xRot = D_i3_801C27C0->rot.x;
|
||||||
yRot = D_i3_801C27C0->rot.y;
|
yRot = D_i3_801C27C0->rot.y;
|
||||||
|
|
||||||
if (i >= 2) {
|
if (i >= 2) {
|
||||||
yRot = RAD_TO_DEG(Math_Atan2F(gPlayer[0].camEye.x - D_i3_801C27C0->pos.x,
|
yRot = RAD_TO_DEG(Math_Atan2F(gPlayer[0].camEye.x - D_i3_801C27C0->pos.x,
|
||||||
gPlayer[0].camEye.z - (D_i3_801C27C0->pos.z + D_80177D20)));
|
gPlayer[0].camEye.z - (D_i3_801C27C0->pos.z + D_80177D20)));
|
||||||
xz = sqrtf(SQ(gPlayer[0].camEye.x - D_i3_801C27C0->pos.x) +
|
xz = sqrtf(((gPlayer[0].camEye.z - (D_i3_801C27C0->pos.z + D_80177D20)) *
|
||||||
SQ(gPlayer[0].camEye.z - (D_i3_801C27C0->pos.z + D_80177D20)));
|
(gPlayer[0].camEye.z - (D_i3_801C27C0->pos.z + D_80177D20))) +
|
||||||
|
((gPlayer[0].camEye.x - D_i3_801C27C0->pos.x) * (gPlayer[0].camEye.x - D_i3_801C27C0->pos.x)));
|
||||||
xRot = RAD_TO_DEG(-Math_Atan2F(gPlayer[0].camEye.y - D_i3_801C27C0->pos.y, xz));
|
xRot = RAD_TO_DEG(-Math_Atan2F(gPlayer[0].camEye.y - D_i3_801C27C0->pos.y, xz));
|
||||||
}
|
}
|
||||||
|
|
||||||
func_i3_801ADF7C(D_i3_801C27C0->pos.x, D_i3_801C27C0->pos.y, D_i3_801C27C0->pos.z, xRot, yRot,
|
func_i3_801ADF7C(D_i3_801C27C0->pos.x, D_i3_801C27C0->pos.y, D_i3_801C27C0->pos.z, xRot, yRot,
|
||||||
D_i3_801C27C0->rot.z, D_i3_801BFB90[i], actor->timer_0C6 & 1, actor->scale, i);
|
D_i3_801C27C0->rot.z, D_i3_801BFB90[i], actor->timer_0C6 & 1, actor->scale, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i3/fox_aq/func_i3_801AE168.s")
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void func_i3_801AE3AC(Actor* actor) {
|
void func_i3_801AE3AC(Actor* actor) {
|
||||||
actor->fwork[1] = 1.0f;
|
actor->fwork[1] = 1.0f;
|
||||||
|
Loading…
Reference in New Issue
Block a user