7747 lines
253 KiB
C
7747 lines
253 KiB
C
#include "REL/executor.h"
|
|
#include "datadir_enum.h"
|
|
#include "dolphin/gx/GXEnum.h"
|
|
#include "dolphin/gx/GXStruct.h"
|
|
#include "dolphin/gx/GXVert.h"
|
|
#include "dolphin/mtx/GeoTypes.h"
|
|
#include "dolphin/pad.h"
|
|
#include "dolphin/types.h"
|
|
#include "game/chrman.h"
|
|
#include "game/data.h"
|
|
#include "game/frand.h"
|
|
#include "game/memory.h"
|
|
#include "game/minigame_seq.h"
|
|
#include "game/object.h"
|
|
#include "game/objsub.h"
|
|
#include "game/wipe.h"
|
|
|
|
#include "game/gamework.h"
|
|
#include "game/gamework_data.h"
|
|
|
|
#include "game/mapspace.h"
|
|
#include "game/pad.h"
|
|
#include "game/printfunc.h"
|
|
|
|
#include "game/hsfanim.h"
|
|
#include "game/hsfdraw.h"
|
|
#include "game/hsfman.h"
|
|
#include "game/hsfmotion.h"
|
|
|
|
#include "game/esprite.h"
|
|
#include "game/sprite.h"
|
|
|
|
#include "ext_math.h"
|
|
|
|
#include "game/window.h"
|
|
#include "string.h"
|
|
#include "version.h"
|
|
|
|
#ifndef __MWERKS__
|
|
#include "game/audio.h"
|
|
#include "game/hsfex.h"
|
|
|
|
void HuSysVWaitSet(s16 vcount);
|
|
#endif
|
|
|
|
#undef ABS
|
|
#define ABS(x) ((0 > (x)) ? -(x) : (x))
|
|
|
|
typedef struct unk_bss_358_struct {
|
|
/* 0x00 */ u16 unk00;
|
|
/* 0x02 */ s16 unk02;
|
|
/* 0x04 */ struct unk_bss_358_struct *unk04;
|
|
/* 0x08 */ struct unk_bss_358_struct *unk08;
|
|
} UnkBss358Struct; // Size 0xC
|
|
|
|
typedef struct unk_bss_340_struct {
|
|
/* 0x00 */ HsfanimStruct00 *unk00;
|
|
/* 0x04 */ s32 *unk04;
|
|
/* 0x08 */ s32 unk08;
|
|
/* 0x0C */ s32 unk0C;
|
|
/* 0x10 */ struct unk_bss_340_struct *unk10;
|
|
/* 0x14 */ struct unk_bss_340_struct *unk14;
|
|
} UnkBss340Struct; // Size 0x18
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u32 unk00;
|
|
/* 0x04 */ s16 unk04;
|
|
} UnkBss1B0Struct; // Size 8
|
|
|
|
UnkBss358Struct lbl_1_bss_358;
|
|
UnkBss340Struct lbl_1_bss_340;
|
|
Process *lbl_1_bss_33C;
|
|
Vec lbl_1_bss_330;
|
|
Vec lbl_1_bss_324;
|
|
Vec lbl_1_bss_318;
|
|
Vec lbl_1_bss_30C;
|
|
u32 lbl_1_bss_308;
|
|
s32 lbl_1_bss_304;
|
|
u32 lbl_1_bss_300;
|
|
s16 lbl_1_bss_2FE;
|
|
s16 lbl_1_bss_2FC;
|
|
s32 lbl_1_bss_2F8;
|
|
s32 lbl_1_bss_2F4;
|
|
float lbl_1_bss_2F0;
|
|
s32 lbl_1_bss_2B0[16];
|
|
UnkBss1B0Struct lbl_1_bss_1B0[32];
|
|
|
|
void fn_1_0(void)
|
|
{
|
|
lbl_1_bss_358.unk04 = NULL;
|
|
lbl_1_bss_358.unk08 = NULL;
|
|
}
|
|
|
|
void fn_1_24(u16 arg0, s16 arg1)
|
|
{
|
|
UnkBss358Struct *temp_r31;
|
|
UnkBss358Struct *temp_r30;
|
|
UnkBss358Struct *temp_r29;
|
|
|
|
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM);
|
|
temp_r31->unk00 = arg0;
|
|
temp_r31->unk02 = arg1;
|
|
temp_r30 = &lbl_1_bss_358;
|
|
temp_r29 = temp_r30->unk08;
|
|
temp_r30->unk08 = temp_r31;
|
|
if (NULL != temp_r29) {
|
|
temp_r29->unk04 = temp_r31;
|
|
}
|
|
temp_r31->unk04 = temp_r30;
|
|
temp_r31->unk08 = temp_r29;
|
|
}
|
|
|
|
s16 fn_1_AC(s16 arg0)
|
|
{
|
|
UnkBss358Struct *var_r31;
|
|
UnkBss358Struct *temp_r29;
|
|
UnkBss358Struct *temp_r30;
|
|
s16 temp_r28;
|
|
|
|
var_r31 = lbl_1_bss_358.unk08;
|
|
while (NULL != var_r31) {
|
|
if (arg0 == var_r31->unk00) {
|
|
temp_r28 = var_r31->unk02;
|
|
temp_r29 = var_r31->unk04;
|
|
temp_r30 = var_r31->unk08;
|
|
temp_r29->unk08 = temp_r30;
|
|
if (NULL != temp_r30) {
|
|
temp_r30->unk04 = temp_r29;
|
|
}
|
|
HuMemDirectFree(var_r31);
|
|
return temp_r28;
|
|
}
|
|
var_r31 = var_r31->unk08;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
void fn_1_150(void)
|
|
{
|
|
lbl_1_bss_340.unk10 = NULL;
|
|
lbl_1_bss_340.unk14 = NULL;
|
|
}
|
|
|
|
void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6)
|
|
{
|
|
UnkBss340Struct *temp_r27;
|
|
UnkBss340Struct *var_r31;
|
|
UnkBss340Struct *temp_r28;
|
|
s32 i;
|
|
|
|
var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r31), MEMORY_DEFAULT_NUM);
|
|
var_r31->unk00 = arg1;
|
|
var_r31->unk08 = arg3;
|
|
var_r31->unk0C = arg4;
|
|
var_r31->unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, arg4 * sizeof(*var_r31->unk04), MEMORY_DEFAULT_NUM);
|
|
for (i = 0; i < arg4; i++, arg5++) {
|
|
var_r31->unk04[i] = Hu3DParManLink(arg0, arg1);
|
|
if (var_r31->unk04[i] >= 0) {
|
|
Hu3DParManAttrReset(var_r31->unk04[i], 1);
|
|
Hu3DParManPosSet(var_r31->unk04[i], arg5->x, arg5->y, arg5->z);
|
|
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg6);
|
|
Hu3DModelLayerSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg2);
|
|
}
|
|
}
|
|
temp_r28 = &lbl_1_bss_340;
|
|
temp_r27 = temp_r28->unk14;
|
|
temp_r28->unk14 = var_r31;
|
|
if (NULL != temp_r27) {
|
|
temp_r27->unk10 = var_r31;
|
|
}
|
|
var_r31->unk10 = temp_r28;
|
|
var_r31->unk14 = temp_r27;
|
|
}
|
|
|
|
void fn_1_2D8(void)
|
|
{
|
|
UnkBss340Struct *var_r31;
|
|
UnkBss340Struct *temp_r28;
|
|
UnkBss340Struct *temp_r29;
|
|
s32 i;
|
|
|
|
var_r31 = lbl_1_bss_340.unk14;
|
|
while (NULL != var_r31) {
|
|
var_r31->unk08--;
|
|
if (var_r31->unk08 == 0) {
|
|
for (i = 0; i < var_r31->unk0C; i++) {
|
|
if (var_r31->unk04[i] >= 0) {
|
|
Hu3DParManAttrSet(var_r31->unk04[i], 1);
|
|
}
|
|
}
|
|
}
|
|
temp_r28 = var_r31->unk10;
|
|
temp_r29 = var_r31->unk14;
|
|
if (-var_r31->unk00->unk00 > var_r31->unk08) {
|
|
for (i = 0; i < var_r31->unk0C; i++) {
|
|
if (var_r31->unk04[i] >= 0) {
|
|
Hu3DParManKill(var_r31->unk04[i]);
|
|
}
|
|
}
|
|
temp_r28->unk14 = temp_r29;
|
|
if (NULL != temp_r29) {
|
|
temp_r29->unk10 = temp_r28;
|
|
}
|
|
HuMemDirectFree(var_r31->unk04);
|
|
HuMemDirectFree(var_r31);
|
|
}
|
|
var_r31 = temp_r29;
|
|
}
|
|
}
|
|
|
|
void fn_1_414(void)
|
|
{
|
|
s32 i;
|
|
|
|
for (i = 0; i < 32; i++) {
|
|
lbl_1_bss_1B0[i].unk00 = 0;
|
|
lbl_1_bss_1B0[i].unk04 = -1;
|
|
}
|
|
}
|
|
|
|
s16 fn_1_46C(s32 arg0)
|
|
{
|
|
s32 i;
|
|
|
|
for (i = 0; i < 32; i++) {
|
|
if (arg0 == lbl_1_bss_1B0[i].unk00) {
|
|
return Hu3DModelLink(lbl_1_bss_1B0[i].unk04);
|
|
}
|
|
}
|
|
for (i = 0; i < 32; i++) {
|
|
if (lbl_1_bss_1B0[i].unk00 == 0) {
|
|
lbl_1_bss_1B0[i].unk00 = arg0;
|
|
lbl_1_bss_1B0[i].unk04 = Hu3DModelCreateFile(arg0);
|
|
return lbl_1_bss_1B0[i].unk04;
|
|
}
|
|
}
|
|
return Hu3DModelCreateFile(arg0);
|
|
}
|
|
|
|
void fn_1_580(s32 *arg0, s32 arg1, s32 arg2)
|
|
{
|
|
s32 var_r30;
|
|
|
|
espBankSet(arg0[arg1 + 1], 10);
|
|
espBankSet(arg0[arg1 + 4], 11);
|
|
if (600 * REFRESH_RATE <= arg2) {
|
|
arg2 = 600 * REFRESH_RATE - 1;
|
|
}
|
|
var_r30 = arg2 / (60 * REFRESH_RATE);
|
|
arg2 -= var_r30 * (60 * REFRESH_RATE);
|
|
if (var_r30 > 9) {
|
|
var_r30 = 9;
|
|
}
|
|
espBankSet(arg0[arg1], var_r30);
|
|
var_r30 = arg2 / REFRESH_RATE;
|
|
arg2 -= var_r30 * REFRESH_RATE;
|
|
espBankSet(arg0[arg1 + 2], var_r30 / 10);
|
|
espBankSet(arg0[arg1 + 3], var_r30 % 10);
|
|
var_r30 = 101.5f * arg2 / REFRESH_RATE;
|
|
espBankSet(arg0[arg1 + 5], var_r30 / 10);
|
|
espBankSet(arg0[arg1 + 6], var_r30 % 10);
|
|
}
|
|
|
|
void fn_1_798(s32 arg0)
|
|
{
|
|
lbl_1_bss_2F0 = 0.0f;
|
|
lbl_1_bss_300 = lbl_1_bss_304;
|
|
GWMGRecordSet(arg0, lbl_1_bss_300);
|
|
fn_1_580(lbl_1_bss_2B0, 7, lbl_1_bss_304);
|
|
}
|
|
|
|
void fn_1_9EC(void)
|
|
{
|
|
s32 i;
|
|
|
|
for (i = 0; i < 16; i++) {
|
|
espDispOn(lbl_1_bss_2B0[i]);
|
|
}
|
|
}
|
|
|
|
void fn_1_A40(void)
|
|
{
|
|
float temp_f31;
|
|
s32 i;
|
|
|
|
if (0.0f <= lbl_1_bss_2F0) {
|
|
lbl_1_bss_2F0 += 16.0f;
|
|
temp_f31 = 1.0 + 0.2f * sind(lbl_1_bss_2F0);
|
|
for (i = 7; i <= 14; i++) {
|
|
espScaleSet(lbl_1_bss_2B0[i], temp_f31, temp_f31);
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_B4C(float arg0, s32 arg1)
|
|
{
|
|
float temp_f30;
|
|
float temp_f31;
|
|
s32 i;
|
|
|
|
temp_f31 = 288.0f;
|
|
temp_f30 = arg0;
|
|
lbl_1_bss_2B0[15] = espEntry(arg1, 0, 0);
|
|
espTPLvlSet(lbl_1_bss_2B0[15], 0.5f);
|
|
espColorSet(lbl_1_bss_2B0[15], 0, 0, 0);
|
|
espPosSet(lbl_1_bss_2B0[15], temp_f31, temp_f30);
|
|
temp_f31 = 248.0f;
|
|
temp_f30 = arg0 - 8.0f;
|
|
lbl_1_bss_2B0[14] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 55), 0, 0);
|
|
espPosSet(lbl_1_bss_2B0[14], temp_f31 - 18.0f, temp_f30);
|
|
for (i = 7; i <= 13; i++) {
|
|
lbl_1_bss_2B0[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 48), 0, 0);
|
|
espPosSet(lbl_1_bss_2B0[i], temp_f31, temp_f30);
|
|
temp_f31 += 16.0f;
|
|
}
|
|
fn_1_580(lbl_1_bss_2B0, 7, lbl_1_bss_300);
|
|
temp_f31 = 248.0f;
|
|
temp_f30 = arg0 + 8.0f;
|
|
for (i = 0; i <= 6; i++) {
|
|
lbl_1_bss_2B0[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 49), 0, 0);
|
|
espPosSet(lbl_1_bss_2B0[i], temp_f31, temp_f30);
|
|
temp_f31 += 16.0f;
|
|
}
|
|
fn_1_580(lbl_1_bss_2B0, 0, 0);
|
|
for (i = 0; i < 16; i++) {
|
|
espDrawNoSet(lbl_1_bss_2B0[i], 0);
|
|
espDispOff(lbl_1_bss_2B0[i]);
|
|
espAttrSet(lbl_1_bss_2B0[i], HUSPR_ATTR_NOANIM);
|
|
espPriSet(lbl_1_bss_2B0[i], 0x80 + i);
|
|
}
|
|
}
|
|
|
|
void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3)
|
|
{
|
|
float temp_f31;
|
|
|
|
if (1.0f < arg0) {
|
|
arg0 = 1.0f;
|
|
}
|
|
temp_f31 = sind(90.0f * arg0) * sind(90.0f * arg0);
|
|
arg3->x = arg1->x + temp_f31 * (arg2->x - arg1->x);
|
|
arg3->y = arg1->y + temp_f31 * (arg2->y - arg1->y);
|
|
arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z);
|
|
}
|
|
|
|
void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2)
|
|
{
|
|
Hu3DCameraPosSetV(1, arg0, arg1, arg2);
|
|
lbl_1_bss_330 = *arg0;
|
|
lbl_1_bss_318 = *arg2;
|
|
}
|
|
|
|
s32 fn_1_13DC(float arg0, Vec *arg1)
|
|
{
|
|
Vec sp18;
|
|
Vec spC;
|
|
|
|
fn_1_11F4(arg0, &lbl_1_bss_330, &lbl_1_bss_324, &sp18);
|
|
fn_1_11F4(arg0, &lbl_1_bss_318, &lbl_1_bss_30C, &spC);
|
|
Hu3DCameraPosSetV(1, &sp18, arg1, &spC);
|
|
if (1.0f <= arg0) {
|
|
return 1;
|
|
}
|
|
else {
|
|
lbl_1_bss_2F4 = 1;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
void fn_1_1710(float arg0, Vec *arg1)
|
|
{
|
|
Vec sp18;
|
|
Vec spC;
|
|
|
|
fn_1_11F4(arg0, &lbl_1_bss_330, &lbl_1_bss_324, &sp18);
|
|
fn_1_11F4(arg0, &lbl_1_bss_318, &lbl_1_bss_30C, &spC);
|
|
fn_1_1350(&sp18, arg1, &spC);
|
|
lbl_1_bss_2F4 = 1;
|
|
}
|
|
|
|
void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2)
|
|
{
|
|
Mtx sp1C;
|
|
Vec sp10;
|
|
float temp_f30;
|
|
float temp_f29;
|
|
float temp_f28;
|
|
float temp_f31;
|
|
CameraData *temp_r31;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 16; i++) {
|
|
if (arg1 & (1 << i)) {
|
|
break;
|
|
}
|
|
}
|
|
temp_r31 = &Hu3DCamera[i];
|
|
MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target);
|
|
MTXMultVec(sp1C, arg0, &sp10);
|
|
temp_f30 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * temp_r31->aspect;
|
|
temp_f29 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2));
|
|
temp_f28 = 0.9f * temp_r31->viewport_x;
|
|
temp_f31 = 0.9f * temp_r31->viewport_w;
|
|
arg2->x = temp_f31 / 2 + sp10.x * ((temp_f31 / 2) / -temp_f30) + temp_f28;
|
|
arg2->y = temp_r31->viewport_h / 2 + sp10.y * ((temp_r31->viewport_h / 2) / temp_f29) + temp_r31->viewport_y;
|
|
arg2->z = 0.0f;
|
|
}
|
|
|
|
void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2)
|
|
{
|
|
Mtx sp10;
|
|
|
|
Hu3DModelObjMtxGet(arg0, arg1, sp10);
|
|
arg2->x = sp10[0][3];
|
|
arg2->y = sp10[1][3];
|
|
arg2->z = sp10[2][3];
|
|
}
|
|
|
|
void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3)
|
|
{
|
|
Mtx spC;
|
|
ModelData *var_r30;
|
|
|
|
var_r30 = &Hu3DData[arg0];
|
|
Hu3DModelObjMtxGet(arg0, arg1, spC);
|
|
MTXConcat(var_r30->unk_F0, spC, spC);
|
|
if (NULL != arg3) {
|
|
MTXCopy(spC, arg3);
|
|
}
|
|
arg2->x = spC[0][3];
|
|
arg2->y = spC[1][3];
|
|
arg2->z = spC[2][3];
|
|
}
|
|
|
|
float fn_1_1E20(float arg0, float arg1, float arg2)
|
|
{
|
|
float var_f31;
|
|
float var_f30;
|
|
|
|
var_f31 = fmod(arg1 - arg0, 360.0);
|
|
if (0.0f > var_f31) {
|
|
var_f31 += 360.0f;
|
|
}
|
|
if (180.0f < var_f31) {
|
|
var_f31 -= 360.0f;
|
|
}
|
|
var_f30 = fmod(arg0 + var_f31 * arg2, 360.0);
|
|
if (0.0f > var_f30) {
|
|
var_f30 += 360.0f;
|
|
}
|
|
return var_f30;
|
|
}
|
|
|
|
void fn_1_1F24(s32 arg0)
|
|
{
|
|
lbl_1_bss_2F8 = HuAudSeqPlay((s32)arg0);
|
|
}
|
|
|
|
void fn_1_1F58(s32 arg0)
|
|
{
|
|
if (lbl_1_bss_2F8 >= 0) {
|
|
if (arg0 < 0) {
|
|
arg0 = 1000;
|
|
}
|
|
HuAudSeqFadeOut(lbl_1_bss_2F8, arg0);
|
|
}
|
|
lbl_1_bss_2F8 = -1;
|
|
}
|
|
|
|
void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3)
|
|
{
|
|
Vec sp18;
|
|
float var_f28;
|
|
s32 var_r30;
|
|
|
|
sp18.x = 0.0f;
|
|
sp18.y = 0.0f;
|
|
sp18.z = 0.0f;
|
|
sp18.x = arg2 / 4.0f;
|
|
sp18.z = -(float)arg3 / 4.0f;
|
|
var_r30 = 0;
|
|
var_f28 = VECMagXZ(&sp18);
|
|
if (0.5f <= var_f28) {
|
|
if (10.0f <= var_f28) {
|
|
sp18.x /= var_f28;
|
|
sp18.z /= var_f28;
|
|
var_f28 = 10.0f;
|
|
sp18.x = 10.0f * sp18.x;
|
|
sp18.z = 10.0f * sp18.z;
|
|
}
|
|
*arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f);
|
|
if (8.0f <= var_f28) {
|
|
var_r30 = 2;
|
|
}
|
|
else {
|
|
var_r30 = 1;
|
|
}
|
|
}
|
|
VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0);
|
|
}
|
|
|
|
typedef struct UnkData1380Struct {
|
|
/* 0x00 */ char **unk_00;
|
|
/* 0x04 */ float unk_04;
|
|
/* 0x08 */ s32 unk_08;
|
|
/* 0x0C */ s32 unk_0C;
|
|
/* 0x10 */ s32 unk_10;
|
|
/* 0x14 */ s32 unk_14;
|
|
/* 0x18 */ s32 unk_18;
|
|
/* 0x1C */ s32 unk_1C;
|
|
/* 0x20 */ s32 unk_20;
|
|
/* 0x24 */ s32 *unk_24;
|
|
/* 0x28 */ s32 *unk_28;
|
|
/* 0x2C */ s32 *unk_2C;
|
|
/* 0x30 */ Vec *unk_30;
|
|
/* 0x34 */ Vec *unk_34;
|
|
} UnkData1380Struct; /* size = 0x38 */
|
|
|
|
typedef struct UnkData1450Struct {
|
|
/* 0x00 */ char *unk_00;
|
|
/* 0x04 */ Vec unk_04;
|
|
/* 0x10 */ float unk_10;
|
|
/* 0x14 */ float unk_14;
|
|
/* 0x18 */ s32 unk_18;
|
|
/* 0x1C */ s32 unk_1C;
|
|
/* 0x20 */ s32 unk_20;
|
|
} UnkData1450Struct; /* size = 0x24 */
|
|
|
|
typedef struct UnkData5CCStruct {
|
|
/* 0x00 */ char *unk_00;
|
|
/* 0x04 */ u32 unk_04;
|
|
/* 0x08 */ s32 unk_08;
|
|
/* 0x0C */ float unk_0C;
|
|
} UnkData5CCStruct; /* size = 0x10 */
|
|
|
|
typedef struct UnkDataA0CStruct {
|
|
/* 0x00 */ s32 unk_00;
|
|
/* 0x04 */ s32 unk_04;
|
|
/* 0x08 */ s32 unk_08;
|
|
/* 0x0C */ s32 unk_0C;
|
|
/* 0x10 */ s32 unk_10;
|
|
/* 0x14 */ s32 unk_14;
|
|
/* 0x18 */ s32 *unk_18;
|
|
} UnkDataA0CStruct; /* size = 0x1C */
|
|
|
|
typedef struct UnkData94CStruct {
|
|
/* 0x00 */ s32 unk_00;
|
|
/* 0x00 */ float unk_04;
|
|
/* 0x00 */ float unk_08;
|
|
/* 0x00 */ float unk_0C;
|
|
/* 0x00 */ u32 unk_10;
|
|
} UnkData94CStruct; /* size = 0x14 */
|
|
|
|
typedef struct UnkDataA80Struct {
|
|
char *unk_00;
|
|
Vec unk_04;
|
|
s32 unk_10;
|
|
float unk_14;
|
|
Vec unk_18;
|
|
s32 unk_24;
|
|
s32 unk_28;
|
|
} UnkDataA80Struct; /* size = 0x2C */
|
|
|
|
typedef struct UnkData204Struct {
|
|
float unk_00;
|
|
s32 unk_04;
|
|
} UnkData204Struct; /* size = 0x08 */
|
|
|
|
// these are copied from m461Dll/main.c
|
|
typedef void (*PlayerOldHook)(omObjData *obj);
|
|
typedef Vec *(*PlayerOldPosHook)(omObjData *obj);
|
|
|
|
typedef struct work_playerold {
|
|
omObjData *unk_00;
|
|
PlayerOldHook unk_04;
|
|
PlayerOldPosHook unk_08;
|
|
PlayerOldHook unk_0C;
|
|
PlayerOldHook unk_10;
|
|
s32 *unk_14;
|
|
s32 unk_18;
|
|
s32 unk_1C;
|
|
s32 unk_20;
|
|
s32 unk_24;
|
|
s32 unk_28;
|
|
s32 unk_2C;
|
|
s32 unk_30;
|
|
s32 unk_34;
|
|
s32 unk_38;
|
|
s32 unk_3C;
|
|
s32 unk_40;
|
|
s32 unk_44;
|
|
s32 unk_48;
|
|
s32 unk_4C;
|
|
Vec *unk_50;
|
|
Vec unk_54;
|
|
float unk_60;
|
|
s32 unk_64;
|
|
Vec *unk_68;
|
|
Vec unk_6C;
|
|
Vec unk_78;
|
|
Vec unk_84;
|
|
Vec unk_90;
|
|
float unk_9C;
|
|
float unk_A0;
|
|
float unk_A4;
|
|
float unk_A8;
|
|
Vec unk_AC;
|
|
float unk_B8;
|
|
float unk_BC;
|
|
float unk_C0;
|
|
} WorkPlayerOld;
|
|
|
|
typedef WorkPlayerOld *(*PlayerOldFind)(int no);
|
|
|
|
typedef struct UnkM450Struct5 {
|
|
WorkPlayerOld unk_00;
|
|
UnkData94CStruct *unk_C4;
|
|
float unk_C8;
|
|
float unk_CC;
|
|
Vec unk_D0;
|
|
Vec unk_DC;
|
|
float unk_E8;
|
|
float unk_EC;
|
|
s32 unk_F0;
|
|
s32 unk_F4;
|
|
float unk_F8;
|
|
u32 unk_FC;
|
|
s32 unk_100;
|
|
s32 unk_104;
|
|
s32 unk_108;
|
|
s32 unk_10C;
|
|
s32 unk_110;
|
|
s32 unk_114;
|
|
s32 unk_118;
|
|
s32 unk_11C;
|
|
s32 unk_120;
|
|
} UnkM450Struct5; /* size = 0x124 */
|
|
|
|
typedef struct UnkM450Struct4 {
|
|
Vec unk_00;
|
|
Vec unk_0C;
|
|
Vec unk_18;
|
|
Vec unk_24;
|
|
Vec unk_30;
|
|
float unk_3C;
|
|
float unk_40;
|
|
float unk_44;
|
|
float unk_48;
|
|
float unk_4C;
|
|
float unk_50;
|
|
s32 unk_54;
|
|
s32 unk_58;
|
|
float unk_5C;
|
|
float unk_60;
|
|
Vec unk_64;
|
|
s32 unk_70;
|
|
s32 unk_74;
|
|
s32 unk_78;
|
|
s32 unk_7C;
|
|
} UnkM450Struct4; /* size = 0x80 */
|
|
|
|
typedef struct UnkM450Struct3 {
|
|
WorkPlayerOld unk_00;
|
|
UnkData204Struct *unk_C4;
|
|
Vec2f *unk_C8;
|
|
char *unk_CC;
|
|
float *unk_D0;
|
|
Vec unk_D4;
|
|
float unk_E0;
|
|
float unk_E4;
|
|
float unk_E8;
|
|
float unk_EC;
|
|
float unk_F0;
|
|
float unk_F4;
|
|
s32 unk_F8;
|
|
s32 unk_FC;
|
|
float unk_100;
|
|
float unk_104;
|
|
float unk_108;
|
|
s32 unk_10C;
|
|
s32 unk_110;
|
|
Vec unk_114;
|
|
Vec unk_120;
|
|
s32 unk_12C;
|
|
s32 unk_130;
|
|
s32 unk_134;
|
|
s32 unk_138;
|
|
s32 unk_13C;
|
|
s32 unk_140;
|
|
float unk_144;
|
|
s32 unk_148;
|
|
s32 unk_14C;
|
|
s32 unk_150;
|
|
u32 unk_154;
|
|
} UnkM450Struct3; /* size = 0x158 */
|
|
|
|
typedef struct UnkM450Struct2 {
|
|
s32 unk_00;
|
|
Vec unk_04;
|
|
float unk_10;
|
|
float unk_14;
|
|
float unk_18;
|
|
float unk_1C;
|
|
float unk_20;
|
|
float unk_24;
|
|
float unk_28;
|
|
float unk_2C;
|
|
Vec unk_30;
|
|
s16 unk_3C;
|
|
s16 unk_3E;
|
|
} UnkM450Struct2; /* size = 0x40 */
|
|
|
|
typedef void (*UnkM450ModelFunc)(ModelData *, struct UnkM450Struct *, Mtx);
|
|
|
|
typedef struct UnkM450Struct {
|
|
UnkM450ModelFunc unk_00;
|
|
AnimData *unk_04;
|
|
Vec *unk_08;
|
|
float *unk_0C;
|
|
UnkM450Struct2 *unk_10;
|
|
Vec *unk_14;
|
|
Vec2f *unk_18;
|
|
Vec2f *unk_1C;
|
|
GXColor *unk_20;
|
|
void *unk_24;
|
|
Vec unk_28;
|
|
float unk_34;
|
|
float unk_38;
|
|
float unk_3C;
|
|
float unk_40;
|
|
float unk_44;
|
|
float unk_48;
|
|
float unk_4C;
|
|
float unk_50;
|
|
float unk_54;
|
|
u32 unk_58;
|
|
float unk_5C;
|
|
float unk_60;
|
|
s16 unk_64;
|
|
s16 unk_66;
|
|
s16 unk_68;
|
|
u8 unk_6A;
|
|
u8 unk_6B;
|
|
} UnkM450Struct; /* size = 0x6C */
|
|
|
|
s32 fn_1_125C0(s32 arg0, s32 arg1);
|
|
s32 fn_1_13B90(s32 arg0);
|
|
Vec *fn_1_16314(s32 arg0);
|
|
void fn_1_16BC4(Vec *arg0, Vec *arg1, s32 arg2);
|
|
void fn_1_17360(Vec *arg0, float arg8);
|
|
void fn_1_17970(s32 arg0, s32 arg1, float arg8);
|
|
void fn_1_18424(s32 arg0, Vec *arg1);
|
|
void fn_1_186A8();
|
|
s32 fn_1_1964C(Vec *arg0, Vec *arg1);
|
|
s32 fn_1_19798();
|
|
s32 fn_1_19A10(WorkPlayerOld *arg0, Vec *arg1);
|
|
s32 fn_1_1B4C8(UnkM450Struct5 *arg0);
|
|
void fn_1_1B510(s32 arg0);
|
|
s32 fn_1_1C39C(UnkM450Struct5 *arg0);
|
|
void fn_1_20170(omObjData *object);
|
|
void fn_1_2902C();
|
|
void fn_1_298EC(omObjData *object);
|
|
void fn_1_A968(s32 arg0, float arg8, u32 arg1, s32 arg2, float arg9);
|
|
s32 fn_1_E0E8(s32 arg0, s32 arg1);
|
|
s32 fn_1_E178(s32 arg0, s32 arg1);
|
|
void fn_1_E1A8(s32 arg0, s32 arg1, float arg8, u32 arg2, s32 arg3, float arg9);
|
|
|
|
s16 lbl_1_data_0[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
|
|
|
|
s32 lbl_1_data_10[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
|
|
|
|
float lbl_1_data_30[0xA] = { 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 100.0f };
|
|
|
|
float lbl_1_data_58[0xA] = {
|
|
150.0f,
|
|
170.0f,
|
|
190.0f,
|
|
170.0f,
|
|
160.0f,
|
|
150.0f,
|
|
180.0f,
|
|
200.0f,
|
|
150.0f,
|
|
200.0f,
|
|
};
|
|
|
|
PlayerOldFind lbl_1_bss_1AC;
|
|
float lbl_1_bss_1A8;
|
|
omObjData *lbl_1_bss_1A4;
|
|
omObjData *lbl_1_bss_1A0;
|
|
omObjData *lbl_1_bss_144[0x17];
|
|
omObjData **lbl_1_bss_140;
|
|
omObjData **lbl_1_bss_13C;
|
|
// data: UnkM450Struct5
|
|
omObjData *lbl_1_bss_138;
|
|
// data: UnkM450Struct3
|
|
omObjData *lbl_1_bss_134;
|
|
// data: UnkM450Struct3
|
|
omObjData **lbl_1_bss_130;
|
|
float lbl_1_bss_12C;
|
|
float lbl_1_bss_128;
|
|
float lbl_1_bss_124;
|
|
s32 lbl_1_bss_120;
|
|
s32 lbl_1_bss_11C;
|
|
s32 lbl_1_bss_118;
|
|
s32 lbl_1_bss_114;
|
|
s32 lbl_1_bss_110;
|
|
s32 lbl_1_bss_10C;
|
|
s32 lbl_1_bss_108;
|
|
UnkDataA80Struct *lbl_1_bss_104;
|
|
s32 lbl_1_bss_100;
|
|
UnkData1380Struct *lbl_1_bss_FC;
|
|
s32 lbl_1_bss_F8;
|
|
Vec lbl_1_bss_EC;
|
|
void *lbl_1_bss_E8[1];
|
|
UnkM450Struct4 *lbl_1_bss_E4[1];
|
|
UnkM450Struct4 *lbl_1_bss_DC[2];
|
|
s32 lbl_1_bss_D8;
|
|
Vec lbl_1_bss_CC;
|
|
float lbl_1_bss_C8;
|
|
s32 lbl_1_bss_C4;
|
|
s32 lbl_1_bss_B8[3];
|
|
Mtx lbl_1_bss_88;
|
|
Vec lbl_1_bss_4C[5];
|
|
Vec lbl_1_bss_34[2];
|
|
s16 lbl_1_bss_2C[4];
|
|
AnimData *lbl_1_bss_28;
|
|
s16 lbl_1_bss_24;
|
|
s32 lbl_1_bss_20;
|
|
s32 lbl_1_bss_1C;
|
|
s32 lbl_1_bss_18;
|
|
AnimData *lbl_1_bss_14;
|
|
s32 lbl_1_bss_10;
|
|
s32 lbl_1_bss_C;
|
|
s32 lbl_1_bss_8;
|
|
s32 lbl_1_bss_4;
|
|
s32 lbl_1_bss_0;
|
|
|
|
#if VERSION_NTSC
|
|
#define _1606_BY_REFRESH_RATE 26.766666f
|
|
#else
|
|
#define _1606_BY_REFRESH_RATE 32.120003f
|
|
#endif
|
|
|
|
void fn_1_23B4(WorkPlayerOld *player)
|
|
{
|
|
s32 i;
|
|
for (i = 0; i < 8; i++) {
|
|
if (player->unk_44 == player->unk_14[i]) {
|
|
player->unk_40 = lbl_1_data_10[i];
|
|
return;
|
|
}
|
|
}
|
|
player->unk_40 = -1;
|
|
}
|
|
|
|
void fn_1_2418(float *minDist, s32 *state, s32 stateNew, Vec *posA, float aYOfs, Vec *posB, float bYOfs)
|
|
{
|
|
Vec pointA = *posA;
|
|
Vec pointB = *posB;
|
|
float dist;
|
|
pointA.y += aYOfs;
|
|
pointB.y += bYOfs;
|
|
dist = VECDistance(&pointA, &pointB);
|
|
if (*minDist > dist) {
|
|
*minDist = dist;
|
|
*state = stateNew;
|
|
}
|
|
}
|
|
|
|
void fn_1_24F8(WorkPlayerOld *player1, WorkPlayerOld *player2, float *minDist, s32 *state)
|
|
{
|
|
*minDist = 10 * (player1->unk_BC + player2->unk_BC);
|
|
fn_1_2418(minDist, state, 0, &player1->unk_6C, player1->unk_BC, &player2->unk_6C, player2->unk_BC);
|
|
fn_1_2418(minDist, state, 1, &player1->unk_6C, player1->unk_C0 - player1->unk_BC, &player2->unk_6C, player2->unk_C0 - player2->unk_BC);
|
|
fn_1_2418(minDist, state, 2, &player1->unk_6C, player1->unk_BC, &player2->unk_6C, player2->unk_C0 - player2->unk_BC);
|
|
fn_1_2418(minDist, state, 3, &player1->unk_6C, player1->unk_C0 - player1->unk_BC, &player2->unk_6C, player2->unk_BC);
|
|
}
|
|
|
|
s32 fn_1_2824(WorkPlayerOld *player, WorkPlayerOld *player2)
|
|
{
|
|
Vec dir;
|
|
Vec dir2;
|
|
float dist;
|
|
|
|
player->unk_3C |= 0x1;
|
|
player->unk_90.x = player->unk_20 / 4.0f;
|
|
player->unk_90.z = -(float)player->unk_24 / 4.0f;
|
|
if (player->unk_90.x != 0.0f || player->unk_90.z != 0.0f) {
|
|
return;
|
|
}
|
|
VECSubtract(&player->unk_6C, &player2->unk_6C, &dir);
|
|
dist = VECMagXZ(&dir);
|
|
if (0.0f == dist) {
|
|
dir.x = 0;
|
|
dir.z = -1;
|
|
}
|
|
else {
|
|
dir.x /= dist;
|
|
dir.z /= dist;
|
|
}
|
|
VECSubtract(&player->unk_6C, &player->unk_78, &dir2);
|
|
dist = VECMagXZ(&dir2);
|
|
if (5 > dist) {
|
|
dist = 5;
|
|
}
|
|
player->unk_90.x = dir.x * dist;
|
|
player->unk_90.z = dir.z * dist;
|
|
}
|
|
|
|
void fn_1_2BD0(WorkPlayerOld *player, float arg1, float arg2)
|
|
{
|
|
player->unk_38 = 1;
|
|
player->unk_84.y = arg1;
|
|
player->unk_A4 = arg2;
|
|
if (player->unk_3C & 0x2) {
|
|
player->unk_3C &= ~0x2;
|
|
}
|
|
}
|
|
|
|
void fn_1_2C00(PlayerOldFind find, float yDist)
|
|
{
|
|
lbl_1_bss_1AC = find;
|
|
lbl_1_bss_1A8 = yDist;
|
|
}
|
|
|
|
void fn_1_2C1C(WorkPlayerOld *player, omObjData *obj, s32 arg2, s32 arg3, s32 *arg4, s32 arg5, Vec *pos, float arg7)
|
|
{
|
|
player->unk_00 = obj;
|
|
player->unk_18 = arg2;
|
|
player->unk_1C = arg3;
|
|
player->unk_14 = arg4;
|
|
player->unk_04 = NULL;
|
|
player->unk_08 = NULL;
|
|
player->unk_0C = NULL;
|
|
player->unk_10 = NULL;
|
|
player->unk_50 = NULL;
|
|
player->unk_64 = 0;
|
|
player->unk_68 = NULL;
|
|
player->unk_38 = 0;
|
|
player->unk_3C = 0;
|
|
player->unk_44 = arg5;
|
|
player->unk_48 = 0;
|
|
player->unk_4C = 0;
|
|
fn_1_23B4(player);
|
|
player->unk_9C = arg7;
|
|
player->unk_6C = *pos;
|
|
player->unk_78 = *pos;
|
|
player->unk_84.x = 0;
|
|
player->unk_84.y = 0;
|
|
player->unk_84.z = 0;
|
|
player->unk_B8 = 1;
|
|
player->unk_A8 = 0;
|
|
player->unk_BC = lbl_1_data_30[player->unk_1C];
|
|
player->unk_C0 = lbl_1_data_58[player->unk_1C];
|
|
}
|
|
|
|
void fn_1_2DA8(WorkPlayerOld *player, PlayerOldHook func)
|
|
{
|
|
player->unk_04 = func;
|
|
}
|
|
|
|
void fn_1_2DB0(WorkPlayerOld *player, PlayerOldPosHook func)
|
|
{
|
|
player->unk_08 = func;
|
|
}
|
|
|
|
void fn_1_2DB8(WorkPlayerOld *player, PlayerOldHook func)
|
|
{
|
|
player->unk_0C = func;
|
|
}
|
|
|
|
void fn_1_2DC0(WorkPlayerOld *player, PlayerOldHook func)
|
|
{
|
|
player->unk_10 = func;
|
|
}
|
|
|
|
void fn_1_2DC8(WorkPlayerOld *player, s32 count, Vec *data)
|
|
{
|
|
player->unk_64 = count;
|
|
player->unk_68 = data;
|
|
}
|
|
|
|
void fn_1_2DD4(WorkPlayerOld *player)
|
|
{
|
|
omSetTra(player->unk_00, player->unk_6C.x, player->unk_6C.y, player->unk_6C.z);
|
|
omSetRot(player->unk_00, 0.0f, player->unk_9C, 0.0f);
|
|
}
|
|
|
|
void fn_1_2E34(WorkPlayerOld *player)
|
|
{
|
|
BOOL addTime;
|
|
s32 i;
|
|
player->unk_3C &= ~0x100;
|
|
if (player->unk_3C & 0x8) {
|
|
return;
|
|
}
|
|
if (NULL == lbl_1_bss_1AC) {
|
|
return;
|
|
}
|
|
addTime = FALSE;
|
|
for (i = 0; i < 4; i++) {
|
|
WorkPlayerOld *player2 = lbl_1_bss_1AC(i);
|
|
BOOL fixPos;
|
|
float minDist;
|
|
s32 state;
|
|
if (player == player2) {
|
|
continue;
|
|
}
|
|
if (player2->unk_3C & 0x8) {
|
|
continue;
|
|
}
|
|
fixPos = FALSE;
|
|
fn_1_24F8(player, player2, &minDist, &state);
|
|
if (minDist < player->unk_BC + player2->unk_BC) {
|
|
if (state < 2) {
|
|
fixPos = TRUE;
|
|
if (player->unk_38 == 1) {
|
|
fn_1_2824(player, player2);
|
|
}
|
|
}
|
|
else {
|
|
if (state == 2 && player->unk_38 == 1) {
|
|
fn_1_2824(player, player2);
|
|
player->unk_3C |= 0x100;
|
|
player->unk_A4 = 0;
|
|
if (!(player2->unk_3C & 0x100)) {
|
|
player->unk_84.y = _1606_BY_REFRESH_RATE;
|
|
}
|
|
}
|
|
if (state == 3) {
|
|
fixPos = TRUE;
|
|
if (player->unk_38 == 1) {
|
|
if (0.0f < player->unk_84.y) {
|
|
player->unk_84.y = 0.0f;
|
|
}
|
|
player->unk_A4 = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (fixPos) {
|
|
Vec dir;
|
|
addTime = TRUE;
|
|
VECSubtract(&player->unk_6C, &player2->unk_6C, &dir);
|
|
if (0.0f == minDist) {
|
|
dir.x = 0;
|
|
dir.z = -1;
|
|
}
|
|
else {
|
|
dir.x /= minDist;
|
|
dir.z /= minDist;
|
|
}
|
|
player->unk_6C.x = player2->unk_6C.x + (dir.x * (player->unk_BC + player2->unk_BC));
|
|
player->unk_6C.z = player2->unk_6C.z + (dir.z * (player->unk_BC + player2->unk_BC));
|
|
}
|
|
}
|
|
if (addTime) {
|
|
player->unk_4C++;
|
|
}
|
|
else {
|
|
player->unk_4C = 0;
|
|
}
|
|
}
|
|
|
|
float fn_1_39C4(WorkPlayerOld *player, float arg2)
|
|
{
|
|
Vec *pos;
|
|
s32 i;
|
|
AddX = 0.0f;
|
|
AddZ = 0.0f;
|
|
MapWall(player->unk_BC, player->unk_6C.x, arg2 + player->unk_BC, player->unk_6C.z);
|
|
player->unk_6C.x += AddX;
|
|
player->unk_6C.z += AddZ;
|
|
if (NULL != player->unk_68) {
|
|
for (pos = player->unk_68, i = 0; i < player->unk_64; i++, pos += 2) {
|
|
int num = 0;
|
|
if (pos[0].x == pos[1].x || pos[0].x > player->unk_6C.x || pos[1].x < player->unk_6C.x) {
|
|
num++;
|
|
}
|
|
if (pos[0].y == pos[1].y || pos[0].y > player->unk_6C.y || pos[1].y < player->unk_6C.y) {
|
|
num++;
|
|
}
|
|
if (pos[0].z == pos[1].z || pos[0].z > player->unk_6C.z || pos[1].z < player->unk_6C.z) {
|
|
num++;
|
|
}
|
|
if (num == 3) {
|
|
if (pos[0].x != pos[1].x) {
|
|
if (pos[0].x > player->unk_6C.x) {
|
|
player->unk_6C.x = pos[0].x + player->unk_BC;
|
|
}
|
|
if (pos[1].x < player->unk_6C.x) {
|
|
player->unk_6C.x = pos[1].x - player->unk_BC;
|
|
}
|
|
}
|
|
if (pos[0].y != pos[1].y) {
|
|
if (pos[0].y > player->unk_6C.y) {
|
|
player->unk_6C.y = pos[0].y;
|
|
}
|
|
if (pos[1].y < player->unk_6C.y) {
|
|
player->unk_6C.y = pos[1].y;
|
|
}
|
|
}
|
|
if (pos[0].z != pos[1].z) {
|
|
if (pos[0].z > player->unk_6C.z) {
|
|
player->unk_6C.z = pos[0].z + player->unk_BC;
|
|
}
|
|
if (pos[1].z < player->unk_6C.z) {
|
|
player->unk_6C.z = pos[1].z - player->unk_BC;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return ABS(AddX) + ABS(AddZ);
|
|
}
|
|
|
|
void fn_1_3CE0(WorkPlayerOld *player, s32 *state, u32 *motAttr)
|
|
{
|
|
*motAttr = HU3D_MOTATTR_LOOP;
|
|
*state = 0;
|
|
if (0.5f <= player->unk_A0) {
|
|
if (7.0f <= player->unk_A0) {
|
|
*state = 2;
|
|
}
|
|
else {
|
|
*state = 1;
|
|
}
|
|
}
|
|
|
|
if (player->unk_14[3] >= 0 && (player->unk_28 & 0x100)) {
|
|
fn_1_2BD0(player, _1606_BY_REFRESH_RATE, 1.0f);
|
|
*motAttr = HU3D_MOTATTR_NONE;
|
|
*state = 3;
|
|
}
|
|
}
|
|
|
|
void fn_1_3DB8(WorkPlayerOld *player, s32 *state, u32 *motAttr)
|
|
{
|
|
if (0.0f < player->unk_A4) {
|
|
if (player->unk_2C & 0x100) {
|
|
player->unk_A4++;
|
|
if (4.0f < player->unk_A4) {
|
|
player->unk_A4 = 0;
|
|
}
|
|
else {
|
|
player->unk_84.y += 219.0f / REFRESH_RATE;
|
|
}
|
|
}
|
|
else {
|
|
player->unk_A4 = 0;
|
|
}
|
|
}
|
|
player->unk_84.y += -146.0f / REFRESH_RATE;
|
|
if (player->unk_14[5] >= 0 && (player->unk_28 & 0x140)) {
|
|
player->unk_38 = 3;
|
|
player->unk_84.y = 0;
|
|
player->unk_3C &= ~0x3;
|
|
player->unk_3C |= 0x4;
|
|
*motAttr = HU3D_MOTATTR_NONE;
|
|
*state = 5;
|
|
}
|
|
}
|
|
|
|
void fn_1_3ECC(WorkPlayerOld *player, s32 *state, u32 *motAttr)
|
|
{
|
|
if ((player->unk_3C & 0x1000) || Hu3DMotionEndCheck(player->unk_00->model[0])) {
|
|
player->unk_3C &= ~0x3;
|
|
if (player->unk_40 == 6) {
|
|
player->unk_38 = 4;
|
|
*motAttr = HU3D_MOTATTR_NONE;
|
|
*state = 7;
|
|
}
|
|
else {
|
|
player->unk_38 = 0;
|
|
*motAttr = HU3D_MOTATTR_LOOP;
|
|
*state = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_3F84(WorkPlayerOld *player, s32 *state, u32 *motAttr)
|
|
{
|
|
if (Hu3DMotionShiftIDGet(player->unk_00->model[0]) < 0 && Hu3DMotionEndCheck(player->unk_00->model[0])) {
|
|
fn_1_2BD0(player, 0.0f, 0.0f);
|
|
}
|
|
}
|
|
|
|
void fn_1_4024(WorkPlayerOld *player, s32 *state, u32 *motAttr)
|
|
{
|
|
if (Hu3DMotionShiftIDGet(player->unk_00->model[0]) < 0 && Hu3DMotionEndCheck(player->unk_00->model[0])) {
|
|
player->unk_3C &= ~0x4;
|
|
player->unk_38 = 0;
|
|
*motAttr = HU3D_MOTATTR_LOOP;
|
|
*state = 0;
|
|
}
|
|
}
|
|
|
|
void fn_1_40C0(WorkPlayerOld *player)
|
|
{
|
|
u32 motAttr = HU3D_MOTATTR_NONE;
|
|
s32 state = -1;
|
|
float temp_f28;
|
|
float temp_f23;
|
|
float temp_f22;
|
|
Vec *pos;
|
|
BOOL temp_r27;
|
|
if (player->unk_3C & 0x1) {
|
|
player->unk_84.x = player->unk_90.x;
|
|
player->unk_84.z = player->unk_90.z;
|
|
}
|
|
else {
|
|
player->unk_84.x = player->unk_20 / 4.0f;
|
|
player->unk_84.z = -(float)player->unk_24 / 4.0f;
|
|
if (player->unk_38 == 1 && 0.0f == player->unk_84.x && 0.0f == player->unk_84.z) {
|
|
player->unk_84.x = 0.98f * (player->unk_6C.x - player->unk_78.x);
|
|
player->unk_84.z = 0.98f * (player->unk_6C.z - player->unk_78.z);
|
|
}
|
|
if (player->unk_3C & 0x14) {
|
|
player->unk_84.x = 0;
|
|
player->unk_84.z = 0;
|
|
player->unk_28 = 0;
|
|
}
|
|
}
|
|
player->unk_78 = player->unk_6C;
|
|
player->unk_A0 = VECMagXZ(&player->unk_84);
|
|
if (0.5f <= player->unk_A0) {
|
|
if (10.0f <= player->unk_A0) {
|
|
player->unk_84.x /= player->unk_A0;
|
|
player->unk_84.z /= player->unk_A0;
|
|
player->unk_A0 = 10;
|
|
player->unk_84.x = 10 * player->unk_84.x;
|
|
player->unk_84.z = 10 * player->unk_84.z;
|
|
}
|
|
}
|
|
else {
|
|
player->unk_84.x = 0;
|
|
player->unk_84.z = 0;
|
|
player->unk_A0 = 0;
|
|
}
|
|
player->unk_84.x *= player->unk_B8;
|
|
player->unk_84.z *= player->unk_B8;
|
|
player->unk_A0 *= player->unk_B8;
|
|
if (player->unk_3C & 0x800) {
|
|
player->unk_28 |= 0x100;
|
|
player->unk_2C |= 0x100;
|
|
if (player->unk_38 == 1) {
|
|
if (0.0f == player->unk_A4) {
|
|
player->unk_3C &= ~0x800;
|
|
}
|
|
}
|
|
}
|
|
switch (player->unk_38) {
|
|
case 0:
|
|
fn_1_3CE0(player, &state, &motAttr);
|
|
break;
|
|
|
|
case 1:
|
|
fn_1_3DB8(player, &state, &motAttr);
|
|
break;
|
|
|
|
case 2:
|
|
fn_1_3ECC(player, &state, &motAttr);
|
|
break;
|
|
|
|
case 3:
|
|
fn_1_3F84(player, &state, &motAttr);
|
|
break;
|
|
|
|
case 4:
|
|
fn_1_4024(player, &state, &motAttr);
|
|
break;
|
|
|
|
default:
|
|
OSReport("*** player action error(%d)!!\n", player->unk_38);
|
|
break;
|
|
}
|
|
if (player->unk_3C & 0x2000) {
|
|
player->unk_84.y = 0;
|
|
}
|
|
temp_f28 = 0.0f;
|
|
if (50.0f < ABS(player->unk_84.y)) {
|
|
player->unk_84.y = 50.0f * ((0.0f > player->unk_84.y) ? -1 : 1);
|
|
}
|
|
if (player->unk_3C & 0x2) {
|
|
Mtx rotMtx;
|
|
MTXRotDeg(rotMtx, 'y', player->unk_50[2].x - player->unk_60);
|
|
MTXMultVec(rotMtx, &player->unk_54, &player->unk_54);
|
|
VECAdd(&player->unk_54, &player->unk_50[0], &player->unk_6C);
|
|
player->unk_9C += player->unk_50[2].x - player->unk_60;
|
|
}
|
|
temp_f22 = player->unk_6C.y;
|
|
VECAdd(&player->unk_6C, &player->unk_84, &player->unk_6C);
|
|
if ((player->unk_3C & 0x1) == 0 && (0.0f != player->unk_84.x || 0.0f != player->unk_84.z)) {
|
|
player->unk_9C = fn_1_1E20(player->unk_9C, atan2d(player->unk_84.x, player->unk_84.z), 0.4f * player->unk_B8);
|
|
}
|
|
temp_f28 += fn_1_39C4(player, temp_f22);
|
|
if (nMap == 0) {
|
|
player->unk_A8 = lbl_1_bss_1A8;
|
|
}
|
|
else {
|
|
player->unk_A8 = MapPos(player->unk_6C.x, player->unk_6C.y, player->unk_6C.z, player->unk_C0, &player->unk_AC);
|
|
}
|
|
temp_r27 = FALSE;
|
|
if (NULL != player->unk_08) {
|
|
pos = player->unk_08(player->unk_00);
|
|
if (NULL != pos) {
|
|
if (player->unk_A8 < pos[1].y) {
|
|
temp_r27 = TRUE;
|
|
player->unk_50 = pos;
|
|
player->unk_A8 = pos[1].y;
|
|
}
|
|
}
|
|
}
|
|
if (!temp_r27 && (player->unk_3C & 0x2)) {
|
|
player->unk_3C &= ~0x2;
|
|
}
|
|
if (player->unk_38 == 1 && player->unk_A8 >= player->unk_6C.y) {
|
|
player->unk_38 = 2;
|
|
player->unk_3C &= ~0x3;
|
|
player->unk_6C.y = player->unk_A8;
|
|
player->unk_84.y = 0;
|
|
motAttr = HU3D_MOTATTR_NONE;
|
|
state = 4;
|
|
if (player->unk_40 == 5) {
|
|
state = 6;
|
|
if (NULL != player->unk_10) {
|
|
player->unk_10(player->unk_00);
|
|
}
|
|
if (player->unk_18 < 4) {
|
|
omVibrate(player->unk_18, 12, 4, 2);
|
|
}
|
|
}
|
|
if (player->unk_3C & 0x200) {
|
|
state = -1;
|
|
if (NULL != player->unk_0C) {
|
|
player->unk_0C(player->unk_00);
|
|
}
|
|
}
|
|
if (temp_r27) {
|
|
player->unk_3C |= 0x2;
|
|
}
|
|
}
|
|
temp_f23 = player->unk_6C.y - player->unk_A8;
|
|
if (player->unk_38 == 0 && 10.0f < temp_f23) {
|
|
if ((player->unk_3C & 0x2000) == 0) {
|
|
if ((player->unk_3C & 0x400) != 0) {
|
|
player->unk_3C |= 0x800;
|
|
}
|
|
else {
|
|
fn_1_2BD0(player, 0.0f, 0.0f);
|
|
|
|
motAttr = HU3D_MOTATTR_NONE;
|
|
state = 3;
|
|
}
|
|
}
|
|
}
|
|
else if (temp_r27) {
|
|
if (!(player->unk_3C & 0x2)) {
|
|
player->unk_6C.y = player->unk_A8;
|
|
player->unk_3C |= 0x2;
|
|
}
|
|
}
|
|
fn_1_2E34(player);
|
|
if (NULL != player->unk_04) {
|
|
player->unk_04(player->unk_00);
|
|
}
|
|
temp_f28 += fn_1_39C4(player, player->unk_6C.y);
|
|
if (player->unk_3C & 0x2) {
|
|
player->unk_60 = player->unk_50[2].x;
|
|
VECSubtract(&player->unk_6C, &player->unk_50[0], &player->unk_54);
|
|
}
|
|
if (0.0f != temp_f28) {
|
|
player->unk_48++;
|
|
}
|
|
else {
|
|
player->unk_48 = 0;
|
|
}
|
|
if (state >= 0 && player->unk_40 != state) {
|
|
player->unk_40 = state;
|
|
player->unk_44 = player->unk_14[player->unk_40];
|
|
if (player->unk_44 >= 0 && !(player->unk_3C & 0x20)) {
|
|
Hu3DMotionShiftSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44], 0, 8, motAttr);
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_4ED8(WorkPlayerOld *player, s32 motNo)
|
|
{
|
|
s32 i;
|
|
player->unk_44 = motNo;
|
|
player->unk_38 = 0;
|
|
player->unk_3C &= 0x1400;
|
|
player->unk_78 = player->unk_6C;
|
|
player->unk_84.x = 0;
|
|
player->unk_84.y = 0;
|
|
player->unk_84.z = 0;
|
|
fn_1_23B4(player);
|
|
if (player->unk_40 == 3) {
|
|
Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
|
Hu3DMotionSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44]);
|
|
Hu3DMotionTimeSet(player->unk_00->model[0], Hu3DMotionMaxTimeGet(player->unk_00->model[0]) - 1);
|
|
}
|
|
else if (player->unk_40 == 5) {
|
|
player->unk_38 = 3;
|
|
player->unk_3C |= 0x4;
|
|
Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
|
Hu3DMotionSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44]);
|
|
Hu3DMotionTimeSet(player->unk_00->model[0], Hu3DMotionMaxTimeGet(player->unk_00->model[0]) - 1);
|
|
}
|
|
else {
|
|
Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_PAUSE);
|
|
Hu3DMotionShiftSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44], 0, 8, HU3D_MOTATTR_LOOP);
|
|
}
|
|
}
|
|
|
|
void fn_1_5128(WorkPlayerOld *player, s32 attr)
|
|
{
|
|
player->unk_3C |= attr;
|
|
}
|
|
|
|
void fn_1_5138(WorkPlayerOld *player, s32 attr)
|
|
{
|
|
player->unk_3C &= ~attr;
|
|
}
|
|
|
|
void fn_1_5148(ModelData *model, UnkM450Struct *arg1, Mtx matrix)
|
|
{
|
|
Vec sp14;
|
|
Vec sp8;
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f29;
|
|
|
|
UnkM450Struct2 *var_r31;
|
|
WorkPlayerOld *var_r29;
|
|
GXColor *var_r28;
|
|
s16 var_r27;
|
|
UnkM450Struct5 *var_r26;
|
|
|
|
var_r26 = lbl_1_bss_138->data;
|
|
var_r29 = &var_r26->unk_00;
|
|
var_r31 = arg1->unk_10;
|
|
var_r28 = arg1->unk_20;
|
|
arg1->unk_66 = 0;
|
|
for (var_r27 = 0; var_r27 < arg1->unk_64; var_r27++, var_r31++, var_r28++) {
|
|
if (var_r31->unk_3E >= 0) {
|
|
var_r31->unk_10 += var_r31->unk_1C;
|
|
if (var_r31->unk_20 < var_r31->unk_10) {
|
|
var_r31->unk_3E = -1;
|
|
}
|
|
else {
|
|
arg1->unk_66++;
|
|
if (NULL != arg1->unk_08) {
|
|
var_r31->unk_04 = *arg1->unk_08;
|
|
}
|
|
if (NULL != arg1->unk_0C) {
|
|
var_r31->unk_14 = *arg1->unk_0C;
|
|
}
|
|
var_r31->unk_30.x = var_r31->unk_04.x + (var_r31->unk_10 * sind((var_r31->unk_14 + var_r31->unk_18)));
|
|
var_r31->unk_30.y = var_r31->unk_30.y + (0.03f * (var_r31->unk_24 - var_r31->unk_30.y));
|
|
var_r31->unk_30.z = var_r31->unk_04.z + (var_r31->unk_10 * cosd((var_r31->unk_14 + var_r31->unk_18)));
|
|
var_f31 = var_r31->unk_10 / var_r31->unk_20;
|
|
var_f29 = 512.0 * cosd((90.0f * var_f31));
|
|
var_r28->a = 255.0f < var_f29 ? 255.0f : var_f29;
|
|
var_r31->unk_3C = arg1->unk_68 * var_f31;
|
|
if (arg1->unk_68 <= var_r31->unk_3C) {
|
|
var_r31->unk_3C = arg1->unk_68 - 1;
|
|
}
|
|
var_f31 *= 2.0f;
|
|
if (1.0f < var_f31) {
|
|
var_f31 = 1.0f;
|
|
}
|
|
var_r31->unk_2C = sind((100.0f * var_f31));
|
|
var_f30 = (26.666666f * var_r31->unk_2C) + var_r29->unk_BC;
|
|
sp14 = var_r29->unk_6C;
|
|
sp14.y += var_f30;
|
|
sp8 = var_r29->unk_6C;
|
|
sp8.y += var_r29->unk_C0 - var_f30;
|
|
if ((var_r31->unk_3C < 0xC)
|
|
&& ((var_f30 > VECDistance(&sp14, &var_r31->unk_30)) || (var_f30 > VECDistance(&sp8, &var_r31->unk_30)))) {
|
|
var_r26->unk_FC |= 0x20;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
void fn_1_5548(Vec *arg0, float *arg1)
|
|
{
|
|
arg1[0] = arg0[0].x;
|
|
arg1[4] = arg0[0].y;
|
|
arg1[8] = arg0[0].z;
|
|
arg1[1] = arg0[1].y;
|
|
arg1[5] = arg0[1].z;
|
|
arg1[9] = arg0[2].x;
|
|
arg1[2] = arg0[2].z;
|
|
arg1[6] = arg0[3].x;
|
|
arg1[10] = arg0[3].y;
|
|
arg1[3] = 0.0f;
|
|
arg1[7] = 0.0f;
|
|
arg1[11] = 0.0f;
|
|
}
|
|
|
|
void fn_1_55C4(Vec *arg0, Vec *arg1, s16 arg2, float arg8)
|
|
{
|
|
s16 var_r31;
|
|
for (var_r31 = 0; var_r31 < arg2; var_r31++, arg0++, arg1++) {
|
|
arg1->x = arg0->x * arg8;
|
|
arg1->y = arg0->y * arg8;
|
|
arg1->z = arg0->z * arg8;
|
|
}
|
|
}
|
|
|
|
void fn_1_5620(Vec2f *arg0, Vec2f *arg1, s16 arg2, float arg8, float arg9)
|
|
{
|
|
arg0[0].x = arg1[arg2].x;
|
|
arg0[0].y = arg1[arg2].y;
|
|
arg0[1].x = arg8 + arg1[arg2].x;
|
|
arg0[1].y = arg1[arg2].y;
|
|
arg0[2].x = arg8 + arg1[arg2].x;
|
|
arg0[2].y = arg9 + arg1[arg2].y;
|
|
arg0[3].x = arg1[arg2].x;
|
|
arg0[3].y = arg9 + arg1[arg2].y;
|
|
}
|
|
|
|
void fn_1_56C4(ModelData *arg0, Mtx arg1)
|
|
{
|
|
Mtx sp130;
|
|
ROMtx sp100;
|
|
Mtx spD0;
|
|
Mtx spA0;
|
|
Vec sp70[4];
|
|
Vec sp64;
|
|
Vec sp58;
|
|
Vec sp4C;
|
|
Vec sp40;
|
|
Vec sp34;
|
|
Vec sp28;
|
|
Vec sp1C;
|
|
Vec sp10;
|
|
UnkM450ModelFunc spC;
|
|
s16 sp8;
|
|
|
|
UnkM450Struct *var_r31;
|
|
Vec *var_r30;
|
|
UnkM450Struct2 *var_r29;
|
|
Vec2f *var_r27;
|
|
s16 var_r19;
|
|
|
|
var_r31 = arg0->unk_120;
|
|
if ((var_r31->unk_6B == 0) || (var_r31->unk_66 != 0)) {
|
|
GXLoadPosMtxImm(arg1, 0);
|
|
GXSetNumTevStages(1);
|
|
GXSetNumTexGens(1);
|
|
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D);
|
|
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
|
|
sp8 = var_r31->unk_04->bmp->dataFmt & 0xF;
|
|
if ((sp8 == 8) || (sp8 == 7)) {
|
|
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXA, GX_CC_RASC, GX_CC_ZERO);
|
|
}
|
|
else {
|
|
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO);
|
|
}
|
|
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO);
|
|
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
|
GXSetNumChans(1);
|
|
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE);
|
|
if ((arg0->attr & 2) != 0) {
|
|
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
|
|
}
|
|
else {
|
|
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE);
|
|
}
|
|
HuSprTexLoad(var_r31->unk_04, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR);
|
|
GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1);
|
|
GXSetZCompLoc(GX_FALSE);
|
|
switch (var_r31->unk_6A) {
|
|
case 0:
|
|
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP);
|
|
break;
|
|
case 1:
|
|
GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP);
|
|
break;
|
|
case 2:
|
|
GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP);
|
|
break;
|
|
}
|
|
GXClearVtxDesc();
|
|
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
|
|
GXSetArray(GX_VA_POS, var_r31->unk_14, 0xC);
|
|
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
|
|
GXSetArray(GX_VA_CLR0, var_r31->unk_20, 4);
|
|
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
|
|
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
|
|
GXSetArray(GX_VA_TEX0, var_r31->unk_18, 8);
|
|
sp130[0][0] = arg1[0][0];
|
|
sp130[1][0] = arg1[0][1];
|
|
sp130[2][0] = arg1[0][2];
|
|
sp130[0][1] = arg1[1][0];
|
|
sp130[1][1] = arg1[1][1];
|
|
sp130[2][1] = arg1[1][2];
|
|
sp130[0][2] = arg1[2][0];
|
|
sp130[1][2] = arg1[2][1];
|
|
sp130[2][2] = arg1[2][2];
|
|
sp130[0][3] = 0.0f;
|
|
sp130[1][3] = 0.0f;
|
|
sp130[2][3] = 0.0f;
|
|
PSMTXReorder(sp130, sp100);
|
|
if ((omPauseChk() == 0) && (var_r31->unk_00)) {
|
|
spC = var_r31->unk_00;
|
|
spC(arg0, var_r31, arg1);
|
|
}
|
|
var_r29 = var_r31->unk_10;
|
|
var_r30 = var_r31->unk_14;
|
|
var_r27 = var_r31->unk_18;
|
|
PSMTXROMultVecArray(sp100, &var_r31->unk_28, sp70, 4);
|
|
for (var_r19 = 0; var_r19 < var_r31->unk_64; var_r19++, var_r29++, var_r27 += 4) {
|
|
if (var_r29->unk_3E < 0) {
|
|
var_r30->x = var_r30->y = var_r30->z = 0.0f;
|
|
var_r30++;
|
|
var_r30->x = var_r30->y = var_r30->z = 0.0f;
|
|
var_r30++;
|
|
var_r30->x = var_r30->y = var_r30->z = 0.0f;
|
|
var_r30++;
|
|
var_r30->x = var_r30->y = var_r30->z = 0.0f;
|
|
var_r30++;
|
|
}
|
|
else {
|
|
if (var_r29->unk_28 == 0.0f) {
|
|
fn_1_55C4(sp70, &sp40, 4, var_r29->unk_2C);
|
|
VECAdd(&sp40, &var_r29->unk_30, var_r30++);
|
|
VECAdd(&sp4C, &var_r29->unk_30, var_r30++);
|
|
VECAdd(&sp58, &var_r29->unk_30, var_r30++);
|
|
VECAdd(&sp64, &var_r29->unk_30, var_r30++);
|
|
}
|
|
else {
|
|
fn_1_55C4(&var_r31->unk_28, &sp40, 4, var_r29->unk_2C);
|
|
MTXRotRad(spD0, 0x5A, 0.017453292f * var_r29->unk_28);
|
|
MTXConcat(sp130, spD0, spA0);
|
|
MTXMultVecArray(spA0, &sp40, &sp10, 4);
|
|
VECAdd(&sp10, &var_r29->unk_30, var_r30++);
|
|
VECAdd(&sp1C, &var_r29->unk_30, var_r30++);
|
|
VECAdd(&sp28, &var_r29->unk_30, var_r30++);
|
|
VECAdd(&sp34, &var_r29->unk_30, var_r30++);
|
|
}
|
|
if (var_r29->unk_3C != -1) {
|
|
fn_1_5620(var_r27, var_r31->unk_1C, var_r29->unk_3C, var_r31->unk_5C, var_r31->unk_60);
|
|
}
|
|
}
|
|
}
|
|
DCFlushRangeNoSync(var_r31->unk_14, var_r31->unk_64 * 0xC * 4);
|
|
DCFlushRangeNoSync(var_r31->unk_18, var_r31->unk_64 * 8 * 4);
|
|
GXCallDisplayList(var_r31->unk_24, var_r31->unk_58);
|
|
}
|
|
}
|
|
|
|
void fn_1_5E0C(Vec2f *arg0, s16 arg1, s16 arg2, float arg8, float arg9)
|
|
{
|
|
s16 var_r31;
|
|
s16 var_r30;
|
|
s16 var_r29;
|
|
|
|
(void)arg9;
|
|
(void)arg9;
|
|
(void)arg9;
|
|
(void)arg8;
|
|
(void)arg8;
|
|
(void)arg8;
|
|
|
|
for (var_r31 = 0; var_r31 < arg1; var_r31++, arg0++) {
|
|
var_r30 = var_r31 % arg2;
|
|
var_r29 = var_r31 / arg2;
|
|
arg0->x = var_r30 * arg8;
|
|
arg0->y = var_r29 * arg9;
|
|
}
|
|
}
|
|
|
|
s16 fn_1_5ED8(AnimData *arg0, Vec *arg1, float *arg2, s16 arg3, float arg8, s16 arg4, s16 arg5)
|
|
{
|
|
void *sp1C;
|
|
|
|
UnkM450Struct *var_r31;
|
|
s16 var_r30;
|
|
Vec2f *var_r29;
|
|
ModelData *var_r28;
|
|
GXColor *var_r26;
|
|
Vec *var_r25;
|
|
UnkM450Struct2 *var_r24;
|
|
s16 var_r21;
|
|
void *var_r19;
|
|
s16 var_r18;
|
|
s16 var_r17;
|
|
|
|
var_r18 = Hu3DHookFuncCreate(fn_1_56C4);
|
|
var_r28 = &Hu3DData[var_r18];
|
|
var_r28->unk_120 = HuMemDirectMallocNum(HEAP_DATA, sizeof(UnkM450Struct), var_r28->unk_48);
|
|
var_r31 = var_r28->unk_120;
|
|
arg0->useNum++;
|
|
var_r31->unk_04 = arg0;
|
|
var_r31->unk_08 = arg1;
|
|
var_r31->unk_0C = arg2;
|
|
var_r31->unk_64 = arg3;
|
|
var_r31->unk_6A = 0;
|
|
var_r31->unk_00 = 0;
|
|
var_r31->unk_66 = arg3;
|
|
var_r31->unk_6B = 0;
|
|
var_r31->unk_10 = HuMemDirectMallocNum(HEAP_DATA, arg3 * 0x40, var_r28->unk_48);
|
|
for (var_r24 = var_r31->unk_10, var_r30 = 0; var_r30 < arg3; var_r30++, var_r24++) {
|
|
var_r24->unk_3E = -1;
|
|
var_r24->unk_3C = -1;
|
|
}
|
|
var_r31->unk_14 = HuMemDirectMallocNum(HEAP_DATA, arg3 * sizeof(Vec) * 4, var_r28->unk_48);
|
|
for (var_r25 = var_r31->unk_14, var_r30 = 0; var_r30 < (arg3 * 4); var_r30++, var_r25++) {
|
|
var_r25->x = 0.0f;
|
|
var_r25->y = 0.0f;
|
|
var_r25->z = 0.0f;
|
|
}
|
|
var_r31->unk_20 = HuMemDirectMallocNum(HEAP_DATA, arg3 * sizeof(GXColor), var_r28->unk_48);
|
|
for (var_r26 = var_r31->unk_20, var_r30 = 0; var_r30 < arg3; var_r30++, var_r26++) {
|
|
var_r26->r = 0xFF;
|
|
var_r26->g = 0xFF;
|
|
var_r26->b = 0xFF;
|
|
var_r26->a = 0xFF;
|
|
}
|
|
var_r31->unk_18 = HuMemDirectMallocNum(HEAP_DATA, arg3 * sizeof(Vec2f) * 4, var_r28->unk_48);
|
|
var_r29 = var_r31->unk_18;
|
|
for (var_r30 = 0; var_r30 < arg3; var_r30++) {
|
|
var_r29->x = 0.0f;
|
|
var_r29->y = 0.0f;
|
|
var_r29++;
|
|
var_r29->x = 1.0f;
|
|
var_r29->y = 0.0f;
|
|
var_r29++;
|
|
var_r29->x = 1.0f;
|
|
var_r29->y = 1.0f;
|
|
var_r29++;
|
|
var_r29->x = 0.0f;
|
|
var_r29->y = 1.0f;
|
|
var_r29++;
|
|
}
|
|
if ((arg4 != 0) || (arg5 != 0)) {
|
|
var_r21 = arg0->bmp->sizeX / arg4;
|
|
var_r17 = arg0->bmp->sizeY / arg5;
|
|
var_r31->unk_68 = var_r21 * var_r17;
|
|
var_r31->unk_5C = 1.0f / var_r21;
|
|
var_r31->unk_60 = 1.0f / var_r17;
|
|
}
|
|
else {
|
|
var_r21 = 1;
|
|
var_r31->unk_68 = 1;
|
|
var_r31->unk_5C = 1.0f;
|
|
var_r31->unk_60 = 1.0f;
|
|
}
|
|
var_r31->unk_1C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_68 * sizeof(Vec2f), var_r28->unk_48);
|
|
fn_1_5E0C(var_r31->unk_1C, var_r31->unk_68, var_r21, var_r31->unk_5C, var_r31->unk_60);
|
|
var_r31->unk_28.x = var_r31->unk_4C = var_r31->unk_44 = var_r31->unk_50 = -arg8;
|
|
var_r31->unk_38 = arg8;
|
|
var_r31->unk_28.y = arg8;
|
|
var_r31->unk_40 = arg8;
|
|
var_r31->unk_34 = arg8;
|
|
var_r31->unk_28.z = var_r31->unk_3C = var_r31->unk_48 = var_r31->unk_54 = 0.0f;
|
|
var_r19 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, var_r28->unk_48);
|
|
sp1C = var_r19;
|
|
GXBeginDisplayList(sp1C, 0x20000);
|
|
GXBegin(GX_QUADS, GX_VTXFMT0, arg3 * 4);
|
|
for (var_r30 = 0; var_r30 < arg3; var_r30++) {
|
|
// TODO is this right?
|
|
GXPosition1x16(var_r30 * 4);
|
|
GXPosition1x16(var_r30);
|
|
GXPosition1x16(var_r30 * 4);
|
|
|
|
GXPosition1x16(var_r30 * 4 + 1);
|
|
GXPosition1x16(var_r30);
|
|
GXPosition1x16(var_r30 * 4 + 1);
|
|
|
|
GXPosition1x16(var_r30 * 4 + 2);
|
|
GXPosition1x16(var_r30);
|
|
GXPosition1x16(var_r30 * 4 + 2);
|
|
|
|
GXPosition1x16(var_r30 * 4 + 3);
|
|
GXPosition1x16(var_r30);
|
|
GXPosition1x16(var_r30 * 4 + 3);
|
|
}
|
|
var_r31->unk_58 = GXEndDisplayList();
|
|
DCFlushRangeNoSync(var_r19, var_r31->unk_58);
|
|
var_r31->unk_24 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_58, var_r28->unk_48);
|
|
memcpy(var_r31->unk_24, var_r19, var_r31->unk_58);
|
|
DCFlushRangeNoSync(var_r31->unk_24, var_r31->unk_58);
|
|
HuMemDirectFree(var_r19);
|
|
return var_r18;
|
|
}
|
|
|
|
UnkM450Struct2 *fn_1_6530(s16 arg0, Vec *arg1, GXColor *arg2, float arg8, float arg9)
|
|
{
|
|
UnkM450Struct2 *var_r31;
|
|
UnkM450Struct *var_r30;
|
|
s16 var_r29;
|
|
ModelData *var_r28;
|
|
|
|
var_r28 = &Hu3DData[arg0];
|
|
var_r30 = var_r28->unk_120;
|
|
if (var_r30->unk_6B != 0) {
|
|
return NULL;
|
|
}
|
|
|
|
for (var_r29 = 0, var_r31 = var_r30->unk_10; var_r29 < var_r30->unk_64; var_r29++, var_r31++) {
|
|
if (var_r31->unk_3E < 0) {
|
|
break;
|
|
}
|
|
}
|
|
if (var_r29 == var_r30->unk_64) {
|
|
return NULL;
|
|
}
|
|
var_r30->unk_20[var_r29] = *arg2;
|
|
var_r31->unk_30 = *arg1;
|
|
var_r31->unk_2C = arg8;
|
|
var_r31->unk_28 = arg9;
|
|
var_r31->unk_3C = 0;
|
|
var_r31->unk_00 = 0;
|
|
var_r31->unk_3E = var_r29;
|
|
return var_r31;
|
|
}
|
|
|
|
void fn_1_6638(s16 arg0, UnkM450ModelFunc arg1)
|
|
{
|
|
ModelData *var_r31 = &Hu3DData[arg0];
|
|
UnkM450Struct *var_r30 = var_r31->unk_120;
|
|
var_r30->unk_00 = arg1;
|
|
}
|
|
|
|
void fn_1_6670(s16 arg0, u8 arg1)
|
|
{
|
|
ModelData *var_r31 = &Hu3DData[arg0];
|
|
((UnkM450Struct *)var_r31->unk_120)->unk_6A = arg1;
|
|
}
|
|
|
|
void fn_1_66A0(s16 arg0)
|
|
{
|
|
ModelData *var_r31 = &Hu3DData[arg0];
|
|
UnkM450Struct *var_r30 = var_r31->unk_120;
|
|
var_r30->unk_6B = 1;
|
|
}
|
|
|
|
s32 fn_1_66DC(s16 arg0)
|
|
{
|
|
ModelData *var_r30 = &Hu3DData[arg0];
|
|
UnkM450Struct *var_r31 = var_r30->unk_120;
|
|
|
|
if ((var_r31->unk_6B != 0) && (var_r31->unk_66 == 0)) {
|
|
HuMemDirectFree(var_r31->unk_10);
|
|
HuMemDirectFree(var_r31->unk_14);
|
|
HuMemDirectFree(var_r31->unk_20);
|
|
HuMemDirectFree(var_r31->unk_18);
|
|
HuMemDirectFree(var_r31->unk_1C);
|
|
HuMemDirectFree(var_r31->unk_24);
|
|
HuSprAnimKill(var_r31->unk_04);
|
|
HuMemDirectFree(var_r30->unk_120);
|
|
Hu3DModelKill(arg0);
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void fn_1_6798(s16 arg0, s16 arg1, Vec *arg2, float arg8, float arg9, float argA)
|
|
{
|
|
UnkM450Struct2 *var_r31;
|
|
s16 var_r27;
|
|
|
|
GXColor sp18 = { 0xFF, 0xFF, 0xFF, 0xFF };
|
|
for (var_r27 = 0; var_r27 < arg1; var_r27++) {
|
|
var_r31 = fn_1_6530(arg0, arg2, &sp18, 0.0f, 0.0f);
|
|
if (!var_r31) {
|
|
break;
|
|
}
|
|
var_r31->unk_04 = *arg2;
|
|
var_r31->unk_10 = 0.0f;
|
|
var_r31->unk_14 = arg8;
|
|
var_r31->unk_1C = 5.0f;
|
|
var_r31->unk_20 = arg9;
|
|
var_r31->unk_24 = argA;
|
|
var_r31->unk_18 = (20.0f * frandf()) - 10.0f;
|
|
var_r31->unk_1C = var_r31->unk_1C * (0.8f + (0.4f * frandf()));
|
|
var_r31->unk_20 = var_r31->unk_20 * (0.9f + (0.3f * frandf()));
|
|
}
|
|
}
|
|
|
|
s16 fn_1_69F8(Vec *arg0, float *arg1, s16 arg2)
|
|
{
|
|
s16 var_r31;
|
|
void *var_r30;
|
|
ModelData *var_r29;
|
|
ModelData *var_r28;
|
|
|
|
var_r31 = fn_1_5ED8(lbl_1_bss_14, arg0, arg1, arg2, 80.0f, 0x40, 0x40);
|
|
fn_1_6638(var_r31, fn_1_5148);
|
|
fn_1_6670(var_r31, 1);
|
|
Hu3DModelLayerSet(var_r31, 5);
|
|
return var_r31;
|
|
}
|
|
|
|
float fn_1_6AC8(float arg8, float arg9, float argA, float argB)
|
|
{
|
|
if (argA >= argB) {
|
|
return arg9;
|
|
}
|
|
return arg8 + ((arg9 - arg8) * sind(((90.0f / argB) * argA)));
|
|
}
|
|
|
|
float fn_1_6B90(float arg8, float arg9, float argA, float argB)
|
|
{
|
|
if (argA >= argB) {
|
|
return arg9;
|
|
}
|
|
return arg8 + ((arg9 - arg8) * (1.0 - cosd(((90.0f / argB) * argA))));
|
|
}
|
|
|
|
void fn_1_6C68(s32 arg0)
|
|
{
|
|
lbl_1_bss_10 = 0;
|
|
lbl_1_bss_C = arg0;
|
|
HuWinInit(1);
|
|
}
|
|
|
|
void fn_1_6CB0(void (*arg0)(), s32 arg1)
|
|
{
|
|
if ((arg1 < 0) || (fn_1_13B90(arg1) == 0)) {
|
|
lbl_1_bss_10++;
|
|
HuPrcChildCreate(arg0, 0x64, 0x2000, 0, HuPrcCurrentGet());
|
|
}
|
|
}
|
|
|
|
void fn_1_6D2C(void)
|
|
{
|
|
lbl_1_bss_10--;
|
|
HuPrcEnd();
|
|
}
|
|
|
|
void fn_1_6D68(float *arg0, s32 arg1)
|
|
{
|
|
float spC[2];
|
|
|
|
HuWinMesMaxSizeGet(1, spC, arg1);
|
|
if (spC[0] > arg0[0]) {
|
|
arg0[0] = spC[0];
|
|
}
|
|
if (spC[1] > arg0[1]) {
|
|
arg0[1] = spC[1];
|
|
}
|
|
}
|
|
|
|
GXColor lbl_1_data_9F[3] = {
|
|
{ 0xFF, 0xFF, 0xCC, 0xE6 },
|
|
{ 0xCC, 0xFF, 0xFF, 0xE6 },
|
|
{ 0xFF, 0xCC, 0xFF, 0xE6 },
|
|
};
|
|
|
|
s32 lbl_1_data_AC[2] = { DATA_MAKE_NUM(DATADIR_M450, 0x2C), DATA_MAKE_NUM(DATADIR_M450, 0x2D) };
|
|
|
|
s32 lbl_1_data_B4[0x13] = {
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x2E),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x2F),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x30),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x31),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x32),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x33),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x34),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x35),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x36),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x37),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x38),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x39),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x3A),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x3B),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x3C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x3D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x3E),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x3F),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x40),
|
|
};
|
|
|
|
s32 lbl_1_data_100[5] = {
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x41),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x42),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x43),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x44),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x45),
|
|
};
|
|
s32 lbl_1_data_114[0xF] = {
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x46),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x47),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x47),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x49),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x4A),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x4B),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x4C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x4D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x4E),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x4F),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x50),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x51),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x52),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x53),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x54),
|
|
};
|
|
s32 lbl_1_data_150[0xF] = {
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x55),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x56),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x56),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x58),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x59),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x5A),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x5B),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x55),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x5C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x5D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x5E),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x5F),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x60),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x61),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x62),
|
|
};
|
|
s32 lbl_1_data_18C[8] = { 0, 1, 2, 1, 1, -1, -1, -1 };
|
|
s32 lbl_1_data_1AC[8] = { 0, 1, 2, 1, 1, -1, -1, -1 };
|
|
s32 lbl_1_data_1CC[4] = { 0x3E, 0x65, 0x3F, 0x66 };
|
|
UnkData204Struct lbl_1_data_1DC[5] = {
|
|
{ 8.5f * REFRESH_RATE, 0 },
|
|
{ 5.0f * REFRESH_RATE, 1 },
|
|
{ 5.0f * REFRESH_RATE, 0 },
|
|
{ 5.0f * REFRESH_RATE, 1 },
|
|
{ 0.0f, 0 },
|
|
};
|
|
UnkData204Struct lbl_1_data_204[6] = {
|
|
{ 3.5f * REFRESH_RATE, 0 },
|
|
{ 5.0f * REFRESH_RATE, 1 },
|
|
{ 5.0f * REFRESH_RATE, 0 },
|
|
{ 5.0f * REFRESH_RATE, 1 },
|
|
{ 5.0f * REFRESH_RATE, 0 },
|
|
{ 0.0f, 0 },
|
|
};
|
|
Vec2f lbl_1_data_234[4] = {
|
|
{ 5.0f * REFRESH_RATE, 5.0f * REFRESH_RATE },
|
|
{ 5.0f * REFRESH_RATE, 4.0f * REFRESH_RATE },
|
|
{ 5.0f * REFRESH_RATE, 3.5f * REFRESH_RATE },
|
|
{ 5.0f * REFRESH_RATE, 3.0f * REFRESH_RATE },
|
|
};
|
|
float lbl_1_data_254[5] = { 0.4f, 0.35f, 0.3f, 0.25f, 0.2f };
|
|
float lbl_1_data_268[5] = { 0.45f, 0.4f, 0.35f, 0.3f, 0.25f };
|
|
float lbl_1_data_27C[5] = { 0.5f, 0.45f, 0.4f, 0.35f, 0.3f };
|
|
float lbl_1_data_290[5] = { 0.55f, 0.5f, 0.45f, 0.4f, 0.35f };
|
|
|
|
s32 fn_1_6DD8(float arg8, float arg9, float argA, float argB, s32 arg0)
|
|
{
|
|
float spC[2];
|
|
|
|
float var_f30;
|
|
float var_f29;
|
|
float var_f25;
|
|
float var_f24;
|
|
float var_f19;
|
|
float var_f18;
|
|
|
|
s32 var_r31;
|
|
WindowData *var_r30;
|
|
GXColor *var_r29;
|
|
s32 var_r28;
|
|
|
|
if (555.0f < (arg8 + argA)) {
|
|
arg8 = 555.0f - argA;
|
|
}
|
|
if (21.0f > arg8) {
|
|
arg8 = 21.0f;
|
|
}
|
|
lbl_1_bss_10++;
|
|
var_r28 = HuWinCreate(arg8, arg9, argA, argB, 1);
|
|
var_r30 = &winData[var_r28];
|
|
var_r29 = &lbl_1_data_9F[arg0];
|
|
HuWinBGTPLvlSet(var_r28, var_r29->a / 255.0f);
|
|
HuSprColorSet(var_r30->group, 0, var_r29->r, var_r29->g, var_r29->b);
|
|
var_r30->mess_color = 0;
|
|
var_r30->mess_shadow_color = 9;
|
|
var_r30->attr |= 0x80;
|
|
var_r30->active_pad = 0;
|
|
var_f30 = arg8 + (0.5f * argA);
|
|
var_f25 = 4.0f / argA;
|
|
if (((4.0f + var_f30) - (arg8 + argA)) >= 0.0f) {
|
|
var_f30 = (arg8 + argA) - 4.0f;
|
|
}
|
|
else if ((arg8 - (var_f30 - 2.0f)) >= 0.0f) {
|
|
var_f30 = arg8;
|
|
}
|
|
else {
|
|
var_f30 -= 2.0f;
|
|
}
|
|
var_f29 = arg9 + (0.5f * argB);
|
|
var_f24 = 4.0f / argB;
|
|
if (((4.0f + var_f29) - (arg9 + argB)) >= 0.0f) {
|
|
var_f29 = (arg9 + argB) - 4.0f;
|
|
}
|
|
else if ((arg9 - (var_f29 - 2.0f)) >= 0.0f) {
|
|
var_f29 = arg9;
|
|
}
|
|
else {
|
|
var_f29 -= 2.0f;
|
|
}
|
|
for (var_r31 = 0; var_r31 < 0xA; var_r31++) {
|
|
var_f19 = fn_1_6AC8(var_f30, arg8, var_r31, 10.0f);
|
|
spC[1] = fn_1_6AC8(var_f25, 1.0f, var_r31, 10.0f);
|
|
var_f18 = fn_1_6AC8(var_f29, arg9, var_r31, 10.0f);
|
|
spC[0] = fn_1_6AC8(var_f24, 1.0f, var_r31, 10.0f);
|
|
HuWinPosSet(var_r28, var_f19, var_f18);
|
|
HuWinScaleSet(var_r28, spC[1], spC[0]);
|
|
HuPrcVSleep();
|
|
}
|
|
HuWinPosSet(var_r28, arg8, arg9);
|
|
HuWinScaleSet(var_r28, 1.0f, 1.0f);
|
|
HuPrcVSleep();
|
|
return var_r28;
|
|
}
|
|
|
|
void fn_1_74EC(s32 arg0)
|
|
{
|
|
float sp8[2];
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f29;
|
|
float var_f28;
|
|
float var_f27;
|
|
float var_f25;
|
|
float var_f26;
|
|
float var_f24;
|
|
float var_f19;
|
|
float var_f18;
|
|
|
|
s32 var_r31;
|
|
WindowData *var_r30;
|
|
|
|
HuWinMesSet(arg0, 0x1D0016);
|
|
HuPrcVSleep();
|
|
var_r30 = &winData[arg0];
|
|
var_f29 = var_r30->pos_x;
|
|
var_f28 = var_r30->pos_y;
|
|
var_f27 = var_r30->w;
|
|
var_f26 = var_r30->h;
|
|
var_f31 = var_f29 + (0.5f * var_f27);
|
|
var_f25 = 4.0f / var_f27;
|
|
if (((4.0f + var_f31) - (var_f29 + var_f27)) >= 0.0f) {
|
|
var_f31 = (var_f29 + var_f27) - 4.0f;
|
|
}
|
|
else if ((var_f29 - (var_f31 - 2.0f)) >= 0.0f) {
|
|
var_f31 = var_f29;
|
|
}
|
|
else {
|
|
var_f31 -= 2.0f;
|
|
}
|
|
var_f30 = var_f28 + (0.5f * var_f26);
|
|
var_f24 = 4.0f / var_f26;
|
|
if (((4.0f + var_f30) - (var_f28 + var_f26)) >= 0.0f) {
|
|
var_f30 = (var_f28 + var_f26) - 4.0f;
|
|
}
|
|
else if ((var_f28 - (var_f30 - 2.0f)) >= 0.0f) {
|
|
var_f30 = var_f28;
|
|
}
|
|
else {
|
|
var_f30 -= 2.0f;
|
|
}
|
|
for (var_r31 = 0; var_r31 < 0xA; var_r31++) {
|
|
var_f19 = fn_1_6B90(var_f29, var_f31, var_r31, 10.0f);
|
|
sp8[1] = fn_1_6B90(1.0f, var_f25, var_r31, 10.0f);
|
|
var_f18 = fn_1_6B90(var_f28, var_f30, var_r31, 10.0f);
|
|
sp8[0] = fn_1_6B90(1.0f, var_f24, var_r31, 10.0f);
|
|
HuWinPosSet(arg0, var_f19, var_f18);
|
|
HuWinScaleSet(arg0, sp8[1], sp8[0]);
|
|
HuPrcVSleep();
|
|
}
|
|
HuWinPosSet(arg0, var_f31, var_f30);
|
|
HuWinScaleSet(arg0, var_f25, var_f24);
|
|
HuPrcVSleep();
|
|
HuWinKill(arg0);
|
|
lbl_1_bss_10--;
|
|
}
|
|
|
|
void fn_1_7B90(s32 arg0, u32 arg1)
|
|
{
|
|
winData[arg0].mess_color = 0;
|
|
winData[arg0].mess_shadow_color = 9;
|
|
winData[arg0].attr |= 0x80;
|
|
HuWinMesSet(arg0, arg1);
|
|
}
|
|
|
|
void fn_1_7C14(s32 arg0, s32 arg1)
|
|
{
|
|
HuWinComKeyReset();
|
|
if (arg1 > 0) {
|
|
HuPrcSleep(arg1);
|
|
}
|
|
else {
|
|
winData[arg0].active_pad = 1 << lbl_1_bss_C;
|
|
HuWinMesWait(arg0);
|
|
}
|
|
HuWinComKeyReset();
|
|
}
|
|
|
|
void fn_1_7C98(s32 arg0)
|
|
{
|
|
s32 var_r31;
|
|
|
|
HuWinComKeyReset();
|
|
winData[arg0].active_pad = 1 << lbl_1_bss_C;
|
|
var_r31 = HuWinChoiceGet(arg0, 1);
|
|
if ((var_r31 == -1) || (var_r31 == 1)) {
|
|
lbl_1_bss_8 = 0;
|
|
}
|
|
else {
|
|
lbl_1_bss_8 = 1;
|
|
}
|
|
HuWinComKeyReset();
|
|
}
|
|
|
|
void fn_1_7D40(void)
|
|
{
|
|
Vec sp18;
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f29;
|
|
|
|
s32 var_r31;
|
|
|
|
float sp10[2] = { 0.0f, 0.0f };
|
|
s32 sp24[22] = {
|
|
0x002D0003,
|
|
0x0000003E,
|
|
0x002D0009,
|
|
0x0000003E,
|
|
0x002D000B,
|
|
0x0000003E,
|
|
0x002D000D,
|
|
0x0000003E,
|
|
0x002D000F,
|
|
0x0000003E,
|
|
0x002D0011,
|
|
0x0000003E,
|
|
0x002D0013,
|
|
0x0000003E,
|
|
0x002D0015,
|
|
0x0000003E,
|
|
0x002D0017,
|
|
0x0000003E,
|
|
0x002D0019,
|
|
0x0000003E,
|
|
0x002D001B,
|
|
0x0000003F,
|
|
};
|
|
fn_1_E178(0, 1);
|
|
fn_1_6D68(sp10, sp24[lbl_1_bss_4 * 2]);
|
|
sp18 = lbl_1_bss_34[0];
|
|
sp18.y += 200.0f;
|
|
Hu3D3Dto2D(&sp18, 1, &sp18);
|
|
if (sp24[(lbl_1_bss_4 * 2) + 1] >= 0) {
|
|
var_f30 = 32.0f + (64.0f * (sp18.x / 576.0f));
|
|
if (32.0f > var_f30) {
|
|
var_f30 = 32.0f;
|
|
}
|
|
if (96.0f < var_f30) {
|
|
var_f30 = 96.0f;
|
|
}
|
|
HuAudFXPanning(fn_1_E0E8(0, sp24[(lbl_1_bss_4 * 2) + 1]), (s32)var_f30);
|
|
}
|
|
var_f31 = sp18.x - (sp10[0] / 2);
|
|
var_f29 = 72.0f;
|
|
if (lbl_1_bss_4 >= 5) {
|
|
if (var_f29 > var_f31) {
|
|
var_f31 = var_f29;
|
|
}
|
|
if ((576.0f - var_f29) < (var_f31 + sp10[0])) {
|
|
var_f31 = (576.0f - var_f29) - sp10[0];
|
|
}
|
|
}
|
|
var_r31 = fn_1_6DD8(var_f31, sp18.y - sp10[1], sp10[0], sp10[1], 0);
|
|
fn_1_7B90(var_r31, sp24[lbl_1_bss_4 * 2]);
|
|
fn_1_7C14(var_r31, lbl_1_bss_0);
|
|
fn_1_74EC(var_r31);
|
|
fn_1_E178(0, 0);
|
|
fn_1_6D2C();
|
|
}
|
|
|
|
void fn_1_8120(void)
|
|
{
|
|
Vec sp18;
|
|
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f29;
|
|
|
|
s32 var_r31;
|
|
s32 var_r30;
|
|
s32 var_r29;
|
|
|
|
float sp10[2] = { 0.0f, 0.0f };
|
|
s32 sp24[22] = {
|
|
0x002D0002,
|
|
0x0000003E,
|
|
0x002D0008,
|
|
0x0000003E,
|
|
0x002D000A,
|
|
0x0000003E,
|
|
0x002D000C,
|
|
0x0000003E,
|
|
0x002D000E,
|
|
0x0000003E,
|
|
0x002D0010,
|
|
0x0000003E,
|
|
0x002D0012,
|
|
0x0000003E,
|
|
0x002D0014,
|
|
0x0000003E,
|
|
0x002D0016,
|
|
0x0000003E,
|
|
0x002D0018,
|
|
0x0000003F,
|
|
0x002D001A,
|
|
0x0000003F,
|
|
};
|
|
fn_1_E178(1, 1);
|
|
fn_1_6D68(sp10, sp24[lbl_1_bss_4 * 2]);
|
|
sp18 = lbl_1_bss_34[1];
|
|
sp18.y += 200.0f;
|
|
Hu3D3Dto2D(&sp18, 1, &sp18);
|
|
if (sp24[(lbl_1_bss_4 * 2) + 1] >= 0) {
|
|
var_f30 = 32.0f + (64.0f * (sp18.x / 576.0f));
|
|
if (32.0f > var_f30) {
|
|
var_f30 = 32.0f;
|
|
}
|
|
if (96.0f < var_f30) {
|
|
var_f30 = 96.0f;
|
|
}
|
|
HuAudFXPanning(fn_1_E0E8(1, sp24[(lbl_1_bss_4 * 2) + 1]), (s32)var_f30);
|
|
}
|
|
var_f31 = sp18.x - (sp10[0] / 2);
|
|
var_f29 = 72.0f;
|
|
if (lbl_1_bss_4 >= 5) {
|
|
if (var_f29 > var_f31) {
|
|
var_f31 = var_f29;
|
|
}
|
|
if ((576.0f - var_f29) < (var_f31 + sp10[0])) {
|
|
var_f31 = (576.0f - var_f29) - sp10[0];
|
|
}
|
|
}
|
|
var_r31 = fn_1_6DD8(var_f31, sp18.y - sp10[1], sp10[0], sp10[1], 1);
|
|
fn_1_7B90(var_r31, sp24[lbl_1_bss_4 * 2]);
|
|
fn_1_7C14(var_r31, lbl_1_bss_0);
|
|
fn_1_74EC(var_r31);
|
|
fn_1_E178(1, 0);
|
|
fn_1_6D2C();
|
|
}
|
|
|
|
void fn_1_8500(void)
|
|
{
|
|
float sp28;
|
|
float sp20;
|
|
float sp18;
|
|
float sp10;
|
|
float sp8;
|
|
|
|
s32 var_r31;
|
|
|
|
float sp30[2] = { 0.0f, 0.0f };
|
|
fn_1_6D68(sp30, 0x2D0001);
|
|
fn_1_6D68(sp30, 0x2D0004);
|
|
fn_1_6D68(sp30, 0x2D0005);
|
|
fn_1_6D68(sp30, 0x2D0006);
|
|
fn_1_6D68(sp30, 0x2D0007);
|
|
var_r31 = fn_1_6DD8((576.0f - sp30[0]) / 2, 48.0f, sp30[0], sp30[1], 2);
|
|
HuAudFXPlay(0x3A);
|
|
fn_1_A968(3, 8.0f, 0, 0, 0.0f);
|
|
fn_1_7B90(var_r31, 0x2D0001);
|
|
fn_1_7C14(var_r31, -1);
|
|
lbl_1_bss_4 = 0;
|
|
lbl_1_bss_0 = 0x78;
|
|
fn_1_E1A8(0, 8, 8.0f, 0, 7, 0.0f);
|
|
fn_1_E1A8(1, 8, 8.0f, 0, 7, 0.0f);
|
|
fn_1_6CB0(fn_1_7D40, -1);
|
|
fn_1_6CB0(fn_1_8120, -1);
|
|
|
|
while (lbl_1_bss_10 > 2) {
|
|
HuPrcVSleep();
|
|
}
|
|
HuAudFXPlay(0x3B);
|
|
fn_1_A968(4, 8.0f, 0, 0, REFRESH_RATE);
|
|
fn_1_E1A8(0, 9, 8.0f, 0, 7, REFRESH_RATE);
|
|
fn_1_E1A8(1, 9, 8.0f, 0, 7, REFRESH_RATE);
|
|
fn_1_7B90(var_r31, 0x2D0004);
|
|
fn_1_7C14(var_r31, -1);
|
|
HuAudFXPlay(0x3C);
|
|
fn_1_7B90(var_r31, 0x2D0005);
|
|
fn_1_7C14(var_r31, -1);
|
|
fn_1_7B90(var_r31, 0x2D0006);
|
|
fn_1_7C14(var_r31, -1);
|
|
HuAudFXPlay(0x3A);
|
|
fn_1_7B90(var_r31, 0x2D0007);
|
|
fn_1_7C14(var_r31, -1);
|
|
fn_1_74EC(var_r31);
|
|
fn_1_6D2C();
|
|
}
|
|
|
|
void fn_1_8BDC(void)
|
|
{
|
|
s32 var_r31;
|
|
|
|
lbl_1_bss_4 = 2;
|
|
lbl_1_bss_0 = -1;
|
|
fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_8120, -1);
|
|
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_7D40, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f);
|
|
lbl_1_bss_4 = 3;
|
|
lbl_1_bss_0 = -1;
|
|
fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_8120, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_7D40, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
HuPrcSleep(0x1E);
|
|
fn_1_1F58(0x3E8);
|
|
lbl_1_bss_4 = 4;
|
|
lbl_1_bss_0 = 0x1E;
|
|
fn_1_E1A8(0, 0xC, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_E1A8(1, 0xC, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_7D40, -1);
|
|
fn_1_6CB0(fn_1_8120, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_6D2C();
|
|
}
|
|
|
|
void fn_1_9074(void)
|
|
{
|
|
lbl_1_bss_4 = 5;
|
|
lbl_1_bss_0 = 0x1E;
|
|
fn_1_6CB0(fn_1_7D40, -1);
|
|
fn_1_6CB0(fn_1_8120, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
lbl_1_bss_4 = 6;
|
|
lbl_1_bss_0 = -1;
|
|
fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_8120, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_7D40, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f);
|
|
lbl_1_bss_4 = 7;
|
|
lbl_1_bss_0 = -1;
|
|
fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_8120, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_7D40, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f);
|
|
lbl_1_bss_4 = 8;
|
|
lbl_1_bss_0 = -1;
|
|
fn_1_E1A8(1, 0xE, 8.0f, 0, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_8120, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f);
|
|
fn_1_E1A8(0, 0xE, 8.0f, 0, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_7D40, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f);
|
|
lbl_1_bss_4 = 9;
|
|
lbl_1_bss_0 = 0x1E;
|
|
fn_1_6CB0(fn_1_7D40, -1);
|
|
fn_1_6CB0(fn_1_8120, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_6D2C();
|
|
}
|
|
|
|
void fn_1_96C0(void)
|
|
{
|
|
lbl_1_bss_4 = 0xA;
|
|
lbl_1_bss_0 = -1;
|
|
fn_1_E1A8(1, 4, 8.0f, 0, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_8120, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_E1A8(0, 4, 8.0f, 0, -1, 0.0f);
|
|
fn_1_6CB0(fn_1_7D40, -1);
|
|
while (lbl_1_bss_10 > 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_6D2C();
|
|
}
|
|
|
|
void fn_1_9824(void)
|
|
{
|
|
s32 var_r31;
|
|
|
|
float sp20[2] = { 0.0f, 0.0f };
|
|
fn_1_6D68(sp20, 0x2D001C);
|
|
fn_1_6D68(sp20, 0x2D001D);
|
|
fn_1_6D68(sp20, 0x2D001E);
|
|
var_r31 = fn_1_6DD8((576.0f - sp20[0]) / 2, 132.0f, sp20[0], sp20[1], 2);
|
|
fn_1_A968(8, 8.0f, 0, 7, 0.0f);
|
|
HuAudFXPlay(0x3C);
|
|
fn_1_7B90(var_r31, 0x2D001C);
|
|
fn_1_7C14(var_r31, -1);
|
|
fn_1_7B90(var_r31, 0x2D001D);
|
|
fn_1_7C14(var_r31, -1);
|
|
HuAudFXPlay(0x3C);
|
|
fn_1_7B90(var_r31, 0x2D001E);
|
|
fn_1_7C14(var_r31, -1);
|
|
fn_1_74EC(var_r31);
|
|
fn_1_6D2C();
|
|
}
|
|
|
|
void fn_1_9BA4(void)
|
|
{
|
|
s32 var_r31;
|
|
float sp20[2] = { 0.0f, 0.0f };
|
|
|
|
fn_1_6D68(sp20, 0x2D001F);
|
|
fn_1_6D68(sp20, 0x2D0020);
|
|
fn_1_6D68(sp20, 0x2D0021);
|
|
var_r31 = fn_1_6DD8((576.0f - sp20[0]) / 2, 48.0f, sp20[0], sp20[1], 2);
|
|
HuAudFXPlay(0x3C);
|
|
fn_1_7B90(var_r31, 0x2D001F);
|
|
fn_1_7C14(var_r31, -1);
|
|
fn_1_A968(5, 8.0f, 0, 6, 0.0f);
|
|
fn_1_7B90(var_r31, 0x2D0020);
|
|
fn_1_7C14(var_r31, -1);
|
|
HuAudFXPlay(0x3C);
|
|
fn_1_7B90(var_r31, 0x2D0021);
|
|
fn_1_7C14(var_r31, -1);
|
|
fn_1_A968(0, 8.0f, 0, -1, 0.0f);
|
|
fn_1_74EC(var_r31);
|
|
fn_1_6D2C();
|
|
}
|
|
|
|
void fn_1_9F4C(UnkM450Struct3 *arg0, s32 arg1, Vec *arg2, s8 arg3)
|
|
{
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f29;
|
|
float var_f28;
|
|
float var_f27;
|
|
float var_f26;
|
|
float var_f25;
|
|
|
|
s32 var_r29;
|
|
s32 var_r28;
|
|
s32 var_r27;
|
|
|
|
if (90.0f <= arg0->unk_E4) {
|
|
arg0->unk_00.unk_6C.y -= 10.0f;
|
|
return;
|
|
}
|
|
var_r29 = 1;
|
|
if (arg3 == 0x78) {
|
|
if (arg2->x > arg0->unk_00.unk_6C.x) {
|
|
var_r29 = 0;
|
|
}
|
|
}
|
|
else if (arg2->z < arg0->unk_00.unk_6C.z) {
|
|
var_r29 = 0;
|
|
}
|
|
if (var_r29 != 0) {
|
|
arg0->unk_E4 += 5.0f;
|
|
if (0.0f > arg2->x) {
|
|
var_f30 = -arg2->x;
|
|
}
|
|
else {
|
|
var_f30 = arg2->x;
|
|
}
|
|
var_f31 = var_f30;
|
|
if (0.0f > arg2->y) {
|
|
var_f29 = -arg2->y;
|
|
}
|
|
else {
|
|
var_f29 = arg2->y;
|
|
}
|
|
if (var_f31 < var_f29) {
|
|
if (0.0f > arg2->y) {
|
|
var_f28 = -arg2->y;
|
|
}
|
|
else {
|
|
var_f28 = arg2->y;
|
|
}
|
|
var_f31 = var_f28;
|
|
}
|
|
if (0.0f > arg2->z) {
|
|
var_f27 = -arg2->z;
|
|
}
|
|
else {
|
|
var_f27 = arg2->z;
|
|
}
|
|
if (var_f31 < var_f27) {
|
|
if (0.0f > arg2->z) {
|
|
var_f26 = -arg2->z;
|
|
}
|
|
else {
|
|
var_f26 = arg2->z;
|
|
}
|
|
var_f31 = var_f26;
|
|
}
|
|
var_f31 = 1500.0f - var_f31;
|
|
if (arg3 == 0x78) {
|
|
if (0.0f > arg2->x) {
|
|
var_r28 = -1;
|
|
}
|
|
else {
|
|
var_r28 = 1;
|
|
}
|
|
arg0->unk_00.unk_6C.x = arg2->x + ((var_f31 * var_r28) * sind(arg0->unk_E4));
|
|
}
|
|
else {
|
|
if (0.0f > arg2->z) {
|
|
var_r27 = -1;
|
|
}
|
|
else {
|
|
var_r27 = 1;
|
|
}
|
|
arg0->unk_00.unk_6C.z = arg2->z + ((var_f31 * var_r27) * sind(arg0->unk_E4));
|
|
}
|
|
MTXRotRad(Hu3DData[arg1].unk_F0, 0x58, 0.017453292f * arg0->unk_E4);
|
|
arg0->unk_00.unk_6C.y = arg2->y + (var_f31 * cosd(arg0->unk_E4));
|
|
return;
|
|
}
|
|
if (arg3 == 0x78) {
|
|
arg0->unk_00.unk_20 = 0x48;
|
|
}
|
|
else {
|
|
arg0->unk_00.unk_24 = 0x48;
|
|
}
|
|
if (arg0->unk_154 & 0x200) {
|
|
var_f31 = arg0->unk_F0 - arg0->unk_00.unk_6C.x;
|
|
if (0.0f > var_f31) {
|
|
var_f25 = -var_f31;
|
|
}
|
|
else {
|
|
var_f25 = var_f31;
|
|
}
|
|
if (10.0f > var_f25) {
|
|
arg0->unk_154 &= ~0x200;
|
|
}
|
|
if (0.0f <= var_f31) {
|
|
arg0->unk_00.unk_20 = 0x48;
|
|
}
|
|
else {
|
|
arg0->unk_00.unk_20 = -0x48;
|
|
}
|
|
}
|
|
fn_1_40C0(&arg0->unk_00);
|
|
}
|
|
|
|
void fn_1_A3C4(omObjData *object, Vec *arg1, s32 arg2)
|
|
{
|
|
s32 var_r31;
|
|
|
|
if (1495.0f > arg1->y) {
|
|
for (var_r31 = 0; var_r31 < arg2; var_r31++) {
|
|
Hu3DModelShadowDispOff(object->model[var_r31]);
|
|
}
|
|
return;
|
|
}
|
|
for (var_r31 = 0; var_r31 < arg2; var_r31++) {
|
|
Hu3DModelShadowDispOn(object->model[var_r31]);
|
|
}
|
|
}
|
|
|
|
void fn_1_A470(UnkM450Struct3 *arg0, omObjData *arg1, char *arg2, s32 arg3)
|
|
{
|
|
s32 var_r30;
|
|
|
|
arg0->unk_CC = arg2;
|
|
arg0->unk_154 |= 1;
|
|
omSetTra(arg1, 0.0f, 0.0f, 0.0f);
|
|
omSetRot(arg1, 0.0f, 0.0f, 0.0f);
|
|
omSetSca(arg1, 1.0f, 1.0f, 1.0f);
|
|
for (var_r30 = 0; var_r30 < arg3; var_r30++) {
|
|
Hu3DModelPosSet(arg1->model[var_r30], 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelRotSet(arg1->model[var_r30], 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelScaleSet(arg1->model[var_r30], 1.0f, 1.0f, 1.0f);
|
|
}
|
|
}
|
|
|
|
void fn_1_A600(UnkM450Struct3 *arg0, omObjData *arg1, char *arg2, s32 arg3)
|
|
{
|
|
s32 var_r29;
|
|
|
|
arg0->unk_CC = arg2;
|
|
arg0->unk_154 &= ~1;
|
|
fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_CC, &arg0->unk_00.unk_6C, NULL);
|
|
omSetTra(arg1, 0.0f, 0.0f, 0.0f);
|
|
omSetRot(arg1, 0.0f, 0.0f, 0.0f);
|
|
for (var_r29 = 0; var_r29 < arg3; var_r29++) {
|
|
MTXIdentity(Hu3DData[arg1->model[var_r29]].unk_F0);
|
|
Hu3DModelPosSet(arg1->model[var_r29], 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelRotSet(arg1->model[var_r29], 0.0f, 0.0f, 0.0f);
|
|
}
|
|
}
|
|
|
|
s32 fn_1_A7CC(UnkM450Struct3 *arg0)
|
|
{
|
|
if (fn_1_19A10(&arg0->unk_00, &arg0->unk_D4) != 0) {
|
|
arg0->unk_150 += 1;
|
|
return 1;
|
|
}
|
|
fn_1_40C0(&arg0->unk_00);
|
|
return 0;
|
|
}
|
|
|
|
void fn_1_A828(UnkM450Struct3 *arg0, float arg8, float arg9, float argA)
|
|
{
|
|
float var_f31;
|
|
float var_f30;
|
|
|
|
arg0->unk_E0 += 1.0f;
|
|
var_f31 = arg0->unk_E0 / arg8;
|
|
if (1.0f < var_f31) {
|
|
var_f31 = 1.0f;
|
|
}
|
|
var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31));
|
|
arg0->unk_00.unk_6C.y = arg9 + ((var_f30) * (argA - arg9));
|
|
}
|
|
|
|
void fn_1_A968(s32 arg0, float arg8, u32 arg1, s32 arg2, float arg9)
|
|
{
|
|
UnkM450Struct3 *var_r31;
|
|
|
|
if (arg8 == 0.0f) {
|
|
Hu3DMotionSet(lbl_1_bss_134->model[0], lbl_1_bss_134->motion[arg0]);
|
|
}
|
|
else {
|
|
Hu3DMotionShiftSet(lbl_1_bss_134->model[0], lbl_1_bss_134->motion[arg0], 0.0f, arg8, arg1);
|
|
}
|
|
var_r31 = lbl_1_bss_134->data;
|
|
var_r31->unk_140 = -1;
|
|
var_r31->unk_154 &= ~0x2100;
|
|
if (arg2 >= 0) {
|
|
var_r31->unk_140 = arg2;
|
|
var_r31->unk_144 = arg9;
|
|
var_r31->unk_154 |= 0x100;
|
|
if (arg0 == 4 || arg0 == 5) {
|
|
var_r31->unk_154 |= 0x2000;
|
|
}
|
|
}
|
|
}
|
|
|
|
s32 lbl_1_data_F6C[6];
|
|
UnkDataA0CStruct lbl_1_data_A0C[2];
|
|
|
|
void fn_1_AAB0(UnkM450Struct3 *arg0, Vec2f *arg1, s32 arg2)
|
|
{
|
|
float var_f30;
|
|
float var_f31 = 1.0f;
|
|
if (arg2 != 0) {
|
|
var_f31 = arg0->unk_F4;
|
|
if ((lbl_1_data_F6C[lbl_1_bss_118] - lbl_1_bss_304) > 60 * REFRESH_RATE) {
|
|
arg0->unk_F4 = arg0->unk_F4 - 0.1f;
|
|
if (0.0f > arg0->unk_F4) {
|
|
arg0->unk_F4 = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
var_f30 = arg1->x - arg1->y;
|
|
arg0->unk_100 = arg1->y + (var_f30 * var_f31);
|
|
}
|
|
|
|
float fn_1_AB88(UnkM450Struct3 *arg0)
|
|
{
|
|
s32 var_r31 = lbl_1_data_A0C[1].unk_14 - 1;
|
|
if (var_r31 > 4) {
|
|
var_r31 = 4;
|
|
}
|
|
if (var_r31 < 0) {
|
|
var_r31 = 0;
|
|
}
|
|
return arg0->unk_D0[var_r31];
|
|
}
|
|
|
|
void fn_1_ABD0(omObjData *object)
|
|
{
|
|
float var_f29;
|
|
UnkM450Struct3 *var_r31 = object->data;
|
|
|
|
var_r31->unk_138 = 0;
|
|
var_f29 = sqrtf((var_r31->unk_00.unk_6C.x * var_r31->unk_00.unk_6C.x) + (var_r31->unk_00.unk_6C.z * var_r31->unk_00.unk_6C.z));
|
|
if (680.0f < var_f29) {
|
|
var_r31->unk_138 = 1;
|
|
var_r31->unk_00.unk_6C.x = 680.0f * (var_r31->unk_00.unk_6C.x / var_f29);
|
|
var_r31->unk_00.unk_6C.z = 680.0f * (var_r31->unk_00.unk_6C.z / var_f29);
|
|
}
|
|
}
|
|
|
|
void fn_1_AD58(omObjData *object)
|
|
{
|
|
Mtx sp1F8;
|
|
Vec spFC;
|
|
Vec spF0;
|
|
Vec spE4;
|
|
Vec spD8;
|
|
float spCC;
|
|
float spC8;
|
|
|
|
UnkM450Struct3 *var_r31;
|
|
Vec2f *var_r25;
|
|
s32 var_r20;
|
|
|
|
var_r20 = 0;
|
|
spE4 = ((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C;
|
|
var_r31 = object->data;
|
|
var_r31->unk_00.unk_20 = 0;
|
|
var_r31->unk_00.unk_24 = 0;
|
|
var_r31->unk_00.unk_28 = 0;
|
|
var_r31->unk_00.unk_2C = 0;
|
|
var_r31->unk_00.unk_30 = 0;
|
|
var_r31->unk_00.unk_34 = 0;
|
|
switch (var_r31->unk_150) {
|
|
case 0xBB8:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3EF) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_E4 = 0.0f;
|
|
var_r31->unk_154 = var_r31->unk_154 & 0xFFFFFEFF;
|
|
}
|
|
break;
|
|
case 0xBB9:
|
|
fn_1_9F4C(var_r31, object->model[0], lbl_1_bss_4C, 0x7A);
|
|
if (1000.0f > var_r31->unk_00.unk_6C.y) {
|
|
var_r31->unk_150++;
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
|
}
|
|
break;
|
|
case 0xBBA:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x402) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_00.unk_9C = 270.0f;
|
|
fn_1_A470(var_r31, object, "m450mex06-s4kuppa", 2);
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
|
}
|
|
break;
|
|
case 0xBBB:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x403) {
|
|
var_r31->unk_E0 += 1.0f;
|
|
if (30.0f < var_r31->unk_E0) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_E4 = 0.0f;
|
|
fn_1_A600(var_r31, object, "m450mex06-s4kuppa", 2);
|
|
omSetSca(object, 1.5f, 1.5f, 1.5f);
|
|
var_r31->unk_00.unk_9C = 270.0f;
|
|
var_r31->unk_00.unk_6C.y = 1505.0f;
|
|
}
|
|
}
|
|
break;
|
|
case 0xBBC:
|
|
fn_1_9F4C(var_r31, object->model[0], &lbl_1_bss_4C[3], 0x78);
|
|
if (1000.0f > var_r31->unk_00.unk_6C.y) {
|
|
var_r31->unk_150++;
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
|
lbl_1_bss_1A4->work[0] = 0x404;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
break;
|
|
case 0xBBD:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x409) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_E8 = 360.0f * frandf();
|
|
var_r31->unk_154 |= 2;
|
|
MTXIdentity(Hu3DData[object->model[0]].unk_F0);
|
|
omSetSca(object, 1.0f, 1.0f, 1.0f);
|
|
Hu3DModelScaleSet(object->model[1], 1.5f, 1.5f, 1.5f);
|
|
Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrReset(object->model[1], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelHookSet(object->model[1], "g000i00-itemhook_A", object->model[0]);
|
|
var_r31->unk_00.unk_6C.x = 0.0f;
|
|
var_r31->unk_00.unk_6C.y = 3000.0f;
|
|
var_r31->unk_00.unk_6C.z = 0.0f;
|
|
var_r31->unk_00.unk_9C = 270.0f;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
var_r31->unk_00.unk_3C |= 0x2020;
|
|
Hu3DMotionSet(object->model[0], object->motion[7]);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
|
}
|
|
break;
|
|
case 0xBBE:
|
|
fn_1_A828(var_r31, 2 * REFRESH_RATE, 3000.0f, 1605.0f);
|
|
if (lbl_1_bss_1A4->work[0] >= 0x40B) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_D4.x = 1200.0f;
|
|
var_r31->unk_D4.y = var_r31->unk_00.unk_6C.y;
|
|
var_r31->unk_D4.z = 0.0f;
|
|
}
|
|
break;
|
|
case 0xBBF:
|
|
fn_1_A828(var_r31, 60.0f, var_r31->unk_D4.y, 1605.0f);
|
|
if ((fn_1_A7CC(var_r31) != 0) && (lbl_1_bss_1A4->work[0] < 0x40C)) {
|
|
lbl_1_bss_1A4->work[0] = 0x40C;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
break;
|
|
case 0xBC0:
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.05f);
|
|
if (lbl_1_bss_1A4->work[0] >= 0x40D) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_EC = 0.0f;
|
|
var_r31->unk_104 = 0.0f;
|
|
fn_1_AAB0(var_r31, var_r31->unk_C8, 0);
|
|
var_r31->unk_D4 = var_r31->unk_00.unk_6C;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
break;
|
|
case 0xBC1:
|
|
if ((var_r31->unk_154 & 0x80) != 0) {
|
|
var_r31->unk_100 += 1.0f;
|
|
if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) {
|
|
var_r31->unk_154 = var_r31->unk_154 & 0xFFFFFF7F;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
}
|
|
else if ((var_r31->unk_134 > lbl_1_data_A0C[0].unk_14) || (lbl_1_data_A0C[0].unk_14 <= 0)) {
|
|
var_r31->unk_100 += 1.0f;
|
|
var_r31->unk_154 |= 0x80;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[8], 0.0f, 8.0f, 0);
|
|
}
|
|
VECSubtract(&((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &spF0);
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spF0.x, spF0.z), 0.4f);
|
|
var_r31->unk_100 -= 1.0f;
|
|
if (0.0f > var_r31->unk_100) {
|
|
var_r31->unk_150 = 0xBC2;
|
|
var_r31->unk_154 |= 0x10;
|
|
fn_1_AAB0(var_r31, var_r31->unk_C8, 0);
|
|
fn_1_17970(object->model[0], object->model[1], var_r31->unk_00.unk_9C - 45.0f);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP);
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0);
|
|
}
|
|
var_r31->unk_EC += 0.5f;
|
|
if (360.0f <= var_r31->unk_EC) {
|
|
var_r31->unk_EC -= 360.0f;
|
|
}
|
|
var_r31->unk_00.unk_6C.x
|
|
= var_r31->unk_D4.x - (400.0 * (1.0 - (0.0 > cosd(var_r31->unk_EC) ? -cosd(var_r31->unk_EC) : cosd(var_r31->unk_EC))));
|
|
var_r31->unk_00.unk_6C.z = var_r31->unk_D4.z + (800.0 * sind(var_r31->unk_EC));
|
|
if ((var_r31->unk_150 == 0xBC1) && (lbl_1_bss_1A4->work[0] >= 0x40E)) {
|
|
var_r31->unk_150 = 0xBC3;
|
|
var_r31->unk_D4 = var_r31->unk_00.unk_6C;
|
|
var_r31->unk_D4.z = -1800.0f;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[7], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
break;
|
|
case 0xBC2:
|
|
var_r31->unk_154 &= ~0x80;
|
|
if (((var_r31->unk_154 & 0x20) == 0) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) {
|
|
var_r31->unk_154 |= 0x20;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[7], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
var_r31->unk_100 -= 1.0f;
|
|
if (0.0f > var_r31->unk_100) {
|
|
var_r31->unk_150 = 0xBC1;
|
|
var_r31->unk_154 &= ~0x30;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0x40000001);
|
|
fn_1_AAB0(var_r31, var_r31->unk_C8, 1);
|
|
}
|
|
break;
|
|
case 0xBC3:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x40F) {
|
|
if ((var_r31->unk_154 & 0x1000) == 0) {
|
|
var_r31->unk_154 |= 0x1000;
|
|
HuAudFXPlay(0x3B);
|
|
}
|
|
if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D4) != 0) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_154 &= ~2;
|
|
Hu3DModelHookObjReset(object->model[1], "g000i00-itemhook_A");
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF);
|
|
lbl_1_bss_1A4->work[0] = 0x410;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
break;
|
|
case 0xBC4:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x411) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_00.unk_9C = 0.0f;
|
|
fn_1_A470(var_r31, object, "m450mex06-s6kuppa01", 2);
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
|
}
|
|
break;
|
|
case 0xBC5:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x415) {
|
|
var_r31->unk_150 = 0xBC7;
|
|
var_r31->unk_E0 = 0.0f;
|
|
fn_1_A600(var_r31, object, "m450mex06-s6kuppa01", 2);
|
|
omSetSca(object, 1.5f, 1.5f, 1.5f);
|
|
var_r31->unk_00.unk_9C = 0.0f;
|
|
var_r31->unk_00.unk_6C.y = 1505.0f;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
var_r31->unk_00.unk_04 = fn_1_ABD0;
|
|
}
|
|
break;
|
|
case 0xBC6:
|
|
var_r31->unk_E0 += 1.0f;
|
|
if (120.0f < var_r31->unk_E0) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_00.unk_3C &= ~0x20;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
}
|
|
break;
|
|
case 0xBC7:
|
|
var_r31->unk_00.unk_B8 = fn_1_AB88(var_r31);
|
|
fn_1_19A10(&var_r31->unk_00, &spE4);
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
var_r31->unk_E0 += 1.0f;
|
|
spC8 = (REFRESH_RATE * (3.0f + lbl_1_data_A0C[1].unk_14));
|
|
if (spC8 < var_r31->unk_E0) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_154 &= ~0x70;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_114 = spE4;
|
|
if (frandmod(0x64) < 0x1E) {
|
|
var_r31->unk_110 = 0xBC9;
|
|
}
|
|
else if (500.0f > VECDistance(&var_r31->unk_00.unk_6C, &spE4)) {
|
|
var_r31->unk_110 = 0xBCA;
|
|
if (lbl_1_data_A0C[1].unk_14 <= 2) {
|
|
var_r31->unk_110 = 0xBCB;
|
|
}
|
|
}
|
|
else {
|
|
var_r31->unk_110 = 0xBCC;
|
|
}
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
}
|
|
break;
|
|
case 0xBC8:
|
|
VECSubtract(&var_r31->unk_114, &var_r31->unk_00.unk_6C, &spF0);
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spF0.x, spF0.z), 0.4f);
|
|
var_r31->unk_E0 += 1.0f;
|
|
var_r31->unk_114 = spE4;
|
|
if (60.0f < var_r31->unk_E0) {
|
|
var_r31->unk_150 = var_r31->unk_110;
|
|
var_r31->unk_154 &= ~0x30;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_00.unk_3C |= 0x20;
|
|
}
|
|
break;
|
|
case 0xBC9:
|
|
if ((var_r31->unk_154 & 0x10) == 0) {
|
|
var_r31->unk_154 |= 0x10;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[15], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
else {
|
|
var_r31->unk_00.unk_B8 = 1.5f;
|
|
if ((fn_1_19A10(&var_r31->unk_00, &var_r31->unk_114) != 0) || (var_r31->unk_00.unk_48 > 0)) {
|
|
var_r31->unk_150 = 0xBC6;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_154 |= 0x20;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
else {
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
}
|
|
break;
|
|
case 0xBCA:
|
|
if ((var_r31->unk_154 & 0x10) == 0) {
|
|
var_r31->unk_154 |= 0x10;
|
|
var_r31->unk_12C = fn_1_69F8(NULL, NULL, 0x200);
|
|
var_r31->unk_130 = HuAudFXPlay(0x7BC);
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[12], 0.0f, 8.0f, 0);
|
|
}
|
|
else if (Hu3DMotionShiftIDGet(object->model[0]) < 0) {
|
|
if (45.0f < Hu3DMotionTimeGet(object->model[0])) {
|
|
var_r20 = 1;
|
|
}
|
|
if (var_r20 != 0) {
|
|
if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) {
|
|
Hu3DMotionTimeSet(object->model[0], 50.0f);
|
|
}
|
|
var_r31->unk_E0 += 1.0f;
|
|
if (3 * REFRESH_RATE < var_r31->unk_E0) {
|
|
var_r31->unk_150 = 0xBC6;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_154 |= 0x20;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 30.0f, 0x40000001);
|
|
fn_1_66A0(var_r31->unk_12C);
|
|
if (var_r31->unk_130 >= 0) {
|
|
HuAudFXStop(var_r31->unk_130);
|
|
var_r31->unk_130 = -1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 0xBCB:
|
|
if ((var_r31->unk_154 & 0x10) == 0) {
|
|
var_r31->unk_154 |= 0x10;
|
|
var_r31->unk_12C = fn_1_69F8(NULL, NULL, 0x200);
|
|
var_r31->unk_130 = HuAudFXPlay(0x7BC);
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[13], 0.0f, 8.0f, 0);
|
|
}
|
|
else if ((var_r31->unk_154 & 0x40) == 0) {
|
|
if (Hu3DMotionShiftIDGet(object->model[0]) < 0) {
|
|
if (52.0f < Hu3DMotionTimeGet(object->model[0])) {
|
|
var_r20 = 1;
|
|
}
|
|
if (Hu3DMotionEndCheck(object->model[0]) != 0) {
|
|
var_r31->unk_154 |= 0x40;
|
|
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP);
|
|
Hu3DMotionSet(object->model[0], object->motion[14]);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
var_r20 = 1;
|
|
var_r31->unk_00.unk_B8 = 0.25f;
|
|
fn_1_19A10(&var_r31->unk_00, &spE4);
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
var_r31->unk_E0 += 1.0f;
|
|
if (3 * REFRESH_RATE < var_r31->unk_E0) {
|
|
var_r31->unk_150 = 0xBC6;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_154 |= 0x20;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001);
|
|
fn_1_66A0(var_r31->unk_12C);
|
|
if (var_r31->unk_130 >= 0) {
|
|
HuAudFXStop(var_r31->unk_130);
|
|
var_r31->unk_130 = -1;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 0xBCC:
|
|
if ((var_r31->unk_154 & 0x10) == 0) {
|
|
var_r31->unk_154 |= 0x10;
|
|
fn_1_18424(object->model[0], &var_r31->unk_114);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP);
|
|
Hu3DMotionSet(object->model[0], object->motion[11]);
|
|
}
|
|
else if (((var_r31->unk_154 & 0x20) == 0) && (Hu3DMotionShiftIDGet(object->model[0]) < 0)
|
|
&& (Hu3DMotionEndCheck(object->model[0]) != 0)) {
|
|
var_r31->unk_150 = 0xBC6;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_154 |= 0x20;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001);
|
|
if (((var_r31->unk_154 & 0x40) == 0) && (lbl_1_data_A0C[1].unk_14 <= 2)) {
|
|
var_r31->unk_150 = 0xBCD;
|
|
var_r31->unk_154 |= 0x40;
|
|
}
|
|
}
|
|
break;
|
|
case 0xBCD:
|
|
var_r31->unk_E0 += 1.0f;
|
|
if (10.0f < var_r31->unk_E0) {
|
|
var_r31->unk_150 = 0xBC8;
|
|
var_r31->unk_110 = 0xBCC;
|
|
var_r31->unk_114 = spE4;
|
|
var_r31->unk_154 &= ~0x30;
|
|
var_r31->unk_E0 = 0.0f;
|
|
}
|
|
break;
|
|
case 0xBCE:
|
|
if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) {
|
|
var_r31->unk_150 = 0xBC6;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_154 &= ~0x8000;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001);
|
|
Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], HU3D_ATTR_DISPOFF);
|
|
}
|
|
break;
|
|
case 0xBCF:
|
|
if ((var_r31->unk_154 & 0x2000) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (128.0f < Hu3DMotionTimeGet(object->model[0]))) {
|
|
var_r31->unk_154 &= ~0x2000;
|
|
HuAudFXPlay(0x7BD);
|
|
}
|
|
break;
|
|
default:
|
|
OSReport("*** kuppa mode error(%d)!!\n", var_r31->unk_150);
|
|
break;
|
|
}
|
|
|
|
if ((var_r31->unk_150 >= 0xBC6) && (var_r31->unk_150 <= 0xBCD)) {
|
|
if (var_r31->unk_154 & 0x8000) {
|
|
var_r31->unk_E0 = 0.0f;
|
|
if (var_r31->unk_12C >= 0) {
|
|
fn_1_66A0(var_r31->unk_12C);
|
|
}
|
|
if (var_r31->unk_130 >= 0) {
|
|
HuAudFXStop(var_r31->unk_130);
|
|
var_r31->unk_130 = -1;
|
|
}
|
|
if (fn_1_125C0(1, 1) <= 0) {
|
|
var_r31->unk_150 = 0xBCF;
|
|
var_r31->unk_154 |= 0x2000;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[17], 0.0f, 8.0f, 0);
|
|
HuAudFXPlay(0x3B);
|
|
}
|
|
else {
|
|
var_r31->unk_150 = 0xBCE;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[16], 0.0f, 8.0f, 0);
|
|
HuAudFXPlay(0x3B);
|
|
Hu3DModelPosSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y,
|
|
150.0f + var_r31->unk_00.unk_6C.z);
|
|
Hu3DModelScaleSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], 2.0f, 2.0f, 2.0f);
|
|
Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], 0.0f);
|
|
Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
if (var_r31->unk_150 != 0xBCF) {
|
|
if ((var_r31->unk_150 < 0xBCE) && ((lbl_1_data_A0C[0].unk_14 <= 0) || (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7EB))) {
|
|
var_r31->unk_150 = 0xBCF;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 8.0f, 0x40000001);
|
|
HuAudFXPlay(0x3A);
|
|
if (var_r31->unk_12C >= 0) {
|
|
fn_1_66A0(var_r31->unk_12C);
|
|
}
|
|
if (var_r31->unk_130 >= 0) {
|
|
HuAudFXStop(var_r31->unk_130);
|
|
var_r31->unk_130 = -1;
|
|
}
|
|
}
|
|
else if (((var_r31->unk_138 != 0) || (fn_1_19798() != 0)) && (var_r31->unk_150 == 0xBC9)) {
|
|
var_r31->unk_150 = 0xBC6;
|
|
var_r31->unk_E0 = 0.0f;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
}
|
|
}
|
|
if ((var_r31->unk_154 & 0x100) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) {
|
|
if (var_r31->unk_154 & 0x2000) {
|
|
var_r31->unk_154 &= ~0x2000;
|
|
HuAudFXPlay(0x7BE);
|
|
}
|
|
var_r31->unk_144 -= 1.0f;
|
|
if (0.0f > var_r31->unk_144) {
|
|
var_r31->unk_154 &= ~0x100;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[var_r31->unk_140], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
}
|
|
if (var_r31->unk_12C >= 0) {
|
|
if (var_r20 != 0) {
|
|
fn_1_1D18(object->model[0], "g000m0-itemhook_M", &spFC);
|
|
fn_1_1D18(object->model[0], "g000m0-ns_hed", &spD8);
|
|
VECSubtract(&spFC, &spD8, &spF0);
|
|
fn_1_6798(var_r31->unk_12C, 1, &spFC, atan2d(spF0.x, spF0.z), 700.0f, 1550.0f);
|
|
}
|
|
if (fn_1_66DC(var_r31->unk_12C) != 0) {
|
|
var_r31->unk_12C = -1;
|
|
}
|
|
}
|
|
var_r31->unk_134 = lbl_1_data_A0C[0].unk_14;
|
|
spFC = var_r31->unk_00.unk_6C;
|
|
if (var_r31->unk_154 & 2) {
|
|
var_r31->unk_E8 += 4.0f;
|
|
if (360.0f <= var_r31->unk_E8) {
|
|
var_r31->unk_E8 -= 360.0f;
|
|
}
|
|
spCC = var_r31->unk_00.unk_6C.y + (8.0 * sind(var_r31->unk_E8));
|
|
omSetTra(object, 0.0f, 0.0f, 0.0f);
|
|
omSetRot(object, 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelPosSet(object->model[1], var_r31->unk_00.unk_6C.x, spCC, var_r31->unk_00.unk_6C.z);
|
|
Hu3DModelRotSet(object->model[1], 0.0f, var_r31->unk_00.unk_9C, 0.0f);
|
|
}
|
|
else if (var_r31->unk_154 & 1) {
|
|
fn_1_1D70(lbl_1_bss_1A0->model[0], var_r31->unk_CC, &spFC, Hu3DData[object->model[0]].unk_F0);
|
|
MTXScale(sp1F8, 1.5f, 1.5f, 1.5f);
|
|
MTXConcat(Hu3DData[object->model[0]].unk_F0, sp1F8, Hu3DData[object->model[0]].unk_F0);
|
|
}
|
|
else {
|
|
omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z);
|
|
omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f);
|
|
}
|
|
fn_1_A3C4(object, &spFC, 2);
|
|
}
|
|
|
|
void fn_1_DBF0(omObjData *object)
|
|
{
|
|
Vec sp8;
|
|
|
|
UnkM450Struct3 *var_r31;
|
|
s32 var_r29;
|
|
|
|
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct3), MEMORY_DEFAULT_NUM);
|
|
var_r31 = object->data;
|
|
var_r31->unk_150 = 0xBB8;
|
|
var_r31->unk_154 = 0;
|
|
var_r31->unk_14C = 0;
|
|
var_r31->unk_12C = -1;
|
|
var_r31->unk_130 = -1;
|
|
sp8.x = 0.0f;
|
|
sp8.y = 1500.0f;
|
|
sp8.z = -800.0f;
|
|
fn_1_2C1C(&var_r31->unk_00, object, 4, 9, lbl_1_data_18C, 0, &sp8, 0.0f);
|
|
for (var_r29 = 0; var_r29 < 2; var_r29++) {
|
|
object->model[var_r29] = Hu3DModelCreateFile(lbl_1_data_AC[var_r29]);
|
|
Hu3DModelAttrSet(object->model[var_r29], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL);
|
|
Hu3DModelAttrSet(object->model[var_r29], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelAttrReset(object->model[var_r29], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelLayerSet(object->model[var_r29], 3);
|
|
Hu3DModelShadowSet(object->model[var_r29]);
|
|
}
|
|
for (var_r29 = 0; var_r29 < 0x13; var_r29++) {
|
|
object->motion[var_r29] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(lbl_1_data_B4[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA));
|
|
}
|
|
Hu3DMotionSet(object->model[0], object->motion[0]);
|
|
CharModelEffectNpcInit(object->model[0], object->motion[1], 2, 8);
|
|
CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 8);
|
|
CharModelEffectNpcInit(object->model[0], object->motion[15], 3, 8);
|
|
var_r31->unk_F4 = 1.0f;
|
|
switch (GWPlayerCfg[lbl_1_bss_120].diff) {
|
|
case 0:
|
|
var_r31->unk_C8 = &lbl_1_data_234[0];
|
|
var_r31->unk_D0 = lbl_1_data_254;
|
|
break;
|
|
case 1:
|
|
var_r31->unk_C8 = &lbl_1_data_234[1];
|
|
var_r31->unk_D0 = lbl_1_data_268;
|
|
break;
|
|
case 2:
|
|
var_r31->unk_C8 = &lbl_1_data_234[2];
|
|
var_r31->unk_D0 = lbl_1_data_27C;
|
|
break;
|
|
case 3:
|
|
default:
|
|
var_r31->unk_C8 = &lbl_1_data_234[3];
|
|
var_r31->unk_D0 = lbl_1_data_290;
|
|
break;
|
|
}
|
|
omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z);
|
|
omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f);
|
|
omSetSca(object, 1.5f, 1.5f, 1.5f);
|
|
Hu3DModelAttrReset(*object->model, HU3D_ATTR_DISPOFF);
|
|
object->func = (omObjFunc)fn_1_AD58;
|
|
}
|
|
|
|
s32 fn_1_E0E8(s32 arg0, s32 arg1)
|
|
{
|
|
s32 var_r31;
|
|
|
|
for (var_r31 = 0; var_r31 < 2; var_r31++) {
|
|
if (arg1 == lbl_1_data_1CC[var_r31 * 2]) {
|
|
return HuAudFXPlay(lbl_1_data_1CC[arg0 + (var_r31 * 2)]);
|
|
}
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
s32 fn_1_E178(s32 arg0, s32 arg1)
|
|
{
|
|
UnkM450Struct3 *var_r31 = lbl_1_bss_130[arg0]->data;
|
|
var_r31->unk_14C = arg1;
|
|
return arg0;
|
|
}
|
|
|
|
void fn_1_E1A8(s32 arg0, s32 arg1, float arg8, u32 arg2, s32 arg3, float arg9)
|
|
{
|
|
UnkM450Struct3 *var_r31;
|
|
omObjData *var_r30;
|
|
|
|
var_r30 = lbl_1_bss_130[arg0];
|
|
if (arg8 == 0.0f) {
|
|
Hu3DMotionSet(var_r30->model[0], var_r30->motion[arg1]);
|
|
}
|
|
else {
|
|
Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[arg1], 0.0f, arg8, arg2);
|
|
}
|
|
var_r31 = var_r30->data;
|
|
var_r31->unk_140 = -1;
|
|
var_r31->unk_154 &= ~0x100;
|
|
if (arg3 >= 0) {
|
|
var_r31->unk_140 = arg3;
|
|
var_r31->unk_144 = arg9;
|
|
var_r31->unk_154 |= 0x100;
|
|
}
|
|
var_r31->unk_148 = arg1;
|
|
}
|
|
|
|
void fn_1_E2BC(s32 arg0, s32 arg1, s32 arg2, s32 arg3)
|
|
{
|
|
lbl_1_bss_4 = arg0;
|
|
lbl_1_bss_0 = arg1;
|
|
if (arg2 == 0) {
|
|
fn_1_6CB0(fn_1_7D40, arg3);
|
|
}
|
|
else {
|
|
fn_1_6CB0(fn_1_8120, arg3);
|
|
}
|
|
}
|
|
|
|
void fn_1_E3C8(UnkM450Struct3 *arg0, omObjData *arg1, s32 arg2)
|
|
{
|
|
s32 var_r30;
|
|
if (arg2 != 0) {
|
|
if (arg1->work[0] == 0) {
|
|
Hu3DModelAttrReset(arg1->model[1], HU3D_ATTR_DISPOFF);
|
|
}
|
|
Hu3DModelAttrReset(arg1->model[0], HU3D_ATTR_DISPOFF);
|
|
}
|
|
else {
|
|
for (var_r30 = 0; var_r30 < 5; var_r30++) {
|
|
Hu3DModelAttrSet(arg1->model[var_r30], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
arg0->unk_00.unk_3C &= ~0xC00;
|
|
}
|
|
|
|
UnkData1380Struct lbl_1_data_1380;
|
|
UnkData1380Struct lbl_1_data_13B8;
|
|
|
|
void fn_1_E478(UnkM450Struct3 *arg0, omObjData *arg1)
|
|
{
|
|
s32 var_r29;
|
|
float var_f31;
|
|
UnkData1380Struct *var_r30 = &lbl_1_data_1380;
|
|
float var_f30;
|
|
|
|
arg0->unk_F8 = -1;
|
|
arg0->unk_154 &= ~0x30;
|
|
arg0->unk_120.x = 0.0f;
|
|
arg0->unk_120.y = 0.0f;
|
|
arg0->unk_120.z = 0.0f;
|
|
if (arg1->work[0] != 0) {
|
|
var_r29 = frandmod(var_r30->unk_08);
|
|
while (var_r30->unk_24[var_r29] < 0) {
|
|
var_r29 = (var_r29 + 1) % var_r30->unk_08;
|
|
}
|
|
arg0->unk_F8 = var_r30->unk_24[var_r29];
|
|
var_f31 = 200.0f * frandf();
|
|
var_f30 = 360.0f * frandf();
|
|
arg0->unk_120.x = var_f31 * sind(var_f30);
|
|
arg0->unk_120.z = var_f31 * cosd(var_f30);
|
|
}
|
|
}
|
|
|
|
void fn_1_E604(UnkM450Struct3 *arg0, omObjData *arg1)
|
|
{
|
|
Vec spC;
|
|
float sp8;
|
|
|
|
arg0->unk_D4 = ((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C;
|
|
if (((arg0->unk_154 & 0x10) != 0) && ((arg0->unk_154 & 0x20) == 0)) {
|
|
if ((Hu3DMotionShiftIDGet(arg1->model[0]) < 0) && (20.0f < Hu3DMotionTimeGet(arg1->model[0]))) {
|
|
arg0->unk_154 |= 0x20;
|
|
spC = arg0->unk_00.unk_6C;
|
|
spC.x += (200.0 * sind(arg0->unk_00.unk_9C));
|
|
spC.y += 100.0f;
|
|
spC.z += (200.0 * cosd(arg0->unk_00.unk_9C));
|
|
fn_1_17360(&spC, arg0->unk_00.unk_9C);
|
|
}
|
|
}
|
|
else {
|
|
fn_1_19A10(&arg0->unk_00, &arg0->unk_D4);
|
|
fn_1_40C0(&arg0->unk_00);
|
|
VECSubtract(&arg0->unk_00.unk_6C, &arg0->unk_D4, &spC);
|
|
if ((300.0f > sqrtf((spC.x * spC.x) + (spC.z * spC.z))) && ((arg0->unk_154 & 0x10) == 0)) {
|
|
arg0->unk_154 |= 0x10;
|
|
Hu3DMotionShiftSet(arg1->model[0], arg1->motion[5], 0.0f, 8.0f, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_E918(UnkM450Struct3 *arg0, omObjData *arg1)
|
|
{
|
|
arg0->unk_D4 = *fn_1_16314(arg0->unk_F8);
|
|
VECAdd(&arg0->unk_120, &arg0->unk_D4, &arg0->unk_D4);
|
|
if ((arg0->unk_154 & 0x10) && ((arg0->unk_154 & 0x20) == 0) && (Hu3DMotionShiftIDGet(arg1->model[0]) < 0)
|
|
&& (Hu3DMotionEndCheck(*arg1->model) != 0)) {
|
|
arg0->unk_154 |= 0x20;
|
|
fn_1_16BC4(&arg0->unk_00.unk_6C, &arg0->unk_120, arg0->unk_F8);
|
|
}
|
|
if (fn_1_19A10(&arg0->unk_00, &arg0->unk_D4) != 0) {
|
|
if ((arg0->unk_154 & 0x10) == 0) {
|
|
arg0->unk_154 |= 0x10;
|
|
Hu3DMotionShiftSet(*arg1->model, arg1->motion[5], 0.0f, 8.0f, 0);
|
|
}
|
|
}
|
|
else {
|
|
fn_1_40C0(&arg0->unk_00);
|
|
}
|
|
}
|
|
|
|
void fn_1_EA50(UnkM450Struct3 *arg0, omObjData *arg1)
|
|
{
|
|
arg0->unk_150 = 0xFAD;
|
|
arg0->unk_E0 = 0.0f;
|
|
Hu3DMotionShiftSet(*arg1->model, *arg1->motion, 0.0f, 8.0f, 0);
|
|
fn_1_1D70(lbl_1_bss_1A0->model[0], arg1->work[0] == 0 ? "m450mex06-s3mini2" : "m450mex06-s3mini1", &arg0->unk_D4, NULL);
|
|
}
|
|
|
|
HsfanimStruct00 lbl_1_data_1504;
|
|
|
|
void fn_1_EB6C(UnkM450Struct3 *arg0, omObjData *arg1)
|
|
{
|
|
s32 var_r29;
|
|
s16 var_r28;
|
|
u32 var_r27;
|
|
|
|
fn_1_1D18(arg1->model[4], "g007i03-itemhook_M", &arg0->unk_00.unk_6C);
|
|
Hu3DModelHookObjReset(arg1->model[4], "g007i03-itemhook_M");
|
|
Hu3DModelAttrSet(arg1->model[4], HU3D_ATTR_DISPOFF);
|
|
arg0->unk_150 = 0xFAE;
|
|
arg0->unk_154 &= 0xFFFFFFFD;
|
|
arg0->unk_108 = 19.6f;
|
|
arg0->unk_E0 = 0.0f;
|
|
Hu3DMotionSet(arg1->model[0], arg1->motion[6]);
|
|
Hu3DModelAttrReset(arg1->model[0], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelAttrSet(arg1->model[0], HU3D_MOTATTR_PAUSE);
|
|
Hu3DMotionTimeSet(arg1->model[0], 1.0f);
|
|
arg0->unk_13C = Hu3DParManLink(lbl_1_bss_24, &lbl_1_data_1504);
|
|
Hu3DParManPosSet(arg0->unk_13C, arg0->unk_00.unk_6C.x, arg0->unk_00.unk_6C.y, arg0->unk_00.unk_6C.z);
|
|
Hu3DParManAttrReset(arg0->unk_13C, 1);
|
|
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(arg0->unk_13C), 1);
|
|
Hu3DModelLayerSet(Hu3DParManModelIDGet(arg0->unk_13C), 5);
|
|
fn_1_E0E8(arg1->work[0], 0x3F);
|
|
}
|
|
|
|
void fn_1_ED4C(omObjData *object)
|
|
{
|
|
Vec spEC;
|
|
float spDC;
|
|
|
|
UnkM450Struct3 *var_r31;
|
|
Vec *var_r29;
|
|
UnkM450Struct3 *var_r18;
|
|
|
|
var_r18 = lbl_1_bss_130[object->work[0] ^ 1]->data;
|
|
var_r31 = object->data;
|
|
var_r31->unk_00.unk_20 = 0;
|
|
var_r31->unk_00.unk_24 = 0;
|
|
var_r31->unk_00.unk_28 = 0;
|
|
var_r31->unk_00.unk_2C = 0;
|
|
var_r31->unk_00.unk_30 = 0;
|
|
var_r31->unk_00.unk_34 = 0;
|
|
|
|
switch (var_r31->unk_150) {
|
|
case 0xFA0:
|
|
if ((lbl_1_bss_1A4->work[0] >= 0x3EF) && (30.0f < lbl_1_bss_128)) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_E4 = 0.0f;
|
|
var_r31->unk_154 &= ~0x100;
|
|
var_r31->unk_154 |= 0x200;
|
|
var_r31->unk_F0 = var_r31->unk_00.unk_6C.x - (100.0f * (0.0f > var_r31->unk_00.unk_6C.x ? -1 : 1));
|
|
}
|
|
if ((object->work[0] == 0) && (var_r31->unk_148 == 7)) {
|
|
var_r31->unk_00.unk_9C = 0.0f;
|
|
}
|
|
else {
|
|
VECSubtract(&((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &spEC);
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spEC.x, spEC.z), 0.4f);
|
|
}
|
|
break;
|
|
case 0xFA1:
|
|
fn_1_9F4C(var_r31, object->model[0], lbl_1_bss_4C, 0x7A);
|
|
if (-1100.0f > var_r31->unk_00.unk_6C.z) {
|
|
var_r31->unk_150++;
|
|
fn_1_E2BC(1, 0x1E, object->work[0], 0);
|
|
fn_1_E1A8(object->work[0], 12, 8.0f, 0, 1, 0.0f);
|
|
}
|
|
break;
|
|
case 0xFA2:
|
|
if (lbl_1_bss_10 == 0) {
|
|
fn_1_9F4C(var_r31, object->model[0], lbl_1_bss_4C, 0x7A);
|
|
if (1000.0f > var_r31->unk_00.unk_6C.y) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_154 &= ~0x200;
|
|
fn_1_E3C8(var_r31, object, 0);
|
|
}
|
|
}
|
|
else {
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 0.0f, 0.4f);
|
|
}
|
|
break;
|
|
case 0xFA3:
|
|
if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7D5) {
|
|
var_r31->unk_150++;
|
|
fn_1_A470(var_r31, object, object->work[0] == 0 ? "m450mex06-s2kuppa01" : "m450mex06-s2kuppa02", 5);
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
fn_1_E3C8(var_r31, object, 1);
|
|
}
|
|
break;
|
|
case 0xFA4:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3F2) {
|
|
var_r31->unk_150 = var_r31->unk_150 + 1;
|
|
var_r31->unk_00.unk_9C = 0.0f;
|
|
fn_1_A600(var_r31, object, object->work[0] == 0 ? "m450mex06-s2kuppa01" : "m450mex06-s2kuppa02", 5);
|
|
var_r31->unk_00.unk_6C.y = 1505.0f;
|
|
var_r31->unk_00.unk_3C |= 0x400;
|
|
fn_1_1D70(lbl_1_bss_1A0->model[0], "m450mex06-s2hook04", &var_r31->unk_D4, NULL);
|
|
var_r31->unk_D4.x += (-100.0f + (300.0f * (object->work[0] ^ 1)));
|
|
var_r31->unk_D4.z += (100.0f - (200.0f * (object->work[0] ^ 1)));
|
|
}
|
|
break;
|
|
case 0xFA5:
|
|
if (fn_1_A7CC(var_r31) != 0) {
|
|
var_r31->unk_D4.x = 1200.0f;
|
|
var_r31->unk_D4.z = 150.0f - (300.0f * (object->work[0] ^ 1));
|
|
}
|
|
break;
|
|
case 0xFA6:
|
|
if (fn_1_A7CC(var_r31)) {
|
|
fn_1_E3C8(var_r31, object, 0);
|
|
}
|
|
break;
|
|
case 0xFA7:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3F7) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_E8 = 360.0f * frandf();
|
|
var_r31->unk_154 |= 2;
|
|
Hu3DModelAttrReset(object->model[4], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrReset(object->model[4], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelHookSet(object->model[4], "g007i03-itemhook_M", object->model[0]);
|
|
var_r31->unk_00.unk_6C.x = 0.0f;
|
|
var_r31->unk_00.unk_6C.y = 3000.0f;
|
|
var_r31->unk_00.unk_6C.z = -300.0f + (600.0f * object->work[0]);
|
|
var_r31->unk_00.unk_9C = 270.0f;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
var_r31->unk_00.unk_3C |= 0x2020;
|
|
fn_1_E3C8(var_r31, object, 1);
|
|
}
|
|
break;
|
|
case 0xFA8:
|
|
fn_1_A828(var_r31, 2 * REFRESH_RATE, 3000.0f, 1605.0f);
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3F9) {
|
|
var_r31->unk_150 = var_r31->unk_150 + 1;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_D4.x = 800.0f;
|
|
var_r31->unk_D4.y = var_r31->unk_00.unk_6C.y;
|
|
var_r31->unk_D4.z = -400.0f + (800.0f * object->work[0]);
|
|
}
|
|
break;
|
|
case 0xFA9:
|
|
fn_1_A828(var_r31, 60.0f, var_r31->unk_D4.y, 2055.0f);
|
|
if ((fn_1_A7CC(var_r31) != 0) && (lbl_1_bss_1A4->work[0] < 0x3FA)) {
|
|
lbl_1_bss_1A4->work[0] = 0x3FA;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
break;
|
|
case 0xFAA:
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.05f);
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3FB) {
|
|
var_r31->unk_150++;
|
|
var_r31->unk_FC = 0;
|
|
var_r31->unk_100 = var_r31->unk_C4[var_r31->unk_FC].unk_00;
|
|
var_r31->unk_D4 = var_r31->unk_00.unk_6C;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
break;
|
|
case 0xFAB:
|
|
if (var_r31->unk_154 & 0x80) {
|
|
var_r31->unk_100 += 1.0f;
|
|
if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) {
|
|
var_r31->unk_154 = var_r31->unk_154 & 0xFFFFFF7F;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
}
|
|
else if ((var_r31->unk_134 > lbl_1_data_A0C[0].unk_14) || (lbl_1_data_A0C[0].unk_14 <= 0)) {
|
|
var_r31->unk_100 += 1.0f;
|
|
if (lbl_1_data_A0C[0].unk_14 > 0) {
|
|
var_r31->unk_154 |= 0x80;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[11], 0.0f, 8.0f, 0);
|
|
}
|
|
else {
|
|
var_r31->unk_150 = 0xFB0;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 8.0f, 0);
|
|
}
|
|
}
|
|
var_r31->unk_154 &= ~4;
|
|
var_r31->unk_100 -= 1.0f;
|
|
if ((var_r18->unk_154 & 4) && (0.0f > var_r31->unk_100)) {
|
|
var_r31->unk_FC++;
|
|
if (var_r31->unk_C4[var_r31->unk_FC].unk_00 == 0.0f) {
|
|
var_r31->unk_FC -= 2;
|
|
}
|
|
var_r31->unk_100 = var_r31->unk_C4[var_r31->unk_FC].unk_00;
|
|
if (var_r31->unk_C4[var_r31->unk_FC].unk_04) {
|
|
var_r31->unk_150 = 0xFAC;
|
|
fn_1_E478(var_r31, object);
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0);
|
|
}
|
|
}
|
|
else if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D4) != 0) {
|
|
var_r31->unk_154 |= 4;
|
|
VECSubtract(&((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &spEC);
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spEC.x, spEC.z), 0.4f);
|
|
}
|
|
else {
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3FC) {
|
|
fn_1_EA50(var_r31, object);
|
|
}
|
|
break;
|
|
case 0xFAC:
|
|
var_r31->unk_154 &= ~0x84;
|
|
var_r31->unk_100 -= 1.0f;
|
|
if (0.0f > var_r31->unk_100) {
|
|
var_r31->unk_FC++;
|
|
if (var_r31->unk_C4[var_r31->unk_FC].unk_00 == 0.0f) {
|
|
var_r31->unk_FC -= 2;
|
|
}
|
|
var_r31->unk_100 = var_r31->unk_C4[var_r31->unk_FC].unk_00;
|
|
if (var_r31->unk_C4[var_r31->unk_FC].unk_04 == 0) {
|
|
var_r31->unk_150 = 0xFAB;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000001);
|
|
var_r31->unk_D4.x = 800.0f;
|
|
if (0.0f > var_r18->unk_00.unk_6C.z) {
|
|
var_r31->unk_D4.z = 200.0f;
|
|
}
|
|
else {
|
|
var_r31->unk_D4.z = -200.0f;
|
|
}
|
|
var_r31->unk_D4.z += var_r31->unk_D4.z * frandf();
|
|
}
|
|
}
|
|
else {
|
|
if (object->work[0] == 0) {
|
|
fn_1_E604(var_r31, object);
|
|
}
|
|
else {
|
|
fn_1_E918(var_r31, object);
|
|
}
|
|
if ((((var_r31->unk_154 & 0x10) == 0) || (var_r31->unk_154 & 0x20)) && (lbl_1_bss_1A4->work[0] == 0x3E8)) {
|
|
var_r31->unk_100 = 0.0f;
|
|
}
|
|
}
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3FC) {
|
|
fn_1_EA50(var_r31, object);
|
|
}
|
|
break;
|
|
case 0xFAD:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3FD) {
|
|
if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D4) != 0) {
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.4f);
|
|
if ((object->work[0] + 0x3FE) == lbl_1_bss_1A4->work[0]) {
|
|
lbl_1_bss_1A4->work[0] += 1;
|
|
lbl_1_bss_128 = 0;
|
|
}
|
|
if (lbl_1_bss_1A4->work[0] > 0x3FF) {
|
|
fn_1_EB6C(var_r31, object);
|
|
}
|
|
}
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
break;
|
|
case 0xFAE:
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.4f);
|
|
var_r31->unk_00.unk_6C.x += 0.1f * (var_r31->unk_D4.x - var_r31->unk_00.unk_6C.x);
|
|
var_r31->unk_00.unk_6C.z += 0.1f * (var_r31->unk_D4.z - var_r31->unk_00.unk_6C.z);
|
|
if (1505.0f < var_r31->unk_00.unk_6C.y) {
|
|
var_r31->unk_00.unk_6C.y += var_r31->unk_108;
|
|
var_r31->unk_108 = var_r31->unk_108 - 0.98f;
|
|
if (1505.0f >= var_r31->unk_00.unk_6C.y) {
|
|
var_r31->unk_00.unk_6C.y = 1505.0f;
|
|
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE);
|
|
}
|
|
}
|
|
else if (((var_r31->unk_154 & 0x400) == 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) {
|
|
var_r31->unk_154 |= 0x400;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
if (lbl_1_bss_1A4->work[0] >= 0x402) {
|
|
var_r31->unk_150 = var_r31->unk_150 + 1;
|
|
var_r31->unk_E0 = 0.0f;
|
|
var_r31->unk_00.unk_3C &= ~0x2020;
|
|
fn_1_A470(var_r31, object, object->work[0] == 0 ? "m450mex06-s3mini2" : "m450mex06-s3mini1", 5);
|
|
}
|
|
var_r31->unk_E0 += 1.0f;
|
|
if (var_r31->unk_E0 == 10.0f) {
|
|
Hu3DParManAttrSet(var_r31->unk_13C, 1);
|
|
}
|
|
break;
|
|
case 0xFAF:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x403) {
|
|
var_r31->unk_150 = var_r31->unk_150 + 1;
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
|
}
|
|
break;
|
|
case 0xFB0:
|
|
break;
|
|
default:
|
|
OSReport("*** minik mode error(%d)!!\n", var_r31->unk_150);
|
|
break;
|
|
}
|
|
|
|
if ((var_r31->unk_154 & 0x100) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) {
|
|
var_r31->unk_144 -= 1.0f;
|
|
if (0.0f > var_r31->unk_144) {
|
|
var_r31->unk_154 &= ~0x100;
|
|
var_r31->unk_148 = var_r31->unk_140;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[var_r31->unk_140], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
}
|
|
var_r31->unk_134 = lbl_1_data_A0C[0].unk_14;
|
|
var_r29 = &lbl_1_bss_34[object->work[0]];
|
|
if (var_r31->unk_154 & 2) {
|
|
*var_r29 = var_r31->unk_00.unk_6C;
|
|
var_r29->y += 100.0f;
|
|
var_r31->unk_E8 += 4.0f;
|
|
if (360.0f <= var_r31->unk_E8) {
|
|
var_r31->unk_E8 -= 360.0f;
|
|
}
|
|
spDC = var_r31->unk_00.unk_6C.y + (8.0 * sind(var_r31->unk_E8));
|
|
omSetTra(object, 0.0f, 0.0f, 0.0f);
|
|
omSetRot(object, 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelPosSet(object->model[4], var_r31->unk_00.unk_6C.x, spDC, var_r31->unk_00.unk_6C.z);
|
|
Hu3DModelRotSet(object->model[4], 0.0f, var_r31->unk_00.unk_9C, 0.0f);
|
|
}
|
|
else if ((var_r31->unk_154 & 1) != 0) {
|
|
fn_1_1D70(lbl_1_bss_1A0->model[0], var_r31->unk_CC, var_r29, Hu3DData[object->model[0]].unk_F0);
|
|
}
|
|
else {
|
|
*var_r29 = var_r31->unk_00.unk_6C;
|
|
omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z);
|
|
omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f);
|
|
}
|
|
fn_1_A3C4(object, var_r29, 5);
|
|
if (var_r31->unk_14C != 0) {
|
|
lbl_1_bss_D8++;
|
|
VECAdd(&lbl_1_bss_CC, &var_r31->unk_00.unk_6C, &lbl_1_bss_CC);
|
|
}
|
|
}
|
|
|
|
void fn_1_11D5C(omObjData *object)
|
|
{
|
|
Vec sp8;
|
|
|
|
UnkM450Struct3 *var_r31;
|
|
s32 var_r29;
|
|
s32 var_r27;
|
|
s32 *var_r26;
|
|
|
|
(void)var_r27;
|
|
(void)var_r27;
|
|
(void)var_r27;
|
|
(void)var_r27;
|
|
|
|
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct3), MEMORY_DEFAULT_NUM);
|
|
var_r31 = object->data;
|
|
var_r31->unk_150 = 0xFA0;
|
|
var_r31->unk_154 = 0;
|
|
var_r31->unk_14C = 0;
|
|
var_r31->unk_13C = -1;
|
|
var_r31->unk_148 = 7;
|
|
sp8.x = -300.0f + (600.0f * object->work[0]);
|
|
sp8.y = 1500.0f;
|
|
sp8.z = -600.0f;
|
|
fn_1_2C1C(&var_r31->unk_00, object, 4, 8, lbl_1_data_1AC, 0, &sp8, 0.0f);
|
|
var_r31->unk_00.unk_3C |= 0x1000;
|
|
for (var_r29 = 0; var_r29 < 5; var_r29++) {
|
|
object->model[var_r29] = Hu3DModelCreateFile(lbl_1_data_100[var_r29]);
|
|
Hu3DModelAttrSet(object->model[var_r29], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL);
|
|
Hu3DModelAttrSet(object->model[var_r29], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelLayerSet(object->model[var_r29], 3);
|
|
Hu3DModelShadowSet(object->model[var_r29]);
|
|
}
|
|
var_r31->unk_F4 = 1.0f;
|
|
var_r31->unk_C4 = lbl_1_data_204;
|
|
var_r26 = lbl_1_data_150;
|
|
if (object->work[0] == 0) {
|
|
var_r31->unk_C4 = lbl_1_data_1DC;
|
|
var_r26 = lbl_1_data_114;
|
|
Hu3DModelHookSet(object->model[0], "g007m0-itemhook_r", object->model[1]);
|
|
}
|
|
for (var_r29 = 0; var_r29 < 0xF; var_r29++) {
|
|
object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], var_r26[var_r29]);
|
|
}
|
|
Hu3DMotionSet(object->model[0], object->motion[7]);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE);
|
|
if (object->work[0] == 0) {
|
|
CharModelEffectNpcInit(object->model[0], object->motion[1], 0, 0xD);
|
|
CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 0xD);
|
|
}
|
|
else {
|
|
CharModelEffectNpcInit(object->model[0], object->motion[1], 2, 0xD);
|
|
CharModelEffectNpcInit(object->model[0], object->motion[2], 3, 0xD);
|
|
}
|
|
omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z);
|
|
omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f);
|
|
if (object->work[0] == 0) {
|
|
Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF);
|
|
}
|
|
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
|
var_r31->unk_00.unk_3C &= ~0xC00;
|
|
object->func = (omObjFunc)fn_1_ED4C;
|
|
}
|
|
|
|
Vec lbl_1_data_464 = { 7000.0f, 7000.0f, 7000.0f };
|
|
Vec lbl_1_data_470 = { 0.0f, 1.0f, 0.0f };
|
|
Vec lbl_1_data_47C = { 0.0f, 0.0f, 0.0f };
|
|
Vec lbl_1_data_488 = { 0.0f, 2200.0f, 1500.0f };
|
|
Vec lbl_1_data_494 = { 0.0f, 1800.0f, 0.0f };
|
|
Vec lbl_1_data_4A0 = { 0.0f, 1800.f, 650.0f };
|
|
Vec lbl_1_data_4AC = { 0.0f, 1700.0f, -650.0f };
|
|
Vec lbl_1_data_4B8 = { 0.0f, 1850.0f, 450.0f };
|
|
Vec lbl_1_data_4C4 = { 0.0f, 1775.0f, -50.0f };
|
|
Vec lbl_1_data_4D0 = { 0.0f, 1850.0f, 550.0f };
|
|
Vec lbl_1_data_4DC = { 0.0f, 1775.0f, -50.0f };
|
|
Vec lbl_1_data_4E8 = { 0.0f, 3000.0f, 1000.0f };
|
|
Vec lbl_1_data_4F4 = { 0.0f, -3.0f, -1.0f };
|
|
GXColor lbl_1_data_500 = { 0xFF, 0xFF, 0xFF, 0xFF };
|
|
Vec lbl_1_data_504 = { 0.0f, 8000.0f, 1000.0f };
|
|
Vec lbl_1_data_510 = { 0.0f, 0.0f, 0.0f };
|
|
Vec lbl_1_data_51C[4] = {
|
|
{ 1500.0f, 700.0f, 300.0f },
|
|
{ 1500.0f, 1200.0f, 200.0f },
|
|
{ 2400.0f, 1400.0f, 400.0f },
|
|
{ 2500.0f, 800.0f, -200.0f },
|
|
};
|
|
|
|
s32 lbl_1_data_9EC[8];
|
|
|
|
void fn_1_12234(void)
|
|
{
|
|
UnkDataA0CStruct *var_r31;
|
|
s32 var_r30;
|
|
s32 var_r29;
|
|
s32 var_r28;
|
|
s32 var_r27;
|
|
|
|
lbl_1_data_A0C[0].unk_0C = lbl_1_data_9EC[GWPlayerCfg[lbl_1_bss_120].character];
|
|
for (var_r31 = lbl_1_data_A0C, var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) {
|
|
var_r27 = var_r31->unk_10 + 3;
|
|
var_r31->unk_18 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r27 * 4, MEMORY_DEFAULT_NUM);
|
|
var_r31->unk_18[0] = espEntry(var_r31->unk_00, 0, 0);
|
|
var_r31->unk_18[1] = espEntry(var_r31->unk_04, 0, 0);
|
|
var_r31->unk_18[2] = espEntry(var_r31->unk_0C, 0, 0);
|
|
for (var_r30 = 3; var_r30 < var_r27; var_r30++) {
|
|
var_r31->unk_18[var_r30] = espEntry(var_r31->unk_08, 0, 0);
|
|
}
|
|
var_r28 = 0x30;
|
|
if (var_r29 != 0) {
|
|
var_r28 = 0x210;
|
|
}
|
|
for (var_r30 = 0; var_r30 < var_r27; var_r30++) {
|
|
espDrawNoSet(var_r31->unk_18[var_r30], 0);
|
|
espDispOff(var_r31->unk_18[var_r30]);
|
|
espAttrSet(var_r31->unk_18[var_r30], HUSPR_ATTR_NOANIM);
|
|
espBankSet(var_r31->unk_18[var_r30], 0);
|
|
espPriSet(var_r31->unk_18[var_r30], 0x80 - var_r29);
|
|
espPosSet(var_r31->unk_18[var_r30], var_r28, 225.0f);
|
|
}
|
|
espTPLvlSet(var_r31->unk_18[0], 0.5f);
|
|
espColorSet(var_r31->unk_18[0], 0, 0, 0);
|
|
espPosSet(var_r31->unk_18[2], var_r28 - 2, 83.0f);
|
|
for (var_r30 = 3; var_r30 < var_r27; var_r30++) {
|
|
espPosSet(var_r31->unk_18[var_r30], var_r28 - 1, ((var_r30 - 3) * 0x1A) + 0x7B);
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_12540(s32 arg0)
|
|
{
|
|
s32 var_r31;
|
|
|
|
for (var_r31 = 0; var_r31 < (lbl_1_data_A0C[arg0].unk_10 + 3); var_r31++) {
|
|
espDispOn(lbl_1_data_A0C[arg0].unk_18[var_r31]);
|
|
}
|
|
}
|
|
|
|
s32 fn_1_125C0(s32 arg0, s32 arg1)
|
|
{
|
|
UnkDataA0CStruct *var_r31;
|
|
s32 var_r30;
|
|
|
|
var_r31 = &lbl_1_data_A0C[arg0];
|
|
if (arg1 == 0) {
|
|
arg1 = var_r31->unk_10 + 1;
|
|
}
|
|
var_r31->unk_14 -= arg1;
|
|
arg1 = var_r31->unk_14;
|
|
if (var_r31->unk_14 < 0) {
|
|
var_r31->unk_14 = 0;
|
|
}
|
|
for (var_r30 = 0; var_r30 < var_r31->unk_10; var_r30++) {
|
|
if (var_r31->unk_14 <= var_r30) {
|
|
espBankSet(var_r31->unk_18[var_r30 + 3], 1);
|
|
}
|
|
}
|
|
return arg1;
|
|
}
|
|
|
|
void fn_1_12688(omObjData *object)
|
|
{
|
|
Vec sp8;
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f29;
|
|
|
|
CameraData *var_r30;
|
|
|
|
var_f30 = 1.0f;
|
|
var_f31 = 1.0f;
|
|
if (lbl_1_bss_1A4->work[0] > 0x3EC) {
|
|
var_f30 = 0.8f;
|
|
var_f31 = 0.4f;
|
|
}
|
|
if (object->work[0] != 0) {
|
|
if (lbl_1_bss_1A4->work[0] <= 0x3EB) {
|
|
object->work[0] = object->work[0] - (3.0f - (lbl_1_bss_128 / 120.0f));
|
|
if (object->work[0] > 10 * REFRESH_RATE) {
|
|
object->work[0] = 1;
|
|
}
|
|
}
|
|
if (--object->work[0] == 0) {
|
|
var_r30 = Hu3DCamera;
|
|
VECSubtract(&var_r30->pos, &var_r30->target, &sp8);
|
|
var_f29 = (atan2d(sp8.x, sp8.z)) + ((90.0f * frandf()) - 45.0f);
|
|
omSetRot(object, 0.0f, var_f29, 0.0f);
|
|
omSetSca(object, var_f31, var_f30, var_f31);
|
|
Hu3DMotionTimeSet(object->model[0], 0.0f);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE);
|
|
HuAudFXPlay(0x7C0);
|
|
}
|
|
}
|
|
else if (Hu3DMotionEndCheck(object->model[0]) != 0) {
|
|
object->work[0] = frandmod(10 * REFRESH_RATE);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE);
|
|
}
|
|
}
|
|
|
|
void fn_1_1291C(omObjData *object)
|
|
{
|
|
object->work[0] = frandmod(10 * REFRESH_RATE);
|
|
omSetTra(object, 0.0f, 0.0f, 0.0f);
|
|
omSetRot(object, 0.0f, 0.0f, 0.0f);
|
|
object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M450, 0x22));
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelLayerSet(object->model[0], 1);
|
|
object->func = fn_1_12688;
|
|
}
|
|
|
|
UnkData5CCStruct lbl_1_data_5CC[8] = {
|
|
{ "c000m1-ske_head", 0x100, 1, 183.0f },
|
|
{ "c001m1-ske_head", 0x100, 1, 183.0f },
|
|
{ "c002m1-ske_head", 0x80, 0, 100.0f },
|
|
{ "c003m1-ske_head", 0x80, 0, 90.0f },
|
|
{ "c004m1-ske_head", 0x80, 0, 83.0f },
|
|
{ "c005m1-ske_head", 0x80, 0, 112.0f },
|
|
{ "c006m1-ske_head", 0x80, 0, 100.0f },
|
|
{ "c007m1-ske_head", 0x80, 0, 70.0f },
|
|
};
|
|
s32 lbl_1_data_64C[8][0x17] = {
|
|
{
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x08),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x09),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x13),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x19),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x36),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6D),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1F),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x00),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x0E),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x10),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x11),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17),
|
|
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x7F),
|
|
},
|
|
{
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x02),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x03),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x05),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x06),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x08),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x09),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x13),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x19),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x1A),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x36),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6D),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x1F),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x1C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x01),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x0E),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x10),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x11),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17),
|
|
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x7F),
|
|
},
|
|
{
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x02),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x03),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x05),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x06),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x08),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x09),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x13),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x19),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x1A),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x36),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6D),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x1F),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x1C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x02),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x0E),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x10),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x11),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17),
|
|
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x7F),
|
|
},
|
|
{
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x02),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x03),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x05),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x06),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x08),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x09),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x13),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x19),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x1A),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x36),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6D),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x1F),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x1C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x03),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x0E),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x10),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x11),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17),
|
|
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x7F),
|
|
},
|
|
{
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x02),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x03),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x05),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x06),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x08),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x09),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x13),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x19),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x1A),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x36),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6D),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x1F),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x1C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x04),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x0E),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x10),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x11),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17),
|
|
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x7F),
|
|
},
|
|
{
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x02),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x03),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x05),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x06),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x08),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x09),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x13),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x19),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x1A),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x36),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6D),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x1F),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x1C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x05),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x0E),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x10),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x11),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17),
|
|
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x7F),
|
|
},
|
|
{
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x02),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x03),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x05),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x06),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x08),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x09),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x13),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x19),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x1A),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x36),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6D),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x1F),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x1C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x06),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x0E),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x10),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x11),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17),
|
|
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x7F),
|
|
},
|
|
{
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x02),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x03),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x05),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x06),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x08),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x09),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x13),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x19),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x1A),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x36),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6D),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x1F),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x1C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x07),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x0E),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x10),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x11),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17),
|
|
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x7F),
|
|
},
|
|
};
|
|
s32 lbl_1_data_92C[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
|
|
UnkData94CStruct lbl_1_data_94C[8] = {
|
|
{ 9, 1.0f, 8.0f, 0.0f, 0 },
|
|
{ 0xA, 1.0f, 0.0f, 0.0f, 0 },
|
|
{ 0xB, 2.5f, 8.0f, 0.0f, 0 },
|
|
{ 0xC, 1.0f, 8.0f, 61.0f, 0x40000002 },
|
|
{ -1, 1.0f, 0.0f, 0.0f, 0 },
|
|
{ 0xD, 1.0f, 8.0f, 0.0f, 0 },
|
|
{ 0, 1.0f, 16.0f, 0.0f, 0x40000001 },
|
|
{ -1, 1.0f, 0.0f, 0.0f, 0 },
|
|
};
|
|
s32 lbl_1_data_9EC[8] = {
|
|
0x610000,
|
|
0x610001,
|
|
0x610002,
|
|
0x610003,
|
|
0x610004,
|
|
0x610005,
|
|
0x610006,
|
|
0x610007,
|
|
};
|
|
UnkDataA0CStruct lbl_1_data_A0C[2] = {
|
|
{ 0x00510065, DATA_MAKE_NUM(DATADIR_M450, 0x64), DATA_MAKE_NUM(DATADIR_M450, 0x68), DATA_MAKE_NUM(DATADIR_M450, 0x6B), 0xA, 0xA, NULL },
|
|
{ 0x00510067, DATA_MAKE_NUM(DATADIR_M450, 0x66), DATA_MAKE_NUM(DATADIR_M450, 0x69), DATA_MAKE_NUM(DATADIR_M450, 0x6A), 5, 5, NULL },
|
|
};
|
|
UnkDataA80Struct lbl_1_data_A80[9] = {
|
|
{ "m450mex06-s2hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 135.0f, 36.0f / REFRESH_RATE, 350.0f }, -1, 0 },
|
|
{ "m450mex06-s2hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 315.0f, 36.0f / REFRESH_RATE, 350.0f }, -2, 0 },
|
|
{ "m450mex06-s2hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 45.0f, -36.0f / REFRESH_RATE, 350.0f }, -1, 0 },
|
|
{ "m450mex06-s2hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 225.0f, -36.0f / REFRESH_RATE, 350.0f }, -2, 0 },
|
|
{ "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 36.0f / REFRESH_RATE, 350.0f }, -1, 0 },
|
|
{ "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 120.0f, 36.0f / REFRESH_RATE, 350.0f }, -2, 0 },
|
|
{ "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 240.0f, 36.0f / REFRESH_RATE, 350.0f }, -2, 0 },
|
|
{ "m450mex06-s2hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 36.0f / REFRESH_RATE, 300.0f }, -1, 0 },
|
|
{ "m450mex06-s2hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 180.0f, 36.0f / REFRESH_RATE, 300.0f }, -2, 0 },
|
|
};
|
|
UnkDataA80Struct lbl_1_data_C58[0xA] = {
|
|
{ "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 60.0f, -36.0f / REFRESH_RATE, 300.0f }, -1, 0 },
|
|
{ "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 180.0f, -36.0f / REFRESH_RATE, 300.0f }, -2, 0 },
|
|
{ "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 300.0f, -36.0f / REFRESH_RATE, 300.0f }, -2, 0 },
|
|
{ "m450mex06-s4hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 135.0f, -72.0f / REFRESH_RATE, 300.0f }, -1, 0 },
|
|
{ "m450mex06-s4hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 315.0f, -72.0f / REFRESH_RATE, 300.0f }, -2, 0 },
|
|
{ "m450mex06-s4hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 225.0f, -36.0f / REFRESH_RATE, 300.0f }, -1, 0 },
|
|
{ "m450mex06-s4hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 45.0f, -36.0f / REFRESH_RATE, 300.0f }, -2, 0 },
|
|
{ "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 72.0f / REFRESH_RATE, 300.0f }, -1, 0 },
|
|
{ "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 120.0f, 72.0f / REFRESH_RATE, 300.0f }, -2, 0 },
|
|
{ "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 240.0f, 72.0f / REFRESH_RATE, 300.0f }, -2, 0 },
|
|
};
|
|
char *lbl_1_data_E68[5] = {
|
|
"m450m01-from1to2",
|
|
"m450m01-from2to3",
|
|
"m450m01-from3to4",
|
|
"m450m01-from4to5",
|
|
"m450m01-from5to6",
|
|
};
|
|
s32 lbl_1_data_E7C[0x21] = {
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x10),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x11),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x12),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x13),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x14),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x15),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x17),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x18),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x19),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x1A),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x1B),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x1C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x1D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x1E),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x1F),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x16),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x20),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x21),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x21),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x21),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x21),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x21),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x28),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x28),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x28),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x29),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x2A),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x2A),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x2B),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x2B),
|
|
};
|
|
s32 lbl_1_data_F00[0x17] = {
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x08),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x09),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0B),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0C),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0E),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0A),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0D),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0F),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0F),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0F),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0F),
|
|
DATA_MAKE_NUM(DATADIR_M450, 0x0F),
|
|
};
|
|
s32 lbl_1_data_F5C[4]
|
|
= { DATA_MAKE_NUM(DATADIR_M450, 0x24), DATA_MAKE_NUM(DATADIR_M450, 0x25), DATA_MAKE_NUM(DATADIR_M450, 0x26), DATA_MAKE_NUM(DATADIR_M450, 0x27) };
|
|
s32 lbl_1_data_F6C[6] = { 0, 60 * REFRESH_RATE, 300 * REFRESH_RATE, 60 * REFRESH_RATE, 300 * REFRESH_RATE, 300 * REFRESH_RATE };
|
|
float lbl_1_data_F84[5] = { 1200.0f, 1500.0f, 0.0f, 200.0f, 300.0f };
|
|
float lbl_1_data_F98[5] = { 1200.0f, 1500.0f, 0.0f, 200.0f, 300.0f };
|
|
float *lbl_1_data_FAC[6] = { NULL, lbl_1_data_F84, NULL, lbl_1_data_F98, NULL, NULL };
|
|
s32 lbl_1_data_FC4[5] = { 5, 4, 3, 2, 0 };
|
|
s32 lbl_1_data_FD8[5] = { 3, 4, 5, 2, 2 };
|
|
s32 lbl_1_data_FEC[5] = { 3, 4, 2, 5, 3 };
|
|
s32 lbl_1_data_1000[5] = { 4, 2, 3, 5, 3 };
|
|
s32 lbl_1_data_1014[0xA] = { 9, 0x10, 0xA, 8, 0xC, 0xD, 0xB, 0xE, 0xF, 1 };
|
|
s32 lbl_1_data_103C[0xA] = { 9, 0x10, 0xA, 8, 0xB, 0xC, 0xE, 0xF, 0xD, 1 };
|
|
s32 lbl_1_data_1064[0xA] = { 8, 0xC, 9, 0xB, 0xA, 0x10, 0xE, 0xF, 0xD, 5 };
|
|
s32 lbl_1_data_108C[0xA] = { 8, 0xC, 9, 0xB, 0xF, 0xA, 0x10, 0xE, 0xD, 6 };
|
|
s32 lbl_1_data_10B4[0xA] = { 8, 0xA, 0x10, 0xC, 9, 0xD, 0xB, 0xE, 0xF, 2 };
|
|
s32 lbl_1_data_10DC[0xA] = { 8, 0xA, 0xC, 0xB, 9, 0xD, 0xE, 0xF, 0x10, 8 };
|
|
s32 lbl_1_data_1104[0xA] = { 8, 0xC, 9, 0x10, 0xF, 0xA, 0xB, 0xE, 0xD, 3 };
|
|
s32 lbl_1_data_112C[0xA] = { 0xB, 8, 0xA, 9, 0xD, 0x10, 0xE, 0xC, 0xF, 5 };
|
|
s32 lbl_1_data_1154[0xA] = { 9, 0xC, 0xA, 8, 0xD, 0x10, 0xB, 0xE, 0xF, 5 };
|
|
s32 lbl_1_data_117C[0xA] = { 9, 0xB, 0xA, 8, 0xF, 0xC, 0x10, 0xE, 0xD, 6 };
|
|
s32 lbl_1_data_11A4[0xA] = { 8, 9, 0x10, 0xE, 0xD, 0xA, 0xC, 0xB, 0xF, 2 };
|
|
s32 lbl_1_data_11CC[0xA] = { 0xB, 8, 0xA, 0xE, 9, 0xD, 0xC, 0xF, 0x10, 8 };
|
|
s32 *lbl_1_data_11F4[4] = { lbl_1_data_FC4, lbl_1_data_FD8, lbl_1_data_FEC, lbl_1_data_1000 };
|
|
s32 *lbl_1_data_1204[3] = { lbl_1_data_1014, lbl_1_data_103C, lbl_1_data_1064 };
|
|
s32 *lbl_1_data_1210[3] = { lbl_1_data_108C, lbl_1_data_10B4, lbl_1_data_10DC };
|
|
s32 *lbl_1_data_121C[3] = { lbl_1_data_1104, lbl_1_data_112C, lbl_1_data_1154 };
|
|
s32 *lbl_1_data_1228[3] = { lbl_1_data_117C, lbl_1_data_11A4, lbl_1_data_11CC };
|
|
s32 lbl_1_data_1234[8] = { 0xFFFFFFFF, 0, 1, 0, 0, 0xFFFFFFFF, 0, 1 };
|
|
|
|
char *lbl_1_data_12A0[4] = {
|
|
"m450mex06-s3hook01",
|
|
"m450mex06-s3hook02",
|
|
"m450mex06-s3hook03",
|
|
"m450mex06-s3hook04",
|
|
};
|
|
|
|
char *lbl_1_data_135C[9] = {
|
|
"m450mex06-s5hook03",
|
|
"m450mex06-s5hook02",
|
|
"m450mex06-s5hook01",
|
|
"m450mex06-s5hook06",
|
|
"m450mex06-s5hook05",
|
|
"m450mex06-s5hook04",
|
|
"m450mex06-s5hook09",
|
|
"m450mex06-s5hook08",
|
|
"m450mex06-s5hook07",
|
|
};
|
|
UnkData1380Struct lbl_1_data_1380 = { lbl_1_data_12A0, 300.0f, 4, 2, -1, 0, 1, 0, 2, NULL, NULL, NULL, NULL, NULL };
|
|
UnkData1380Struct lbl_1_data_13B8 = { lbl_1_data_135C, 200.0f, 9, 3, -1, 0, 1, 0, 8, NULL, NULL, NULL, NULL, NULL };
|
|
UnkData1450Struct lbl_1_data_1450[5] = {
|
|
{ "m450mex06-s6hook01", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 },
|
|
{ "m450mex06-s6hook02", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 },
|
|
{ "m450mex06-s6hook03", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 },
|
|
{ "m450mex06-s6hook04", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 },
|
|
{ "m450mex06-s6hook05", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 },
|
|
};
|
|
|
|
HsfanimStruct00 lbl_1_data_1504 = {
|
|
0x1E,
|
|
{ 0, 0 },
|
|
1.0f,
|
|
30.0f,
|
|
360.0f,
|
|
{ 0.0f, 0.1f, 0.0f },
|
|
1.0f,
|
|
1.0f,
|
|
50.0f,
|
|
1.08f,
|
|
1,
|
|
{
|
|
{ 0xFF, 0xFF, 0xFF, 0xFF },
|
|
{ 0xFF, 0xFF, 0xFF, 0xFF },
|
|
{ 0xFF, 0xFF, 0xFF, 0xFF },
|
|
{ 0xFF, 0xFF, 0xFF, 0xFF },
|
|
},
|
|
{
|
|
{ 0xFF, 0xFF, 0xFF, 0 },
|
|
{ 0xFF, 0xFF, 0xFF, 0 },
|
|
{ 0xFF, 0xFF, 0xFF, 0 },
|
|
{ 0xFF, 0xFF, 0xFF, 0 },
|
|
},
|
|
};
|
|
|
|
void fn_1_12A1C(omObjData *object)
|
|
{
|
|
float var_f31;
|
|
float var_f30;
|
|
|
|
if (object->work[0] != 0) {
|
|
if (lbl_1_bss_108 != 0) {
|
|
if (--object->work[0] == 0) {
|
|
var_f31 = (1500.0f * frandf()) - 750.0f;
|
|
var_f30 = (1500.0f * frandf()) - 750.0f;
|
|
omSetTra(object, var_f31, 1380.0f, var_f30);
|
|
Hu3DMotionTimeSet(object->model[0], 0.0f);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE);
|
|
}
|
|
}
|
|
}
|
|
else if (Hu3DMotionEndCheck(object->model[0]) != 0) {
|
|
object->work[0] = frandmod(3 * REFRESH_RATE);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE);
|
|
}
|
|
}
|
|
|
|
void fn_1_12B80(omObjData *object)
|
|
{
|
|
s32 var_r30;
|
|
s16 var_r29;
|
|
|
|
object->work[0] = frandmod(3 * REFRESH_RATE);
|
|
omSetTra(object, 0.0f, 0.0f, 0.0f);
|
|
omSetRot(object, 0.0f, 0.0f, 0.0f);
|
|
|
|
object->model[0] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M450, 0x23));
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelLayerSet(object->model[0], 1);
|
|
object->func = fn_1_12A1C;
|
|
}
|
|
|
|
void fn_1_12D78(omObjData *object) { }
|
|
|
|
void fn_1_12D7C(omObjData *object)
|
|
{
|
|
omSetTra(object, 0.0f, 0.0f, 0.0f);
|
|
omSetRot(object, 0.0f, 0.0f, 0.0f);
|
|
object->model[0] = Hu3DModelCreateFile(lbl_1_data_F00[object->work[0]]);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE);
|
|
object->func = fn_1_12D78;
|
|
}
|
|
|
|
void fn_1_12E5C(s32 var_r30, s32 var_r29, s32 var_r31)
|
|
{
|
|
Vec sp8 = lbl_1_data_1450[var_r30].unk_04;
|
|
|
|
VECAdd(&lbl_1_data_1450[var_r29].unk_04, &sp8, &sp8);
|
|
VECScale(&sp8, &sp8, 0.5f);
|
|
sp8.y = 1501.0f;
|
|
Hu3DModelPosSet(lbl_1_bss_1A0->model[var_r31], sp8.x, sp8.y, sp8.z);
|
|
Hu3DModelRotSet(
|
|
lbl_1_bss_1A0->model[var_r31], 0.0f, atan2d(lbl_1_data_1450[var_r30].unk_04.x - sp8.x, lbl_1_data_1450[var_r30].unk_04.z - sp8.z), 0.0f);
|
|
Hu3DModelScaleSet(
|
|
lbl_1_bss_1A0->model[var_r31], 1.0f, 1.0f, VECDistance(&lbl_1_data_1450[var_r30].unk_04, &lbl_1_data_1450[var_r29].unk_04) / 1000.0f);
|
|
Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r31], 0.0f);
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31], HU3D_ATTR_DISPOFF);
|
|
}
|
|
|
|
void fn_1_130A4(Vec *arg0, s32 var_r30)
|
|
{
|
|
Hu3DModelPosSet(lbl_1_bss_1A0->model[var_r30], arg0->x, arg0->y, arg0->z);
|
|
Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r30], 0.0f);
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r30], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r30], HU3D_ATTR_DISPOFF);
|
|
HuAudFXPlay(0x7B7);
|
|
}
|
|
|
|
void fn_1_13174(UnkData1380Struct *arg0)
|
|
{
|
|
s32 var_r30;
|
|
s32 var_r27;
|
|
|
|
if (arg0->unk_14 != 0) {
|
|
arg0->unk_14 = 0;
|
|
arg0->unk_18 = 0;
|
|
for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) {
|
|
if (arg0->unk_24[var_r30] >= 0) {
|
|
var_r27 = lbl_1_bss_1A0->model[arg0->unk_24[var_r30]];
|
|
MTXIdentity(Hu3DData[var_r27].unk_F0);
|
|
if (arg0->unk_08 == 4) {
|
|
Hu3DModelRotSet(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], 0.0f, 90.0f, 0.0f);
|
|
}
|
|
else {
|
|
Hu3DModelRotSet(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], 0.0f, -90.0f, 0.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) {
|
|
if (arg0->unk_18 != 0) {
|
|
if (arg0->unk_24[var_r30] < 0) {
|
|
fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_00[var_r30], &arg0->unk_30[var_r30], NULL);
|
|
}
|
|
else {
|
|
var_r27 = lbl_1_bss_1A0->model[arg0->unk_24[var_r30]];
|
|
fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_00[var_r30], &arg0->unk_30[var_r30], Hu3DData[var_r27].unk_F0);
|
|
}
|
|
}
|
|
else if (arg0->unk_24[var_r30] >= 0) {
|
|
Hu3DModelPosSet(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], arg0->unk_30[var_r30].x, arg0->unk_30[var_r30].y, arg0->unk_30[var_r30].z);
|
|
}
|
|
}
|
|
for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) {
|
|
if (arg0->unk_28[var_r30] >= 0) {
|
|
omSetTra(lbl_1_bss_144[arg0->unk_28[var_r30]], arg0->unk_30[var_r30].x, arg0->unk_30[var_r30].y, arg0->unk_30[var_r30].z);
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_13560(UnkData1380Struct *arg0, s32 *arg1, s32 arg2)
|
|
{
|
|
s32 var_r30;
|
|
Vec *var_r28;
|
|
|
|
arg0->unk_30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(Vec), MEMORY_DEFAULT_NUM);
|
|
arg0->unk_34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(Vec), MEMORY_DEFAULT_NUM);
|
|
arg0->unk_24 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(s32), MEMORY_DEFAULT_NUM);
|
|
arg0->unk_28 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(s32), MEMORY_DEFAULT_NUM);
|
|
arg0->unk_2C = arg1;
|
|
for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) {
|
|
arg0->unk_24[var_r30] = *arg1++;
|
|
arg0->unk_28[var_r30] = arg2++;
|
|
var_r28 = &arg0->unk_34[var_r30];
|
|
var_r28->x = 0.0f;
|
|
var_r28->y = 0.0f;
|
|
var_r28->z = 0.0f;
|
|
}
|
|
arg0->unk_10 = arg0->unk_24[*arg1];
|
|
arg0->unk_24[*arg1] = -1;
|
|
arg0->unk_28[*arg1] = -1;
|
|
fn_1_13174(arg0);
|
|
for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) {
|
|
if (arg0->unk_24[var_r30] >= 0) {
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_13714(void)
|
|
{
|
|
Vec sp8;
|
|
s32 var_r31;
|
|
s32 var_r30;
|
|
|
|
if ((0 > lbl_1_bss_F8) || (NULL == lbl_1_bss_FC)) {
|
|
return;
|
|
}
|
|
VECSubtract(&lbl_1_bss_EC, &lbl_1_bss_FC->unk_30[lbl_1_bss_F8], &sp8);
|
|
if (10.0f < VECMag(&sp8)) {
|
|
VECNormalize(&sp8, &sp8);
|
|
VECScale(&sp8, &sp8, 10.0f);
|
|
}
|
|
lbl_1_bss_FC->unk_34[lbl_1_bss_F8] = sp8;
|
|
VECAdd(&sp8, &lbl_1_bss_FC->unk_30[lbl_1_bss_F8], &lbl_1_bss_FC->unk_30[lbl_1_bss_F8]);
|
|
if ((sp8.x == 0.0f) && (sp8.z == 0.0f)) {
|
|
for (var_r30 = lbl_1_bss_FC->unk_20, var_r31 = 0; var_r31 < lbl_1_bss_FC->unk_08; var_r31++, var_r30++) {
|
|
if ((lbl_1_bss_FC->unk_24[var_r31] >= 0) && (var_r30 != lbl_1_bss_FC->unk_24[var_r31])) {
|
|
break;
|
|
}
|
|
}
|
|
if (lbl_1_bss_FC->unk_08 == var_r31) {
|
|
lbl_1_bss_FC->unk_1C = 1;
|
|
}
|
|
lbl_1_bss_FC->unk_30[lbl_1_bss_F8] = lbl_1_bss_EC;
|
|
lbl_1_bss_F8 = -1;
|
|
lbl_1_bss_FC = NULL;
|
|
HuAudFXPlay(0x7B9);
|
|
}
|
|
}
|
|
|
|
void fn_1_139B0(UnkData1380Struct *arg0, s32 arg1)
|
|
{
|
|
s32 var_r30;
|
|
s32 var_r28;
|
|
|
|
arg0->unk_18 = 1;
|
|
arg0->unk_24[arg0->unk_08 - 1] = arg1;
|
|
for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) {
|
|
var_r28 = lbl_1_bss_1A0->model[arg0->unk_24[var_r30]];
|
|
fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_00[var_r30], &arg0->unk_30[var_r30], Hu3DData[var_r28].unk_F0);
|
|
Hu3DModelPosSet(var_r28, 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelRotSet(var_r28, 0.0f, 0.0f, 0.0f);
|
|
}
|
|
}
|
|
|
|
void fn_1_13B4C(UnkData1380Struct *arg0)
|
|
{
|
|
arg0->unk_14 = 1;
|
|
}
|
|
|
|
void fn_1_13B58(s32 arg0)
|
|
{
|
|
if (arg0 > GWMGTypeGet()) {
|
|
GWMGTypeSet(arg0);
|
|
}
|
|
}
|
|
|
|
s32 fn_1_13B90(s32 arg0)
|
|
{
|
|
if (arg0 > GWMGTypeGet()) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
void fn_1_13BC4(s32 arg0)
|
|
{
|
|
s32 var_r31;
|
|
UnkData1380Struct *var_r30;
|
|
s16 var_r29;
|
|
|
|
nMap = 0;
|
|
lbl_1_bss_118 = arg0;
|
|
lbl_1_bss_F8 = -1;
|
|
lbl_1_bss_FC = NULL;
|
|
lbl_1_bss_110 = 1;
|
|
lbl_1_bss_304 = lbl_1_data_F6C[arg0];
|
|
var_r30 = NULL;
|
|
switch (arg0) {
|
|
case 1:
|
|
MapObject[nMap++] = lbl_1_bss_144[0];
|
|
break;
|
|
case 2:
|
|
lbl_1_bss_110 = 2;
|
|
var_r30 = &lbl_1_data_1380;
|
|
lbl_1_data_1380.unk_14 = 1;
|
|
MapObject[nMap++] = lbl_1_bss_144[1];
|
|
break;
|
|
case 3:
|
|
MapObject[nMap++] = lbl_1_bss_144[2];
|
|
break;
|
|
case 4:
|
|
lbl_1_bss_110 = 2;
|
|
var_r30 = &lbl_1_data_13B8;
|
|
lbl_1_data_13B8.unk_14 = 1;
|
|
MapObject[nMap++] = lbl_1_bss_144[3];
|
|
break;
|
|
case 5:
|
|
lbl_1_bss_110 = 3;
|
|
MapObject[nMap++] = lbl_1_bss_144[4];
|
|
for (var_r31 = 0; var_r31 < 5; var_r31++) {
|
|
MapObject[nMap++] = lbl_1_bss_144[var_r31 + 0x12];
|
|
}
|
|
break;
|
|
}
|
|
fn_1_13B58(arg0);
|
|
if (NULL != var_r30) {
|
|
for (var_r31 = 0; var_r31 < var_r30->unk_08; var_r31++) {
|
|
if (var_r30->unk_28[var_r31] >= 0) {
|
|
MapObject[nMap++] = lbl_1_bss_144[var_r30->unk_28[var_r31]];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_13F28(omObjData *object)
|
|
{
|
|
Vec sp30;
|
|
float var_f31;
|
|
|
|
UnkData1450Struct *var_r31;
|
|
s32 var_r29;
|
|
s32 var_r28;
|
|
Vec *var_r27;
|
|
Vec *var_r26;
|
|
|
|
for (var_r29 = 0; var_r29 < lbl_1_data_1380.unk_08; var_r29++) {
|
|
var_r27 = &lbl_1_data_1380.unk_34[var_r29];
|
|
var_r27->x = 0.0f;
|
|
var_r27->y = 0.0f;
|
|
var_r27->z = 0.0f;
|
|
}
|
|
for (var_r29 = 0; var_r29 < lbl_1_data_13B8.unk_08; var_r29++) {
|
|
var_r26 = &lbl_1_data_13B8.unk_34[var_r29];
|
|
var_r26->x = 0.0f;
|
|
var_r26->y = 0.0f;
|
|
var_r26->z = 0.0f;
|
|
}
|
|
fn_1_13714();
|
|
fn_1_13174(&lbl_1_data_1380);
|
|
fn_1_13174(&lbl_1_data_13B8);
|
|
var_r28 = object->model[6];
|
|
fn_1_1D70(object->model[0], "m450mex06-s3hook06", &sp30, Hu3DData[var_r28].unk_F0);
|
|
var_r28 = object->model[7];
|
|
fn_1_1D70(object->model[0], "m450mex06-s3hook05", &sp30, Hu3DData[var_r28].unk_F0);
|
|
var_r28 = object->model[17];
|
|
fn_1_1D70(object->model[0], "m450mex06-s5hook11", &sp30, Hu3DData[var_r28].unk_F0);
|
|
var_r28 = object->model[18];
|
|
fn_1_1D70(object->model[0], "m450mex06-s5hook10", &sp30, Hu3DData[var_r28].unk_F0);
|
|
var_r28 = object->model[19];
|
|
fn_1_1D70(object->model[0], "m450m01-from5to6", &sp30, Hu3DData[var_r28].unk_F0);
|
|
for (var_r29 = 0; var_r29 < 5; var_r29++) {
|
|
var_r31 = &lbl_1_data_1450[var_r29];
|
|
var_r31->unk_10 = var_r31->unk_04.y;
|
|
var_r28 = object->model[var_r29 + 0x14];
|
|
fn_1_1D70(object->model[0], var_r31->unk_00, &var_r31->unk_04, Hu3DData[var_r28].unk_F0);
|
|
fn_1_1D18(object->model[var_r29 + 0x14], "m450_s6a1-s6a1hook", &sp30);
|
|
VECAdd(&sp30, &var_r31->unk_04, &var_r31->unk_04);
|
|
if (1560.0f > var_r31->unk_04.y) {
|
|
var_r31->unk_04.y = 1560.0f;
|
|
}
|
|
omSetTra(lbl_1_bss_144[var_r29 + 0x12], var_r31->unk_04.x, var_r31->unk_04.y, var_r31->unk_04.z);
|
|
var_r31->unk_10 = var_r31->unk_04.y - var_r31->unk_10;
|
|
if (var_r31->unk_18 != 0) {
|
|
if (var_r31->unk_1C != 0) {
|
|
var_f31 = Hu3DMotionTimeGet(object->model[var_r29 + 0x14]);
|
|
if ((10.0f <= var_f31) && (40.0f >= var_f31)) {
|
|
var_r31->unk_10 = 0.0f;
|
|
}
|
|
if (40.0f <= var_f31) {
|
|
Hu3DMotionTimeSet(object->model[var_r29 + 0x14], 10.0f);
|
|
if (var_r31->unk_20 != 0) {
|
|
var_r31->unk_20 = 0;
|
|
}
|
|
}
|
|
if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_10C < 3) {
|
|
var_r31->unk_14 += 1.0f;
|
|
if (20 * REFRESH_RATE < var_r31->unk_14) {
|
|
var_r31->unk_1C = 0;
|
|
fn_1_1B510(var_r29);
|
|
}
|
|
}
|
|
}
|
|
else if (Hu3DMotionEndCheck(object->model[var_r29 + 0x14]) != 0) {
|
|
var_r31->unk_18 = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_148B0(float arg8, s8 arg0)
|
|
{
|
|
Mtx spC;
|
|
ModelData *var_r30;
|
|
s32 var_r31;
|
|
|
|
if (lbl_1_bss_114 == 0) {
|
|
if (arg0 == 0x78) {
|
|
MTXRotRad(spC, 0x5A, 0.017453292f * arg8);
|
|
}
|
|
else {
|
|
MTXRotRad(spC, 0x58, 0.017453292f * arg8);
|
|
}
|
|
MTXConcat(spC, lbl_1_bss_88, spC);
|
|
for (var_r31 = 0; var_r31 <= 1; var_r31++) {
|
|
var_r30 = &Hu3DData[lbl_1_bss_1A0->model[var_r31]];
|
|
MTXCopy(spC, var_r30->unk_F0);
|
|
}
|
|
fn_1_13F28(lbl_1_bss_1A0);
|
|
}
|
|
}
|
|
|
|
void fn_1_149C0(s8 arg0)
|
|
{
|
|
Mtx spC;
|
|
s32 var_r31;
|
|
ModelData *var_r30;
|
|
|
|
lbl_1_bss_114 = 1;
|
|
if (arg0 == 0x78) {
|
|
MTXRotRad(spC, 0x5A, 1.5707964f);
|
|
}
|
|
else {
|
|
MTXRotRad(spC, 0x58, 1.5707964f);
|
|
}
|
|
MTXConcat(spC, lbl_1_bss_88, lbl_1_bss_88);
|
|
for (var_r31 = 0; var_r31 <= 1; var_r31++) {
|
|
var_r30 = &Hu3DData[lbl_1_bss_1A0->model[var_r31]];
|
|
MTXCopy(lbl_1_bss_88, var_r30->unk_F0);
|
|
}
|
|
fn_1_13F28(lbl_1_bss_1A0);
|
|
}
|
|
|
|
void fn_1_14AB8(void)
|
|
{
|
|
s32 var_r31;
|
|
|
|
for (var_r31 = 0; var_r31 < 5; var_r31++) {
|
|
fn_1_1D70(lbl_1_bss_1A0->model[0], lbl_1_data_E68[var_r31], &lbl_1_bss_4C[var_r31], NULL);
|
|
}
|
|
}
|
|
|
|
void fn_1_14BC8(UnkDataA80Struct *arg0, s32 arg1)
|
|
{
|
|
s32 var_r31;
|
|
|
|
lbl_1_bss_104 = arg0;
|
|
lbl_1_bss_100 = arg1;
|
|
for (var_r31 = 0; var_r31 < lbl_1_bss_100; var_r31++, arg0++) {
|
|
arg0->unk_10 = -1;
|
|
arg0->unk_28 = 1;
|
|
}
|
|
}
|
|
|
|
void fn_1_14C28(void)
|
|
{
|
|
UnkDataA80Struct *var_r31;
|
|
s32 var_r30;
|
|
|
|
if (NULL != lbl_1_bss_104) {
|
|
for (var_r31 = lbl_1_bss_104, var_r30 = 0; var_r30 < lbl_1_bss_100; var_r30++, var_r31++) {
|
|
if (var_r31->unk_10 >= 0) {
|
|
fn_1_66A0(var_r31->unk_10);
|
|
}
|
|
if (var_r31->unk_24 >= 0) {
|
|
HuAudFXStop(var_r31->unk_24);
|
|
var_r31->unk_24 = -2;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_14CE8(omObjData *object)
|
|
{
|
|
UnkDataA80Struct *var_r31;
|
|
s32 var_r25;
|
|
s32 var_r22;
|
|
s32 var_r19;
|
|
s32 var_r18;
|
|
|
|
if (NULL != lbl_1_bss_104) {
|
|
var_r19 = 1;
|
|
var_r18 = 1;
|
|
var_r25 = 0;
|
|
for (var_r31 = lbl_1_bss_104, var_r22 = 0; var_r22 < lbl_1_bss_100; var_r22++, var_r31++) {
|
|
if ((var_r18 != 0) && (var_r31->unk_28 != 0)) {
|
|
var_r25++;
|
|
var_r18 = 0;
|
|
var_r31->unk_28 = 0;
|
|
var_r31->unk_14 = var_r31->unk_18.x;
|
|
fn_1_1D70(lbl_1_bss_1A0->model[0], var_r31->unk_00, &var_r31->unk_04, NULL);
|
|
var_r31->unk_10 = fn_1_69F8(NULL, &var_r31->unk_14, 0x40);
|
|
}
|
|
else if (var_r31->unk_10 >= 0) {
|
|
var_r25++;
|
|
var_r31->unk_14 += var_r31->unk_18.y;
|
|
if (0.0f > var_r31->unk_14) {
|
|
var_r31->unk_14 += 360.0f;
|
|
}
|
|
if (360.0f <= var_r31->unk_14) {
|
|
var_r31->unk_14 -= 360.0f;
|
|
}
|
|
if ((lbl_1_bss_308 & 1) == 0) {
|
|
fn_1_6798(var_r31->unk_10, 1, &var_r31->unk_04, 0.0f, var_r31->unk_18.z, var_r31->unk_04.y);
|
|
if ((var_r19 != 0) && (var_r31->unk_24 < 0) && (var_r31->unk_24 > -2)) {
|
|
var_r19 = 0;
|
|
var_r31->unk_24 = HuAudFXEmiterPlay(var_r31->unk_18.z == 350.0f ? 0x7BF : 0x7AD, &var_r31->unk_04);
|
|
}
|
|
}
|
|
if (fn_1_66DC(var_r31->unk_10) != 0) {
|
|
var_r31->unk_10 = -1;
|
|
}
|
|
}
|
|
}
|
|
if (var_r25 == 0) {
|
|
lbl_1_bss_104 = NULL;
|
|
}
|
|
}
|
|
fn_1_13F28(object);
|
|
fn_1_186A8();
|
|
}
|
|
|
|
void fn_1_15308(omObjData *object)
|
|
{
|
|
s32 var_r30;
|
|
s32 **var_r22;
|
|
|
|
lbl_1_bss_104 = NULL;
|
|
MTXIdentity(lbl_1_bss_88);
|
|
omSetTra(object, 0.0f, 0.0f, 0.0f);
|
|
omSetRot(object, 0.0f, 0.0f, 0.0f);
|
|
for (var_r30 = 0; var_r30 < 0x21; var_r30++) {
|
|
object->model[var_r30] = Hu3DModelCreateFile(lbl_1_data_E7C[var_r30]);
|
|
Hu3DModelAttrSet(object->model[var_r30], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL);
|
|
Hu3DModelAttrSet(object->model[var_r30], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelAttrReset(object->model[var_r30], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelLayerSet(object->model[var_r30], 0);
|
|
Hu3DModelPosSet(object->model[var_r30], 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelRotSet(object->model[var_r30], 0.0f, 0.0f, 0.0f);
|
|
if (var_r30 != 1) {
|
|
Hu3DModelShadowMapSet(object->model[var_r30]);
|
|
}
|
|
}
|
|
Hu3DMotionSpeedSet(object->model[1], 0.1f);
|
|
switch (GWPlayerCfg[lbl_1_bss_120].diff) {
|
|
case 0:
|
|
var_r22 = lbl_1_data_1204;
|
|
break;
|
|
case 1:
|
|
var_r22 = lbl_1_data_1210;
|
|
break;
|
|
case 2:
|
|
var_r22 = lbl_1_data_121C;
|
|
break;
|
|
case 3:
|
|
default:
|
|
var_r22 = lbl_1_data_1228;
|
|
break;
|
|
}
|
|
fn_1_13560(&lbl_1_data_1380, lbl_1_data_11F4[frandmod(4)], 5);
|
|
fn_1_13560(&lbl_1_data_13B8, var_r22[frandmod(3)], 9);
|
|
fn_1_14AB8();
|
|
|
|
for (var_r30 = 0; var_r30 <= 1; var_r30++) {
|
|
Hu3DModelAttrReset(object->model[var_r30], HU3D_ATTR_DISPOFF);
|
|
}
|
|
Hu3DModelAttrReset(object->model[6], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrReset(object->model[17], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrReset(object->model[19], HU3D_ATTR_DISPOFF);
|
|
for (var_r30 = 0; var_r30 < 5; var_r30++) {
|
|
Hu3DModelAttrSet(object->model[var_r30 + 0x14], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelAttrReset(object->model[var_r30 + 0x14], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelAttrReset(object->model[var_r30 + 0x14], HU3D_ATTR_DISPOFF);
|
|
}
|
|
object->func = fn_1_14CE8;
|
|
}
|
|
|
|
float fn_1_15B48(s32 arg0, float arg8, float arg9)
|
|
{
|
|
return (arg9 + (arg8 * (arg0 - 1))) / arg0;
|
|
}
|
|
|
|
void fn_1_15BAC(Vec *arg0, Vec *arg1, float arg8, s32 arg2, float *arg3, float *arg4)
|
|
{
|
|
Vec sp14;
|
|
|
|
VECSubtract(arg1, arg0, &sp14);
|
|
if (360.0f <= arg8) {
|
|
arg8 -= 360.0f;
|
|
}
|
|
else if (0.0f > arg8) {
|
|
arg8 += 360.0f;
|
|
}
|
|
if (360.0f <= arg8) {
|
|
arg8 -= 360.0f;
|
|
}
|
|
else if (0.0f > arg8) {
|
|
arg8 += 360.0f;
|
|
}
|
|
if (360.0f <= arg8) {
|
|
arg8 -= 360.0f;
|
|
}
|
|
else if (0.0f > arg8) {
|
|
arg8 += 360.0f;
|
|
}
|
|
*arg3 = (atan2d(sp14.z, sp14.x)) - 90.0;
|
|
*arg4 = atan2d(sp14.y, sqrtf((sp14.x * sp14.x) + (sp14.z * sp14.z)));
|
|
if (arg2 == 0) {
|
|
*arg3 *= -1.0f;
|
|
}
|
|
if (arg2 != 0) {
|
|
*arg3 += arg8;
|
|
}
|
|
else {
|
|
*arg3 -= arg8;
|
|
}
|
|
if (180.0f <= *arg3) {
|
|
*arg3 -= 360.0f;
|
|
}
|
|
else if (-180.0f > *arg3) {
|
|
*arg3 += 360.0f;
|
|
}
|
|
if (180.0f <= *arg3) {
|
|
*arg3 -= 360.0f;
|
|
}
|
|
else if (-180.0f > *arg3) {
|
|
*arg3 += 360.0f;
|
|
}
|
|
if (180.0f <= *arg3) {
|
|
*arg3 -= 360.0f;
|
|
}
|
|
else if (-180.0f > *arg3) {
|
|
*arg3 += 360.0f;
|
|
}
|
|
if (60.0f <= *arg3) {
|
|
*arg3 = 60.0f;
|
|
}
|
|
if (-60.0f >= *arg3) {
|
|
*arg3 = -60.0f;
|
|
}
|
|
if (45.0f <= *arg4) {
|
|
*arg4 = 45.0f;
|
|
}
|
|
if (-45.0f >= *arg4) {
|
|
*arg4 = -45.0f;
|
|
}
|
|
}
|
|
|
|
void fn_1_160AC(UnkM450Struct5 *arg0, omObjData *object, Vec *arg2)
|
|
{
|
|
float spC;
|
|
float sp8;
|
|
UnkData5CCStruct *var_r30;
|
|
|
|
arg0->unk_FC |= 0x8000;
|
|
var_r30 = &lbl_1_data_5CC[arg0->unk_11C];
|
|
if (NULL == arg2) {
|
|
spC = 0.0f;
|
|
sp8 = 0.0f;
|
|
}
|
|
else {
|
|
fn_1_15BAC(&arg0->unk_00.unk_6C, arg2, arg0->unk_00.unk_9C, var_r30->unk_08, &spC, &sp8);
|
|
}
|
|
arg0->unk_C8 = fn_1_15B48(10, arg0->unk_C8, spC);
|
|
arg0->unk_CC = fn_1_15B48(10, arg0->unk_CC, sp8);
|
|
Hu3DMotionForceSet(object->model[0], var_r30->unk_00, var_r30->unk_04, arg0->unk_C8);
|
|
Hu3DMotionForceSet(object->model[0], var_r30->unk_00, 0x200, var_r30->unk_0C - arg0->unk_CC);
|
|
}
|
|
|
|
void fn_1_16280(UnkM450Struct5 *arg0, omObjData *object)
|
|
{
|
|
UnkData5CCStruct *var_r31;
|
|
|
|
if (arg0->unk_FC & 0x8000) {
|
|
arg0->unk_FC &= ~0x8000;
|
|
var_r31 = &lbl_1_data_5CC[arg0->unk_11C];
|
|
Hu3DMotionNoMotReset(object->model[0], var_r31->unk_00, var_r31->unk_04);
|
|
Hu3DMotionNoMotReset(object->model[0], var_r31->unk_00, 0x200);
|
|
}
|
|
}
|
|
|
|
Vec *fn_1_16314(s32 arg0)
|
|
{
|
|
UnkData1380Struct *var_r31;
|
|
s32 var_r30;
|
|
|
|
var_r31 = &lbl_1_data_1380;
|
|
for (var_r30 = 0; var_r30 < var_r31->unk_08; var_r30++) {
|
|
if (arg0 == var_r31->unk_24[var_r30]) {
|
|
return &var_r31->unk_30[var_r30];
|
|
}
|
|
}
|
|
return var_r31->unk_30;
|
|
}
|
|
|
|
void fn_1_16378(omObjData *object)
|
|
{
|
|
Vec sp8;
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f29;
|
|
|
|
UnkM450Struct4 *var_r31;
|
|
s32 var_r30;
|
|
|
|
var_r31 = object->data;
|
|
var_r31->unk_48 += 0.98f;
|
|
if (1555.0f < var_r31->unk_00.y) {
|
|
var_r31->unk_00.y -= var_r31->unk_48;
|
|
}
|
|
if (1555.0f >= var_r31->unk_00.y) {
|
|
if (10.0f < var_r31->unk_48) {
|
|
var_r31->unk_48 = 10.0f;
|
|
}
|
|
var_r31->unk_00.y = 1555.0f;
|
|
if (0.0f > (var_r31->unk_48 / 1.5f)) {
|
|
var_f30 = -(var_r31->unk_48 / 1.5f);
|
|
}
|
|
else {
|
|
var_f30 = var_r31->unk_48 / 1.5f;
|
|
}
|
|
var_r31->unk_48 = -var_f30;
|
|
if (0.0f > var_r31->unk_48) {
|
|
var_f29 = -var_r31->unk_48;
|
|
}
|
|
else {
|
|
var_f29 = var_r31->unk_48;
|
|
}
|
|
if (1.0f < var_f29) {
|
|
var_r31->unk_00.y += 1.0f;
|
|
}
|
|
if (var_r31->unk_74 != 0) {
|
|
var_r31->unk_74 = 0;
|
|
omVibrate(lbl_1_bss_120, 0xC, 4, 2);
|
|
HuAudFXPlay(0x7AE);
|
|
}
|
|
}
|
|
if (Hu3DMotionEndCheck(object->model[0]) != 0) {
|
|
var_r31->unk_78 = 1;
|
|
}
|
|
if ((var_r31->unk_74 == 0) && (lbl_1_bss_1A4->work[0] > 0x3FB)) {
|
|
var_r31->unk_78 = 1;
|
|
}
|
|
if ((var_r31->unk_74 == 0) && (lbl_1_bss_1A4->work[0] == 0x3E8)) {
|
|
var_r31->unk_78 = 1;
|
|
}
|
|
if (var_r31->unk_78 != 0) {
|
|
var_r31->unk_50 = var_r31->unk_50 - 1.0f;
|
|
if ((lbl_1_bss_308 & 1) != 0) {
|
|
for (var_r30 = 0; var_r30 < 2; var_r30++) {
|
|
Hu3DModelAttrSet(object->model[var_r30], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
else {
|
|
for (var_r30 = 0; var_r30 < 2; var_r30++) {
|
|
Hu3DModelAttrReset(object->model[var_r30], HU3D_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
if (0.0f > var_r31->unk_50) {
|
|
Hu3DModelShadowReset(object->model[0]);
|
|
for (var_r30 = 0; var_r30 < 2; var_r30++) {
|
|
Hu3DModelAttrSet(object->model[var_r30], HU3D_ATTR_DISPOFF);
|
|
}
|
|
fn_1_24(0x1000, object->model[0]);
|
|
fn_1_24(0x2000, object->model[1]);
|
|
omDelObjEx(lbl_1_bss_33C, object);
|
|
return;
|
|
}
|
|
}
|
|
if (var_r31->unk_78 == 0) {
|
|
for (var_r30 = 0; var_r30 < 1; var_r30++) {
|
|
if (NULL == lbl_1_bss_E8[var_r30]) {
|
|
lbl_1_bss_E8[var_r30] = var_r31;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
var_f31 = (var_r31->unk_00.y - 1555.0f) / 300.0f;
|
|
if (1.0f < var_f31) {
|
|
var_f31 = 1.0f;
|
|
}
|
|
var_f31 = 1.0f - var_f31;
|
|
var_f31 = 1.0f;
|
|
sp8 = *fn_1_16314(var_r31->unk_70);
|
|
VECAdd(&var_r31->unk_64, &sp8, &sp8);
|
|
var_r31->unk_00.x += var_f31 * (sp8.x - var_r31->unk_00.x);
|
|
var_r31->unk_00.z += var_f31 * (sp8.z - var_r31->unk_00.z);
|
|
omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z);
|
|
for (var_r30 = 0; var_r30 < 2; var_r30++) {
|
|
Hu3DModelPosSet(object->model[var_r30], var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z);
|
|
}
|
|
}
|
|
|
|
void fn_1_16910(omObjData *object)
|
|
{
|
|
UnkM450Struct4 *var_r30;
|
|
s32 var_r27;
|
|
s32 var_r26;
|
|
|
|
var_r30 = object->data;
|
|
var_r30->unk_48 = 0.0f;
|
|
var_r30->unk_50 = 30.0f;
|
|
var_r26 = fn_1_AC(0x1000);
|
|
if (var_r26 < 0) {
|
|
object->model[0] = Hu3DModelLink(lbl_1_bss_2C[0]);
|
|
}
|
|
else {
|
|
object->model[0] = var_r26;
|
|
}
|
|
var_r26 = fn_1_AC(0x2000);
|
|
if (var_r26 < 0) {
|
|
object->model[1] = Hu3DModelLink(lbl_1_bss_2C[1]);
|
|
}
|
|
else {
|
|
object->model[1] = var_r26;
|
|
}
|
|
for (var_r27 = 0; var_r27 < 2; var_r27++) {
|
|
Hu3DModelAttrSet(object->model[var_r27], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrReset(object->model[var_r27], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelLayerSet(object->model[var_r27], 4);
|
|
Hu3DMotionTimeSet(object->model[var_r27], 0.0f);
|
|
Hu3DModelPosSet(object->model[var_r27], var_r30->unk_00.x, var_r30->unk_00.y, var_r30->unk_00.z);
|
|
Hu3DModelRotSet(object->model[var_r27], 0.0f, 0.0f, 0.0f);
|
|
}
|
|
omSetTra(object, var_r30->unk_00.x, var_r30->unk_00.y, var_r30->unk_00.z);
|
|
omSetRot(object, 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelShadowSet(object->model[0]);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF);
|
|
object->func = fn_1_16378;
|
|
}
|
|
|
|
void fn_1_16BC4(Vec *arg0, Vec *arg1, s32 arg2)
|
|
{
|
|
UnkData1380Struct *spC;
|
|
|
|
UnkM450Struct4 *var_r31;
|
|
s32 var_r30;
|
|
omObjData *var_r29;
|
|
|
|
for (var_r30 = 0; var_r30 < 2; var_r30++) {
|
|
if (lbl_1_data_1CC[var_r30 * 2] == 0x3E) {
|
|
HuAudFXPlay(lbl_1_data_1CC[(var_r30 * 2) + 1]);
|
|
break;
|
|
}
|
|
}
|
|
var_r29 = omAddObjEx(lbl_1_bss_33C, 0x6A, 2, 0, -1, fn_1_16910);
|
|
var_r29->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM);
|
|
spC = &lbl_1_data_1380;
|
|
var_r31 = var_r29->data;
|
|
var_r31->unk_74 = 1;
|
|
var_r31->unk_78 = 0;
|
|
var_r31->unk_7C = 0;
|
|
var_r31->unk_70 = arg2;
|
|
var_r31->unk_00 = *arg0;
|
|
var_r31->unk_64 = *arg1;
|
|
}
|
|
|
|
void fn_1_16CF4(omObjData *object)
|
|
{
|
|
float spC;
|
|
float sp8;
|
|
|
|
UnkM450Struct4 *var_r31 = object->data;
|
|
UnkM450Struct5 *var_r30 = lbl_1_bss_138->data;
|
|
spC = var_r30->unk_00.unk_6C.x - var_r31->unk_00.x;
|
|
sp8 = var_r30->unk_00.unk_6C.z - var_r31->unk_00.z;
|
|
var_r31->unk_00.y += (0.1f * (1505.0f - var_r31->unk_00.y));
|
|
if ((lbl_1_bss_1A4->work[0] > 0x3FB) || (lbl_1_bss_1A4->work[0] == 0x3E8)) {
|
|
var_r31->unk_78 = 1;
|
|
}
|
|
if (var_r31->unk_78 != 0) {
|
|
var_r31->unk_40 = var_r31->unk_40 - 0.1f;
|
|
if (0.0f > var_r31->unk_40) {
|
|
Hu3DModelAttrSet(*object->model, HU3D_ATTR_DISPOFF);
|
|
fn_1_24(0x3000, object->model[0]);
|
|
omDelObjEx(lbl_1_bss_33C, object);
|
|
return;
|
|
}
|
|
}
|
|
else {
|
|
var_r31->unk_50 += 1.0f;
|
|
if (var_r31->unk_7C != 0) {
|
|
if (60.0f < var_r31->unk_50) {
|
|
var_r31->unk_78 = 1;
|
|
}
|
|
var_r31->unk_00.x += (0.1f * (var_r30->unk_00.unk_6C.x - var_r31->unk_00.x));
|
|
var_r31->unk_00.z += (0.1f * (var_r30->unk_00.unk_6C.z - var_r31->unk_00.z));
|
|
var_r31->unk_44 *= 1.01f;
|
|
}
|
|
else {
|
|
if (240.0f < var_r31->unk_50) {
|
|
var_r31->unk_78 = 1;
|
|
}
|
|
var_r31->unk_00.x += (11.0 * sind(var_r31->unk_3C));
|
|
var_r31->unk_00.z += (11.0 * cosd(var_r31->unk_3C));
|
|
var_r31->unk_3C = fn_1_1E20(
|
|
var_r31->unk_3C, atan2d(var_r30->unk_00.unk_6C.x - var_r31->unk_00.x, var_r30->unk_00.unk_6C.z - var_r31->unk_00.z), 0.05f);
|
|
}
|
|
}
|
|
if ((var_r31->unk_78 == 0) && (1605.0f > var_r31->unk_00.y)) {
|
|
s32 var_r27;
|
|
for (var_r27 = 0; var_r27 < 1; var_r27++) {
|
|
if (NULL == lbl_1_bss_E4[var_r27]) {
|
|
lbl_1_bss_E4[var_r27] = var_r31;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
Hu3DModelTPLvlSet(object->model[0], var_r31->unk_40);
|
|
omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z);
|
|
omSetSca(object, var_r31->unk_44, var_r31->unk_44, var_r31->unk_44);
|
|
}
|
|
|
|
void fn_1_171C4(omObjData *object)
|
|
{
|
|
UnkM450Struct4 *var_r29;
|
|
s16 var_r26;
|
|
|
|
var_r29 = object->data;
|
|
var_r29->unk_40 = 1.0f;
|
|
var_r29->unk_44 = 1.0f;
|
|
var_r29->unk_50 = 0.0f;
|
|
var_r26 = fn_1_AC(0x3000);
|
|
if (var_r26 < 0) {
|
|
object->model[0] = Hu3DModelLink(lbl_1_bss_2C[2]);
|
|
}
|
|
else {
|
|
object->model[0] = var_r26;
|
|
}
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelLayerSet(object->model[0], 4);
|
|
omSetTra(object, var_r29->unk_00.x, var_r29->unk_00.y, var_r29->unk_00.z);
|
|
omSetRot(object, 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
|
object->func = fn_1_16CF4;
|
|
}
|
|
|
|
void fn_1_17360(Vec *arg0, float arg8)
|
|
{
|
|
omObjData *var_r29;
|
|
s32 var_r30;
|
|
UnkM450Struct4 *var_r31;
|
|
|
|
for (var_r30 = 0; var_r30 < 2; var_r30++) {
|
|
if (lbl_1_data_1CC[var_r30 * 2] == 0x3E) {
|
|
HuAudFXPlay(lbl_1_data_1CC[var_r30 * 2]);
|
|
break;
|
|
}
|
|
}
|
|
var_r29 = omAddObjEx(lbl_1_bss_33C, 0x6B, 1, 0, -1, fn_1_171C4);
|
|
var_r29->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM);
|
|
var_r31 = var_r29->data;
|
|
var_r31->unk_78 = 0;
|
|
var_r31->unk_7C = 0;
|
|
var_r31->unk_00 = *arg0;
|
|
var_r31->unk_3C = arg8;
|
|
HuAudFXPlay(0x7AF);
|
|
}
|
|
|
|
void fn_1_17474(omObjData *object)
|
|
{
|
|
Mtx spB0;
|
|
Mtx sp80;
|
|
Mtx sp50;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
float var_f31;
|
|
|
|
UnkM450Struct4 *var_r31 = object->data;
|
|
if (var_r31->unk_74 != 0) {
|
|
fn_1_1D18(var_r31->unk_54, "g000m0-itemhook_R", &sp8);
|
|
if (Hu3DMotionShiftIDGet(var_r31->unk_54) < 0) {
|
|
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
|
if (165.0f <= Hu3DMotionTimeGet(var_r31->unk_54)) {
|
|
HuAudFXPlay(0x7B0);
|
|
var_r31->unk_74 = 0;
|
|
var_r31->unk_3C = 0.0f;
|
|
var_r31->unk_4C = VECDistance(&sp8, &var_r31->unk_0C);
|
|
Hu3DModelObjMtxGet(var_r31->unk_58, "g000i00-itemhook_A", sp80);
|
|
Hu3DModelObjMtxGet(var_r31->unk_54, "g000m0-itemhook_R", sp50);
|
|
MTXConcat(sp80, sp50, sp80);
|
|
var_r31->unk_00.x = sp80[0][3];
|
|
var_r31->unk_00.y = sp80[1][3];
|
|
var_r31->unk_00.z = sp80[2][3];
|
|
Hu3DModelHookObjReset(var_r31->unk_54, "g000m0-itemhook_R");
|
|
MTXIdentity(Hu3DData[object->model[0]].unk_F0);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_HOOK);
|
|
}
|
|
}
|
|
var_r31->unk_0C = sp8;
|
|
}
|
|
if (var_r31->unk_74 == 0) {
|
|
if (lbl_1_bss_1A4->work[0] > 0x40D) {
|
|
var_r31->unk_40 = var_r31->unk_40 - 0.05f;
|
|
}
|
|
var_f31 = var_r31->unk_4C;
|
|
sp14.x = 0.0f;
|
|
sp14.y = 0.0f;
|
|
sp14.z = var_f31;
|
|
MTXRotRad(spB0, 0x59, 0.017453292f * (var_r31->unk_5C + var_r31->unk_60));
|
|
MTXMultVec(spB0, &sp14, &sp14);
|
|
VECAdd(&var_r31->unk_00, &sp14, &var_r31->unk_00);
|
|
var_r31->unk_00.y += 0.1f * (1575.0f - var_r31->unk_00.y);
|
|
var_r31->unk_4C += 0.05f * (30.0f - var_r31->unk_4C);
|
|
var_r31->unk_3C += var_r31->unk_4C;
|
|
var_r31->unk_60 += 0.08f * var_r31->unk_4C;
|
|
if (360.0f <= var_r31->unk_60) {
|
|
var_r31->unk_60 = 360.0f;
|
|
}
|
|
sp14.x = 0.0f;
|
|
sp14.y = 1575.0f;
|
|
sp14.z = 0.0f;
|
|
if ((360.0f <= var_r31->unk_60) && (1500.0f < VECDistance(&sp14, &var_r31->unk_00))) {
|
|
var_r31->unk_40 = var_r31->unk_40 - 0.05f;
|
|
if (0.0f > var_r31->unk_40) {
|
|
Hu3DModelShadowReset(object->model[0]);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
|
fn_1_24(0x4000, object->model[0]);
|
|
omDelObjEx(lbl_1_bss_33C, object);
|
|
return;
|
|
}
|
|
}
|
|
if (1.0f <= var_r31->unk_40) {
|
|
s32 var_r28;
|
|
for (var_r28 = 0; var_r28 < 2; var_r28++) {
|
|
if (NULL == lbl_1_bss_DC[var_r28]) {
|
|
lbl_1_bss_DC[var_r28] = var_r31;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z);
|
|
omSetRot(object, 0.0f, var_r31->unk_3C, 0.0f);
|
|
}
|
|
Hu3DModelShadowDispOn(object->model[0]);
|
|
Hu3DModelTPLvlSet(object->model[0], var_r31->unk_40);
|
|
}
|
|
|
|
void fn_1_17970(s32 arg0, s32 arg1, float arg8)
|
|
{
|
|
omObjData *var_r31;
|
|
UnkM450Struct4 *var_r30;
|
|
s16 var_r26;
|
|
|
|
HuAudFXPlay(0x3A);
|
|
var_r31 = omAddObjEx(lbl_1_bss_33C, 0x6C, 1, 0, -1, fn_1_17474);
|
|
var_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM);
|
|
var_r30 = var_r31->data;
|
|
var_r30->unk_40 = 1.0f;
|
|
var_r30->unk_50 = 0.0f;
|
|
var_r30->unk_74 = 1;
|
|
var_r30->unk_78 = 0;
|
|
var_r30->unk_7C = 0;
|
|
var_r30->unk_54 = arg0;
|
|
var_r30->unk_58 = arg1;
|
|
var_r30->unk_5C = arg8;
|
|
var_r30->unk_60 = 0.0f;
|
|
|
|
var_r26 = fn_1_AC(0x4000);
|
|
if (var_r26 < 0) {
|
|
var_r31->model[0] = Hu3DModelLink(lbl_1_bss_2C[3]);
|
|
}
|
|
else {
|
|
var_r31->model[0] = var_r26;
|
|
}
|
|
Hu3DModelAttrSet(var_r31->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrSet(var_r31->model[0], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelAttrReset(var_r31->model[0], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelLayerSet(var_r31->model[0], 4);
|
|
omSetTra(var_r31, 0.0f, 0.0f, 0.0f);
|
|
omSetRot(var_r31, 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelHookSet(var_r30->unk_54, "g000m0-itemhook_R", var_r31->model[0]);
|
|
Hu3DModelShadowSet(var_r31->model[0]);
|
|
Hu3DModelShadowDispOff(var_r31->model[0]);
|
|
}
|
|
|
|
void fn_1_17BBC(omObjData *object)
|
|
{
|
|
Mtx sp84;
|
|
Vec sp18;
|
|
Vec spC;
|
|
float sp8;
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f28;
|
|
|
|
UnkM450Struct4 *var_r31;
|
|
s32 var_r27;
|
|
UnkM450Struct3 *var_r22;
|
|
|
|
var_r31 = object->data;
|
|
var_r22 = lbl_1_bss_134->data;
|
|
if (var_r31->unk_74 != 0) {
|
|
fn_1_1D18(var_r31->unk_54, "g000m0-itemhook_R", &spC);
|
|
if ((Hu3DMotionShiftIDGet(var_r31->unk_54) < 0) && (165.0f <= Hu3DMotionTimeGet(var_r31->unk_54))) {
|
|
HuAudFXPlay(0x7B0);
|
|
var_r31->unk_74 = 0;
|
|
var_r31->unk_3C = 0.0f;
|
|
var_r31->unk_4C = VECDistance(&spC, &var_r31->unk_0C);
|
|
fn_1_1D18(var_r31->unk_54, "g000m0-itemhook_R", &var_r31->unk_00);
|
|
Hu3DModelHookObjReset(var_r31->unk_54, "g000m0-itemhook_R");
|
|
MTXIdentity(Hu3DData[*object->model].unk_F0);
|
|
Hu3DModelAttrReset(*object->model, HU3D_ATTR_HOOK);
|
|
var_f31 = var_r31->unk_00.x - var_r31->unk_24.x;
|
|
var_f30 = var_r31->unk_00.z - var_r31->unk_24.z;
|
|
var_r31->unk_30.x = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) / 2;
|
|
var_r31->unk_30.z = 150.0f + var_r31->unk_00.y;
|
|
VECAdd(&var_r31->unk_00, &var_r31->unk_24, &var_r31->unk_24);
|
|
VECScale(&var_r31->unk_24, &var_r31->unk_24, 0.5f);
|
|
var_r31->unk_24.y = var_r31->unk_00.y;
|
|
var_r31->unk_30.y = atan2d(var_r31->unk_00.x - var_r31->unk_24.x, var_r31->unk_00.z - var_r31->unk_24.z);
|
|
}
|
|
var_r31->unk_0C = spC;
|
|
if ((var_r31->unk_74 != 0) && (var_r22->unk_150 >= 0xBCE)) {
|
|
Hu3DModelShadowReset(object->model[0]);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelHookObjReset(var_r31->unk_54, "g000m0-itemhook_R");
|
|
fn_1_24(0x4000, object->model[0]);
|
|
omDelObjEx(lbl_1_bss_33C, object);
|
|
return;
|
|
}
|
|
}
|
|
if (var_r31->unk_74 == 0) {
|
|
if (lbl_1_bss_1A4->work[0] > 0x415) {
|
|
var_r31->unk_40 = var_r31->unk_40 - 0.05f;
|
|
}
|
|
var_f28 = 1575.0f;
|
|
if (180.0f < var_r31->unk_60) {
|
|
var_f28 = var_r31->unk_30.z;
|
|
}
|
|
var_r31->unk_00.y += (0.05f * (var_f28 - var_r31->unk_00.y));
|
|
var_r31->unk_4C += 0.05f * (30.0f - var_r31->unk_4C);
|
|
var_r31->unk_3C += var_r31->unk_4C;
|
|
var_r31->unk_60 += 0.08f * var_r31->unk_4C;
|
|
if (360.0f <= var_r31->unk_60) {
|
|
var_r31->unk_60 = 360.0f;
|
|
VECAdd(&var_r31->unk_18, &var_r31->unk_00, &var_r31->unk_00);
|
|
}
|
|
else {
|
|
spC = var_r31->unk_00;
|
|
sp18.x = (0.6666667f * var_r31->unk_30.x) * sind(var_r31->unk_60);
|
|
sp18.z = var_r31->unk_30.x * cosd(var_r31->unk_60);
|
|
MTXRotRad(sp84, 0x59, 0.017453292f * var_r31->unk_30.y);
|
|
MTXMultVec(sp84, &sp18, &sp18);
|
|
var_r31->unk_00.x = var_r31->unk_24.x + sp18.x;
|
|
var_r31->unk_00.z = var_r31->unk_24.z + sp18.z;
|
|
VECSubtract(&var_r31->unk_00, &spC, &var_r31->unk_18);
|
|
}
|
|
sp18.x = 0.0f;
|
|
sp18.y = 1575.0f;
|
|
sp18.z = 0.0f;
|
|
if ((360.0f <= var_r31->unk_60) && (1500.0f < VECDistance(&sp18, &var_r31->unk_00))) {
|
|
var_r31->unk_40 = var_r31->unk_40 - 0.05f;
|
|
if (0.0f > var_r31->unk_40) {
|
|
Hu3DModelShadowReset(*object->model);
|
|
Hu3DModelAttrSet(*object->model, HU3D_ATTR_DISPOFF);
|
|
fn_1_24(0x4000, object->model[0]);
|
|
omDelObjEx(lbl_1_bss_33C, object);
|
|
return;
|
|
}
|
|
}
|
|
if (1.0f <= var_r31->unk_40) {
|
|
for (var_r27 = 0; var_r27 < 2; var_r27++) {
|
|
if (NULL == lbl_1_bss_DC[var_r27]) {
|
|
lbl_1_bss_DC[var_r27] = var_r31;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z);
|
|
omSetRot(object, 0.0f, var_r31->unk_3C, 0.0f);
|
|
omSetSca(object, 1.0f, 1.0f, 1.0f);
|
|
}
|
|
Hu3DModelShadowDispOn(object->model[0]);
|
|
Hu3DModelTPLvlSet(object->model[0], var_r31->unk_40);
|
|
}
|
|
|
|
void fn_1_18424(s32 arg0, Vec *arg1)
|
|
{
|
|
UnkBss358Struct *var_r27;
|
|
UnkBss358Struct *var_r28;
|
|
UnkBss358Struct *var_r29;
|
|
omObjData *var_r31;
|
|
s16 var_r24;
|
|
s16 var_r25;
|
|
s16 var_r26;
|
|
UnkM450Struct4 *var_r30;
|
|
|
|
var_r31 = omAddObjEx(lbl_1_bss_33C, 0x6C, 1, 0, -1, fn_1_17BBC);
|
|
var_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM);
|
|
var_r30 = var_r31->data;
|
|
var_r30->unk_54 = arg0;
|
|
var_r30->unk_40 = 1.0f;
|
|
var_r30->unk_50 = 0.0f;
|
|
var_r30->unk_74 = 1;
|
|
var_r30->unk_78 = 0;
|
|
var_r30->unk_7C = 0;
|
|
var_r30->unk_60 = 0.0f;
|
|
var_r30->unk_24 = *arg1;
|
|
|
|
var_r26 = fn_1_AC(0x4000);
|
|
if (var_r26 < 0) {
|
|
var_r31->model[0] = Hu3DModelLink(lbl_1_bss_2C[3]);
|
|
}
|
|
else {
|
|
var_r31->model[0] = var_r26;
|
|
}
|
|
Hu3DModelAttrSet(var_r31->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrSet(var_r31->model[0], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelAttrReset(var_r31->model[0], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelLayerSet(var_r31->model[0], 4);
|
|
omSetTra(var_r31, 0.0f, 0.0f, 0.0f);
|
|
omSetRot(var_r31, 0.0f, 0.0f, 0.0f);
|
|
omSetSca(var_r31, 1.0f, 1.0f, 1.0f);
|
|
Hu3DModelHookSet(var_r30->unk_54, "g000m0-itemhook_R", var_r31->model[0]);
|
|
Hu3DModelAttrReset(var_r31->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelShadowSet(var_r31->model[0]);
|
|
Hu3DModelShadowDispOff(var_r31->model[0]);
|
|
}
|
|
|
|
void fn_1_186A8(void)
|
|
{
|
|
Vec sp14[3];
|
|
Vec sp8;
|
|
float var_f31;
|
|
|
|
s32 var_r31;
|
|
UnkM450Struct5 *var_r30;
|
|
UnkM450Struct3 *var_r29;
|
|
HsfBuffer *var_r28;
|
|
s32 var_r27;
|
|
ModelData *var_r26;
|
|
HsfObject *var_r25;
|
|
|
|
if (lbl_1_bss_C4 >= 0) {
|
|
var_r30 = lbl_1_bss_138->data;
|
|
var_r29 = lbl_1_bss_134->data;
|
|
switch (lbl_1_bss_C4) {
|
|
case 0x1388:
|
|
for (var_r31 = 0x19; var_r31 <= 0x1B; var_r31++) {
|
|
if (Hu3DMotionEndCheck(lbl_1_bss_1A0->model[var_r31]) == 0) {
|
|
return;
|
|
}
|
|
}
|
|
lbl_1_bss_C4++;
|
|
lbl_1_bss_C8 = 0.0f;
|
|
Hu3DModelPosSet(lbl_1_bss_1A0->model[28], 0.0f, 1501.0f, 0.0f);
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[28], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], 0.0f);
|
|
var_r26 = &Hu3DData[lbl_1_bss_1A0->model[28]];
|
|
var_r25 = var_r26->hsfData->object;
|
|
var_r28 = var_r25->data.vertex;
|
|
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
|
((Vec *)var_r28->data)[var_r31].x = lbl_1_data_1450[lbl_1_bss_B8[var_r31]].unk_04.x;
|
|
((Vec *)var_r28->data)[var_r31].z = lbl_1_data_1450[lbl_1_bss_B8[var_r31]].unk_04.z;
|
|
DCFlushRange(&((Vec *)var_r28->data)[var_r31], sizeof(Vec));
|
|
}
|
|
|
|
break;
|
|
case 0x1389:
|
|
var_f31 = lbl_1_bss_C8 / 30.0f;
|
|
if (1.0f < var_f31) {
|
|
var_f31 = 1.0f;
|
|
}
|
|
Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], var_f31);
|
|
lbl_1_bss_C8 += 1.0f;
|
|
if ((120.0f < lbl_1_bss_C8) && (var_r30->unk_00.unk_38 == 0)) {
|
|
lbl_1_bss_C4++;
|
|
lbl_1_bss_C8 = 0.0f;
|
|
var_r27 = 0;
|
|
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
|
sp14[var_r31] = lbl_1_data_1450[lbl_1_bss_B8[var_r31]].unk_04;
|
|
}
|
|
if ((fn_1_1C39C(var_r30) != 0) && (fn_1_1964C(&var_r30->unk_00.unk_6C, sp14) != 0)) {
|
|
var_r27++;
|
|
var_r30->unk_110 = 0x1D;
|
|
var_r30->unk_FC |= 0x20000;
|
|
fn_1_130A4(&var_r30->unk_00.unk_6C, 29);
|
|
}
|
|
if (fn_1_1964C(&var_r29->unk_00.unk_6C, sp14) != 0) {
|
|
var_r27++;
|
|
var_r29->unk_10C = 0x1E;
|
|
var_r29->unk_154 |= 0x8000;
|
|
fn_1_130A4(&var_r29->unk_00.unk_6C, 30);
|
|
}
|
|
if (var_r27 == 0) {
|
|
sp8.x = 0.0f;
|
|
sp8.y = 0.0f;
|
|
sp8.z = 0.0f;
|
|
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
|
VECAdd(&sp14[var_r31], &sp8, &sp8);
|
|
}
|
|
VECScale(&sp8, &sp8, 0.33333334f);
|
|
fn_1_130A4(&sp8, 29);
|
|
return;
|
|
}
|
|
}
|
|
break;
|
|
case 0x138A:
|
|
if (45.0f < lbl_1_bss_C8) {
|
|
var_f31 = (lbl_1_bss_C8 - 45.0f) / 15.0f;
|
|
if (1.0f < var_f31) {
|
|
var_f31 = 1.0f;
|
|
}
|
|
Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], 1.0f - var_f31);
|
|
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
|
Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[var_r31 + 0x19], 1.0f - var_f31);
|
|
}
|
|
}
|
|
lbl_1_bss_C8 += 1.0f;
|
|
if (60.0f <= lbl_1_bss_C8) {
|
|
lbl_1_bss_C4 = -1;
|
|
Hu3DModelAttrSet(lbl_1_bss_1A0->model[28], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], 1.0f);
|
|
Hu3DModelAttrSet(lbl_1_bss_1A0->model[29], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrSet(lbl_1_bss_1A0->model[30], HU3D_ATTR_DISPOFF);
|
|
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
|
lbl_1_data_1450[lbl_1_bss_B8[0]].unk_1C = 0;
|
|
fn_1_1B510(lbl_1_bss_B8[0]);
|
|
Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31 + 0x19], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[var_r31 + 0x19], 1.0f);
|
|
}
|
|
fn_1_1B4C8(var_r30);
|
|
return;
|
|
}
|
|
break;
|
|
default:
|
|
OSReport("*** thunder attack mode error(%d)!!\n", lbl_1_bss_C4);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_18F30(UnkM450Struct5 *arg0, Vec *arg1)
|
|
{
|
|
Vec sp18;
|
|
Vec spC;
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f28;
|
|
float var_f27;
|
|
|
|
if (NULL != arg1) {
|
|
sp18 = *arg1;
|
|
var_f27 = arg0->unk_00.unk_C0;
|
|
if ((arg0->unk_00.unk_38 == 3) || (arg0->unk_00.unk_38 == 4)) {
|
|
var_f27 *= 0.5f;
|
|
}
|
|
var_f31 = arg0->unk_00.unk_6C.x - sp18.x;
|
|
var_f30 = arg0->unk_00.unk_6C.z - sp18.z;
|
|
var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
|
|
if (((sp18.y - 50.0f) < (arg0->unk_00.unk_6C.y + var_f27)) && (arg0->unk_00.unk_BC > var_f28)) {
|
|
if (var_f28 == 0.0f) {
|
|
var_f31 = 0.0f;
|
|
var_f30 = -1.0f;
|
|
}
|
|
else {
|
|
var_f31 /= var_f28;
|
|
var_f30 /= var_f28;
|
|
}
|
|
arg0->unk_00.unk_6C.x = sp18.x + (var_f31 * arg0->unk_00.unk_BC);
|
|
arg0->unk_00.unk_6C.z = sp18.z + (var_f30 * arg0->unk_00.unk_BC);
|
|
}
|
|
if ((arg0->unk_FC & 0x220) == 0) {
|
|
spC = arg0->unk_00.unk_6C;
|
|
spC.y += var_f27 - arg0->unk_00.unk_BC;
|
|
var_f28 = VECDistance(&spC, &sp18);
|
|
if ((spC.y < sp18.y) && ((50.0f + arg0->unk_00.unk_BC) > var_f28)) {
|
|
arg0->unk_FC |= 0x200;
|
|
return;
|
|
}
|
|
spC = arg0->unk_00.unk_6C;
|
|
spC.y += arg0->unk_00.unk_BC;
|
|
var_f28 = VECDistance(&spC, &sp18);
|
|
if ((50.0f + arg0->unk_00.unk_BC) > var_f28) {
|
|
arg0->unk_FC |= 0x20;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_192AC(UnkM450Struct5 *arg0, UnkM450Struct4 *arg1)
|
|
{
|
|
Vec sp8;
|
|
float var_f31;
|
|
|
|
if ((NULL != arg1) && (arg0->unk_00.unk_38 == 0) && ((arg0->unk_FC & 0x2000) == 0)) {
|
|
sp8 = arg0->unk_00.unk_6C;
|
|
sp8.y += arg0->unk_00.unk_BC;
|
|
var_f31 = VECDistance(&sp8, &arg1->unk_00);
|
|
if ((50.0f + arg0->unk_00.unk_BC) > var_f31) {
|
|
arg0->unk_FC |= 0x2000;
|
|
arg1->unk_7C = 1;
|
|
arg1->unk_50 = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_19390(UnkM450Struct5 *var_r31, UnkM450Struct4 *var_r30)
|
|
{
|
|
Vec sp8;
|
|
float var_f31;
|
|
|
|
if ((NULL != var_r30) && ((var_r31->unk_FC & 0x20) == 0)) {
|
|
sp8 = var_r31->unk_00.unk_6C;
|
|
sp8.y += var_r31->unk_00.unk_BC;
|
|
var_f31 = VECDistance(&sp8, &var_r30->unk_00);
|
|
if ((70.0f + var_r31->unk_00.unk_BC) > var_f31) {
|
|
var_r31->unk_FC |= 0x20;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_19450(UnkM450Struct5 *var_r31)
|
|
{
|
|
s32 var_r30;
|
|
|
|
for (var_r30 = 0; var_r30 < 1; var_r30++) {
|
|
fn_1_18F30(var_r31, lbl_1_bss_E8[var_r30]);
|
|
}
|
|
for (var_r30 = 0; var_r30 < 1; var_r30++) {
|
|
fn_1_192AC(var_r31, lbl_1_bss_E4[var_r30]);
|
|
}
|
|
for (var_r30 = 0; var_r30 < 2; var_r30++) {
|
|
fn_1_19390(var_r31, lbl_1_bss_DC[var_r30]);
|
|
}
|
|
}
|
|
|
|
s32 fn_1_1964C(Vec *arg0, Vec *arg1)
|
|
{
|
|
Vec sp74;
|
|
Vec sp68;
|
|
Vec sp5C;
|
|
Vec sp50;
|
|
Vec sp44;
|
|
Vec sp38;
|
|
Vec sp2C;
|
|
Vec sp20;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
|
|
VECSubtract(&arg1[1], &arg1[0], &sp74);
|
|
VECSubtract(&arg1[2], &arg1[1], &sp68);
|
|
VECSubtract(&arg1[0], &arg1[2], &sp5C);
|
|
VECCrossProduct(&sp74, &sp68, &sp50);
|
|
VECSubtract(arg0, &arg1[0], &sp44);
|
|
VECSubtract(arg0, &arg1[1], &sp38);
|
|
VECSubtract(arg0, &arg1[2], &sp2C);
|
|
VECCrossProduct(&sp74, &sp50, &sp20);
|
|
VECCrossProduct(&sp68, &sp50, &sp14);
|
|
VECCrossProduct(&sp5C, &sp50, &sp8);
|
|
if ((0.0f >= VECDotProduct(&sp20, &sp44)) && (0.0f >= VECDotProduct(&sp14, &sp38)) && (0.0f >= VECDotProduct(&sp8, &sp2C))) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
s32 fn_1_19798(void)
|
|
{
|
|
float sp8;
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f29;
|
|
float var_f28;
|
|
float var_f27;
|
|
|
|
UnkM450Struct5 *var_r31 = lbl_1_bss_138->data;
|
|
UnkM450Struct3 *var_r30 = lbl_1_bss_134->data;
|
|
|
|
var_f31 = var_r31->unk_00.unk_6C.x - var_r30->unk_00.unk_6C.x;
|
|
var_f30 = var_r31->unk_00.unk_6C.z - var_r30->unk_00.unk_6C.z;
|
|
var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
|
|
if ((150.0f + var_r31->unk_00.unk_BC) > var_f28) {
|
|
if (var_f28 == 0.0f) {
|
|
var_f31 = 0.0f;
|
|
var_f30 = -1.0f;
|
|
}
|
|
else {
|
|
var_f31 /= var_f28;
|
|
var_f30 /= var_f28;
|
|
}
|
|
var_r31->unk_FC |= 0x200000;
|
|
if (var_r30->unk_150 != 0xBC9) {
|
|
var_r31->unk_FC |= 4;
|
|
}
|
|
var_r31->unk_00.unk_6C.x = var_r30->unk_00.unk_6C.x + (var_f31 * (150.0f + var_r31->unk_00.unk_BC));
|
|
var_r31->unk_00.unk_6C.z = var_r30->unk_00.unk_6C.z + (var_f30 * (150.0f + var_r31->unk_00.unk_BC));
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
s32 fn_1_19A10(WorkPlayerOld *arg0, Vec *arg1)
|
|
{
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f28;
|
|
|
|
var_f31 = arg1->x - arg0->unk_6C.x;
|
|
var_f30 = arg1->z - arg0->unk_6C.z;
|
|
var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
|
|
if (10.0f <= var_f28) {
|
|
var_f31 /= var_f28;
|
|
var_f30 /= var_f28;
|
|
}
|
|
else {
|
|
var_f31 = 0.0f;
|
|
var_f30 = 0.0f;
|
|
return 1;
|
|
}
|
|
arg0->unk_20 = 72.0f * var_f31;
|
|
arg0->unk_24 = 72.0f * -var_f30;
|
|
return 0;
|
|
}
|
|
|
|
void fn_1_19C18(omObjData *object)
|
|
{
|
|
UnkM450Struct5 *var_r31 = object->data;
|
|
|
|
if ((var_r31->unk_FC & 1) != 0) {
|
|
if (1250.0f < var_r31->unk_00.unk_6C.x) {
|
|
var_r31->unk_00.unk_6C.x = 1250.0f;
|
|
}
|
|
if (-1250.0f > var_r31->unk_00.unk_6C.x) {
|
|
var_r31->unk_00.unk_6C.x = -1250.0f;
|
|
}
|
|
if (1250.0f < var_r31->unk_00.unk_6C.z) {
|
|
var_r31->unk_00.unk_6C.z = 1250.0f;
|
|
}
|
|
if (-1250.0f > var_r31->unk_00.unk_6C.z) {
|
|
var_r31->unk_00.unk_6C.z = -1250.0f;
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_19CE0(omObjData *object)
|
|
{
|
|
UnkM450Struct5 *var_r31 = object->data;
|
|
|
|
if (var_r31->unk_FC & 0x10) {
|
|
var_r31->unk_FC |= 0x42;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000002);
|
|
}
|
|
if (var_r31->unk_FC & 0x100) {
|
|
var_r31->unk_FC |= 0x402;
|
|
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE);
|
|
Hu3DMotionSet(object->model[0], object->motion[14]);
|
|
Hu3DMotionTimeSet(object->model[0], 48.0f);
|
|
}
|
|
if (var_r31->unk_FC & 0x1000) {
|
|
var_r31->unk_FC |= 0x4002;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0);
|
|
}
|
|
if (var_r31->unk_FC & 0x10000) {
|
|
var_r31->unk_FC |= 0x40002;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[16], 0.0f, 8.0f, 0);
|
|
Hu3DModelPosSet(
|
|
lbl_1_bss_1A0->model[var_r31->unk_110 + 2], var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, 50.0f + var_r31->unk_00.unk_6C.z);
|
|
Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], 0.0f);
|
|
Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], HU3D_MOTATTR_PAUSE);
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], HU3D_ATTR_DISPOFF);
|
|
}
|
|
if (var_r31->unk_FC & 0x100000) {
|
|
var_r31->unk_FC |= 0x400002;
|
|
Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0);
|
|
}
|
|
var_r31->unk_FC &= ~0x30;
|
|
var_r31->unk_FC &= ~0x300;
|
|
var_r31->unk_FC &= ~0x3000;
|
|
var_r31->unk_FC &= ~0x30000;
|
|
var_r31->unk_FC &= ~0x300000;
|
|
var_r31->unk_100 = 2 * REFRESH_RATE;
|
|
var_r31->unk_F8 = 0.0f;
|
|
var_r31->unk_00.unk_3C &= ~0x210;
|
|
}
|
|
|
|
void fn_1_1A014(omObjData *arg0)
|
|
{
|
|
UnkM450Struct5 *var_r31 = arg0->data;
|
|
|
|
if (var_r31->unk_FC & 0x555550) {
|
|
var_r31->unk_FC &= ~0x800;
|
|
return;
|
|
}
|
|
var_r31->unk_FC |= 0x800;
|
|
}
|
|
|
|
void fn_1_1A060(void)
|
|
{
|
|
Vec sp8;
|
|
|
|
Vec *var_r31;
|
|
UnkM450Struct5 *var_r30 = lbl_1_bss_138->data;
|
|
|
|
sp8 = var_r30->unk_00.unk_6C;
|
|
if (lbl_1_bss_10C == 0) {
|
|
sp8.y = 1500.0f;
|
|
}
|
|
lbl_1_bss_324 = sp8;
|
|
lbl_1_bss_30C = sp8;
|
|
var_r31 = &lbl_1_data_51C[lbl_1_bss_110];
|
|
lbl_1_bss_324.x += (var_r31->x * sind((180.0f + var_r30->unk_00.unk_9C)));
|
|
lbl_1_bss_324.z += (var_r31->x * cosd((180.0f + var_r30->unk_00.unk_9C)));
|
|
lbl_1_bss_324.y += var_r31->y;
|
|
lbl_1_bss_30C.y += var_r31->z;
|
|
}
|
|
|
|
void fn_1_1A21C(float var_f30, float var_f31)
|
|
{
|
|
Vec sp8;
|
|
Vec *var_r31;
|
|
UnkM450Struct5 *var_r30 = lbl_1_bss_138->data;
|
|
|
|
sp8 = var_r30->unk_00.unk_6C;
|
|
if (lbl_1_bss_10C == 0) {
|
|
sp8.y = 1500.0f;
|
|
}
|
|
if (var_f31 != 0.0f) {
|
|
sp8.y = var_f31;
|
|
}
|
|
lbl_1_bss_324 = sp8;
|
|
lbl_1_bss_30C = sp8;
|
|
var_r31 = &lbl_1_data_51C[lbl_1_bss_110];
|
|
lbl_1_bss_324.x += var_r31->x * sind(var_f30);
|
|
lbl_1_bss_324.z += var_r31->x * cosd(var_f30);
|
|
lbl_1_bss_324.y += var_r31->y;
|
|
lbl_1_bss_30C.y += var_r31->z;
|
|
}
|
|
|
|
void fn_1_1A3F0(void)
|
|
{
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f28;
|
|
UnkM450Struct5 *var_r31 = lbl_1_bss_138->data;
|
|
UnkM450Struct3 *var_r30 = lbl_1_bss_134->data;
|
|
|
|
var_f31 = var_r31->unk_00.unk_6C.x - var_r30->unk_00.unk_6C.x;
|
|
var_f30 = var_r31->unk_00.unk_6C.z - var_r30->unk_00.unk_6C.z;
|
|
var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
|
|
var_f31 = 800.0f * (var_f31 / var_f28);
|
|
var_f30 = 800.0f * (var_f30 / var_f28);
|
|
lbl_1_bss_324 = var_r31->unk_00.unk_6C;
|
|
lbl_1_bss_30C = var_r31->unk_00.unk_6C;
|
|
lbl_1_bss_324.x += var_f31;
|
|
lbl_1_bss_324.y += 350.0f;
|
|
lbl_1_bss_324.z += var_f30;
|
|
lbl_1_bss_30C.y += 150.0f;
|
|
}
|
|
|
|
#include "src/REL/executor.c"
|
|
|
|
void fn_1_1A714(void)
|
|
{
|
|
UnkM450Struct5 *var_r31;
|
|
|
|
HuSysVWaitSet(1);
|
|
if (HuPadBtn[0] & PAD_BUTTON_X) {
|
|
lbl_1_bss_304 = -1;
|
|
}
|
|
print8(0x18, 0x20, 1.5f, "%d COUNT:%d MODE:%d MES:%d CAM:%d", GWMGTypeGet(), lbl_1_bss_308, lbl_1_bss_1A4->work[0], lbl_1_bss_2FE, lbl_1_bss_110);
|
|
print8(0x18, 0x30, 1.5f, "%f %f %f", lbl_1_bss_330.x, lbl_1_bss_330.y, lbl_1_bss_330.z);
|
|
print8(0x18, 0x40, 1.5f, "%f %f %f", lbl_1_bss_318.x, lbl_1_bss_318.y, lbl_1_bss_318.z);
|
|
print8(0x18, 0x50, 1.5f, "H:%x M:%x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM),
|
|
HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA));
|
|
var_r31 = lbl_1_bss_138->data;
|
|
print8(0x18, 0x60, 1.5f, "%f (%f %f %f)", var_r31->unk_00.unk_A8, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z);
|
|
print8(0x18, 0x70, 1.5f, "%d %d", var_r31->unk_104, var_r31->unk_108);
|
|
}
|
|
|
|
void fn_1_1A940(UnkM450Struct5 *var_r30, Vec *var_r31, s8 var_r27)
|
|
{
|
|
Mtx spD0;
|
|
float var_f31;
|
|
|
|
s32 var_r23;
|
|
|
|
nMap = 0;
|
|
var_r23 = 1;
|
|
lbl_1_bss_10C = 1;
|
|
if (var_r30->unk_E8 == 0.0f) {
|
|
lbl_1_bss_114 = 0;
|
|
if (var_r27 == 0x78) {
|
|
if (var_r31->x > var_r30->unk_00.unk_6C.x) {
|
|
var_r23 = 0;
|
|
}
|
|
}
|
|
else if (var_r31->z < var_r30->unk_00.unk_6C.z) {
|
|
var_r23 = 0;
|
|
}
|
|
}
|
|
if (var_r23 != 0) {
|
|
CharModelEffectEnableSet(var_r30->unk_11C, 0);
|
|
var_r30->unk_E8 += 1.0f;
|
|
var_f31 = 0.0f > var_r31->x ? -var_r31->x : var_r31->x;
|
|
if (var_f31 < (0.0f > var_r31->y ? -var_r31->y : var_r31->y)) {
|
|
var_f31 = 0.0f > var_r31->y ? -var_r31->y : var_r31->y;
|
|
}
|
|
if (var_f31 < (0.0f > var_r31->z ? -var_r31->z : var_r31->z)) {
|
|
var_f31 = 0.0f > var_r31->z ? -var_r31->z : var_r31->z;
|
|
}
|
|
var_f31 = 1505.0f - var_f31;
|
|
if (var_r27 == 0x78) {
|
|
fn_1_148B0(var_r30->unk_E8, var_r27);
|
|
MTXRotRad(spD0, 0x5A, 0.017453292f * var_r30->unk_E8);
|
|
var_r30->unk_00.unk_6C.x = var_r31->x + ((var_f31 * (0.0f > var_r31->x ? -1 : 1)) * sind(var_r30->unk_E8));
|
|
}
|
|
else {
|
|
fn_1_148B0(var_r30->unk_E8, var_r27);
|
|
MTXRotRad(spD0, 0x58, 0.017453292f * var_r30->unk_E8);
|
|
var_r30->unk_00.unk_6C.z = var_r31->z + ((var_f31 * (0.0f > var_r31->z ? -1 : 1)) * sind(var_r30->unk_E8));
|
|
}
|
|
var_r30->unk_00.unk_6C.y = var_r31->y + (var_f31 * cosd(var_r30->unk_E8));
|
|
MTXMultVec(&spD0[0], &var_r30->unk_00.unk_6C, &var_r30->unk_00.unk_6C);
|
|
}
|
|
else {
|
|
if (var_r27 == 0x78) {
|
|
var_r30->unk_00.unk_20 = 0x48;
|
|
}
|
|
else {
|
|
var_r30->unk_00.unk_24 = 0x48;
|
|
}
|
|
fn_1_40C0(&var_r30->unk_00);
|
|
}
|
|
if (90.0f <= var_r30->unk_E8) {
|
|
if (lbl_1_bss_114 == 0) {
|
|
fn_1_149C0(var_r27);
|
|
}
|
|
fn_1_14AB8();
|
|
}
|
|
}
|
|
|
|
s32 fn_1_1B0C4(float *arg0, UnkM450Struct5 *arg1)
|
|
{
|
|
if (arg1->unk_00.unk_38 != 0) {
|
|
return 0;
|
|
}
|
|
if (((arg0[0] - arg0[3]) <= arg1->unk_00.unk_6C.x) && ((arg0[0] + arg0[3]) >= arg1->unk_00.unk_6C.x)
|
|
&& ((arg0[2] - arg0[4]) <= arg1->unk_00.unk_6C.z) && ((arg0[2] + arg0[4]) >= arg1->unk_00.unk_6C.z)) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void fn_1_1B158(UnkM450Struct5 *arg0, UnkData1380Struct *arg1)
|
|
{
|
|
s32 var_r31;
|
|
|
|
arg0->unk_104 = -1;
|
|
if (NULL != arg1) {
|
|
if ((arg0->unk_00.unk_38 == 1) || (arg0->unk_00.unk_38 == 3)) {
|
|
return;
|
|
}
|
|
if ((!(1505.0f < arg0->unk_00.unk_6C.y) && !(1495.0f > arg0->unk_00.unk_6C.y)) || (arg0->unk_00.unk_38 == 1) || (arg0->unk_00.unk_38 == 3)) {
|
|
for (var_r31 = 0; var_r31 < arg1->unk_08; var_r31++) {
|
|
if ((0 <= arg1->unk_24[var_r31]) && ((arg1->unk_30[var_r31].x - arg1->unk_04) <= arg0->unk_00.unk_6C.x)
|
|
&& ((arg1->unk_04 + arg1->unk_30[var_r31].x) >= arg0->unk_00.unk_6C.x)
|
|
&& ((arg1->unk_30[var_r31].z - arg1->unk_04) <= arg0->unk_00.unk_6C.z)
|
|
&& ((arg1->unk_04 + arg1->unk_30[var_r31].z) >= arg0->unk_00.unk_6C.z)) {
|
|
arg0->unk_104 = var_r31;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_1B2AC(UnkM450Struct5 *var_r30, UnkData1380Struct *var_r31)
|
|
{
|
|
s32 var_r29;
|
|
s32 var_r28;
|
|
s32 var_r27;
|
|
s32 var_r26;
|
|
s32 var_r25;
|
|
s32 var_r24;
|
|
|
|
if ((var_r30->unk_FC & 0x800) != 0) {
|
|
if ((NULL == var_r31) || (var_r30->unk_104 < 0) || (lbl_1_bss_F8 >= 0) || (var_r31->unk_1C != 0)) {
|
|
return;
|
|
}
|
|
var_r25 = var_r30->unk_104 % var_r31->unk_0C;
|
|
var_r24 = var_r30->unk_104 / var_r31->unk_0C;
|
|
for (var_r28 = 0; var_r28 < 4; var_r28++) {
|
|
var_r27 = var_r25 + lbl_1_data_1234[var_r28 * 2];
|
|
var_r26 = var_r24 + lbl_1_data_1234[(var_r28 * 2) + 1];
|
|
if ((var_r27 >= 0) && (var_r31->unk_0C > var_r27) && (var_r26 >= 0) && (var_r31->unk_0C > var_r26)) {
|
|
var_r29 = var_r27 + (var_r26 * var_r31->unk_0C);
|
|
if (var_r31->unk_24[var_r29] < 0) {
|
|
lbl_1_bss_FC = var_r31;
|
|
lbl_1_bss_F8 = var_r29;
|
|
var_r31->unk_24[var_r29] = var_r31->unk_24[var_r30->unk_104];
|
|
var_r31->unk_24[var_r30->unk_104] = -1;
|
|
var_r31->unk_28[var_r29] = var_r31->unk_28[var_r30->unk_104];
|
|
var_r31->unk_28[var_r30->unk_104] = -1;
|
|
lbl_1_bss_EC = var_r31->unk_30[var_r29];
|
|
var_r31->unk_30[var_r29] = var_r31->unk_30[var_r30->unk_104];
|
|
HuAudFXPlay(0x7B8);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
s32 fn_1_1B4C8(UnkM450Struct5 *arg0)
|
|
{
|
|
s32 var_r31;
|
|
|
|
arg0->unk_10C = 0;
|
|
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
|
lbl_1_bss_B8[var_r31] = -1;
|
|
}
|
|
}
|
|
|
|
void fn_1_1B510(s32 sp8)
|
|
{
|
|
s32 var_r31;
|
|
s32 var_r30;
|
|
UnkM450Struct5 *var_r29 = lbl_1_bss_138->data;
|
|
|
|
for (var_r30 = 0; var_r30 < 3; var_r30++) {
|
|
if (sp8 == lbl_1_bss_B8[var_r30]) {
|
|
var_r29->unk_10C--;
|
|
lbl_1_bss_B8[var_r30] = -1;
|
|
for (var_r31 = 0; var_r31 < 3; var_r31++) {
|
|
Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31 + 0x19], HU3D_ATTR_DISPOFF);
|
|
}
|
|
for (var_r31 = var_r30; var_r31 < 2; var_r31++) {
|
|
lbl_1_bss_B8[var_r31] = lbl_1_bss_B8[var_r31 + 1];
|
|
lbl_1_bss_B8[var_r31 + 1] = -1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_1B644(UnkM450Struct5 *arg0)
|
|
{
|
|
s32 var_r31;
|
|
|
|
arg0->unk_108 = -1;
|
|
if (lbl_1_bss_118 == 5) {
|
|
if ((arg0->unk_00.unk_38 == 1) || (arg0->unk_00.unk_38 == 3)) {
|
|
return;
|
|
}
|
|
for (var_r31 = 0; var_r31 < 5; var_r31++) {
|
|
float var_f31;
|
|
float var_f30;
|
|
UnkData1450Struct *var_r30 = &lbl_1_data_1450[var_r31];
|
|
var_f31 = arg0->unk_00.unk_6C.x - var_r30->unk_04.x;
|
|
var_f30 = arg0->unk_00.unk_6C.z - var_r30->unk_04.z;
|
|
if (100.0f > sqrtf((var_f31 * var_f31) + (var_f30 * var_f30))) {
|
|
arg0->unk_108 = var_r31;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_1B830(UnkM450Struct5 *arg0)
|
|
{
|
|
s32 var_r30;
|
|
|
|
if (arg0->unk_FC & 0x800) {
|
|
if ((lbl_1_bss_118 != 5) || (arg0->unk_108 < 0)) {
|
|
return;
|
|
}
|
|
if ((arg0->unk_10C < 3) && (lbl_1_data_1450[arg0->unk_108].unk_18 == 0)) {
|
|
for (var_r30 = 0; var_r30 < arg0->unk_10C; var_r30++) {
|
|
if (arg0->unk_108 == lbl_1_bss_B8[var_r30]) {
|
|
return;
|
|
}
|
|
}
|
|
lbl_1_data_1450[arg0->unk_108].unk_14 = 0.0f;
|
|
lbl_1_data_1450[arg0->unk_108].unk_18 = 1;
|
|
lbl_1_data_1450[arg0->unk_108].unk_1C = 1;
|
|
lbl_1_data_1450[arg0->unk_108].unk_20 = 1;
|
|
lbl_1_bss_B8[arg0->unk_10C++] = arg0->unk_108;
|
|
Hu3DMotionTimeSet(lbl_1_bss_1A0->model[arg0->unk_108 + 0x14], 0.0f);
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[arg0->unk_108 + 0x14], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
|
if (arg0->unk_10C == 2) {
|
|
fn_1_12E5C(lbl_1_bss_B8[0], lbl_1_bss_B8[1], 25);
|
|
HuAudFXPlay(0x7B4);
|
|
}
|
|
if (arg0->unk_10C == 3) {
|
|
lbl_1_bss_C8 = 0.0f;
|
|
lbl_1_bss_C4 = 0x1388;
|
|
fn_1_12E5C(lbl_1_bss_B8[0], lbl_1_bss_B8[2], 26);
|
|
fn_1_12E5C(lbl_1_bss_B8[1], lbl_1_bss_B8[2], 27);
|
|
HuAudFXPlay(0x7B5);
|
|
HuAudFXPlay(0x7B6);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_1C060(UnkM450Struct5 *arg0)
|
|
{
|
|
UnkData1450Struct *var_r31;
|
|
|
|
fn_1_1B644(arg0);
|
|
if (arg0->unk_108 >= 0) {
|
|
var_r31 = &lbl_1_data_1450[arg0->unk_108];
|
|
if ((arg0->unk_00.unk_38 != 1) && (arg0->unk_00.unk_38 != 3) && (1560.0f > arg0->unk_00.unk_6C.y)) {
|
|
arg0->unk_00.unk_6C.y = 1565.0f;
|
|
arg0->unk_00.unk_78.y = 1565.0f;
|
|
}
|
|
if (0.0f != var_r31->unk_10) {
|
|
arg0->unk_00.unk_6C.y = 5.0f + var_r31->unk_04.y;
|
|
arg0->unk_00.unk_78.y = 5.0f + var_r31->unk_04.y;
|
|
}
|
|
}
|
|
}
|
|
|
|
s32 fn_1_1C2D4(UnkM450Struct5 *arg0)
|
|
{
|
|
if ((arg0->unk_FC & 0x50) != 0) {
|
|
return 0;
|
|
}
|
|
if ((arg0->unk_FC & 0x500) != 0) {
|
|
return 0;
|
|
}
|
|
if ((arg0->unk_FC & 0x5000) != 0) {
|
|
return 0;
|
|
}
|
|
if ((arg0->unk_FC & 0x50000) != 0) {
|
|
return 0;
|
|
}
|
|
if ((arg0->unk_FC & 0x500000) != 0) {
|
|
return 0;
|
|
}
|
|
if (lbl_1_data_A0C[0].unk_14 <= 0) {
|
|
return 0;
|
|
}
|
|
if ((arg0->unk_FC & 0x80000) != 0) {
|
|
return 0;
|
|
}
|
|
if (arg0->unk_00.unk_38 != 0) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
s32 fn_1_1C39C(UnkM450Struct5 *arg0)
|
|
{
|
|
if ((arg0->unk_FC & 0x50) != 0) {
|
|
return 0;
|
|
}
|
|
if ((arg0->unk_FC & 0x500) != 0) {
|
|
return 0;
|
|
}
|
|
if ((arg0->unk_FC & 0x5000) != 0) {
|
|
return 0;
|
|
}
|
|
if ((arg0->unk_FC & 0x50000) != 0) {
|
|
return 0;
|
|
}
|
|
if ((arg0->unk_FC & 0x500000) != 0) {
|
|
return 0;
|
|
}
|
|
if ((arg0->unk_FC & 2) != 0) {
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
void fn_1_1C434(UnkM450Struct5 *arg0, omObjData *arg1)
|
|
{
|
|
s32 var_r30;
|
|
|
|
arg0->unk_118++;
|
|
lbl_1_bss_1A4->work[0] += 1;
|
|
lbl_1_bss_128 = 0.0f;
|
|
fn_1_4ED8(&arg0->unk_00, 0);
|
|
Hu3DModelAttrReset(arg1->model[0], HU3D_ATTR_DISPOFF);
|
|
arg1->func = fn_1_20170;
|
|
}
|
|
|
|
void fn_1_1C6E4(void)
|
|
{
|
|
s32 var_r31;
|
|
|
|
for (var_r31 = 0; var_r31 < 1; var_r31++) {
|
|
lbl_1_bss_E8[var_r31] = NULL;
|
|
}
|
|
for (var_r31 = 0; var_r31 < 1; var_r31++) {
|
|
lbl_1_bss_E4[var_r31] = NULL;
|
|
}
|
|
for (var_r31 = 0; var_r31 < 2; var_r31++) {
|
|
lbl_1_bss_DC[var_r31] = NULL;
|
|
}
|
|
}
|
|
|
|
void fn_1_1C77C(UnkM450Struct5 *arg0)
|
|
{
|
|
Mtx sp20;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
UnkM450Struct3 *var_r30 = lbl_1_bss_134->data;
|
|
|
|
sp14.x = 0.0f;
|
|
sp14.y = 0.0f;
|
|
sp14.z = 1.0f;
|
|
MTXRotRad(sp20, 0x59, 0.017453292f * arg0->unk_00.unk_9C);
|
|
MTXMultVec(sp20, &sp14, &sp14);
|
|
VECNormalize(&sp14, &sp14);
|
|
VECSubtract(&arg0->unk_00.unk_6C, &var_r30->unk_00.unk_6C, &arg0->unk_DC);
|
|
VECNormalize(&arg0->unk_DC, &arg0->unk_DC);
|
|
VECSubtract(&var_r30->unk_00.unk_6C, &arg0->unk_00.unk_6C, &sp8);
|
|
VECNormalize(&sp8, &sp8);
|
|
if (0.0f <= VECDotProduct(&sp14, &sp8)) {
|
|
arg0->unk_114 = 0x11;
|
|
return;
|
|
}
|
|
arg0->unk_114 = 0x13;
|
|
}
|
|
|
|
s32 fn_1_1C898(UnkM450Struct5 *var_r31, omObjData *var_r30)
|
|
{
|
|
s32 sp3C;
|
|
float var_f31;
|
|
|
|
if (var_r31->unk_FC & 2) {
|
|
if (var_r31->unk_FC & 0x40) {
|
|
var_r31->unk_F8 += 1.0f;
|
|
if (var_r31->unk_F8 == 15.0f) {
|
|
Hu3DModelAttrReset(var_r30->model[0], HU3D_MOTATTR_PAUSE);
|
|
}
|
|
if ((15.0f < var_r31->unk_F8) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) {
|
|
var_r31->unk_FC &= ~0x40;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
}
|
|
return 0;
|
|
}
|
|
if (var_r31->unk_FC & 0x400) {
|
|
var_r31->unk_F8 += 1.0f;
|
|
if (var_r31->unk_F8 == 15.0f) {
|
|
Hu3DModelAttrReset(var_r30->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
|
}
|
|
if ((15.0f < var_r31->unk_F8) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) {
|
|
var_r31->unk_FC &= ~0x400;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
}
|
|
return 0;
|
|
}
|
|
if (var_r31->unk_FC & 0x4000) {
|
|
var_r31->unk_F8 += 1.0f;
|
|
if (120.0f < var_r31->unk_F8) {
|
|
var_r31->unk_FC &= ~0x4000;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
}
|
|
return 0;
|
|
}
|
|
if (var_r31->unk_FC & 0x40000) {
|
|
var_r31->unk_F8 += 1.0f;
|
|
if (120.0f < var_r31->unk_F8) {
|
|
var_r31->unk_FC &= ~0x40000;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], HU3D_ATTR_DISPOFF);
|
|
}
|
|
return 0;
|
|
}
|
|
if (var_r31->unk_FC & 0x400000) {
|
|
if ((Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) {
|
|
if (var_r31->unk_F8 == 0.0f) {
|
|
var_r31->unk_F8 = 1.0f;
|
|
Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[var_r31->unk_114 + 1], 0.0f, 8.0f, 0);
|
|
}
|
|
else {
|
|
var_r31->unk_FC &= ~0x400000;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
if ((var_r31->unk_100 & 1) == 0) {
|
|
Hu3DModelAttrSet(var_r30->model[0], HU3D_ATTR_DISPOFF);
|
|
}
|
|
else {
|
|
Hu3DModelAttrReset(var_r30->model[0], HU3D_ATTR_DISPOFF);
|
|
}
|
|
if (--var_r31->unk_100 < 0) {
|
|
var_r31->unk_FC &= ~0x70;
|
|
var_r31->unk_FC &= ~0x700;
|
|
var_r31->unk_FC &= ~0x7000;
|
|
var_r31->unk_FC &= ~0x70000;
|
|
var_r31->unk_FC &= ~0x700004;
|
|
var_r31->unk_FC &= ~0x2;
|
|
Hu3DModelAttrReset(var_r30->model[0], HU3D_ATTR_DISPOFF);
|
|
}
|
|
return 1;
|
|
}
|
|
if (var_r31->unk_FC & 0x110) {
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
return 0;
|
|
}
|
|
if ((var_r31->unk_FC & 0x1000) != 0) {
|
|
if ((Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) {
|
|
var_r31->unk_00.unk_9C += (10.0 + (8.0 * sind((180.0f * (var_r31->unk_F8 / 60.0f)))));
|
|
if (360.0f <= var_r31->unk_00.unk_9C) {
|
|
var_r31->unk_00.unk_9C -= 360.0f;
|
|
}
|
|
var_r31->unk_F8 += 1.0f;
|
|
if (60.0f < var_r31->unk_F8) {
|
|
fn_1_19CE0(var_r30);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
if (var_r31->unk_FC & 0x10000) {
|
|
fn_1_19CE0(var_r30);
|
|
return 0;
|
|
}
|
|
if (var_r31->unk_FC & 0x100000) {
|
|
var_r31->unk_00.unk_20 = 72.0f * var_r31->unk_DC.x;
|
|
var_r31->unk_00.unk_24 = -(72.0f * var_r31->unk_DC.z);
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
return 0;
|
|
}
|
|
if ((var_r31->unk_FC & 0x20) != 0) {
|
|
if (lbl_1_bss_118 < 4) {
|
|
omVibrate(lbl_1_bss_120, 0xC, 4, 2);
|
|
}
|
|
else {
|
|
omVibrate(lbl_1_bss_120, 0xC, 0xC, 0);
|
|
}
|
|
HuAudCharVoicePlay(var_r31->unk_11C, 0x123);
|
|
var_r31->unk_FC |= 0x10;
|
|
var_r31->unk_00.unk_3C |= 0x210;
|
|
fn_1_2BD0(&var_r31->unk_00, VERSION_NTSC ? 48.179995f : 57.816f, 0.0f);
|
|
Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[8], 0.0f, 8.0f, 0);
|
|
if (fn_1_125C0(0, 1) <= 0) {
|
|
var_r31->unk_FC |= 0x80000;
|
|
}
|
|
return 0;
|
|
}
|
|
if (var_r31->unk_FC & 0x200) {
|
|
omVibrate(lbl_1_bss_120, 0xC, 4, 2);
|
|
HuAudCharVoicePlay(var_r31->unk_11C, 0x123);
|
|
var_r31->unk_FC |= 0x100;
|
|
var_r31->unk_00.unk_3C |= 0x210;
|
|
fn_1_2BD0(&var_r31->unk_00, 0.0f, 0.0f);
|
|
if (fn_1_125C0(0, 1) <= 0) {
|
|
var_r31->unk_FC |= 0x80000;
|
|
}
|
|
return 0;
|
|
}
|
|
if (var_r31->unk_FC & 0x2000) {
|
|
omVibrate(lbl_1_bss_120, 0xC, 4, 2);
|
|
HuAudCharVoicePlay(var_r31->unk_11C, 0x123);
|
|
var_r31->unk_F8 = 0.0f;
|
|
var_r31->unk_FC |= 0x1000;
|
|
var_r31->unk_00.unk_3C |= 0x10;
|
|
Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[15], 0.0f, 8.0f, 0);
|
|
if (fn_1_125C0(0, 1) <= 0) {
|
|
var_r31->unk_FC |= 0x80000;
|
|
}
|
|
return 0;
|
|
}
|
|
if (var_r31->unk_FC & 0x20000) {
|
|
omVibrate(lbl_1_bss_120, 0xC, 4, 2);
|
|
HuAudCharVoicePlay(var_r31->unk_11C, 0x123);
|
|
var_r31->unk_F8 = 0.0f;
|
|
var_r31->unk_FC |= 0x10000;
|
|
var_r31->unk_00.unk_3C |= 0x10;
|
|
if (fn_1_125C0(0, 1) <= 0) {
|
|
var_r31->unk_FC |= 0x80000;
|
|
}
|
|
return 0;
|
|
}
|
|
if ((var_r31->unk_FC & 0x200000) != 0) {
|
|
omVibrate(lbl_1_bss_120, 0xC, 0xC, 0);
|
|
HuAudCharVoicePlay(var_r31->unk_11C, 0x123);
|
|
var_r31->unk_F8 = 0.0f;
|
|
var_r31->unk_FC |= 0x100000;
|
|
var_r31->unk_00.unk_3C |= 0x200;
|
|
var_r31->unk_00.unk_3C &= ~0x10;
|
|
var_f31 = VERSION_NTSC ? 40.15f : 48.180005f;
|
|
if (var_r31->unk_FC & 4) {
|
|
var_f31 = var_f31 / 2;
|
|
}
|
|
fn_1_1C77C(var_r31);
|
|
fn_1_2BD0(&var_r31->unk_00, var_f31, 0.0f);
|
|
Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[var_r31->unk_114], 0.0f, 8.0f, 0);
|
|
sp3C = 1;
|
|
if ((var_r31->unk_FC & 4) != 0) {
|
|
sp3C = 1;
|
|
}
|
|
if (fn_1_125C0(0, sp3C) <= 0) {
|
|
var_r31->unk_FC |= 0x80000;
|
|
}
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
void fn_1_1E150(omObjData *var_r29)
|
|
{
|
|
s32 sp70;
|
|
float var_f20;
|
|
|
|
UnkM450Struct5 *var_r31 = var_r29->data;
|
|
UnkData1380Struct *var_r30;
|
|
|
|
var_r31->unk_FC |= 1;
|
|
var_r31->unk_FC &= 0xFFFFF7FF;
|
|
fn_1_1C060(var_r31);
|
|
sp70 = 1;
|
|
var_r31->unk_00.unk_20 = 0;
|
|
var_r31->unk_00.unk_24 = 0;
|
|
var_r31->unk_00.unk_28 = 0;
|
|
var_r31->unk_00.unk_2C = 0;
|
|
var_r31->unk_00.unk_30 = 0;
|
|
var_r31->unk_00.unk_34 = 0;
|
|
if (lbl_1_bss_118 == 5) {
|
|
fn_1_19798();
|
|
}
|
|
sp70 = fn_1_1C898(var_r31, var_r29);
|
|
if (sp70 != 0) {
|
|
if (((var_r31->unk_FC & 0x80000) || (lbl_1_bss_304 < 0)) && (var_r31->unk_00.unk_38 == 0)) {
|
|
var_r31->unk_118 = 0x7EB;
|
|
Hu3DModelAttrReset(*var_r29->model, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
|
Hu3DMotionShiftSet(*var_r29->model, var_r29->motion[22], 0.0f, 8.0f, 0);
|
|
Hu3DModelAttrReset(*var_r29->model, HU3D_ATTR_DISPOFF);
|
|
var_r29->func = fn_1_20170;
|
|
return;
|
|
}
|
|
if (NULL != lbl_1_data_FAC[lbl_1_bss_118]) {
|
|
if (fn_1_1B0C4(lbl_1_data_FAC[lbl_1_bss_118], var_r31) != 0) {
|
|
if (fn_1_1C2D4(var_r31) != 0) {
|
|
fn_1_1C434(var_r31, var_r29);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
var_r31->unk_00.unk_20 = HuPadStkX[var_r31->unk_120];
|
|
var_r31->unk_00.unk_24 = HuPadStkY[var_r31->unk_120];
|
|
var_r31->unk_00.unk_28 = HuPadBtnDown[var_r31->unk_120];
|
|
var_r31->unk_00.unk_2C = HuPadBtn[var_r31->unk_120];
|
|
var_r31->unk_00.unk_30 = HuPadTrigL[var_r31->unk_120];
|
|
var_r31->unk_00.unk_34 = HuPadTrigR[var_r31->unk_120];
|
|
if ((lbl_1_bss_118 >= 2) && (lbl_1_bss_118 <= 4)) {
|
|
var_r31->unk_00.unk_20 = HuPadStkY[var_r31->unk_120];
|
|
var_r31->unk_00.unk_24 = -HuPadStkX[var_r31->unk_120];
|
|
}
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
if ((1490.0f > var_r31->unk_00.unk_6C.y) && (var_r31->unk_00.unk_38 != 1) && (var_r31->unk_00.unk_38 != 3)) {
|
|
omVibrate(lbl_1_bss_120, 0xC, 4, 2);
|
|
HuAudCharVoicePlay(var_r31->unk_11C, 0x123);
|
|
var_r31->unk_FC |= 0x800000;
|
|
var_r31->unk_118 = 0x7EB;
|
|
fn_1_2BD0(&var_r31->unk_00, VERSION_NTSC ? 53.533333f : 64.240005f, 0.0f);
|
|
Hu3DMotionSet(var_r29->model[0], var_r29->motion[8]);
|
|
Hu3DModelAttrReset(var_r29->model[0], HU3D_ATTR_DISPOFF);
|
|
fn_1_125C0(0, 0);
|
|
var_r29->func = fn_1_20170;
|
|
return;
|
|
}
|
|
fn_1_19450(var_r31);
|
|
|
|
var_r30 = NULL;
|
|
if (lbl_1_bss_118 == 2) {
|
|
var_r30 = &lbl_1_data_1380;
|
|
}
|
|
if (lbl_1_bss_118 == 4) {
|
|
var_r30 = &lbl_1_data_13B8;
|
|
}
|
|
fn_1_1B158(var_r31, var_r30);
|
|
fn_1_1B2AC(var_r31, var_r30);
|
|
if (NULL != var_r30) {
|
|
if ((var_r31->unk_104 >= 0) && (((var_r30->unk_34[var_r31->unk_104].x) != 0.0f) || (var_r30->unk_34[var_r31->unk_104].z != 0.0f))) {
|
|
VECAdd(&var_r30->unk_34[var_r31->unk_104], &var_r31->unk_00.unk_6C, &var_r31->unk_00.unk_6C);
|
|
var_r31->unk_00.unk_78 = var_r31->unk_00.unk_6C;
|
|
}
|
|
if (var_r30->unk_1C != 0) {
|
|
if (fn_1_1C2D4(var_r31) != 0) {
|
|
fn_1_1C434(var_r31, var_r29);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if ((lbl_1_bss_118 == 5) && (lbl_1_data_A0C[1].unk_14 <= 0)) {
|
|
if (fn_1_1C2D4(var_r31) != 0) {
|
|
lbl_1_bss_11C = lbl_1_bss_120;
|
|
fn_1_1C434(var_r31, var_r29);
|
|
fn_1_1F58(0x3E8);
|
|
return;
|
|
}
|
|
}
|
|
fn_1_1B644(var_r31);
|
|
fn_1_1B830(var_r31);
|
|
if (lbl_1_bss_118 < 5) {
|
|
var_f20 = 0.0;
|
|
if ((lbl_1_bss_118 >= 2) && (lbl_1_bss_118 <= 4)) {
|
|
var_f20 = 270.0f;
|
|
}
|
|
fn_1_1A21C(var_f20, 1500.0f);
|
|
fn_1_1710(0.5f, &lbl_1_data_470);
|
|
}
|
|
omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z);
|
|
omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f);
|
|
fn_1_1C6E4();
|
|
}
|
|
|
|
void fn_1_200BC(UnkM450Struct5 *arg0, omObjData *object)
|
|
{
|
|
s32 var_r31;
|
|
|
|
arg0->unk_118++;
|
|
arg0->unk_FC &= ~0x802;
|
|
arg0->unk_FC &= ~0x70;
|
|
arg0->unk_FC &= ~0x700;
|
|
arg0->unk_FC &= ~0x7000;
|
|
arg0->unk_FC &= ~0x70000;
|
|
arg0->unk_FC &= ~0x700004;
|
|
fn_1_1B4C8(arg0);
|
|
object->func = fn_1_1E150;
|
|
}
|
|
|
|
void fn_1_20170(omObjData *var_r30)
|
|
{
|
|
Vec sp1CC;
|
|
float sp1C8;
|
|
float sp1C4;
|
|
float var_f31;
|
|
float var_f30;
|
|
|
|
UnkM450Struct5 *var_r31;
|
|
UnkM450Struct5 *var_r29;
|
|
UnkData94CStruct *var_r28;
|
|
s32 var_r25;
|
|
|
|
var_r31 = var_r30->data;
|
|
var_r31->unk_FC &= 0xFFFFFFFE;
|
|
var_r31->unk_00.unk_20 = 0;
|
|
var_r31->unk_00.unk_24 = 0;
|
|
var_r31->unk_00.unk_28 = 0;
|
|
var_r31->unk_00.unk_2C = 0;
|
|
var_r31->unk_00.unk_30 = 0;
|
|
var_r31->unk_00.unk_34 = 0;
|
|
CharModelEffectEnableSet(var_r31->unk_11C, 1);
|
|
lbl_1_bss_10C = 0;
|
|
switch (var_r31->unk_118) {
|
|
case 0x7D0:
|
|
if (lbl_1_bss_1A4->work[0] > 0x3EC) {
|
|
var_r31->unk_118++;
|
|
Hu3DModelShadowSet(var_r30->model[0]);
|
|
if (fn_1_13B90(0) != 0) {
|
|
var_r31->unk_00.unk_9C = 180.0f;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
}
|
|
else {
|
|
var_r31->unk_00.unk_9C = 0.0f;
|
|
fn_1_4ED8(&var_r31->unk_00, 5);
|
|
}
|
|
var_r31->unk_00.unk_3C |= 0x20;
|
|
}
|
|
break;
|
|
case 0x7D1:
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
if (var_r31->unk_00.unk_38 == 2) {
|
|
var_r31->unk_118++;
|
|
var_r31->unk_F0 = 0;
|
|
var_r31->unk_F4 = -1;
|
|
var_r31->unk_C4 = lbl_1_data_94C;
|
|
var_r31->unk_EC = 360.0f;
|
|
omVibrate(lbl_1_bss_120, 0xC, 0xC, 0);
|
|
if (fn_1_13B90(0) != 0) {
|
|
var_r31->unk_118 = 0x7D4;
|
|
var_r31->unk_E8 = 0.0f;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
}
|
|
var_r31->unk_00.unk_3C &= ~0x20;
|
|
}
|
|
break;
|
|
case 0x7D2:
|
|
case 0x7DA:
|
|
if (var_r31->unk_EC != 360.0f) {
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, var_r31->unk_EC, 0.05f);
|
|
}
|
|
if (var_r31->unk_F4 < 0) {
|
|
var_r31->unk_F4 = var_r31->unk_F0;
|
|
var_r31->unk_F0++;
|
|
var_r28 = &var_r31->unk_C4[var_r31->unk_F4];
|
|
if (var_r28->unk_08 == 0.0f) {
|
|
Hu3DMotionSet(var_r30->model[0], var_r30->motion[var_r28->unk_00]);
|
|
Hu3DMotionTimeSet(var_r30->model[0], var_r28->unk_0C);
|
|
}
|
|
else {
|
|
Hu3DMotionShiftSet(
|
|
var_r30->model[0], var_r30->motion[var_r28->unk_00], var_r28->unk_0C, var_r28->unk_08, var_r28->unk_10 & 0xBFFFFFFD);
|
|
}
|
|
Hu3DMotionSpeedSet(var_r30->model[0], var_r28->unk_04);
|
|
Hu3DMotionShiftSpeedSet(var_r30->model[0], var_r28->unk_04);
|
|
if (var_r28->unk_10 & 0x40000003) {
|
|
var_r31->unk_118++;
|
|
Hu3DMotionSpeedSet(var_r30->model[0], 1.0f);
|
|
Hu3DMotionShiftSpeedSet(var_r30->model[0], 1.0f);
|
|
}
|
|
}
|
|
else if ((Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) {
|
|
var_r31->unk_F4 = -1;
|
|
if (var_r31->unk_C4[var_r31->unk_F0].unk_00 < 0) {
|
|
var_r31->unk_118++;
|
|
Hu3DMotionSpeedSet(var_r30->model[0], 1.0f);
|
|
Hu3DMotionShiftSpeedSet(var_r30->model[0], 1.0f);
|
|
}
|
|
}
|
|
break;
|
|
case 0x7D3:
|
|
if (Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) {
|
|
sp1C4 = Hu3DMotionTimeGet(var_r30->model[0]) / Hu3DMotionMaxTimeGet(var_r30->model[0]);
|
|
if (0.5f > sp1C4) {
|
|
sp1C4 = 0.5f;
|
|
}
|
|
var_r31->unk_00.unk_9C = 180.0f * (2.0f * (sp1C4 - 0.5f));
|
|
if (Hu3DMotionEndCheck(var_r30->model[0]) != 0) {
|
|
var_r31->unk_118++;
|
|
var_r31->unk_E8 = 0.0f;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[0], 0.0f, 8.0f, 0x40000001);
|
|
}
|
|
}
|
|
break;
|
|
case 0x7D4:
|
|
if ((lbl_1_bss_1A4->work[0] >= 0x3EF) && (120.0f < lbl_1_bss_128)) {
|
|
var_r31->unk_118++;
|
|
}
|
|
break;
|
|
case 0x7D5:
|
|
if (90.0f > var_r31->unk_E8) {
|
|
fn_1_1A940(var_r31, lbl_1_bss_4C, 0x7A);
|
|
}
|
|
else {
|
|
if (lbl_1_bss_1A4->work[0] < 0x3F0) {
|
|
lbl_1_bss_1A4->work[0] = 0x3F0;
|
|
lbl_1_bss_128 = 0.0f;
|
|
lbl_1_bss_324 = lbl_1_data_4B8;
|
|
lbl_1_bss_30C = lbl_1_data_4C4;
|
|
}
|
|
if ((lbl_1_bss_4C->z - 100.0f) < var_r31->unk_00.unk_6C.z) {
|
|
var_r31->unk_00.unk_24 = 0x48;
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
else {
|
|
var_r31->unk_118++;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
}
|
|
}
|
|
break;
|
|
case 0x7D6:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3F3) {
|
|
fn_1_200BC(var_r31, var_r30);
|
|
}
|
|
break;
|
|
case 0x7D8:
|
|
var_r31->unk_D0.x = 1200.0f;
|
|
var_r31->unk_D0.z = 0.0f;
|
|
if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) {
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3F5) {
|
|
var_r31->unk_118++;
|
|
var_r31->unk_E8 = 0.0f;
|
|
var_r31->unk_00.unk_6C.z = 0.0f;
|
|
}
|
|
else {
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 90.0f, 0.4f);
|
|
var_r31->unk_00.unk_6C.z = 0.0f;
|
|
}
|
|
}
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
break;
|
|
case 0x7D9:
|
|
if (90.0f > var_r31->unk_E8) {
|
|
fn_1_1A940(var_r31, &lbl_1_bss_4C[1], 0x78);
|
|
}
|
|
else {
|
|
if ((-1000.0f < var_r31->unk_00.unk_6C.x) && (lbl_1_bss_1A4->work[0] < 0x3F6)) {
|
|
lbl_1_bss_1A4->work[0] = 0x3F6;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3F7) {
|
|
var_r31->unk_118 = 0x7DB;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
}
|
|
if (lbl_1_data_1380.unk_24[2] >= 0) {
|
|
var_r31->unk_D0 = lbl_1_data_1380.unk_30[2];
|
|
}
|
|
else {
|
|
var_r31->unk_D0 = lbl_1_data_1380.unk_30[3];
|
|
}
|
|
var_r31->unk_D0.z *= 0.5f;
|
|
fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0);
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
break;
|
|
case 0x7DB:
|
|
if ((lbl_1_bss_1A4->work[0] <= 0x3F9) && (Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (lbl_1_bss_D8 > 0)) {
|
|
VECScale(&lbl_1_bss_CC, &lbl_1_bss_CC, 1.0f / lbl_1_bss_D8);
|
|
fn_1_160AC(var_r31, var_r30, &lbl_1_bss_CC);
|
|
}
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3FA) {
|
|
fn_1_160AC(var_r31, var_r30, NULL);
|
|
}
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3FB) {
|
|
fn_1_16280(var_r31, var_r30);
|
|
fn_1_200BC(var_r31, var_r30);
|
|
}
|
|
break;
|
|
case 0x7DD:
|
|
var_r31->unk_D0.x = 300.0f;
|
|
var_r31->unk_D0.z = 0.0f;
|
|
if (lbl_1_bss_1A4->work[0] >= 0x3FD) {
|
|
if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) {
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 90.0f, 0.4f);
|
|
if (lbl_1_bss_1A4->work[0] <= 0x3FD) {
|
|
lbl_1_bss_1A4->work[0] += 1;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
if (lbl_1_bss_1A4->work[0] >= 0x402) {
|
|
var_r31->unk_118++;
|
|
var_r31->unk_E8 = 0.0f;
|
|
}
|
|
}
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
break;
|
|
case 0x7DE:
|
|
if (90.0f > var_r31->unk_E8) {
|
|
fn_1_1A940(var_r31, &lbl_1_bss_4C[2], 0x78);
|
|
}
|
|
else if ((100.0f + lbl_1_bss_4C[2].x) > var_r31->unk_00.unk_6C.x) {
|
|
var_r31->unk_00.unk_20 = 0x48;
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
else {
|
|
var_r31->unk_118++;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
lbl_1_bss_1A4->work[0] = 0x403;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
break;
|
|
case 0x7DF:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x405) {
|
|
fn_1_200BC(var_r31, var_r30);
|
|
}
|
|
break;
|
|
case 0x7E1:
|
|
var_r31->unk_D0.x = 1200.0f;
|
|
var_r31->unk_D0.z = 0.0f;
|
|
if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) {
|
|
if (lbl_1_bss_1A4->work[0] >= 0x407) {
|
|
var_r31->unk_118++;
|
|
var_r31->unk_E8 = 0.0f;
|
|
var_r31->unk_00.unk_6C.z = 0.0f;
|
|
}
|
|
else {
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 90.0f, 0.4f);
|
|
var_r31->unk_00.unk_6C.z = 0.0f;
|
|
}
|
|
}
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
break;
|
|
case 0x7E2:
|
|
if (90.0f > var_r31->unk_E8) {
|
|
fn_1_1A940(var_r31, &lbl_1_bss_4C[3], 0x78);
|
|
}
|
|
else {
|
|
if ((-1000.0f < var_r31->unk_00.unk_6C.x) && (lbl_1_bss_1A4->work[0] < 0x408)) {
|
|
lbl_1_bss_1A4->work[0] = 0x408;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
if (lbl_1_bss_1A4->work[0] >= 0x409) {
|
|
var_r31->unk_118++;
|
|
}
|
|
var_r31->unk_D0 = lbl_1_data_13B8.unk_30[7];
|
|
|
|
fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0);
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
break;
|
|
case 0x7E3:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x40D) {
|
|
fn_1_200BC(var_r31, var_r30);
|
|
}
|
|
break;
|
|
case 0x7E5:
|
|
var_r31->unk_D0.x = 0.0f;
|
|
var_r31->unk_D0.z = -400.0f;
|
|
if (lbl_1_bss_1A4->work[0] >= 0x410) {
|
|
if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) {
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0f, 0.4f);
|
|
if ((lbl_1_bss_1A4->work[0] <= 0x410) && (120.0f <= lbl_1_bss_128)) {
|
|
lbl_1_bss_1A4->work[0] += 1;
|
|
lbl_1_bss_128 = 0.0f;
|
|
var_r31->unk_118++;
|
|
var_r31->unk_E8 = 0.0f;
|
|
|
|
fn_1_139B0(&lbl_1_data_13B8, 0x10);
|
|
fn_1_1F58(0x3E8);
|
|
}
|
|
}
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
break;
|
|
case 0x7E6:
|
|
if (90.0f > var_r31->unk_E8) {
|
|
fn_1_1A940(var_r31, &lbl_1_bss_4C[4], 0x7A);
|
|
}
|
|
else {
|
|
if (lbl_1_bss_1A4->work[0] <= 0x411) {
|
|
lbl_1_bss_1A4->work[0] = 0x412;
|
|
lbl_1_bss_128 = 0.0f;
|
|
fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C);
|
|
lbl_1_bss_324 = lbl_1_data_4D0;
|
|
lbl_1_bss_30C = lbl_1_data_4DC;
|
|
}
|
|
var_r31->unk_D0.x = 0.0f;
|
|
var_r31->unk_D0.z = 600.0f;
|
|
if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) {
|
|
++var_r31->unk_118;
|
|
fn_1_4ED8(&var_r31->unk_00, 0);
|
|
}
|
|
else {
|
|
fn_1_40C0(&var_r31->unk_00);
|
|
}
|
|
}
|
|
break;
|
|
case 0x7E7:
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0f, 0.4f);
|
|
if (lbl_1_bss_1A4->work[0] >= 0x415) {
|
|
fn_1_200BC(var_r31, var_r30);
|
|
}
|
|
break;
|
|
case 0x7E9:
|
|
if (lbl_1_bss_1A4->work[0] >= 0x417) {
|
|
if ((VERSION_NTSC ? 100.0f : 80.0f) < lbl_1_bss_128) {
|
|
var_r31->unk_118++;
|
|
GWPlayerCoinWinSet(lbl_1_bss_120, 10);
|
|
Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[21], 0.0f, 8.0f, 0);
|
|
lbl_1_bss_18 = HuAudSStreamPlay(0xD);
|
|
}
|
|
}
|
|
if ((lbl_1_bss_1A4->work[0] == 0x416) && (240.0f < lbl_1_bss_128)) {
|
|
lbl_1_bss_1A4->work[0] += 1;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
break;
|
|
case 0x7EA:
|
|
VECSubtract(&((UnkM450Struct3 *)lbl_1_bss_134->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &sp1CC);
|
|
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0 + (atan2d(sp1CC.x, sp1CC.z)), 0.4f);
|
|
break;
|
|
case 0x7EB:
|
|
if (var_r31->unk_FC & 0x800000) {
|
|
var_r29 = var_r31;
|
|
var_r29->unk_00.unk_84.y += -146.0f / REFRESH_RATE;
|
|
var_r29->unk_00.unk_6C.y += var_r29->unk_00.unk_84.y;
|
|
var_r29->unk_00.unk_A8 = MapPos(
|
|
var_r29->unk_00.unk_6C.x, var_r29->unk_00.unk_6C.y, var_r29->unk_00.unk_6C.z, var_r29->unk_00.unk_C0, &var_r29->unk_00.unk_AC);
|
|
if (var_r29->unk_00.unk_A8 > var_r29->unk_00.unk_6C.y) {
|
|
fn_1_2BD0(&var_r31->unk_00, VERSION_NTSC ? 53.533333f : 64.240005f, 0.0f);
|
|
}
|
|
var_f31 = var_r29->unk_00.unk_6C.x;
|
|
var_f30 = var_r29->unk_00.unk_6C.z;
|
|
sp1C8 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
|
|
if (sp1C8 == 0.0f) {
|
|
var_f31 = 0.0f;
|
|
var_f30 = -1.0f;
|
|
}
|
|
else {
|
|
var_f31 /= sp1C8;
|
|
var_f30 /= sp1C8;
|
|
}
|
|
var_r29->unk_00.unk_84.x = 72.0f * var_f31 / 4;
|
|
var_r29->unk_00.unk_84.z = 72.0f * var_f30 / 4;
|
|
var_r29->unk_00.unk_6C.x += var_r29->unk_00.unk_84.x;
|
|
var_r29->unk_00.unk_6C.z += var_r29->unk_00.unk_84.z;
|
|
var_r29->unk_00.unk_9C = fn_1_1E20(var_r29->unk_00.unk_9C, atan2d(var_r29->unk_00.unk_84.x, var_r29->unk_00.unk_84.z), 0.4f);
|
|
}
|
|
break;
|
|
default:
|
|
OSReport("*** player mode error(%d)!!\n", var_r31->unk_118);
|
|
break;
|
|
}
|
|
if ((var_r31->unk_118 >= 0x7E9) && (var_r31->unk_118 <= 0x7EA)) {
|
|
fn_1_1C060(var_r31);
|
|
}
|
|
if (1495.0f > var_r31->unk_00.unk_6C.y) {
|
|
for (var_r25 = 0; var_r25 < 1; var_r25++) {
|
|
Hu3DModelShadowDispOff(var_r30->model[var_r25]);
|
|
}
|
|
}
|
|
else {
|
|
for (var_r25 = 0; var_r25 < 1; var_r25++) {
|
|
Hu3DModelShadowDispOn(var_r30->model[var_r25]);
|
|
}
|
|
}
|
|
omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z);
|
|
omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f);
|
|
}
|
|
|
|
void fn_1_23330(omObjData *object)
|
|
{
|
|
Vec sp8;
|
|
UnkM450Struct5 *var_r31;
|
|
s32 var_r29;
|
|
s32 var_r27;
|
|
s32 var_r26;
|
|
|
|
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct5), MEMORY_DEFAULT_NUM);
|
|
var_r31 = object->data;
|
|
var_r31->unk_FC = 0;
|
|
var_r31->unk_11C = GWPlayerCfg[lbl_1_bss_120].character;
|
|
var_r31->unk_120 = GWPlayerCfg[lbl_1_bss_120].pad_idx;
|
|
var_r31->unk_118 = 0x7D0;
|
|
var_r31->unk_C8 = 0.0f;
|
|
var_r31->unk_CC = 0.0f;
|
|
sp8.x = 0.0f;
|
|
sp8.y = 4000.0f;
|
|
sp8.z = 0.0f;
|
|
var_r26 = var_r31->unk_11C;
|
|
var_r27 = lbl_1_bss_120;
|
|
fn_1_2C1C(&var_r31->unk_00, object, var_r27, var_r26, lbl_1_data_92C, 0, &sp8, 0.0f);
|
|
var_r31->unk_00.unk_04 = fn_1_19C18;
|
|
var_r31->unk_00.unk_0C = fn_1_19CE0;
|
|
var_r31->unk_00.unk_10 = fn_1_1A014;
|
|
object->model[0] = CharModelCreate(lbl_1_data_0[var_r31->unk_11C], 2);
|
|
CharModelStepTypeSet(lbl_1_data_0[var_r31->unk_11C], 0);
|
|
for (var_r29 = 0; var_r29 < 0x17; var_r29++) {
|
|
object->motion[var_r29] = CharModelMotionCreate(lbl_1_data_0[var_r31->unk_11C], lbl_1_data_64C[var_r31->unk_11C][var_r29]);
|
|
CharModelMotionSet(lbl_1_data_0[var_r31->unk_11C], object->motion[var_r29]);
|
|
}
|
|
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP);
|
|
Hu3DModelLayerSet(object->model[0], 2);
|
|
Hu3DMotionSet(object->model[0], *object->motion);
|
|
omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z);
|
|
omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f);
|
|
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
|
|
CharModelLayerSetAll2(6);
|
|
CharModelMotionDataClose(lbl_1_data_0[var_r31->unk_11C]);
|
|
object->func = fn_1_20170;
|
|
}
|
|
|
|
void fn_1_23770(omObjData *object, s32 arg1)
|
|
{
|
|
lbl_1_bss_108 = 1;
|
|
lbl_1_bss_128 += 1.0f;
|
|
if ((fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) && (MGSeqStatGet(lbl_1_bss_2FE) == 0)) {
|
|
lbl_1_bss_2FE = -1;
|
|
object->work[0] += 1;
|
|
fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C);
|
|
fn_1_12540(0);
|
|
if (lbl_1_bss_118 == 5) {
|
|
fn_1_12540(1);
|
|
}
|
|
}
|
|
if ((arg1 >= 0) && (lbl_1_bss_2F8 < 0) && ((MGSeqStatGet(lbl_1_bss_2FE) & 0x10) != 0)) {
|
|
fn_1_1F24(arg1);
|
|
}
|
|
}
|
|
|
|
void fn_1_23CA0(omObjData *arg0, float arg8, float arg9)
|
|
{
|
|
lbl_1_bss_108 = 0;
|
|
lbl_1_bss_110 = 0;
|
|
if (lbl_1_bss_2FE < 0) {
|
|
nMap = 0;
|
|
fn_1_14C28();
|
|
MGSeqParamSet(lbl_1_bss_2FC, 2, -1);
|
|
lbl_1_bss_128 = 0.0f;
|
|
lbl_1_bss_2FC = -1;
|
|
lbl_1_bss_2FE = MGSeqCreate(3, 1);
|
|
return;
|
|
}
|
|
lbl_1_bss_128 += 1.0f;
|
|
if (lbl_1_bss_118 < 5) {
|
|
fn_1_1A21C(arg8, 1500.0f);
|
|
}
|
|
else {
|
|
fn_1_1A3F0();
|
|
}
|
|
fn_1_13DC(lbl_1_bss_128 / arg9, &lbl_1_data_470);
|
|
|
|
if ((arg9 < lbl_1_bss_128) && (MGSeqStatGet(lbl_1_bss_2FE) == 0)) {
|
|
arg0->work[0] += 1;
|
|
lbl_1_bss_128 = 0.0f;
|
|
lbl_1_bss_124 = 0.0f;
|
|
lbl_1_bss_2FE = -1;
|
|
fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C);
|
|
}
|
|
}
|
|
|
|
void fn_1_24620(omObjData *var_r31)
|
|
{
|
|
Vec sp280;
|
|
s32 sp120;
|
|
s32 sp11C;
|
|
CameraData *sp118;
|
|
float var_f31;
|
|
UnkData1380Struct *var_r30;
|
|
|
|
if (omSysExitReq != 0) {
|
|
fn_1_1F58(0x64);
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
|
|
var_r31->func = fn_1_298EC;
|
|
}
|
|
lbl_1_bss_308++;
|
|
switch (var_r31->work[0]) {
|
|
case 0x3E8:
|
|
if (lbl_1_bss_2FE < 0) {
|
|
fn_1_1F58(0x64);
|
|
MGSeqParamSet(lbl_1_bss_2FC, 2, -1);
|
|
lbl_1_bss_2FC = -1;
|
|
lbl_1_bss_2FE = MGSeqCreate(3, 1);
|
|
lbl_1_bss_1C = -1;
|
|
}
|
|
else {
|
|
lbl_1_bss_128 += 1.0f;
|
|
sp11C = 0;
|
|
if (lbl_1_bss_1C < 0) {
|
|
if (120.0f < lbl_1_bss_128) {
|
|
lbl_1_bss_1C = HuAudSStreamPlay(3);
|
|
}
|
|
}
|
|
else if (HuAudSStreamStatGet(lbl_1_bss_1C) == 0) {
|
|
sp11C = 1;
|
|
}
|
|
if ((sp11C != 0) || (1200.0f < lbl_1_bss_128)) {
|
|
fn_1_1F58(0x64);
|
|
lbl_1_bss_2FE = -1;
|
|
WipeColorSet(0, 0, 0);
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
|
|
var_r31->func = fn_1_298EC;
|
|
}
|
|
}
|
|
break;
|
|
case 0x3E9:
|
|
lbl_1_bss_128 += 1.0f;
|
|
if (60.0f < lbl_1_bss_128) {
|
|
var_r31->work[0] += 1;
|
|
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
|
|
HuAudFXPlay(0x7B2);
|
|
}
|
|
break;
|
|
case 0x3EA:
|
|
if (WipeStatGet() == 0) {
|
|
var_r31->work[0] += 1;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
break;
|
|
case 0x3EB:
|
|
lbl_1_bss_128 += 1.0f;
|
|
if (120.0f < lbl_1_bss_128) {
|
|
var_r31->work[0] += 1;
|
|
lbl_1_bss_128 = 0.0f;
|
|
lbl_1_bss_324 = lbl_1_data_488;
|
|
lbl_1_bss_30C = lbl_1_data_494;
|
|
fn_1_1F24(0x41);
|
|
}
|
|
break;
|
|
case 0x3EC:
|
|
lbl_1_bss_128 += 1.0f;
|
|
if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) {
|
|
var_r31->work[0] += 1;
|
|
lbl_1_bss_128 = 0;
|
|
fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C);
|
|
lbl_1_bss_324 = lbl_1_data_4A0;
|
|
lbl_1_bss_30C = lbl_1_data_4AC;
|
|
}
|
|
break;
|
|
case 0x3ED:
|
|
if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7D3) {
|
|
lbl_1_bss_128 += 1.0f;
|
|
if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) {
|
|
var_r31->work[0] += 1;
|
|
fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C);
|
|
fn_1_6CB0(fn_1_8500, 0);
|
|
}
|
|
}
|
|
break;
|
|
case 0x3EE:
|
|
case 0x3F1:
|
|
case 0x3F8:
|
|
case 0x401:
|
|
case 0x40A:
|
|
case 0x413:
|
|
if (lbl_1_bss_10 == 0) {
|
|
var_r31->work[0] += 1;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
break;
|
|
case 0x3EF:
|
|
lbl_1_bss_128 += 1.0f;
|
|
if (120.0f < lbl_1_bss_128) {
|
|
fn_1_1A060();
|
|
fn_1_1710((lbl_1_bss_128 - 120.0f) / 240.0f, &lbl_1_data_470);
|
|
}
|
|
break;
|
|
case 0x3F0:
|
|
lbl_1_bss_128 += 1.0f;
|
|
if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) {
|
|
var_r31->work[0] += 1;
|
|
fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C);
|
|
fn_1_6CB0(fn_1_8BDC, 1);
|
|
}
|
|
if (fn_1_13B90(1) != 0) {
|
|
fn_1_1F58(0x3E8);
|
|
}
|
|
break;
|
|
case 0x3F2:
|
|
if (lbl_1_bss_2FE < 0) {
|
|
lbl_1_bss_128 = 0.0f;
|
|
lbl_1_bss_2FE = MGSeqCreate(3, 0);
|
|
fn_1_14BC8(&lbl_1_data_A80[0], 9);
|
|
fn_1_13BC4(1);
|
|
fn_1_1A060();
|
|
}
|
|
else {
|
|
fn_1_23770(var_r31, 0x40);
|
|
}
|
|
break;
|
|
case 0x3F3:
|
|
case 0x3FB:
|
|
case 0x405:
|
|
case 0x40D:
|
|
case 0x415:
|
|
if (lbl_1_bss_2FC >= 0) {
|
|
MGSeqParamSet(lbl_1_bss_2FC, 1, (lbl_1_bss_304 + REFRESH_RATE - 1) / REFRESH_RATE);
|
|
}
|
|
else {
|
|
sp120 = 0;
|
|
if ((lbl_1_bss_118 == 2) || (lbl_1_bss_118 == 4) || (lbl_1_bss_118 == 5)) {
|
|
if (lbl_1_bss_304 < 30 * REFRESH_RATE) {
|
|
sp120 = 1;
|
|
}
|
|
}
|
|
else {
|
|
sp120 = 1;
|
|
}
|
|
if (sp120 != 0) {
|
|
lbl_1_bss_2FC = MGSeqCreate(1, lbl_1_bss_304 / REFRESH_RATE, -1, -1);
|
|
}
|
|
}
|
|
lbl_1_bss_304--;
|
|
if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7EB) {
|
|
var_r31->work[0] = 0x3E8;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
break;
|
|
case 0x3F4:
|
|
fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE);
|
|
break;
|
|
case 0x3F5:
|
|
lbl_1_bss_128 += 1.0f;
|
|
fn_1_1A21C(270.0f, 0.0f);
|
|
fn_1_13DC(1.0f, &lbl_1_data_470);
|
|
break;
|
|
case 0x3F6:
|
|
lbl_1_bss_128 += 1.0f;
|
|
if (90.0f < lbl_1_bss_128) {
|
|
var_r31->work[0] += 1;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C);
|
|
lbl_1_bss_20 = -1;
|
|
break;
|
|
case 0x3F7:
|
|
if (lbl_1_bss_20 < 0) {
|
|
lbl_1_bss_20 = HuAudFXPlay(0x7B1);
|
|
}
|
|
omVibrate(lbl_1_bss_120, 0xC, 6, 6);
|
|
lbl_1_bss_128 += 1.0f;
|
|
Hu3DModelPosSet(lbl_1_bss_1A0->model[6], 0.0f, -(2.0f * lbl_1_bss_128), 0.0f);
|
|
if (2 * REFRESH_RATE < lbl_1_bss_128) {
|
|
var_r31->work[0] += 1;
|
|
fn_1_6CB0(fn_1_9074, 2);
|
|
HuAudFXPlay(0x7BB);
|
|
}
|
|
break;
|
|
case 0x3F9:
|
|
break;
|
|
case 0x3FA:
|
|
if (lbl_1_bss_2FE < 0) {
|
|
lbl_1_bss_128 = 0.0f;
|
|
lbl_1_bss_2FE = MGSeqCreate(3, 0);
|
|
fn_1_13BC4(2);
|
|
fn_1_1A21C(270.0f, 0.0f);
|
|
}
|
|
else {
|
|
fn_1_23770(var_r31, -1);
|
|
}
|
|
break;
|
|
case 0x3FC:
|
|
var_f31 = lbl_1_bss_128 / (2 * REFRESH_RATE);
|
|
if (1.0f < var_f31) {
|
|
var_f31 = 1.0f;
|
|
}
|
|
var_r30 = &lbl_1_data_1380;
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[5], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelRotSet(lbl_1_bss_1A0->model[5], 0.0f, 90.0f, 0.0f);
|
|
Hu3DModelPosSet(lbl_1_bss_1A0->model[5], var_r30->unk_30[3].x, var_r30->unk_30[3].y, var_r30->unk_30[3].z);
|
|
Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[5], var_f31);
|
|
fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE);
|
|
break;
|
|
case 0x3FD:
|
|
case 0x3FE:
|
|
case 0x3FF:
|
|
lbl_1_bss_124 += 1.0f;
|
|
fn_1_1A21C(270.0f, 0.0f);
|
|
fn_1_1710(lbl_1_bss_124 / 120.0f, &lbl_1_data_470);
|
|
lbl_1_bss_20 = -1;
|
|
break;
|
|
case 0x400:
|
|
lbl_1_bss_124 += 1.0f;
|
|
fn_1_1A21C(270.0f, 0.0f);
|
|
fn_1_1710(lbl_1_bss_124 / 120.0f, &lbl_1_data_470);
|
|
if (lbl_1_bss_20 < 0) {
|
|
lbl_1_bss_20 = HuAudFXPlay(0x7B1);
|
|
}
|
|
omVibrate(lbl_1_bss_120, 0xC, 6, 6);
|
|
lbl_1_bss_128 += 1.0f;
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[7], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelPosSet(lbl_1_bss_1A0->model[7], 0.0f, -(60.0f - (lbl_1_bss_128 / 2)), 0.0f);
|
|
if (120.0f < lbl_1_bss_128) {
|
|
var_r31->work[0] += 1;
|
|
lbl_1_bss_128 = 0;
|
|
fn_1_6CB0(fn_1_96C0, -1);
|
|
fn_1_139B0(&lbl_1_data_1380, 5);
|
|
fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C);
|
|
HuAudFXPlay(0x7BB);
|
|
}
|
|
break;
|
|
case 0x402:
|
|
lbl_1_bss_128 += 1.0f;
|
|
fn_1_1A21C(270.0f, 0.0f);
|
|
fn_1_13DC(1.0f, &lbl_1_data_470);
|
|
break;
|
|
case 0x403:
|
|
fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C);
|
|
break;
|
|
case 0x404:
|
|
if (lbl_1_bss_2FE < 0) {
|
|
lbl_1_bss_128 = 0.0f;
|
|
lbl_1_bss_2FE = MGSeqCreate(3, 0);
|
|
fn_1_14BC8(&lbl_1_data_C58[0], 10);
|
|
fn_1_13BC4(3);
|
|
fn_1_1A21C(270.0f, 0.0f);
|
|
}
|
|
else {
|
|
fn_1_23770(var_r31, -1);
|
|
}
|
|
break;
|
|
case 0x406:
|
|
fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE);
|
|
break;
|
|
case 0x407:
|
|
lbl_1_bss_128 += 1.0f;
|
|
fn_1_1A21C(270.0f, 0.0f);
|
|
fn_1_13DC(1.0f, &lbl_1_data_470);
|
|
break;
|
|
case 0x408:
|
|
lbl_1_bss_128 += 1.0f;
|
|
if (90.0f < lbl_1_bss_128) {
|
|
var_r31->work[0] += 1;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C);
|
|
lbl_1_bss_20 = -1;
|
|
break;
|
|
case 0x409:
|
|
if (lbl_1_bss_20 < 0) {
|
|
lbl_1_bss_20 = HuAudFXPlay(0x7B1);
|
|
}
|
|
omVibrate(lbl_1_bss_120, 0xC, 6, 6);
|
|
lbl_1_bss_128 += 1.0f;
|
|
Hu3DModelPosSet(lbl_1_bss_1A0->model[17], 0.0f, -(2.0f * lbl_1_bss_128), 0.0f);
|
|
if (2 * REFRESH_RATE < lbl_1_bss_128) {
|
|
var_r31->work[0] += 1;
|
|
fn_1_6CB0(fn_1_9824, 4);
|
|
HuAudFXPlay(0x7BB);
|
|
}
|
|
break;
|
|
case 0x40B:
|
|
break;
|
|
case 0x40C:
|
|
if (lbl_1_bss_2FE < 0) {
|
|
lbl_1_bss_128 = 0.0f;
|
|
lbl_1_bss_2FE = MGSeqCreate(3, 0);
|
|
fn_1_13BC4(4);
|
|
fn_1_1A21C(270.0f, 0.0f);
|
|
}
|
|
else {
|
|
fn_1_23770(var_r31, -1);
|
|
}
|
|
break;
|
|
case 0x40E:
|
|
var_f31 = lbl_1_bss_128 / (2 * REFRESH_RATE);
|
|
if (1.0f < var_f31) {
|
|
var_f31 = 1.0f;
|
|
}
|
|
var_r30 = &lbl_1_data_13B8;
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[16], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelRotSet(lbl_1_bss_1A0->model[16], 0.0f, -90.0f, 0.0f);
|
|
Hu3DModelPosSet(lbl_1_bss_1A0->model[16], var_r30->unk_30[8].x, var_r30->unk_30[8].y, var_r30->unk_30[8].z);
|
|
Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[16], var_f31);
|
|
fn_1_23CA0(var_r31, 270.0f, 2 * REFRESH_RATE);
|
|
break;
|
|
case 0x40F:
|
|
lbl_1_bss_20 = -1;
|
|
break;
|
|
case 0x410:
|
|
if (lbl_1_bss_20 < 0) {
|
|
lbl_1_bss_20 = HuAudFXPlay(0x7B1);
|
|
}
|
|
omVibrate(lbl_1_bss_120, 0xC, 6, 6);
|
|
lbl_1_bss_128 += 1.0f;
|
|
if (120.0f <= lbl_1_bss_128) {
|
|
lbl_1_bss_128 = 120.0f;
|
|
}
|
|
Hu3DModelAttrReset(lbl_1_bss_1A0->model[18], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelPosSet(lbl_1_bss_1A0->model[18], 0.0f, -(60.0f - (lbl_1_bss_128 / 2)), 0.0f);
|
|
fn_1_1A21C(0.0f, 0.0f);
|
|
fn_1_1710(lbl_1_bss_128 / 120.0f, &lbl_1_data_470);
|
|
break;
|
|
case 0x411:
|
|
if (lbl_1_bss_20 >= 0) {
|
|
lbl_1_bss_20 = -1;
|
|
HuAudFXPlay(0x7BB);
|
|
}
|
|
lbl_1_bss_128 += 1.0f;
|
|
fn_1_1A060();
|
|
fn_1_13DC(1.0f, &lbl_1_data_470);
|
|
break;
|
|
case 0x412:
|
|
lbl_1_bss_128 += 1.0f;
|
|
if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) {
|
|
var_r31->work[0] += 1;
|
|
fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C);
|
|
fn_1_6CB0(fn_1_9BA4, 5);
|
|
Hu3DModelAttrSet(lbl_1_bss_1A0->model[19], HU3D_ATTR_DISPOFF);
|
|
}
|
|
break;
|
|
case 0x414:
|
|
if (lbl_1_bss_2FE < 0) {
|
|
lbl_1_bss_128 = 0.0f;
|
|
lbl_1_bss_2FE = MGSeqCreate(3, 0);
|
|
fn_1_13BC4(5);
|
|
fn_1_1A21C(0.0f, 2000.0f);
|
|
fn_1_1F24(0x42);
|
|
}
|
|
else {
|
|
fn_1_23770(var_r31, -1);
|
|
}
|
|
break;
|
|
case 0x416:
|
|
lbl_1_bss_128 += 1.0f;
|
|
break;
|
|
case 0x417:
|
|
fn_1_23CA0(var_r31, 0.0f, 2 * REFRESH_RATE);
|
|
break;
|
|
case 0x418:
|
|
lbl_1_bss_128 += 1.0f;
|
|
sp11C = 0;
|
|
if (HuAudSStreamStatGet(lbl_1_bss_18) == 0) {
|
|
sp11C = 1;
|
|
}
|
|
if ((sp11C != 0) || (1200.0f < lbl_1_bss_128)) {
|
|
fn_1_1F58(0x64);
|
|
lbl_1_bss_2FE = -1;
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
|
|
var_r31->func = fn_1_298EC;
|
|
}
|
|
break;
|
|
default:
|
|
OSReport("*** main mode error(%d)!!\n", var_r31->work[0]);
|
|
break;
|
|
}
|
|
|
|
sp118 = Hu3DCamera;
|
|
VECSubtract(&sp118->target, &sp118->pos, &sp280);
|
|
VECNormalize(&sp280, &sp280);
|
|
HuAudFXListnerUpdate(&sp118->pos, &sp280);
|
|
lbl_1_bss_D8 = 0;
|
|
lbl_1_bss_CC.x = 0.0f;
|
|
lbl_1_bss_CC.y = 0.0f;
|
|
lbl_1_bss_CC.z = 0.0f;
|
|
}
|
|
|
|
void ObjectSetup(void)
|
|
{
|
|
Vec sp14;
|
|
Vec sp8;
|
|
s32 var_r31;
|
|
s32 var_r29;
|
|
omObjData *var_r28;
|
|
s32 var_r27;
|
|
|
|
OSReport("******* M450 ObjectSetup *********\n");
|
|
lbl_1_bss_33C = omInitObjMan(0x3E8, 0x2000);
|
|
omGameSysInit(lbl_1_bss_33C);
|
|
nMap = 0;
|
|
nChar = 0;
|
|
lbl_1_bss_120 = 0;
|
|
lbl_1_bss_11C = -1;
|
|
lbl_1_bss_118 = 0;
|
|
lbl_1_bss_110 = 0;
|
|
lbl_1_bss_10C = 0;
|
|
lbl_1_bss_108 = 0;
|
|
lbl_1_bss_308 = 0;
|
|
lbl_1_bss_2FE = -1;
|
|
lbl_1_bss_2FC = -1;
|
|
lbl_1_bss_2F8 = -1;
|
|
lbl_1_bss_1C = -1;
|
|
lbl_1_bss_18 = -1;
|
|
lbl_1_bss_D8 = 0;
|
|
lbl_1_bss_F8 = -1;
|
|
lbl_1_bss_FC = NULL;
|
|
lbl_1_bss_C4 = -1;
|
|
fn_1_1C6E4();
|
|
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
|
Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 30000.0f, 1.2f);
|
|
fn_1_1350(&lbl_1_data_464, &lbl_1_data_470, &lbl_1_data_47C);
|
|
VECSubtract(&lbl_1_data_47C, &lbl_1_data_464, &sp8);
|
|
VECNormalize(&sp8, &sp8);
|
|
HuAudFXListnerSetEX(&lbl_1_data_464, &sp8, 5800.0, 1000.0, 100.0, 300.0, 300.0);
|
|
var_r27 = Hu3DGLightCreateV(&lbl_1_data_4E8, &lbl_1_data_4F4, &lbl_1_data_500);
|
|
Hu3DGLightStaticSet(var_r27, 1);
|
|
Hu3DGLightInfinitytSet(var_r27);
|
|
Hu3DShadowCreate(30.0f, 20.0f, 30000.0f);
|
|
Hu3DShadowTPLvlSet(0.5f);
|
|
VECNormalize(&lbl_1_data_504, &sp14);
|
|
Hu3DShadowPosSet(&lbl_1_data_504, &sp14, &lbl_1_data_510);
|
|
fn_1_6C68(lbl_1_bss_120);
|
|
lbl_1_bss_14 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M450, 0x63), 0x10000000));
|
|
HuSprAnimLock(lbl_1_bss_14);
|
|
fn_1_12234();
|
|
for (var_r29 = 0; var_r29 < 0x20; var_r29++) {
|
|
lbl_1_bss_1B0[var_r29].unk00 = 0;
|
|
lbl_1_bss_1B0[var_r29].unk04 = -1;
|
|
}
|
|
lbl_1_bss_1A0 = omAddObjEx(lbl_1_bss_33C, 0x64, 0x21, 0, -1, fn_1_15308);
|
|
for (var_r31 = 0; var_r31 < 0x17; var_r31++) {
|
|
lbl_1_bss_144[var_r31] = omAddObjEx(lbl_1_bss_33C, 0x65, 1, 0, -1, fn_1_12D7C);
|
|
lbl_1_bss_144[var_r31]->work[0] = var_r31;
|
|
}
|
|
omMakeGroupEx(lbl_1_bss_33C, 0, 1);
|
|
lbl_1_bss_140 = omGetGroupMemberListEx(lbl_1_bss_33C, 0);
|
|
for (var_r31 = 0; var_r31 < 1; var_r31++) {
|
|
var_r28 = omAddObjEx(lbl_1_bss_33C, 0x66, 1, 0, 0, fn_1_1291C);
|
|
}
|
|
omMakeGroupEx(lbl_1_bss_33C, 1, 0xA);
|
|
lbl_1_bss_13C = omGetGroupMemberListEx(lbl_1_bss_33C, 1);
|
|
for (var_r31 = 0; var_r31 < 0xA; var_r31++) {
|
|
var_r28 = omAddObjEx(lbl_1_bss_33C, 0x67, 1, 0, 1, fn_1_12B80);
|
|
}
|
|
fn_1_2C00(NULL, 1505.0f);
|
|
lbl_1_bss_138 = omAddObjEx(lbl_1_bss_33C, 0x6D, 1, 0x17, -1, fn_1_23330);
|
|
lbl_1_bss_134 = omAddObjEx(lbl_1_bss_33C, 0x68, 2, 0x13, -1, fn_1_DBF0);
|
|
omMakeGroupEx(lbl_1_bss_33C, 2, 2);
|
|
lbl_1_bss_130 = omGetGroupMemberListEx(lbl_1_bss_33C, 2);
|
|
for (var_r31 = 0; var_r31 < 2; var_r31++) {
|
|
var_r28 = omAddObjEx(lbl_1_bss_33C, 0x69, 5, 0xF, 2, fn_1_11D5C);
|
|
var_r28->work[0] = var_r31;
|
|
}
|
|
lbl_1_bss_358.unk04 = NULL;
|
|
lbl_1_bss_358.unk08 = NULL;
|
|
for (var_r31 = 0; var_r31 < 4; var_r31++) {
|
|
lbl_1_bss_2C[var_r31] = Hu3DModelCreateFile(lbl_1_data_F5C[var_r31]);
|
|
Hu3DModelAttrSet(lbl_1_bss_2C[var_r31], HU3D_ATTR_DISPOFF);
|
|
Hu3DModelAttrSet(lbl_1_bss_2C[var_r31], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
|
}
|
|
lbl_1_bss_28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M450, 0x6C));
|
|
HuSprAnimLock(lbl_1_bss_28);
|
|
lbl_1_bss_24 = Hu3DParManCreate(lbl_1_bss_28, 0x14, &lbl_1_data_1504);
|
|
Hu3DParManAttrSet(lbl_1_bss_24, 1);
|
|
lbl_1_bss_1A4 = omAddObjEx(lbl_1_bss_33C, 0x6E, 0, 0, -1, fn_1_24620);
|
|
lbl_1_bss_1A4->work[0] = 0x3E9;
|
|
lbl_1_bss_128 = 0.0f;
|
|
}
|
|
|
|
void fn_1_298EC(omObjData *object)
|
|
{
|
|
s32 var_r31;
|
|
|
|
if (WipeStatGet() == 0) {
|
|
if (lbl_1_bss_2FE >= 0) {
|
|
MGSeqKill(lbl_1_bss_2FE);
|
|
}
|
|
if (lbl_1_bss_2FC >= 0) {
|
|
MGSeqKill(lbl_1_bss_2FC);
|
|
}
|
|
MGSeqKillAll();
|
|
HuAudAllStop();
|
|
for (var_r31 = 0; var_r31 < 4; var_r31++) {
|
|
CharModelKill(lbl_1_data_0[GWPlayerCfg[var_r31].character]);
|
|
}
|
|
omOvlReturnEx(1, 1);
|
|
}
|
|
}
|