#include "game/audio.h" #include "game/chrman.h" #include "game/data.h" #include "game/frand.h" #include "game/gamework.h" #include "game/gamework_data.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/process.h" #include "game/sprite.h" #include "game/wipe.h" #include "dolphin.h" #include "ext_math.h" typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02; /* 0x04 */ s16 unk04; /* 0x06 */ s16 unk06[8]; /* 0x16 */ s16 unk16[4]; /* 0x1E */ s16 unk1E; /* 0x20 */ s32 unk20; /* 0x24 */ s32 unk24; /* 0x28 */ s32 unk28; /* 0x2C */ s32 unk2C; /* 0x30 */ s32 unk30; /* 0x34 */ s32 unk34; /* 0x38 */ char unk38[4]; /* 0x3C */ s32 unk3C; /* 0x40 */ char unk40[4]; /* 0x44 */ s32 unk44; /* 0x48 */ s32 unk48; /* 0x4C */ Vec unk4C; /* 0x58 */ float unk58; /* 0x5C */ float unk5C; /* 0x60 */ Vec unk60; /* 0x6C */ float unk6C; /* 0x70 */ float unk70; /* 0x74 */ float unk74; /* 0x78 */ Vec unk78; /* 0x84 */ float unk84; /* 0x88 */ float unk88; /* 0x8C */ float unk8C; /* 0x90 */ float unk90; /* 0x94 */ float unk94; } StructBss340; // Size 0x98 typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02; /* 0x04 */ s16 unk04[3]; /* 0x0A */ char unk0A[2]; /* 0x0C */ s32 unk0C; /* 0x10 */ s32 unk10; /* 0x14 */ Vec unk14; /* 0x20 */ float unk20; /* 0x24 */ float unk24; /* 0x28 */ float unk28; /* 0x2C */ float unk2C; /* 0x30 */ float unk30; /* 0x34 */ float unk34; /* 0x38 */ s32 unk38; /* 0x3C */ s32 unk3C; /* 0x40 */ float unk40; /* 0x44 */ float unk44; } StructBss70; // Size 0x48 void fn_1_4A0(void); float fn_1_14B4(float arg0); void fn_1_174C(void); void fn_1_17A0(s32 arg0, s32 arg1); void fn_1_44D8(void); void fn_1_4BC4(void); void fn_1_69C0(void); void fn_1_7D40(void); void fn_1_545C(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_594C(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_5DE4(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_7DA0(void); s32 fn_1_1880(float arg0, float arg1, float arg2, s32 arg3, s32 arg4); s16 lbl_1_bss_3EA; s16 lbl_1_bss_3E8; s32 lbl_1_bss_3E4; s32 lbl_1_bss_3E0; s32 lbl_1_bss_3DC; s32 lbl_1_bss_3D8; StructBss340 lbl_1_bss_340[1]; StructBss70 lbl_1_bss_70[10]; StructBss70 lbl_1_bss_28; omObjData *lbl_1_bss_24; Vec lbl_1_bss_18; Vec lbl_1_bss_C; Vec lbl_1_bss_0; s32 lbl_1_data_0[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; s32 lbl_1_data_20[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 79), DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), DATA_MAKE_NUM(DATADIR_MARIOMOT, 75), DATA_MAKE_NUM(DATADIR_MARIOMOT, 22) }; Vec lbl_1_data_30[] = { { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f }, { 0.0f, 0.0f, 35.0f } }; Vec lbl_1_data_90[] = { { -900.0f, 143.0f, -1020.0f }, { -677.0f, 143.0f, -1020.0f }, { 900.0f, 0.0f, -1150.0f }, { -307.0f, 182.0f, -1575.0f } }; s32 lbl_1_data_C0[][5] = { { 50, 80, 90, 95, 100 }, { 5, 55, 85, 95, 100 }, { 0, 5, 55, 90, 100 } }; float lbl_1_data_FC[] = { 0.3f, 0.5f, 0.7f, 0.9f, 1.0f }; void ObjectSetup(void) { Process *temp_r3; temp_r3 = omInitObjMan(50, 0x2000); omGameSysInit(temp_r3); Hu3DCameraCreate(1); Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 10000.0f, 1.2f); Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); Hu3DCameraScissorSet(1, 0, 0, 640, 480); lbl_1_bss_24 = omAddObjEx(temp_r3, 0x7FDA, 0, 0, -1, omOutViewMulti); lbl_1_bss_24->work[0] = 1; CRotM->x = -26.0f; CRotM->y = 0.0f; CRotM->z = 0.0f; CenterM->x = 0.0f; CenterM->y = 0.0f; CenterM->z = -295.0f; CZoomM[0] = 3030.0f; Hu3DLighInit(); lbl_1_bss_3EA = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 255, 50, 0); Hu3DGLightPosAimSet(lbl_1_bss_3EA, -2500.0f, 3535.5f, 2500.0f, 0.0f, 0.0f, 0.0f); Hu3DGLightInfinitytSet(lbl_1_bss_3EA); lbl_1_bss_18.x = -2500.0f; lbl_1_bss_18.y = 3535.5f; lbl_1_bss_18.z = 2500.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(0, 0, 0); fn_1_4A0(); HuPrcChildCreate(fn_1_7DA0, 0x1000, 0x2000, 0, HuPrcCurrentGet()); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); } void fn_1_4A0(void) { float temp_f31; float temp_f30; void *var_r27; StructBss340 *temp_r31; StructBss70 *temp_r29; Process *var_r25; AnimData *var_r24; AnimData *spC[4]; s16 var_r30; s16 var_r23; s16 sp8; s32 i; s32 j; lbl_1_bss_3E0 = 0; lbl_1_bss_3D8 = 0; HuAudSndGrpSet(0x2C); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 0), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); lbl_1_bss_3E8 = var_r30; Hu3DModelLayerSet(var_r30, 1); Hu3DModelShadowMapSet(var_r30); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); i = 0; temp_r31 = &lbl_1_bss_340[i]; temp_r31->unk20 = i; temp_r31->unk24 = i; temp_r31->unk28 = GWPlayerCfg[i].pad_idx; temp_r31->unk02 = CharModelCreate(lbl_1_data_0[GWPlayerCfg[i].character], 2); Hu3DModelLayerSet(temp_r31->unk00, 1); CharModelLayerSetAll(2); temp_r31->unk78.x = lbl_1_data_30[GWPlayerCfg[i].character].x; temp_r31->unk78.y = lbl_1_data_30[GWPlayerCfg[i].character].y; temp_r31->unk78.z = lbl_1_data_30[GWPlayerCfg[i].character].z; Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk78.x, temp_r31->unk78.y, temp_r31->unk78.z); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 1), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r31->unk00 = Hu3DModelCreate(var_r27); Hu3DModelLayerSet(temp_r31->unk00, 1); temp_r31->unk60.x = temp_r31->unk60.z = 0.0f; temp_r31->unk60.y = 180.0f; temp_r31->unk4C.x = 0.0f; temp_r31->unk4C.y = 0.0f; temp_r31->unk4C.z = 0.0f; temp_r31->unk60.y = fn_1_14B4(temp_r31->unk60.y + 180.0f); temp_r31->unk94 = temp_r31->unk60.y; temp_r31->unk84 = 200.0f; temp_r31->unk88 = 6.75f; temp_r31->unk8C = 1.0f; temp_r31->unk90 = 1.0f; Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk60.x, temp_r31->unk60.y, temp_r31->unk60.z); Hu3DModelShadowSet(temp_r31->unk00); Hu3DModelHookSet(temp_r31->unk00, "itemhook_c", temp_r31->unk02); for (j = 0; j < 4; j++) { temp_r31->unk16[j] = CharModelMotionCreate(lbl_1_data_0[GWPlayerCfg[i].character], lbl_1_data_20[j]); } CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk16[0]); CharModelMotionTimeSet(lbl_1_data_0[GWPlayerCfg[i].character], 60.0f); CharModelVoiceEnableSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk16[2], 0); for (j = 0; j < 8; j++) { var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 2 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r31->unk06[j] = Hu3DJointMotion(temp_r31->unk00, var_r27); } Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[0]); Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.0f); Hu3DMotionSpeedSet(temp_r31->unk00, 1.0f); Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 10), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r31->unk04 = Hu3DModelCreate(var_r27); Hu3DModelLayerSet(temp_r31->unk04, 1); Hu3DModelAttrSet(temp_r31->unk04, HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(temp_r31->unk04, HU3D_MOTATTR_PAUSE); CharModelMotionDataClose(lbl_1_data_0[GWPlayerCfg[i].character]); var_r25 = HuPrcChildCreate(fn_1_69C0, 0x2000, 0x3000, 0, HuPrcCurrentGet()); var_r25->user_data = temp_r31; var_r24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 2), MEMORY_DEFAULT_NUM)); var_r30 = Hu3DParticleCreate(var_r24, 50); Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); Hu3DModelLayerSet(var_r30, 3); Hu3DParticleColSet(var_r30, 0xFF, 0xFF, 0xFF); Hu3DParticleScaleSet(var_r30, 0.0f); Hu3DParticleHookSet(var_r30, fn_1_545C); var_r24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 2), MEMORY_DEFAULT_NUM)); var_r30 = Hu3DParticleCreate(var_r24, 50); Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); Hu3DModelLayerSet(var_r30, 3); Hu3DParticleColSet(var_r30, 0xFF, 0xFF, 0xFF); Hu3DParticleScaleSet(var_r30, 0.0f); Hu3DParticleHookSet(var_r30, fn_1_594C); var_r24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 2), MEMORY_DEFAULT_NUM)); var_r30 = Hu3DParticleCreate(var_r24, 50); Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); Hu3DModelLayerSet(var_r30, 3); Hu3DParticleColSet(var_r30, 0xFF, 0xFF, 0xFF); Hu3DParticleScaleSet(var_r30, 0.0f); Hu3DParticleHookSet(var_r30, fn_1_5DE4); HuDataDirClose(DATADIR_EFFECT); for (i = 0; i < 10; i++) { temp_r29 = &lbl_1_bss_70[i]; temp_r29->unk30 = 50.0f; do { temp_f31 = 1380.0f * frandf() - 690.0f; temp_f30 = 1380.0f * frandf() - 690.0f; } while (fn_1_1880(temp_f31, temp_f30, 50.0f, i, -1) != 0); temp_r29->unk24 = temp_f31; temp_r29->unk14.x = temp_f31; temp_r29->unk14.y = 0.0f; temp_r29->unk28 = temp_f30; temp_r29->unk14.z = temp_f30; } for (i = 0; i < 10; i++) { temp_r29 = &lbl_1_bss_70[i]; if (i == 0) { var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 12), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); var_r23 = var_r30; } else { var_r30 = Hu3DModelLink(var_r23); } temp_r29->unk00 = var_r30; temp_r29->unk0C = i; temp_r29->unk30 = 50.0f; temp_r29->unk10 = 0; Hu3DModelLayerSet(var_r30, 1); Hu3DModelShadowSet(var_r30); Hu3DModelPosSet(var_r30, temp_r29->unk14.x, temp_r29->unk14.y, temp_r29->unk14.z); temp_r29->unk20 = 0.0f; temp_r29->unk34 = 6.75f * lbl_1_data_FC[0]; for (j = 0; j < 3; j++) { var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 13 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r29->unk04[j] = Hu3DJointMotion(var_r30, var_r27); } Hu3DMotionSet(var_r30, temp_r29->unk04[1]); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 11), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r27); sp8 = var_r30; temp_r29->unk02 = var_r30; Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF); Hu3DModelLayerSet(var_r30, 3); var_r25 = HuPrcChildCreate(fn_1_4BC4, 0x1000, 0x3000, 0, HuPrcCurrentGet()); var_r25->user_data = temp_r29; } for (i = 0; i < 2; i++) { var_r30 = Hu3DModelLink(var_r23); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 16), MEMORY_DEFAULT_NUM, HEAP_DATA); Hu3DMotionSet(var_r30, Hu3DJointMotion(var_r30, var_r27)); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r30); Hu3DModelPosSet(var_r30, lbl_1_data_90[i].x, lbl_1_data_90[i].y, lbl_1_data_90[i].z); if (i != 0) { Hu3DMotionTimeSet(var_r30, Hu3DMotionMaxTimeGet(var_r30) / 2.0f); } } var_r30 = Hu3DModelLink(var_r23); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 19), MEMORY_DEFAULT_NUM, HEAP_DATA); Hu3DMotionSet(var_r30, Hu3DJointMotion(var_r30, var_r27)); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r30); Hu3DModelPosSet(var_r30, lbl_1_data_90[3].x, lbl_1_data_90[3].y, lbl_1_data_90[3].z); Hu3DMotionSpeedSet(var_r30, 0.7f); temp_r29 = &lbl_1_bss_28; var_r30 = Hu3DModelLink(var_r23); temp_r29->unk00 = var_r30; for (j = 0; j < 2; j++) { var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M462, 17 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r29->unk04[j] = Hu3DJointMotion(var_r30, var_r27); } Hu3DMotionSet(var_r30, temp_r29->unk04[0]); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r30); temp_r29->unk14.x = lbl_1_data_90[2].x; temp_r29->unk14.y = lbl_1_data_90[2].y; temp_r29->unk14.z = lbl_1_data_90[2].z; Hu3DModelPosSet(var_r30, temp_r29->unk14.x, temp_r29->unk14.y, temp_r29->unk14.z); var_r25 = HuPrcChildCreate(fn_1_44D8, 0x1000, 0x2000, 0, HuPrcCurrentGet()); var_r25->user_data = temp_r29; var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 44), MEMORY_DEFAULT_NUM, HEAP_DATA); spC[0] = HuSprAnimRead(var_r27); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 55), MEMORY_DEFAULT_NUM, HEAP_DATA); spC[1] = HuSprAnimRead(var_r27); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 48), MEMORY_DEFAULT_NUM, HEAP_DATA); spC[2] = HuSprAnimRead(var_r27); var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 49), MEMORY_DEFAULT_NUM, HEAP_DATA); spC[3] = HuSprAnimRead(var_r27); lbl_1_bss_3DC = HuSprGrpCreate(6); var_r30 = HuSprCreate(spC[0], 0x4000, 0); HuSprGrpMemberSet(lbl_1_bss_3DC, 0, var_r30); HuSprPosSet(lbl_1_bss_3DC, 0, 0.0f, 0.0f); HuSprTPLvlSet(lbl_1_bss_3DC, 0, 0.5f); HuSprColorSet(lbl_1_bss_3DC, 0, 0, 0, 0); var_r30 = HuSprCreate(spC[1], 0x4000, 0); HuSprGrpMemberSet(lbl_1_bss_3DC, 1, var_r30); HuSprPosSet(lbl_1_bss_3DC, 1, -19.0f, -9.0f); var_r30 = HuSprCreate(spC[2], 0x4000, 0); HuSprGrpMemberSet(lbl_1_bss_3DC, 2, var_r30); HuSprPosSet(lbl_1_bss_3DC, 2, 20.0f, -8.0f); var_r30 = HuSprCreate(spC[2], 0x4000, 0); HuSprGrpMemberSet(lbl_1_bss_3DC, 3, var_r30); HuSprPosSet(lbl_1_bss_3DC, 3, 2.0f, -8.0f); var_r30 = HuSprCreate(spC[3], 0x4000, 0); HuSprGrpMemberSet(lbl_1_bss_3DC, 4, var_r30); HuSprPosSet(lbl_1_bss_3DC, 4, 20.0f, 8.0f); var_r30 = HuSprCreate(spC[3], 0x4000, 0); HuSprGrpMemberSet(lbl_1_bss_3DC, 5, var_r30); HuSprPosSet(lbl_1_bss_3DC, 5, 2.0f, 8.0f); HuSprGrpPosSet(lbl_1_bss_3DC, 511.0f, 61.0f); fn_1_17A0(lbl_1_bss_3D8, 0); fn_1_17A0(GWMGRecordGet(14), 1); fn_1_174C(); HuPrcChildCreate(fn_1_7D40, 0x1000, 0x1000, 0, HuPrcCurrentGet()); } float fn_1_14B4(float arg0) { while (arg0 >= 360.0f || arg0 < 0.0f) { if (arg0 >= 360.0f) { arg0 -= 360.0f; } if (arg0 < 0.0f) { arg0 += 360.0f; } } return arg0; } float fn_1_1534(float arg0, float arg1) { float var_f31; if (arg0 > 750.0f - arg1) { var_f31 = 750.0f; } else if (arg0 < -(750.0f - arg1)) { var_f31 = 750.0f; } else { var_f31 = 750.0f; } return var_f31; } float fn_1_15B4(float arg0, float arg1) { return fn_1_1534(arg0, arg1); } void fn_1_1634(void) { float var_f31; float temp_f30; s32 i; var_f31 = 0.0f; while (TRUE) { var_f31 += 16.0f; temp_f30 = 1.0 + 0.2f * sind(var_f31); for (i = 0; i < 3; i++) { HuSprScaleSet(lbl_1_bss_3DC, i + 1, temp_f30, temp_f30); } HuPrcVSleep(); } } void fn_1_16F8(void) { s32 i; for (i = 0; i < 6; i++) { HuSprAttrReset(lbl_1_bss_3DC, i, HUSPR_ATTR_DISPOFF); } } void fn_1_174C(void) { s32 i; for (i = 0; i < 6; i++) { HuSprAttrSet(lbl_1_bss_3DC, i, HUSPR_ATTR_DISPOFF); } } void fn_1_17A0(s32 arg0, s32 arg1) { s32 var_r31; if (arg1 != 0) { var_r31 = 2; } else { var_r31 = 4; } HuSprBankSet(lbl_1_bss_3DC, var_r31, arg0 % 10); HuSprBankSet(lbl_1_bss_3DC, var_r31 + 1, arg0 / 10); HuSprAttrReset(lbl_1_bss_3DC, var_r31 + 1, HUSPR_ATTR_DISPOFF); } s32 fn_1_1880(float arg0, float arg1, float arg2, s32 arg3, s32 arg4) { Vec sp34; Vec sp28; Vec sp1C; s32 i; StructBss70 *temp_r30; StructBss340 *var_r29; if (arg3 > 10) { arg3 = 10; } HuSetVecF(&sp34, arg0, 0.0, arg1); for (i = 0; i < arg3; i++) { if (arg4 == i) { continue; } temp_r30 = &lbl_1_bss_70[i]; HuSetVecF(&sp28, temp_r30->unk14.x, 0.0, temp_r30->unk14.z); HuSubVecF(&sp1C, &sp34, &sp28); if (VECMagXZ(&sp1C) < temp_r30->unk30 + arg2) { break; } } if (i < arg3) { return 1; } var_r29 = &lbl_1_bss_340[0]; HuSetVecF(&sp28, var_r29->unk4C.x, 0.0, var_r29->unk4C.z); HuSubVecF(&sp1C, &sp34, &sp28); if (VECMagXZ(&sp1C) < var_r29->unk84 + arg2) { return 1; } return 0; } s32 fn_1_1BD4(StructBss70 *arg0) { float var_f31; float var_f30; s32 var_r31; var_r31 = 0; var_f31 = fn_1_1534(arg0->unk14.z, arg0->unk30); var_f30 = fn_1_1534(arg0->unk14.x, arg0->unk30); if (arg0->unk14.x > var_f31 - arg0->unk30) { var_r31 = 1; arg0->unk14.x = var_f31 - arg0->unk30; } if (arg0->unk14.x < -(var_f31 - arg0->unk30)) { var_r31 = 1; arg0->unk14.x = -(var_f31 - arg0->unk30); } if (arg0->unk14.z > var_f30 - arg0->unk30) { var_r31 = 1; arg0->unk14.z = var_f30 - arg0->unk30; } if (arg0->unk14.z < -(var_f30 - arg0->unk30)) { var_r31 = 1; arg0->unk14.z = -(var_f30 - arg0->unk30); } return var_r31; } void fn_1_1E10(StructBss70 *arg0) { Vec sp104; Vec spF8; Vec spEC; float temp_f21; float temp_f20; float var_f19; float var_f26; float spC4; float spC0; float spBC; float spB8; float spB4; float spB0; float spAC; float spA0; StructBss70 *var_r30; StructBss70 *temp_r28; s32 temp_r19; s32 var_r21; s32 i; if (fn_1_1880(arg0->unk14.x, arg0->unk14.z, 50.0f, 10, arg0->unk0C) == 0) { return; } var_f19 = fn_1_14B4(atan2d(arg0->unk14.x - arg0->unk24, arg0->unk14.z - arg0->unk28)); temp_f21 = spB8 = arg0->unk24; temp_f20 = spB4 = arg0->unk28; spAC = 1.0f; for (var_r21 = 1.0f + arg0->unk34 / spAC; var_r21 != 0; var_r21--) { temp_f21 += spAC * sind(var_f19); temp_f20 += spAC * cosd(var_f19); HuSetVecF(&sp104, temp_f21, arg0->unk14.y, temp_f20); for (i = 0; i < 10; i++) { if (i == arg0->unk0C) { continue; } var_r30 = &lbl_1_bss_70[i]; HuSetVecF(&spF8, var_r30->unk14.x, var_r30->unk14.y, var_r30->unk14.z); HuSubVecF(&spEC, &sp104, &spF8); if (VECMagXYZ(&spEC) < arg0->unk30 + var_r30->unk30) { break; } } if (i < 10) { break; } if (fn_1_1BD4(arg0)) { goto block_end; } spB8 = temp_f21; spB4 = temp_f20; } var_f19 = fn_1_14B4(atan2d(arg0->unk14.x - arg0->unk24, arg0->unk14.z - arg0->unk28)); var_f26 = fn_1_14B4(atan2d(var_r30->unk14.x - arg0->unk24, var_r30->unk14.z - arg0->unk28)); spC0 = var_f19 - var_f26; if (spC0 > 0.0f) { spBC = -0.5f; } else { spBC = 0.5f; } if (ABS_INV(var_f19 - var_f26) > 180.0f) { spBC = -spBC; } var_f26 = fn_1_14B4(atan2d(arg0->unk24 - var_r30->unk14.x, arg0->unk28 - var_r30->unk14.z)); spB0 = 0.8f * arg0->unk34; temp_r19 = var_r30->unk0C; spC4 = arg0->unk30 + var_r30->unk30 + 1.0f; while (TRUE) { temp_f21 = var_r30->unk14.x + spC4 * sind(var_f26); temp_f20 = var_r30->unk14.z + spC4 * cosd(var_f26); HuSetVecF(&sp104, temp_f21, 0.0, temp_f20); for (i = 0; i < 10; i++) { if (i == arg0->unk0C || i == temp_r19) { continue; } temp_r28 = &lbl_1_bss_70[i]; HuSetVecF(&spF8, temp_r28->unk14.x, 0.0, temp_r28->unk14.z); HuSubVecF(&spEC, &sp104, &spF8); if (VECMagXZ(&spEC) < arg0->unk30 + temp_r28->unk30) { break; } } if (i < 10 || fn_1_1BD4(arg0)) { break; } spB8 = temp_f21; spB4 = temp_f20; HuSetVecF(&sp104, arg0->unk24, 0.0, arg0->unk28); HuSetVecF(&spF8, temp_f21, 0.0, temp_f20); HuSubVecF(&spEC, &sp104, &spF8); if (VECMagXZ(&spEC) > spB0) { break; } var_f26 += spBC; } block_end: arg0->unk14.x = spB8; arg0->unk14.z = spB4; } void fn_1_2FDC(StructBss70 *arg0) { Vec spF0; Vec spE4; Vec spD8; s32 i; StructBss340 *var_r30; StructBss70 *temp_r25; float var_f31; s32 var_r23; s32 var_r20; s32 spAC[2]; var_r30 = &lbl_1_bss_340[0]; arg0->unk24 = arg0->unk14.x; arg0->unk28 = arg0->unk14.z; switch (arg0->unk38) { case 0: var_r20 = 0; HuSetVecF(&spF0, var_r30->unk4C.x, 0.0, var_r30->unk4C.z); HuSetVecF(&spE4, arg0->unk14.x, 0.0, arg0->unk14.z); HuSubVecF(&spD8, &spF0, &spE4); if (VECMagXZ(&spD8) < var_r30->unk84 + arg0->unk30 + 100.0f) { var_r20 = 80; } if (frandmod(100) < var_r20) { var_f31 = fn_1_14B4(atan2d(arg0->unk14.x - var_r30->unk4C.x, arg0->unk14.z - var_r30->unk4C.z)); var_f31 += 30.0f * frandf() - 60.0f; var_f31 = fn_1_14B4(var_f31); arg0->unk20 = var_f31; } else if (ABS_INV(arg0->unk14.x) > 550.0f) { var_f31 = fn_1_14B4(180.0 + atan2d(arg0->unk14.x, 0.0)); var_f31 += 10.0f * frandf() - 20.0f; var_f31 = fn_1_14B4(var_f31); arg0->unk20 = var_f31; } else if (frandmod(3) != 0) { for (i = 0, var_r23 = 0; i < 10; i++) { if (i == arg0->unk0C) { continue; } temp_r25 = &lbl_1_bss_70[i]; HuSetVecF(&spF0, temp_r25->unk14.x, 0.0, temp_r25->unk14.z); HuSetVecF(&spE4, arg0->unk14.x, 0.0, arg0->unk14.z); HuSubVecF(&spD8, &spF0, &spE4); if (VECMagXZ(&spD8) < 150.0f) { spAC[var_r23++] = arg0->unk0C; if (var_r23 >= 2) { break; } } } if (var_r23 == 1 && ABS_INV(var_r30->unk4C.x) < 650.0f) { temp_r25 = &lbl_1_bss_70[spAC[0]]; var_f31 = fn_1_14B4(atan2d(arg0->unk40 - arg0->unk14.x, arg0->unk44 - arg0->unk14.z)); } else { var_f31 = fn_1_14B4(180.0 + atan2d(arg0->unk14.x, arg0->unk14.z)); var_f31 += 30.0f * frandf() - 60.0f; var_f31 = fn_1_14B4(var_f31); arg0->unk20 = var_f31; } } else { var_f31 = 360.0f * frandf(); arg0->unk20 = var_f31; } arg0->unk40 = arg0->unk14.x + 100.0 * sind(var_f31); arg0->unk44 = arg0->unk14.z + 100.0 * cosd(var_f31); arg0->unk38 = 10; arg0->unk3C = 60; break; case 10: if (arg0->unk3C-- == 0) { arg0->unk38 = 0; } if (arg0->unk3C < 50) { HuSetVecF(&spF0, var_r30->unk4C.x, 0.0, var_r30->unk4C.z); HuSetVecF(&spE4, arg0->unk14.x, 0.0, arg0->unk14.z); HuSubVecF(&spD8, &spF0, &spE4); if (VECMagXZ(&spD8) < var_r30->unk84 + arg0->unk30 + 100.0f) { arg0->unk38 = 0; } } HuSetVecF(&spF0, arg0->unk40, 0.0, arg0->unk44); HuSetVecF(&spE4, arg0->unk14.x, 0.0, arg0->unk14.z); HuSubVecF(&spD8, &spF0, &spE4); if (VECMagXZ(&spD8) > 10.0f) { var_f31 = fn_1_14B4(atan2d(arg0->unk40 - arg0->unk14.x, arg0->unk44 - arg0->unk14.z)); arg0->unk14.x += arg0->unk34 * sind(var_f31); arg0->unk14.z += arg0->unk34 * cosd(var_f31); if (fn_1_1BD4(arg0)) { } if (fn_1_1880(arg0->unk14.x, arg0->unk14.z, 50.0f, 10, arg0->unk0C) != 0) { arg0->unk14.x = arg0->unk24; arg0->unk14.z = arg0->unk28; arg0->unk38 = 100; arg0->unk3C = 0; } } else { arg0->unk38 = 100; arg0->unk3C = 0; } break; case 100: if (arg0->unk3C == 0) { arg0->unk38 = 0; } arg0->unk3C--; break; } } void fn_1_44D8(void) { StructBss70 *temp_r31; float temp_f30; float var_f31; s32 i; temp_r31 = HuPrcCurrentGet()->user_data; temp_f30 = temp_r31->unk14.x; while (TRUE) { Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04[0]); for (i = 0, var_f31 = 0.0f; i < 60; i++) { temp_r31->unk14.x = temp_f30 - 300.0 * sind(var_f31); var_f31 += 1.5f; Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); HuPrcVSleep(); } HuPrcSleep(30); Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04[1]); for (i = 0, var_f31 = 90.0f; i < 60; i++) { temp_r31->unk14.x = temp_f30 - 300.0 * sind(var_f31); var_f31 -= 1.5f; Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); HuPrcVSleep(); } HuPrcSleep(30); } } void fn_1_4644(StructBss70 *arg0) { float temp_f26; float temp_f25; float var_f27; float var_f24; float temp_f23; s32 i; do { temp_f26 = 5.0f; if (frandmod(2) != 0) { arg0->unk14.x = -700.0f + temp_f26; arg0->unk20 = 90.0f; var_f27 = -700.0f + temp_f26 - 500.0f; var_f24 = 8.333333f; } else { arg0->unk14.x = 700.0f - temp_f26; arg0->unk20 = 270.0f; var_f27 = 700.0f - temp_f26 + 500.0f; var_f24 = -8.333333f; } arg0->unk14.y = 0.0f; temp_f23 = 550.0f; temp_f25 = temp_f23 * frandf() * 2.0f - temp_f23; arg0->unk14.z = temp_f25; arg0->unk24 = arg0->unk14.x; arg0->unk28 = arg0->unk14.z; } while (fn_1_1880(arg0->unk14.x, arg0->unk14.z, 50.0f, 10, arg0->unk0C) != 0); Hu3DMotionSet(arg0->unk00, arg0->unk04[2]); Hu3DModelRotSet(arg0->unk00, 0.0f, arg0->unk20, 0.0f); for (i = 0; i < 60; i++) { var_f27 += var_f24; Hu3DModelPosSet(arg0->unk00, var_f27, 0.0f, temp_f25); if (lbl_1_bss_3E4 >= 4) { break; } HuPrcVSleep(); } if (lbl_1_bss_3E4 >= 4) { arg0->unk14.x = var_f27; arg0->unk14.z = temp_f25; } Hu3DModelPosSet(arg0->unk00, arg0->unk14.x, 0.0f, arg0->unk14.z); } void fn_1_4BC4(void) { s32 spC; float sp8; float temp_f23; float var_f27; float var_f28; float var_f30; float var_f29; StructBss70 *temp_r31; StructBss340 *var_r28; StructBss340 *var_r30; s32 temp_r27; s32 temp_r24; s32 var_r26; s32 var_r25; s32 i; temp_r31 = HuPrcCurrentGet()->user_data; temp_r31->unk10 = 0; loop_1: temp_r27 = lbl_1_bss_3E0 / 60; var_r25 = 0; if (temp_r27 > 10) { var_r25 = 1; } if (temp_r27 > 20) { var_r25 = 2; } temp_r27 = frandmod(100); for (i = 0; i < 5; i++) { if (lbl_1_data_C0[var_r25][i] > temp_r27) { break; } } if (i > 4) { while (TRUE) ; } temp_r31->unk34 = 6.75f * lbl_1_data_FC[i]; temp_r31->unk38 = 0; while (TRUE) { switch (temp_r31->unk10) { case 2: Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04[1]); fn_1_4644(temp_r31); temp_r31->unk10 = 0; if (FALSE) { default: fn_1_2FDC(temp_r31); } Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); Hu3DModelRotSet(temp_r31->unk00, 0.0f, temp_r31->unk20, 0.0f); if (lbl_1_bss_3E4 < 4) { HuPrcVSleep(); break; } Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04[0]); HuPrcSleep(60); var_r28 = &lbl_1_bss_340[0]; if (ABS_INV(var_r28->unk4C.z - temp_r31->unk14.z) > 250.0f) { if (temp_r31->unk14.x > 0.0f) { var_f30 = 10.0f; } else { var_f30 = -10.0f; } } else { if (var_r28->unk4C.x > temp_r31->unk14.x) { var_f30 = -10.0f; } else { var_f30 = 10.0f; } } if (var_f30 > 0.0f) { Hu3DModelRotSet(temp_r31->unk00, 0.0f, 90.0f, 0.0f); } else { Hu3DModelRotSet(temp_r31->unk00, 0.0f, 270.0f, 0.0f); } Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04[1]); while (ABS_INV(temp_r31->unk14.x) < 1500.0f) { temp_r31->unk14.x += var_f30; Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); HuPrcVSleep(); } while (TRUE) { HuPrcVSleep(); } break; case 3: lbl_1_bss_3D8++; if (lbl_1_bss_3D8 > 99) { lbl_1_bss_3D8 = 99; } temp_r24 = lbl_1_bss_3D8; var_r26 = 4; HuSprBankSet(lbl_1_bss_3DC, var_r26, temp_r24 % 10); HuSprBankSet(lbl_1_bss_3DC, var_r26 + 1, temp_r24 / 10); HuSprAttrReset(lbl_1_bss_3DC, var_r26 + 1, HUSPR_ATTR_DISPOFF); omVibrate(0, 12, 6, 6); HuAudFXPlay(0x45); HuAudFXPlay(0x5EE); var_r30 = &lbl_1_bss_340[0]; temp_r31->unk2C = fn_1_14B4(atan2d(temp_r31->unk14.x - var_r30->unk4C.x, temp_r31->unk14.z - var_r30->unk4C.z)); Hu3DMotionTimeSet(temp_r31->unk02, 0.0f); Hu3DModelAttrReset(temp_r31->unk02, HU3D_ATTR_DISPOFF); Hu3DModelPosSet(temp_r31->unk02, var_r30->unk4C.x + var_r30->unk84 * sind(temp_r31->unk2C), temp_r31->unk14.y + 50.0f, var_r30->unk4C.z + var_r30->unk84 * cosd(temp_r31->unk2C)); i = 0; var_f29 = temp_r31->unk14.x; var_f28 = temp_r31->unk14.z; while (TRUE) { var_f29 += 30.0 * sind(var_r30->unk94); var_f28 += 30.0 * cosd(var_r30->unk94); if (ABS_INV(var_f29) > 1500.0f || var_f28 > 1300.0f || var_f28 < -2000.0f) { break; } i++; } sp8 = temp_r31->unk14.y; var_f27 = 0.0f; temp_f23 = 180.0f / i; spC = 0; for (; i != 0; i--) { temp_r31->unk14.x += 30.0 * sind(temp_r31->unk2C); temp_r31->unk14.y = 400.0 * sind(var_f27); temp_r31->unk14.z += 30.0 * cosd(temp_r31->unk2C); var_f27 += temp_f23; Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); HuPrcVSleep(); } Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14.x, -1000.0f, temp_r31->unk14.z); temp_r31->unk10 = 2; Hu3DModelAttrSet(temp_r31->unk02, HU3D_ATTR_DISPOFF); goto loop_1; } } } void fn_1_545C(ModelData *model, ParticleData *particle, Mtx matrix) { HsfanimStruct01 *var_r31; StructBss340 *temp_r28; float var_f30; float var_f31; float temp_f29; s32 var_r27; s16 i; s16 j; s16 k; if (particle->unk_34 == 0) { var_r31 = particle->unk_48; for (k = 0; k < particle->unk_30; k++, var_r31++) { var_r31->unk14.x = var_r31->unk2C = 0.0f; } } var_r31 = particle->unk_48; for (i = 0; i < 1; i++) { temp_r28 = &lbl_1_bss_340[i]; if (!(temp_r28->unk30 & 1)) { continue; } for (j = 0, var_f30 = 0.0f; j < 16; j++, var_f30 += 22.5f) { for (k = 0; k < particle->unk_30; k++, var_r31++) { if (var_r31->unk14.x == 0.0f) { break; } } if (k == particle->unk_30) { break; } var_f31 = var_f30; temp_f29 = 125.0f + 70.0f * frandf(); var_r31->unk34.x = temp_r28->unk6C + temp_f29 * sind(var_f31); var_r31->unk34.y = temp_r28->unk70 + 50.0f * frandf(); var_r31->unk34.z = temp_r28->unk74 + temp_f29 * cosd(var_f31); var_r31->unk08.x = 5.0 * sind(var_f31); var_r31->unk08.y = 9.0f + 2.0f * frandf(); var_r31->unk08.z = 5.0 * cosd(var_f31); var_r31->unk14.x = 30.0f; var_r31->unk2C = 80.0f + 20.0f * frandf(); var_r31->unk14.y = 15.0f; var_r31->unk40.a = 0xC8; var_r31->unk14.z = 17.0f; } temp_r28->unk30 &= ~1; } var_r31 = particle->unk_48; for (k = 0; k < particle->unk_30; k++, var_r31++) { if (var_r31->unk14.x == 0.0f) { continue; } VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); var_r31->unk08.x *= 0.95f; var_r31->unk08.z *= 0.95f; if (var_r31->unk08.y > 0.1f) { var_r31->unk08.y -= 0.2f; } if (var_r31->unk08.y < 0.0f) { var_r31->unk08.y = 0.0f; } var_r31->unk2C += var_r31->unk14.y; if (var_r31->unk14.y > 2.0f) { var_r31->unk14.y -= 1.5f; } 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_594C(ModelData *model, ParticleData *particle, Mtx matrix) { HsfanimStruct01 *var_r31; StructBss340 *temp_r28; float temp_f31; float temp_f30; s32 var_r27; s16 i; s16 j; s16 k; if (particle->unk_34 == 0) { var_r31 = particle->unk_48; for (k = 0; k < particle->unk_30; k++, var_r31++) { var_r31->unk14.x = var_r31->unk2C = 0.0f; var_r31->unk20 = -1.0f; } } var_r31 = particle->unk_48; for (i = 0; i < 1; i++) { temp_r28 = &lbl_1_bss_340[i]; if (!(temp_r28->unk30 & 2)) { continue; } for (j = 0; j < 10; j++) { for (k = 0; k < particle->unk_30; k++, var_r31++) { if (var_r31->unk14.x == 0.0f) { break; } } if (k == particle->unk_30) { break; } temp_f31 = 400.0f * frandf() - 200.0f; temp_f30 = 400.0f * frandf() - 200.0f; var_r31->unk34.x = temp_r28->unk6C + temp_f31; var_r31->unk34.y = temp_r28->unk70 + 50.0f; var_r31->unk34.z = temp_r28->unk74 + temp_f30; var_r31->unk08.x = 0.0f; var_r31->unk08.y = 7.0f; var_r31->unk08.z = 0.0f; var_r31->unk20 = frandmod(10); var_r31->unk24 = 0.0f; var_r31->unk14.x = 100.0f; var_r31->unk2C = 0.0f; var_r31->unk14.y = 7.0f; var_r31->unk40.a = 0xFF; var_r31->unk14.z = 10.0f; } temp_r28->unk30 &= ~2; } var_r31 = particle->unk_48; for (k = 0; k < particle->unk_30; k++, var_r31++) { if (var_r31->unk20 > 0.0f) { var_r31->unk20 -= 1.0f; } if (var_r31->unk20 == 0.0f) { var_r31->unk24 = 1.0f; var_r31->unk2C = 100.0f + 100.0f * frandf(); var_r31->unk20 = -1.0f; } if (var_r31->unk14.x == 0.0f || var_r31->unk24 == 0.0f) { continue; } VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); if (var_r31->unk08.y > 1.0f) { var_r31->unk08.y -= 0.3f; } var_r31->unk2C += var_r31->unk14.y; if (var_r31->unk14.y > 2.0f) { var_r31->unk14.y -= 0.4f; } 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_5DE4(ModelData *model, ParticleData *particle, Mtx matrix) { HsfanimStruct01 *var_r31; StructBss340 *temp_r28; float temp_f31; float temp_f30; s32 var_r27; s16 i; s16 j; s16 k; if (particle->unk_34 == 0) { var_r31 = particle->unk_48; for (k = 0; k < particle->unk_30; k++, var_r31++) { var_r31->unk14.x = var_r31->unk2C = 0.0f; var_r31->unk20 = -1.0f; } } var_r31 = particle->unk_48; for (i = 0; i < 1; i++) { temp_r28 = &lbl_1_bss_340[i]; if (!(temp_r28->unk30 & 4)) { continue; } for (j = 0; j < 10; j++) { for (k = 0; k < particle->unk_30; k++, var_r31++) { if (var_r31->unk14.x == 0.0f) { break; } } if (k == particle->unk_30) { break; } temp_f31 = 400.0f * frandf() - 200.0f; temp_f30 = 400.0f * frandf() - 200.0f; var_r31->unk34.x = temp_r28->unk6C + temp_f31; var_r31->unk34.y = temp_r28->unk70 + 50.0f; var_r31->unk34.z = temp_r28->unk74 + temp_f30; var_r31->unk08.x = 0.0f; var_r31->unk08.y = 7.0f; var_r31->unk08.z = 0.0f; var_r31->unk20 = frandmod(10); var_r31->unk24 = 0.0f; var_r31->unk14.x = 100.0f; var_r31->unk2C = 0.0f; var_r31->unk14.y = 7.0f; var_r31->unk40.a = 0xFF; var_r31->unk14.z = 10.0f; } temp_r28->unk30 &= ~4; } var_r31 = particle->unk_48; for (k = 0; k < particle->unk_30; k++, var_r31++) { if (var_r31->unk20 > 0.0f) { var_r31->unk20 -= 1.0f; } if (var_r31->unk20 == 0.0f) { var_r31->unk24 = 1.0f; var_r31->unk2C = 100.0f + 100.0f * frandf(); var_r31->unk20 = -1.0f; } if (var_r31->unk14.x == 0.0f || var_r31->unk24 == 0.0f) { continue; } VECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); if (var_r31->unk08.y > 1.0f) { var_r31->unk08.y -= 0.3f; } var_r31->unk2C += var_r31->unk14.y; if (var_r31->unk14.y > 2.0f) { var_r31->unk14.y -= 0.4f; } 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; } } } s8 fn_1_627C(s32 arg0, s32 arg1) { StructBss340 *temp_r31; s8 var_r30; temp_r31 = &lbl_1_bss_340[arg0]; (arg1 != 0) ? (var_r30 = HuPadStkY[temp_r31->unk28]) : (var_r30 = HuPadStkX[temp_r31->unk28]); return var_r30; } u8 fn_1_62F0(s32 arg0, s32 arg1) { StructBss340 *temp_r31; s8 var_r30; temp_r31 = &lbl_1_bss_340[arg0]; (arg1 != 0) ? (var_r30 = HuPadTrigR[temp_r31->unk28]) : (var_r30 = HuPadTrigL[temp_r31->unk28]); return var_r30; } u16 fn_1_636C(s32 arg0) { StructBss340 *temp_r31; u16 var_r30; temp_r31 = &lbl_1_bss_340[arg0]; var_r30 = HuPadBtnDown[temp_r31->unk28]; return var_r30; } u16 fn_1_63B4(s32 arg0) { StructBss340 *temp_r31; u16 var_r30; temp_r31 = &lbl_1_bss_340[arg0]; var_r30 = HuPadBtn[temp_r31->unk28]; return var_r30; } s32 fn_1_63FC(StructBss340 *arg0) { Vec sp24; Vec sp18; Vec spC; StructBss70 *temp_r31; s32 var_r28; s32 i; var_r28 = -1; HuSetVecF(&sp24, arg0->unk4C.x, arg0->unk4C.y, arg0->unk4C.z); for (i = 0; i < 10; i++) { temp_r31 = &lbl_1_bss_70[i]; HuSetVecF(&sp18, temp_r31->unk14.x, temp_r31->unk14.y, temp_r31->unk14.z); HuSubVecF(&spC, &sp24, &sp18); if (VECMagXYZ(&spC) < arg0->unk84 + temp_r31->unk30) { temp_r31->unk10 = 3; var_r28 = i; } } return var_r28; } s32 fn_1_65D0(StructBss340 *arg0) { float var_f31; float var_f30; s32 sp8; var_f31 = fn_1_1534(arg0->unk4C.z, arg0->unk84); var_f30 = fn_1_1534(arg0->unk4C.x, arg0->unk84); if (arg0->unk4C.x > var_f31 - arg0->unk84) { arg0->unk4C.x = var_f31 - arg0->unk84; } if (arg0->unk4C.x < -(var_f31 - arg0->unk84)) { arg0->unk4C.x = -(var_f31 - arg0->unk84); } if (arg0->unk4C.z > var_f30 - arg0->unk84) { arg0->unk4C.z = var_f30 - arg0->unk84; } if (arg0->unk4C.z < -(var_f30 - arg0->unk84)) { arg0->unk4C.z = -(var_f30 - arg0->unk84); } return sp8; } float fn_1_67F0(float arg0, float arg1, float arg2) { float var_f30; float var_f31; var_f31 = fmod(arg1 - arg0, 360.0); if (0.0f > var_f31) { var_f31 += 360.0f; } if (180.0f < var_f31) { var_f31 -= 360.0f; } var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); if (0.0f > var_f30) { var_f30 += 360.0f; } return var_f30; } void fn_1_68F4(void) { StructBss340 *temp_r31; s32 i; temp_r31 = HuPrcCurrentGet()->user_data; for (i = 0; i < 20; i++) { temp_r31->unk78.z -= 4.0f; Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk78.x, temp_r31->unk78.y, temp_r31->unk78.z); HuPrcVSleep(); } HuPrcKill(HuPrcCurrentGet()); while (TRUE) { HuPrcVSleep(); } } s32 fn_1_6964(StructBss340 *arg0) { return (arg0->unk2C == 4 || arg0->unk2C == 5 || arg0->unk2C == 6); } void fn_1_69C0(void) { float var_f23; float var_f27; float var_f26; StructBss340 *temp_r31; s16 var_r29; s32 var_r24; s32 var_r23; Process *var_r22; s32 var_r26; s32 var_r25; s32 var_r28; s32 spA4; temp_r31 = HuPrcCurrentGet()->user_data; temp_r31->unk2C = 0; temp_r31->unk48 = 0; temp_r31->unk30 = 0; while (lbl_1_bss_3E4 == 0) { HuPrcVSleep(); } lbl_1_bss_3E4 = 2; while (lbl_1_bss_3E4 == 2) { HuPrcVSleep(); } var_r29 = -1; while (TRUE) { temp_r31->unk58 = temp_r31->unk4C.x; temp_r31->unk5C = temp_r31->unk4C.z; if (temp_r31->unk16[4] != 0) { break; } switch (temp_r31->unk2C) { case 8: if (temp_r31->unk3C != 0) { temp_r31->unk3C--; } else { Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); temp_r31->unk2C = 0; } break; case 4: omVibrate(temp_r31->unk20, 12, 4, 2); Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); temp_r31->unk3C = 90; temp_r31->unk44 = 30; temp_r31->unk2C = 5; break; case 5: if (temp_r31->unk44-- == 0) { temp_r31->unk6C = temp_r31->unk4C.x; temp_r31->unk70 = temp_r31->unk4C.y; temp_r31->unk74 = temp_r31->unk4C.z; temp_r31->unk30 |= 1; } if (temp_r31->unk3C != 0) { temp_r31->unk3C--; } else { Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[5]); Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP); temp_r31->unk2C = 6; } break; case 6: if (Hu3DMotionEndCheck(temp_r31->unk00) == TRUE) { Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[0]); temp_r31->unk2C = 0; } break; default: if (fn_1_627C(temp_r31->unk20, 0) > 20) { temp_r31->unk94 -= temp_r31->unk90; if (temp_r31->unk94 < 0.0f) { temp_r31->unk94 += 360.0f; } temp_r31->unk60.y = temp_r31->unk94; } if (fn_1_627C(temp_r31->unk20, 0) < -20) { temp_r31->unk94 += temp_r31->unk90; if (temp_r31->unk94 > 360.0f) { temp_r31->unk94 -= 360.0f; } temp_r31->unk60.y = temp_r31->unk94; } if (fn_1_63B4(temp_r31->unk20) & PAD_BUTTON_A) { temp_r31->unk4C.x += temp_r31->unk88 * sind(temp_r31->unk94); temp_r31->unk4C.z += temp_r31->unk88 * cosd(temp_r31->unk94); } if (fn_1_63B4(temp_r31->unk20) & PAD_BUTTON_B) { temp_r31->unk4C.x -= temp_r31->unk88 * sind(temp_r31->unk94); temp_r31->unk4C.z -= temp_r31->unk88 * cosd(temp_r31->unk94); } if (fn_1_63B4(temp_r31->unk20) & (PAD_BUTTON_A | PAD_BUTTON_B)) { if (temp_r31->unk34 != 1) { if (temp_r31->unk2C != 2) { temp_r31->unk2C = 2; if (fn_1_63B4(temp_r31->unk20) & PAD_BUTTON_A) { Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); } else { Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_REV); Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); } if (var_r29 != -1) { HuAudFXStop(var_r29); } } } else { if (temp_r31->unk2C != 3) { temp_r31->unk2C = 3; temp_r31->unk48 = 0; if (fn_1_63B4(temp_r31->unk20) & PAD_BUTTON_A) { Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); } else { Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_REV); Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f); } if (var_r29 != -1) { HuAudFXStop(var_r29); } } } if (temp_r31->unk34 != 1) { var_r24 = 8; var_r23 = 32; } else { var_r24 = 7; var_r23 = 22; } if (temp_r31->unk48 == var_r24) { HuAudFXPlay(0x5E0); } if (temp_r31->unk48 == var_r23) { HuAudFXPlay(0x5E0); } temp_r31->unk48++; if (temp_r31->unk34 != 1) { if (temp_r31->unk48 >= 50) { temp_r31->unk48 -= 50; } } else { if (temp_r31->unk48 >= 30) { temp_r31->unk48 -= 30; } } } else { if (ABS_INV(fn_1_627C(temp_r31->unk20, 0)) <= 20) { if (temp_r31->unk2C != 0) { temp_r31->unk2C = 0; Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); if (var_r29 != -1) { HuAudFXStop(var_r29); } } } else { if (temp_r31->unk2C != 1) { temp_r31->unk2C = 1; Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[3], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.5f); var_r29 = HuAudFXPlay(0x5EB); } } } if (fn_1_63FC(temp_r31) != -1) { } if ((spA4 = fn_1_65D0(temp_r31)) != -1) { } break; } Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk60.x, temp_r31->unk60.y, temp_r31->unk60.z); HuPrcVSleep(); } if (var_r29 != -1) { HuAudFXStop(var_r29); } if (lbl_1_bss_3D8 == 0) { HuAudFXPlay(0x5EA); Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(90); Hu3DModelAttrReset(temp_r31->unk04, HU3D_ATTR_DISPOFF); Hu3DModelAttrReset(temp_r31->unk04, HU3D_MOTATTR_PAUSE); Hu3DModelPosSet(temp_r31->unk04, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[7], 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuAudFXPlay(0x5E3); HuPrcSleep(15); HuPrcSleep(30); temp_r31->unk6C = temp_r31->unk4C.x; temp_r31->unk70 = temp_r31->unk4C.y; temp_r31->unk74 = temp_r31->unk4C.z; temp_r31->unk30 |= 2; while (!Hu3DMotionEndCheck(temp_r31->unk00)) { HuPrcVSleep(); } CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk20].character], temp_r31->unk16[3], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); Hu3DModelHookReset(temp_r31->unk00); Hu3DModelShadowSet(temp_r31->unk02); var_f27 = 50.0f; Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk4C.x, temp_r31->unk4C.y + var_f27, temp_r31->unk4C.z); HuPrcSleep(60); for (var_r26 = 0, var_r25 = 0; var_r26 < 90; var_r26++) { if (var_r25 & 1) { Hu3DModelAttrReset(temp_r31->unk00, HU3D_ATTR_DISPOFF); Hu3DModelAttrReset(temp_r31->unk04, HU3D_ATTR_DISPOFF); } else { Hu3DModelAttrSet(temp_r31->unk00, HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(temp_r31->unk04, HU3D_ATTR_DISPOFF); } var_r25++; HuPrcVSleep(); } Hu3DModelAttrSet(temp_r31->unk04, HU3D_ATTR_DISPOFF); for (var_r28 = 0, var_f23 = 1.0f; var_r28 < 30; var_r28++) { var_f23 -= 0.033333335f; Hu3DModelTPLvlSet(temp_r31->unk00, var_f23); if (var_f27 > 0.0f) { var_f27 -= 5.0f; Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk4C.x, temp_r31->unk4C.y + var_f27, temp_r31->unk4C.z); } HuPrcVSleep(); } Hu3DModelAttrSet(temp_r31->unk00, HU3D_ATTR_DISPOFF); HuAudSStreamPlay(4); HuPrcSleep(180); } else { var_f26 = temp_r31->unk90; Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[3], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); if (fn_1_14B4(temp_r31->unk60.y) != 0.0f) { var_r28 = (360.0f - fn_1_14B4(temp_r31->unk60.y)) / var_f26; if (temp_r31->unk60.y < 180.0f) { var_r28 = temp_r31->unk60.y / var_f26; var_f26 = -var_f26; } for (; var_r28 != 0; var_r28--) { temp_r31->unk60.y += var_f26; Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk60.x, temp_r31->unk60.y, temp_r31->unk60.z); HuPrcVSleep(); } Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk60.x, 0.0f, temp_r31->unk60.z); } Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); while (lbl_1_bss_3E4 < 5) { HuPrcVSleep(); } HuAudSStreamPlay(1); var_r22 = HuPrcChildCreate(fn_1_68F4, 0x2000, 0x1000, 0, HuPrcCurrentGet()); var_r22->user_data = temp_r31; HuAudPlayerVoicePlay(temp_r31->unk20, 0x122); CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk20].character], temp_r31->unk16[2], 0.0f, 2.0f, HU3D_MOTATTR_NONE); temp_r31->unk2C = 10; HuPrcSleep(180); } lbl_1_bss_3E4 = 6; while (TRUE) { HuPrcVSleep(); } } void fn_1_7D3C(void) { } void fn_1_7D40(void) { while (TRUE) { if (omSysExitReq == 1) { WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); HuAudFadeOut(1000); HuPrcSleep(60); MGSeqKillAll(); omOvlReturnEx(1, 1); while (TRUE) { HuPrcVSleep(); } } HuPrcVSleep(); } } void fn_1_7DA0(void) { s16 temp_r31; s16 var_r30; s16 temp_r26; s32 var_r24; s32 i; lbl_1_bss_3E4 = 0; lbl_1_bss_3E4 = 1; while (lbl_1_bss_3E4 == 1) { HuPrcVSleep(); } var_r24 = HuAudSeqPlay(0x46); temp_r31 = MGSeqStartCreate(); while (MGSeqStatGet(temp_r31) != 0) { HuPrcVSleep(); } fn_1_16F8(); var_r30 = 1859; temp_r26 = MGSeqTimerCreate(var_r30 / 60); lbl_1_bss_3E4 = 3; while (TRUE) { if (var_r30 < 59) { break; } MGSeqParamSet(temp_r26, 1, var_r30-- / 60); lbl_1_bss_3E0++; HuPrcVSleep(); } for (i = 0; i < 1; i++) { lbl_1_bss_340[i].unk1E = 1; } lbl_1_bss_3E4 = 4; HuAudSeqFadeOut(var_r24, 6); MGSeqParamSet(temp_r26, 2, -1); temp_r31 = MGSeqFinishCreate(); while (MGSeqStatGet(temp_r31) != 0) { HuPrcVSleep(); } mgRecordExtra = lbl_1_bss_3D8; if (GWMGRecordGet(14) < lbl_1_bss_3D8) { GWMGRecordSet(14, lbl_1_bss_3D8); temp_r31 = MGSeqRecordCreate(lbl_1_bss_3D8); HuPrcChildCreate(fn_1_1634, 0x1000, 0x1000, 0, HuPrcCurrentGet()); fn_1_17A0(lbl_1_bss_3D8, 1); while (MGSeqStatGet(temp_r31) != 0) { HuPrcVSleep(); } lbl_1_bss_3E4 = 5; } else { lbl_1_bss_3E4 = 5; } while (lbl_1_bss_3E4 < 6) { HuPrcVSleep(); } HuPrcSleep(30); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); HuPrcSleep(60); HuAudFadeOut(1); MGSeqKillAll(); omOvlReturnEx(1, 1); while (TRUE) { HuPrcVSleep(); } }