fn_1_57B4

This commit is contained in:
CreateSource 2024-06-16 15:32:54 -04:00
parent f1a6f5ef3c
commit 72d0807af1
3 changed files with 92 additions and 6 deletions

View file

@ -67,9 +67,12 @@ typedef void (*m440Func5)(omObjData*, unkStruct5*, Mtx*);
typedef void (*m440Func6)(struct _unkStruct6*); typedef void (*m440Func6)(struct _unkStruct6*);
typedef struct _unkStruct8 { typedef struct _unkStruct8 {
char unk0[0x7C]; s16 unk0[3][4];
s16 unk18[3];
s16 unk1E;
char unk20[0x5C];
Vec unk7C; Vec unk7C;
char unk88[0xC]; Vec unk88;
Vec unk94; Vec unk94;
Vec unkA0; Vec unkA0;
Vec unkAC; Vec unkAC;
@ -82,7 +85,10 @@ typedef struct _unkStruct6 {
u16 unk2; u16 unk2;
s16 unk4; s16 unk4;
s16 unk6; s16 unk6;
char unk8[0x18]; u32 unk8;
Vec* unkC;
Vec* unk10;
char unk14[0xC];
s32 unk20; s32 unk20;
unkStruct8* unk24; unkStruct8* unk24;
char unk28[0x10]; char unk28[0x10];
@ -184,5 +190,6 @@ extern u16 fn_1_4EA8(u16);
extern void fn_1_4EEC(u16, u16); extern void fn_1_4EEC(u16, u16);
extern void fn_1_4F34(unkStruct6*); extern void fn_1_4F34(unkStruct6*);
extern void fn_1_5010(unkStruct6*, Vec*, f32); extern void fn_1_5010(unkStruct6*, Vec*, f32);
extern void fn_1_57B4(unkStruct6*);
// ... // ...
extern f32 fn_1_93C0(f32, f32, f32); extern f32 fn_1_93C0(f32, f32, f32);

View file

@ -214,7 +214,7 @@ void fn_1_DEC(omObjData *object)
{ {
fn_1_5A8(object); fn_1_5A8(object);
if (!WipeStatGet()) { if (!WipeStatGet()) {
fn_1_806C(); ();
fn_1_3484(); fn_1_3484();
fn_1_31F8(); fn_1_31F8();
MGSeqKillAll(); MGSeqKillAll();

View file

@ -13,7 +13,6 @@
#include "game/sprite.h" #include "game/sprite.h"
// prototypes // prototypes
void fn_1_5010(unkStruct6*, Vec*, f32);
void fn_1_57B4(unkStruct6*); void fn_1_57B4(unkStruct6*);
void fn_1_5C2C(s16, HsfObject*, unkStruct6*, s32); void fn_1_5C2C(s16, HsfObject*, unkStruct6*, s32);
f32 fn_1_93C0(f32, f32, f32); f32 fn_1_93C0(f32, f32, f32);
@ -1187,4 +1186,84 @@ void fn_1_5010(unkStruct6* arg0, Vec* arg1, f32 arg8) {
var_r31->unkB8.z = (120.0f * (-sp14.x * ABS(sp14.y))); var_r31->unkB8.z = (120.0f * (-sp14.x * ABS(sp14.y)));
} }
} }
} }
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
};