fn_1_57B4
This commit is contained in:
parent
f1a6f5ef3c
commit
72d0807af1
3 changed files with 92 additions and 6 deletions
|
|
@ -67,9 +67,12 @@ typedef void (*m440Func5)(omObjData*, unkStruct5*, Mtx*);
|
|||
typedef void (*m440Func6)(struct _unkStruct6*);
|
||||
|
||||
typedef struct _unkStruct8 {
|
||||
char unk0[0x7C];
|
||||
s16 unk0[3][4];
|
||||
s16 unk18[3];
|
||||
s16 unk1E;
|
||||
char unk20[0x5C];
|
||||
Vec unk7C;
|
||||
char unk88[0xC];
|
||||
Vec unk88;
|
||||
Vec unk94;
|
||||
Vec unkA0;
|
||||
Vec unkAC;
|
||||
|
|
@ -82,7 +85,10 @@ typedef struct _unkStruct6 {
|
|||
u16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
char unk8[0x18];
|
||||
u32 unk8;
|
||||
Vec* unkC;
|
||||
Vec* unk10;
|
||||
char unk14[0xC];
|
||||
s32 unk20;
|
||||
unkStruct8* unk24;
|
||||
char unk28[0x10];
|
||||
|
|
@ -184,5 +190,6 @@ extern u16 fn_1_4EA8(u16);
|
|||
extern void fn_1_4EEC(u16, u16);
|
||||
extern void fn_1_4F34(unkStruct6*);
|
||||
extern void fn_1_5010(unkStruct6*, Vec*, f32);
|
||||
extern void fn_1_57B4(unkStruct6*);
|
||||
// ...
|
||||
extern f32 fn_1_93C0(f32, f32, f32);
|
||||
|
|
@ -214,7 +214,7 @@ void fn_1_DEC(omObjData *object)
|
|||
{
|
||||
fn_1_5A8(object);
|
||||
if (!WipeStatGet()) {
|
||||
fn_1_806C();
|
||||
();
|
||||
fn_1_3484();
|
||||
fn_1_31F8();
|
||||
MGSeqKillAll();
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@
|
|||
#include "game/sprite.h"
|
||||
|
||||
// prototypes
|
||||
void fn_1_5010(unkStruct6*, Vec*, f32);
|
||||
void fn_1_57B4(unkStruct6*);
|
||||
void fn_1_5C2C(s16, HsfObject*, unkStruct6*, s32);
|
||||
f32 fn_1_93C0(f32, f32, f32);
|
||||
|
|
@ -1188,3 +1187,83 @@ void fn_1_5010(unkStruct6* arg0, Vec* arg1, f32 arg8) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_57B4(unkStruct6* arg0) {
|
||||
Mtx sp14;
|
||||
Vec sp8;
|
||||
s16 var_r29;
|
||||
Vec* temp_r26;
|
||||
s32 var_r27;
|
||||
s32 var_r28;
|
||||
unkStruct8* var_r31;
|
||||
|
||||
var_r31 = arg0->unk24;
|
||||
temp_r26 = arg0->unk10;
|
||||
|
||||
for (var_r27 = 0; var_r27 < arg0->unk20; var_r27++, var_r31++) {
|
||||
var_r31->unkAC.y = (var_r31->unkAC.y - var_r31->unkC4.y);
|
||||
var_r31->unk94.x = (var_r31->unk94.x + var_r31->unkAC.x);
|
||||
var_r31->unk94.y = (var_r31->unk94.y + var_r31->unkAC.y);
|
||||
var_r31->unk94.z = (var_r31->unk94.z + var_r31->unkAC.z);
|
||||
var_r31->unkA0.x = (var_r31->unkA0.x + var_r31->unkB8.x);
|
||||
var_r31->unkA0.y = (var_r31->unkA0.y + var_r31->unkB8.y);
|
||||
var_r31->unkA0.z = (var_r31->unkA0.z + var_r31->unkB8.z);
|
||||
if ((var_r31->unk94.x < -500.0f) || (var_r31->unk94.x > 500.0f)) {
|
||||
var_r31->unkAC.x = (0.5f * -var_r31->unkAC.x);
|
||||
var_r31->unkB8.x = (0.5f * -var_r31->unkB8.x);
|
||||
}
|
||||
if (var_r31->unk94.z < -500.0f) {
|
||||
var_r31->unkAC.z = (0.5f * -var_r31->unkAC.z);
|
||||
var_r31->unkB8.z = (0.5f * -var_r31->unkB8.z);
|
||||
}
|
||||
if ((var_r31->unk7C.y + var_r31->unk94.y) < -250.0f) {
|
||||
if (var_r31->unkAC.y > -2.0f) {
|
||||
var_r31->unk94.y = (-250.0f - var_r31->unk7C.y);
|
||||
var_r31->unkAC.x = 0.0f;
|
||||
var_r31->unkAC.y = 0.0f;
|
||||
var_r31->unkAC.z = 0.0f;
|
||||
var_r31->unkB8.x = 0.0f;
|
||||
var_r31->unkB8.z = 0.0f;
|
||||
} else {
|
||||
var_r31->unkAC.x *= 0.5f;
|
||||
var_r31->unkAC.y = -(0.3f * var_r31->unkAC.y);
|
||||
var_r31->unkAC.z *= 0.5f;
|
||||
var_r31->unkB8.x *= 0.5f;
|
||||
var_r31->unkB8.z *= 0.5f;
|
||||
}
|
||||
}
|
||||
PSMTXScale(sp14, var_r31->unk88.x, var_r31->unk88.y, var_r31->unk88.z);
|
||||
mtxTransCat(sp14, -var_r31->unk7C.x, -var_r31->unk7C.y, -var_r31->unk7C.z);
|
||||
mtxRotCat(sp14, var_r31->unkA0.x, var_r31->unkA0.y, var_r31->unkA0.z);
|
||||
mtxTransCat(sp14, var_r31->unk94.x + var_r31->unk7C.x, var_r31->unk94.y + var_r31->unk7C.y, var_r31->unk94.z + var_r31->unk7C.z);
|
||||
|
||||
for (var_r28 = 0; var_r28 < 3; var_r28++) {
|
||||
if ((arg0->unk2 & 1) != 0) {
|
||||
var_r29 = var_r31->unk0[var_r28][0];
|
||||
} else {
|
||||
var_r29 = var_r31->unk18[var_r28];
|
||||
}
|
||||
PSMTXMultVec(sp14, &temp_r26[var_r29], &sp8);
|
||||
arg0->unkC[var_r29].x = sp8.x;
|
||||
arg0->unkC[var_r29].y = sp8.y;
|
||||
arg0->unkC[var_r29].z = sp8.z;
|
||||
}
|
||||
if ((arg0->unk2 & 2) != 0) {
|
||||
var_r29 = var_r31->unk1E;
|
||||
PSMTXMultVec(sp14, &temp_r26[var_r29], &sp8);
|
||||
arg0->unkC[var_r29].x = sp8.x;
|
||||
arg0->unkC[var_r29].y = sp8.y;
|
||||
arg0->unkC[var_r29].z = sp8.z;
|
||||
}
|
||||
}
|
||||
if ((arg0->unk2 & 4) != 0) {
|
||||
if (++arg0->unk3E > 0x50) {
|
||||
arg0->unk3C = ((arg0->unk3C - 10) < 0) ? 0 : arg0->unk3C - 10;
|
||||
}
|
||||
}
|
||||
DCFlushRangeNoSync(arg0->unkC, arg0->unk8 * 0xC);
|
||||
}
|
||||
|
||||
static const GXColor lbl_1_rodata_148 = {
|
||||
0xFF, 0xFF, 0xFF, 0xFF
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue