marioparty4/src/REL/m432Dll/main.c
2024-11-10 06:53:52 +01:00

3775 lines
126 KiB
C

#include "REL/executor.h"
#include "dolphin/types.h"
#include "game/chrman.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 "string.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_5D0_struct {
/* 0x00 */ u16 unk00;
/* 0x02 */ s16 unk02;
/* 0x04 */ struct unk_bss_5D0_struct *unk04;
/* 0x08 */ struct unk_bss_5D0_struct *unk08;
} UnkBss5D0Struct; // Size 0xC
typedef struct unk_bss_5B8_struct {
/* 0x00 */ HsfanimStruct00 *unk00;
/* 0x04 */ s32 *unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
/* 0x10 */ struct unk_bss_5B8_struct *unk10;
/* 0x14 */ struct unk_bss_5B8_struct *unk14;
} UnkBss5B8Struct; // Size 0x18
typedef struct {
/* 0x00 */ u32 unk00;
/* 0x04 */ s16 unk04;
} UnkBss428Struct; // Size 8
UnkBss5D0Struct lbl_1_bss_5D0;
UnkBss5B8Struct lbl_1_bss_5B8;
Process *lbl_1_bss_5B4;
Vec lbl_1_bss_5A8;
Vec lbl_1_bss_59C;
Vec lbl_1_bss_590;
Vec lbl_1_bss_584;
u32 lbl_1_bss_580;
s32 lbl_1_bss_57C;
u32 lbl_1_bss_578; // TODO maybe array?
s16 lbl_1_bss_576;
s16 lbl_1_bss_574;
s32 lbl_1_bss_570;
s32 lbl_1_bss_56C;
float lbl_1_bss_568;
s32 lbl_1_bss_528[16];
UnkBss428Struct lbl_1_bss_428[32];
void fn_1_0(void)
{
lbl_1_bss_5D0.unk04 = NULL;
lbl_1_bss_5D0.unk08 = NULL;
}
void fn_1_24(u16 arg0, s16 arg1)
{
UnkBss5D0Struct *temp_r31;
UnkBss5D0Struct *temp_r30;
UnkBss5D0Struct *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_5D0;
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)
{
UnkBss5D0Struct *var_r31;
UnkBss5D0Struct *temp_r29;
UnkBss5D0Struct *temp_r30;
s16 temp_r28;
var_r31 = lbl_1_bss_5D0.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_5B8.unk10 = NULL;
lbl_1_bss_5B8.unk14 = NULL;
}
void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6)
{
UnkBss5B8Struct *temp_r27;
UnkBss5B8Struct *var_r31;
UnkBss5B8Struct *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_5B8;
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)
{
UnkBss5B8Struct *var_r31;
UnkBss5B8Struct *temp_r28;
UnkBss5B8Struct *temp_r29;
s32 i;
var_r31 = lbl_1_bss_5B8.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_428[i].unk00 = 0;
lbl_1_bss_428[i].unk04 = -1;
}
}
s16 fn_1_46C(s32 arg0)
{
s32 i;
for (i = 0; i < 32; i++) {
if (arg0 == lbl_1_bss_428[i].unk00) {
return Hu3DModelLink(lbl_1_bss_428[i].unk04);
}
}
for (i = 0; i < 32; i++) {
if (lbl_1_bss_428[i].unk00 == 0) {
lbl_1_bss_428[i].unk00 = arg0;
lbl_1_bss_428[i].unk04 = Hu3DModelCreateFile(arg0);
return lbl_1_bss_428[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 (36000 <= arg2) {
arg2 = 35999;
}
var_r30 = arg2 / 3600;
arg2 -= var_r30 * 3600;
if (var_r30 > 9) {
var_r30 = 9;
}
espBankSet(arg0[arg1], var_r30);
var_r30 = arg2 / 60;
arg2 -= var_r30 * 60;
espBankSet(arg0[arg1 + 2], var_r30 / 10);
espBankSet(arg0[arg1 + 3], var_r30 % 10);
var_r30 = 101.5f * arg2 / 60.0f;
espBankSet(arg0[arg1 + 5], var_r30 / 10);
espBankSet(arg0[arg1 + 6], var_r30 % 10);
}
void fn_1_798(s32 arg0)
{
lbl_1_bss_568 = 0.0f;
lbl_1_bss_578 = lbl_1_bss_57C;
GWMGRecordSet(arg0, lbl_1_bss_578);
fn_1_580(lbl_1_bss_528, 7, lbl_1_bss_57C);
}
void fn_1_9EC(void)
{
s32 i;
for (i = 0; i < 16; i++) {
espDispOn(lbl_1_bss_528[i]);
}
}
void fn_1_A40(void)
{
float temp_f31;
s32 i;
if (0.0f <= lbl_1_bss_568) {
lbl_1_bss_568 += 16.0f;
temp_f31 = 1.0 + 0.2f * sind(lbl_1_bss_568);
for (i = 7; i <= 14; i++) {
espScaleSet(lbl_1_bss_528[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_528[15] = espEntry(arg1, 0, 0);
espTPLvlSet(lbl_1_bss_528[15], 0.5f);
espColorSet(lbl_1_bss_528[15], 0, 0, 0);
espPosSet(lbl_1_bss_528[15], temp_f31, temp_f30);
temp_f31 = 248.0f;
temp_f30 = arg0 - 8.0f;
lbl_1_bss_528[14] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 55), 0, 0);
espPosSet(lbl_1_bss_528[14], temp_f31 - 18.0f, temp_f30);
for (i = 7; i <= 13; i++) {
lbl_1_bss_528[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 48), 0, 0);
espPosSet(lbl_1_bss_528[i], temp_f31, temp_f30);
temp_f31 += 16.0f;
}
fn_1_580(lbl_1_bss_528, 7, lbl_1_bss_578);
temp_f31 = 248.0f;
temp_f30 = arg0 + 8.0f;
for (i = 0; i <= 6; i++) {
lbl_1_bss_528[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 49), 0, 0);
espPosSet(lbl_1_bss_528[i], temp_f31, temp_f30);
temp_f31 += 16.0f;
}
fn_1_580(lbl_1_bss_528, 0, 0);
for (i = 0; i < 16; i++) {
espDrawNoSet(lbl_1_bss_528[i], 0);
espDispOff(lbl_1_bss_528[i]);
espAttrSet(lbl_1_bss_528[i], HUSPR_ATTR_NOANIM);
espPriSet(lbl_1_bss_528[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_5A8 = *arg0;
lbl_1_bss_590 = *arg2;
}
s32 fn_1_13DC(float arg0, Vec *arg1)
{
Vec sp18;
Vec spC;
fn_1_11F4(arg0, &lbl_1_bss_5A8, &lbl_1_bss_59C, &sp18);
fn_1_11F4(arg0, &lbl_1_bss_590, &lbl_1_bss_584, &spC);
Hu3DCameraPosSetV(1, &sp18, arg1, &spC);
if (1.0f <= arg0) {
return 1;
}
else {
lbl_1_bss_56C = 1;
return 0;
}
}
void fn_1_1710(float arg0, Vec *arg1)
{
Vec sp18;
Vec spC;
fn_1_11F4(arg0, &lbl_1_bss_5A8, &lbl_1_bss_59C, &sp18);
fn_1_11F4(arg0, &lbl_1_bss_590, &lbl_1_bss_584, &spC);
fn_1_1350(&sp18, arg1, &spC);
lbl_1_bss_56C = 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_570 = HuAudSeqPlay(arg0);
}
void fn_1_1F58(s32 arg0)
{
if (lbl_1_bss_570 >= 0) {
if (arg0 < 0) {
arg0 = 1000;
}
HuAudSeqFadeOut(lbl_1_bss_570, arg0);
}
lbl_1_bss_570 = -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);
}
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,
};
// 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);
PlayerOldFind lbl_1_bss_424;
float lbl_1_bss_420;
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_424 = find;
lbl_1_bss_420 = 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 = 0;
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_424) {
return;
}
addTime = FALSE;
for (i = 0; i < 4; i++) {
WorkPlayerOld *player2 = lbl_1_bss_424(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 = 26.766666f;
}
}
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, 26.766666f, 1);
*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 += 3.65f;
}
}
else {
player->unk_A4 = 0;
}
}
player->unk_84.y += -2.4333334f;
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;
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_420;
}
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;
}
#include "REL/m432data.h"
typedef struct UnkBss0Struct {
/* 0x000 */ omObjData *unk_00;
/* 0x004 */ omObjData *unk_04;
/* 0x008 */ omObjData *unk_08;
/* 0x00C */ omObjData *unk_0C;
/* 0x010 */ UnkM432DllBss0SubStruct *unk_10[2];
/* 0x018 */ s32 unk_18;
/* 0x01C */ Vec unk_1C;
/* 0x028 */ Vec unk_28;
/* 0x034 */ Vec unk_34;
/* 0x040 */ Vec unk_40;
/* 0x04C */ Vec unk_4C;
/* 0x058 */ Vec unk_58;
/* 0x064 */ float unk_64;
/* 0x068 */ float unk_68;
/* 0x06C */ float unk_6C;
/* 0x070 */ float unk_70;
/* 0x074 */ float unk_74;
/* 0x078 */ float unk_78;
/* 0x07C */ float unk_7C;
/* 0x080 */ float unk_80;
/* 0x084 */ float unk_84;
/* 0x088 */ Vec unk_88[4][3];
/* 0x118 */ Vec unk_118;
/* 0x124 */ float unk_124;
/* 0x128 */ float unk_128;
/* 0x12C */ float unk_12C;
/* 0x130 */ Vec unk_130[8];
/* 0x190 */ Vec unk_190;
/* 0x19C */ Vec unk_19C;
/* 0x1A8 */ Vec unk_1A8;
/* 0x1B4 */ s32 unk_1B4;
/* 0x1B8 */ s32 unk_1B8;
/* 0x1BC */ s32 unk_1BC;
/* 0x1C0 */ Vec unk_1C0;
/* 0x1CC */ s32 unk_1CC;
/* 0x1D0 */ s32 unk_1D0;
/* 0x1D4 */ float unk_1D4;
/* 0x1D8 */ s32 unk_1D8;
/* 0x1DC */ float unk_1DC;
/* 0x1E0 */ float unk_1E0;
/* 0x1E4 */ float unk_1E4;
/* 0x1E8 */ float unk_1E8;
/* 0x1EC */ float unk_1EC;
/* 0x1F0 */ float unk_1F0[2];
} UnkBss0Struct; /* size = 0x1F8 */
typedef struct UnkM432DllStruct {
WorkPlayerOld unk_00;
s32 *unk_C4;
UnkM432DllBss0SubStruct *unk_C8;
UnkM432DllData1794Struct *unk_CC;
UnkM432DllBss0SubStruct *unk_D0;
s32 unk_D4[10];
s32 unk_FC;
s32 unk_100;
float unk_104;
float unk_108;
float unk_10C;
float unk_110;
float unk_114;
s32 unk_118[9];
Vec unk_13C;
float unk_148;
float unk_14C;
float unk_150;
float unk_154;
float unk_158;
float unk_15C;
float unk_160;
float unk_164;
s32 unk_168;
s32 unk_16C;
s32 unk_170;
s32 unk_174;
s32 unk_178;
s32 unk_17C;
s32 unk_180;
s32 unk_184;
s32 unk_188;
s32 unk_18C;
s32 unk_190;
s32 unk_194;
} UnkM432DllStruct;
typedef struct UnkM432DllStruct2 {
Vec unk_00;
float unk_0C;
float unk_10;
float unk_14;
float unk_18;
} UnkM432DllStruct2; /* size = 0x1C */
void fn_1_10250(omObjData *object);
void fn_1_153BC(void);
void fn_1_1615C(omObjData *object);
void fn_1_6F28(UnkBss0Struct *arg0);
void fn_1_93BC(UnkM432DllStruct *arg0);
omObjData *lbl_1_bss_41C;
omObjData **lbl_1_bss_418;
omObjData *lbl_1_bss_414;
// data UnkM432DllStruct
omObjData **lbl_1_bss_410;
s32 lbl_1_bss_40C;
AnimData *lbl_1_bss_408;
s16 lbl_1_bss_404;
s16 lbl_1_bss_402;
s16 lbl_1_bss_400;
s32 lbl_1_bss_3FC;
s32 lbl_1_bss_3F8;
s32 lbl_1_bss_3F4;
float lbl_1_bss_3F0;
UnkBss0Struct lbl_1_bss_0[2];
void fn_1_5148(UnkM432DllStruct *arg0)
{
s32 var_r31;
arg0->unk_D0 = 0;
arg0->unk_FC = 0;
arg0->unk_100 = 0;
arg0->unk_10C = 0.0f;
for (var_r31 = 0; var_r31 < 0xA; var_r31++) {
arg0->unk_D4[var_r31] = -1;
}
}
UnkM432DllStruct *fn_1_51A8(s32 arg0)
{
s32 var_r31;
UnkM432DllStruct *var_r30;
for (var_r31 = 0; var_r31 < 4; var_r31++) {
var_r30 = lbl_1_bss_410[var_r31]->data;
if (arg0 == var_r30->unk_184) {
return var_r30;
}
}
return NULL;
}
UnkM432DllBss0SubStruct *fn_1_5208(s32 arg0, UnkM432DllBss0SubStruct *arg1)
{
UnkM432DllBss0SubStruct *var_r31;
s32 var_r30;
s32 var_r29;
for (var_r30 = 0; var_r30 < 2; var_r30++) {
var_r31 = lbl_1_bss_0[arg0].unk_10[var_r30];
for (var_r29 = 0; var_r29 < 0x1F; var_r29++, var_r31++) {
if (strcmp(arg1->unk_04, var_r31->unk_00) == 0) {
return var_r31;
}
}
}
return NULL;
}
inline void fn_1_52B8_inline(Vec *arg0, float arg8, float arg9, float argA)
{
arg0->x = arg8;
arg0->y = arg9;
arg0->z = argA;
}
void fn_1_52B8(UnkM432DllBss0SubStruct *arg0, Vec *arg1)
{
Mtx sp8;
fn_1_52B8_inline(arg1, 0.0f, 0.0f, arg0->unk_1C);
MTXRotRad(sp8, 0x79, 0.017453292f * arg0->unk_18);
MTXMultVec(sp8, arg1, arg1);
VECAdd(&arg0->unk_2C, arg1, arg1);
}
void fn_1_5364(s32 arg0, omObjData *object)
{
if (lbl_1_bss_0[arg0].unk_1D8 >= 0) {
lbl_1_bss_0[arg0].unk_1DC -= 0.016666668f;
if (0.0f >= lbl_1_bss_0[arg0].unk_1DC) {
HuAudFXStop(lbl_1_bss_0[arg0].unk_1D8);
lbl_1_bss_0[arg0].unk_1D8 = -1;
}
else {
HuAudFXPitchSet(lbl_1_bss_0[arg0].unk_1D8, (s32)(8191.0f * lbl_1_bss_0[arg0].unk_1DC));
HuAudFXVolSet(lbl_1_bss_0[arg0].unk_1D8, (s32)(127.0f * lbl_1_bss_0[arg0].unk_1DC));
}
}
lbl_1_bss_0[arg0].unk_88[0][2].x = lbl_1_bss_0[arg0].unk_80;
lbl_1_bss_0[arg0].unk_88[1][2].x = lbl_1_bss_0[arg0].unk_80;
Hu3DModelRotSet(object->model[20], 0.0f, lbl_1_bss_0[arg0].unk_80, 0.0f);
fn_1_1D18(object->model[20], "m432_13-player2A", &lbl_1_bss_0[arg0].unk_88[0][1]);
fn_1_1D18(object->model[20], "m432_13-player2B", &lbl_1_bss_0[arg0].unk_88[1][1]);
lbl_1_bss_0[arg0].unk_88[2][2].x = lbl_1_bss_0[arg0].unk_84;
lbl_1_bss_0[arg0].unk_88[3][2].x = lbl_1_bss_0[arg0].unk_84;
Hu3DModelRotSet(object->model[21], 0.0f, lbl_1_bss_0[arg0].unk_84, 0.0f);
fn_1_1D18(object->model[21], "m432_13-player2C", &lbl_1_bss_0[arg0].unk_88[2][1]);
fn_1_1D18(object->model[21], "m432_13-player2C", &lbl_1_bss_0[arg0].unk_88[3][1]);
}
void fn_1_576C(s32 arg0, omObjData *arg1)
{
float var_f31 = lbl_1_bss_0[arg0].unk_124 * (Hu3DMotionMaxTimeGet(arg1->model[22]) / 1000.0f);
lbl_1_bss_0[arg0].unk_128 += 0.02f * (var_f31 - lbl_1_bss_0[arg0].unk_128);
Hu3DMotionTimeSet(arg1->model[22], lbl_1_bss_0[arg0].unk_128);
}
void fn_1_5848(UnkM432DllStruct *var_r28, UnkM432DllBss0SubStruct *var_r31)
{
s32 sp20;
float var_f31;
float var_f30;
float var_f29;
float var_f28;
s32 var_r30;
s32 var_r27;
UnkM432DllStruct *var_r26;
UnkM432DllBss0SubStruct *var_r25;
UnkBss0Struct *var_r24;
s32 var_r21;
s32 var_r20;
char **var_r19;
u8 *var_r18;
var_r20 = var_r31->unk_1C;
var_r26 = fn_1_51A8(var_r28->unk_184 ^ 1);
var_r24 = &lbl_1_bss_0[var_r28->unk_184 >> 1];
sp20 = var_r24->unk_1B8;
var_r27 = 6;
var_r18 = lbl_1_data_4F0;
var_r19 = lbl_1_data_440;
if ((var_r31->unk_14 & 4) != 0) {
sp20 = var_r24->unk_1BC;
var_r27 = 0xA;
var_r18 = lbl_1_data_504;
var_r19 = lbl_1_data_4C8;
}
var_r30 = frandmod(var_r27 - 1);
for (var_r21 = 0; var_r21 < (var_r27 - 1); var_r21++) {
var_r30 = (var_r30 + 1) % (var_r27 - 1);
if ((var_r20 != var_r30) && (sp20 != var_r30) && (var_r30 != var_r18[var_r20])) {
var_r31->unk_04 = var_r19[var_r30];
var_r25 = fn_1_5208(var_r28->unk_184 >> 1, var_r31);
var_f31 = var_r26->unk_00.unk_6C.x - var_r25->unk_2C.x;
var_f30 = var_r26->unk_00.unk_6C.z - var_r25->unk_2C.z;
if (200.0f < sqrtf((var_f31 * var_f31) + (var_f30 * var_f30))) {
break;
}
}
}
(void)var_r31;
(void)var_r31;
(void)var_r31;
}
void fn_1_5BAC(UnkM432DllStruct *arg0, omObjData *object, UnkM432DllBss0SubStruct *arg2, UnkM432DllBss0SubStruct *arg3)
{
Vec sp14;
Vec sp8;
float var_f31;
var_f31 = arg2->unk_20.y;
if (25.0f <= arg3->unk_38) {
var_f31 -= 400.0f;
}
else {
var_f31 -= 8.0f * arg3->unk_38;
}
if ((arg2->unk_20.y == var_f31) && (0.0f > arg2->unk_2C.y) && (-1.0f < arg2->unk_2C.y)) {
arg2->unk_2C.y = 0.0f;
HuAudFXPlay(0x699);
}
arg2->unk_2C.y += 0.25f * (var_f31 - arg2->unk_2C.y);
if ((arg2->unk_40 < 0) && ((arg2->unk_20.y - 200.0f) > arg2->unk_2C.y)) {
fn_1_52B8_inline(&sp8, arg2->unk_2C.x - 80.0f, arg2->unk_20.y, arg2->unk_2C.z);
fn_1_52B8_inline(&sp14, 80.0f + arg2->unk_2C.x, arg2->unk_20.y, arg2->unk_2C.z);
fn_1_174(lbl_1_bss_404, &lbl_1_data_1814, 4, 4, 2, &sp8, 0);
HuAudFXPlay(0x69A);
}
Hu3DModelPosSet(object->model[arg2->unk_08], arg2->unk_2C.x, arg2->unk_2C.y, arg2->unk_2C.z);
if ((arg2->unk_20.y - 399.0f) > arg2->unk_2C.y) {
arg0->unk_17C++;
arg2->unk_14 = 0;
}
}
void fn_1_5F2C(UnkM432DllStruct *arg0, UnkM432DllBss0SubStruct *arg1)
{
float var_f31;
float var_f30;
UnkBss0Struct *var_r28;
s32 var_r25;
s32 var_r22;
char *var_r24;
if ((arg0->unk_180 == 0x7D3) && !(arg1->unk_2C.y <= arg0->unk_00.unk_6C.y)) {
var_r28 = &lbl_1_bss_0[arg0->unk_184 >> 1];
var_f31 = arg0->unk_00.unk_6C.x - arg1->unk_2C.x;
var_f30 = arg0->unk_00.unk_6C.z - arg1->unk_2C.z;
if (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) < 100.0f) {
arg0->unk_00.unk_3C |= 0x18;
arg0->unk_180 = 0x7D7;
arg0->unk_C4 = NULL;
var_r22 = arg1->unk_1C;
var_r25 = var_r28->unk_1B8;
var_r24 = lbl_1_data_440[5];
if (arg1->unk_14 & 4) {
var_r25 = var_r28->unk_1BC;
var_r24 = lbl_1_data_4C8[9];
}
if (var_r22 == var_r25) {
arg1->unk_04 = var_r24;
}
else {
fn_1_5848(arg0, arg1);
}
arg0->unk_C8 = fn_1_5208(arg0->unk_184 >> 1, arg1);
arg0->unk_D4[arg0->unk_FC] = arg1->unk_44 - arg0->unk_17C;
arg0->unk_FC = (arg0->unk_FC + 1) % 10;
}
}
}
void fn_1_623C(UnkBss0Struct *arg0, s32 arg1, UnkM432DllStruct *arg2, UnkM432DllStruct *arg3)
{
UnkM432DllBss0SubStruct *sp3C;
float var_f29;
float var_f28;
float var_f27;
float var_f23;
UnkM432DllBss0SubStruct *var_r31;
UnkM432DllStruct *var_r29;
omObjData *var_r28;
s32 var_r26;
s32 var_r19;
var_f29 = 0.0f;
var_f28 = 0.0f;
var_f27 = 0.0f;
var_r28 = arg0->unk_04;
for (var_r26 = 0; var_r26 < 2; var_r26++) {
var_r29 = fn_1_51A8((var_r26 + (arg1 * 2)));
for (var_r31 = arg0->unk_10[var_r26], var_r19 = 0; var_r19 < 0x1F; var_r19++, var_r31++) {
if (var_r31->unk_14 & 0x600) {
if (1.0f < var_r31->unk_3C) {
var_r31->unk_3C = 1.0f;
}
var_r31->unk_38 = var_r31->unk_38 + var_r31->unk_3C;
var_r31->unk_3C = var_r31->unk_3C - 0.05f;
if (0.0f > var_r31->unk_3C) {
var_r31->unk_3C = 0.0f;
}
if (var_r31->unk_14 & 0x400) {
var_f29 += var_r31->unk_38;
}
if (var_r31->unk_14 & 0x200) {
var_f28 += var_r31->unk_38;
}
}
if (var_r31->unk_14 & 0x800) {
var_f27 += var_r31->unk_38;
}
if (NULL != var_r31->unk_04) {
sp3C = fn_1_5208(arg1, var_r31);
switch (var_r31->unk_14) {
case 3:
break;
case 1:
fn_1_5BAC(var_r29, var_r28, var_r31, sp3C);
break;
case 2:
case 4:
fn_1_5F2C(var_r29, var_r31);
break;
}
}
}
}
arg0->unk_80 = 80.0f + -var_f29;
arg0->unk_84 = 160.0f + -var_f28;
fn_1_5364(arg1, var_r28);
arg0->unk_124 = var_f27;
if (1000.0f <= arg0->unk_124) {
arg0->unk_124 = 1000.0f;
}
var_f23 = lbl_1_bss_0[arg1].unk_124 * (Hu3DMotionMaxTimeGet(var_r28->model[22]) / 1000.0f);
lbl_1_bss_0[arg1].unk_128 += 0.02f * (var_f23 - lbl_1_bss_0[arg1].unk_128);
Hu3DMotionTimeSet(var_r28->model[22], lbl_1_bss_0[arg1].unk_128);
if ((lbl_1_bss_3FC < 0) && (1000.0f <= arg0->unk_124)) {
lbl_1_bss_3FC = arg2->unk_184 & 2;
arg2->unk_17C += 4;
arg3->unk_17C += 4;
}
}
void fn_1_6D34(UnkBss0Struct *arg0, UnkM432DllStruct *arg1, Vec *arg2)
{
float var_f31;
float var_f30;
float var_f28;
float var_f27;
s32 var_r31;
var_f27 = 100000.0f;
for (var_r31 = 0; var_r31 < 8; var_r31++) {
var_f31 = arg1->unk_00.unk_6C.x - arg0->unk_130[var_r31].x;
var_f30 = arg1->unk_00.unk_6C.z - arg0->unk_130[var_r31].z;
var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
if (var_f27 > var_f28) {
var_f27 = var_f28;
*arg2 = arg0->unk_130[var_r31];
}
}
}
void fn_1_6F28(UnkBss0Struct *arg0)
{
float var_f31;
float var_f30;
float var_f26;
float var_f23;
UnkM432DllStruct *var_r30 = arg0->unk_08->data;
if (arg0->unk_1B4 < 0) {
fn_1_6D34(arg0, var_r30, &arg0->unk_190);
var_r30->unk_00.unk_3C |= 8;
var_r30->unk_180 = 0x7D9;
arg0->unk_190.y = 3000.0f;
arg0->unk_19C = arg0->unk_190;
arg0->unk_1B4 = 0;
Hu3DModelRotSet(arg0->unk_04->model[25], 0.0f, 0.0f, 0.0f);
Hu3DModelAttrReset(arg0->unk_04->model[25], HU3D_ATTR_DISPOFF);
}
switch (arg0->unk_1B4) {
case 0:
fn_1_40C0(&var_r30->unk_00);
var_f23 = var_r30->unk_00.unk_6C.y - arg0->unk_19C.y;
arg0->unk_190.y += 0.03f * var_f23;
if (50.0f > (0.0f > var_f23 ? -var_f23 : var_f23)) {
arg0->unk_1B4++;
arg0->unk_1A8 = arg0->unk_1C0;
arg0->unk_1A8.y += 900.0f;
arg0->unk_1A8.z -= 150.0f;
var_r30->unk_00.unk_6C = arg0->unk_19C;
var_r30->unk_00.unk_9C = 0.0f;
Hu3DMotionShiftSet(arg0->unk_08->model[0], arg0->unk_08->motion[6], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
}
break;
case 1:
if (50.0f > (0.0f > (arg0->unk_1A8.y - arg0->unk_190.y) ? -(arg0->unk_1A8.y - arg0->unk_190.y) : arg0->unk_1A8.y - arg0->unk_190.y)) {
arg0->unk_1B4++;
}
break;
case 2:
arg0->unk_1A8.y += 0.1f * (((900.0f + arg0->unk_1C0.y) - 200.0f) - arg0->unk_1A8.y);
if (((900.0f + arg0->unk_1C0.y) - 190.0f) > arg0->unk_1A8.y) {
arg0->unk_1B4++;
var_r30->unk_16C = 1;
var_r30->unk_180 = 0x7D3;
fn_1_4ED8(&var_r30->unk_00, 0);
var_r30->unk_00.unk_3C |= 0x210;
if (NULL != arg0->unk_0C) {
arg0->unk_1B4 = 4;
arg0->unk_08 = arg0->unk_0C;
var_r30 = arg0->unk_08->data;
fn_1_6D34(arg0, var_r30, &arg0->unk_1A8);
var_r30->unk_00.unk_3C |= 8;
var_r30->unk_180 = 0x7D9;
}
}
break;
case 3:
arg0->unk_1A8.y += 10.0f;
if ((2000.0f + arg0->unk_1C0.y) < arg0->unk_1A8.y) {
arg0->unk_08 = NULL;
Hu3DModelAttrSet(arg0->unk_04->model[25], HU3D_ATTR_DISPOFF);
return;
}
break;
case 4:
fn_1_40C0(&var_r30->unk_00);
var_f31 = arg0->unk_1A8.x - arg0->unk_190.x;
var_f30 = arg0->unk_1A8.z - arg0->unk_190.z;
arg0->unk_190.x += 0.05f * var_f31;
arg0->unk_190.y += 0.01f * (arg0->unk_1A8.y - arg0->unk_190.y);
arg0->unk_190.z += 0.05f * var_f30;
if (20.0f > sqrtf((var_f31 * var_f31) + (var_f30 * var_f30))) {
arg0->unk_19C = arg0->unk_190;
arg0->unk_1B4 = 0;
}
break;
}
if ((arg0->unk_1B4 > 0) && (arg0->unk_1B4 < 4)) {
if (arg0->unk_1B4 < 3) {
var_r30->unk_00.unk_6C = arg0->unk_19C;
fn_1_2DD4(&var_r30->unk_00);
}
var_f23 = 0.03f * (arg0->unk_1A8.y - arg0->unk_190.y);
arg0->unk_190.y += var_f23;
if (arg0->unk_1C0.y < arg0->unk_190.y) {
var_f26 = (arg0->unk_1A8.y - arg0->unk_190.y) / 900.0f;
if (0.1f > var_f26) {
var_f26 = 0.1f;
}
if (1.0f < var_f26) {
var_f26 = 1.0f;
}
var_f26 = 1.0f - var_f26;
arg0->unk_190.x += 0.03f * var_f26 * (arg0->unk_1A8.x - arg0->unk_190.x);
arg0->unk_190.z += 0.03f * var_f26 * (arg0->unk_1A8.z - arg0->unk_190.z);
}
}
Hu3DModelPosSet(arg0->unk_04->model[25], arg0->unk_190.x, arg0->unk_190.y, arg0->unk_190.z);
fn_1_1D18(arg0->unk_04->model[25], "g008m2_000-itemhook_sao", &arg0->unk_19C);
}
void fn_1_7C1C(UnkBss0Struct *var_r31, UnkM432DllStruct *var_r30, UnkM432DllStruct *var_r29)
{
float var_f31;
float var_f30;
if ((var_r31->unk_7C == 0.0f) && ((0.0f < var_r31->unk_70) || (0.0f > var_r31->unk_74))) {
if (0.0f < var_r31->unk_70) {
var_r31->unk_28.y += 0.05f * (var_r31->unk_70 - var_r31->unk_28.y);
if (2.0f
> (0.0f > (var_r31->unk_70 - var_r31->unk_28.y) ? -(var_r31->unk_70 - var_r31->unk_28.y) : var_r31->unk_70 - var_r31->unk_28.y)) {
var_r31->unk_28.y = var_r31->unk_70;
var_r31->unk_70 = 0.0f;
}
}
if (0.0f > var_r31->unk_74) {
var_r31->unk_28.z += 0.05f * (var_r31->unk_74 - var_r31->unk_28.z);
if (2.0f
> (0.0f > (var_r31->unk_74 - var_r31->unk_28.z) ? -(var_r31->unk_74 - var_r31->unk_28.z) : var_r31->unk_74 - var_r31->unk_28.z)) {
var_r31->unk_28.z = var_r31->unk_74;
var_r31->unk_74 = 0.0f;
}
}
}
else {
var_f30 = var_r31->unk_1EC / var_r31->unk_1E8;
if (265.0f > var_f30) {
var_f31 = 0.2f * (265.0f - var_f30);
if (1.0f <= (0.0f > var_f31 ? -var_f31 : var_f31)) {
var_r31->unk_28.z -= var_f31;
}
}
switch (var_r31->unk_18) {
case 0:
if ((-7100.0f > var_r31->unk_28.z) && ((-7750.0f < var_r31->unk_1F0[0]) || (-7750.0f < var_r31->unk_1F0[1]))) {
var_r31->unk_28.z = -7100.0f;
}
if ((-7750.0f >= var_r31->unk_1F0[0]) && (-7750.0f >= var_r31->unk_1F0[1])) {
var_r31->unk_18++;
var_r31->unk_74 = -8700.0f;
var_r30->unk_17C += 3;
var_r30->unk_15C = -7750.0f;
var_r29->unk_17C += 3;
var_r29->unk_15C = -7750.0f;
fn_1_1D18(var_r31->unk_04->model[3], "m432_00-n1", &var_r31->unk_1C0);
return;
}
break;
case 1:
if ((-9500.0f > var_r31->unk_28.z) && ((-10200.0f < var_r31->unk_1F0[0]) || (-10200.0f < var_r31->unk_1F0[1]))) {
var_r31->unk_28.z = -9500.0f;
}
if ((-10200.0f >= var_r31->unk_1F0[0]) && (-10200.0f >= var_r31->unk_1F0[1])) {
var_r31->unk_18++;
var_r31->unk_74 = -11100.0f;
var_r30->unk_17C += 3;
var_r30->unk_15C = -10200.0f;
var_r29->unk_17C += 3;
var_r29->unk_15C = -10200.0f;
return;
}
break;
case 2:
if ((-11500.0f > var_r31->unk_28.z) && ((-12300.0f < var_r31->unk_1F0[0]) || (-12300.0f < var_r31->unk_1F0[1]))) {
var_r31->unk_28.z = -11500.0f;
}
if ((NULL != var_r30->unk_C8) && (var_r30->unk_C8->unk_14 & 8) && (NULL != var_r29->unk_C8) && ((var_r29->unk_C8->unk_14 & 8) != 0)
&& (var_r30->unk_00.unk_38 == 0) && (var_r29->unk_00.unk_38 == 0)) {
var_r31->unk_18++;
var_r31->unk_1E4 = var_r30->unk_C8->unk_2C.y;
var_r31->unk_74 = -13500.0f;
var_r31->unk_70 = var_r30->unk_C8->unk_2C.y;
var_r30->unk_17C += 6;
var_r29->unk_17C += 6;
return;
}
break;
case 3:
if ((-13700.0f > var_r31->unk_28.z) && ((-14400.0f < var_r31->unk_1F0[0]) || (-14400.0f < var_r31->unk_1F0[1]))) {
var_r31->unk_28.z = -13700.0f;
}
if ((NULL != var_r30->unk_C8) && (var_r30->unk_C8->unk_14 & 0x10) && (NULL != var_r29->unk_C8) && (var_r29->unk_C8->unk_14 & 0x10)
&& (var_r30->unk_00.unk_38 == 0) && (var_r29->unk_00.unk_38 == 0)) {
var_r31->unk_18++;
var_r31->unk_1E4 = var_r30->unk_C8->unk_2C.y;
var_r31->unk_74 = -15700.0f;
var_r31->unk_78 = 0.0f;
var_r31->unk_7C = 120.0f;
var_r31->unk_4C = var_r31->unk_28;
var_r31->unk_34 = var_r31->unk_1C;
var_r31->unk_58.x = var_r31->unk_28.x;
var_r31->unk_58.y = 400.0f + var_r30->unk_C8->unk_2C.y;
var_r31->unk_58.z = -15700.0f;
var_r31->unk_40 = var_r31->unk_58;
var_r31->unk_40.y = 800.0f + var_r30->unk_C8->unk_2C.y;
var_r31->unk_40.z += 3800.0f;
var_r30->unk_17C += 0xA;
var_r30->unk_148 = 0.0f;
fn_1_52B8(&lbl_1_bss_0[var_r30->unk_184 >> 1].unk_10[var_r30->unk_184 & 1][0x1B], &var_r30->unk_13C);
var_r29->unk_17C += 0xA;
var_r29->unk_148 = 0.0f;
fn_1_52B8(&lbl_1_bss_0[var_r29->unk_184 >> 1].unk_10[var_r29->unk_184 & 1][0x1B], &var_r29->unk_13C);
}
break;
}
}
}
s32 fn_1_8540(UnkM432DllStruct *arg0)
{
if (arg0->unk_17C >= 0x1F) {
return -1;
}
if (arg0->unk_17C >= 0x1B) {
return 3;
}
if (arg0->unk_17C >= 0xB) {
return 2;
}
if (arg0->unk_17C >= 5) {
return 1;
}
if (arg0->unk_17C >= 1) {
return 0;
}
return -1;
}
UnkM432DllBss0SubStruct *fn_1_85AC(UnkM432DllStruct *arg0, UnkBss0Struct *arg1)
{
UnkM432DllBss0SubStruct *var_r31 = arg1->unk_10[arg0->unk_184 & 1];
s32 var_r30;
for (var_r30 = 0; var_r30 < 0x1F; var_r30++, var_r31++) {
if ((arg0->unk_17C <= var_r30) && (var_r31->unk_14 & 0xF00)) {
return var_r31;
}
}
return NULL;
}
float fn_1_861C(UnkM432DllStruct *arg0, UnkBss0Struct *arg1, Vec *arg2)
{
float var_f31;
float var_f30;
float var_f27;
float var_f28;
s32 var_r31;
var_f28 = 100000.0f;
for (var_r31 = 0; var_r31 < 4; var_r31++) {
var_f31 = arg0->unk_00.unk_6C.x - arg1->unk_88[var_r31][1].x;
var_f30 = arg0->unk_00.unk_6C.z - arg1->unk_88[var_r31][1].z;
var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
if (var_f28 > var_f27) {
var_f28 = var_f27;
*arg2 = arg1->unk_88[var_r31][1];
}
}
return var_f28;
}
void fn_1_8814(UnkM432DllStruct *arg0, s32 arg1, Vec *arg2)
{
float var_f31;
float var_f30;
float var_f28;
float var_f27;
var_f27 = 72.0f * arg0->unk_CC->unk_04;
var_f31 = arg2->x - arg0->unk_00.unk_6C.x;
var_f30 = arg2->z - arg0->unk_00.unk_6C.z;
var_f31 *= 4.0f;
var_f30 *= 4.0f;
var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
if (var_f27 < var_f28) {
var_f31 = var_f27 * (var_f31 / var_f28);
var_f30 = var_f27 * (var_f30 / var_f28);
}
arg0->unk_00.unk_20 = var_f31;
arg0->unk_00.unk_24 = -var_f30;
}
void fn_1_8A14(UnkM432DllStruct *arg0, s32 arg1, UnkM432DllBss0SubStruct *arg2)
{
Vec spC;
if (NULL != arg2) {
spC = arg2->unk_2C;
if (arg2->unk_14 & 0xF00) {
fn_1_52B8(arg2, &spC);
}
fn_1_8814(arg0, 0, &spC);
}
}
UnkM432DllBss0SubStruct *fn_1_8CB4(UnkM432DllStruct *arg0, UnkM432DllStruct *arg1, UnkBss0Struct *arg2)
{
s32 var_r30;
UnkM432DllBss0SubStruct *var_r29;
s32 var_r28;
s32 var_r27;
s32 var_r26;
s32 var_r25;
s32 var_r24;
s32 var_r21;
s32 var_r20;
s32 var_r19;
var_r29 = NULL;
if (arg0->unk_17C < 0x1F) {
var_r29 = &arg2->unk_10[arg0->unk_184 & 1][arg0->unk_17C];
}
if (NULL == var_r29) {
return NULL;
}
if (var_r29->unk_14 & 2) {
var_r28 = 5;
var_r27 = arg2->unk_1B8;
var_r26 = 0;
var_r25 = 5;
}
else {
var_r28 = 9;
var_r27 = arg2->unk_1BC;
var_r26 = 0;
var_r25 = 9;
if (-14100.0f < arg0->unk_00.unk_6C.z) {
var_r26 = 3;
var_r25 = 9;
}
if (-13700.0f < arg0->unk_00.unk_6C.z) {
var_r26 = 0;
var_r25 = 6;
}
if (-13300.0f < arg0->unk_00.unk_6C.z) {
var_r26 = 0;
var_r25 = 3;
}
}
var_r30 = frandmod(var_r28);
for (var_r21 = 0; var_r21 < var_r28; var_r21++) {
var_r30 = (var_r30 + 1) % var_r28;
if ((var_r26 <= var_r30) && (var_r25 > var_r30)
&& ((arg0->unk_100 != 0) || ((var_r27 != var_r30) && (((var_r29->unk_14 & 4) == 0) || (var_r30 <= 3))))) {
var_r24 = arg0->unk_FC;
var_r19 = 0;
for (var_r20 = 0; var_r20 < arg0->unk_CC->unk_18; var_r20++) {
var_r24--;
if (var_r24 < 0) {
var_r24 += 0xA;
}
if (var_r30 == arg0->unk_D4[var_r24]) {
var_r19 = 1;
}
}
if (var_r19 == 0) {
break;
}
}
}
if ((var_r21 == var_r28) || (var_r27 == var_r30)) {
var_r30 = frandmod(var_r28);
while (var_r30 == var_r27) {
var_r30 = (var_r30 + 1) % var_r28;
}
}
if (arg0->unk_CC->unk_1C < arg0->unk_100) {
var_r30 = var_r27;
}
if (NULL != arg1->unk_C8) {
if (var_r29->unk_14 & 2) {
if (arg1->unk_C8->unk_14 & 8) {
var_r30 = var_r27;
}
}
else if (arg1->unk_C8->unk_14 & 0x10) {
var_r30 = var_r27;
}
}
arg0->unk_100++;
(void)var_r26;
(void)var_r25;
return &var_r29[var_r30];
}
void fn_1_8F3C(UnkM432DllStruct *arg0, UnkBss0Struct *arg1, UnkM432DllBss0SubStruct *arg2, Vec *arg3)
{
*arg3 = arg2->unk_2C;
if (arg0->unk_00.unk_48 >= 0x14) {
if (-12200.0f < arg0->unk_00.unk_6C.z) {
arg3->x = arg1->unk_28.x;
}
else if ((-13300.0f < arg0->unk_00.unk_6C.z) && (-13400.0f > arg2->unk_2C.z)) {
arg3->x = arg1->unk_28.x - 500.0f;
}
else if ((-13700.0f < arg0->unk_00.unk_6C.z) && (-13800.0f > arg2->unk_2C.z)) {
arg3->x = 500.0f + arg1->unk_28.x;
}
else if ((-13500.0f > arg0->unk_00.unk_6C.z) && (-13400.0f < arg2->unk_2C.z)) {
arg3->x = 500.0f + arg1->unk_28.x;
return;
}
}
}
void fn_1_906C(UnkM432DllStruct *var_r31, UnkM432DllBss0SubStruct *var_r27)
{
float var_f31;
s32 var_r30;
s32 var_r29;
s32 var_r28;
var_r30 = 0;
var_r29 = 0;
var_r28 = 0;
switch (var_r27->unk_14 & 0xF00) {
case 0x100:
var_r30 = 0x200;
var_r29 = 0x200;
break;
case 0x400:
var_r30 = 0x800;
var_r29 = 0x800;
var_r28 = 1;
break;
case 0x200:
var_r30 = 0x400;
var_r29 = 0x400;
var_r28 = 1;
break;
case 0x800:
if ((var_r31->unk_CC->unk_14 >= var_r31->unk_154) && (var_r31->unk_CC->unk_10 > var_r31->unk_158)) {
var_r31->unk_00.unk_34 = 0x96;
}
else if ((var_r31->unk_CC->unk_10 <= var_r31->unk_154) && (var_r31->unk_CC->unk_14 >= var_r31->unk_158)) {
var_r31->unk_00.unk_34 = 0x96;
}
else {
var_r31->unk_00.unk_30 = 0x96;
}
if (var_r31->unk_CC->unk_0C < frandf()) {
var_r31->unk_104 *= 0.99f;
}
if (var_r31->unk_CC->unk_00 > lbl_1_bss_57C) {
var_r31->unk_104 *= 0.99f;
}
else {
var_r31->unk_104 *= 1.01f;
}
if (0.5f > var_r31->unk_104) {
var_r31->unk_104 = 0.5f;
}
if (1.0f < var_r31->unk_104) {
var_r31->unk_104 = 1.0f;
}
var_r31->unk_00.unk_30 = var_r31->unk_00.unk_30 * var_r31->unk_104;
var_r31->unk_00.unk_34 = var_r31->unk_00.unk_34 * var_r31->unk_104;
break;
}
var_r31->unk_108 -= 1.0f;
if (0.0f > var_r31->unk_108) {
var_f31 = var_r31->unk_CC->unk_08;
if ((var_r28 != 0) && (GWPlayerCfg[var_r31->unk_188].diff == 3)) {
var_f31 = lbl_1_data_17D4.unk_08;
}
var_r31->unk_108 = var_f31 * (0.9f + (frandf() / 2));
var_r31->unk_00.unk_28 |= var_r30;
var_r31->unk_00.unk_2C |= var_r29;
}
}
void fn_1_93BC(UnkM432DllStruct *arg0)
{
Vec spF8;
float spD0;
float var_f31;
float var_f30;
UnkM432DllBss0SubStruct *var_r30;
UnkBss0Struct *var_r29;
UnkM432DllBss0SubStruct *var_r28;
UnkM432DllStruct *var_r27;
s32 var_r20;
if (NULL != arg0->unk_CC) {
var_r27 = fn_1_51A8(arg0->unk_184 ^ 1);
var_r29 = &lbl_1_bss_0[arg0->unk_184 >> 1];
var_r20 = 1;
switch (fn_1_8540(arg0)) {
case 0:
var_r30 = fn_1_85AC(arg0, var_r29);
fn_1_8A14(arg0, 0, var_r30);
break;
case 1:
var_r28 = fn_1_85AC(arg0, var_r29);
if (NULL != var_r28) {
var_r30 = var_r28;
if (((NULL == arg0->unk_C8) && (NULL != var_r27->unk_C8)) || ((var_r28->unk_2C.z - 400.0f) > arg0->unk_00.unk_6C.z)) {
var_r30++;
}
else if ((var_r28->unk_2C.z - 1350.0f) > var_r27->unk_00.unk_6C.z) {
var_r30++;
var_r20 = 0;
}
if ((1400.0f < (var_r28->unk_2C.z - arg0->unk_00.unk_6C.z)) && (1400.0f < (var_r28->unk_2C.z - var_r27->unk_00.unk_6C.z))) {
var_r20 = 0;
arg0->unk_00.unk_24 = 0x48;
}
else {
if (((var_r28->unk_2C.z - 175.0f) > arg0->unk_00.unk_6C.z) && ((var_r28->unk_2C.z - 1350.0f) < arg0->unk_00.unk_6C.z)) {
if (((var_r29->unk_28.x - 20.0f) < arg0->unk_00.unk_6C.x) && ((20.0f + var_r29->unk_28.x) > arg0->unk_00.unk_6C.x)
&& ((var_r28->unk_2C.z - 1000.0f) > arg0->unk_00.unk_6C.z)) {
arg0->unk_00.unk_24 = 0x48;
}
if ((var_r28->unk_2C.z - 1100.0f) > arg0->unk_00.unk_6C.z) {
arg0->unk_00.unk_28 |= 0x100;
arg0->unk_00.unk_2C |= 0x100;
fn_1_8A14(arg0, 0, var_r30);
}
else {
spD0 = fn_1_861C(arg0, var_r29, &spF8);
if ((arg0->unk_00.unk_BC < spD0) && (400.0f > spD0)) {
arg0->unk_00.unk_28 |= 0x100;
arg0->unk_00.unk_2C |= 0x100;
fn_1_8814(arg0, 0, &spF8);
}
}
}
else {
fn_1_8A14(arg0, 0, var_r30);
}
if (((var_r28->unk_2C.z - 175.0f) < arg0->unk_00.unk_6C.z) && (arg0->unk_00.unk_A8 < arg0->unk_00.unk_6C.y)) {
arg0->unk_00.unk_20 = 0;
arg0->unk_00.unk_24 = 0;
}
}
}
break;
case 2:
var_r20 = 0;
arg0->unk_10C -= 1.0f;
if (NULL == arg0->unk_D0) {
arg0->unk_D0 = fn_1_8CB4(arg0, var_r27, var_r29);
}
if (arg0->unk_10C == 1.0f) {
arg0->unk_D0 = fn_1_8CB4(arg0, var_r27, var_r29);
}
if (NULL != arg0->unk_D0) {
fn_1_8F3C(arg0, var_r29, arg0->unk_D0, &spF8);
fn_1_8814(arg0, 0, &spF8);
if (arg0->unk_00.unk_3C & 1) {
arg0->unk_10C = 20.0f + (20.0f * (arg0->unk_184 & 1));
}
var_f31 = arg0->unk_00.unk_6C.x - arg0->unk_D0->unk_2C.x;
var_f30 = arg0->unk_00.unk_6C.z - arg0->unk_D0->unk_2C.z;
spD0 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
if ((200.0f > spD0) || (arg0->unk_00.unk_4C > 0x14) || (arg0->unk_00.unk_48 > 0xC8)) {
arg0->unk_00.unk_28 |= 0x100;
arg0->unk_00.unk_2C |= 0x100;
}
if (50.0f > spD0) {
arg0->unk_00.unk_20 = 0;
arg0->unk_00.unk_24 = 0;
}
if (0.0f < arg0->unk_10C) {
arg0->unk_00.unk_20 = 0;
arg0->unk_00.unk_24 = 0;
arg0->unk_00.unk_28 &= 0xFFFFFEFF;
arg0->unk_00.unk_2C &= 0xFFFFFEFF;
}
}
break;
case 3:
var_r30 = fn_1_85AC(arg0, var_r29);
break;
}
if ((var_r20 != 0) && (NULL != var_r30)) {
fn_1_906C(arg0, var_r30);
}
}
}
float fn_1_A974(UnkM432DllStruct *var_r31)
{
Vec sp14;
Vec sp8;
sp14 = var_r31->unk_00.unk_6C;
sp14.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.y;
Hu3D3Dto2D(&sp14, lbl_1_data_A0[var_r31->unk_184 >> 1], &sp8);
return sp8.y;
}
WorkPlayerOld *fn_1_AA00(int no)
{
return &((UnkM432DllStruct *)lbl_1_bss_410[no]->data)->unk_00;
}
void fn_1_AA1C(omObjData *object)
{
float var_f31;
UnkM432DllStruct *var_r31;
UnkM432DllBss0SubStruct *var_r30;
s32 var_r29;
var_r31 = object->data;
var_f31 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.z - 750.0f;
if (var_f31 > var_r31->unk_00.unk_6C.z) {
var_r31->unk_00.unk_6C.z = var_f31;
}
var_f31 = 900.0f + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.z;
if (var_f31 < var_r31->unk_00.unk_6C.z) {
var_r31->unk_00.unk_6C.z = var_f31;
}
if (var_r31->unk_15C < var_r31->unk_00.unk_6C.z) {
var_r31->unk_00.unk_6C.z = var_r31->unk_15C;
}
var_r30 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_10[var_r31->unk_184 & 1];
if ((var_r31->unk_184 & 1) != 0) {
lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 = 0.0f;
}
for (var_r29 = 0; var_r29 < 0x1F; var_r29++, var_r30++) {
if ((var_r31->unk_17C <= var_r29) && ((var_r30->unk_14 & 1) != 0)) {
var_f31 = 170.0f + var_r30->unk_2C.z;
if (var_f31 > var_r31->unk_00.unk_6C.z) {
var_r31->unk_00.unk_6C.z = var_f31;
}
if ((var_r31->unk_184 & 1) && (lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 > (var_r30->unk_2C.z - 170.0f))) {
lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 = var_r30->unk_2C.z - 170.0f;
}
}
}
if (((var_r31->unk_184 & 1) == 0) && (lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.x < var_r31->unk_00.unk_6C.x)
&& (0.0f > lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0) && (lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 < var_r31->unk_00.unk_6C.z)) {
var_r31->unk_00.unk_6C.z = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0;
}
}
Vec *fn_1_ACC8(omObjData *object)
{
float var_f31;
float var_f30;
float var_f27;
UnkM432DllStruct *var_r31;
UnkBss0Struct *var_r30;
s32 var_r29;
UnkM432DllStruct *var_r28;
var_r28 = object->data;
var_r31 = var_r28;
var_r30 = &lbl_1_bss_0[var_r28->unk_184 >> 1];
for (var_r29 = 0; var_r29 < 4; var_r29++) {
if ((var_r31->unk_00.unk_6C.y <= var_r30->unk_88[var_r29][1].y)
&& ((var_r31->unk_00.unk_6C.y + (var_r31->unk_00.unk_BC / 2)) >= var_r30->unk_88[var_r29][1].y)) {
var_f31 = var_r31->unk_00.unk_6C.x - var_r30->unk_88[var_r29][1].x;
var_f30 = var_r31->unk_00.unk_6C.z - var_r30->unk_88[var_r29][1].z;
var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
if (var_f27 < (var_r31->unk_00.unk_BC + var_r30->unk_88[var_r29][2].y)) {
return &var_r30->unk_88[var_r29][0];
}
}
}
return NULL;
}
void fn_1_AF28(omObjData *object)
{
UnkM432DllStruct *var_r31 = object->data;
var_r31->unk_16C = 0;
var_r31->unk_00.unk_3C &= 0xFFFFFFEF;
fn_1_4ED8(&var_r31->unk_00, 0);
}
#include "src/REL/executor.c"
void fn_1_B234(void)
{
UnkM432DllStruct *var_r31;
s32 var_r30;
u32 var_r29;
u32 var_r28;
if (HuPadBtn[0] & 2) {
lbl_1_bss_57C = 0x4650;
}
print8(0x18, 0x20, 1.5f, "COUNT:%d MODE:%d MES:%d", lbl_1_bss_580, lbl_1_bss_41C->work[0], lbl_1_bss_576);
print8(0x18, 0x30, 1.5f, "%f %f %f %f", lbl_1_bss_0[0].unk_64, lbl_1_bss_0[0].unk_68, lbl_1_bss_0[0].unk_6C, lbl_1_bss_0[0].unk_28.z);
print8(0x18, 0x40, 1.5f, "%f %f %f %f", lbl_1_bss_0[1].unk_64, lbl_1_bss_0[1].unk_68, lbl_1_bss_0[1].unk_6C, lbl_1_bss_0[0].unk_28.z);
print8(0x18, 0x50, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM),
HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA));
for (var_r30 = 0; var_r30 < 4; var_r30++) {
var_r31 = lbl_1_bss_410[var_r30]->data;
print8(0x18, (var_r30 * 0x10) + 0x70, 1.5f, "%d %d %04x %.3f (%.3f %.3f %.3f)", var_r31->unk_180, var_r31->unk_00.unk_38,
var_r31->unk_00.unk_3C, 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);
}
}
void fn_1_B458(omObjData *object)
{
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
fn_1_24(0x1000, object->model[0]);
omDelObjEx(lbl_1_bss_5B4, object);
lbl_1_bss_402--;
}
void fn_1_B518(omObjData *object)
{
float var_f31;
float var_f30;
float var_f29;
float var_f28;
UnkM432DllStruct2 *var_r31;
var_r31 = object->data;
var_r31->unk_10 += 1.0f;
if (30.0f <= var_r31->unk_10) {
fn_1_B458(object);
return;
}
if (10.0f > var_r31->unk_10) {
var_f31 = var_r31->unk_10 / 10.0f;
var_f30 = 0.0f;
}
else {
var_f31 = 1.0f;
var_f30 = (var_r31->unk_10 - 10.0f) / 20.0f;
}
var_f29 = sind((90.0f * var_f31)) * sind((90.0f * var_f31));
var_f28 = sind((90.0f * var_f30)) * sind((90.0f * var_f30));
omSetTra(object, var_r31->unk_00.x + (var_r31->unk_14 * var_f29), var_r31->unk_00.y, var_r31->unk_00.z + (var_r31->unk_18 * var_f28));
}
void fn_1_B7E4(omObjData *object)
{
UnkM432DllStruct2 *var_r30;
UnkBss5D0Struct *var_r29;
UnkBss5D0Struct *var_r28;
UnkBss5D0Struct *var_r27;
s16 var_r26;
s16 var_r25;
s16 var_r24;
var_r26 = fn_1_AC(0x1000);
if (var_r26 < 0) {
object->model[0] = Hu3DModelLink(lbl_1_bss_400);
}
else {
object->model[0] = var_r26;
}
var_r30 = object->data;
var_r30->unk_10 = 0.0f;
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(object->model[0], 3);
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);
omSetSca(object, var_r30->unk_0C, var_r30->unk_0C, var_r30->unk_0C);
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
object->func = fn_1_B518;
}
void fn_1_B974(Vec *arg0, float arg8, float arg9)
{
UnkM432DllStruct2 *var_r31;
omObjData *var_r30;
if (lbl_1_bss_402 < 0xF0) {
lbl_1_bss_402++;
var_r30 = omAddObjEx(lbl_1_bss_5B4, 0x67, 1, 0, 3, fn_1_B7E4);
var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM432DllStruct2), 0x10000000);
var_r31 = var_r30->data;
var_r31->unk_00 = *arg0;
var_r31->unk_00.x += 30.0f * arg9;
var_r31->unk_0C = 1.0f + arg8;
var_r31->unk_14 = 70.0f * arg9;
var_r31->unk_18 = -675.0f;
}
}
void fn_1_BAA8(UnkM432DllStruct *arg0)
{
Vec sp20;
Vec sp14;
float var_f31;
float var_f30;
s32 *var_r29;
s32 var_r27;
sp20 = arg0->unk_00.unk_6C;
sp20.y += 220.0f;
fn_1_1A60(&sp20, lbl_1_data_A0[arg0->unk_184 >> 1], &sp14);
arg0->unk_110 = sp14.x;
arg0->unk_114 = sp14.y;
if (NULL != arg0->unk_C4) {
var_f31 = 0.0f;
var_f30 = 0.0f;
for (var_r29 = arg0->unk_C4, var_r27 = 1; var_r29[0] >= 0; var_r29 += 3) {
espPosSet(arg0->unk_118[var_r29[0]], var_r29[1] + (arg0->unk_110 + var_f31), var_r29[2] + (arg0->unk_114 + var_f30));
espDispOn(arg0->unk_118[var_r29[0]]);
if (var_r27 != 0) {
var_r27 = 0;
var_f31 = var_r29[1];
var_f30 = var_r29[2];
}
}
}
}
s32 fn_1_BF08(UnkM432DllStruct *arg0)
{
switch (arg0->unk_C8->unk_14 & 0xF00) {
case 0x100:
if (arg0->unk_00.unk_28 & 0x200) {
return 0x7D4;
}
break;
case 0x400:
if (arg0->unk_00.unk_28 & 0x800) {
return 0x7D5;
}
break;
case 0x200:
if (arg0->unk_00.unk_28 & 0x400) {
return 0x7D5;
}
break;
case 0x800:
return 0x7D6;
}
return 0x7D3;
}
void fn_1_BF9C(UnkM432DllStruct *arg0)
{
Vec spC;
float var_f31;
float var_f30;
float var_f26;
UnkM432DllStruct *var_r31;
var_r31 = arg0;
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0f + arg0->unk_C8->unk_18, 0.4f);
fn_1_52B8(arg0->unk_C8, &spC);
var_f31 = spC.x - var_r31->unk_00.unk_6C.x;
var_f30 = spC.z - var_r31->unk_00.unk_6C.z;
var_f26 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
if (10.0f <= var_f26) {
var_f31 = 10.0f * (var_f31 / var_f26);
var_f30 = 10.0f * (var_f30 / var_f26);
}
var_r31->unk_00.unk_6C.x += var_f31;
var_r31->unk_00.unk_6C.z += var_f30;
}
void fn_1_C33C(UnkM432DllStruct *arg0)
{
Vec spC;
float sp8;
float var_f31;
float var_f30;
float var_f27;
UnkM432DllBss0SubStruct *var_r30;
s32 var_r29;
s32 *var_r28;
UnkM432DllStruct *var_r27;
var_r28 = NULL;
if (arg0->unk_00.unk_38 == 0) {
for (var_r30 = lbl_1_bss_0[arg0->unk_184 >> 1].unk_10[arg0->unk_184 & 1], var_r29 = 0; var_r29 < 0x1F; var_r29++, var_r30++)
if ((arg0->unk_17C <= var_r29) && (var_r30->unk_14 & 0xF00) && (((var_r30->unk_14 & 0x700) == 0) || !(20.0f < arg0->unk_00.unk_6C.y))) {
fn_1_52B8(var_r30, &spC);
var_f31 = spC.x - arg0->unk_00.unk_6C.x;
var_f30 = spC.z - arg0->unk_00.unk_6C.z;
var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
if (arg0->unk_00.unk_BC > var_f27) {
var_r27 = fn_1_51A8(arg0->unk_184 ^ 1);
if ((NULL == var_r27->unk_C8) || (var_r30->unk_08 != var_r27->unk_C8->unk_08)) {
arg0->unk_C8 = var_r30;
switch (var_r30->unk_14 & 0xF00) {
case 0x100:
var_r28 = lbl_1_data_2AC;
break;
case 0x200:
var_r28 = lbl_1_data_2D0;
break;
case 0x400:
var_r28 = lbl_1_data_2F4;
break;
case 0x800:
var_r28 = lbl_1_data_318;
break;
}
break;
}
}
}
}
if (arg0->unk_C4 != var_r28) {
arg0->unk_C4 = var_r28;
if (NULL == var_r28) {
arg0->unk_C8 = NULL;
}
for (var_r29 = 0; var_r29 < 9; var_r29++) {
espDispOff(arg0->unk_118[var_r29]);
}
}
}
void fn_1_C724(UnkM432DllStruct *var_r31, omObjData *var_r25, omObjData *var_r24)
{
Vec spC;
float var_f25;
UnkBss0Struct *var_r30;
UnkM432DllStruct *var_r29;
s32 var_r28;
void *var_r27;
s32 var_r26;
float var_f19;
var_r30 = &lbl_1_bss_0[var_r31->unk_184 >> 1];
fn_1_BF9C(var_r31);
if (fn_1_BF08(var_r31) == 0x7D4) {
var_r30->unk_1D4 += 1.0f - (2.0f * (var_r31->unk_14C / 60.0f));
if (0.0f > var_r30->unk_1D4) {
var_r30->unk_1D4 = 0.0f;
}
if (1.0f < var_r30->unk_1D4) {
var_r30->unk_1D4 = 1.0f;
}
var_r31->unk_14C = 0.0f;
if (25.0f <= (var_r31->unk_C8->unk_38 += 1.0f)) {
var_r31->unk_C8->unk_38 = 25.0f;
}
omVibrate(var_r31->unk_188, 0xC, 6, 6);
}
else {
var_r31->unk_14C += 1.0f;
var_r30->unk_1D4 -= 0.016666668f;
if (0.0f > var_r30->unk_1D4) {
var_r30->unk_1D4 = 0.0f;
}
if (20.0f <= var_r31->unk_14C) {
var_r31->unk_14C = 0.0f;
if (0.0f >= (var_r31->unk_C8->unk_38 -= 1.0f)) {
var_r31->unk_C8->unk_38 = 0.0f;
}
}
}
HuAudFXPitchSet(var_r30->unk_1CC, (s32)(8191.0f * var_r30->unk_1D4));
HuAudFXPitchSet(var_r30->unk_1D0, (s32)(8191.0f * (1.0f - (var_r31->unk_C8->unk_38 / 25.0f))));
if (Hu3DMotionShiftIDGet(var_r25->model[0]) < 0) {
var_f25 = var_r31->unk_C8->unk_38 * (Hu3DMotionMaxTimeGet(var_r25->model[0]) / 25.0f);
Hu3DMotionTimeSet(var_r25->model[0], var_f25);
var_f25 = var_r31->unk_C8->unk_38 * (Hu3DMotionMaxTimeGet((var_r24->model[var_r31->unk_C8->unk_08])) / 25.0f);
Hu3DMotionTimeSet(var_r24->model[var_r31->unk_C8->unk_08], var_f25);
}
if ((25.0f <= var_r31->unk_C8->unk_38) || (var_r31->unk_C8->unk_38 == 0.0f)) {
if (25.0f <= var_r31->unk_C8->unk_38) {
var_r31->unk_17C++;
}
var_r31->unk_180 = 0x7D3;
fn_1_4ED8(&var_r31->unk_00, 0);
HuAudFXStop(var_r30->unk_1CC);
HuAudFXStop(var_r30->unk_1D0);
var_r30->unk_1CC = -1;
var_r30->unk_1D0 = -1;
}
}
void fn_1_D0E0(UnkM432DllStruct *arg0, omObjData *arg1, omObjData *arg2)
{
fn_1_BF9C(arg0);
if (fn_1_BF08(arg0) == 0x7D5) {
lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC += 1.0f - (2.0f * (arg0->unk_14C / 60.0f));
if (0.0f > lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC) {
lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC = 0.0f;
}
if (1.0f < lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC) {
lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC = 1.0f;
}
arg0->unk_14C = 0.0f;
arg0->unk_C8->unk_3C += 3.0f;
omVibrate(arg0->unk_188, 0xC, 6, 6);
}
else {
arg0->unk_14C += 1.0f;
}
if (Hu3DMotionShiftIDGet(arg1->model[0]) < 0) {
Hu3DMotionTimeSet(arg1->model[0], 120.0 * (fmod(arg0->unk_C8->unk_38, 360.0) / 360.0));
Hu3DMotionTimeSet(
arg2->model[arg0->unk_C8->unk_08], Hu3DMotionMaxTimeGet(arg2->model[arg0->unk_C8->unk_08]) * (fmod(arg0->unk_C8->unk_38, 360.0) / 360.0));
}
if (20.0f <= arg0->unk_14C) {
arg0->unk_180 = 0x7D3;
fn_1_4ED8(&arg0->unk_00, 0);
}
else if (lbl_1_bss_0[arg0->unk_184 >> 1].unk_1D8 < 0) {
lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC = 0.5f;
lbl_1_bss_0[arg0->unk_184 >> 1].unk_1D8 = HuAudFXPlay((arg0->unk_184 & 2) == 0 ? 0x68E : 0x68F);
}
}
void fn_1_D9EC(UnkM432DllStruct *arg0, omObjData *arg1, omObjData *arg2)
{
float var_f28;
float var_f27;
float var_f23;
fn_1_BF9C(arg0);
if ((arg0->unk_00.unk_30 <= 0) || (arg0->unk_00.unk_34 <= 0)) {
var_f27 = 0.0f;
if (arg0->unk_00.unk_30 > 0) {
var_f27 = -(arg0->unk_00.unk_30 / 150.0f);
}
if (arg0->unk_00.unk_34 > 0) {
var_f27 = arg0->unk_00.unk_34 / 150.0f;
}
if (var_f27 != 0.0f) {
if ((0.0f > var_f27 ? -1 : 1) != (0.0f > arg0->unk_150 ? -1 : 1)) {
var_f28 = arg0->unk_158 - arg0->unk_154;
if (0.0f < var_f28) {
if (0.98f < var_f28) {
var_f28 += 0.6f;
if ((arg0->unk_184 & 2) == 0) {
HuAudFXPlay(0x692);
}
else {
HuAudFXPlay(0x693);
}
}
arg0->unk_C8->unk_38 += 10.0f * var_f28;
var_f23 = var_f28;
if (0.5f > var_f23) {
var_f23 = 0.0f;
}
fn_1_B974(&arg0->unk_C8->unk_2C, var_f23 / 2, (arg0->unk_184 & 1) ? -1.0f : 1.0f);
}
arg0->unk_154 = arg0->unk_158;
}
arg0->unk_150 = var_f27;
arg0->unk_158 = arg0->unk_158 + (0.1f * arg0->unk_150);
if (0.0f > arg0->unk_158) {
arg0->unk_158 = 0.0f;
}
if (1.0f < arg0->unk_158) {
arg0->unk_158 = 1.0f;
}
}
}
if (Hu3DMotionShiftIDGet(arg1->model[0]) < 0) {
Hu3DMotionTimeSet(arg1->model[0], arg0->unk_158 * Hu3DMotionMaxTimeGet(arg1->model[0]));
Hu3DMotionTimeSet(arg2->model[arg0->unk_C8->unk_08], arg0->unk_158 * Hu3DMotionMaxTimeGet(arg2->model[arg0->unk_C8->unk_08]));
}
if (1000.0f <= lbl_1_bss_0[arg0->unk_184 >> 1].unk_124) {
arg0->unk_180 = 0x7D3;
fn_1_4ED8(&arg0->unk_00, 0);
}
}
void fn_1_E3B4(UnkM432DllStruct *arg0, omObjData *arg1)
{
float var_f31;
float var_f30;
s32 var_r28;
if (arg0->unk_00.unk_38 != 0) {
fn_1_40C0(&arg0->unk_00);
return;
}
if (arg0->unk_C8->unk_14 & 0x18) {
if (((arg0->unk_C8->unk_14 & 8) && (arg0->unk_178 <= 0)) || ((arg0->unk_C8->unk_14 & 0x10) && (arg0->unk_178 <= 1))) {
arg0->unk_178++;
omVibrate(arg0->unk_188, 0xC, 4, 2);
if ((arg0->unk_184 & 2) == 0) {
HuAudFXPlay(0x690);
}
else {
HuAudFXPlay(0x691);
}
}
if ((arg0->unk_184 & 1) != 0) {
var_r28 = 1;
}
else {
var_r28 = -1;
}
arg0->unk_170 = var_r28 * 0x18;
arg0->unk_174 = 0x48;
arg0->unk_00.unk_9C = 180.0f;
if ((((arg0->unk_C8->unk_14 & 8) == 0) || !(-11100.0f < lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z))
&& (((arg0->unk_C8->unk_14 & 0x10) == 0) || !(-13500.0f < lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z))) {
var_f30 = 800.0f - (400.0f * (arg0->unk_184 & 1));
if (0.0f > (lbl_1_bss_0[arg0->unk_184 >> 1].unk_74 - lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z)) {
var_f31 = -(lbl_1_bss_0[arg0->unk_184 >> 1].unk_74 - lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z);
}
else {
var_f31 = lbl_1_bss_0[arg0->unk_184 >> 1].unk_74 - lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z;
}
if (!(var_f30 < var_f31)) {
fn_1_5148(arg0);
HuAudCharVoicePlay(arg0->unk_18C, 0x122);
goto block_26;
}
}
}
else {
arg0->unk_170 = 0;
arg0->unk_174 = -0x48;
arg0->unk_00.unk_9C = 0.0f;
block_26:
arg0->unk_D0 = 0;
arg0->unk_D4[arg0->unk_FC] = arg0->unk_C8->unk_44 - arg0->unk_17C;
arg0->unk_FC = (arg0->unk_FC + 1) % 10;
arg0->unk_180 = 0x7D8;
arg0->unk_00.unk_6C = arg0->unk_C8->unk_2C;
arg0->unk_00.unk_6C.y -= 200.0f;
fn_1_4ED8(&arg0->unk_00, 3);
arg0->unk_00.unk_3C |= 8;
}
}
void fn_1_E9E4(UnkM432DllStruct *arg0)
{
float var_f31;
float var_f30;
float var_f28;
arg0->unk_00.unk_20 = arg0->unk_170;
arg0->unk_00.unk_24 = arg0->unk_174;
arg0->unk_00.unk_28 = 0x100;
arg0->unk_00.unk_2C = 0x100;
fn_1_40C0(&arg0->unk_00);
var_f31 = arg0->unk_C8->unk_2C.x - arg0->unk_00.unk_6C.x;
var_f30 = arg0->unk_C8->unk_2C.z - arg0->unk_00.unk_6C.z;
if (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) < 100.0f) {
var_f28 = 0.0f;
if (arg0->unk_174 > 0) {
var_f28 = 100.0f;
}
if ((arg0->unk_C8->unk_2C.y + var_f28) > arg0->unk_00.unk_6C.y) {
arg0->unk_00.unk_84.y = 26.766666f;
arg0->unk_00.unk_A4 = 1.0f;
return;
}
arg0->unk_00.unk_3C &= 0xFFFFFFF7;
return;
}
if ((0.0f > arg0->unk_00.unk_84.y) && ((100.0f + arg0->unk_C8->unk_2C.y) > arg0->unk_00.unk_6C.y)) {
arg0->unk_180 = 0x7D3;
HuAudCharVoicePlay(arg0->unk_18C, 0x10D);
}
}
void fn_1_EC7C(UnkM432DllStruct *arg0, omObjData *arg1)
{
if ((lbl_1_bss_0[arg0->unk_184 >> 1].unk_1E4 - (arg0->unk_00.unk_BC / 2)) > arg0->unk_00.unk_6C.y) {
Hu3DModelShadowDispOff(arg1->model[0]);
return;
}
Hu3DModelShadowDispOn(arg1->model[0]);
}
void fn_1_ED0C(omObjData *object)
{
float var_f31;
float var_f30;
float var_f26;
UnkBss0Struct *var_r28;
UnkM432DllStruct *var_r31;
s32 var_r26;
s32 var_r22;
var_r31 = object->data;
var_r28 = &lbl_1_bss_0[var_r31->unk_184 >> 1];
if (lbl_1_bss_41C->work[0] >= 0x3EC) {
if (lbl_1_bss_3FC != (var_r31->unk_184 & 2)) {
var_r26 = 1;
if (var_r31->unk_00.unk_A8 < var_r31->unk_00.unk_6C.y) {
var_r26 = 0;
}
if (var_r31->unk_180 == 0x7D7) {
var_r26 = 0;
}
if (var_r31->unk_180 == 0x7D8) {
var_r26 = 0;
}
if (var_r31->unk_180 == 0x7D9) {
var_r26 = 0;
}
if ((var_r31->unk_180 == 0x7D3) && (var_r31->unk_00.unk_38 == 1)) {
var_r26 = 0;
}
if (var_r26 != 0) {
var_r31->unk_180 = 0x7DA;
if (lbl_1_bss_3FC >= 0) {
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE);
Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, HU3D_ATTR_NONE);
}
else {
var_r31->unk_168 = 1;
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE);
Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
}
}
}
else {
var_r31->unk_180 = 0x7DB;
var_r31->unk_13C.x += 100.0f * (var_r31->unk_184 & 1 ? -1.0f : 1.0f);
var_r31->unk_13C.z += -475.0f;
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE);
Hu3DMotionShiftSet(object->model[0], object->motion[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
}
if (var_r31->unk_180 >= 0x7DA) {
for (var_r22 = 0; var_r22 < 9; var_r22++) {
espDispOff(var_r31->unk_118[var_r22]);
}
if (lbl_1_bss_3FC == (var_r31->unk_184 & 2)) {
GWPlayerCoinWinSet(var_r31->unk_188, 10);
}
object->func = fn_1_10250;
return;
}
}
if (GWPlayerCfg[var_r31->unk_188].iscom != 0) {
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;
fn_1_93BC(var_r31);
}
else {
var_r31->unk_00.unk_20 = HuPadStkX[var_r31->unk_190];
var_r31->unk_00.unk_24 = HuPadStkY[var_r31->unk_190];
var_r31->unk_00.unk_28 = HuPadBtnDown[var_r31->unk_190];
var_r31->unk_00.unk_2C = HuPadBtn[var_r31->unk_190];
var_r31->unk_00.unk_30 = HuPadTrigL[var_r31->unk_190];
var_r31->unk_00.unk_34 = HuPadTrigR[var_r31->unk_190];
}
if ((var_r31->unk_180 == 0x7D3) && ((var_r31->unk_13C.x != 0.0f) || (var_r31->unk_13C.z != 0.0f))) {
var_f30 = var_r31->unk_13C.x - var_r31->unk_00.unk_6C.x;
var_f31 = var_r31->unk_13C.z - var_r31->unk_00.unk_6C.z;
if (var_r31->unk_00.unk_BC < (0.0f > var_f31 ? -var_f31 : var_f31)) {
var_f30 = 0.0f;
}
var_f26 = sqrtf((var_f30 * var_f30) + (var_f31 * var_f31));
if (10.0f <= var_f26) {
var_f30 /= var_f26;
var_f31 /= var_f26;
}
else {
var_f30 = 0.0f;
var_f31 = 0.0f;
var_r31->unk_00.unk_9C = var_r31->unk_148;
}
var_r31->unk_00.unk_20 = 72.0f * var_f30;
var_r31->unk_00.unk_24 = 72.0f * -var_f31;
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_180) {
case 0x7D3:
if ((var_r31->unk_16C != 0) && ((var_r31->unk_00.unk_3C & 0x101) != 0)) {
var_r31->unk_16C = 0;
var_r31->unk_00.unk_3C &= 0xFFFFFFEF;
fn_1_4ED8(&var_r31->unk_00, 0);
}
fn_1_40C0(&var_r31->unk_00);
fn_1_C33C(var_r31);
if ((NULL != var_r31->unk_C4) && (NULL != var_r31->unk_C8)) {
var_r31->unk_180 = fn_1_BF08(var_r31);
switch (var_r31->unk_180) {
case 0x7D4:
var_r31->unk_14C = 0.0f;
var_r31->unk_C8->unk_38 = 1.0f;
var_r28->unk_1D4 = 0.5f;
if (var_r28->unk_1CC < 0) {
var_r28->unk_1CC = HuAudFXPlay((var_r31->unk_184 & 2) == 0 ? 0x68C : 0x68D);
}
if (var_r28->unk_1D0 < 0) {
var_r28->unk_1D0 = HuAudFXPlay((var_r31->unk_184 & 2) == 0 ? 0x695 : 0x696);
}
Hu3DMotionShiftSet(object->model[0], object->motion[5], 0.0f, 8.0f, HU3D_MOTATTR_PAUSE);
break;
case 0x7D5:
var_r31->unk_14C = 0.0f;
var_r31->unk_C8->unk_3C += 3.0f;
if (var_r28->unk_1D8 < 0) {
var_r28->unk_1DC = 0.5f;
var_r28->unk_1D8 = HuAudFXPlay((var_r31->unk_184 & 2) == 0 ? 0x68E : 0x68F);
}
Hu3DMotionShiftSet(
object->model[0], object->motion[7], 120.0 * (fmod(var_r31->unk_C8->unk_38, 360.0) / 360.0), 8.0f, HU3D_MOTATTR_PAUSE);
break;
case 0x7D6:
var_r31->unk_14C = 0.0f;
var_r31->unk_150 = -1.0f;
var_r31->unk_158 = 0.0f;
var_r31->unk_154 = 0.0f;
Hu3DMotionShiftSet(object->model[0], object->motion[8], 0.0f, 8.0f, HU3D_MOTATTR_PAUSE);
break;
}
}
else if (-800.0f > var_r31->unk_00.unk_6C.y) {
var_r31->unk_00.unk_3C |= 0x10;
if (NULL == lbl_1_bss_0[var_r31->unk_184 >> 1].unk_08) {
lbl_1_bss_0[var_r31->unk_184 >> 1].unk_08 = object;
lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1B4 = -1;
}
else {
lbl_1_bss_0[var_r31->unk_184 >> 1].unk_0C = object;
}
}
break;
case 0x7D4:
fn_1_C724(var_r31, object, lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04);
break;
case 0x7D5:
fn_1_D0E0(var_r31, object, lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04);
break;
case 0x7D6:
fn_1_D9EC(var_r31, object, lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04);
break;
case 0x7D7:
fn_1_E3B4(var_r31, object);
break;
case 0x7D8:
fn_1_E9E4(var_r31);
break;
case 0x7D9:
break;
default:
OSReport("*** player mode error(%d)!!\n", var_r31->unk_180);
break;
}
fn_1_EC7C(var_r31, object);
fn_1_BAA8(var_r31);
lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E8 += 1.0f;
lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1EC += fn_1_A974(var_r31);
lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1F0[var_r31->unk_184 & 1] = var_r31->unk_00.unk_6C.z;
fn_1_2DD4(&var_r31->unk_00);
}
void fn_1_10250(omObjData *object)
{
float var_f31;
float var_f30;
float var_f24;
UnkM432DllStruct *var_r31;
omObjData *var_r29;
var_r31 = object->data;
var_r29 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04;
switch (var_r31->unk_180) {
case 0x7D0:
if (lbl_1_bss_41C->work[0] >= 0x3E9) {
var_r31->unk_180++;
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
HuAudCharVoicePlay(var_r31->unk_18C, 0x125);
}
break;
case 0x7D1:
var_r31->unk_00.unk_20 = 0;
var_r31->unk_00.unk_24 = 0x48;
var_r31->unk_00.unk_28 = 0x100;
var_r31->unk_00.unk_2C = 0x100;
fn_1_40C0(&var_r31->unk_00);
if (200.0f > var_r31->unk_00.unk_6C.y) {
var_r31->unk_00.unk_84.y = 26.766666f;
var_r31->unk_00.unk_A4 = 1.0f;
}
else {
var_r31->unk_180++;
}
break;
case 0x7D2:
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;
if (var_r31->unk_00.unk_38 == 1) {
var_r31->unk_00.unk_24 = 0x48;
}
fn_1_40C0(&var_r31->unk_00);
if ((var_r31->unk_00.unk_38 == 0) && (lbl_1_bss_41C->work[0] >= 0x3EB)) {
var_r31->unk_180++;
object->func = fn_1_ED0C;
}
break;
case 0x7DA:
if ((var_r31->unk_168 != 0) && (lbl_1_bss_3FC < 0) && (lbl_1_bss_41C->work[0] >= 0x3F1)) {
var_r31->unk_168 = 0;
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE);
Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, HU3D_ATTR_NONE);
}
break;
case 0x7DB:
var_f31 = var_r31->unk_13C.x - var_r31->unk_00.unk_6C.x;
var_f30 = var_r31->unk_13C.z - var_r31->unk_00.unk_6C.z;
if (1.0f > (0.0f > var_f31 ? -var_f31 : var_f31)) {
if (1.0f > (0.0f > var_f30 ? -var_f30 : var_f30)) {
var_r31->unk_180++;
var_r31->unk_160 = 0.0f;
var_r31->unk_164 = var_r31->unk_00.unk_6C.y;
Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 8.0f, HU3D_ATTR_NONE);
break;
}
}
if (1.0f < (0.0f > var_f31 ? -var_f31 : var_f31)) {
var_f30 = 0.0f;
}
var_f24 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30));
if (10.0f < var_f24) {
var_f31 = 10.0f * (var_f31 / var_f24);
var_f30 = 10.0f * (var_f30 / var_f24);
}
var_r31->unk_00.unk_6C.x += var_f31;
var_r31->unk_00.unk_6C.z += var_f30;
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(var_f31, var_f30), 0.4f);
break;
case 0x7DC:
var_r31->unk_160 += 5.0f;
var_r31->unk_00.unk_6C.z -= 10.0f;
var_r31->unk_00.unk_6C.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_118.y + (120.0 * sind(var_r31->unk_160));
if (180.0f <= var_r31->unk_160) {
var_r31->unk_180++;
Hu3DMotionShiftSet(object->model[0], object->motion[4], 0.0f, 8.0f, HU3D_ATTR_NONE);
}
break;
case 0x7DD:
if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) {
var_r31->unk_180++;
Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
Hu3DModelAttrReset(var_r29->model[9], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(var_r29->model[15], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(var_r29->model[23], HU3D_MOTATTR_PAUSE);
HuAudFXPlay(0x694);
}
break;
case 0x7DE:
var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 0.0f, 0.4f);
if ((Hu3DMotionEndCheck(var_r29->model[9]) != 0) && (Hu3DMotionEndCheck(var_r29->model[15]) != 0)) {
var_r31->unk_180++;
}
break;
case 0x7DF:
var_r31->unk_00.unk_6C.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_118.y;
if (lbl_1_bss_41C->work[0] >= 0x3F1) {
var_r31->unk_180++;
Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
HuAudCharVoicePlay(var_r31->unk_18C, 0x125);
}
break;
case 0x7E0:
var_r31->unk_00.unk_6C.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_118.y;
break;
case 0x7D3:
case 0x7D4:
case 0x7D5:
case 0x7D6:
case 0x7D7:
case 0x7D8:
case 0x7D9:
default:
OSReport("*** player mode error(%d)!!\n", var_r31->unk_180);
break;
}
fn_1_EC7C(var_r31, object);
fn_1_2DD4(&var_r31->unk_00);
}
void fn_1_10CCC(omObjData *object)
{
Vec sp8;
UnkM432DllStruct *var_r31;
s32 var_r29;
s32 var_r28;
s32 var_r27;
UnkM432DllBss0SubStruct *var_r26;
s32 var_r24;
s32 var_r23;
var_r31 = object->data;
var_r26 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_10[var_r31->unk_184 & 1];
var_r31->unk_18C = GWPlayerCfg[var_r31->unk_188].character;
var_r31->unk_190 = GWPlayerCfg[var_r31->unk_188].pad_idx;
var_r31->unk_180 = 0x7D0;
var_r31->unk_168 = 0;
var_r31->unk_CC = NULL;
var_r31->unk_C4 = NULL;
var_r31->unk_C8 = NULL;
var_r31->unk_150 = 0.0f;
var_r31->unk_158 = 0.0f;
var_r31->unk_154 = 0.0f;
var_r31->unk_17C = 0;
var_r31->unk_15C = 10000.0f;
var_r31->unk_178 = 0;
var_r31->unk_16C = 0;
var_r31->unk_104 = 0.5f;
var_r31->unk_108 = 0.0f;
fn_1_5148(var_r31);
sp8 = var_r26[var_r31->unk_17C++].unk_2C;
sp8.y -= 200.0f;
fn_1_2C1C(&var_r31->unk_00, object, var_r31->unk_188, var_r31->unk_18C, lbl_1_data_268, 0, &sp8, 180.0f);
var_r31->unk_00.unk_04 = fn_1_AA1C;
var_r31->unk_00.unk_08 = fn_1_ACC8;
fn_1_2DC8(&var_r31->unk_00, 1, (var_r31->unk_184 & 2) == 0 ? lbl_1_data_354 : lbl_1_data_36C);
var_r31->unk_00.unk_0C = fn_1_AF28;
var_r31->unk_13C.x = 0.0f;
var_r31->unk_13C.y = 0.0f;
var_r31->unk_13C.z = 0.0f;
object->model[0] = CharModelCreate(lbl_1_data_0[var_r31->unk_18C], 4);
CharModelStepTypeSet(lbl_1_data_0[var_r31->unk_18C], 0);
for (var_r29 = 0; var_r29 < 0xB; var_r29++) {
object->motion[var_r29] = CharModelMotionCreate(lbl_1_data_0[var_r31->unk_18C], lbl_1_data_108[var_r31->unk_18C][var_r29]);
CharModelMotionSet(lbl_1_data_0[var_r31->unk_18C], object->motion[var_r29]);
}
Hu3DModelCameraSet(object->model[0], lbl_1_data_A0[var_r31->unk_184 >> 1]);
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[0]);
Hu3DModelShadowSet(object->model[0]);
fn_1_2DD4(&var_r31->unk_00);
for (var_r29 = 0; var_r29 < 9; var_r29++) {
var_r31->unk_118[var_r29] = espEntry(lbl_1_data_288[var_r29], 0, 0);
espDrawNoSet(var_r31->unk_118[var_r29], 0);
espDispOff(var_r31->unk_118[var_r29]);
espAttrSet(var_r31->unk_118[var_r29], HUSPR_ATTR_NOANIM);
espBankSet(var_r31->unk_118[var_r29], 0);
espPriSet(var_r31->unk_118[var_r29], 0x80 - var_r29);
}
espTPLvlSet(var_r31->unk_118[0], 0.9f);
espTPLvlSet(var_r31->unk_118[1], 0.9f);
if (GWPlayerCfg[var_r31->unk_188].iscom != 0) {
switch (GWPlayerCfg[var_r31->unk_188].diff) {
case 0:
var_r31->unk_CC = &lbl_1_data_1794;
break;
case 1:
var_r31->unk_CC = &lbl_1_data_17B4;
break;
case 2:
var_r31->unk_CC = &lbl_1_data_17D4;
break;
case 3:
default:
var_r31->unk_CC = &lbl_1_data_17F4;
break;
}
}
CharModelLayerSetAll2(5);
CharModelMotionDataClose(lbl_1_data_0[var_r31->unk_18C]);
object->func = fn_1_10250;
}
void fn_1_113F0(omObjData *object) { }
void fn_1_113F4(omObjData *var_r31)
{
s32 sp48;
UnkM432DllBss0SubStruct *var_r30;
s32 var_r28;
UnkBss0Struct *var_r22;
var_r22 = &lbl_1_bss_0[var_r31->work[0]];
var_r31->model[0] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M432, 0x02));
Hu3DModelCameraSet(var_r31->model[0], lbl_1_data_A0[var_r31->work[0]]);
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], 0);
var_r31->model[1] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M432, 0x04));
Hu3DModelCameraSet(var_r31->model[1], lbl_1_data_A0[var_r31->work[0]]);
Hu3DModelAttrSet(var_r31->model[1], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(var_r31->model[1], HU3D_MOTATTR_LOOP);
Hu3DModelAttrReset(var_r31->model[1], HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(var_r31->model[1], 0);
var_r31->model[2] = fn_1_46C(lbl_1_data_528[var_r31->work[0]]);
Hu3DModelCameraSet(var_r31->model[2], lbl_1_data_A0[var_r31->work[0]]);
Hu3DModelAttrSet(var_r31->model[2], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(var_r31->model[2], HU3D_MOTATTR_LOOP);
Hu3DModelAttrReset(var_r31->model[2], HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(var_r31->model[2], 1);
var_r31->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x01));
Hu3DModelCameraSet(var_r31->model[3], lbl_1_data_A0[var_r31->work[0]]);
Hu3DModelAttrSet(var_r31->model[3], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(var_r31->model[3], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(var_r31->model[3], HU3D_MOTATTR_LOOP);
Hu3DModelLayerSet(var_r31->model[3], 0);
var_r31->model[24] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M432, 0x03));
Hu3DModelCameraSet(var_r31->model[24], lbl_1_data_A0[var_r31->work[0]]);
Hu3DModelLayerSet(var_r31->model[24], 0);
Hu3DModelPosSet(var_r31->model[24], 0.0f, 0.0f, 0.0f);
Hu3DModelRotSet(var_r31->model[24], 0.0f, 0.0f, 0.0f);
Hu3DModelAttrSet(var_r31->model[24], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(var_r31->model[24], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(var_r31->model[24], HU3D_MOTATTR_LOOP);
var_r31->model[25] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x07));
Hu3DMotionSet(var_r31->model[25], Hu3DJointMotionFile(var_r31->model[25], DATA_MAKE_NUM(DATADIR_M432, 0x08)));
Hu3DModelCameraSet(var_r31->model[25], lbl_1_data_A0[var_r31->work[0]]);
Hu3DModelAttrSet(var_r31->model[25], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(var_r31->model[25], HU3D_MOTATTR_LOOP);
Hu3DModelAttrReset(var_r31->model[25], HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(var_r31->model[25], 2);
Hu3DModelShadowSet(var_r31->model[25]);
omSetTra(var_r31, var_r22->unk_28.x, 0.0f, 0.0f);
omSetRot(var_r31, 0.0f, 0.0f, 0.0f);
for (var_r28 = 0; var_r28 < 0x1A; var_r28++) {
Hu3DModelPosSet(var_r31->model[var_r28], var_r22->unk_28.x, 0.0f, 0.0f);
Hu3DModelRotSet(var_r31->model[var_r28], 0.0f, 0.0f, 0.0f);
}
for (var_r28 = 0; var_r28 < 2; var_r28++) {
var_r22->unk_10[var_r28] = HuMemDirectMallocNum(HEAP_SYSTEM, 31 * sizeof(UnkM432DllBss0SubStruct), MEMORY_DEFAULT_NUM);
memcpy(var_r22->unk_10[var_r28], var_r28 == 0 ? &lbl_1_data_5EC : &lbl_1_data_EDC, 31 * sizeof(UnkM432DllBss0SubStruct));
for (var_r30 = var_r22->unk_10[var_r28], sp48 = 0; sp48 < 0x1F; sp48++, var_r30++) {
fn_1_1D18(var_r31->model[3], var_r30->unk_00, &var_r30->unk_20);
var_r30->unk_2C = var_r30->unk_20;
var_r30->unk_38 = 0.0f;
var_r30->unk_3C = 0.0f;
var_r30->unk_40 = -1;
var_r30->unk_44 = sp48;
if ((var_r30->unk_08 > 0) && (var_r30->unk_0C[var_r31->work[0]] != 0)) {
var_r31->model[var_r30->unk_08] = fn_1_46C(var_r30->unk_0C[var_r31->work[0]]);
Hu3DModelCameraSet(var_r31->model[var_r30->unk_08], lbl_1_data_A0[var_r31->work[0]]);
Hu3DModelLayerSet(var_r31->model[var_r30->unk_08], 0);
Hu3DModelPosSet(var_r31->model[var_r30->unk_08], var_r30->unk_2C.x, var_r30->unk_2C.y, var_r30->unk_2C.z);
Hu3DModelRotSet(var_r31->model[var_r30->unk_08], 0.0f, var_r30->unk_18, 0.0f);
Hu3DModelAttrSet(var_r31->model[var_r30->unk_08], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL);
Hu3DModelAttrSet(var_r31->model[var_r30->unk_08], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(var_r31->model[var_r30->unk_08], HU3D_MOTATTR_LOOP);
Hu3DModelAttrReset(var_r31->model[var_r30->unk_08], HU3D_ATTR_DISPOFF);
}
}
}
for (var_r28 = 0; var_r28 < 4; var_r28++) {
lbl_1_bss_0[var_r31->work[0]].unk_88[var_r28][2].y = 35.0f;
}
fn_1_1D18(var_r31->model[3], "m432_00-d0", &lbl_1_bss_0[var_r31->work[0]].unk_88[0][0]);
fn_1_1D18(var_r31->model[3], "m432_00-d0", &lbl_1_bss_0[var_r31->work[0]].unk_88[1][0]);
fn_1_1D18(var_r31->model[3], "m432_00-d1", &lbl_1_bss_0[var_r31->work[0]].unk_88[2][0]);
fn_1_1D18(var_r31->model[3], "m432_00-d1", &lbl_1_bss_0[var_r31->work[0]].unk_88[3][0]);
fn_1_5364(var_r31->work[0], var_r31);
fn_1_1D18(var_r31->model[3], "m432_00-h0", &lbl_1_bss_0[var_r31->work[0]].unk_118);
for (var_r28 = 0; var_r28 < 8; var_r28++) {
fn_1_1D18(var_r31->model[3], lbl_1_data_3DC[var_r28], &lbl_1_bss_0[var_r31->work[0]].unk_130[var_r28]);
if ((var_r28 % 4) < 2) {
lbl_1_bss_0[var_r31->work[0]].unk_130[var_r28].z -= 150.0f;
}
}
fn_1_1D18(var_r31->model[3], "m432_00-n0", &lbl_1_bss_0[var_r31->work[0]].unk_1C0);
Hu3DModelShadowMapSet(var_r31->model[0]);
Hu3DModelShadowMapSet(var_r31->model[20]);
Hu3DModelShadowMapSet(var_r31->model[21]);
Hu3DModelAttrReset(var_r31->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(var_r31->model[1], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(var_r31->model[2], HU3D_ATTR_DISPOFF);
var_r31->func = fn_1_113F0;
}
void fn_1_12800(omObjData *object) { }
void fn_1_12804(omObjData *object)
{
object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x00));
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
omSetTra(object, lbl_1_bss_0[object->work[0]].unk_28.x, 0.0f, 0.0f);
omSetRot(object, 0.0f, 0.0f, 0.0f);
object->func = fn_1_12800;
}
void fn_1_128C8(omObjData *object)
{
s32 var_r31;
UnkM432DllStruct *var_r30;
UnkM432DllStruct *var_r29;
s32 var_r28;
s32 var_r27;
void *var_r26;
void *var_r25;
omObjData *var_r24;
void *var_r23;
void *var_r22;
if (lbl_1_bss_41C->work[0] >= 0x3EB) {
for (var_r31 = 0; var_r31 < 2; var_r31++) {
var_r24 = lbl_1_bss_0[var_r31].unk_04;
var_r30 = fn_1_51A8(var_r31 * 2);
var_r29 = fn_1_51A8(var_r31 * 2 + 1);
if ((var_r30->unk_180 == 0x7DF) && (var_r29->unk_180 == 0x7DF)) {
lbl_1_bss_0[var_r31].unk_12C += 0.05f;
if (12.0f < lbl_1_bss_0[var_r31].unk_12C) {
lbl_1_bss_0[var_r31].unk_12C = 12.0f;
}
lbl_1_bss_0[var_r31].unk_118.y += lbl_1_bss_0[var_r31].unk_12C;
Hu3DModelPosSet(var_r24->model[22], lbl_1_bss_0[var_r31].unk_118.x, lbl_1_bss_0[var_r31].unk_118.y, lbl_1_bss_0[var_r31].unk_118.z);
lbl_1_bss_0[var_r31].unk_28.y += 0.1f * ((500.0f + lbl_1_bss_0[var_r31].unk_118.y) - lbl_1_bss_0[var_r31].unk_28.y);
lbl_1_bss_0[var_r31].unk_1C.y += 0.01f * (1000.0f - lbl_1_bss_0[var_r31].unk_1C.y);
lbl_1_bss_0[var_r31].unk_1C.z += 0.002f * ((4000.0f + lbl_1_bss_0[var_r31].unk_118.z) - lbl_1_bss_0[var_r31].unk_1C.z);
Hu3DCameraPosSetV(lbl_1_data_A0[var_r31], &lbl_1_bss_0[var_r31].unk_1C, &lbl_1_data_C8, &lbl_1_bss_0[var_r31].unk_28);
}
else {
fn_1_623C(&lbl_1_bss_0[var_r31], var_r31, var_r30, var_r29);
if (NULL != lbl_1_bss_0[var_r31].unk_08) {
fn_1_6F28(&lbl_1_bss_0[var_r31]);
}
if ((2.0f <= lbl_1_bss_0[var_r31].unk_1E8) && (lbl_1_bss_0[var_r31].unk_1EC != 0.0f)) {
fn_1_7C1C(&lbl_1_bss_0[var_r31], var_r30, var_r29);
}
lbl_1_bss_0[var_r31].unk_0C = NULL;
lbl_1_bss_0[var_r31].unk_1E8 = 0.0f;
lbl_1_bss_0[var_r31].unk_1EC = 0.0f;
lbl_1_bss_0[var_r31].unk_1F0[0] = 0.0f;
lbl_1_bss_0[var_r31].unk_1F0[1] = 0.0f;
}
}
if (lbl_1_bss_41C->work[0] >= 0x3EC) {
for (var_r31 = 0; var_r31 < 2; var_r31++) {
if (lbl_1_bss_0[var_r31].unk_1CC >= 0) {
HuAudFXStop(lbl_1_bss_0[var_r31].unk_1CC);
}
if (lbl_1_bss_0[var_r31].unk_1D0 >= 0) {
HuAudFXStop(lbl_1_bss_0[var_r31].unk_1D0);
}
if (lbl_1_bss_0[var_r31].unk_1D8 >= 0) {
HuAudFXStop(lbl_1_bss_0[var_r31].unk_1D8);
}
lbl_1_bss_0[var_r31].unk_1CC = -1;
lbl_1_bss_0[var_r31].unk_1D0 = -1;
lbl_1_bss_0[var_r31].unk_1D8 = -1;
}
}
}
}
void fn_1_12EA8(void)
{
float var_f31;
float var_f30;
UnkBss0Struct *var_r31;
s32 var_r30;
for (var_r30 = 0; var_r30 < 2; var_r30++) {
var_r31 = &lbl_1_bss_0[var_r30];
if (var_r31->unk_7C == 0.0f) {
var_r31->unk_1C = var_r31->unk_28;
var_r31->unk_1C.x = var_r31->unk_1C.x + (var_r31->unk_68 * sind(var_r31->unk_64));
var_r31->unk_1C.y += var_r31->unk_6C;
var_r31->unk_1C.z = var_r31->unk_1C.z + (var_r31->unk_68 * cosd(var_r31->unk_64));
}
else {
var_r31->unk_78 += 1.0f;
var_f30 = var_r31->unk_78 / var_r31->unk_7C;
var_f31 = sind((90.0f * var_f30)) * sind((90.0f * var_f30));
var_r31->unk_1C.x = var_r31->unk_34.x + (var_f31 * (var_r31->unk_40.x - var_r31->unk_34.x));
var_r31->unk_1C.y = var_r31->unk_34.y + (var_f31 * (var_r31->unk_40.y - var_r31->unk_34.y));
var_r31->unk_1C.z = var_r31->unk_34.z + (var_f31 * (var_r31->unk_40.z - var_r31->unk_34.z));
var_r31->unk_28.x = var_r31->unk_4C.x + (var_f31 * (var_r31->unk_58.x - var_r31->unk_4C.x));
var_r31->unk_28.y = var_r31->unk_4C.y + (var_f31 * (var_r31->unk_58.y - var_r31->unk_4C.y));
var_r31->unk_28.z = var_r31->unk_4C.z + (var_f31 * (var_r31->unk_58.z - var_r31->unk_4C.z));
if (var_r31->unk_7C <= var_r31->unk_78) {
var_r31->unk_68 = var_r31->unk_1C.z - var_r31->unk_28.z;
var_r31->unk_6C = var_r31->unk_1C.y - var_r31->unk_28.y;
var_r31->unk_78 = 0.0f;
var_r31->unk_7C = 0.0f;
}
}
Hu3DCameraPosSetV(lbl_1_data_A0[var_r30], &var_r31->unk_1C, &lbl_1_data_C8, &var_r31->unk_28);
}
}
void fn_1_131A8(omObjData *var_r28)
{
Vec sp98;
Vec sp8C;
Vec sp80;
UnkM432DllStruct *sp7C[1];
float var_f31;
float var_f30;
float var_f27;
float var_f26;
float var_f22;
float var_f21;
UnkBss0Struct *var_r29;
s32 var_r26;
s32 var_r17;
if (omSysExitReq != 0) {
fn_1_1F58(-1);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C);
var_r28->func = fn_1_1615C;
}
lbl_1_bss_580++;
switch (var_r28->work[0]) {
case 0x3E8:
if (WipeStatGet() == 0) {
var_r28->work[0]++;
lbl_1_bss_3F0 = 0.0f;
}
break;
case 0x3E9:
lbl_1_bss_3F0 += 1.0f;
var_f31 = lbl_1_bss_3F0 / 60.0f;
var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31));
for (var_r26 = 0; var_r26 < 2; var_r26++) {
lbl_1_bss_0[var_r26].unk_28.z = -300.0f + (-400.0f * var_f30);
}
fn_1_12EA8();
if (60.0f <= lbl_1_bss_3F0) {
var_r28->work[0]++;
lbl_1_bss_3F0 = 0.0f;
}
break;
case 0x3EA:
if (lbl_1_bss_576 < 0) {
lbl_1_bss_576 = MGSeqCreate(3, 0);
}
else {
if ((lbl_1_bss_570 < 0) && ((MGSeqStatGet(lbl_1_bss_576) & 0x10) != 0)) {
fn_1_1F24(0x46);
}
if (MGSeqStatGet(lbl_1_bss_576) == 0) {
var_r28->work[0]++;
lbl_1_bss_57C = 0;
lbl_1_bss_576 = -1;
lbl_1_bss_3F0 = 0.0f;
}
}
break;
case 0x3EB:
lbl_1_bss_57C++;
if (lbl_1_bss_574 >= 0) {
MGSeqParamSet(lbl_1_bss_574, 1, (0x468B - lbl_1_bss_57C) / 60);
}
else if (lbl_1_bss_57C > 0x3F48) {
lbl_1_bss_574 = MGSeqCreate(1, (0x468B - lbl_1_bss_57C) / 60, -1, -1);
MGSeqPosSet(lbl_1_bss_574, 288.0f, 400.0f);
}
fn_1_580(lbl_1_bss_528, 0, lbl_1_bss_57C);
fn_1_12EA8();
if ((lbl_1_bss_57C >= 0x4650) || (lbl_1_bss_3FC >= 0)) {
var_r28->work[0] = 0x3EC;
lbl_1_bss_3F0 = 0.0f;
}
break;
case 0x3EC:
if (lbl_1_bss_576 < 0) {
if (lbl_1_bss_574 >= 0) {
MGSeqParamSet(lbl_1_bss_574, 2, -1);
}
lbl_1_bss_574 = -1;
lbl_1_bss_3F8 = 0;
lbl_1_bss_576 = MGSeqCreate(3, 1);
fn_1_1F58(0x64);
}
else {
var_r17 = 0;
for (var_r26 = 0; var_r26 < 4; var_r26++) {
if (((UnkM432DllStruct *)lbl_1_bss_410[var_r26]->data)->unk_180 >= 0x7DA) {
var_r17++;
}
}
if (++lbl_1_bss_3F8 > 0x78) {
var_r17 = 4;
}
lbl_1_bss_3F0 += 1.0f;
if ((var_r17 >= 4) && (60.0f <= lbl_1_bss_3F0) && (MGSeqStatGet(lbl_1_bss_576) == 0)) {
var_r28->work[0] = 0x3EE;
if ((lbl_1_bss_3FC >= 0) && (lbl_1_bss_57C < 0x1518)) {
if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC)->unk_188].iscom != 0) {
if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC + 1)->unk_188].iscom == 0) {
goto block_81;
}
}
else {
block_81:
GWGameStat.present[0x32] = 1;
}
}
if ((lbl_1_bss_3FC >= 0) && (lbl_1_bss_578 > lbl_1_bss_57C)) {
if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC)->unk_188].iscom != 0) {
if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC + 1)->unk_188].iscom == 0) {
goto block_98;
}
}
else {
block_98:
var_r28->work[0] = 0x3ED;
fn_1_798(3);
}
}
lbl_1_bss_576 = -1;
lbl_1_bss_3F0 = 0.0f;
}
}
break;
case 0x3ED:
if (lbl_1_bss_576 < 0) {
lbl_1_bss_576 = MGSeqCreate(0xE, lbl_1_bss_578);
}
else if (MGSeqStatGet(lbl_1_bss_576) == 0) {
var_r28->work[0]++;
lbl_1_bss_3F0 = 0.0f;
lbl_1_bss_576 = -1;
}
break;
case 0x3EE:
if (lbl_1_bss_3FC < 0) {
var_r28->work[0] = 0x3F1;
lbl_1_bss_3F0 = 0.0f;
}
else if (2000.0f < lbl_1_bss_0[lbl_1_bss_3FC >> 1].unk_118.y) {
var_r28->work[0]++;
WipeColorSet(0xFF, 0xFF, 0xFF);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
}
break;
case 0x3EF:
if (WipeStatGet() == 0) {
var_r28->work[0]++;
lbl_1_bss_3F0 = 0.0f;
omDelObjEx(lbl_1_bss_5B4, lbl_1_bss_414);
Hu3DCameraKill(lbl_1_data_A0[(lbl_1_bss_3FC >> 1) ^ 1]);
Hu3DCameraPerspectiveSet(lbl_1_data_A0[lbl_1_bss_3FC >> 1], 20.0f, 20.0f, 20000.0f, 1.2f);
Hu3DCameraViewportSet(lbl_1_data_A0[lbl_1_bss_3FC >> 1], 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
Hu3DCameraScissorSet(lbl_1_data_A0[lbl_1_bss_3FC >> 1], 0, 0, 0x280, 0x1E0);
var_r29 = &lbl_1_bss_0[lbl_1_bss_3FC >> 1];
var_r29->unk_118.y = 5000.0f;
Hu3DModelPosSet(var_r29->unk_04->model[22], var_r29->unk_118.x, var_r29->unk_118.y, var_r29->unk_118.z);
Hu3DModelPosSet(var_r29->unk_04->model[24], var_r29->unk_118.x, var_r29->unk_118.y, var_r29->unk_118.z);
Hu3DModelAttrReset(var_r29->unk_04->model[24], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(var_r29->unk_04->model[24], HU3D_MOTATTR_PAUSE);
var_r29->unk_28.y = 8000.0f;
var_r29->unk_1C.y = 8000.0f;
var_r29->unk_1C.z = 5000.0f + var_r29->unk_118.z;
Hu3DCameraPosSetV(lbl_1_data_A0[lbl_1_bss_3FC >> 1], &var_r29->unk_1C, &lbl_1_data_C8, &var_r29->unk_28);
var_r29->unk_4C = var_r29->unk_28;
var_r29->unk_58 = var_r29->unk_28;
var_r29->unk_34 = var_r29->unk_1C;
var_r29->unk_40 = var_r29->unk_1C;
var_r29->unk_58.y = 5200.0f;
var_r29->unk_40.y = 5200.0f;
var_r29->unk_40.z = 2000.0f + var_r29->unk_118.z;
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x3C);
lbl_1_bss_3F4 = HuAudFXPlay(0x69B);
}
break;
case 0x3F0:
var_r29 = &lbl_1_bss_0[lbl_1_bss_3FC >> 1];
lbl_1_bss_3F0 += 1.0f;
var_f31 = lbl_1_bss_3F0 / 180.0f;
var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31));
var_r29->unk_28.y = var_r29->unk_4C.y + (var_f30 * (var_r29->unk_58.y - var_r29->unk_4C.y));
var_r29->unk_1C.y = var_r29->unk_34.y + (var_f30 * (var_r29->unk_40.y - var_r29->unk_34.y));
if (90.0f < lbl_1_bss_3F0) {
var_f31 = (lbl_1_bss_3F0 - 90.0f) / 90.0f;
var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31));
var_r29->unk_1C.z = var_r29->unk_34.z + (var_f30 * (var_r29->unk_40.z - var_r29->unk_34.z));
}
Hu3DCameraPosSetV(lbl_1_data_A0[lbl_1_bss_3FC >> 1], &var_r29->unk_1C, &lbl_1_data_C8, &var_r29->unk_28);
if (180.0f <= lbl_1_bss_3F0) {
var_r28->work[0]++;
lbl_1_bss_3F0 = 0.0f;
}
break;
case 0x3F1:
if (lbl_1_bss_576 < 0) {
if (lbl_1_bss_3FC < 0) {
lbl_1_bss_576 = MGSeqCreate(3, 2);
HuAudSStreamPlay(4);
}
else {
lbl_1_bss_576 = MGSeqCreate(5, 3, fn_1_51A8(lbl_1_bss_3FC)->unk_18C, fn_1_51A8(lbl_1_bss_3FC + 1)->unk_18C, -1, -1);
HuAudSStreamPlay(1);
}
}
else {
lbl_1_bss_3F0 += 1.0f;
if (0 <= lbl_1_bss_3FC) { }
if ((210.0f < lbl_1_bss_3F0) && (MGSeqStatGet(lbl_1_bss_576) == 0)) {
fn_1_1F58(-1);
lbl_1_bss_576 = -1;
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C);
var_r28->func = fn_1_1615C;
}
}
break;
default:
OSReport("*** main mode error(%d)!!\n", var_r28->work[0]);
break;
}
fn_1_A40();
if ((lbl_1_bss_3FC >= 0) && (var_r28->work[0] >= 0x3F0)) {
var_r29 = &lbl_1_bss_0[lbl_1_bss_3FC >> 1];
var_r29->unk_118.y = 5000.0 + (10.0 * sind((lbl_1_bss_580 * 4)));
Hu3DModelPosSet(var_r29->unk_04->model[22], var_r29->unk_118.x, var_r29->unk_118.y, var_r29->unk_118.z);
}
sp98.x = 0.0f;
sp98.y = 0.0f;
sp98.z = 0.0f;
for (var_r26 = 0; var_r26 < 4; var_r26++) {
sp7C[0] = lbl_1_bss_410[var_r26]->data;
sp98.x += sp7C[0]->unk_00.unk_6C.x;
sp98.z += sp7C[0]->unk_00.unk_6C.z;
}
sp98.x *= 0.25f;
sp98.z *= 0.25f;
var_f27 = 0.0f;
for (var_r26 = 0; var_r26 < 4; var_r26++) {
var_f26 = VECDistance(&sp98, &((UnkM432DllStruct *)lbl_1_bss_410[var_r26]->data)->unk_00.unk_6C);
if (var_f27 < var_f26) {
var_f27 = var_f26;
}
}
fn_1_52B8_inline(&sp80, sp98.x, 0.0f, sp98.z);
sp98.y = 6.0f * var_f27;
sp98.z += 1000.0f;
VECNormalize(&sp98, &sp8C);
Hu3DShadowPosSet(&sp98, &sp8C, &sp80);
fn_1_2D8();
}
void fn_1_15320(omObjData *object)
{
s32 var_r31;
object->work[0] = 0x3E8;
fn_1_B4C(80.0f, DATA_MAKE_NUM(DATADIR_M432, 0x1E));
fn_1_9EC();
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_131A8;
}
void ObjectSetup(void)
{
Vec sp8;
float var_f31;
float var_f30;
float var_f29;
UnkBss0Struct *var_r31;
s32 var_r30;
float *var_r29;
UnkM432DllStruct *var_r28;
omObjData *var_r27;
s32 var_r26;
s32 var_r24;
s32 var_r23;
s32 var_r22;
s32 var_r21;
s32 var_r20;
OSReport("******* M432 ObjectSetup *********\n");
lbl_1_bss_5B4 = omInitObjMan(0x258, 0x2000);
omGameSysInit(lbl_1_bss_5B4);
nMap = 0;
nChar = 0;
lbl_1_bss_580 = 0;
lbl_1_bss_576 = -1;
lbl_1_bss_574 = -1;
lbl_1_bss_3FC = -1;
lbl_1_bss_3F8 = 0;
lbl_1_bss_570 = -1;
lbl_1_bss_3F4 = -1;
lbl_1_bss_57C = 0;
lbl_1_bss_578 = GWMGRecordGet(3);
lbl_1_bss_568 = -1.0f;
if (lbl_1_bss_578 == 0) {
lbl_1_bss_578 = 0x1C20;
}
fn_1_414();
for (var_r30 = 0; var_r30 < 2; var_r30++) {
lbl_1_bss_0[var_r30].unk_08 = NULL;
lbl_1_bss_0[var_r30].unk_18 = 0;
lbl_1_bss_0[var_r30].unk_28.x = -800.0f + (1600.0f * var_r30);
lbl_1_bss_0[var_r30].unk_28.y = 0.0f;
lbl_1_bss_0[var_r30].unk_28.z = -300.0f;
lbl_1_bss_0[var_r30].unk_1E4 = 0.0f;
lbl_1_bss_0[var_r30].unk_64 = 0.0f;
lbl_1_bss_0[var_r30].unk_68 = 3900.0f;
lbl_1_bss_0[var_r30].unk_6C = 3250.0f;
lbl_1_bss_0[var_r30].unk_1E8 = 0.0f;
lbl_1_bss_0[var_r30].unk_70 = 0.0f;
lbl_1_bss_0[var_r30].unk_74 = 0.0f;
lbl_1_bss_0[var_r30].unk_78 = 0.0f;
lbl_1_bss_0[var_r30].unk_7C = 0.0f;
lbl_1_bss_0[var_r30].unk_80 = 0.0f;
lbl_1_bss_0[var_r30].unk_84 = 0.0f;
lbl_1_bss_0[var_r30].unk_124 = 0.0f;
lbl_1_bss_0[var_r30].unk_128 = 0.0f;
lbl_1_bss_0[var_r30].unk_12C = 0.0f;
lbl_1_bss_0[var_r30].unk_1B8 = frandmod(5);
lbl_1_bss_0[var_r30].unk_1BC = frandmod(9);
lbl_1_bss_0[var_r30].unk_1CC = -1;
lbl_1_bss_0[var_r30].unk_1D0 = -1;
lbl_1_bss_0[var_r30].unk_1D4 = 0.0f;
lbl_1_bss_0[var_r30].unk_1D8 = -1;
lbl_1_bss_0[var_r30].unk_1DC = 0.0f;
}
Hu3DCameraCreate(3);
Hu3DCameraPerspectiveSet(3, 20.0f, 20.0f, 20000.0f, 0.6f);
fn_1_12EA8();
for (var_r29 = lbl_1_data_A8, var_r30 = 0; var_r30 < 2; var_r30++, var_r29 += 4) {
Hu3DCameraViewportSet(lbl_1_data_A0[var_r30], var_r29[0], var_r29[1], var_r29[2], var_r29[3], 0.0f, 1.0f);
Hu3DCameraScissorSet(lbl_1_data_A0[var_r30], var_r29[0], var_r29[1], var_r29[2], var_r29[3]);
}
var_r20 = Hu3DGLightCreateV(&lbl_1_data_D4, &lbl_1_data_E0, &lbl_1_data_EC);
Hu3DGLightStaticSet(var_r20, 0);
Hu3DGLightInfinitytSet(var_r20);
Hu3DShadowCreate(30.0f, 20.0f, 20000.0f);
Hu3DShadowTPLvlSet(0.5f);
VECNormalize(&lbl_1_data_F0, &sp8);
Hu3DShadowPosSet(&lbl_1_data_F0, &sp8, &lbl_1_data_FC);
fn_1_2C00(fn_1_AA00, 0.0f);
omMakeGroupEx(lbl_1_bss_5B4, 2, 4);
lbl_1_bss_410 = omGetGroupMemberListEx(lbl_1_bss_5B4, 2);
for (var_r30 = 0; var_r30 < 4; var_r30++) {
var_r27 = omAddObjEx(lbl_1_bss_5B4, 0x68, 1, 0xB, 2, fn_1_10CCC);
var_r27->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM432DllStruct), MEMORY_DEFAULT_NUM);
var_r27->work[0] = var_r30;
var_r28 = var_r27->data;
var_r28->unk_184 = -1;
var_r28->unk_188 = var_r27->work[0];
var_r28->unk_194 = GWPlayerCfg[var_r28->unk_188].group;
}
for (var_r30 = 0; var_r30 < 4; var_r30++) {
var_r22 = -1;
var_r21 = 0x28;
for (var_r26 = 0; var_r26 < 4; var_r26++) {
var_r28 = lbl_1_bss_410[var_r26]->data;
if (var_r28->unk_184 < 0) {
var_r23 = var_r28->unk_188 + (var_r28->unk_194 * 4);
if (var_r21 > var_r23) {
var_r21 = var_r23;
var_r22 = var_r26;
}
}
}
((UnkM432DllStruct *)lbl_1_bss_410[var_r22]->data)->unk_184 = var_r30;
}
for (var_r30 = 0; var_r30 < 2; var_r30++) {
lbl_1_bss_0[var_r30].unk_04 = omAddObjEx(lbl_1_bss_5B4, 0x64, 0x1A, 0, 0, fn_1_113F4);
lbl_1_bss_0[var_r30].unk_04->work[0] = var_r30;
lbl_1_bss_0[var_r30].unk_00 = omAddObjEx(lbl_1_bss_5B4, 0x65, 1, 0, 1, fn_1_12804);
lbl_1_bss_0[var_r30].unk_00->work[0] = var_r30;
MapObject[nMap++] = lbl_1_bss_0[var_r30].unk_00;
}
fn_1_150();
lbl_1_bss_408 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M432, 0x28));
HuSprAnimLock(lbl_1_bss_408);
lbl_1_bss_404 = Hu3DParManCreate(lbl_1_bss_408, 0x1F4, &lbl_1_data_1814);
Hu3DParManAttrSet(lbl_1_bss_404, 1);
lbl_1_bss_402 = 0;
fn_1_0();
omMakeGroupEx(lbl_1_bss_5B4, 3, 0xF0);
lbl_1_bss_418 = omGetGroupMemberListEx(lbl_1_bss_5B4, 3);
lbl_1_bss_400 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x09));
Hu3DModelAttrSet(lbl_1_bss_400, HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(lbl_1_bss_400, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
lbl_1_bss_414 = omAddObjEx(lbl_1_bss_5B4, 0x66, 0, 0, -1, fn_1_128C8);
lbl_1_bss_41C = omAddObjEx(lbl_1_bss_5B4, 0x69, 0x1A, 0, -1, fn_1_15320);
lbl_1_bss_41C->work[0] = 0x3E8;
}
void fn_1_1615C(omObjData *arg0)
{
s32 var_r31;
if (lbl_1_bss_3F4 >= 0) {
lbl_1_bss_3F4 = -1;
HuAudFXStop(lbl_1_bss_3F4);
}
if (WipeStatGet() == 0) {
if (lbl_1_bss_576 >= 0) {
MGSeqKill(lbl_1_bss_576);
}
if (lbl_1_bss_574 >= 0) {
MGSeqKill(lbl_1_bss_574);
}
MGSeqKillAll();
HuAudAllStop();
for (var_r31 = 0; var_r31 < 4; var_r31++) {
CharModelKill(lbl_1_data_0[GWPlayerCfg[var_r31].character]);
}
omOvlReturnEx(1, 1);
}
}