marioparty4/src/REL/m416Dll/main.c
2025-04-14 21:39:19 +02:00

1837 lines
61 KiB
C

#include "game/audio.h"
#include "game/chrman.h"
#include "game/frand.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfdraw.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/sprite.h"
#include "game/wipe.h"
#include "ext_math.h"
#include "REL/m416Dll.h"
typedef struct camera_view_params {
float zoom;
Vec pos;
Vec rot;
} CameraViewParams;
CameraViewParams lbl_1_data_0[2] = { { 1676.6, { 0, 172, 123 }, { -18, 0, 0 } }, { 1200, { 0, 0, -600 }, { -24, 0, 0 } } };
GXColor lbl_1_data_38 = { 255, 255, 255, 255 };
GXColor lbl_1_data_3C = { 255, 160, 96, 255 };
typedef struct struct_bss_14 {
float unk0;
float unk4;
u8 unk8;
float unkC;
} StructBss14;
s32 lbl_1_bss_960;
s16 lbl_1_bss_95C;
omObjData *lbl_1_bss_958;
omObjData *lbl_1_bss_954;
omObjData *lbl_1_bss_950;
omObjData *lbl_1_bss_930[2][4];
s16 lbl_1_bss_92E;
s16 lbl_1_bss_92A[2];
s16 lbl_1_bss_928;
s16 lbl_1_bss_926;
s16 lbl_1_bss_924;
float lbl_1_bss_920;
s16 lbl_1_bss_91A[2];
s16 lbl_1_bss_918;
AnimData *lbl_1_bss_914;
StructBss14 lbl_1_bss_14[12][12];
s16 lbl_1_bss_12;
s16 lbl_1_bss_10;
s32 lbl_1_bss_4[3];
s32 lbl_1_bss_0;
void fn_1_458(omObjData *object);
void fn_1_4FC(omObjData *object);
void fn_1_1260(Process *objman);
void fn_1_6E5C(omObjData *object);
void ObjectSetup(void)
{
Process *objman;
Vec pos;
Vec up;
Vec target;
OSReport("******* M416ObjectSetup *********\n");
objman = omInitObjMan(50, 8192);
omGameSysInit(objman);
Hu3DCameraCreate(1);
Hu3DCameraPerspectiveSet(1, 30, 20, 25000, 1.2);
Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1);
lbl_1_bss_950 = omAddObjEx(objman, 32730, 0, 0, -1, omOutView);
lbl_1_bss_958 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_458);
fn_1_1260(objman);
lbl_1_bss_954 = omAddObjEx(objman, 10, 0, 0, -1, fn_1_6E5C);
pos.x = 0;
pos.y = 3000;
pos.z = 1;
up.x = 0;
up.y = 1;
up.z = 0;
target.x = 0;
target.y = 0;
target.z = 0;
Hu3DShadowCreate(30, 20, 25000);
Hu3DShadowTPLvlSet(0.9f);
Hu3DShadowPosSet(&pos, &up, &target);
Hu3DLightAllKill();
lbl_1_bss_91A[0] = Hu3DGLightCreate(-700, 1200, 700, 0, -0.5, -1, lbl_1_data_38.r, lbl_1_data_38.g, lbl_1_data_38.b);
Hu3DGLightStaticSet(lbl_1_bss_91A[0], 1);
Hu3DGLightInfinitytSet(lbl_1_bss_91A[0]);
lbl_1_bss_91A[1] = Hu3DGLightCreate(0, 0, 0, 0, 0, 0, 0, 0, 0);
Hu3DGLightStaticSet(lbl_1_bss_91A[1], 1);
Hu3DGLightPointSet(lbl_1_bss_91A[1], 0, 0, 3);
lbl_1_bss_918 = 0;
HuAudSndGrpSet(41);
Hu3DBGColorSet(0, 0, 0);
fn_1_79D0(objman);
}
void fn_1_458(omObjData *object)
{
lbl_1_bss_928 = 30;
lbl_1_bss_926 = 60;
fn_1_1250(0);
lbl_1_bss_924 = -1;
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
lbl_1_bss_920 = 1;
fn_1_8FF4(1);
object->func = fn_1_4FC;
}
typedef struct bss_930_work_4c {
u8 field_0_bit0 : 1;
float unk4;
float unk8;
float unkC;
s16 unk10;
} Bss930Work4C;
typedef struct bss_930_work {
u8 field_0_bit0 : 1;
u8 field_0_bit1 : 1;
u8 field_0_bit2 : 1;
u8 field_0_bit3 : 1;
u8 field_0_bit4 : 1;
s16 unk02;
s16 unk04;
s8 unk06;
s8 unk07;
u16 unk08;
u16 unk0A;
s16 unk0C;
s16 unk0E;
s16 unk10;
s16 unk12;
s16 unk14;
float unk18;
Vec unk1C;
s32 unk28;
s32 unk2C;
u32 unk30;
u32 unk34;
float unk38;
u32 unk3C;
s16 unk40;
s16 unk42;
s16 unk44;
s16 unk46;
omObjFunc unk48;
Bss930Work4C *unk4C;
s16 unk50;
Vec unk54;
s16 unk60;
Vec unk64;
s16 unk70;
Vec unk74;
float unk80;
float unk84;
} Bss930Work;
s32 lbl_1_data_64 = -1;
void fn_1_11E8(omObjData *object);
s32 fn_1_14E8(void);
void fn_1_52BC(void);
void fn_1_4FC(omObjData *object)
{
Bss930Work *temp_r31;
s32 temp_r30;
s16 temp_r29;
Vec sp1C;
Vec sp10;
s16 sp8[4];
switch (fn_1_1240()) {
case 0:
if (!WipeStatGet()) {
HuAudFXPlay(1471);
fn_1_1250(1);
lbl_1_bss_95C = 30;
}
break;
case 1:
if (--lbl_1_bss_95C == 0) {
fn_1_1250(2);
lbl_1_bss_95C = 84;
}
break;
case 2:
if (lbl_1_bss_95C) {
if (--lbl_1_bss_95C == 0) {
HuAudFXPlay(1470);
}
}
else {
if (lbl_1_bss_920 > 0) {
lbl_1_bss_920 -= 0.020000001f;
if (lbl_1_bss_920 < 0) {
lbl_1_bss_920 = 0;
}
Hu3DGLightColorSet(
lbl_1_bss_91A[0], lbl_1_data_38.r * lbl_1_bss_920, lbl_1_data_38.g * lbl_1_bss_920, lbl_1_data_38.b * lbl_1_bss_920, 255);
}
if (lbl_1_bss_920 < 0.1f) {
if (lbl_1_bss_0 == 0) {
temp_r31 = lbl_1_bss_930[0][0]->data;
HuAudCharVoicePlay(temp_r31->unk0C, 296);
lbl_1_bss_0 = 1;
}
}
if (lbl_1_bss_920 <= 0.0f) {
fn_1_1250(3);
lbl_1_bss_95C = 60;
}
}
break;
case 3:
if (--lbl_1_bss_95C == 0) {
fn_1_1250(4);
lbl_1_bss_95C = 60;
Hu3DGLightColorSet(lbl_1_bss_91A[1], lbl_1_data_3C.r, lbl_1_data_3C.g, lbl_1_data_3C.b, lbl_1_data_3C.a);
fn_1_8FF4(0.0625f);
Hu3DShadowData.unk_08.x = 135;
MTXLightPerspective(Hu3DShadowData.unk_68, Hu3DShadowData.unk_08.x, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f);
lbl_1_bss_918 = 1;
HuAudFXEmiterPlay(1464, &lbl_1_bss_930[0][0]->trans);
}
break;
case 4:
if (--lbl_1_bss_95C == 0) {
fn_1_1250(5);
lbl_1_bss_12 = MGSeqStartCreate();
}
break;
case 5:
if (MGSeqStatGet(lbl_1_bss_12) == 0) {
lbl_1_bss_10 = MGSeqTimerCreate(30);
fn_1_1250(6);
}
if (lbl_1_data_64 < 0 && (MGSeqStatGet(lbl_1_bss_12) & 0x10)) {
lbl_1_data_64 = HuAudSeqPlay(73);
}
break;
case 6:
if (--lbl_1_bss_926 == 0) {
lbl_1_bss_928--;
MGSeqParamSet(lbl_1_bss_10, 1, lbl_1_bss_928);
lbl_1_bss_926 = 60;
}
if (lbl_1_bss_928 == 0 || lbl_1_bss_924 >= 0) {
lbl_1_bss_12 = MGSeqFinishCreate();
fn_1_1250(7);
HuAudSeqAllFadeOut(100);
}
break;
case 7:
if (lbl_1_bss_10 >= 0) {
MGSeqParamSet(lbl_1_bss_10, 2, -1);
lbl_1_bss_10 = -1;
}
if (MGSeqStatGet(lbl_1_bss_12) == 0) {
lbl_1_bss_95C = 60;
fn_1_1250(8);
}
break;
case 8:
if (lbl_1_bss_95C) {
if (--lbl_1_bss_95C == 0) {
Hu3DShadowData.unk_08.x = 30;
MTXLightPerspective(Hu3DShadowData.unk_68, Hu3DShadowData.unk_08.x, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f);
lbl_1_bss_918 = 0;
sp1C.x = 0;
sp1C.y = 3000;
sp1C.z = 1;
sp10.x = 0;
sp10.y = 0;
sp10.z = 0;
Hu3DShadowPosSet(&sp1C, &Hu3DShadowData.unk_2C, &sp10);
HuAudFXPlay(1470);
}
}
else {
lbl_1_bss_920 += 0.020000001f;
if (lbl_1_bss_920 >= 1.0f) {
lbl_1_bss_920 = 1.0f;
fn_1_1250(9);
lbl_1_bss_95C = 60;
fn_1_52BC();
}
fn_1_8FF4(lbl_1_bss_920);
Hu3DGLightColorSet(
lbl_1_bss_91A[0], lbl_1_data_38.r * lbl_1_bss_920, lbl_1_data_38.g * lbl_1_bss_920, lbl_1_data_38.b * lbl_1_bss_920, 255);
if (lbl_1_bss_91A[1] >= 0) {
Hu3DGLightColorSet(lbl_1_bss_91A[1], lbl_1_data_3C.r * (1.0f - lbl_1_bss_920), lbl_1_data_3C.g * (1.0f - lbl_1_bss_920),
lbl_1_data_3C.b * (1.0f - lbl_1_bss_920), lbl_1_data_3C.a * (1.0f - lbl_1_bss_920));
}
}
break;
case 9:
if (fn_1_14E8()) {
if (--lbl_1_bss_95C == 0) {
fn_1_1250(10);
lbl_1_bss_95C = 210;
for (temp_r30 = 0; temp_r30 < 4; temp_r30++) {
sp8[temp_r30] = -1;
}
temp_r29 = 0;
if (lbl_1_bss_924 < 0) {
temp_r31 = lbl_1_bss_930[0][0]->data;
sp8[temp_r29++] = temp_r31->unk0C;
GWPlayerCoinWinSet(temp_r31->unk02, 10);
}
else {
for (temp_r30 = 0; temp_r30 < 3; temp_r30++) {
temp_r31 = lbl_1_bss_930[1][temp_r30]->data;
sp8[temp_r29++] = temp_r31->unk0C;
GWPlayerCoinWinSet(temp_r31->unk02, 10);
}
}
lbl_1_bss_12 = MGSeqWinCreate(sp8[0], sp8[1], sp8[2], sp8[3]);
HuAudSStreamPlay(1);
}
}
break;
case 10:
if (--lbl_1_bss_95C == 0) {
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_11E8;
}
break;
}
if (omSysExitReq && !WipeStatGet()) {
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_11E8;
}
fn_1_8F60(lbl_1_bss_920);
}
void fn_1_11E8(omObjData *object)
{
if (!WipeStatGet()) {
MGSeqKillAll();
HuAudFadeOut(1);
fn_1_7A54();
omOvlReturnEx(1, 1);
OSReport("******* M416Exit *********\n");
}
}
s32 fn_1_1240(void)
{
return lbl_1_bss_960;
}
void fn_1_1250(s32 arg0)
{
lbl_1_bss_960 = arg0;
}
void fn_1_156C(omObjData *object);
void fn_1_2930(omObjData *object);
void fn_1_1260(Process *objman)
{
s32 i;
s32 j;
lbl_1_bss_92E = 0;
lbl_1_bss_92A[0] = lbl_1_bss_92A[1] = 0;
omMakeGroupEx(objman, 0, 4);
for (i = 0; i < 4; i++) {
omAddObjEx(objman, 5, 5, 50, 0, fn_1_156C);
}
lbl_1_bss_914 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M416, 0x05));
memset(lbl_1_bss_14, 0, sizeof(lbl_1_bss_14));
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
lbl_1_bss_14[i + 1][j + 1].unk0 = ((0.5f + (j - 5)) * 1100) / 9;
lbl_1_bss_14[i + 1][j + 1].unk4 = ((0.5f + (i - 5)) * 1100) / 9;
}
}
omAddObjEx(objman, 6, 0, 0, -1, fn_1_2930);
}
void fn_1_5D18(omObjData *object);
void fn_1_1480(void)
{
s32 i;
omObjData **group;
group = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
if (group == NULL) {
return;
}
for (i = 0; i < 4; i++) {
fn_1_5D18(group[i]);
}
}
s32 fn_1_14E8(void)
{
s32 i;
omObjData **group;
group = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
for (i = 0; i < 4; i++) {
Bss930Work *work = group[i]->data;
if (!work->field_0_bit3) {
return 0;
}
}
return 1;
}
void fn_1_1964(omObjData *object);
void fn_1_1ADC(omObjData *object);
void fn_1_1D84(omObjData *object);
void fn_1_6AE8(ModelData *model, ParticleData *particle, Mtx matrix);
float lbl_1_data_B0[4][4] = { 0, 0, -400, 0, -340, 0, 200, 155, 0, 0, 400, 180, 340, 0, 200, 205 };
void fn_1_156C(omObjData *object)
{
Bss930Work *work;
s32 player;
work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss930Work), MEMORY_DEFAULT_NUM);
object->data = work;
memset(work, 0, sizeof(Bss930Work));
work->unk02 = lbl_1_bss_92E++;
work->unk04 = GWPlayerCfg[work->unk02].pad_idx;
work->unk0C = GWPlayerCfg[work->unk02].character;
work->unk0E = GWPlayerCfg[work->unk02].diff;
work->unk10 = GWPlayerCfg[work->unk02].group;
object->model[0] = CharModelCreate(work->unk0C, 4);
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP);
Hu3DModelShadowSet(object->model[0]);
work->field_0_bit2 = 1;
work->field_0_bit4 = 1;
work->unk28 = 0;
work->unk2C = -1;
work->unk34 = HU3D_MOTATTR_NONE;
work->unk38 = 50;
if (!work->unk10) {
fn_1_1964(object);
lbl_1_bss_930[0][lbl_1_bss_92A[0]] = object;
player = lbl_1_bss_92A[0];
work->unk12 = lbl_1_bss_92A[0];
lbl_1_bss_92A[0]++;
}
else {
fn_1_1ADC(object);
lbl_1_bss_930[1][lbl_1_bss_92A[1]] = object;
player = lbl_1_bss_92A[1] + 1;
work->unk12 = lbl_1_bss_92A[1];
lbl_1_bss_92A[1]++;
}
Hu3DModelHookSet(object->model[0], "test11_tex_we-itemhook-r", object->model[1]);
Hu3DModelShadowSet(object->model[1]);
Hu3DModelLayerSet(object->model[0], 3);
Hu3DModelLayerSet(object->model[1], 3);
fn_1_8EB4(object->model[0]);
fn_1_8EB4(object->model[1]);
Hu3DMotionSet(object->model[0], object->motion[0]);
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP);
CharModelMotionIndexSet(work->unk0C, object->motion[1], DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02));
CharModelMotionIndexSet(work->unk0C, object->motion[2], DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02));
CharModelMotionDataClose(work->unk0C);
object->model[4] = Hu3DParticleCreate(lbl_1_bss_914, 2);
Hu3DParticleHookSet(object->model[4], fn_1_6AE8);
Hu3DParticleBlendModeSet(object->model[4], 1);
Hu3DModelLayerSet(object->model[4], 6);
Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF);
object->trans.x = lbl_1_data_B0[player][0];
object->trans.y = lbl_1_data_B0[player][1];
object->trans.z = lbl_1_data_B0[player][2];
object->rot.y = lbl_1_data_B0[player][3];
object->rot.x = object->rot.z = 0;
object->scale.x = object->scale.y = object->scale.z = 1;
work->unk84 = object->rot.y;
object->func = fn_1_1D84;
}
u32 lbl_1_data_10C[9][2] = {
DATA_MAKE_NUM(DATADIR_M416, 0x08),
1,
DATA_MAKE_NUM(DATADIR_M416, 0x10),
1,
DATA_MAKE_NUM(DATADIR_M416, 0x18),
1,
DATA_MAKE_NUM(DATADIR_M416, 0x20),
1,
0,
0,
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00),
0,
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17),
0,
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18),
0,
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02),
0,
};
void fn_1_29DC(omObjData *object);
void fn_1_1964(omObjData *object)
{
Bss930Work *work;
s32 i;
work = object->data;
for (i = 0; i < 9; i++) {
if (!lbl_1_data_10C[i][1]) {
object->motion[i] = CharModelMotionCreate(work->unk0C, lbl_1_data_10C[i][0]);
}
else {
object->motion[i] = CharModelMotionCreate(work->unk0C, work->unk0C + lbl_1_data_10C[i][0]);
}
}
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M416, 0x03));
object->model[2] = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M416, 0x06)), 100);
Hu3DParticleHookSet(object->model[2], fn_1_613C);
Hu3DParticleBlendModeSet(object->model[2], 1);
Hu3DModelLayerSet(object->model[2], 6);
Hu3DModelAttrSet(object->model[2], HU3D_ATTR_ZWRITE_OFF);
Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF);
work->unk44 = 5;
work->unk48 = fn_1_29DC;
}
void fn_1_2EA4(omObjData *object);
void fn_1_6640(ModelData *model, ParticleData *particle, Mtx matrix);
void fn_1_6DEC(s16 arg0, u32 arg1);
s32 lbl_1_data_154[9] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x30), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x31), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x32),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2D), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2E), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02) };
void fn_1_1ADC(omObjData *object)
{
Bss930Work *work;
s32 i;
work = object->data;
for (i = 0; i < 9; i++) {
object->motion[i] = CharModelMotionCreate(work->unk0C, lbl_1_data_154[i]);
}
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M416, 0x04));
object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M416, 0x02));
Hu3DModelLayerSet(object->model[2], 3);
fn_1_6DEC(object->model[2], 16);
Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF);
Hu3DMotionSpeedSet(object->model[2], 0);
Hu3DAnimCreate(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M416, 0x07), MEMORY_DEFAULT_NUM), object->model[2], "sb00");
object->model[3] = Hu3DParticleCreate(lbl_1_bss_914, 50);
Hu3DParticleHookSet(object->model[3], fn_1_6640);
Hu3DModelLayerSet(object->model[3], 3);
Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF);
work->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss930Work4C), MEMORY_DEFAULT_NUM);
memset(work->unk4C, 0, sizeof(Bss930Work4C));
work->unk48 = fn_1_2EA4;
}
float fn_1_1C80(float arg1, float arg2, float arg3)
{
float temp_f31;
float temp_f30;
temp_f31 = fmod(arg2 - arg1, 360);
if (temp_f31 < 0.0f) {
temp_f31 += 360.0f;
}
if (temp_f31 > 180.0f) {
temp_f31 -= 360.0f;
}
temp_f30 = fmod(arg1 + (arg3 * temp_f31), 360);
if (temp_f30 < 0.0f) {
temp_f30 += 360.0f;
}
return temp_f30;
}
void fn_1_389C(omObjData *object);
s32 fn_1_5530(omObjData *arg0, Vec *arg1, Vec *arg2);
void fn_1_1D84(omObjData *object)
{
float temp_f31;
float temp_f30;
float temp_f28;
float temp_f27;
float temp_f23;
Bss930Work *temp_r31;
s32 temp_r29;
u32 temp_r28;
s32 temp_r27;
Vec sp40;
Vec sp34;
temp_r31 = object->data;
temp_r29 = temp_r31->unk28;
temp_r28 = temp_r31->unk30;
switch (temp_r31->unk14) {
case 0:
if (fn_1_1240() >= 6) {
if (fn_1_1240() == 7) {
temp_r31->unk14 = 1;
temp_r31->unk40 = 60;
temp_r31->unk08 = temp_r31->unk0A = 0;
temp_r31->unk06 = temp_r31->unk07 = 0;
}
else {
if (!GWPlayerCfg[temp_r31->unk02].iscom) {
temp_r31->unk06 = HuPadStkX[temp_r31->unk04];
temp_r31->unk07 = HuPadStkY[temp_r31->unk04];
temp_r31->unk08 = HuPadBtn[temp_r31->unk04];
temp_r31->unk0A = HuPadBtnDown[temp_r31->unk04];
}
else {
temp_r31->unk08 = temp_r31->unk0A = 0;
temp_r31->unk06 = temp_r31->unk07 = 0;
fn_1_389C(object);
}
temp_f31 = temp_r31->unk06;
temp_f30 = -(float)temp_r31->unk07;
if (temp_r31->field_0_bit1) {
temp_f31 = temp_f30 = 0;
}
temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
if (temp_f28 > 0) {
temp_f31 /= temp_f28;
temp_f30 /= temp_f28;
if (temp_f28 > 72) {
temp_f28 = 72;
}
temp_r31->unk18 = (10 * temp_f28) / 72;
temp_r31->unk1C.x = temp_f31 * temp_r31->unk18;
temp_r31->unk1C.z = temp_f30 * temp_r31->unk18;
object->rot.y = fn_1_1C80(object->rot.y, atan2d(temp_r31->unk1C.x, temp_r31->unk1C.z), 0.4f);
if (temp_r31->unk18 < 7.5f) {
temp_r29 = 1;
}
else {
temp_r29 = 2;
}
temp_r28 = HU3D_MOTATTR_LOOP;
}
else {
temp_r31->unk1C.x = temp_r31->unk1C.z = 0;
temp_r29 = 0;
temp_r28 = HU3D_MOTATTR_LOOP;
}
object->trans.x += temp_r31->unk1C.x;
object->trans.z += temp_r31->unk1C.z;
}
}
break;
case 1:
if (fn_1_1240() == 9) {
if (--temp_r31->unk40 == 0) {
temp_r31->unk14 = 2;
temp_r31->unk40 = 300;
temp_r31->unk2C = -1;
}
}
if (!temp_r31->field_0_bit2) {
temp_r29 = 5;
}
else {
temp_r29 = 0;
}
temp_r28 = HU3D_MOTATTR_LOOP;
break;
case 2:
if (fn_1_1240() == 10) {
temp_r31->unk14 = 3;
}
else {
VECSubtract(&temp_r31->unk64, &object->trans, &sp34);
temp_f28 = VECMag(&sp34);
if (temp_f28 < 20 || temp_r31->unk40 == 0) {
temp_r29 = 5;
temp_r28 = HU3D_MOTATTR_LOOP;
object->rot.y = fn_1_1C80(object->rot.y, 0, 0.2f);
temp_r31->field_0_bit3 = 1;
}
else {
if (!temp_r31->field_0_bit3) {
temp_r27 = fn_1_5530(object, &temp_r31->unk64, &sp40);
}
else {
sp40.x = temp_r31->unk64.x;
sp40.y = temp_r31->unk64.y;
sp40.z = temp_r31->unk64.z;
temp_r27 = 0;
}
VECSubtract(&sp40, &object->trans, &sp34);
object->rot.y = fn_1_1C80(object->rot.y, atan2d(sp34.x, sp34.z), 0.2f);
if (!temp_r27) {
if (temp_f28 < 100.0f) {
temp_f23 = 7.5f * (temp_f28 / 100.0f);
}
else {
temp_f23 = 7.5f;
}
}
else {
temp_f23 = 3.75f;
}
temp_r31->unk1C.x = temp_f23 * sind(object->rot.y);
temp_r31->unk1C.z = temp_f23 * cosd(object->rot.y);
object->trans.x += temp_r31->unk1C.x;
object->trans.z += temp_r31->unk1C.z;
temp_r29 = 8;
temp_r28 = HU3D_MOTATTR_LOOP;
}
if (temp_r31->unk40) {
temp_r31->unk40--;
}
}
break;
case 3:
if (fn_1_1240() < 10) {
temp_r29 = 0;
temp_r28 = HU3D_MOTATTR_LOOP;
}
else {
if ((!temp_r31->unk10 && lbl_1_bss_924 < 0) || (temp_r31->unk10 && lbl_1_bss_924 >= 0)) {
temp_r29 = 6;
}
else {
temp_r29 = 7;
}
temp_r28 = HU3D_MOTATTR_NONE;
object->rot.y = fn_1_1C80(object->rot.y, 0, 0.2f);
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP);
}
break;
}
if (temp_r31->unk2C >= 0) {
temp_r29 = temp_r31->unk2C;
temp_r28 = temp_r31->unk34;
}
if ((temp_r29 >= 0 && temp_r29 != temp_r31->unk28) || temp_r28 != temp_r31->unk30) {
temp_r31->unk28 = temp_r29;
temp_r31->unk30 = temp_r28;
CharModelMotionShiftSet(temp_r31->unk0C, object->motion[temp_r31->unk28], 0, 8, temp_r28);
}
}
void fn_1_5004(void);
void fn_1_361C(omObjData *object);
void fn_1_2930(omObjData *object)
{
Bss930Work *temp_r31;
s32 temp_r30;
omObjData *temp_r29;
omObjData **temp_r28;
temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
fn_1_5004();
for (temp_r30 = 0; temp_r30 < 4; temp_r30++) {
temp_r29 = temp_r28[temp_r30];
temp_r31 = temp_r29->data;
if (temp_r31->unk48 != NULL) {
temp_r31->unk48(temp_r29);
}
if (temp_r31->field_0_bit4) {
fn_1_361C(temp_r29);
}
}
}
float lbl_1_data_180[6] = { 0, 0.3, 0.7, 1.0, 1.3, 1.6 };
float lbl_1_data_198[6][2] = { 100.0f, 0.75f, 110.0f, 0.8f, 120.000008f, 0.85f, 130.0f, 0.9f, 140.0f, 0.95f, 150.0f, 0.99f };
void fn_1_29DC(omObjData *object)
{
Mtx sp50;
Mtx sp20;
Vec sp14;
Vec sp8;
Bss930Work *temp_r31;
ModelData *temp_r29;
temp_r31 = object->data;
if (temp_r31->unk44 > 0 && temp_r31->field_0_bit0) {
if (--temp_r31->unk44 == 0) {
lbl_1_bss_924 = 1;
Hu3DGLightKill(lbl_1_bss_91A[1]);
lbl_1_bss_91A[1] = -1;
Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF);
HuAudFXEmiterPlay(1469, &object->trans);
HuAudCharVoicePlay(temp_r31->unk0C, 291);
}
else {
HuAudFXEmiterPlay(1466, &object->trans);
HuAudCharVoicePlay(temp_r31->unk0C, 296);
}
temp_r31->field_0_bit0 = 0;
temp_r31->field_0_bit1 = 1;
temp_r31->unk2C = 3;
temp_r31->unk34 = HU3D_MOTATTR_NONE;
temp_r31->unk46 = 60;
temp_r31->unk60 = 30;
omVibrate(temp_r31->unk02, 12, 6, 6);
}
if (temp_r31->unk46 > 0) {
if (temp_r31->unk60) {
if (--temp_r31->unk60 == 0) {
temp_r31->unk2C = -1;
temp_r31->field_0_bit1 = 0;
}
}
else {
if ((temp_r31->unk46 & 0x2) == 0) {
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
}
else {
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
}
temp_r31->unk46--;
}
}
if (temp_r31->field_0_bit2) {
Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp50);
MTXTrans(sp20, 0, 52, 0);
MTXConcat(sp50, sp20, sp50);
Hu3DModelPosSet(object->model[2], sp50[0][3], sp50[1][3], sp50[2][3]);
Hu3DModelScaleSet(object->model[2], lbl_1_data_180[temp_r31->unk44], lbl_1_data_180[temp_r31->unk44], lbl_1_data_180[temp_r31->unk44]);
}
if (fn_1_1240() >= 4 && fn_1_1240() <= 8 && lbl_1_bss_91A[1] >= 0) {
Hu3DGLightPointSet(
lbl_1_bss_91A[1], (15 * sind(object->work[0])) + lbl_1_data_198[temp_r31->unk44][0], lbl_1_data_198[temp_r31->unk44][1], 3);
temp_r29 = &Hu3DData[object->model[2]];
sp8 = temp_r29->pos;
sp14 = sp8;
sp14.y = 800;
sp8.y = 0;
sp14.z += 1;
Hu3DGLightPosSet(lbl_1_bss_91A[1], temp_r29->pos.x, 140, temp_r29->pos.z, 0, 1, 0);
if (lbl_1_bss_918) {
Hu3DShadowPosSet(&sp14, &Hu3DShadowData.unk_2C, &sp8);
}
object->work[0] += 10.0f;
Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF);
}
else {
Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF);
}
}
void fn_1_5C34(omObjData *object);
void fn_1_2EA4(omObjData *object)
{
Bss930Work *temp_r30;
Bss930Work4C *temp_r29;
ParticleData *temp_r28;
ModelData *temp_r27;
Mtx sp3C;
Mtx spC;
temp_r30 = object->data;
temp_r29 = temp_r30->unk4C;
switch (temp_r30->unk50) {
case 0:
if (temp_r30->unk0A & PAD_BUTTON_A) {
temp_r30->field_0_bit1 = 1;
temp_r30->unk50 = 1;
temp_r30->unk60 = 15;
temp_r30->unk2C = 3;
temp_r30->unk34 = HU3D_MOTATTR_NONE;
HuAudFXEmiterPlay(1465, &object->trans);
}
break;
case 1:
if (--temp_r30->unk60 == 0) {
Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp3C);
MTXTrans(spC, 0, 2, 50);
MTXConcat(sp3C, spC, sp3C);
Hu3DModelPosSet(object->model[2], sp3C[0][3], sp3C[1][3], sp3C[2][3]);
Hu3DModelScaleSet(object->model[2], 0.5f, 0.5f, 0.5f);
Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF);
Hu3DMotionTimeSet(object->model[2], 0);
Hu3DMotionSpeedSet(object->model[2], 2.0f);
Hu3DModelRotSet(object->model[2], 0, 180.0f + object->rot.y, 0);
Hu3DData[object->model[2]].unk_94 = 0;
Hu3DData[object->model[2]].unk_98 = 2;
Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF);
Hu3DModelPosSet(object->model[3], sp3C[0][3], sp3C[1][3], sp3C[2][3]);
temp_r27 = &Hu3DData[object->model[3]];
temp_r28 = temp_r27->unk_120;
temp_r28->unk_00 = 0;
temp_r28->unk_04.x = sp3C[0][3];
temp_r28->unk_04.y = sp3C[1][3];
temp_r28->unk_04.z = sp3C[2][3];
temp_r28->unk_10.x = object->rot.y;
temp_r28->unk_3C = 30 - (sqrtf((2.0f * temp_r28->unk_04.y) / 1.0000001f) / 2.0f);
temp_r29->field_0_bit0 = 1;
temp_r30->unk50 = 2;
temp_r30->unk60 = 20;
}
break;
case 2:
if (--temp_r30->unk60 == 0) {
temp_r30->unk2C = 4;
temp_r30->unk34 = HU3D_MOTATTR_NONE;
temp_r29->field_0_bit0 = 0;
temp_r30->unk50 = 3;
temp_r30->unk60 = 30;
}
Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp3C);
MTXTrans(spC, 0, 2, 50);
MTXConcat(sp3C, spC, sp3C);
Hu3DModelPosSet(object->model[2], sp3C[0][3], sp3C[1][3], sp3C[2][3]);
Hu3DModelPosSet(object->model[3], sp3C[0][3], sp3C[1][3], sp3C[2][3]);
fn_1_5C34(object);
break;
case 3:
if (--temp_r30->unk60 == 0) {
Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF);
Hu3DData[object->model[2]].unk_0E = -1;
temp_r30->field_0_bit1 = 0;
temp_r30->unk2C = -1;
temp_r30->unk50 = 0;
}
break;
}
if (temp_r30->unk50 && fn_1_1240() > 6 && lbl_1_bss_924 < 0) {
temp_r29->field_0_bit0 = 0;
Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF);
}
if (temp_r29->field_0_bit0) {
temp_r29->unk4 = object->trans.x + (((float)temp_r29->unk10 * (200 * sind(object->rot.y))) / 4);
temp_r29->unk8 = 75;
temp_r29->unkC = object->trans.z + (((float)temp_r29->unk10 * (200 * cosd(object->rot.y))) / 4);
temp_r29->unk4 = object->trans.x + (200.0 * sind(object->rot.y));
temp_r29->unk8 = 120.00001f;
temp_r29->unkC = object->trans.z + (200.0 * cosd(object->rot.y));
if (temp_r29->unk10 < 4) {
temp_r29->unk10++;
}
}
}
void fn_1_361C(omObjData *object)
{
Bss930Work *temp_r30;
ModelData *temp_r29;
temp_r30 = object->data;
if (temp_r30->field_0_bit2) {
if (fn_1_1240() == 9) {
temp_r30->field_0_bit2 = 0;
temp_r30->unk48 = 0;
temp_r30->unk54.x = 6 * sind(object->rot.y);
temp_r30->unk54.y = 20;
temp_r30->unk54.z = 6 * cosd(object->rot.y);
temp_r30->unk60 = 30;
temp_r29 = &Hu3DData[object->model[1]];
temp_r29->rot.y = object->rot.y;
Hu3DModelObjPosGet(object->model[0], "test11_tex_we-itemhook-r", &temp_r29->pos);
Hu3DModelHookReset(object->model[0]);
Hu3DModelAttrReset(object->model[1], HU3D_ATTR_HOOK);
Hu3DModelShadowReset(object->model[1]);
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
}
}
else {
temp_r29 = &Hu3DData[object->model[1]];
temp_r29->pos.x += temp_r30->unk54.x;
temp_r29->pos.y += temp_r30->unk54.y;
temp_r29->pos.z += temp_r30->unk54.z;
temp_r30->unk54.y += -1.0000001f;
temp_r29->rot.x += 30.0f;
if (--temp_r30->unk60 == 0) {
Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF);
Hu3DModelPosSet(object->model[4], temp_r29->pos.x, temp_r29->pos.y, temp_r29->pos.z);
Hu3DModelAttrReset(object->model[4], HU3D_ATTR_DISPOFF);
if (!temp_r30->unk10) {
HuAudFXPlay(1468);
}
temp_r30->field_0_bit4 = 0;
}
}
}
void fn_1_38F0(omObjData *object);
void fn_1_49C4(omObjData *object);
void fn_1_389C(omObjData *object)
{
Bss930Work *temp_r30;
temp_r30 = object->data;
if (!temp_r30->unk10) {
fn_1_38F0(object);
}
else {
fn_1_49C4(object);
}
}
typedef struct unkstruct_38F0 {
s16 unk0;
s16 unk2;
} UnkStruct38F0;
UnkStruct38F0 lbl_1_data_1C8[8] = { -1, -1, 0, -1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, -1, 0 };
void fn_1_38F0(omObjData *object)
{
float temp_f31;
float temp_f30;
float temp_f26;
float temp_f25;
float temp_f22;
s32 temp_r31;
s32 temp_r30;
Bss930Work *temp_r29;
s16 temp_r27;
s32 temp_r26;
s16 temp_r25;
s16 temp_r24;
u8 temp_r23;
UnkStruct38F0 sp80[100];
UnkStruct38F0 sp58[10];
UnkStruct38F0 sp30[10];
UnkStruct38F0 sp20[4];
temp_r29 = object->data;
temp_f25 = 1;
sp20[3].unk0 = 1 + (5 + ((9 * object->trans.x) / 1100));
sp20[3].unk2 = 1 + (5 + ((9 * object->trans.z) / 1100));
for (temp_r31 = 1; temp_r31 < 11; temp_r31++) {
for (temp_r30 = 1; temp_r30 < 11; temp_r30++) {
lbl_1_bss_14[temp_r31][temp_r30].unk8 = 0;
temp_f22 = VECMagPoint(lbl_1_bss_14[temp_r31][temp_r30].unk0, lbl_1_bss_14[temp_r31][temp_r30].unk4, 0);
if (temp_f22 <= 550) {
lbl_1_bss_14[temp_r31][temp_r30].unkC = 0;
for (temp_r26 = 0; temp_r26 < lbl_1_bss_92A[1]; temp_r26++) {
temp_f31 = lbl_1_bss_14[temp_r31][temp_r30].unk0 - lbl_1_bss_930[1][temp_r26]->trans.x;
temp_f30 = lbl_1_bss_14[temp_r31][temp_r30].unk4 - lbl_1_bss_930[1][temp_r26]->trans.z;
temp_f22 = VECMagPoint(temp_f31, temp_f30, 0);
if (temp_f22 <= 1100) {
temp_f26 = cosd(90 * (temp_f22 / 1100));
temp_f26 = temp_f26 * temp_f26;
if (temp_f26 > lbl_1_bss_14[temp_r31][temp_r30].unkC) {
lbl_1_bss_14[temp_r31][temp_r30].unkC = temp_f26;
}
}
}
}
else {
lbl_1_bss_14[temp_r31][temp_r30].unkC = -1;
}
}
}
lbl_1_bss_14[sp20[3].unk2][sp20[3].unk0].unk8 = 1;
sp80[0] = sp20[3];
temp_r27 = 0;
temp_r25 = 1;
do {
for (temp_r31 = 0; temp_r31 < 8u; temp_r31++) {
sp20[2].unk0 = sp80[temp_r27].unk0 + lbl_1_data_1C8[temp_r31].unk0;
sp20[2].unk2 = sp80[temp_r27].unk2 + lbl_1_data_1C8[temp_r31].unk2;
if (sp20[2].unk0 < 1 || sp20[2].unk0 >= 11 || sp20[2].unk2 < 1 || sp20[2].unk2 >= 11) {
continue;
}
if (lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8) {
continue;
}
if (lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC >= 0) {
lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8 = lbl_1_bss_14[sp80[temp_r27].unk2][sp80[temp_r27].unk0].unk8 + 1;
sp80[temp_r25].unk0 = sp20[2].unk0;
sp80[temp_r25].unk2 = sp20[2].unk2;
temp_r25++;
}
}
temp_r27++;
} while (temp_r27 != temp_r25);
temp_f25 = 1.0f;
sp20[0].unk0 = -1;
for (temp_r31 = 1; temp_r31 < 11; temp_r31++) {
for (temp_r30 = 1; temp_r30 < 11; temp_r30++) {
if (lbl_1_bss_14[temp_r31][temp_r30].unk8 == 0 || lbl_1_bss_14[temp_r31][temp_r30].unk8 > 5) {
continue;
}
if (lbl_1_bss_14[temp_r31][temp_r30].unkC >= 0.0f && lbl_1_bss_14[temp_r31][temp_r30].unkC < temp_f25) {
temp_f25 = lbl_1_bss_14[temp_r31][temp_r30].unkC;
sp20[0].unk0 = temp_r30;
sp20[0].unk2 = temp_r31;
}
}
}
temp_r23 = lbl_1_bss_14[sp20[0].unk2][sp20[0].unk0].unk8;
if (temp_r23 == 1) {
if (lbl_1_bss_14[sp20[3].unk2][sp20[3].unk0].unkC > 0.8f) {
temp_f25 = 1.0f;
for (temp_r31 = 0; temp_r31 < 8u; temp_r31++) {
sp20[2].unk0 = sp20[3].unk0 + lbl_1_data_1C8[temp_r31].unk0;
sp20[2].unk2 = sp20[3].unk2 + lbl_1_data_1C8[temp_r31].unk2;
if (lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC >= 0.0f && lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC < temp_f25) {
temp_f25 = lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC;
sp20[1] = sp20[2];
}
}
sp30[1].unk0 = sp20[1].unk0;
sp30[1].unk2 = sp20[1].unk2;
}
else {
return;
}
}
else {
for (temp_r31 = 1; temp_r31 < 11; temp_r31++) {
for (temp_r30 = 1; temp_r30 < 11; temp_r30++) {
if (lbl_1_bss_14[temp_r31][temp_r30].unk8 >= temp_r23) {
lbl_1_bss_14[temp_r31][temp_r30].unk8 = 0;
}
}
}
lbl_1_bss_14[sp20[0].unk2][sp20[0].unk0].unk8 = temp_r23;
sp80[0] = sp20[3];
temp_r24 = 1;
temp_f25 = 1.0f;
do {
sp20[1] = sp80[--temp_r24];
sp58[lbl_1_bss_14[sp20[1].unk2][sp20[1].unk0].unk8 - 1] = sp20[1];
if (sp20[1].unk0 == sp20[0].unk0 && sp20[1].unk2 == sp20[0].unk2) {
temp_f26 = 0;
for (temp_r31 = 1; temp_r31 < temp_r23; temp_r31++) {
if (lbl_1_bss_14[sp58[temp_r31].unk2][sp58[temp_r31].unk0].unkC > temp_f26) {
temp_f26 = lbl_1_bss_14[sp58[temp_r31].unk2][sp58[temp_r31].unk0].unkC;
}
}
if (temp_f26 < temp_f25) {
temp_f25 = temp_f26;
memcpy(sp30, sp58, temp_r23 * sizeof(UnkStruct38F0));
}
continue;
}
for (temp_r31 = 0; temp_r31 < 8u; temp_r31++) {
sp20[2].unk0 = sp20[1].unk0 + lbl_1_data_1C8[temp_r31].unk0;
sp20[2].unk2 = sp20[1].unk2 + lbl_1_data_1C8[temp_r31].unk2;
if (lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8 - 1 == lbl_1_bss_14[sp20[1].unk2][sp20[1].unk0].unk8) {
sp80[temp_r24++] = sp20[2];
}
}
} while (temp_r24);
}
if (sp20[0].unk0 >= 0) {
temp_f31 = lbl_1_bss_14[sp30[1].unk2][sp30[1].unk0].unk0 - object->trans.x;
temp_f30 = lbl_1_bss_14[sp30[1].unk2][sp30[1].unk0].unk4 - object->trans.z;
temp_f22 = VECMagPoint(temp_f31, temp_f30, 0);
if (temp_f22 >= 50.0f) {
temp_r29->unk84 = fn_1_1C80(temp_r29->unk84, atan2d(temp_f31, temp_f30), 0.1f);
temp_r29->unk06 = (69.0f + temp_r29->unk0E) * sind(temp_r29->unk84);
temp_r29->unk07 = (69.0f + temp_r29->unk0E) * -cosd(temp_r29->unk84);
}
}
}
void fn_1_49C4(omObjData *object)
{
float temp_f31;
float temp_f28;
float temp_f27;
Vec sp2C;
Vec sp20;
Vec sp14;
Vec sp8;
Bss930Work *temp_r31;
omObjData *temp_r30;
Bss930Work *temp_r28;
temp_r30 = lbl_1_bss_930[0][0];
temp_r31 = object->data;
temp_r28 = temp_r30->data;
if (temp_r31->field_0_bit1) {
return;
}
switch (temp_r31->unk70) {
case 0:
temp_f28 = (frand16() * 360) >> 16;
temp_f31 = (frand16() * 550) >> 16;
temp_r31->unk74.x = temp_f31 * sind(temp_f28);
temp_r31->unk74.y = 0;
temp_r31->unk74.z = temp_f31 * cosd(temp_f28);
temp_r31->unk70 = 1;
temp_r31->unk80 = 0;
case 1:
sp20.x = temp_r30->trans.x + ((60.0f * temp_r28->unk1C.x) / 4.0f);
sp20.z = temp_r30->trans.z + ((60.0f * temp_r28->unk1C.z) / 4.0f);
sp2C.x = temp_r31->unk74.x + (temp_r31->unk80 * (sp20.x - temp_r31->unk74.x));
sp2C.y = 0;
sp2C.z = temp_r31->unk74.z + (temp_r31->unk80 * (sp20.z - temp_r31->unk74.z));
VECSubtract(&sp2C, &object->trans, &sp14);
temp_f31 = VECMag(&sp14);
if (temp_f31 > 0.0f) {
if (temp_r31->unk80 < 1.0f) {
if (temp_f31 < 10.0f) {
temp_r31->unk80 += (10.0f / temp_f31);
}
else {
temp_r31->unk80 += (2.0f / temp_f31);
}
if (temp_r31->unk80 > 1.0f) {
temp_r31->unk80 = 1.0f;
}
}
else {
if (((s32)frand() & 0x1F) == 0) {
temp_r31->unk70 = 0;
}
}
}
temp_f27 = 60.0f + (2.0f * temp_r31->unk0E);
temp_r31->unk84 = fn_1_1C80(temp_r31->unk84, atan2d(sp14.x, sp14.z), 0.1f);
temp_r31->unk06 = temp_f27 * sind(temp_r31->unk84);
temp_r31->unk07 = temp_f27 * -cosd(temp_r31->unk84);
VECSubtract(&temp_r30->trans, &object->trans, &sp14);
if (VECMag(&sp14) < 200.0f) {
VECNormalize(&sp14, &sp14);
sp8.x = sind(object->rot.y);
sp8.y = 0;
sp8.z = cosd(object->rot.y);
if (VECDotProduct(&sp14, &sp8) >= 0.8f) {
temp_r31->unk0A |= PAD_BUTTON_A;
temp_r31->unk70 = 0;
}
}
if (((s32)frand() & 0x3FF) < 4 - temp_r31->unk0E) {
temp_r31->unk0A |= PAD_BUTTON_A;
temp_r31->unk70 = 0;
}
break;
}
}
s32 fn_1_5058(void);
void fn_1_5004(void)
{
s32 i = 0;
omObjData **sp8 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
while (fn_1_5058() && i < 50) {
i++;
}
}
s32 fn_1_5058(void)
{
Vec sp14[4];
Vec sp8;
float temp_f31;
float temp_f30;
s32 temp_r31;
omObjData *temp_r30;
s32 temp_r29;
omObjData **temp_r28;
s32 temp_r27;
omObjData *temp_r26;
omObjData *temp_r25;
temp_r27 = 0;
temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
sp14[temp_r31].x = sp14[temp_r31].y = sp14[temp_r31].z = 0;
}
for (temp_r31 = 0; temp_r31 < 3; temp_r31++) {
temp_r26 = temp_r28[temp_r31];
for (temp_r29 = temp_r31 + 1; temp_r29 < 4; temp_r29++) {
temp_r25 = temp_r28[temp_r29];
VECSubtract(&temp_r26->trans, &temp_r25->trans, &sp8);
temp_f31 = VECMag(&sp8);
if (temp_f31 < 100.0) {
VECNormalize(&sp8, &sp8);
temp_f30 = 0.0001f + (0.5f * (100.0 - temp_f31));
VECScale(&sp8, &sp8, temp_f30);
VECAdd(&sp14[temp_r31], &sp8, &sp14[temp_r31]);
VECSubtract(&sp14[temp_r29], &sp8, &sp14[temp_r29]);
temp_r27++;
}
}
}
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
temp_r30 = temp_r28[temp_r31];
VECAdd(&temp_r30->trans, &sp14[temp_r31], &temp_r30->trans);
sp8.x = temp_r30->trans.x;
sp8.y = 0;
sp8.z = temp_r30->trans.z;
temp_f31 = VECMag(&sp8);
if (temp_f31 > 500.0) {
VECNormalize(&sp8, &sp8);
temp_r30->trans.x = 500.0 * sp8.x;
temp_r30->trans.z = 500.0 * sp8.z;
}
}
return temp_r27;
}
Vec lbl_1_data_1E8 = { 0, 0, 200 };
Vec lbl_1_data_1F4[3] = { { -300, 0, -200 }, { 0, 0, -200 }, { 300, 0, -200 } };
s32 lbl_1_data_218[6][3] = { { 0, 1, 2 }, { 0, 2, 1 }, { 1, 0, 2 }, { 1, 2, 0 }, { 2, 0, 1 }, { 2, 1, 0 } };
void fn_1_52BC(void)
{
float sp14[3];
Vec sp8;
float temp_f31;
float temp_f30;
float temp_f29;
float temp_f28;
s32 temp_r31;
s32 temp_r30;
Bss930Work *temp_r29;
s32 temp_r28;
temp_r29 = lbl_1_bss_930[0][0]->data;
temp_r29->unk64 = lbl_1_data_1E8;
temp_f29 = -1;
for (temp_r30 = 0; temp_r30 < 6; temp_r30++) {
temp_f31 = 0;
for (temp_r31 = 0; temp_r31 < 3; temp_r31++) {
VECSubtract(&lbl_1_data_1F4[temp_r31], &lbl_1_bss_930[1][lbl_1_data_218[temp_r30][temp_r31]]->trans, &sp8);
sp14[temp_r31] = VECMag(&sp8);
temp_f31 += sp14[temp_r31];
}
temp_f28 = temp_f31 / 3;
temp_f30 = 0;
for (temp_r31 = 0; temp_r31 < 3; temp_r31++) {
temp_f30 += fabs(sp14[temp_r31] - temp_f28);
}
if (temp_f29 < 0 || temp_f30 + temp_f31 < temp_f29) {
temp_f29 = temp_f30 + temp_f31;
temp_r28 = temp_r30;
}
}
for (temp_r30 = 0; temp_r30 < 3; temp_r30++) {
temp_r29 = lbl_1_bss_930[1][lbl_1_data_218[temp_r28][temp_r30]]->data;
temp_r29->unk64 = lbl_1_data_1F4[temp_r30];
}
}
typedef struct unkstruct_5530 {
s32 unk0;
float unk4;
float unk8;
Vec unkC;
} UnkStruct5530;
s32 fn_1_5530(omObjData *arg0, Vec *arg1, Vec *arg2)
{
float temp_f31;
float temp_f30;
float temp_f29;
float temp_f28;
s32 temp_r30;
s32 temp_r29;
omObjData *temp_r28;
s32 temp_r27;
omObjData **temp_r24;
s32 temp_r23;
UnkStruct5530 spB4[4];
Mtx sp84;
Vec sp78;
Vec sp6C;
Vec sp60;
Vec sp54;
Vec sp48;
Vec sp3C;
Vec sp30;
Vec sp24;
s32 sp14[4];
float spC[2];
Bss930Work *sp8;
sp8 = arg0->data;
temp_r24 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0);
temp_r23 = 0;
sp54.x = arg1->x;
sp54.y = arg1->y;
sp54.z = arg1->z;
VECSubtract(&sp54, &arg0->trans, &sp48);
temp_f30 = VECMag(&sp48);
for (temp_r30 = 0; temp_r30 < 4; temp_r30++) {
sp14[temp_r30] = 0;
}
while (1) {
for (temp_r30 = 0, temp_r29 = 0; temp_r30 < 4; temp_r30++) {
temp_r28 = temp_r24[temp_r30];
if (arg0 == temp_r28 || sp14[temp_r30]) {
continue;
}
temp_f31 = ((temp_r28->trans.x * sp48.x) - (arg0->trans.x * sp48.x) + (temp_r28->trans.y * sp48.y) - (arg0->trans.y * sp48.y)
+ (temp_r28->trans.z * sp48.z) - (arg0->trans.z * sp48.z))
/ VECMag2Point(&sp48);
if (temp_f31 < 0.0f || temp_f31 >= 1.0f) {
continue;
}
VECSubtract(&temp_r28->trans, &arg0->trans, &sp3C);
VECCrossProduct(&sp48, &sp3C, &sp24);
sp60.x = (temp_f31 * sp48.x) + arg0->trans.x;
sp60.y = (temp_f31 * sp48.y) + arg0->trans.y;
sp60.z = (temp_f31 * sp48.z) + arg0->trans.z;
spB4[temp_r29].unkC = sp60;
VECSubtract(&temp_r28->trans, &sp60, &sp3C);
if (sp24.y < 0.0f) {
spB4[temp_r29].unk8 = VECMag(&sp3C);
}
else {
spB4[temp_r29].unk8 = -VECMag(&sp3C);
}
VECSubtract(&sp60, &arg0->trans, &sp3C);
spB4[temp_r29].unk4 = VECMag(&sp3C);
spB4[temp_r29].unk0 = temp_r30;
temp_r29++;
}
if (temp_r29 == 0) {
break;
}
for (temp_r30 = 0; temp_r30 < temp_r29 - 1; temp_r30++) {
for (temp_r27 = temp_r30 + 1; temp_r27 < temp_r29; temp_r27++) {
if (spB4[temp_r30].unk4 > spB4[temp_r27].unk4) {
spB4[3] = spB4[temp_r30];
spB4[temp_r30] = spB4[temp_r27];
spB4[temp_r27] = spB4[3];
}
}
}
for (temp_r30 = 0; temp_r30 < temp_r29; temp_r30++) {
if (fabs(spB4[temp_r30].unk8) < 100.0 && spB4[temp_r30].unk4 > 50.0) {
sp14[spB4[temp_r30].unk0] = 1;
VECSubtract(&temp_r24[spB4[temp_r30].unk0]->trans, &arg0->trans, &sp3C);
temp_f28 = VECMag(&sp3C);
if (0.0f != temp_f28) {
VECNormalize(&sp3C, &sp3C);
temp_f31 = 100.0 / temp_f28;
if (temp_f31 < 0.0f) {
temp_f31 = 0.0f;
}
else if (temp_f31 > 1.0f) {
temp_f31 = 1.0f;
}
temp_f29 = asinf(temp_f31);
MTXRotRad(sp84, 'Y', -temp_f29);
MTXMultVec(sp84, &sp3C, &sp30);
sp6C.x = arg0->trans.x + (sp30.x * temp_f30);
sp6C.y = arg0->trans.y + (sp30.y * temp_f30);
sp6C.z = arg0->trans.z + (sp30.z * temp_f30);
VECSubtract(&sp54, &sp6C, &sp30);
spC[0] = VECMag(&sp30);
MTXRotRad(sp84, 'Y', temp_f29);
MTXMultVec(sp84, &sp3C, &sp30);
sp78.x = arg0->trans.x + (sp30.x * temp_f30);
sp78.y = arg0->trans.y + (sp30.y * temp_f30);
sp78.z = arg0->trans.z + (sp30.z * temp_f30);
VECSubtract(&sp54, &sp78, &sp30);
spC[1] = VECMag(&sp30);
if (spC[0] < spC[1]) {
sp54 = sp6C;
}
else {
sp54 = sp78;
}
temp_r23 = 1;
break;
}
}
}
if (temp_r30 >= temp_r29) {
break;
}
VECSubtract(&sp54, &arg0->trans, &sp48);
}
arg2->x = sp54.x;
arg2->y = sp54.y;
arg2->z = sp54.z;
return temp_r23;
}
float fn_1_5D78(float arg8, float arg9, float argA, float argB, float argC, float argD, float argE);
void fn_1_5C34(omObjData *object)
{
float temp_f31;
omObjData *temp_r31;
Bss930Work4C *temp_r30;
Bss930Work *temp_r28;
Bss930Work *temp_r27;
temp_r31 = lbl_1_bss_930[0][0];
temp_r27 = object->data;
temp_r28 = temp_r31->data;
temp_r30 = temp_r27->unk4C;
if (temp_r28->unk46 > 0 || !temp_r30->field_0_bit0) {
return;
}
temp_f31 = fn_1_5D78(object->trans.x, object->trans.z, temp_r30->unk4, temp_r30->unkC, temp_r31->trans.x, temp_r31->trans.z, 50.0f);
if (temp_f31 >= 0.0f && temp_f31 < 1.0f) {
temp_r28->field_0_bit0 = 1;
}
}
void fn_1_5D18(omObjData *object)
{
Bss930Work *temp_r31;
temp_r31 = object->data;
CharModelKill(temp_r31->unk0C);
if (temp_r31->unk4C != NULL) {
HuMemDirectFree(temp_r31->unk4C);
}
HuMemDirectFree(temp_r31);
temp_r31 = NULL;
}
float fn_1_5D78(float arg8, float arg9, float argA, float argB, float argC, float argD, float argE)
{
float spC;
float temp_f30;
float temp_f29;
float temp_f28;
float temp_f27;
float temp_f26;
float temp_f25;
temp_f26 = (arg9 * arg9) + (((argB * argB) + ((arg8 * arg8) + ((argA * argA) - (2.0f * arg8 * argA)))) - (2.0f * arg9 * argB));
temp_f27 = 2.0f
* (((arg9 * argD) + (((arg9 * argB) + (((arg8 * argC) + ((arg8 * argA) - (argA * argC))) - (arg8 * arg8))) - (argB * argD))) - (arg9 * arg9));
temp_f25 = ((argD * argD) + (((arg9 * arg9) + ((argC * argC) + ((arg8 * arg8) - (2.0f * arg8 * argC)))) - (2.0f * arg9 * argD))) - (argE * argE);
if (0.0f == temp_f26) {
if (0.0f != temp_f27) {
return -temp_f25 / temp_f27;
}
else {
return -1;
}
}
else {
temp_f30 = (temp_f27 * temp_f27) - (4.0f * temp_f26 * temp_f25);
if (temp_f30 < 0.0) {
return -1;
}
temp_f30 = sqrtf(temp_f30);
temp_f29 = (-temp_f27 + temp_f30) / (2.0f * temp_f26);
temp_f28 = (-temp_f27 - temp_f30) / (2.0f * temp_f26);
if (temp_f29 < temp_f28) {
if (temp_f29 >= 0.0f && temp_f29 < 1.0f) {
return temp_f29;
}
else {
if (temp_f28 >= 0.0f && temp_f28 < 1.0f) {
return temp_f28;
}
}
}
else {
if (temp_f28 >= 0.0f && temp_f28 < 1.0f) {
return temp_f28;
}
else {
if (temp_f29 >= 0.0f && temp_f29 < 1.0f) {
return temp_f29;
}
}
}
return -1;
}
}
void fn_1_613C(ModelData *model, ParticleData *particle, Mtx matrix)
{
float temp_f31;
float temp_f30;
float temp_f29;
float temp_f28;
HsfanimStruct01 *temp_r31;
s32 temp_r29;
if (!particle->unk_00) {
particle->unk_00 = 1;
temp_r31 = particle->unk_48;
for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r31++, temp_r29++) {
temp_r31->unk08.x = (4.0f * ((1.0f / 256.0f) * frand8())) + 8;
temp_r31->unk34.x = (4.0f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1));
temp_r31->unk34.y = (64.0f * ((1.0f / 256.0f) * frand8()));
temp_r31->unk34.z = (4.0f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1));
temp_r31->unk30 = 360.0f * ((1.0f / 256.0f) * frand8());
temp_r31->unk00 = frand8();
temp_r31->unk02 = (frand() & 0x3) + 4;
}
temp_f29 = temp_f28 = 0;
}
else {
temp_f29 = (particle->unk_04.x - model->pos.x);
temp_f28 = (particle->unk_04.z - model->pos.z);
}
temp_r31 = particle->unk_48;
for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r31++, temp_r29++) {
temp_f30 = temp_r31->unk00 / 255.0f;
temp_f31 = temp_f30 * temp_f30;
temp_r31->unk34.x += temp_f29 * temp_f31;
temp_r31->unk34.y = 60.0f * temp_f30;
temp_r31->unk34.z += temp_f28 * temp_f31;
temp_r31->unk40.a = 255.0f * (1.0f - temp_f30);
temp_f31 = 0.5 * (1 + sind(270.0f * temp_f30));
temp_r31->unk2C = temp_f31 * (temp_r31->unk08.x * temp_f31);
temp_r31->unk00 += temp_r31->unk02;
if (temp_r31->unk00 > 255) {
temp_r31->unk34.x = (4.0f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1));
temp_r31->unk34.y = 0;
temp_r31->unk34.z = (4.0f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1));
temp_r31->unk00 = 0;
}
}
DCStoreRangeNoSync(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01));
particle->unk_04.x = model->pos.x;
particle->unk_04.z = model->pos.z;
}
void fn_1_6640(ModelData *model, ParticleData *particle, Mtx matrix)
{
float temp_f31;
float temp_f30;
float temp_f29;
float temp_f28;
HsfanimStruct01 *temp_r31;
s32 temp_r28;
s32 temp_r27;
GXColor sp8 = { 0, 0, 0, 255 };
if (!particle->unk_00) {
particle->unk_00 = 1;
temp_r31 = particle->unk_48;
for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r31++, temp_r28++) {
temp_r31->unk2C = 15;
temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0;
temp_f31 = particle->unk_10.x + (10.0f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1.0f));
temp_f30 = 100.0f * (0.1f * ((1.0f / 256.0f) * ((s32)frand() & 0xFF))) + 10;
temp_r31->unk08.x = temp_f30 * sind(temp_f31);
temp_r31->unk08.y = 100.0f * (0.02f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1.0f));
temp_r31->unk08.z = temp_f30 * cosd(temp_f31);
temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = 255;
temp_r31->unk40.a = 0;
temp_r31->unk00 = ((float)particle->unk_3C) * ((float)temp_r28 / (float)particle->unk_30);
}
}
else {
temp_f29 = (particle->unk_04.x - model->pos.x);
temp_f28 = (particle->unk_04.z - model->pos.z);
}
temp_r27 = 0;
temp_r31 = particle->unk_48;
for (temp_r28 = 0; temp_r28 < particle->unk_30; temp_r31++, temp_r28++) {
if (temp_r31->unk00 >= 0) {
if (temp_r31->unk00 == 0) {
temp_r31->unk34.x += temp_r31->unk08.x + temp_f29;
temp_r31->unk34.y += temp_r31->unk08.y;
temp_r31->unk34.z += temp_r31->unk08.z + temp_f28;
temp_r31->unk08.y += -1.0000001f;
if (temp_r31->unk40.a) {
if (--temp_r31->unk40.a == 0) {
temp_r31->unk00 = -1;
}
}
if (temp_r31->unk34.y < 0.0f) {
temp_r31->unk34.y = 0;
temp_r31->unk00 = -1;
temp_r31->unk40.a = 0;
}
}
else {
if (--temp_r31->unk00 == 0) {
temp_r31->unk40.a = 255;
}
}
}
else {
temp_r27++;
}
}
if (temp_r27 == particle->unk_30) {
model->attr |= 0x1;
}
DCStoreRangeNoSync(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01));
particle->unk_04.x = model->pos.x;
particle->unk_04.z = model->pos.z;
}
void fn_1_6AE8(ModelData *model, ParticleData *particle, Mtx matrix)
{
HsfanimStruct01 *temp_r31;
s32 temp_r29;
s16 temp_r28;
s32 temp_r27; // ! - uninitialized
if (!particle->unk_00) {
particle->unk_00 = 1;
temp_r31 = particle->unk_48;
for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r31++, temp_r29++) {
temp_r31->unk2C = 50;
temp_r31->unk34.x = 0;
temp_r31->unk34.y = 0;
temp_r31->unk34.z = 0;
temp_r31->unk08.x = 100.0f * (0.05f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1.0f));
temp_r31->unk08.y = 100.0f * (0.05f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1.0f));
temp_r31->unk08.z = 100.0f * (0.05f * (((1.0f / 256.0f) * ((s32)frand() & 0x1FF)) - 1.0f));
temp_r31->unk40.a = 128;
temp_r31->unk00 = 0;
}
}
temp_r31 = particle->unk_48;
for (temp_r29 = 0; temp_r29 < particle->unk_30; temp_r29++, temp_r31++) {
if (temp_r31->unk00 < 0) {
temp_r27++;
continue;
}
temp_r31->unk34.x += temp_r31->unk08.x;
temp_r31->unk34.y += temp_r31->unk08.y;
temp_r31->unk34.z += temp_r31->unk08.z;
temp_r31->unk08.x *= 0.92f;
temp_r31->unk08.y *= 0.92f;
temp_r31->unk08.z *= 0.92f;
temp_r28 = temp_r31->unk40.a;
temp_r28 -= 4;
if (temp_r28 < 0) {
temp_r31->unk00 = -1;
temp_r28 = 0;
}
temp_r31->unk40.a = temp_r28;
}
if (temp_r27 == particle->unk_30) {
model->attr |= 0x1;
}
DCStoreRangeNoSync(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01));
}
void fn_1_6DEC(s16 arg0, u32 arg1)
{
HsfData *temp_r31;
HsfMaterial *temp_r30;
s32 temp_r29;
ModelData *temp_r28;
temp_r28 = &Hu3DData[arg0];
temp_r31 = temp_r28->hsfData;
temp_r30 = temp_r31->material;
for (temp_r29 = 0; temp_r29 < temp_r31->materialCnt; temp_r29++, temp_r30++) {
temp_r30->flags |= arg1;
}
}
void fn_1_709C(s32 arg0, s32 arg1, float arg2);
void fn_1_72EC(omObjData *object);
void fn_1_6E5C(omObjData *object)
{
Vec sp14;
Vec sp8;
fn_1_709C(0, 0, 0);
sp14.x = (((sind(CRot.y) * cosd(CRot.x)) * CZoom) + Center.x);
sp14.y = (-sind(CRot.x) * CZoom) + Center.y;
sp14.z = ((cosd(CRot.y) * cosd(CRot.x)) * CZoom) + Center.z;
VECSubtract(&Center, &sp14, &sp8);
VECNormalize(&sp8, &sp8);
HuAudFXListnerSetEX(&sp14, &sp8, 10000, 566.6667, 0, 300, 300);
object->func = fn_1_72EC;
}
void fn_1_709C(s32 arg0, s32 arg1, float arg2)
{
CZoom = lbl_1_data_0[arg0].zoom + (arg2 * (lbl_1_data_0[arg1].zoom - lbl_1_data_0[arg0].zoom));
Center.x = lbl_1_data_0[arg0].pos.x + (arg2 * (lbl_1_data_0[arg1].pos.x - lbl_1_data_0[arg0].pos.x));
Center.y = lbl_1_data_0[arg0].pos.y + (arg2 * (lbl_1_data_0[arg1].pos.y - lbl_1_data_0[arg0].pos.y));
Center.z = lbl_1_data_0[arg0].pos.z + (arg2 * (lbl_1_data_0[arg1].pos.z - lbl_1_data_0[arg0].pos.z));
CRot.x = lbl_1_data_0[arg0].rot.x + (arg2 * (lbl_1_data_0[arg1].rot.x - lbl_1_data_0[arg0].rot.x));
CRot.y = lbl_1_data_0[arg0].rot.y + (arg2 * (lbl_1_data_0[arg1].rot.y - lbl_1_data_0[arg0].rot.y));
CRot.z = lbl_1_data_0[arg0].rot.z + (arg2 * (lbl_1_data_0[arg1].rot.z - lbl_1_data_0[arg0].rot.z));
}
float lbl_1_data_260[2] = { 0, 0 };
void fn_1_72EC(omObjData *object)
{
Vec sp14;
Vec sp8;
switch (fn_1_1240()) {
case 2:
fn_1_709C(0, 1, sind(90.0f * lbl_1_data_260[0]));
if (lbl_1_data_260[0] < 1.0f) {
lbl_1_data_260[0] += 5.0f / 240.0f;
if (lbl_1_data_260[0] > 1.0f) {
lbl_1_data_260[0] = 1.0f;
}
}
break;
case 5:
fn_1_709C(1, 0, sind(90.0f * lbl_1_data_260[1]));
if (lbl_1_data_260[1] < 1.0f) {
lbl_1_data_260[1] += 10.0f / 360.0f;
if (lbl_1_data_260[1] > 1.0f) {
lbl_1_data_260[1] = 1.0f;
}
}
break;
}
sp14.x = (((sind(CRot.y) * cosd(CRot.x)) * CZoom) + Center.x);
sp14.y = (-sind(CRot.x) * CZoom) + Center.y;
sp14.z = ((cosd(CRot.y) * cosd(CRot.x)) * CZoom) + Center.z;
VECSubtract(&Center, &sp14, &sp8);
VECNormalize(&sp8, &sp8);
HuAudFXListnerUpdate(&sp14, &sp8);
}