marioparty4/src/REL/m412Dll/main.c
2024-11-04 00:05:52 +01:00

2189 lines
76 KiB
C

#include "REL/m412Dll.h"
#include "ext_math.h"
#include "game/audio.h"
#include "game/chrman.h"
#include "game/frand.h"
#include "game/hsfmotion.h"
#include "game/mapspace.h"
#include "game/minigame_seq.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/sprite.h"
#include "game/wipe.h"
#include "math.h"
#include "rel_sqrt_consts.h"
// bss
s16 lbl_1_bss_7A0;
s16 lbl_1_bss_79E;
s16 lbl_1_bss_79C;
s16 lbl_1_bss_798[2];
s32 lbl_1_bss_794;
s32 lbl_1_bss_790;
s32 lbl_1_bss_780[4];
f32 lbl_1_bss_77C;
f32 lbl_1_bss_778;
f32 lbl_1_bss_774;
unkStruct3 lbl_1_bss_4D4[4];
unkStruct2 lbl_1_bss_33C[6];
unkStruct2 lbl_1_bss_2F8;
unkStruct *lbl_1_bss_278[0x20];
Process *lbl_1_bss_274;
Vec lbl_1_bss_268;
Vec lbl_1_bss_25C;
Vec lbl_1_bss_250;
Vec lbl_1_bss_13C[0x17];
Vec lbl_1_bss_28[0x17];
s32 lbl_1_bss_24;
Vec lbl_1_bss_18;
Vec lbl_1_bss_C;
Vec lbl_1_bss_0;
// data
s32 lbl_1_data_0[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
s32 lbl_1_data_20[8] = { DATA_MAKE_NUM(DATADIR_MARIOMDL1, 0x01), DATA_MAKE_NUM(DATADIR_LUIGIMDL1, 0x01), DATA_MAKE_NUM(DATADIR_PEACHMDL1, 0x01),
DATA_MAKE_NUM(DATADIR_YOSHIMDL1, 0x01), DATA_MAKE_NUM(DATADIR_WARIOMDL1, 0x01), DATA_MAKE_NUM(DATADIR_DONKEYMDL1, 0x01),
DATA_MAKE_NUM(DATADIR_DAISYMDL1, 0x01), DATA_MAKE_NUM(DATADIR_WALUIGIMDL1, 0x01) };
s32 lbl_1_data_40[8] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00) };
s32 lbl_1_data_60[6] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1B), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x4B) };
Vec lbl_1_data_78[7] = { { 474.0f, 30.0f, -497.0f }, { 330.0f, 30.0f, 562.0f }, { -694.0f, 30.0f, 43.0f }, { -375.0f, 30.0f, -483.0f },
{ 715.0f, 30.0f, 62.0f }, { -334.0f, 30.0f, 570.0f }, { 100.0f, 30.0f, -630.0f } };
char *lbl_1_data_298[0x17] = { "sb_hahen-sb_hahen01", "sb_hahen-sb_hahen02", "sb_hahen-sb_hahen03", "sb_hahen-sb_hahen04", "sb_hahen-sb_hahen05",
"sb_hahen-sb_hahen06", "sb_hahen-sb_hahen07", "sb_hahen-sb_hahen08", "sb_hahen-sb_hahen09", "sb_hahen-sb_hahen10", "sb_hahen-sb_hahen11",
"sb_hahen-sb_hahen12", "sb_hahen-sb_hahen13", "sb_hahen-sb_hahen14", "sb_hahen-sb_hahen15", "sb_hahen-sb_hahen16", "sb_hahen-sb_hahen17",
"sb_hahen-sb_hahen18", "sb_hahen-sb_hahen19", "sb_hahen-sb_hahen20", "sb_hahen-sb_hahen21", "sb_hahen-sb_hahen22", "sb_hahen-sb_hahen23" };
void ObjectSetup(void)
{
f32 temp_f30;
f32 temp_f29;
f32 temp_f31;
lbl_1_bss_274 = omInitObjMan(0x32, 0x2000);
omGameSysInit(lbl_1_bss_274);
Hu3DCameraCreate(1);
Hu3DCameraPerspectiveSet(1, 40.0f, 20.0f, 25000.0f, 1.2f);
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
Hu3DCameraScissorSet(1, 0U, 0U, 0x280U, 0x1E0U);
lbl_1_bss_268.x = 1100.0f;
lbl_1_bss_268.y = 1600.0f;
lbl_1_bss_268.z = 760.0f;
lbl_1_bss_250.x = 0.0f;
lbl_1_bss_250.y = 1.0f;
lbl_1_bss_250.z = 0.0f;
lbl_1_bss_25C.x = 60.0f;
lbl_1_bss_25C.y = 0.0f;
lbl_1_bss_25C.z = 0.0f;
temp_f30 = lbl_1_bss_268.x;
temp_f29 = lbl_1_bss_268.y;
temp_f31 = lbl_1_bss_268.z;
lbl_1_bss_774 = sqrtf((temp_f31 * temp_f31) + ((temp_f30 * temp_f30) + (temp_f29 * temp_f29)));
lbl_1_bss_778 = fn_1_1D08((180.0 * (atan2(temp_f30, temp_f31) / M_PI)));
lbl_1_bss_77C = fn_1_1D08((180.0 * (atan2(temp_f29, temp_f31) / M_PI)));
lbl_1_bss_77C = 50.0f;
Hu3DLighInit();
lbl_1_bss_7A0 = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 0xFFU, 0xFFU, 0xFFU);
Hu3DGLightPosAimSet(lbl_1_bss_7A0, 0.0f, 4330.13f, 2500.0f, 0.0f, 0.0f, 0.0f);
Hu3DGLightInfinitytSet(lbl_1_bss_7A0);
lbl_1_bss_18.x = -500.0f;
lbl_1_bss_18.y = 4000.0f;
lbl_1_bss_18.z = 0.0f;
lbl_1_bss_C.x = lbl_1_bss_C.z = 0.0f;
lbl_1_bss_C.y = 1.0f;
lbl_1_bss_0.x = 0.0f;
lbl_1_bss_0.y = 0.0f;
lbl_1_bss_0.z = 0.0f;
Hu3DShadowCreate(30.0f, 20.0f, 10000.0f);
Hu3DShadowTPLvlSet(0.5f);
Hu3DShadowPosSet(&lbl_1_bss_18, &lbl_1_bss_C, &lbl_1_bss_0);
Hu3DBGColorSet(0U, 0U, 0U);
fn_1_8BC();
HuPrcChildCreate(fn_1_B1C0, 0x1000U, 0x2000U, 0, HuPrcCurrentGet());
WipeCreate(1, 0, 0x3C);
}
void *fn_1_6EC(f32 arg8, f32 arg9, f32 argA, s32 arg0)
{
Vec sp8;
sp8.x = arg8;
sp8.y = arg9;
sp8.z = argA;
return (void *)HuAudFXEmiterPlay(arg0, &sp8);
}
void fn_1_73C(void)
{
Vec sp8;
CameraData *camera;
camera = &Hu3DCamera[0];
sp8.x = 0.0f;
sp8.y = 0.0f;
sp8.z = -1.0f;
while (1) {
HuAudFXListnerUpdate(&camera->pos, &sp8);
if (lbl_1_bss_794 >= 3)
break;
HuPrcVSleep();
}
HuPrcKill(HuPrcCurrentGet());
while (1) {
HuPrcVSleep();
}
}
void fn_1_7BC(void)
{
Vec sp14;
Vec sp8;
s32 temp_r30;
s32 var_r31;
temp_r30 = (s32)HuPrcCurrentGet()->user_data;
sp14.x = 1465.0f;
sp14.y = 770.0f;
sp14.z = -2400.0f;
sp8.x = sp14.x - 474.0f;
sp8.y = sp14.y - 30.0f;
sp8.z = sp14.z - -497.0f;
for (var_r31 = 0; var_r31 < 0x168; var_r31++) {
HuAudFXEmiterUpDate(temp_r30, &sp14);
VECAdd(&sp8, &sp14, &sp14);
HuPrcVSleep();
}
HuPrcKill(HuPrcCurrentGet());
while (1) {
HuPrcVSleep();
}
}
void fn_1_894(omObjData *object)
{
return;
}
void fn_1_898(omObjData *object)
{
object->model[0] = lbl_1_bss_79C;
object->func = &fn_1_894;
}
void fn_1_8BC(void)
{
Vec sp20;
Vec sp14;
s32 sp10;
volatile u32 spC;
volatile u32 sp8;
unkStruct2 *temp_r31;
unkStruct3 *temp_r30;
s16 var_r29;
void *var_r27;
s32 var_r28;
s32 var_r26;
unkStruct2 *temp_r25;
HsfTransform *temp_r24;
Process *var_r23;
s32 temp_r22;
AnimData *var_r21;
s16 var_r20;
s16 var_r19;
s32 var_r18;
HsfObject *var_r17;
nMap = 0;
HuAudSndGrpSet(0x25);
sp20.x = 1100.0f;
sp20.y = 1600.0f;
sp20.z = 760.0f;
sp14.x = 0.0f;
sp14.y = 0.0f;
sp14.z = -1.0f;
HuAudFXListnerSetEX(&sp20, &sp14, 10000.0f, 0.5666667f, 0.0f, 300.0f, 300.0f);
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x00), MEMORY_DEFAULT_NUM, HEAP_DATA);
var_r29 = Hu3DModelCreate(var_r27);
Hu3DModelLayerSet(var_r29, 1);
Hu3DModelShadowMapSet(var_r29);
Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_LOOP);
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x01), MEMORY_DEFAULT_NUM, HEAP_DATA);
lbl_1_bss_79C = Hu3DModelCreate(var_r27);
Hu3DModelAttrSet(lbl_1_bss_79C, HU3D_ATTR_DISPOFF);
MapObject[nMap++] = omAddObjEx(lbl_1_bss_274, 0x100, 1, 0, -1, fn_1_898);
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x02), MEMORY_DEFAULT_NUM, HEAP_DATA);
var_r29 = Hu3DModelCreate(var_r27);
Hu3DModelLayerSet(var_r29, 0);
Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_LOOP);
for (var_r28 = 0; var_r28 < 0x20; var_r28++) {
lbl_1_bss_278[var_r28] = NULL;
}
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x1F), MEMORY_DEFAULT_NUM, HEAP_DATA);
lbl_1_bss_79E = var_r29 = Hu3DModelCameraCreate(Hu3DMotionCreate(var_r27), 1);
Hu3DCameraMotionStart(var_r29, 1);
for (var_r28 = 0; var_r28 < 2; var_r28++) {
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x1D), MEMORY_DEFAULT_NUM, HEAP_DATA);
lbl_1_bss_798[var_r28] = var_r29 = Hu3DModelCreate(var_r27);
Hu3DModelLayerSet(var_r29, 2);
Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_PAUSE);
Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF);
}
for (var_r28 = 0; var_r28 < 6; var_r28++) {
temp_r31 = &lbl_1_bss_33C[var_r28];
temp_r31->unk24 = var_r28;
temp_r31->unk28 = var_r28;
temp_r31->unk20 = 0;
if (var_r28 == 0) {
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x06), MEMORY_DEFAULT_NUM, HEAP_DATA);
var_r20 = var_r29 = Hu3DModelCreate(var_r27);
}
else {
var_r29 = Hu3DModelLink(var_r20);
}
temp_r31->unk0 = var_r29;
temp_r31->unk2C.x = lbl_1_data_78[var_r28].x;
temp_r31->unk2C.y = lbl_1_data_78[var_r28].y;
temp_r31->unk2C.z = lbl_1_data_78[var_r28].z;
Hu3DModelPosSet(var_r29, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z);
temp_r31->unk38.x = temp_r31->unk38.z = 0.0f;
temp_r31->unk38.y = fn_1_1D08(180.0 + atan2d(temp_r31->unk2C.x, temp_r31->unk2C.z));
Hu3DModelRotSet(var_r29, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z);
Hu3DModelLayerSet(var_r29, 1);
Hu3DModelShadowSet(var_r29);
for (var_r26 = 0; var_r26 < 3; var_r26++) {
var_r27 = HuDataSelHeapReadNum(var_r26 + DATA_MAKE_NUM(DATADIR_M412, 0x07), MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r31->unkC[var_r26] = Hu3DJointMotion(var_r29, var_r27);
}
var_r27 = HuDataSelHeapReadNum(var_r28 + DATA_MAKE_NUM(DATADIR_M412, 0x0A), MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r31->unkC[var_r26] = Hu3DJointMotion(var_r29, var_r27);
Hu3DMotionSet(var_r29, temp_r31->unkC[3]);
temp_r31->unk2 = var_r29 = Hu3DModelLink(var_r20);
Hu3DModelPosSet(var_r29, temp_r31->unk2C.x, temp_r31->unk2C.y - 10.0f, temp_r31->unk2C.z);
Hu3DModelRotSet(var_r29, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z);
Hu3DModelScaleSet(var_r29, 1.0f, -1.0f, 1.0f);
Hu3DModelLayerSet(var_r29, 0);
Hu3DModelShadowReset(var_r29);
Hu3DMotionSet(var_r29, temp_r31->unkC[3]);
Hu3DModelAttrSet(var_r29, HU3D_ATTR_CULL_FRONT);
var_r27 = HuDataSelHeapReadNum(var_r28 + DATA_MAKE_NUM(DATADIR_M412, 0x10), MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r31->unk4 = var_r29 = Hu3DModelCreate(var_r27);
Hu3DModelLayerSet(var_r29, 1);
if (var_r28 >= 3) {
Hu3DModelAttrSet(temp_r31->unk0, HU3D_MOTATTR_PAUSE);
Hu3DModelAttrSet(temp_r31->unk2, HU3D_MOTATTR_PAUSE);
Hu3DModelAttrSet(temp_r31->unk4, HU3D_MOTATTR_PAUSE);
}
if (var_r28 == 0) {
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x03), MEMORY_DEFAULT_NUM, HEAP_DATA);
var_r19 = var_r29 = Hu3DModelCreate(var_r27);
}
else {
var_r29 = Hu3DModelLink(var_r19);
}
temp_r31->unk6 = var_r29;
Hu3DModelLayerSet(var_r29, 1);
Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF);
Hu3DModelShadowSet(var_r29);
Hu3DModelShadowDispOff(var_r29);
temp_r31->unk8 = Hu3DModelLink(var_r19);
Hu3DModelLayerSet(var_r29, 0);
Hu3DModelAttrSet(temp_r31->unk8, HU3D_ATTR_DISPOFF);
var_r23 = HuPrcChildCreate(fn_1_2A1C, 0x2000, 0x3000, 0, HuPrcCurrentGet());
var_r23->user_data = temp_r31;
}
for (var_r28 = 0, var_r18 = 0; var_r28 < 50; var_r28++) {
temp_r31 = &lbl_1_bss_33C[frandmod(3) + var_r18];
temp_r25 = &lbl_1_bss_33C[frandmod(3) + var_r18];
temp_r22 = temp_r31->unk28;
temp_r31->unk28 = temp_r25->unk28;
temp_r25->unk28 = temp_r22;
}
temp_r31 = &lbl_1_bss_33C[3];
temp_r25 = &lbl_1_bss_33C[5];
temp_r22 = temp_r31->unk28;
temp_r31->unk28 = temp_r25->unk28;
temp_r25->unk28 = temp_r22;
if (frandmod(2) != 0) {
temp_r31 = &lbl_1_bss_33C[4];
temp_r25 = &lbl_1_bss_33C[5];
temp_r22 = temp_r31->unk28;
temp_r31->unk28 = temp_r25->unk28;
temp_r25->unk28 = temp_r22;
}
temp_r31 = &lbl_1_bss_2F8;
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x16), MEMORY_DEFAULT_NUM, HEAP_DATA);
var_r20 = var_r29 = Hu3DModelCreate(var_r27);
temp_r31->unk0 = var_r29;
temp_r31->unk2C.x = lbl_1_data_78[6].x;
temp_r31->unk2C.y = lbl_1_data_78[6].y;
temp_r31->unk2C.z = lbl_1_data_78[6].z;
Hu3DModelPosSet(var_r29, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z);
temp_r31->unk38.x = temp_r31->unk38.z = 0.0f;
temp_r31->unk38.y = fn_1_1D08(180.0 + atan2d(temp_r31->unk2C.x, temp_r31->unk2C.z));
Hu3DModelRotSet(var_r29, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z);
Hu3DModelLayerSet(var_r29, 1);
Hu3DModelShadowSet(var_r29);
for (var_r26 = 0; var_r26 < 5; var_r26++) {
var_r27 = HuDataSelHeapReadNum(var_r26 + DATA_MAKE_NUM(DATADIR_M412, 0x17), MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r31->unkC[var_r26] = Hu3DJointMotion(var_r29, var_r27);
}
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x16), MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r31->unk2 = var_r29 = Hu3DModelCreate(var_r27);
for (var_r26 = 0; var_r26 < 5; var_r26++) {
var_r27 = HuDataSelHeapReadNum(var_r26 + DATA_MAKE_NUM(DATADIR_M412, 0x17), MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r31->unk16[var_r26] = Hu3DJointMotion(var_r29, var_r27);
}
Hu3DModelPosSet(var_r29, temp_r31->unk2C.x, temp_r31->unk2C.y - 10.0f, temp_r31->unk2C.z);
Hu3DModelRotSet(var_r29, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z);
Hu3DModelScaleSet(var_r29, 1.0f, -1.0f, 1.0f);
Hu3DModelLayerSet(var_r29, 0);
Hu3DModelShadowReset(var_r29);
Hu3DModelAttrSet(var_r29, HU3D_ATTR_CULL_FRONT);
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x04), MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r31->unk6 = var_r29 = Hu3DModelCreate(var_r27);
Hu3DModelLayerSet(var_r29, 1);
Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF);
Hu3DModelShadowSet(var_r29);
Hu3DModelShadowDispOff(var_r29);
temp_r31->unk8 = Hu3DModelLink(temp_r31->unk6);
Hu3DModelLayerSet(temp_r31->unk8, 0);
Hu3DModelAttrSet(temp_r31->unk8, HU3D_ATTR_DISPOFF);
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x05), MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r31->unkA = var_r29 = Hu3DModelCreate(var_r27);
Hu3DModelShadowSet(var_r29);
Hu3DModelShadowDispOff(var_r29);
Hu3DModelLayerSet(var_r29, 1);
Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF);
for (var_r28 = 0; var_r28 < 0x17; var_r28++) {
var_r17 = Hu3DModelObjPtrGet(var_r29, lbl_1_data_298[var_r28]);
if (!var_r17) {
OSReport("objname %s\n", lbl_1_data_298[var_r28]);
OSPanic("m412.c", 0x258, "ObjPtr");
}
temp_r24 = &var_r17->data.base;
lbl_1_bss_13C[var_r28].x = temp_r24->pos.x;
lbl_1_bss_13C[var_r28].y = temp_r24->pos.y;
lbl_1_bss_13C[var_r28].z = temp_r24->pos.z;
lbl_1_bss_28[var_r28].x = temp_r24->scale.x;
lbl_1_bss_28[var_r28].y = temp_r24->scale.y;
lbl_1_bss_28[var_r28].z = temp_r24->scale.z;
}
var_r23 = HuPrcChildCreate(fn_1_3950, 0x2000, 0x3000, 0, HuPrcCurrentGet());
var_r23->user_data = temp_r31;
for (var_r28 = 0; var_r28 < 4; var_r28++) {
lbl_1_bss_4D4[var_r28].unk3C = var_r28;
}
for (var_r28 = 0; var_r28 < 50; var_r28++) {
spC = frandmod(4);
sp8 = frandmod(4);
sp10 = lbl_1_bss_4D4[sp8].unk3C;
lbl_1_bss_4D4[sp8].unk3C = lbl_1_bss_4D4[spC].unk3C;
lbl_1_bss_4D4[spC].unk3C = sp10;
}
for (var_r28 = 0; var_r28 < 4; var_r28++) {
temp_r30 = &lbl_1_bss_4D4[var_r28];
temp_r30->unk24 = var_r28;
temp_r30->unk28 = var_r28;
temp_r30->unk2C = GWPlayerCfg[var_r28].pad_idx;
temp_r30->unk0 = CharModelCreate(lbl_1_data_0[GWPlayerCfg[var_r28].character], 4);
Hu3DModelLayerSet(temp_r30->unk0, 1);
var_r27 = HuDataSelHeapReadNum(lbl_1_data_20[GWPlayerCfg[var_r28].character], MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r30->unk2 = Hu3DModelCreate(var_r27);
Hu3DModelScaleSet(temp_r30->unk2, 1.0f, -1.0f, 1.0f);
Hu3DModelAttrSet(temp_r30->unk2, HU3D_ATTR_CULL_FRONT);
Hu3DModelLayerSet(temp_r30->unk2, 0);
CharModelLayerSetAll(3);
temp_r30->unk54.x = temp_r30->unk54.z = temp_r30->unk54.y = 0.0f;
temp_r30->unk54.y = fn_1_1D08(45.0f + (90.0f * temp_r30->unk3C) + lbl_1_bss_778);
temp_r30->unk40.x = (400.0 * sind(temp_r30->unk54.y));
temp_r30->unk40.z = (400.0 * cosd(temp_r30->unk54.y));
temp_r30->unk54.y = fn_1_1D08(180.0f + temp_r30->unk54.y);
temp_r30->unk6C = temp_r30->unk54.y;
temp_r30->unk40.y = 0.0f;
temp_r30->unk60.x = 50.0f;
temp_r30->unk60.z = temp_r30->unk60.y = 0.0f;
HuSetVecF(&temp_r30->unk7C, 0.0, 0.0, 0.0);
Hu3DModelPosSet(temp_r30->unk0, temp_r30->unk40.x, temp_r30->unk40.y, temp_r30->unk40.z);
Hu3DModelRotSet(temp_r30->unk0, temp_r30->unk54.x, temp_r30->unk54.y, temp_r30->unk54.z);
Hu3DModelPosSet(temp_r30->unk2, temp_r30->unk40.x, temp_r30->unk40.y, temp_r30->unk40.z);
Hu3DModelRotSet(temp_r30->unk2, temp_r30->unk54.x, temp_r30->unk54.y, temp_r30->unk54.z);
Hu3DModelShadowSet(temp_r30->unk0);
for (var_r26 = 0; var_r26 < 6; var_r26++) {
temp_r30->unkC[var_r26] = CharModelMotionCreate(lbl_1_data_0[GWPlayerCfg[var_r28].character], lbl_1_data_60[var_r26]);
var_r27
= HuDataSelHeapReadNum((u16)lbl_1_data_60[var_r26] | lbl_1_data_40[GWPlayerCfg[var_r28].character], MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r30->unk18[var_r26] = Hu3DJointMotion(temp_r30->unk2, var_r27);
}
CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[var_r28].character], temp_r30->unkC[0]);
Hu3DModelAttrSet(temp_r30->unk0, HU3D_MOTATTR_LOOP);
Hu3DMotionSet(temp_r30->unk2, temp_r30->unk18[0]);
Hu3DModelAttrSet(temp_r30->unk2, HU3D_MOTATTR_LOOP);
CharModelMotionDataClose(lbl_1_data_0[GWPlayerCfg[var_r28].character]);
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x1C), MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r30->unk6 = var_r29 = Hu3DModelCreate(var_r27);
Hu3DModelLayerSet(var_r29, 1);
Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_LOOP);
Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF);
Hu3DModelShadowSet(var_r29);
Hu3DModelShadowDispOff(var_r29);
temp_r30->unk8 = var_r29 = Hu3DModelLink(var_r29);
Hu3DModelLayerSet(var_r29, 0);
Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_LOOP);
Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF | HU3D_ATTR_CULL_FRONT);
var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x1D), MEMORY_DEFAULT_NUM, HEAP_DATA);
temp_r30->unkA = var_r29 = Hu3DModelCreate(var_r27);
Hu3DModelLayerSet(var_r29, 3);
Hu3DModelAttrSet(var_r29, HU3D_MOTATTR_PAUSE);
Hu3DModelAttrSet(var_r29, HU3D_ATTR_DISPOFF);
var_r23 = HuPrcChildCreate(fn_1_7C60, 0x2000, 0x4000, 0, HuPrcCurrentGet());
var_r23->user_data = temp_r30;
}
var_r21 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M412, 0x1E), MEMORY_DEFAULT_NUM));
var_r29 = Hu3DParticleCreate(var_r21, 0x100);
Hu3DModelPosSet(var_r29, 0.0f, 0.0f, 0.0f);
Hu3DModelScaleSet(var_r29, 1.0f, 1.0f, 1.0f);
Hu3DModelLayerSet(var_r29, 4);
Hu3DParticleColSet(var_r29, 0xFF, 0xFF, 0xFF);
Hu3DParticleScaleSet(var_r29, 0.0f);
Hu3DParticleHookSet(var_r29, fn_1_A01C);
var_r21 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 0x03), MEMORY_DEFAULT_NUM));
var_r29 = Hu3DParticleCreate(var_r21, 0x40);
Hu3DModelPosSet(var_r29, 0.0f, 0.0f, 0.0f);
Hu3DModelScaleSet(var_r29, 1.0f, 1.0f, 1.0f);
Hu3DModelLayerSet(var_r29, 4);
Hu3DParticleColSet(var_r29, 0xFF, 0xFF, 0xFF);
Hu3DParticleScaleSet(var_r29, 0.0f);
Hu3DParticleHookSet(var_r29, fn_1_A618);
var_r21 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 0x03), MEMORY_DEFAULT_NUM));
var_r29 = Hu3DParticleCreate(var_r21, 3);
Hu3DModelPosSet(var_r29, 0.0f, 0.0f, 0.0f);
Hu3DModelScaleSet(var_r29, 1.0f, 1.0f, 1.0f);
Hu3DModelLayerSet(var_r29, 4);
Hu3DParticleColSet(var_r29, 0xFF, 0xFF, 0xFF);
Hu3DParticleScaleSet(var_r29, 0.0f);
Hu3DParticleHookSet(var_r29, fn_1_AA88);
HuDataDirClose(DATADIR_EFFECT);
HuPrcChildCreate(fn_1_B160, 0x1000, 0x1000, 0, HuPrcCurrentGet());
}
f32 fn_1_1D08(f32 arg0)
{
while (arg0 >= 360.0f || arg0 < 0.0f) {
if (arg0 >= 360.0f) {
arg0 -= 360.0f;
}
if (arg0 < 0.0f) {
arg0 += 360.0f;
}
}
return arg0;
}
void fn_1_1D88(void)
{
void *var_r31;
var_r31 = HuPrcCurrentGet()->user_data;
HuMemDirectFree(var_r31);
}
void fn_1_1DBC(void)
{
Vec sp8;
HsfObject *var_r27;
HsfTransform *temp_r31;
unkStruct4 *temp_r30;
Vec *temp_r29;
s32 var_r28;
f32 var_f31;
f32 var_f30;
temp_r30 = HuPrcCurrentGet()->user_data;
HuPrcDestructorSet(fn_1_1D88);
var_r27 = Hu3DModelObjPtrGet(temp_r30->unk0, lbl_1_data_298[temp_r30->unk4]);
if (!var_r27) {
OSReport("objname %s\n", lbl_1_data_298[temp_r30->unk4]);
OSPanic("m412.c", 0x32E, "ObjPtr");
}
temp_r31 = &var_r27->data.base;
temp_r29 = &lbl_1_bss_13C[temp_r30->unk4];
temp_r31->pos.x = temp_r29->x;
temp_r31->pos.y = temp_r29->y;
temp_r31->pos.z = temp_r29->z;
HuSetVecF(&sp8, 0.15f * temp_r31->pos.x, 0.15f * temp_r31->pos.y, 0.15f * temp_r31->pos.z);
temp_r29 = &lbl_1_bss_28[temp_r30->unk4];
temp_r31->scale.x = temp_r29->x;
temp_r31->scale.y = temp_r29->y;
temp_r31->scale.z = temp_r29->z;
for (var_r28 = 0, var_f31 = -2.0f, var_f30 = 1.0f; var_r28 < 0x1E; var_r28++) {
sp8.y -= var_f31;
var_f31 += 0.5f;
temp_r31->pos.x += sp8.x;
temp_r31->pos.y += sp8.y;
temp_r31->pos.z += sp8.z;
temp_r31->scale.x *= 0.95f;
temp_r31->scale.y *= 0.95f;
temp_r31->scale.z *= 0.95f;
if (temp_r30->unk4 == 0) {
var_f30 -= 0.033333335f;
Hu3DModelTPLvlSet(temp_r30->unk0, var_f30);
}
HuPrcVSleep();
}
temp_r30->unk8 = 0;
HuPrcVSleep();
HuPrcKill(HuPrcCurrentGet());
while (1) {
HuPrcVSleep();
}
}
void fn_1_2014(void)
{
unkStruct2 *temp_r31; // could also be unkStruct3 `\_("/)_/`
temp_r31 = (unkStruct2 *)HuPrcCurrentGet()->user_data;
lbl_1_bss_278[temp_r31->unk6] = NULL;
HuMemDirectFree(temp_r31);
}
void fn_1_2064(void)
{
Vec sp28;
Vec sp1C;
Vec sp10;
f32 spC;
f32 sp8;
Process *temp_r26;
s32 var_r30;
unkStruct *temp_r28;
unkStruct3 *temp_r29;
unkStruct *temp_r31;
unkStruct4 *var_r27;
temp_r31 = (unkStruct *)HuPrcCurrentGet()->user_data;
temp_r31->unk8 = 0;
temp_r31->unkA = 0;
HuPrcDestructorSet(fn_1_2014);
do {
if ((temp_r31->unk8 != 0) || (lbl_1_bss_794 >= 4))
break;
temp_r31->unk10.x += (temp_r31->unk24.y * sind(temp_r31->unk24.x));
temp_r31->unk10.z += (temp_r31->unk24.y * cosd(temp_r31->unk24.x));
temp_r31->unk10.y += temp_r31->unk24.z;
temp_r31->unk24.z -= 0.9f;
if (temp_r31->unk30 != 100.0f) {
HuSetVecF(&sp28, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z);
for (var_r30 = 0; var_r30 < 0x20; var_r30++) {
temp_r28 = lbl_1_bss_278[var_r30];
if ((var_r30 != temp_r31->unk6) && temp_r28 && (temp_r28->unk6 != -1)) {
HuSetVecF(&sp1C, temp_r28->unk10.x, temp_r28->unk10.y, temp_r28->unk10.z);
HuSubVecF(&sp10, &sp28, &sp1C);
if (sqrtf((sp10.z * sp10.z) + ((sp10.x * sp10.x) + (sp10.y * sp10.y))) < (temp_r31->unk30 + temp_r28->unk30)) {
if (temp_r28->unk30 != 100.0f) {
temp_r28->unk8 = 1;
}
temp_r31->unk8 = 1;
}
}
}
}
HuSetVecF(&sp28, temp_r31->unk10.x, 0.0, temp_r31->unk10.z);
for (var_r30 = 0; var_r30 < 4; var_r30++) {
temp_r29 = &lbl_1_bss_4D4[var_r30];
HuSetVecF(&sp1C, temp_r29->unk40.x, 0.0, temp_r29->unk40.z);
HuSubVecF(&sp10, &sp28, &sp1C);
if ((sqrtf((sp10.z * sp10.z) + ((sp10.x * sp10.x) + (sp10.y * sp10.y))) < (temp_r31->unk30 + temp_r29->unk60.x))
&& ((150.0f + temp_r29->unk40.y + temp_r31->unk30) > temp_r31->unk10.y)) {
if (temp_r29->unk30 != 3) {
if (temp_r31->unkC == 0) {
omVibrate(temp_r29->unk24, 0xC, 4, 2);
}
else {
omVibrate(temp_r29->unk24, 0xC, 0xC, 0);
}
}
HuAudFXPlay(0x585);
temp_r29->unk30 = 3;
temp_r31->unk8 = 1;
}
}
if (temp_r31->unk10.y < temp_r31->unk30) {
temp_r31->unk10.y = temp_r31->unk30;
temp_r31->unk8 = 1;
}
Hu3DModelPosSet(temp_r31->unk0, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z);
Hu3DModelPosSet(temp_r31->unk2, temp_r31->unk10.x, -temp_r31->unk10.y, temp_r31->unk10.z);
if (temp_r31->unk8 != 0)
break;
HuPrcVSleep();
} while (1);
if (temp_r31->unkC == 1) {
HuAudFXPlay(0x58D);
}
else {
HuAudFXPlay(0x58C);
}
Hu3DModelAttrSet(temp_r31->unk0, HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(temp_r31->unk2, HU3D_ATTR_DISPOFF);
Hu3DModelShadowDispOff(temp_r31->unk0);
temp_r31->unkA = 1;
if (temp_r31->unkC == 1) {
for (var_r30 = 0; var_r30 < 4; var_r30++) {
if (lbl_1_bss_4D4[var_r30].unk30 != 3) {
omVibrate(lbl_1_bss_4D4[var_r30].unk24, 0xC, 6, 6);
}
}
Hu3DModelPosSet(temp_r31->unk4, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z);
Hu3DModelAttrReset(temp_r31->unk4, HU3D_ATTR_DISPOFF);
Hu3DModelShadowDispOn(temp_r31->unk4);
for (var_r30 = 0; var_r30 < 0x17; var_r30++) {
temp_r26 = HuPrcChildCreate(fn_1_1DBC, 0x2000, 0x1000, 0, HuPrcCurrentGet());
var_r27 = HuMemDirectMalloc(HEAP_DATA, 0x18);
temp_r26->user_data = var_r27;
var_r27->unk0 = temp_r31->unk4;
var_r27->unk4 = var_r30;
var_r27->unk8 = 1;
var_r27->unkC.x = temp_r31->unk10.x;
var_r27->unkC.y = temp_r31->unk10.y;
var_r27->unkC.z = temp_r31->unk10.z;
}
while (var_r27->unk8 != 0) {
HuPrcVSleep();
}
}
HuPrcVSleep();
HuPrcKill(HuPrcCurrentGet());
while (1) {
HuPrcVSleep();
}
}
s32 fn_1_2708(void)
{
s32 var_r31;
for (var_r31 = 0; var_r31 < 0x20; var_r31++) {
if (!lbl_1_bss_278[var_r31])
break;
}
if (var_r31 >= 0x20) {
var_r31 = -1;
}
lbl_1_bss_278[var_r31] = HuMemDirectMalloc(HEAP_DATA, 0x34);
lbl_1_bss_278[var_r31]->unk6 = -1;
lbl_1_bss_278[var_r31]->unkA = 0;
return var_r31;
}
f32 fn_1_27C4(s32 arg0, f32 arg8, f32 arg9)
{
f32 temp_f31;
f32 var_f25;
f32 var_f26;
f32 var_f27;
f32 var_f28;
f32 var_f29;
temp_f31 = arg8 - fn_1_1D08(arg9);
if ((temp_f31 < 0.0f) || (ABS_INV(temp_f31) > 180.0f)) {
if (ABS_INV(temp_f31) > 180.0f) {
var_f29 = (360.0f - ABS_INV(temp_f31)) / arg0;
if (temp_f31 > 0.0f) {
var_f29 = -var_f29;
}
}
else {
var_f29 = temp_f31 / arg0;
}
}
else {
var_f29 = temp_f31 / arg0;
}
return var_f29;
}
s32 lbl_1_data_310[6][2] = { { 0x09249222, 0x22210842 }, { 0x04924888, 0x88842108 }, { 0x12492222, 0x22108420 }, { 0x04444444, 0x44444400 },
{ 0x11111111, 0x11100000 }, { 0x04444444, 0x40000000 } };
s32 lbl_1_data_340[1][2] = { { 0x00040008, 0x02000000 } };
s32 lbl_1_data_348[6] = { 0x0, 0x0, 0x0, 0x8, 0x12, 0x1C };
void fn_1_2A1C(void)
{
Vec sp68;
Vec sp5C;
Vec sp50;
Vec sp44;
f32 sp40;
f32 temp_f18;
f32 var_f24;
f32 var_f23;
f32 var_f19;
f32 var_f22;
s32 var_r22;
s32 var_r23;
s32 var_r25;
s32 var_r24;
s32 var_r26;
s32 var_r29;
unkStruct *temp_r30;
unkStruct3 *temp_r27;
unkStruct2 *temp_r31;
s32 var_r21;
Process *var_r20;
temp_r31 = HuPrcCurrentGet()->user_data;
switch (temp_r31->unk24) {
case 0:
var_r25 = 0x142;
var_r24 = 0x154;
break;
case 1:
var_r25 = 0x14A;
var_r24 = 0x15E;
break;
case 2:
var_r25 = 0x148;
var_r24 = 0x162;
break;
default:
var_r25 = 0x4E;
var_r24 = 0x5D;
break;
}
loop_10:
var_r29 = lbl_1_bss_790 / 60;
if (var_r29 >= 0x3C) {
var_r29 = 0x3C;
}
if (var_r29 == lbl_1_data_348[temp_r31->unk28]) {
Hu3DModelAttrReset(temp_r31->unk0, HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(temp_r31->unk2, HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(temp_r31->unk4, HU3D_MOTATTR_PAUSE);
}
if (var_r25 == Hu3DMotionTimeGet(temp_r31->unk0)) {
temp_r31->unk20 = 1;
}
if (var_r24 == Hu3DMotionTimeGet(temp_r31->unk0)) {
HuAudFXPlay(0x581);
}
if (lbl_1_bss_794 >= 4) {
while (1) {
HuPrcVSleep();
}
}
var_r22 = 1;
if (var_r29 >= 0x20) {
var_r22 = 0;
}
if (((1 << (var_r29 % 32)) & lbl_1_data_310[temp_r31->unk28][var_r22]) != 0) {
var_r21 = fn_1_2708();
}
else {
HuPrcVSleep();
goto loop_10;
}
var_r26 = frandmod(4);
if (lbl_1_bss_4D4[var_r26].unk30 == 3) {
for (var_r23 = 3; var_r23 != 0; var_r23--) {
var_r26++;
if (var_r26 >= 4) {
var_r26 = 0;
}
if (lbl_1_bss_4D4[var_r26].unk30 != 3)
break;
}
}
temp_r27 = &lbl_1_bss_4D4[var_r26];
Hu3DMotionSet(temp_r31->unk0, temp_r31->unkC[1]);
Hu3DMotionSet(temp_r31->unk2, temp_r31->unkC[1]);
Hu3DModelAttrReset(temp_r31->unk0, HU3D_MOTATTR_LOOP);
Hu3DModelAttrReset(temp_r31->unk2, HU3D_MOTATTR_LOOP);
var_r29 = Hu3DMotionMaxTimeGet(temp_r31->unk0);
var_f24 = fn_1_1D08(atan2d(temp_r27->unk40.x - temp_r31->unk2C.x, temp_r27->unk40.z - temp_r31->unk2C.z));
temp_f18 = (temp_r27->unk40.x + (50.0 * sind(var_f24)));
sp44.y = (temp_r27->unk40.z + (50.0 * cosd(var_f24)));
sp44.x = 360.0f * frandf();
var_f23 = 50.0f * frandf();
temp_f18 += (var_f23 * sind(sp44.x));
sp44.y += (var_f23 * cosd(sp44.x));
sp44.z = fn_1_27C4(var_r29, var_f24, temp_r31->unk38.y);
HuAudFXPlay(0x583);
for (; var_r29 != 0; var_r29--) {
temp_r31->unk38.y += sp44.z;
Hu3DModelRotSet(temp_r31->unk0, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z);
Hu3DModelRotSet(temp_r31->unk2, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z);
HuPrcVSleep();
}
HuPrcSleep(0x1E);
Hu3DModelAttrReset(temp_r31->unk6, HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(temp_r31->unk8, HU3D_ATTR_DISPOFF);
Hu3DModelShadowDispOn(temp_r31->unk6);
Hu3DModelPosSet(temp_r31->unk6, 0.0f, 0.0f, 0.0f);
Hu3DModelPosSet(temp_r31->unk8, 0.0f, 0.0f, 0.0f);
Hu3DModelHookSet(temp_r31->unk0, "itemhook", temp_r31->unk6);
Hu3DModelHookSet(temp_r31->unk2, "itemhook", temp_r31->unk8);
Hu3DMotionShiftSet(temp_r31->unk0, temp_r31->unkC[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unkC[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
HuPrcSleep(10);
while (Hu3DMotionTimeGet(temp_r31->unk0) < 18.0f) {
HuPrcVSleep();
}
Hu3DModelHookReset(temp_r31->unk0);
Hu3DModelHookReset(temp_r31->unk2);
HuAudFXPlay(0x582);
temp_r30 = lbl_1_bss_278[var_r21];
temp_r30->unk6 = var_r21;
temp_r30->unkA = 0;
var_r20 = HuPrcChildCreate(fn_1_2064, 0x1000, 0x3000, 0, HuPrcCurrentGet());
var_r20->user_data = temp_r30;
temp_r30->unkC = 0;
temp_r30->unk0 = temp_r31->unk6;
temp_r30->unk2 = temp_r31->unk8;
temp_r30->unk30 = 25.0f;
temp_r30->unk10.x = -89.937f;
temp_r30->unk10.y = 125.861f;
temp_r30->unk10.z = 43.181f;
temp_r30->unk1C.x = temp_f18;
temp_r30->unk1C.y = sp44.y;
var_f24 = fn_1_1D08(atan2d(temp_r30->unk10.x, temp_r30->unk10.z));
var_f24 += temp_r31->unk38.y;
var_f23 = sqrtf((temp_r30->unk10.x * temp_r30->unk10.x) + (temp_r30->unk10.z * temp_r30->unk10.z));
temp_r30->unk10.x = (temp_r31->unk2C.x + (var_f23 * sind(var_f24)));
temp_r30->unk10.y = 125.861f + temp_r31->unk2C.y;
temp_r30->unk10.z = (temp_r31->unk2C.z + (var_f23 * cosd(var_f24)));
Hu3DModelPosSet(temp_r31->unk6, temp_r30->unk10.x, temp_r30->unk10.y, temp_r30->unk10.z);
Hu3DModelPosSet(temp_r31->unk8, temp_r30->unk10.x, -temp_r30->unk10.y, temp_r30->unk10.z);
HuSetVecF(&sp68, temp_r31->unk2C.x, 0.0, temp_r31->unk2C.z);
HuSetVecF(&sp5C, temp_f18, 0.0, sp44.y);
HuSubVecF(&sp50, &sp68, &sp5C);
var_f23 = sqrtf((sp50.x * sp50.x) + (sp50.z * sp50.z));
sp40 = 1.0f;
while (1) {
for (var_r29 = 0, var_f19 = temp_r30->unk10.y, var_f22 = sp40; var_f22 > 0.0f; var_r29++) {
var_f19 += var_f22;
var_f22 -= 0.9f;
}
if (var_f19 >= (var_f23 / 2.0f))
break;
sp40++;
}
for (; var_f19 > 0.0f; var_r29++) {
var_f19 += var_f22;
var_f22 -= 0.9f;
}
temp_r30->unk24.z = sp40;
temp_r30->unk24.x = fn_1_1D08(atan2d(temp_f18 - temp_r30->unk10.x, sp44.y - temp_r30->unk10.z));
temp_r30->unk24.y = var_f23 / var_r29;
while (Hu3DMotionEndCheck(temp_r31->unk0) == 0) {
HuPrcVSleep();
}
goto loop_10;
}
void fn_1_3950(void)
{
Vec sp8C;
Vec sp80;
Vec sp74;
f32 sp70;
f32 sp6C;
f32 sp68;
f32 sp64;
f32 sp60;
f32 sp5C;
volatile f32 sp58;
f32 sp54;
f32 temp_f27;
f32 var_f29;
f32 temp_f31;
f32 temp_f30;
f32 var_f18;
f32 var_f19;
f32 var_f20;
f32 var_f21;
f32 var_f22;
f32 var_f23;
f32 var_f24;
s32 var_r28;
s32 var_r24;
s32 var_r25;
s32 var_r29;
s32 var_r26;
unkStruct *temp_r30;
unkStruct3 *temp_r27;
unkStruct2 *temp_r31;
s32 var_r23;
Process *var_r22;
temp_r31 = HuPrcCurrentGet()->user_data;
loop_1:
var_r29 = lbl_1_bss_790 / 60;
if (var_r29 >= 0x3C) {
var_r29 = 0x3C;
}
if (lbl_1_bss_794 >= 4) {
while (1) {
HuPrcVSleep();
}
}
var_r24 = 1;
if (var_r29 >= 0x20) {
var_r24 = 0;
}
if (((1 << (var_r29 % 32)) & lbl_1_data_340[temp_r31->unk28][var_r24]) != 0) {
var_r23 = fn_1_2708();
}
else {
HuPrcVSleep();
goto loop_1;
}
Hu3DModelAttrReset(temp_r31->unk0, HU3D_MOTATTR_PAUSE);
Hu3DModelClusterAttrReset(temp_r31->unk0, 0, -0x3FFFFFFE);
Hu3DModelAttrReset(temp_r31->unk2, HU3D_MOTATTR_PAUSE);
Hu3DModelClusterAttrReset(temp_r31->unk2, 0, -0x3FFFFFFE);
Hu3DModelAttrReset(temp_r31->unk6, HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(temp_r31->unk8, HU3D_ATTR_DISPOFF);
Hu3DModelShadowDispOn(temp_r31->unk6);
var_f18 = 850.0f;
temp_f31 = -217.722f;
temp_f30 = 0.0f;
var_f29 = fn_1_1D08(atan2d(temp_f31, temp_f30));
var_f29 += temp_r31->unk38.y;
var_f24 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
temp_f31 = (temp_r31->unk2C.x + (var_f24 * sind(var_f29)));
temp_f30 = (temp_r31->unk2C.z + (var_f24 * cosd(var_f29)));
sp64 = 5.0f;
while (1) {
var_f18 -= sp64;
sp64 += 0.9f;
if (sp64 > 20.0f) {
sp64 = 20.0f;
}
if (var_f18 < (304.52f + temp_r31->unk2C.y)) {
var_f18 = 304.52f + temp_r31->unk2C.y;
}
Hu3DModelPosSet(temp_r31->unk6, temp_f31, var_f18, temp_f30);
Hu3DModelPosSet(temp_r31->unk8, temp_f31, -var_f18, temp_f30);
if (var_f18 == (304.52f + temp_r31->unk2C.y))
break;
HuPrcVSleep();
}
Hu3DModelPosSet(temp_r31->unk6, 0.0f, 0.0f, 0.0f);
Hu3DModelPosSet(temp_r31->unk8, 0.0f, 0.0f, 0.0f);
Hu3DModelHookSet(temp_r31->unk0, "itemhook", temp_r31->unk6);
Hu3DModelHookSet(temp_r31->unk2, "itemhook", temp_r31->unk8);
Hu3DMotionShiftSet(temp_r31->unk0, temp_r31->unkC[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk16[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
HuPrcSleep(10);
while (Hu3DMotionEndCheck(temp_r31->unk0) == 0) {
HuPrcVSleep();
}
HuPrcSleep(0xA);
var_r26 = frandmod(4);
if (lbl_1_bss_4D4[var_r26].unk30 == 3) {
for (var_r25 = 3; var_r25 != 0; var_r25--) {
var_r26 += 1;
if (var_r26 >= 4) {
var_r26 = 0;
}
if (lbl_1_bss_4D4[var_r26].unk30 != 3)
break;
}
}
temp_r27 = &lbl_1_bss_4D4[var_r26];
Hu3DMotionSet(temp_r31->unk0, temp_r31->unkC[3]);
Hu3DModelAttrReset(temp_r31->unk0, HU3D_MOTATTR_LOOP);
Hu3DMotionSet(temp_r31->unk2, temp_r31->unk16[3]);
Hu3DModelAttrReset(temp_r31->unk2, HU3D_MOTATTR_LOOP);
var_r29 = Hu3DMotionMaxTimeGet(temp_r31->unk0);
var_f29 = fn_1_1D08(atan2d(temp_r27->unk40.x - temp_r31->unk2C.x, temp_r27->unk40.z - temp_r31->unk2C.z));
sp6C = (temp_r27->unk40.x + (50.0 * sind(var_f29)));
sp68 = (temp_r27->unk40.z + (50.0 * cosd(var_f29)));
sp60 = 360.0f * frandf();
var_f24 = 50.0f * frandf();
sp6C += (var_f24 * sind(sp60));
sp68 += (var_f24 * cosd(sp60));
sp70 = fn_1_27C4(var_r29, var_f29, temp_r31->unk38.y);
HuAudFXPlay(0x587);
for (; var_r29 != 0; var_r29--) {
temp_r31->unk38.y += sp70;
Hu3DModelRotSet(temp_r31->unk0, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z);
Hu3DModelRotSet(temp_r31->unk2, temp_r31->unk38.x, temp_r31->unk38.y, temp_r31->unk38.z);
HuPrcVSleep();
}
HuPrcSleep(30);
Hu3DMotionShiftSet(temp_r31->unk0, temp_r31->unkC[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk16[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
HuPrcSleep(10);
while (Hu3DMotionTimeGet(temp_r31->unk0) < 24.0f) {
HuPrcVSleep();
}
Hu3DModelHookReset(temp_r31->unk0);
Hu3DModelHookReset(temp_r31->unk2);
HuAudFXPlay(0x586);
temp_r30 = lbl_1_bss_278[var_r23];
temp_r30->unk6 = var_r23;
temp_r30->unkA = 0;
var_r22 = HuPrcChildCreate(fn_1_2064, 0x1000, 0x3000, 0, HuPrcCurrentGet());
var_r22->user_data = temp_r30;
temp_r30->unkC = 1;
temp_r30->unk0 = temp_r31->unk6;
temp_r30->unk2 = temp_r31->unk8;
temp_r30->unk4 = temp_r31->unkA;
temp_r30->unk30 = 100.0f;
temp_r30->unk10.x = -217.722f;
temp_r30->unk10.y = 404.52f;
temp_r30->unk10.z = 0.0f;
var_f29 = fn_1_1D08(atan2d(temp_r30->unk10.x, temp_r30->unk10.z));
var_f29 += temp_r31->unk38.y;
var_f24 = sqrtf((temp_r30->unk10.x * temp_r30->unk10.x) + (temp_r30->unk10.z * temp_r30->unk10.z));
temp_r30->unk10.x = (temp_r31->unk2C.x + (var_f24 * sind(var_f29)));
temp_r30->unk10.y = (404.52f + temp_r31->unk2C.y) - 100.0f;
temp_r30->unk10.z = (temp_r31->unk2C.z + (var_f24 * cosd(var_f29)));
Hu3DModelPosSet(temp_r31->unk6, temp_r30->unk10.x, temp_r30->unk10.y, temp_r30->unk10.z);
Hu3DModelPosSet(temp_r31->unk8, temp_r30->unk10.x, -temp_r30->unk10.y, temp_r30->unk10.z);
HuSetVecF(&sp8C, temp_r31->unk2C.x, 0.0, temp_r31->unk2C.z);
HuSetVecF(&sp80, sp6C, 0.0, sp68);
HuSubVecF(&sp74, &sp8C, &sp80);
var_f24 = sqrtf((sp74.x * sp74.x) + (sp74.z * sp74.z));
sp54 = 1.0f;
while (1) {
for (var_r29 = 0, sp5C = temp_r30->unk10.y, sp58 = sp54; sp58 > 0.0f; var_r29++) {
sp5C += sp58;
sp58 -= 0.9f;
}
if (sp5C >= 600.0f)
break;
sp54++;
}
for (; sp5C > 0.0f; var_r29++) {
sp5C += sp58;
sp58 -= 0.9f;
}
temp_r30->unk24.z = sp54;
temp_r30->unk24.x = fn_1_1D08(atan2d((sp6C - temp_r30->unk10.x), (sp68 - temp_r30->unk10.z)));
temp_r30->unk24.y = var_f24 / var_r29;
while (Hu3DMotionEndCheck(temp_r31->unk0) == 0) {
HuPrcVSleep();
}
goto loop_1;
}
s8 fn_1_4BE4(s32 arg0, s32 arg1)
{
s8 var_r30;
unkStruct3 *temp_r31;
temp_r31 = &lbl_1_bss_4D4[arg0];
if (GWPlayerCfg[arg0].iscom == 0) {
(arg1 != 0) ? (var_r30 = HuPadStkY[temp_r31->unk2C]) : (var_r30 = HuPadStkX[temp_r31->unk2C]);
}
else {
(arg1 != 0) ? (var_r30 = temp_r31->unk89) : (var_r30 = temp_r31->unk88);
}
return var_r30;
}
void fn_1_4C9C(Vec *arg0, f32 arg8, f32 arg9)
{
f32 temp_f29;
temp_f29 = sqrtf((arg0->x * arg0->x) + (arg0->z * arg0->z));
temp_f29 *= arg9;
arg0->x = (temp_f29 * sind(arg8));
arg0->z = (temp_f29 * cosd(arg8));
}
s8 fn_1_4E58(s32 arg0, s32 arg1)
{
Vec spC;
f32 temp_f28;
s8 var_r30;
s8 temp_r29;
s8 temp_r28;
unkStruct3 *temp_r31;
temp_r31 = &lbl_1_bss_4D4[arg0];
if (GWPlayerCfg[arg0].iscom == 0) {
temp_r29 = HuPadStkX[temp_r31->unk2C];
temp_r28 = HuPadStkY[temp_r31->unk2C];
temp_f28 = fn_1_1D08(atan2d(temp_r29, temp_r28));
temp_f28 -= lbl_1_bss_778;
HuSetVecF(&spC, (f32)temp_r29, 0.0, (f32)temp_r28);
fn_1_4C9C(&spC, temp_f28, 1.0f);
(arg1 != 0) ? (var_r30 = spC.z) : (var_r30 = spC.x);
}
else {
(arg1 != 0) ? (var_r30 = temp_r31->unk89) : (var_r30 = temp_r31->unk88);
}
return var_r30;
}
u8 fn_1_525C(s32 arg0, s32 arg1)
{
s8 var_r30;
unkStruct3 *temp_r31;
temp_r31 = &lbl_1_bss_4D4[arg0];
if (GWPlayerCfg[arg0].iscom == 0) {
(arg1 != 0) ? (var_r30 = HuPadTrigR[temp_r31->unk2C]) : (var_r30 = HuPadTrigL[temp_r31->unk2C]);
}
else {
(arg1 != 0) ? (var_r30 = temp_r31->unk8A) : (var_r30 = temp_r31->unk8B);
}
return var_r30;
}
u16 fn_1_531C(s32 arg0)
{
u16 var_r30;
unkStruct3 *temp_r31;
temp_r31 = &lbl_1_bss_4D4[arg0];
if (GWPlayerCfg[arg0].iscom == 0) {
var_r30 = HuPadBtnDown[temp_r31->unk2C];
}
else {
var_r30 = temp_r31->unk8E;
}
return var_r30;
}
u16 fn_1_5388(s32 arg0)
{
u16 var_r30;
unkStruct3 *temp_r31;
temp_r31 = &lbl_1_bss_4D4[arg0];
if (GWPlayerCfg[arg0].iscom == 0) {
var_r30 = HuPadBtn[temp_r31->unk2C];
}
else {
var_r30 = temp_r31->unk8C;
}
return var_r30;
}
s32 fn_1_53F4(unkStruct3 *arg0, f32 arg8, f32 arg9, f32 argA)
{
Vec sp30;
Vec sp24;
Vec sp18;
unkStruct3 *temp_r31;
s32 var_r30;
s32 var_r28;
f32 var_f27;
f32 var_f28;
var_r28 = -1;
for (var_r30 = 0, var_f28 = 10000.0f; var_r30 < 4; var_r30++) {
if (var_r30 != arg0->unk24) {
temp_r31 = &lbl_1_bss_4D4[var_r30];
HuSetVecF(&sp30, arg8, arg9, argA);
HuSetVecF(&sp24, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
HuSubVecF(&sp18, &sp30, &sp24);
if (((var_f27 = sqrtf((sp18.z * sp18.z) + ((sp18.x * sp18.x) + (sp18.y * sp18.y)))) < (arg0->unk60.x + temp_r31->unk60.x))
&& (var_f27 < var_f28)) {
var_f28 = var_f27;
var_r28 = var_r30;
arg0->unkA4 = 0;
}
}
}
return var_r28;
}
s32 fn_1_561C(unkStruct3 *arg0, s32 *arg1)
{
Vec sp24;
Vec sp18;
Vec spC;
f32 var_f27;
f32 var_f28;
s32 var_r27;
s32 var_r28;
s32 var_r29;
unkStruct3 *temp_r30;
var_r27 = -1;
var_r29 = 0;
var_f28 = 10000.0f;
var_r28 = 0;
for (; var_r29 < 4; var_r29++) {
if (var_r29 != arg0->unk24) {
temp_r30 = &lbl_1_bss_4D4[var_r29];
HuSetVecF(&sp24, arg0->unk40.x, arg0->unk40.y, arg0->unk40.z);
HuSetVecF(&sp18, temp_r30->unk40.x, temp_r30->unk40.y, temp_r30->unk40.z);
HuSubVecF(&spC, &sp24, &sp18);
if ((var_f27 = sqrtf((spC.z * spC.z) + ((spC.x * spC.x) + (spC.y * spC.y)))) < (arg0->unk60.x + temp_r30->unk60.x)) {
var_r28 += 1;
if (var_f27 < var_f28) {
var_f28 = var_f27;
var_r27 = var_r29;
arg0->unkA4 = 0;
}
}
}
}
*arg1 = var_r28;
return var_r27;
}
void fn_1_5838(unkStruct3 *arg0)
{
Vec spA8;
Vec sp9C;
Vec sp90;
Vec sp84;
Vec sp78;
Vec sp6C;
s32 sp68;
f32 sp64;
f32 sp60;
f32 sp5C;
f32 sp58;
f32 sp54;
f32 sp50;
f32 sp4C;
f32 var_f20;
f32 var_f25;
f32 var_f27;
f32 var_f26;
s32 var_r25;
s32 var_r29;
unkStruct3 *temp_r27;
unkStruct3 *var_r30;
s32 var_r24;
var_r24 = fn_1_561C(arg0, &sp68);
if (var_r24 != -1) {
var_f20 = fn_1_1D08(atan2d((arg0->unk40.x - arg0->unk4C.x), (arg0->unk40.z - arg0->unk4C.y)));
sp58 = var_f27 = arg0->unk4C.x;
sp54 = var_f26 = arg0->unk4C.y;
sp4C = 1.0f;
var_r25 = (1.0f + (10.0f / sp4C));
while (var_r25 != 0) {
var_f27 += sp4C * sind(var_f20);
var_f26 += sp4C * cosd(var_f20);
HuSetVecF(&spA8, var_f27, arg0->unk40.y, var_f26);
for (var_r29 = 0; var_r29 < 4; var_r29++) {
if (var_r29 == arg0->unk24)
continue;
var_r30 = &lbl_1_bss_4D4[var_r29];
HuSetVecF(&sp9C, var_r30->unk40.x, var_r30->unk40.y, var_r30->unk40.z);
HuSubVecF(&sp90, &spA8, &sp9C);
if (sqrtf((sp90.z * sp90.z) + ((sp90.x * sp90.x) + (sp90.y * sp90.y))) < (arg0->unk60.x + var_r30->unk60.x))
break;
}
if (var_r29 < 4)
break;
AddX = 0.0f;
AddZ = 0.0f;
MapWall(arg0->unk60.x, var_f27, arg0->unk40.y + arg0->unk60.x, var_f26);
if ((AddX + AddZ) != 0.0f)
goto end;
sp58 = var_f27;
sp54 = var_f26;
var_r25--;
}
var_f20 = fn_1_1D08(atan2d((arg0->unk40.x - arg0->unk4C.x), (arg0->unk40.z - arg0->unk4C.y)));
var_f25 = fn_1_1D08(atan2d((var_r30->unk40.x - arg0->unk4C.x), (var_r30->unk40.z - arg0->unk4C.y)));
sp60 = var_f20 - var_f25;
if (sp60 > 0.0f) {
sp5C = -0.5f;
}
else {
sp5C = 0.5f;
}
if (ABS_INV(var_f20 - var_f25) > 180.0f) {
sp5C = -sp5C;
}
var_f25 = fn_1_1D08(atan2d((arg0->unk4C.x - var_r30->unk40.x), (arg0->unk4C.y - var_r30->unk40.z)));
sp50 = 0.8f * arg0->unk60.y;
var_r24 = var_r30->unk24;
sp64 = 1.0f + (arg0->unk60.x + var_r30->unk60.x);
while (1) {
var_f27 = (var_r30->unk40.x + (sp64 * sind(var_f25)));
var_f26 = (var_r30->unk40.z + (sp64 * cosd(var_f25)));
HuSetVecF(&spA8, var_f27, 0.0, var_f26);
for (var_r29 = 0; var_r29 < 4; var_r29++) {
if ((var_r29 == arg0->unk24) || (var_r29 == var_r24))
continue;
temp_r27 = &lbl_1_bss_4D4[var_r29];
HuSetVecF(&sp9C, temp_r27->unk40.x, 0.0, temp_r27->unk40.z);
HuSubVecF(&sp90, &spA8, &sp9C);
if (sqrtf((sp90.x * sp90.x) + (sp90.z * sp90.z)) < (arg0->unk60.x + temp_r27->unk60.x))
break;
}
if (var_r29 < 4)
break;
AddX = 0.0f;
AddZ = 0.0f;
MapWall(arg0->unk60.x, var_f27, arg0->unk40.y + arg0->unk60.x, var_f26);
if ((AddX + AddZ) != 0.0f)
break;
sp58 = var_f27;
sp54 = var_f26;
HuSetVecF(&spA8, arg0->unk4C.x, 0.0, arg0->unk4C.y);
HuSetVecF(&sp9C, var_f27, 0.0, var_f26);
HuSubVecF(&sp90, &spA8, &sp9C);
if (sqrtf((sp90.x * sp90.x) + (sp90.z * sp90.z)) > sp50)
break;
var_f25 += sp5C;
}
end:
arg0->unk40.x = sp58;
arg0->unk40.z = sp54;
}
}
f32 fn_1_6594(f32 arg8, f32 arg9, f32 argA)
{
f32 var_f31;
f32 var_f30;
var_f31 = fmod((arg9 - arg8), 360.0);
if (0.0f > var_f31) {
var_f31 += 360.0f;
}
if (180.0f < var_f31) {
var_f31 -= 360.0f;
}
var_f30 = fmod((arg8 + (var_f31 * argA)), 360.0);
if (0.0f > var_f30) {
var_f30 += 360.0f;
}
return var_f30;
}
f32 fn_1_6698(f32 arg8, f32 arg9, unkStruct3 *arg0)
{
Vec sp2C;
Vec sp20;
Vec sp14;
HuSetVecF(&sp2C, arg8, 0.0, arg9);
HuSetVecF(&sp20, arg0->unk40.x, 0.0, arg0->unk40.z);
HuSubVecF(&sp14, &sp2C, &sp20);
return sqrtf((sp14.x * sp14.x) + (sp14.z * sp14.z));
}
static inline void PadInline(void)
{
float var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
}
// fn_1_6814: https://decomp.me/scratch/WQPjD
void fn_1_6814(unkStruct3 *arg0)
{
Vec sp104;
Vec spF8;
Vec spEC;
volatile f32 spA0;
f32 sp9C;
f32 sp98;
f32 var_f27; // probably debug code
f32 var_f18;
f32 temp_f31;
f32 temp_f30;
f32 var_f29;
s32 var_r22;
s32 var_r21;
s32 var_r20;
unkStruct *temp_r27;
s32 var_r28;
unkStruct3 *temp_r29;
unkStruct *var_r30;
arg0->unk88 = arg0->unk89 = 0;
arg0->unk8B = arg0->unk8A = 0;
arg0->unk8C = arg0->unk8E = 0;
switch (GWPlayerCfg[arg0->unk24].diff) {
case 0:
var_r22 = 0x3C;
break;
case 1:
var_r22 = 0x50;
break;
case 2:
var_r22 = 0x5A;
break;
default:
var_r22 = 0x5F;
break;
}
switch (GWPlayerCfg[arg0->unk24].diff) {
case 0:
spA0 = 200.0f;
break;
case 1:
spA0 = 250.0f;
break;
case 2:
spA0 = 300.0f;
break;
default:
spA0 = 350.0f;
break;
}
for (var_r28 = 0, sp98 = 10000.0f; var_r28 < 0x20; var_r28++) {
temp_r27 = lbl_1_bss_278[var_r28];
if (temp_r27 && (temp_r27->unk6 != -1)) {
HuSetVecF(&sp104, arg0->unk40.x, 0.0, arg0->unk40.z);
HuSetVecF(&spF8, temp_r27->unk10.x, 0.0, temp_r27->unk10.z);
HuSubVecF(&spEC, &sp104, &spF8);
var_f29 = sqrtf((spEC.z * spEC.z) + ((spEC.x * spEC.x) + (spEC.y * spEC.y)));
if ((var_f29 < (spA0 + (arg0->unk60.x + temp_r27->unk30))) && (sp98 > var_f29)) {
var_r30 = temp_r27;
sp98 = var_f29;
}
}
}
if (sp98 < 10000.0f) {
arg0->unk9C = 0;
var_r21 = 1;
if (arg0->unkA0 != var_r30->unk6) {
if (frandmod(0x64) < 0) {
(void)var_r21; // probably debug code
PadInline();
}
else {
(void)var_r21;
}
}
if (var_r21 != 0) {
sp9C = 200.0f + (var_r30->unk30 + arg0->unk60.x) + (100.0f * frandf());
sp104.x = temp_f31 = (var_r30->unk10.x + (sp9C * sind(var_r30->unk24.x + 90.0f)));
sp104.z = temp_f30 = (var_r30->unk10.z + (sp9C * cosd(var_r30->unk24.x + 90.0f)));
var_f29 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
spF8.x = temp_f31 = (var_r30->unk10.x + (sp9C * sind(var_r30->unk24.x - 90.0f)));
spF8.z = temp_f30 = (var_r30->unk10.z + (sp9C * cosd(var_r30->unk24.x - 90.0f)));
spA0 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
if (sqrtf((arg0->unk40.x * arg0->unk40.x) + (arg0->unk40.z * arg0->unk40.z)) < 400.0f) {
spEC.x = var_f29;
var_f29 = spA0;
spA0 = spEC.x;
}
if (var_f29 > spA0) {
spEC.x = spF8.x;
spEC.z = spF8.z;
}
else {
spEC.x = sp104.x;
spEC.z = sp104.z;
}
if (arg0->unkA0 != var_r30->unk6) {
arg0->unkA0 = var_r30->unk6;
arg0->unk90.x = spEC.x;
arg0->unk90.y = spEC.z;
}
var_f18 = atan2d((arg0->unk90.x - arg0->unk40.x), (arg0->unk90.y - arg0->unk40.z));
if (fn_1_53F4(arg0, arg0->unk40.x + arg0->unk7C.x, arg0->unk40.y, arg0->unk40.z + arg0->unk7C.z) != -1) {
var_f18 += 90.0f;
}
arg0->unk88 = 50.0 * sind(var_f18);
arg0->unk89 = -50.0f * cosd(var_f18);
}
}
else {
if (arg0->unk9C == 0) {
arg0->unk9C = 1;
arg0->unk98 = (250.0f + (90.0f * frandf()));
arg0->unkA4 = 30;
}
if ((sqrtf((arg0->unk40.x * arg0->unk40.x) + (arg0->unk40.z * arg0->unk40.z)) > arg0->unk98) && (arg0->unkA4 != 0)) {
arg0->unkA4--;
var_f18 = (180.0 + (atan2d(arg0->unk40.x, arg0->unk40.z)));
if (fn_1_53F4(arg0, arg0->unk40.x + arg0->unk7C.x, arg0->unk40.y, arg0->unk40.z + arg0->unk7C.z) != -1) {
arg0->unkA4 = 0;
var_f18 += 90.0f;
}
arg0->unk88 = 25.0 * sind(var_f18);
arg0->unk89 = -25.0 * cosd(var_f18);
return;
}
var_r28 = 0;
sp98 = 10000.0f;
var_r20 = -1;
for (; var_r28 < 4; var_r28++) {
if (var_r28 != arg0->unk24) {
temp_r29 = &lbl_1_bss_4D4[var_r28];
HuSetVecF(&sp104, arg0->unk40.x, 0.0, arg0->unk40.z);
HuSetVecF(&spF8, temp_r29->unk40.x, 0.0, temp_r29->unk40.z);
HuSubVecF(&spEC, &sp104, &spF8);
var_f29 = sqrtf((spEC.z * spEC.z) + ((spEC.x * spEC.x) + (spEC.y * spEC.y)));
if (var_f29 < sp98) {
var_r20 = var_r28;
sp98 = var_f29;
}
}
}
if (var_r20 != -1) {
temp_r29 = &lbl_1_bss_4D4[var_r20];
HuSetVecF(&sp104, arg0->unk40.x, 0.0, arg0->unk40.z);
HuSetVecF(&spF8, temp_r29->unk40.x, 0.0, temp_r29->unk40.z);
HuSubVecF(&spEC, &sp104, &spF8);
var_f29 = sqrtf((spEC.x * spEC.x) + (spEC.z * spEC.z));
if ((var_f29 < 200.0f) && (var_f29 > 150.0f)) {
var_f18 = atan2d((arg0->unk40.x - temp_r29->unk40.x), (arg0->unk40.z - temp_r29->unk40.z));
(void)var_f29;
arg0->unk88 = 30.0f * sind(var_f18);
arg0->unk89 = -30.0f * cosd(var_f18);
}
}
}
}
void fn_1_7C60(void)
{
Vec sp1A0;
Vec sp188;
Vec sp17C;
Vec sp170;
Vec sp164;
Vec sp158;
Vec sp14C;
Vec sp140;
f32 sp13C;
f32 sp138;
f32 sp134;
f32 sp130;
f32 sp12C;
f32 temp_f20;
f32 var_f21;
f32 var_f31;
s32 var_r27;
unkStruct3 *temp_r30;
unkStruct3 *temp_r31;
temp_r31 = HuPrcCurrentGet()->user_data;
temp_r31->unk30 = 0;
temp_r31->unk9C = 0;
temp_r31->unkA0 = -1;
while (lbl_1_bss_794 == 0) {
HuPrcVSleep();
}
lbl_1_bss_794 = 2;
while (lbl_1_bss_794 == 2) {
HuPrcVSleep();
}
loop_6:
temp_r31->unk4C.x = temp_r31->unk40.x;
temp_r31->unk4C.y = temp_r31->unk40.z;
if (GWPlayerCfg[temp_r31->unk24].iscom == 1) {
fn_1_6814(temp_r31);
}
switch (temp_r31->unk30) {
default:
HuSetVecF(&sp1A0, fn_1_4E58(temp_r31->unk24, 0) / 4.0f, 0.0, -fn_1_4E58(temp_r31->unk24, 1) / 4.0f);
temp_r31->unk60.z = sqrtf((sp1A0.z * sp1A0.z) + ((sp1A0.x * sp1A0.x) + (sp1A0.y * sp1A0.y)));
if (temp_r31->unk60.z >= 0.5f) {
if (temp_r31->unk60.z >= 10.0f) {
sp1A0.x /= temp_r31->unk60.z;
sp1A0.z /= temp_r31->unk60.z;
temp_r31->unk60.z = 10.0f;
sp1A0.x = 10.0f * sp1A0.x;
sp1A0.z = 10.0f * sp1A0.z;
}
temp_r31->unk54.y = fn_1_6594(temp_r31->unk54.y, atan2d(sp1A0.x, sp1A0.z), 0.4f);
if (temp_r31->unk60.z >= 8.0f) {
if (temp_r31->unk30 != 2) {
temp_r31->unk30 = 2;
CharModelMotionShiftSet(
lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
}
}
else if (temp_r31->unk30 != 1) {
temp_r31->unk30 = 1;
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
}
temp_r31->unk7C.x += 0.1f * sp1A0.x;
temp_r31->unk7C.z += 0.1f * sp1A0.z;
}
else if (temp_r31->unk30 != 0) {
temp_r31->unk30 = 0;
CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[0]);
Hu3DModelAttrSet(temp_r31->unk0, HU3D_MOTATTR_LOOP);
Hu3DMotionSet(temp_r31->unk2, temp_r31->unk18[0]);
Hu3DMotionSpeedSet(temp_r31->unk2, 2.0f);
Hu3DModelAttrSet(temp_r31->unk2, HU3D_MOTATTR_LOOP);
}
var_f21 = sqrtf((temp_r31->unk7C.x * temp_r31->unk7C.x) + (temp_r31->unk7C.z * temp_r31->unk7C.z));
if (temp_r31->unk60.z > 0.5f) {
if (var_f21 > 0.25f) {
var_f21 -= 0.25f;
}
}
else {
var_f21 -= 0.25f;
}
if (var_f21 < 0.0f) {
HuSetVecF(&temp_r31->unk7C, 0.0, 0.0, 0.0);
var_f21 = 0.0f;
}
else {
if (var_f21 > 10.0f) {
var_f21 = 10.0f;
}
sp13C = fn_1_1D08(atan2d(temp_r31->unk7C.x, temp_r31->unk7C.z));
HuSetVecF(&temp_r31->unk7C, (var_f21 * sind(sp13C)), 0.0, (var_f21 * cosd(sp13C)));
}
temp_r31->unk60.y = var_f21;
temp_r31->unk40.x += temp_r31->unk7C.x;
temp_r31->unk40.z += temp_r31->unk7C.z;
if ((temp_r31->unk38 = fn_1_53F4(temp_r31, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z)) != -1) {
temp_r30 = &lbl_1_bss_4D4[temp_r31->unk38];
if (temp_r30->unk30 != 3) {
var_f31 = atan2d((temp_r30->unk40.x - temp_r31->unk40.x), (temp_r30->unk40.z - temp_r31->unk40.z));
temp_f20 = atan2d(temp_r31->unk7C.x, temp_r31->unk7C.z);
var_f31 = ABS_INV(var_f31 - temp_f20);
if (var_f31 > 180.0f) {
var_f31 = 360.0f - var_f31;
}
sp138 = var_f31 / 90.0f;
var_f31 = atan2d((temp_r31->unk40.x - temp_r30->unk40.x), (temp_r31->unk40.z - temp_r30->unk40.z));
temp_f20 = atan2d(temp_r31->unk7C.x, temp_r31->unk7C.z);
temp_f20 = fn_1_1D08(180.0f + temp_f20);
temp_f20 = fn_1_1D08(var_f31 - (temp_f20 - var_f31));
var_f31 = fn_1_1D08(atan2d((temp_r30->unk40.x - temp_r31->unk40.x), (temp_r30->unk40.z - temp_r31->unk40.z)));
HuSetVecF(&sp1A0, temp_r31->unk7C.x, 0.0, temp_r31->unk7C.z);
fn_1_4C9C(&sp1A0, var_f31, 1.0f - sp138);
HuSetVecF(&temp_r30->unk7C, sp1A0.x, 0.0, sp1A0.z);
HuSetVecF(&sp1A0, temp_r31->unk7C.x, 0.0, temp_r31->unk7C.z);
fn_1_4C9C(&sp1A0, temp_f20, sp138);
HuSetVecF(&temp_r31->unk7C, sp1A0.x, 0.0, sp1A0.z);
}
fn_1_5838(temp_r31);
}
while (1) {
AddX = 0.0f;
AddZ = 0.0f;
MapWall(temp_r31->unk60.x, temp_r31->unk40.x, temp_r31->unk40.y + temp_r31->unk60.x, temp_r31->unk40.z);
temp_r31->unk40.x += AddX;
temp_r31->unk40.z += AddZ;
if ((temp_r31->unk38 = fn_1_53F4(temp_r31, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z)) == -1)
break;
temp_r31->unk40.x = temp_r31->unk4C.x;
temp_r31->unk40.z = temp_r31->unk4C.y;
}
Hu3DModelPosSet(temp_r31->unk0, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
Hu3DModelRotSet(temp_r31->unk0, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z);
Hu3DModelPosSet(temp_r31->unk2, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
Hu3DModelRotSet(temp_r31->unk2, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z);
HuPrcVSleep();
goto loop_6;
case 3:
HuAudFXPlay(0x584);
Hu3DModelAttrSet(temp_r31->unk0, HU3D_MOTATTR_PAUSE);
Hu3DModelAttrSet(temp_r31->unk2, HU3D_MOTATTR_PAUSE);
Hu3DModelPosSet(temp_r31->unkA, temp_r31->unk40.x + (100.0 * sind(lbl_1_bss_778)), 200.0f + temp_r31->unk40.y,
temp_r31->unk40.z + (100.0 * cosd(lbl_1_bss_778)));
Hu3DModelAttrReset(temp_r31->unkA, HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(temp_r31->unkA, HU3D_MOTATTR_PAUSE);
HuPrcSleep(10);
Hu3DModelAttrSet(temp_r31->unk0, HU3D_MOTATTR_PAUSE);
Hu3DModelAttrSet(temp_r31->unk2, HU3D_MOTATTR_PAUSE);
HuPrcSleep(10);
Hu3DModelPosSet(temp_r31->unk6, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
Hu3DModelPosSet(temp_r31->unk8, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
Hu3DModelAttrReset(temp_r31->unk6, HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(temp_r31->unk8, HU3D_ATTR_DISPOFF);
Hu3DModelShadowDispOn(temp_r31->unk6);
for (sp134 = 0.0f, sp130 = 1.0f; sp134 < 1; sp134 += 0.05f, sp130 -= 0.1f) {
Hu3DModelScaleSet(temp_r31->unk6, 1.0f, sp134, 1.0f);
Hu3DModelScaleSet(temp_r31->unk8, 1.0f, -sp134, 1.0f);
if (sp130 > 0.0f) {
Hu3DModelAmbSet(temp_r31->unk0, sp130, sp130, 1.0f);
}
HuPrcVSleep();
}
Hu3DModelScaleSet(temp_r31->unk6, 1.0f, 1.0f, 1.0f);
Hu3DModelScaleSet(temp_r31->unk8, 1.0f, -1.0f, 1.0f);
while (1) {
HuPrcVSleep();
}
case 4:
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP);
Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP);
var_r27 = 30;
sp12C = fn_1_27C4(var_r27, lbl_1_bss_778, temp_r31->unk54.y);
for (; var_r27 != 0; var_r27--) {
temp_r31->unk54.y += sp12C;
Hu3DModelRotSet(temp_r31->unk0, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z);
Hu3DModelRotSet(temp_r31->unk2, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z);
HuPrcVSleep();
}
while (lbl_1_bss_794 < 5) {
HuPrcVSleep();
}
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[5], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[5], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
while (1) {
HuPrcVSleep();
}
}
}
void fn_1_A01C(ModelData *model, ParticleData *particle, f32 (*matrix)[4])
{
HsfanimStruct01 *var_r31;
f32 var_f29;
f32 var_f28;
f32 var_f30;
f32 var_f31;
s16 var_r25;
s16 var_r24;
s16 var_r26;
s16 var_r28;
s32 var_r27;
unkStruct *temp_r30;
if (particle->unk_34 == 0) {
var_r31 = particle->unk_48;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
var_r31->unk14.x = var_r31->unk2C = 0.0f;
}
}
var_r31 = particle->unk_48;
for (var_r26 = 0; var_r26 < 0x20; var_r26++) {
temp_r30 = lbl_1_bss_278[var_r26];
if (temp_r30 && (temp_r30->unkA != 0)) {
for (var_r25 = 0, var_f30 = 0.0f; var_r25 < 4; var_r25++, var_f30 += 45.0f) {
for (var_r24 = 0, var_f31 = 0.0f; var_r24 < 8; var_r24++, var_f31 += 45.0f) {
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
if (var_r31->unk14.x == 0.0f)
break;
}
if (var_r28 == particle->unk_30)
break;
if (temp_r30->unkC == 1) {
var_f29 = 2.0f + (2.0f * frandf());
var_f28 = 10.0f;
}
else {
var_f29 = 1.0f + frandf();
var_f28 = 3.0f;
}
var_r31->unk34.x = temp_r30->unk10.x + (var_f29 * (sind(var_f30) * cosd(var_f31)));
var_r31->unk34.y = temp_r30->unk10.y + (var_f29 * sind(var_f31));
var_r31->unk34.z = (temp_r30->unk10.z + (var_f29 * (cosd(var_f30) * cosd(var_f31))));
var_r31->unk08.x = (var_f28 * (sind(var_f30) * cosd(var_f31)));
var_r31->unk08.y = (var_f28 * sind(var_f31));
var_r31->unk08.z = (var_f28 * (cosd(var_f30) * cosd(var_f31)));
var_r31->unk14.x = 30.0f;
if (temp_r30->unkC == 1) {
var_r31->unk2C = 20.0f + (2.0f * frandf());
var_r31->unk14.y = 0.0f;
}
else {
var_r31->unk2C = 15.0f;
var_r31->unk14.y = 0.0f;
}
var_r31->unk40.a = 0xFF;
var_r31->unk14.z = 20.0f;
}
}
temp_r30->unkA++;
}
}
var_r31 = particle->unk_48;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
if (var_r31->unk14.x != 0.0f) {
VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34);
var_r31->unk08.x *= 0.95f;
var_r31->unk08.z *= 0.95f;
var_r31->unk08.y -= 0.2f;
var_r31->unk2C += var_r31->unk14.y;
var_r27 = var_r31->unk40.a;
var_r27 -= var_r31->unk14.z;
if (var_r31->unk14.z > 3.0f) {
var_r31->unk14.z -= 1.0f;
}
if (var_r27 < 0) {
var_r27 = 0;
var_r31->unk14.x = 0.0f;
}
var_r31->unk40.a = var_r27;
if (var_r31->unk14.x == 0.0f) {
var_r31->unk2C = 0.0f;
}
}
}
}
void fn_1_A618(ModelData *model, ParticleData *particle, f32 (*matrix)[4])
{
HsfanimStruct01 *var_r31;
f32 var_f31;
f32 var_f30;
f32 var_f29;
f32 var_f28;
s16 var_r26;
s16 var_r25;
s16 var_r29;
s32 var_r27;
unkStruct *temp_r28;
if (particle->unk_34 == 0) {
var_r31 = particle->unk_48;
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
var_r31->unk14.x = var_r31->unk2C = 0.0f;
}
}
var_r31 = particle->unk_48;
for (var_r26 = 0; var_r26 < 0x20; var_r26++) {
temp_r28 = lbl_1_bss_278[var_r26];
if (temp_r28 && (temp_r28->unkA != 0)) {
for (var_r25 = 0, var_f28 = 0.0f; var_r25 < 9; var_r25++, var_f28 += 45.0f) {
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
if (var_r31->unk14.x == 0.0f)
break;
}
if (var_r29 == particle->unk_30)
break;
var_f31 = var_f28;
if (var_r25 < 8) {
var_f30 = 1.0f + frandf();
var_f29 = 2.0f;
}
else {
var_f30 = var_f29 = 0.0f;
}
var_r31->unk34.x = temp_r28->unk10.x + (var_f30 * sind(var_f31));
var_r31->unk34.y = temp_r28->unk10.y + (10.0f * frandf());
var_r31->unk34.z = temp_r28->unk10.z + (var_f30 * cosd(var_f31));
var_r31->unk08.x = var_f29 * sind(var_f31);
var_r31->unk08.y = -1.0f + frandf();
var_r31->unk08.z = var_f29 * cosd(var_f31);
var_r31->unk14.x = 30.0f;
var_r31->unk2C = 15.0f;
var_r31->unk14.y = 1.5f;
var_r31->unk40.a = 0xC8;
var_r31->unk14.z = 17.0f;
}
temp_r28->unkA = 0;
}
}
var_r31 = particle->unk_48;
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
if (0.0f != var_r31->unk14.x) {
VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34);
var_r31->unk08.x *= 0.95f;
var_r31->unk08.z *= 0.95f;
var_r31->unk08.y -= 0.2f;
var_r31->unk2C += var_r31->unk14.y;
var_r27 = var_r31->unk40.a;
var_r27 -= var_r31->unk14.z;
if (var_r31->unk14.z > 3.0f) {
var_r31->unk14.z -= 1.0f;
}
if (var_r27 < 0) {
var_r27 = 0;
var_r31->unk14.x = 0.0f;
}
var_r31->unk40.a = var_r27;
if (0.0f == var_r31->unk14.x) {
var_r31->unk2C = 0.0f;
}
}
}
}
void fn_1_AA88(ModelData *model, ParticleData *particle, f32 (*matrix)[4])
{
HsfanimStruct01 *var_r31;
f32 var_f31;
s16 var_r27;
s16 var_r28;
unkStruct2 *temp_r29;
if (particle->unk_34 == 0) {
var_r31 = particle->unk_48;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
var_r31->unk14.x = var_r31->unk2C = 0.0f;
}
}
var_r31 = particle->unk_48;
for (var_r27 = 0; var_r27 < 6; var_r27++) {
temp_r29 = &lbl_1_bss_33C[var_r27];
if (temp_r29->unk20 == 0)
continue;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
if (var_r31->unk14.x == 0.0f)
break;
}
if (var_r28 == particle->unk_30)
break;
var_r31->unk34.x = temp_r29->unk2C.x + (-100.0 * cosd(temp_r29->unk38.y));
var_r31->unk34.y = 98.0f + temp_r29->unk2C.y;
var_r31->unk34.z = temp_r29->unk2C.z + (100.0 * sind(temp_r29->unk38.y));
var_r31->unk14.x = 30.0f;
var_r31->unk2C = 80.0f;
var_r31->unk14.y = 5.0f;
var_r31->unk40.a = 0xC8;
var_r31->unk14.z = 17.0f;
temp_r29->unk20 = 0;
}
var_r31 = particle->unk_48;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
if (0.0f != var_r31->unk14.x) {
var_r31->unk2C += var_r31->unk14.y;
if (var_r31->unk14.y > 2.0f) {
var_r31->unk14.y -= 0.2f;
}
var_f31 = var_r31->unk40.a;
var_f31 -= var_r31->unk14.z;
if (var_r31->unk14.z > 3.0f) {
var_r31->unk14.z -= 1.0f;
}
if (var_f31 < 0.0f) {
var_f31 = 0.0f;
var_r31->unk14.x = 0.0f;
}
var_r31->unk40.a = var_f31;
if (var_r31->unk14.x == 0.0f) {
var_r31->unk2C = 0.0f;
}
}
}
}
void fn_1_ADC8(void)
{
Vec sp14;
Vec sp8;
f32 var_f31;
void *temp_r28;
Process *var_r29;
s32 var_r31;
unkStruct3 *temp_r30;
fn_1_6EC(1465.0f, 770.0f, -2400.0f, 0x588);
HuAudFXPlay(0x58B);
var_r31 = 0;
var_f31 = Hu3DMotionMaxTimeGet(lbl_1_bss_79E);
for (; var_f31; var_r31++, var_f31--) {
if (var_r31 == 0x33) {
Hu3DModelAttrReset(lbl_1_bss_798[0], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(lbl_1_bss_798[0], HU3D_ATTR_DISPOFF);
Hu3DModelPosSet(lbl_1_bss_798[0], 1465.0f, 770.0f, -2400.0f);
}
if (var_r31 == 0x47) {
Hu3DModelAttrReset(lbl_1_bss_798[1], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(lbl_1_bss_798[1], HU3D_ATTR_DISPOFF);
Hu3DModelPosSet(lbl_1_bss_798[1], 1531.0f, 773.0f, -2380.0f);
}
if (var_r31 == 0x82) {
temp_r28 = fn_1_6EC(1465.0f, 770.0f, -2400.0f, 0x580);
var_r29 = HuPrcChildCreate(fn_1_7BC, 0x2000, 0x1000, 0, HuPrcCurrentGet());
var_r29->user_data = temp_r28;
}
if (var_f31 == 90.0f) {
for (var_r31 = 0; var_r31 < 4; var_r31++) {
temp_r30 = &lbl_1_bss_4D4[var_r31];
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[var_r31].character], temp_r30->unkC[3], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
Hu3DMotionShiftSet(temp_r30->unk2, temp_r30->unk18[3], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
}
}
HuPrcVSleep();
}
HuPrcSleep(30);
for (var_r31 = 0; var_r31 < 4; var_r31++) {
temp_r30 = &lbl_1_bss_4D4[var_r31];
HuAudPlayerVoicePlay(temp_r30->unk24, 0x128);
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[var_r31].character], temp_r30->unkC[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
Hu3DMotionShiftSet(temp_r30->unk2, temp_r30->unk18[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE);
}
}
void fn_1_B13C(void)
{
HuPrcSleep(0x1E);
}
void fn_1_B160(void)
{
while (1) {
while (1) {
if (omSysExitReq != 1)
break;
WipeCreate(2, 0, 0x3C);
HuAudFadeOut(0x3E8);
HuPrcSleep(0x3C);
MGSeqKillAll();
omOvlReturnEx(1, 1);
while (1) {
HuPrcVSleep();
}
}
HuPrcVSleep();
}
}
void fn_1_B1C0(void)
{
s16 temp_r27;
s16 temp_r30;
s16 var_r29;
s32 var_r26;
s32 var_r28;
s32 var_r31;
lbl_1_bss_794 = 0;
for (var_r31 = 0; var_r31 < 4; var_r31++) {
lbl_1_bss_780[var_r31] = -1;
}
HuAudFXPlay(0x57F);
fn_1_6EC(1465.0f, 770.0f, -2400.0f, 0x589);
HuPrcSleep(1);
Hu3DModelAttrSet(lbl_1_bss_2F8.unk0, HU3D_MOTATTR_PAUSE);
Hu3DModelClusterAttrSet(lbl_1_bss_2F8.unk0, 0, -0x3FFFFFFE);
Hu3DModelAttrSet(lbl_1_bss_2F8.unk2, HU3D_MOTATTR_PAUSE);
Hu3DModelClusterAttrSet(lbl_1_bss_2F8.unk2, 0, -0x3FFFFFFE);
HuPrcSleep(1.0f + wipeData.duration);
fn_1_ADC8();
HuPrcSleep(30);
lbl_1_bss_794 = 1;
while (lbl_1_bss_794 == 1) {
HuPrcVSleep();
}
var_r26 = HuAudSeqPlay(0x43);
temp_r30 = MGSeqCreate(3, 0);
while (MGSeqStatGet(temp_r30) != 0) {
HuPrcVSleep();
}
var_r29 = 0xE4B;
temp_r27 = MGSeqCreate(1, var_r29 / 60, -1, -1);
lbl_1_bss_794 = 3;
while (1) {
for (var_r31 = 0, var_r28 = 0; var_r31 < 4; var_r31++) {
if (lbl_1_bss_4D4[var_r31].unk30 != 3) {
var_r28++;
}
}
if ((var_r28 <= 1) || (var_r29 < 0x3B))
break;
MGSeqParamSet(temp_r27, 1, var_r29-- / 60);
lbl_1_bss_790++;
HuPrcVSleep();
}
for (var_r31 = 0; var_r31 < 4; var_r31++) {
if (lbl_1_bss_4D4[var_r31].unk30 != 3) {
lbl_1_bss_780[var_r31] = GWPlayerCfg[var_r31].character;
if (_CheckFlag(0x1000C) == 0) {
GWPlayer[var_r31].coin_win = 10;
}
}
}
for (var_r31 = 0; var_r31 < 4; var_r31++) {
lbl_1_bss_4D4[var_r31].unk30 = 4;
}
lbl_1_bss_794 = 4;
HuAudSeqFadeOut(var_r26, 0x64);
MGSeqParamSet(temp_r27, 2, -1);
temp_r30 = MGSeqCreate(3, 1);
while (MGSeqStatGet(temp_r30) != 0) {
HuPrcVSleep();
}
HuPrcSleep(30);
lbl_1_bss_794 = 5;
for (var_r31 = 0; var_r31 < 4; var_r31++) {
if (lbl_1_bss_780[var_r31] != -1)
break;
}
if (var_r31 < 4) {
HuAudSStreamPlay(1);
temp_r30 = MGSeqCreate(5, 3, lbl_1_bss_780[0], lbl_1_bss_780[1], lbl_1_bss_780[2], lbl_1_bss_780[3]);
}
else {
HuAudSStreamPlay(4);
temp_r30 = MGSeqCreate(3, 2);
}
HuPrcSleep(0xD2);
WipeCreate(2, 0, 0x3C);
HuPrcSleep(0x3C);
HuAudFadeOut(1);
MGSeqKillAll();
omOvlReturnEx(1, 1);
while (1) {
HuPrcVSleep();
}
}