#include "game/audio.h" #include "game/chrman.h" #include "game/data.h" #include "game/frand.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 */ omObjData* unk00; /* 0x04 */ char unk04[0xB4]; } StructBssC8; // Size 0xB8 typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02[5]; } StructBss1E8; // Size 0xC typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02; /* 0x04 */ s16 unk04; /* 0x06 */ s16 unk06[8]; /* 0x16 */ s16 unk16; /* 0x18 */ s16 unk18; /* 0x1A */ s16 unk1A; /* 0x1C */ s16 unk1C[4]; /* 0x24 */ s16 unk24; /* 0x26 */ char unk26[2]; /* 0x28 */ s32 unk28; /* 0x2C */ s32 unk2C; /* 0x30 */ s32 unk30; /* 0x34 */ s32 unk34; /* 0x38 */ s32 unk38; /* 0x3C */ s32 unk3C; /* 0x40 */ s32 unk40; /* 0x44 */ s32 unk44; /* 0x48 */ s32 unk48; /* 0x4C */ s32 unk4C; /* 0x50 */ s32 unk50; /* 0x54 */ float unk54; /* 0x58 */ float unk58; /* 0x5C */ float unk5C; /* 0x60 */ float unk60; /* 0x64 */ float unk64; /* 0x68 */ float unk68; /* 0x6C */ float unk6C; /* 0x70 */ float unk70; /* 0x74 */ float unk74; /* 0x78 */ float unk78; /* 0x7C */ float unk7C; /* 0x80 */ float unk80; /* 0x84 */ float unk84; /* 0x88 */ float unk88; /* 0x8C */ float unk8C; /* 0x90 */ float unk90; /* 0x94 */ float unk94; /* 0x98 */ float unk98; /* 0x9C */ float unk9C; /* 0xA0 */ s8 unkA0; /* 0xA1 */ s8 unkA1; /* 0xA2 */ s8 unkA2; /* 0xA3 */ s8 unkA3; /* 0xA4 */ u16 unkA4; /* 0xA6 */ u16 unkA6; /* 0xA8 */ s32 unkA8; /* 0xAC */ s32 unkAC; /* 0xB0 */ s32 unkB0; /* 0xB4 */ s32 unkB4; /* 0xB8 */ s32 unkB8; /* 0xBC */ s32 unkBC; /* 0xC0 */ s32 unkC0; /* 0xC4 */ float unkC4; /* 0xC8 */ char unkC8[4]; /* 0xCC */ float unkCC; /* 0xD0 */ s32 unkD0; /* 0xD4 */ s32 unkD4; /* 0xD8 */ float unkD8; /* 0xDC */ float unkDC; } StructBss200; // Size 0xE0 typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02; /* 0x04 */ s16 unk04; /* 0x06 */ s16 unk06; /* 0x08 */ s16 unk08; /* 0x0A */ s16 unk0A; /* 0x0C */ float unk0C; /* 0x10 */ float unk10; /* 0x14 */ float unk14; /* 0x18 */ float unk18; /* 0x1C */ float unk1C; /* 0x20 */ float unk20; /* 0x24 */ float unk24; /* 0x28 */ float unk28; } StructBss190; // Size 0x2C void fn_1_57C(s16 arg0); void fn_1_AD0(s16 arg0); void fn_1_F58(void); void fn_1_2254(ModelData* model, ParticleData* particle, Mtx matrix); void fn_1_2744(ModelData* model, ParticleData* particle, Mtx matrix); void fn_1_47E4(void); void fn_1_4B20(void); void fn_1_9AF0(void); void fn_1_DF98(void); void fn_1_104A0(void); void fn_1_10500(void); s16 lbl_1_bss_5C2; s16 lbl_1_bss_5C0; // unused s16 lbl_1_bss_5BE; s16 lbl_1_bss_5BC; s16 lbl_1_bss_5BA; s16 lbl_1_bss_5B8; s32 lbl_1_bss_5B4; s32 lbl_1_bss_5B0; s32 lbl_1_bss_5AC; s32 lbl_1_bss_5A8; s32 lbl_1_bss_5A4; s32 lbl_1_bss_594[4]; s32 lbl_1_bss_584[4]; s32 lbl_1_bss_580; StructBss200 lbl_1_bss_200[4]; StructBss1E8 lbl_1_bss_1E8[2]; StructBss190 lbl_1_bss_190[2]; Process* lbl_1_bss_180[4]; StructBssC8 lbl_1_bss_C8; Vec lbl_1_bss_BC; Vec lbl_1_bss_B0; Vec lbl_1_bss_A4; void* lbl_1_bss_84[8]; void* lbl_1_bss_64[8]; u8 lbl_1_bss_60; Vec lbl_1_bss_0[8]; s32 lbl_1_data_0[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; s32 lbl_1_data_20[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), DATA_MAKE_NUM(DATADIR_MARIOMOT, 21), DATA_MAKE_NUM(DATADIR_MARIOMOT, 26), DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), DATA_MAKE_NUM(DATADIR_M419, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 25), DATA_MAKE_NUM(DATADIR_MARIOMOT, 75), DATA_MAKE_NUM(DATADIR_MARIOMOT, 13), DATA_MAKE_NUM(DATADIR_MARIOMOT, 16) }; s32 lbl_1_data_4C[] = { 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_5C[] = { { 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 } }; void ObjectSetup(void) { Process* temp_r3; temp_r3 = omInitObjMan(50, 0x2000); omGameSysInit(temp_r3); Hu3DCameraCreate(1); Hu3DCameraPerspectiveSet(1, 20.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_C8.unk00 = omAddObjEx(temp_r3, 0x7FDA, 0, 0, -1, omOutViewMulti); lbl_1_bss_C8.unk00->work[0] = 1; CRotM->x = -40.0f; CRotM->y = 0.0f; CRotM->z = 0.0f; CenterM->x = 0.0f; CenterM->y = 0.0f; CenterM->z = 3000.0f; CZoomM[0] = 1500.0f; Hu3DLighInit(); lbl_1_bss_5C2 = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 0xFF, 0xFF, 0xFF); Hu3DGLightPosAimSet(lbl_1_bss_5C2, 0.0f, 4330.13f, 2500.0f, 0.0f, 0.0f, 0.0f); Hu3DGLightInfinitytSet(lbl_1_bss_5C2); lbl_1_bss_BC.x = -500.0f; lbl_1_bss_BC.y = 4000.0f; lbl_1_bss_BC.z = 0.0f; lbl_1_bss_B0.x = lbl_1_bss_B0.z = 0.0f; lbl_1_bss_B0.y = 1.0f; lbl_1_bss_A4.x = 0.0f; lbl_1_bss_A4.y = 0.0f; lbl_1_bss_A4.z = 0.0f; Hu3DShadowCreate(30.0f, 20.0f, 10000.0f); Hu3DShadowTPLvlSet(0.5f); Hu3DShadowPosSet(&lbl_1_bss_BC, &lbl_1_bss_B0, &lbl_1_bss_A4); Hu3DBGColorSet(0, 0, 0); fn_1_F58(); HuPrcChildCreate(fn_1_10500, 0x1000, 0x2000, 0, HuPrcCurrentGet()); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); } void fn_1_4A0(void) { s16 i; Hu3DLayerHookSet(1, fn_1_57C); for (i = 0; i < 8; i++) { lbl_1_bss_84[i] = HuMemDirectMallocNum(HEAP_DATA, 0x4800, MEMORY_DEFAULT_NUM); lbl_1_bss_64[i] = HuMemDirectMallocNum(HEAP_DATA, 0x9000, MEMORY_DEFAULT_NUM); lbl_1_bss_0[i].x = lbl_1_bss_0[i].y = 0.0f; } } void fn_1_57C(s16 arg0) { Vec sp14; Vec sp8; ModelData* temp_r30; s16 var_r31; temp_r30 = &Hu3DData[lbl_1_bss_5BE]; sp14 = temp_r30->pos; sp14.y += 50.0f; Hu3D3Dto2D(&sp14, 1, &sp8.x); var_r31 = sp8.x - 96.0f; var_r31 &= 0xFFF8; sp8.x = var_r31; if (sp8.x < 0.0f) { sp8.x = 0.0f; } if (sp8.x > 448.0f) { sp8.x = 448.0f; } var_r31 = sp8.y - 96.0f; var_r31 &= 0xFFF8; sp8.y = var_r31; if (sp8.y < 0.0f) { sp8.y = 0.0f; } if (sp8.y > 288.0f) { sp8.y = 288.0f; } lbl_1_bss_0[lbl_1_bss_60] = sp8; GXSetTexCopySrc(sp8.x, sp8.y, 192, 192); GXSetTexCopyDst(96, 96, GX_TF_RGB5A3, 1); GXCopyTex(lbl_1_bss_84[lbl_1_bss_60], 0); GXSetTexCopySrc(sp8.x, sp8.y, 192, 192); GXSetTexCopyDst(96, 96, GX_TF_Z24X8, 1); GXCopyTex(lbl_1_bss_64[lbl_1_bss_60], 0); } void fn_1_848(ModelData* arg0, Mtx arg1) { Mtx44 sp10; GXColor spC; s16 i; C_MTXOrtho(sp10, 0.0f, 480.0f, 0.0f, 640.0f, 0.0f, 8000.0f); GXSetProjection(sp10, GX_ORTHOGRAPHIC); PSMTXIdentity(arg1); GXLoadPosMtxImm(arg1, GX_PNMTX0); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_A0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevOp(GX_TEVSTAGE1, GX_PASSCLR); GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR_NULL); GXSetZTexture(GX_ZT_REPLACE, GX_TF_Z24X8, 0); GXSetNumTexGens(1); GXSetNumTevStages(2); if (lbl_1_bss_5BC != 0) { for (i = 1; i < 8; i++) { spC.a = i * 24; GXSetTevColor(GX_TEVREG0, spC); fn_1_AD0((lbl_1_bss_60 - 8 + i) & 7); } } lbl_1_bss_60 = (lbl_1_bss_60 + 1) & 7; GXSetZTexture(GX_ZT_DISABLE, GX_TF_Z8, 0); } void fn_1_AD0(s16 arg0) { GXTexObj sp58; GXTexObj sp38; Vec sp2C; Vec sp20; Vec sp14; Vec sp8; GXInitTexObj(&sp58, lbl_1_bss_84[arg0], 96, 96, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, GX_FALSE); GXInitTexObjLOD(&sp58, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); GXLoadTexObj(&sp58, GX_TEXMAP0); GXInitTexObj(&sp38, lbl_1_bss_64[arg0], 96, 96, GX_TF_Z24X8, GX_CLAMP, GX_CLAMP, GX_FALSE); GXLoadTexObj(&sp38, GX_TEXMAP1); sp2C.x = 0.0f; sp2C.y = 0.0f; sp2C.z = 0.0f; sp20.x = 640.0f; sp20.y = 0.0f; sp20.z = 0.0f; sp14.x = 640.0f; sp14.y = 480.0f; sp14.z = 0.0f; sp8.x = 0.0f; sp8.y = 480.0f; sp8.z = 0.0f; GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); GXSetZCompLoc(GX_FALSE); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3f32(lbl_1_bss_0[arg0].x, lbl_1_bss_0[arg0].y, 0.0f); GXTexCoord2f32(0.0f, 0.0f); GXPosition3f32(lbl_1_bss_0[arg0].x + 192.0f, lbl_1_bss_0[arg0].y, 0.0f); GXTexCoord2f32(1.0f, 0.0f); GXPosition3f32(lbl_1_bss_0[arg0].x + 192.0f, lbl_1_bss_0[arg0].y + 192.0f, 0.0f); GXTexCoord2f32(1.0f, 1.0f); GXPosition3f32(lbl_1_bss_0[arg0].x, lbl_1_bss_0[arg0].y + 192.0f, 0.0f); GXTexCoord2f32(0.0f, 1.0f); GXEnd(); } void fn_1_F58(void) { void* var_r29; StructBss1E8* temp_r26; StructBss200* temp_r31; Process* var_r25; float temp_f31; s16 var_r30; s32 var_r22; s32 var_r23; AnimData* var_r21; s32 i; s32 j; lbl_1_bss_5BC = 0; lbl_1_bss_5BA = 0; lbl_1_bss_5B0 = 0; HuAudSndGrpSet(0x2C); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 8), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r29); Hu3DModelLayerSet(var_r30, 1); Hu3DModelShadowMapSet(var_r30); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 9), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r29); Hu3DModelLayerSet(var_r30, 1); Hu3DModelShadowMapSet(var_r30); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 10), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r29); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r30); Hu3DModelLayerSet(var_r30, 1); Hu3DModelShadowSet(var_r30); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 11), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r29); Hu3DModelLayerSet(var_r30, 1); Hu3DModelShadowSet(var_r30); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 12), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r29); lbl_1_bss_5B8 = var_r30; Hu3DModelLayerSet(var_r30, 1); temp_r26 = &lbl_1_bss_1E8[0]; var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 13), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r29); temp_r26->unk00 = var_r30; Hu3DModelLayerSet(var_r30, 1); for (j = 0; j < 5; j++) { var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 14 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r26->unk02[j] = Hu3DJointMotion(var_r30, var_r29); } Hu3DMotionSet(var_r30, temp_r26->unk02[0]); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r30); HuPrcChildCreate(fn_1_47E4, 0x2000, 0x2000, 0, HuPrcCurrentGet()); temp_r26 = &lbl_1_bss_1E8[1]; var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 19), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r29); temp_r26->unk00 = var_r30; Hu3DModelLayerSet(var_r30, 1); for (j = 0; j < 5; j++) { var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 20 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r26->unk02[j] = Hu3DJointMotion(var_r30, var_r29); } Hu3DMotionSet(var_r30, temp_r26->unk02[0]); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r30); HuPrcChildCreate(fn_1_4B20, 0x2000, 0x2000, 0, HuPrcCurrentGet()); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 25), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r29); lbl_1_bss_190[0].unk00 = var_r30; Hu3DModelLayerSet(var_r30, 1); Hu3DModelAttrSet(var_r30, 1); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 26), MEMORY_DEFAULT_NUM, HEAP_DATA); lbl_1_bss_190[0].unk04 = Hu3DJointMotion(var_r30, var_r29); Hu3DMotionSet(var_r30, lbl_1_bss_190[0].unk04); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r30); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 27), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r29); lbl_1_bss_190[0].unk02 = var_r30; Hu3DModelLayerSet(var_r30, 1); Hu3DModelAttrSet(var_r30, 1); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 28), MEMORY_DEFAULT_NUM, HEAP_DATA); lbl_1_bss_190[0].unk06 = Hu3DJointMotion(var_r30, var_r29); Hu3DMotionSet(var_r30, lbl_1_bss_190[0].unk04); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(var_r30); lbl_1_bss_190[0].unk08 = 0; var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 29), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r29); lbl_1_bss_190[1].unk00 = var_r30; Hu3DModelLayerSet(var_r30, 1); Hu3DModelAttrSet(var_r30, 1); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); lbl_1_bss_190[1].unk08 = 1; Hu3DModelShadowSet(var_r30); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 30), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r30 = Hu3DModelCreate(var_r29); lbl_1_bss_190[1].unk02 = var_r30; Hu3DModelLayerSet(var_r30, 1); Hu3DModelAttrSet(var_r30, 1); Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); for (i = 0, var_r22 = 0; i < 4; i++) { temp_r31 = &lbl_1_bss_200[i]; temp_r31->unk28 = i; temp_r31->unk2C = i; temp_r31->unk30 = GWPlayerCfg[i].pad_idx; if (GWPlayerCfg[temp_r31->unk28].group == 0) { lbl_1_bss_5AC = temp_r31->unk28; lbl_1_bss_5BE = temp_r31->unk00 = CharModelCreate(lbl_1_data_0[GWPlayerCfg[i].character], 2); Hu3DModelLayerSet(temp_r31->unk00, 0); CharModelLayerSetAll(2); fn_1_4A0(); temp_r31->unk68 = temp_r31->unk70 = temp_r31->unk6C = 0.0f; temp_r31->unk9C = temp_r31->unk6C; temp_r31->unk54 = temp_r31->unk58 = temp_r31->unk5C = 0.0f; temp_r31->unk8C = 50.0f; temp_r31->unk90 = 0.0f; temp_r31->unk94 = 1.0f; Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); Hu3DModelShadowSet(temp_r31->unk00); for (j = 0; j < 11; j++) { var_r23 = lbl_1_data_20[j]; if ((var_r23 & 0xFFFF0000) == DATADIR_M419) { var_r23 += GWPlayerCfg[i].character; } temp_r31->unk06[j] = CharModelMotionCreate(lbl_1_data_0[GWPlayerCfg[i].character], var_r23); } CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk06[0]); Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); CharModelMotionDataClose(lbl_1_data_0[GWPlayerCfg[i].character]); var_r25 = HuPrcChildCreate(fn_1_9AF0, 0x2000, 0x3000, 0, HuPrcCurrentGet()); var_r25->user_data = temp_r31; lbl_1_bss_180[i] = var_r25; } else { temp_r31->unk02 = CharModelCreate(lbl_1_data_0[GWPlayerCfg[i].character], 2); Hu3DModelLayerSet(temp_r31->unk00, 1); CharModelLayerSetAll(2); temp_r31->unk80 = lbl_1_data_5C[GWPlayerCfg[i].character].x; temp_r31->unk84 = lbl_1_data_5C[GWPlayerCfg[i].character].y; temp_r31->unk88 = lbl_1_data_5C[GWPlayerCfg[i].character].z; Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk80, temp_r31->unk84, temp_r31->unk88); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 31), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r31->unk00 = Hu3DModelCreate(var_r29); Hu3DModelLayerSet(temp_r31->unk00, 1); temp_r31->unk68 = temp_r31->unk70 = 0.0f; temp_r31->unk6C = 120.0f * var_r22; var_r22++; if (temp_r31->unk6C > 360.0f) { temp_r31->unk6C -= 360.0f; } Hu3DModelAttrSet(temp_r31->unk00, 1); temp_f31 = 1000.0f; temp_r31->unk54 = temp_f31 * sind(temp_r31->unk6C); temp_r31->unk58 = 0.0f; temp_r31->unk5C = temp_f31 * cosd(temp_r31->unk6C); temp_r31->unk6C += 180.0f; if (temp_r31->unk6C > 360.0f) { temp_r31->unk6C -= 360.0f; } temp_r31->unk9C = temp_r31->unk6C; temp_r31->unk8C = 200.0f; temp_r31->unk90 = 2.25f; temp_r31->unk94 = 1.0f; temp_r31->unk98 = 0.66f; Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); Hu3DModelShadowSet(temp_r31->unk00); Hu3DModelHookSet(temp_r31->unk00, "itemhook_c", temp_r31->unk02); for (j = 0; j < 4; j++) { temp_r31->unk1C[j] = CharModelMotionCreate(lbl_1_data_0[GWPlayerCfg[i].character], lbl_1_data_4C[j]); } CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk1C[0]); CharModelMotionTimeSet(lbl_1_data_0[GWPlayerCfg[i].character], 60.0f); CharModelVoiceEnableSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk1C[3], 0); for (j = 0; j < 8; j++) { var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 32 + j), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r31->unk06[j] = Hu3DJointMotion(temp_r31->unk00, var_r29); } Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[1]); Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.0f); Hu3DMotionSpeedSet(temp_r31->unk00, 1.0f); Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M419, 40), MEMORY_DEFAULT_NUM, HEAP_DATA); temp_r31->unk04 = Hu3DModelCreate(var_r29); Hu3DModelLayerSet(temp_r31->unk04, 1); Hu3DModelAttrSet(temp_r31->unk04, 1); Hu3DModelAttrSet(temp_r31->unk04, HU3D_MOTATTR_PAUSE); CharModelMotionDataClose(lbl_1_data_0[GWPlayerCfg[i].character]); var_r25 = HuPrcChildCreate(fn_1_DF98, 0x2000, 0x3000, 0, HuPrcCurrentGet()); var_r25->user_data = temp_r31; lbl_1_bss_180[i] = var_r25; } } var_r21 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 2), MEMORY_DEFAULT_NUM)); var_r30 = Hu3DParticleCreate(var_r21, 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_2254); var_r21 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 2), MEMORY_DEFAULT_NUM)); var_r30 = Hu3DParticleCreate(var_r21, 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_2744); HuDataDirClose(DATADIR_EFFECT); lbl_1_bss_580 = 0; lbl_1_bss_584[0] = frandmod(5) * 60 + 600; lbl_1_bss_584[1] = frandmod(5) * 60 + 1380; lbl_1_bss_584[2] = 2760; Hu3DModelLayerSet(Hu3DHookFuncCreate(fn_1_848), 1); HuPrcChildCreate(fn_1_104A0, 0x1000, 0x1000, 0, HuPrcCurrentGet()); } float fn_1_1F84(float arg0, float arg1) { float var_f31; float var_f30; if (arg0 > 600.0f - arg1) { var_f31 = 600.0f + 200.0f * ((800.0f - (arg0 + arg1)) / 200.0f); } else if (arg0 < -(600.0f - arg1)) { var_f31 = 600.0f + 200.0f * ((800.0f - ABS_INV(arg0 - arg1)) / 200.0f); } else { var_f31 = 800.0f; } return var_f31; } float fn_1_20AC(float arg0, float arg1) { return fn_1_1F84(arg0, arg1); } float fn_1_21D4(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; } void fn_1_2254(ModelData* model, ParticleData* particle, Mtx matrix) { HsfanimStruct01* var_r31; StructBss200* temp_r28; float var_f31; float temp_f29; float var_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 = particle->unk_48; for (i = 0; i < 4; i++) { temp_r28 = &lbl_1_bss_200[i]; if (temp_r28->unk38 & 1) { 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->unk74 + temp_f29 * sind(var_f31); var_r31->unk34.y = temp_r28->unk78 + 50.0f * frandf(); var_r31->unk34.z = temp_r28->unk7C + 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->unk38 &= ~1; } } var_r31 = particle->unk_48; for (k = 0; k < particle->unk_30; k++, var_r31++) { if (var_r31->unk14.x != 0.0f) { PSVECAdd(&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_2744(ModelData* model, ParticleData* particle, Mtx matrix) { HsfanimStruct01* var_r31; StructBss200* 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 < 4; i++) { temp_r28 = &lbl_1_bss_200[i]; if (temp_r28->unk38 & 2) { 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->unk74 + temp_f31; var_r31->unk34.y = temp_r28->unk78 + 50.0f; var_r31->unk34.z = temp_r28->unk7C + 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->unk38 &= ~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) { PSVECAdd(&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; } } } } s32 fn_1_2BDC(StructBss190* arg0) { StructBss200* temp_r31; Vec sp24; Vec sp18; Vec spC; float var_f29; float var_f28; s32 var_r28; s32 i; for (i = 0, var_f29 = 10000.0f, var_r28 = -1; i < 4; i++) { temp_r31 = &lbl_1_bss_200[i]; HuSetVecF(&sp24, arg0->unk14, 0.0, arg0->unk1C); HuSetVecF(&sp18, temp_r31->unk54, 0.0, temp_r31->unk5C); HuSubVecF(&spC, &sp24, &sp18); if ((var_f28 = VECMagXYZ(&spC)) < 50.0f + temp_r31->unk8C && var_f28 < var_f29) { var_f29 = var_f28; var_r28 = i; } } return var_r28; } void fn_1_2DFC(StructBss190* arg0) { float temp_f31; float var_f26; float var_f25; temp_f31 = 50.0f; var_f26 = fn_1_1F84(arg0->unk1C, 50.0f); var_f25 = fn_1_1F84(arg0->unk14, 50.0f); if (arg0->unk14 > var_f26 - temp_f31) { arg0->unk14 = var_f26 - temp_f31; } if (arg0->unk14 < -(var_f26 - temp_f31)) { arg0->unk14 = -(var_f26 - temp_f31); } if (arg0->unk1C > var_f25 - temp_f31) { arg0->unk1C = var_f25 - temp_f31; } if (arg0->unk1C < -(var_f25 - temp_f31)) { arg0->unk1C = -(var_f25 - temp_f31); } if (arg0->unk1C > var_f25 - temp_f31 || arg0->unk1C < -(var_f25 - temp_f31)) { arg0->unk14 += arg0->unk10 * sind(arg0->unk0C) * 0.8f; } if (arg0->unk14 > var_f26 - temp_f31 || arg0->unk14 < -(var_f26 - temp_f31)) { arg0->unk1C += arg0->unk10 * cosd(arg0->unk0C) * 0.8f; } if (arg0->unk14 > var_f26 - temp_f31) { arg0->unk14 = var_f26 - temp_f31; } if (arg0->unk14 < -(var_f26 - temp_f31)) { arg0->unk14 = -(var_f26 - temp_f31); } if (arg0->unk1C > var_f25 - temp_f31) { arg0->unk1C = var_f25 - temp_f31; } if (arg0->unk1C < -(var_f25 - temp_f31)) { arg0->unk1C = -(var_f25 - temp_f31); } } void fn_1_32F8(void) { StructBss200* temp_r31; float var_f31; s32 var_r29; s32 i; var_r29 = (s32) HuPrcCurrentGet()->user_data; temp_r31 = &lbl_1_bss_200[var_r29]; for (i = 0, var_f31 = 1.0f; i < 30; i++, var_f31 -= 0.033333335f) { Hu3DModelAmbSet(temp_r31->unk00, 1.0f, var_f31, var_f31); HuPrcVSleep(); } Hu3DModelAmbSet(temp_r31->unk00, 1.0f, 0.0f, 0.0f); while (temp_r31->unk48 > 30) { HuPrcVSleep(); } for (i = 0, var_f31 = 0.0f; i < 30; i++, var_f31 += 0.033333335f) { Hu3DModelAmbSet(temp_r31->unk00, 1.0f, var_f31, var_f31); HuPrcVSleep(); } Hu3DModelAmbSet(temp_r31->unk00, 1.0f, 1.0f, 1.0f); HuPrcKill(HuPrcCurrentGet()); while (TRUE) { HuPrcVSleep(); } } void fn_1_344C(void) { StructBss190* temp_r31; StructBss200* temp_r30; Vec spAC; Vec spA0; Vec sp94; float sp6C; float sp68; float sp64; float sp60; float sp5C; float sp58; float sp54; float sp50; float sp4C; float sp48; float sp44; float var_f24; float var_f23; s32 var_r24; s32 var_r23; s16 var_r22; s32 var_r25; s32 var_r28; s32 i; temp_r31 = HuPrcCurrentGet()->user_data; HuPrcSleep(25); var_r23 = 0; temp_r31->unk0A = 0; var_r28 = 0; var_f24 = temp_r31->unk18; var_f23 = 15.0f; sp58 = 0.9f; while (var_f24 > 50.0f) { var_f23 -= sp58; var_f24 += var_f23; var_r28++; } if (temp_r31->unk08 == 0) { Hu3DMotionSet(temp_r31->unk00, temp_r31->unk04); Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); Hu3DModelTPLvlSet(temp_r31->unk00, 1.0f); } else { Hu3DModelAttrReset(temp_r31->unk02, 1); } Hu3DModelAttrReset(temp_r31->unk00, 1); temp_r31->unk0C = atan2d(temp_r31->unk24 - temp_r31->unk14, temp_r31->unk28 - temp_r31->unk1C); HuSetVecF(&spAC, temp_r31->unk24, 0.0, temp_r31->unk28); HuSetVecF(&spA0, temp_r31->unk14, 0.0, temp_r31->unk1C); HuSubVecF(&sp94, &spAC, &spA0); temp_r31->unk10 = VECMagXYZ(&sp94) / var_r28; var_f24 = temp_r31->unk18; var_f23 = 15.0f; sp58 = 0.9f; while (var_f24 > 50.0f) { sp68 = temp_r31->unk14; sp64 = temp_r31->unk18; sp60 = temp_r31->unk1C; temp_r31->unk14 += temp_r31->unk10 * sind(temp_r31->unk0C); temp_r31->unk18 = var_f24; temp_r31->unk1C += temp_r31->unk10 * cosd(temp_r31->unk0C); if ((var_r25 = fn_1_2BDC(temp_r31)) != -1) { temp_r30 = &lbl_1_bss_200[var_r25]; if (GWPlayerCfg[temp_r30->unk28].group == 0) { sp5C = 150.0f; } else { sp5C = 400.0f; } if (temp_r31->unk18 < sp5C) { if (temp_r31->unk18 < sp5C && temp_r31->unk18 > sp5C - 50.0f) { var_f23 = 15.0f; sp58 = 0.9f; } else { sp6C = atan2d(temp_r31->unk14 - temp_r30->unk54, temp_r31->unk1C - temp_r30->unk5C); temp_r31->unk0C = fn_1_21D4(180.0f + temp_r31->unk0C); temp_r31->unk0C = sp6C - (temp_r31->unk0C - sp6C); } temp_r31->unk14 = sp68; temp_r31->unk18 = sp64; temp_r31->unk1C = sp60; } } fn_1_2DFC(temp_r31); Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14, temp_r31->unk18, temp_r31->unk1C); if (temp_r31->unk08 != 0) { temp_r31->unk20 += 10.0f; Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk14, temp_r31->unk18, temp_r31->unk1C); Hu3DModelRotSet(temp_r31->unk02, 0.0f, 0.0f, temp_r31->unk20); } Hu3DModelRotSet(temp_r31->unk00, 0.0f, 0.0f, temp_r31->unk20); if (lbl_1_bss_5B4 >= 4) { var_r23 = 1; goto fn_1_344C_label; } HuPrcVSleep(); var_f23 -= sp58; var_f24 += var_f23; } Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk14, 50.0f, temp_r31->unk1C); if (temp_r31->unk08 != 0) { Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk14, 50.0f, temp_r31->unk1C); } if (temp_r31->unk08 == 0) { Hu3DModelAttrSet(temp_r31->unk00, 1); Hu3DModelAttrReset(temp_r31->unk02, 1); Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk14, 0.0f, temp_r31->unk1C); Hu3DModelRotSet(temp_r31->unk02, 0.0f, 0.0f, 0.0f); Hu3DMotionSet(temp_r31->unk02, temp_r31->unk06); Hu3DModelAttrReset(temp_r31->unk02, HU3D_MOTATTR_LOOP); Hu3DModelTPLvlSet(temp_r31->unk02, 1.0f); } for (var_r28 = 300, var_r24 = 0; var_r28 != 0; var_r28--) { if (temp_r31->unk08 != 0 && 0.0f != temp_r31->unk20) { temp_r31->unk20 += 10.0f; if (temp_r31->unk20 > 360.0f) { temp_r31->unk20 = 0.0f; } Hu3DModelRotSet(temp_r31->unk00, 0.0f, 0.0f, temp_r31->unk20); Hu3DModelRotSet(temp_r31->unk02, 0.0f, 0.0f, temp_r31->unk20); } for (i = 0, sp50 = 10000.0f; i < 4; i++) { temp_r30 = &lbl_1_bss_200[i]; HuSetVecF(&spAC, temp_r31->unk14, 0.0, temp_r31->unk1C); HuSetVecF(&spA0, temp_r30->unk54, 0.0, temp_r30->unk5C); HuSubVecF(&sp94, &spAC, &spA0); if ((sp54 = VECMagXYZ(&sp94)) < 50.0f + temp_r30->unk8C && sp54 < sp50) { sp50 = sp54; var_r25 = i; } } if (sp50 < 10000.0f) { temp_r30 = &lbl_1_bss_200[var_r25]; temp_r31->unk0A = 1; if (temp_r31->unk08 != 0) { temp_r30->unk3C = 1; temp_r30->unk48 = 300; if (GWPlayerCfg[temp_r30->unk28].group == 0) { temp_r30->unk94 = 3.0f; lbl_1_bss_5BC = 1; HuAudFXPlay(0x5E6); } else { temp_r30->unk90 = 6.75f; temp_r30->unk98 = 0.99f; HuAudFXPlay(0x5E2); } } else if (temp_r30->unk24 == 0) { temp_r30->unk34 = 4; HuAudPlayerVoicePlay(temp_r30->unk28, 0x128); HuAudFXPlay(0x5E9); } break; } if (var_r28 < 60) { var_r22 = temp_r31->unk00; if (temp_r31->unk08 == 0) { var_r22 = temp_r31->unk02; } if (var_r24 & 1) { Hu3DModelAttrReset(var_r22, 1); } else { Hu3DModelAttrSet(var_r22, 1); } var_r24++; } HuPrcVSleep(); if (lbl_1_bss_5B4 >= 4) { var_r23 = 1; break; } } fn_1_344C_label: if (var_r23 != 0) { for (i = 0, sp4C = 1.0f; i < 30; i++) { sp4C -= 0.033333335f; Hu3DModelScaleSet(temp_r31->unk00, sp4C, sp4C, sp4C); HuPrcVSleep(); } Hu3DModelAttrSet(temp_r31->unk00, 1); Hu3DModelAttrSet(temp_r31->unk02, 1); } else { if (temp_r31->unk08 == 0) { temp_r30 = &lbl_1_bss_200[var_r25]; sp6C = atan2d(temp_r31->unk14 - temp_r30->unk54, temp_r31->unk1C - temp_r30->unk5C); sp44 = 1.0f; temp_r31->unk20 = 0.0f; for (i = 0, sp48 = 0.0f; i < 10; i++, sp48 += 9.0f, sp44 -= 0.1f) { temp_r31->unk14 += 2.0 * sind(sp6C); temp_r31->unk18 += 10.0f; temp_r31->unk1C += 2.0 * cosd(sp6C); Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk14, temp_r31->unk18, temp_r31->unk1C); temp_r31->unk20 += 10.0f; Hu3DModelRotSet(temp_r31->unk02, 0.0f, 0.0f, temp_r31->unk20); Hu3DModelTPLvlSet(temp_r31->unk02, sp44); HuPrcVSleep(); } } Hu3DModelAttrSet(temp_r31->unk00, 1); if (temp_r31->unk08 != 0) { Hu3DModelAttrSet(temp_r31->unk02, 1); } temp_r31->unk20 = 0.0f; HuPrcCurrentGet()->user_data = NULL; HuPrcKill(HuPrcCurrentGet()); } while (TRUE) { HuPrcVSleep(); } } void fn_1_47E4(void) { StructBss1E8* var_r31; StructBss190* var_r30; ModelData* temp_r29; Process* temp_r3; s32 var_r27; var_r31 = &lbl_1_bss_1E8[0]; while (lbl_1_bss_5B4 != 3) { HuPrcVSleep(); } while (TRUE) { while (lbl_1_bss_5BA != 0) { HuPrcVSleep(); } if (lbl_1_bss_5B4 >= 4) { break; } var_r30 = &lbl_1_bss_190[0]; if (lbl_1_bss_5B0 > lbl_1_bss_584[lbl_1_bss_580]) { lbl_1_bss_580++; var_r30 = &lbl_1_bss_190[1]; Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); } else { Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[3], 0.0f, 5.0f, HU3D_MOTATTR_NONE); } HuPrcVSleep(); var_r27 = Hu3DMotionMaxTimeGet(var_r31->unk00); while (var_r27 != 0) { HuPrcVSleep(); var_r27--; } HuAudFXPlay(0x5E4); temp_r3 = HuPrcChildCreate(fn_1_344C, 0x2010, 0x3000, 0, HuPrcCurrentGet()); temp_r3->user_data = var_r30; temp_r29 = &Hu3DData[lbl_1_bss_1E8[0].unk00]; var_r30->unk14 = temp_r29->pos.x + 640.0f; var_r30->unk18 = temp_r29->pos.y + 620.0f; var_r30->unk1C = temp_r29->pos.y - 200.0f; var_r30->unk20 = 0.0f; var_r30->unk24 = 1000.0f * frandf() - 500.0f; var_r30->unk28 = 1000.0f * frandf() - 500.0f; while (!Hu3DMotionEndCheck(var_r31->unk00)) { HuPrcVSleep(); } Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); while (temp_r3->user_data) { HuPrcVSleep(); } lbl_1_bss_5BA = 1; if (var_r30->unk0A != 0) { HuAudFXPlay(0x5E8); Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuPrcSleep(6); while (!Hu3DMotionEndCheck(var_r31->unk00)) { HuPrcVSleep(); } Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); } } while (TRUE) { HuPrcVSleep(); } } void fn_1_4B20(void) { StructBss1E8* var_r31; StructBss190* var_r30; Process* temp_r3; ModelData* temp_r29; s32 var_r27; var_r31 = &lbl_1_bss_1E8[1]; while (lbl_1_bss_5B4 != 3) { HuPrcVSleep(); } while (TRUE) { while (lbl_1_bss_5BA == 0) { HuPrcVSleep(); } if (lbl_1_bss_5B4 >= 4) { break; } var_r30 = lbl_1_bss_190; if (lbl_1_bss_5B0 > lbl_1_bss_584[lbl_1_bss_580]) { lbl_1_bss_580++; var_r30 = &lbl_1_bss_190[1]; Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); } else { Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[3], 0.0f, 5.0f, HU3D_MOTATTR_NONE); } HuPrcVSleep(); var_r27 = Hu3DMotionMaxTimeGet(var_r31->unk00); while (var_r27 != 0) { HuPrcVSleep(); var_r27--; } HuAudFXPlay(0x5E4); temp_r3 = HuPrcChildCreate(fn_1_344C, 0x2010, 0x3000, 0, HuPrcCurrentGet()); temp_r3->user_data = var_r30; temp_r29 = &Hu3DData[lbl_1_bss_1E8->unk00]; var_r30->unk14 = -(temp_r29->pos.x + 640.0f); var_r30->unk18 = temp_r29->pos.y + 620.0f; var_r30->unk1C = temp_r29->pos.y - 200.0f; var_r30->unk24 = 1000.0f * frandf() - 500.0f; var_r30->unk28 = 1000.0f * frandf() - 500.0f; while (!Hu3DMotionEndCheck(var_r31->unk00)) { HuPrcVSleep(); } Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); while (temp_r3->user_data) { HuPrcVSleep(); } lbl_1_bss_5BA = 0; if (var_r30->unk0A != 0) { HuAudFXPlay(0x5E8); Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[2], 0.0f, 5.0f, HU3D_MOTATTR_NONE); HuPrcSleep(6); while (!Hu3DMotionEndCheck(var_r31->unk00)) { HuPrcVSleep(); } Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); } } while (TRUE) { HuPrcVSleep(); } } s8 fn_1_4E54(s32 arg0, s32 arg1) { StructBss200* temp_r31; s8 var_r30; temp_r31 = &lbl_1_bss_200[arg0]; if (GWPlayerCfg[arg0].iscom == 0) { (arg1 != 0) ? (var_r30 = HuPadStkY[temp_r31->unk30]) : (var_r30 = HuPadStkX[temp_r31->unk30]); } else { (arg1 != 0) ? (var_r30 = temp_r31->unkA1) : (var_r30 = temp_r31->unkA0); } return var_r30; } u8 fn_1_4F0C(s32 arg0, s32 arg1) { StructBss200* temp_r31; s8 var_r30; temp_r31 = &lbl_1_bss_200[arg0]; if (GWPlayerCfg[arg0].iscom == 0) { (arg1 != 0) ? (var_r30 = HuPadTrigR[temp_r31->unk30]) : (var_r30 = HuPadTrigL[temp_r31->unk30]); } else { (arg1 != 0) ? (var_r30 = temp_r31->unkA2) : (var_r30 = temp_r31->unkA3); } return var_r30; } u16 fn_1_4FCC(s32 arg0) { StructBss200* temp_r31; u16 var_r30; temp_r31 = &lbl_1_bss_200[arg0]; if (GWPlayerCfg[arg0].iscom == 0) { var_r30 = HuPadBtnDown[temp_r31->unk30]; } else { var_r30 = temp_r31->unkA6; } return var_r30; } u16 fn_1_5038(s32 arg0) { StructBss200* temp_r31; u16 var_r30; temp_r31 = &lbl_1_bss_200[arg0]; if (GWPlayerCfg[arg0].iscom == 0) { var_r30 = HuPadBtn[temp_r31->unk30]; } else { var_r30 = temp_r31->unkA4; } return var_r30; } s32 fn_1_50A4(StructBss200* arg0, float arg1, s32 arg2) { Vec sp2C; Vec sp20; Vec sp14; StructBss200* temp_r30; s32 var_r28; float var_f27; float var_f28; s32 i; var_r28 = -1; for (i = 0, var_f28 = 10000.0f; i < 4; i++) { if (i != arg0->unk28 && (arg2 == 0 || i != lbl_1_bss_5AC)) { temp_r30 = &lbl_1_bss_200[i]; HuSetVecF(&sp2C, arg0->unk54, arg0->unk58, arg0->unk5C); HuSetVecF(&sp20, temp_r30->unk54, temp_r30->unk58, temp_r30->unk5C); HuSubVecF(&sp14, &sp2C, &sp20); if ((var_f27 = VECMagXYZ(&sp14)) < arg0->unk8C + temp_r30->unk8C + arg1 && var_f27 < var_f28) { var_f28 = var_f27; var_r28 = i; } } } return var_r28; } s32 fn_1_52E8(StructBss200* arg0) { float var_f25; float var_f24; s32 var_r28; var_f25 = fn_1_1F84(arg0->unk5C, arg0->unk8C); var_f24 = fn_1_1F84(arg0->unk54, arg0->unk8C); if (arg0->unk54 > var_f25 - arg0->unk8C) { arg0->unk54 = var_f25 - arg0->unk8C; } if (arg0->unk54 < -(var_f25 - arg0->unk8C)) { arg0->unk54 = -(var_f25 - arg0->unk8C); } if (arg0->unk5C > var_f24 - arg0->unk8C) { arg0->unk5C = var_f24 - arg0->unk8C; } if (arg0->unk5C < -(var_f24 - arg0->unk8C)) { arg0->unk5C = -(var_f24 - arg0->unk8C); } if ((var_r28 = fn_1_50A4(arg0, 0.0f, 0)) != -1) { arg0->unk54 = arg0->unk60; arg0->unk5C = arg0->unk64; } return var_r28; } float fn_1_5858(float arg0, float arg1, float arg2) { float var_f31; float var_f30; var_f31 = fmod(arg1 - arg0, 360.0); if (0.0f > var_f31) { var_f31 += 360.0f; } if (180.0f < var_f31) { var_f31 -= 360.0f; } var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); if (0.0f > var_f30) { var_f30 += 360.0f; } return var_f30; } float fn_1_595C(float arg0, float arg1, StructBss200* arg2) { Vec sp2C; Vec sp20; Vec sp14; HuSetVecF(&sp2C, arg0, 0.0, arg1); HuSetVecF(&sp20, arg2->unk54, 0.0, arg2->unk5C); HuSubVecF(&sp14, &sp2C, &sp20); return VECMagXZ(&sp14); } float fn_1_5AD8(float arg0, float arg1) { float var_f31; if (arg0 > arg1) { var_f31 = fn_1_21D4(arg0 - arg1); if (var_f31 < 180.0f) { var_f31 = fn_1_21D4(arg1 + var_f31 + 180.0f); } else { var_f31 = fn_1_21D4(arg1 - var_f31); } } else { var_f31 = fn_1_21D4(arg1 - arg0); if (var_f31 < 180.0f) { var_f31 = fn_1_21D4(arg0 + var_f31 + 180.0f); } else { var_f31 = fn_1_21D4(arg0 - var_f31); } } return var_f31; } s32 fn_1_5F34(StructBss200* arg0, float arg1) { s32 var_r31; float var_f25; float var_f24; var_f25 = fn_1_1F84(arg0->unk5C, arg0->unk8C); var_f24 = fn_1_1F84(arg0->unk54, arg0->unk8C); var_r31 = 0; if (arg0->unk54 > var_f25 - arg0->unk8C - arg1 || arg0->unk54 < -(var_f25 - arg0->unk8C - arg1) || arg0->unk5C > var_f24 - arg0->unk8C - arg1 || arg0->unk5C < -(var_f24 - arg0->unk8C - arg1)) { var_r31 = 1; } return var_r31; } void fn_1_628C(StructBss200* arg0) { Vec spC; HuSetVecF(&spC, fn_1_4E54(arg0->unk28, 0) / 4.0f, 0.0, -fn_1_4E54(arg0->unk28, 1) / 4.0f); arg0->unk90 = VECMagXYZ(&spC); if (arg0->unk90 >= 0.5f) { if (arg0->unk90 >= 10.0f) { spC.x /= arg0->unk90; spC.z /= arg0->unk90; arg0->unk90 = 10.0f; spC.x = 10.0f * spC.x; spC.z = 10.0f * spC.z; } arg0->unk54 += spC.x * arg0->unk94; arg0->unk5C += spC.z * arg0->unk94; } } void fn_1_65C0(Vec* arg0, StructBss200** arg1) { float temp_f31; StructBss200* temp_r31; StructBss200* temp_r30; s32 var_r28; s32 i; for (i = 0; i < 3; i++) { temp_r31 = arg1[i]; (i >= 2) ? (var_r28 = 0) : (var_r28 = i + 1); temp_r30 = arg1[var_r28]; temp_f31 = ABS_INV(temp_r31->unk54 - temp_r30->unk54) / 2.0f; if (temp_r31->unk54 > temp_r30->unk54) { arg0[i].x = temp_r31->unk54 - temp_f31; } else { arg0[i].x = temp_r30->unk54 - temp_f31; } temp_r31 = arg1[i]; (i >= 2) ? (var_r28 = 0) : (var_r28 = i + 1); temp_r30 = arg1[var_r28]; temp_f31 = ABS_INV(temp_r31->unk5C - temp_r30->unk5C) / 2.0f; if (temp_r31->unk5C > temp_r30->unk5C) { arg0[i].z = temp_r31->unk5C - temp_f31; } else { arg0[i].z = temp_r30->unk5C - temp_f31; } } } s32 fn_1_67A0(float arg0, float arg1, StructBss200* arg2, StructBss200** arg3) { StructBss200* var_r31; StructBss200 sp5C; float var_f29; s32 var_r27; s32 i; var_r31 = &sp5C; var_r31->unk28 = arg2->unk28; var_r31->unk54 = arg2->unk54; var_r31->unk58 = arg2->unk58; var_r31->unk5C = arg2->unk5C; var_r31->unk8C = arg2->unk8C; var_r31->unk90 = arg2->unk90; var_r31->unk94 = arg2->unk94; var_f29 = fn_1_21D4(atan2d(arg0 - arg2->unk54, arg1 - arg2->unk5C)); var_r27 = 1; while (fn_1_595C(arg0, arg1, var_r31) >= 10.0f) { var_r31->unk54 += 10.0 * sind(var_f29); var_r31->unk5C += 10.0 * cosd(var_f29); for (i = 0; i < 3; i++) { if (fn_1_595C(arg3[i]->unk54, arg3[i]->unk5C, var_r31) < var_r31->unk8C + arg3[i]->unk8C + 10.0f) { break; } } if (i < 3) { var_r27 = 0; break; } } return var_r27; } s32 fn_1_6D04(void) { StructBss200* sp8[3]; StructBss200* var_r29; s32 var_r30; s32 var_r28; s32 i; for (i = 0, var_r30 = 0; i < 4; i++) { if (i == lbl_1_bss_5AC) { var_r29 = &lbl_1_bss_200[i]; } else { sp8[var_r30++] = &lbl_1_bss_200[i]; } } var_r30 = 0; for (i = 0; i < 3; i++) { if (sp8[i]->unk54 > var_r29->unk54) { break; } } if (i < 3) { var_r30++; for (i = 0; i < 3; i++) { if (sp8[i]->unk54 < var_r29->unk54) { break; } } if (i < 3) { var_r30++; for (i = 0; i < 3; i++) { if (sp8[i]->unk5C > var_r29->unk5C) { break; } } if (i < 3) { var_r30++; for (i = 0; i < 3; i++) { if (sp8[i]->unk5C < var_r29->unk5C) { break; } } if (i < 3) { var_r30++; } } } } var_r28 = 0; if (var_r30 >= 4) { var_r28 = 1; } return var_r28; } float fn_1_6E9C(StructBss200* arg0) { s32 sp88[3]; s32 sp50[2]; float sp44; float var_f20; float sp48[2]; StructBss200* sp7C[3]; s32 var_r29; s32 var_r28; s32 i; for (i = 0, var_r29 = 0; i < 4; i++) { if (i != arg0->unk28) { sp7C[var_r29++] = &lbl_1_bss_200[i]; } } for (i = 0, var_r28 = 0; i < 3; i++) { sp44 = fn_1_595C(sp7C[i]->unk54, sp7C[i]->unk5C, arg0); if (sp44 < arg0->unk8C + sp7C[i]->unk8C + 100.0f) { sp88[i] = 1; var_r28++; } else { sp88[i] = -1; } } var_f20 = -1.0f; switch (var_r28) { case 1: for (i = 0; i < 3; i++) { if (sp88[i] != 0) { break; } } var_f20 = fn_1_21D4(atan2d(arg0->unk54 - sp7C[i]->unk54, arg0->unk5C - sp7C[i]->unk5C)); break; case 2: for (i = 0, var_r29 = 0; i < 3; i++) { if (sp88[i] == 0) { sp50[var_r29++] = i; } } for (i = 0; i < 2; i++) { sp48[i] = fn_1_21D4(atan2d(arg0->unk54 - sp7C[sp50[i]]->unk54, arg0->unk5C - sp7C[sp50[i]]->unk5C)); } var_f20 = fn_1_5AD8(sp48[0], sp48[1]); break; } if (var_f20 != -1.0f); if (var_f20 != -1.0f) { var_f20 = fn_1_21D4(var_f20); } return var_f20; } void fn_1_78B4(StructBss200* arg0) { StructBss200* temp_r18; StructBss200* var_r17; StructBss200* sp224[3]; Vec sp254[3]; Vec sp230[3]; s32 sp218[3]; s32 sp138[2]; s32 sp130[2]; s32 sp12C; float sp128; float sp124; s32 sp120; float sp11C; float sp118; float sp114; float sp110; float var_f27; float var_f29; float var_f28; float var_f30; float var_f31; float var_f26; s32 var_r21; s32 var_r22; s32 var_r29; s32 var_r30; s32 sp10C; arg0->unkA0 = arg0->unkA1 = 0; arg0->unkA3 = arg0->unkA2 = 0; arg0->unkA4 = arg0->unkA6 = 0; switch (GWPlayerCfg[arg0->unk28].diff) { case 0: sp12C = 60; break; case 1: sp12C = 80; break; case 2: sp12C = 90; break; default: sp12C = 95; break; } for (var_r30 = 0, var_r29 = 0; var_r30 < 4; var_r30++) { if (var_r30 != arg0->unk28) { sp224[var_r29++] = &lbl_1_bss_200[var_r30]; } } for (var_r30 = 0, var_f31 = 10000.0f; var_r30 < 3; var_r30++) { if (sp224[var_r30]->unk54 < var_f31) { var_f31 = sp224[var_r30]->unk54; } } for (var_r30 = 0, var_f30 = -10000.0f; var_r30 < 3; var_r30++) { if (sp224[var_r30]->unk54 > var_f30) { var_f30 = sp224[var_r30]->unk54; } } sp124 = ABS_INV(var_f30 - var_f31) / 2.0f; var_f29 = var_f30 - sp124; for (var_r30 = 0, var_f31 = 10000.0f; var_r30 < 3; var_r30++) { if (sp224[var_r30]->unk5C < var_f31) { var_f31 = sp224[var_r30]->unk5C; } } for (var_r30 = 0, var_f30 = -10000.0f; var_r30 < 3; var_r30++) { if (sp224[var_r30]->unk5C > var_f30) { var_f30 = sp224[var_r30]->unk5C; } } sp124 = ABS_INV(var_f30 - var_f31) / 2.0f; var_f28 = var_f30 - sp124; for (var_r30 = 0, var_f31 = 10000.0f; var_r30 < 3; var_r30++) { var_f26 = fn_1_595C(var_f29, var_f28, sp224[var_r30]); if (var_f26 < var_f31) { var_f31 = var_f26; } } if (fn_1_6D04() != 0) { arg0->unkB0 = 0; if (var_f31 < 400.0f || (arg0->unkB4 & 2)) { arg0->unkB4 |= 2; fn_1_65C0(sp254, sp224); if (arg0->unkBC == -1) { for (var_r30 = 0, sp120 = 0, var_f30 = 0.0f; var_r30 < 3; var_r30++) { temp_r18 = sp224[var_r30]; (var_r30 >= 2) ? (var_r29 = 0) : (var_r29 = var_r30 + 1); var_r17 = sp224[var_r29]; var_f26 = fn_1_595C(temp_r18->unk54, temp_r18->unk5C, var_r17); if (var_f26 > 700.0f) { sp218[var_r30] = 1; sp120++; } else { sp218[var_r30] = 0; } if (var_f26 > var_f30) { var_f30 = var_f26; var_r21 = var_r30; var_f27 = fn_1_21D4(atan2d(sp254[var_r30].x - arg0->unk54, sp254[var_r30].z - arg0->unk5C)); } } if (sp120 > 0) { var_r29 = frandmod(sp120); for (var_r30 = 0; var_r30 < 3; var_r30++) { if (sp218[var_r30] != 0 && var_r29-- == 0) { break; } } var_r21 = var_r30; var_f27 = fn_1_21D4(atan2d(sp254[var_r30].x - arg0->unk54, sp254[var_r30].z - arg0->unk5C)); } arg0->unkBC = var_r21; arg0->unkCC = var_f27; } else { var_r21 = arg0->unkBC; var_f27 = arg0->unkCC; } sp11C = var_f29; sp118 = var_f28; var_f29 = sp254[var_r21].x; var_f28 = sp254[var_r21].z; if (fn_1_595C(var_f29, var_f28, arg0) <= 30.0f && !(arg0->unkB4 & 1)) { arg0->unkC4 = fn_1_21D4(atan2d(var_f29, var_f28)); arg0->unkB4 |= 1; } if (arg0->unkB4 & 1) { var_f29 = 800.0 * sind(arg0->unkC4); var_f28 = 800.0 * cosd(arg0->unkC4); } } } else { arg0->unkAC = 0; arg0->unkB4 = 0; arg0->unkBC = -1; if ((var_f31 >= 600.0f && fn_1_67A0(var_f29, var_f28, arg0, &sp224[0]) != 0) || (arg0->unkB0 & 0x10)) { arg0->unkB0 |= 0x10; fn_1_65C0(sp230, sp224); for (var_r30 = 0, var_r21 = 0, var_f31 = 10000.0f; var_r30 < 3; var_r30++) { var_f26 = fn_1_595C(sp230[var_r30].x, sp230[var_r30].z, arg0); if (var_f26 < var_f31) { var_f31 = var_f26; var_r21 = var_r30; } } sp114 = var_f29; sp110 = var_f28; var_f29 = sp230[var_r21].x; var_f28 = sp230[var_r21].z; if (fn_1_595C(var_f29, var_f28, arg0) <= 30.0f && !(arg0->unkB0 & 0x20)) { arg0->unkC4 = fn_1_21D4(var_f27 - 90.0f); arg0->unkB0 |= 0x20; } if (arg0->unkB0 & 0x20) { var_f29 = 800.0 * sind(arg0->unkC4); var_f28 = 800.0 * cosd(arg0->unkC4); if (fn_1_5F34(arg0, 10.0f)) { arg0->unkB0 &= ~0x20; } else { arg0->unkB0 |= 0x20; } } } else { if (arg0->unk54 >= 0.0f && arg0->unk5C < 0.0f) { sp138[0] = 0; sp138[1] = 1; } if (arg0->unk54 < 0.0f && arg0->unk5C < 0.0f) { sp138[0] = 3; sp138[1] = 0; } if (arg0->unk54 >= 0.0f && arg0->unk5C >= 0.0f) { sp138[0] = 1; sp138[1] = 2; } if (arg0->unk54 < 0.0f && arg0->unk5C >= 0.0f) { sp138[0] = 2; sp138[1] = 3; } for (var_r30 = 0; var_r30 < 2; var_r30++) { var_r22 = 0; sp10C = sp138[var_r30]; switch (sp10C) { case 0: for (var_r29 = 0; var_r29 < 3; var_r29++) { if (sp224[var_r29]->unk5C < -800.0f + sp224[var_r29]->unk8C + 150.0f) { break; } } if (var_r29 >= 3) { var_r22 = 1; } break; case 1: for (var_r29 = 0; var_r29 < 3; var_r29++) { if (sp224[var_r29]->unk54 > 800.0f - sp224[var_r29]->unk8C - 150.0f) { break; } } if (var_r29 >= 3) { var_r22 = 1; } break; case 2: for (var_r29 = 0; var_r29 < 3; var_r29++) { if (sp224[var_r29]->unk5C > 800.0f - sp224[var_r29]->unk8C - 150.0f) { break; } } if (var_r29 >= 3) { var_r22 = 1; } break; case 3: for (var_r29 = 0; var_r29 < 3; var_r29++) { if (sp224[var_r29]->unk54 < -800.0f + sp224[var_r29]->unk8C + 150.0f) { break; } } if (var_r29 >= 3) { var_r22 = 1; } break; } sp130[var_r30] = var_r22; } var_r22 = 0; if ((arg0->unkB0 & 4) || (arg0->unkB0 & 8)) { if ((arg0->unkB0 & 4) && sp130[0] != 0) { var_r22 = 1; } if ((arg0->unkB0 & 8) && sp130[1] != 0) { var_r22 = 1; } } if (arg0->unkC0 > 0) { var_r22 = 1; arg0->unkC0--; } if (var_r22 == 0) { arg0->unkB0 &= ~0xC; if (sp130[0] != 0 && sp130[1] != 0) { if (frandmod(2) != 0) { arg0->unkB0 |= 4; arg0->unkC0 = 30; } else { arg0->unkB0 |= 8; arg0->unkC0 = 30; } } else if (sp130[0] != 0) { arg0->unkB0 |= 4; arg0->unkC0 = 30; } else if (sp130[1] != 0) { arg0->unkB0 |= 8; arg0->unkC0 = 30; } else { arg0->unkB0 |= 0x10; } } if ((arg0->unkB0 & 4) || (arg0->unkB0 & 8)) { var_f27 = fn_1_21D4(atan2d(arg0->unk54, arg0->unk5C)); if (arg0->unkB0 & 4) { var_f27 += 10.0f; } else { var_f27 -= 10.0f; } var_f29 = 800.0 * sind(var_f27); var_f28 = 800.0 * cosd(var_f27); } else { var_f29 = arg0->unk54; var_f28 = arg0->unk5C; } } } var_f26 = fn_1_595C(var_f29, var_f28, arg0); if (var_f26 > 100.0f || arg0->unkAC == 1) { if (arg0->unkAC != 1) { arg0->unkAC = 1; } if (var_f26 < 20.0f) { arg0->unkAC = 0; return; } if (var_f26 < 30.0f) { sp128 = 10.0f; } else { sp128 = 50.0f; } var_f27 = fn_1_21D4(atan2d(var_f29 - arg0->unk54, var_f28 - arg0->unk5C)); arg0->unkA0 = sp128 * sind(var_f27); arg0->unkA1 = sp128 * -cosd(var_f27); } } void fn_1_9AF0(void) { StructBss200* temp_r31; StructBss200* temp_r29; Vec sp6C; float sp44; float sp40; float var_f23; float var_f22; float var_f21; float var_f28; float var_f19; s32 var_r24; s32 var_r30; temp_r31 = HuPrcCurrentGet()->user_data; temp_r31->unk34 = 0; temp_r31->unk24 = 0; temp_r31->unkA8 = 0; temp_r31->unk38 = 0; temp_r31->unkBC = -1; while (lbl_1_bss_5B4 == 0) { HuPrcVSleep(); } lbl_1_bss_5B4 = 2; while (lbl_1_bss_5B4 == 2) { HuPrcVSleep(); } while (TRUE) { temp_r31->unk60 = temp_r31->unk54; temp_r31->unk64 = temp_r31->unk5C; if (GWPlayerCfg[temp_r31->unk28].iscom == 1) { fn_1_78B4(temp_r31); } if (temp_r31->unk3C != 0 && temp_r31->unk48-- == 0) { temp_r31->unk3C = 0; temp_r31->unk94 = 1.0f; lbl_1_bss_5BC = 0; } if (temp_r31->unk24 != 0) { break; } switch (temp_r31->unk34) { case 4: omVibrate(temp_r31->unk28, 12, 6, 6); CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 1.0f); CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[6]); Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP); temp_r31->unk44 = 60; temp_r31->unk34 = 5; break; case 5: if (temp_r31->unk44 != 0) { if (temp_r31->unk44 == 20) { HuAudPlayerVoicePlay(temp_r31->unk28, 0x119); } temp_r31->unk44--; } else { CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[7], 0.0f, 10.0f, HU3D_MOTATTR_NONE); temp_r31->unk44 = 20; temp_r31->unk34 = 6; } break; case 6: if (temp_r31->unk44 != 0) { Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP); temp_r31->unk44--; } else if (Hu3DMotionEndCheck(temp_r31->unk00) == 1) { CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[4], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); temp_r31->unk44 = 10; temp_r31->unk34 = 7; } break; case 7: if (temp_r31->unk44 != 0) { temp_r31->unk44--; } else { CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 2.0f); temp_r31->unk34 = 0; } break; default: HuSetVecF(&sp6C, fn_1_4E54(temp_r31->unk28, 0) / 4.0f, 0.0, -fn_1_4E54(temp_r31->unk28, 1) / 4.0f); temp_r31->unk90 = VECMagXYZ(&sp6C); if (temp_r31->unk90 >= 0.5f) { CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 1.0f); if (temp_r31->unk90 >= 10.0f) { sp6C.x /= temp_r31->unk90; sp6C.z /= temp_r31->unk90; temp_r31->unk90 = 10.0f; sp6C.x = 10.0f * sp6C.x; sp6C.z = 10.0f * sp6C.z; } temp_r31->unk6C = fn_1_5858(temp_r31->unk6C, atan2d(sp6C.x, sp6C.z), 0.4f); if (temp_r31->unk90 >= 8.0f) { if (temp_r31->unk34 != 3) { temp_r31->unk34 = 3; CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } } else if (temp_r31->unk34 != 2) { temp_r31->unk34 = 2; CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); } temp_r31->unk54 += sp6C.x * temp_r31->unk94; temp_r31->unk5C += sp6C.z * temp_r31->unk94; } else if (temp_r31->unk34 != 0) { temp_r31->unk34 = 0; CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[4]); CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 2.0f); Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP); } break; } if ((temp_r31->unk40 = fn_1_50A4(temp_r31, 0.0f, 0)) != -1) { temp_r31->unk24 = 1; break; } if ((temp_r31->unk40 = fn_1_52E8(temp_r31)) != -1) { temp_r31->unk24 = 1; break; } Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); HuPrcVSleep(); } lbl_1_bss_5BC = 0; if (lbl_1_bss_5A8 == lbl_1_bss_5AC) { var_f23 = 10.0f; CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 1.0f); Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); var_r30 = (360.0f - fn_1_21D4(temp_r31->unk6C)) / var_f23; if (temp_r31->unk6C < 180.0f) { var_r30 = temp_r31->unk6C / var_f23; var_f23 = -var_f23; } for (; var_r30 != 0; var_r30--) { temp_r31->unk6C += var_f23; Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); HuPrcVSleep(); } Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, 0.0f, temp_r31->unk70); } else { omVibrate(temp_r31->unk28, 12, 4, 2); HuAudPlayerVoicePlay(temp_r31->unk28, 0x123); HuAudFXPlay(0x5EC); temp_r29 = &lbl_1_bss_200[temp_r31->unk40]; temp_r31->unk9C = atan2d(temp_r31->unk54 - temp_r29->unk54, temp_r31->unk5C - temp_r29->unk5C); var_r30 = 0; var_f22 = temp_r31->unk54; var_f21 = temp_r31->unk5C; while (TRUE) { var_f22 += 20.0 * sind(temp_r31->unk9C); var_f21 += 20.0 * cosd(temp_r31->unk9C); if (ABS_INV(var_f22) > 1200.0f || var_f21 > 1200.0f || var_f21 < -2000.0f) { break; } var_r30++; } var_f28 = fn_1_21D4(atan2d(temp_r31->unk54 - temp_r29->unk54, temp_r31->unk5C - temp_r29->unk5C)); if (ABS_INV(var_f28 - temp_r31->unk6C) > 90.0f && ABS_INV(var_f28 - temp_r31->unk6C) < 270.0f) { CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk18, 0.0f, 5.0f, HU3D_MOTATTR_NONE); } else { CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk1A, 0.0f, 5.0f, HU3D_MOTATTR_NONE); } sp44 = temp_r31->unk58; var_f19 = 0.0f; sp40 = 180.0f / var_r30; var_r24 = 0; for (; var_r30 != 0; var_r30--) { temp_r31->unk54 += 20.0 * sind(temp_r31->unk9C); temp_r31->unk58 = 700.0 * sind(var_f19); temp_r31->unk5C += 20.0 * cosd(temp_r31->unk9C); var_f19 += sp40; Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); if (Hu3DMotionTimeGet(temp_r31->unk00) == 20.0f && var_r24 == 0) { var_r24 = 1; Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_PAUSE); } HuPrcVSleep(); } Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, -1000.0f, temp_r31->unk5C); Hu3DModelAttrSet(temp_r31->unk00, 1); } while (TRUE) { HuPrcVSleep(); } } float fn_1_ADFC(s32 arg0, float arg1, float arg2) { float temp_f31; float var_f29; temp_f31 = arg1 - fn_1_21D4(arg2); 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; } void fn_1_B054(StructBss200* arg0) { StructBss200 sp23C; float sp230[3]; float sp198[2]; Vec sp224; Vec sp218; Vec sp20C; float sp194; float sp190; float sp18C; float sp188; float sp184; float sp180; s32 sp17C; float sp178; float sp174; float var_f30; float var_f29; float var_f31; s32 var_r21; s32 var_r20; StructBss200* temp_r30; StructBss200* var_r29; StructBss200* temp_r28; s32 var_r19; s32 var_r18; s32 var_r17; s32 var_r26; s32 i; arg0->unkA0 = arg0->unkA1 = 0; arg0->unkA3 = arg0->unkA2 = 0; arg0->unkA4 = arg0->unkA6 = 0; switch(GWPlayerCfg[arg0->unk28].diff) { case 0: var_r19 = 60; break; case 1: var_r19 = 80; break; case 2: var_r19 = 90; break; default: var_r19 = 95; break; } temp_r30 = &lbl_1_bss_200[lbl_1_bss_5AC]; var_r29 = &sp23C; for (i = 0, var_r26 = 0; i < 4; i++) { if (i != lbl_1_bss_5AC && i != arg0->unk28) { temp_r28 = &lbl_1_bss_200[i]; sp230[var_r26] = fn_1_21D4(atan2d(temp_r28->unk54 - temp_r30->unk54, temp_r28->unk5C - temp_r30->unk5C)); var_r26++; } } if (sp230[0] > sp230[1]) { sp230[2] = fn_1_21D4(sp230[0] - sp230[1]); if (sp230[2] < 180.0f) { sp230[2] = fn_1_21D4(sp230[1] + sp230[2] + 180.0f); } else { sp230[2] = fn_1_21D4(sp230[1] - sp230[2]); } } else { sp230[2] = fn_1_21D4(sp230[1] - sp230[0]); if (sp230[2] < 180.0f) { sp230[2] = fn_1_21D4(sp230[0] + sp230[2] + 180.0f); } else { sp230[2] = fn_1_21D4(sp230[0] - sp230[2]); } } temp_r28 = &lbl_1_bss_200[arg0->unk28]; HuSetVecF(&sp224, temp_r28->unk54, temp_r28->unk58, temp_r28->unk5C); HuSetVecF(&sp218, temp_r30->unk54, temp_r30->unk58, temp_r30->unk5C); HuSubVecF(&sp20C, &sp224, &sp218); sp184 = VECMagXYZ(&sp20C); for (i = 0, var_r21 = 0; i < 4; i++) { if (i != lbl_1_bss_5AC && i != arg0->unk28 && GWPlayerCfg[i].iscom) { temp_r28 = &lbl_1_bss_200[i]; HuSetVecF(&sp224, temp_r28->unk54, temp_r28->unk58, temp_r28->unk5C); HuSetVecF(&sp218, temp_r30->unk54, temp_r30->unk58, temp_r30->unk5C); HuSubVecF(&sp20C, &sp224, &sp218); sp194 = VECMagXYZ(&sp20C); if (sp194 < sp184) { var_r21++; } } } if (arg0->unkAC != 2) { if (fn_1_6D04() != 0) { arg0->unkAC = 0; } else { if (ABS_INV(temp_r30->unk54) > 600.0f && ABS_INV(temp_r30->unk5C) > 600.0f) { if (var_r21 <= 0) { arg0->unkAC = 0; } else { arg0->unkAC = 2; } } else { if (var_r21 <= 0) { arg0->unkAC = 0; } else { arg0->unkAC = 1; } } } } if (arg0->unkAC != 3 && arg0->unkD0 > 180) { arg0->unkAC = 3; arg0->unkD4 = frandmod(120) + 120; } switch (arg0->unkAC) { case 0: var_f30 = temp_r30->unk54; var_f29 = temp_r30->unk5C; var_f31 = fn_1_21D4(atan2d(var_f30 - arg0->unk54, var_f29 - arg0->unk5C)); break; case 1: var_f30 = var_f29 = sp18C = sp188 = 0.0f; if (temp_r30->unk54 >= 300.0f && temp_r30->unk5C < -300.0f) { var_f30 = 550.0f; var_f29 = -100.0f; sp18C = 100.0f; sp188 = 550.0f; } if (temp_r30->unk54 < -300.0f && temp_r30->unk5C < -300.0f) { var_f30 = -550.0f; var_f29 = -100.0f; sp18C = -100.0f; sp188 = 550.0f; } if (temp_r30->unk54 >= 300.0f && temp_r30->unk5C >= 300.0f) { var_f30 = 550.0f; var_f29 = -100.0f; sp18C = 100.0f; sp188 = -550.0f; } if (temp_r30->unk54 < -300.0f && temp_r30->unk5C >= -300.0f) { var_f30 = -550.0f; var_f29 = -100.0f; sp18C = -100.0f; sp188 = -550.0f; } if (temp_r30->unk54 > 300.0f && temp_r30->unk5C > -300.0f && temp_r30->unk5C < 300.0f) { var_f30 = 200.0f; var_f29 = 550.0f; sp18C = 200.0f; sp188 = -550.0f; } if (temp_r30->unk54 < -300.0f && temp_r30->unk5C > -300.0f && temp_r30->unk5C < 300.0f) { var_f30 = -200.0f; var_f29 = 550.0f; sp18C = -200.0f; sp188 = -550.0f; } if (temp_r30->unk54 < 300.0f && temp_r30->unk54 > -300.0f && temp_r30->unk5C < -300.0f) { var_f30 = 550.0f; var_f29 = -200.0f; sp18C = -550.0f; sp188 = -200.0f; } if (temp_r30->unk54 < 300.0f && temp_r30->unk54 > -300.0f && temp_r30->unk5C > 300.0f) { var_f30 = 550.0f; var_f29 = 200.0f; sp18C = -550.0f; sp188 = 200.0f; } for (i = 0, var_r17 = -1, sp190 = 10000.0f; i < 4; i++) { if (i != lbl_1_bss_5AC) { temp_r28 = &lbl_1_bss_200[i]; HuSetVecF(&sp224, temp_r30->unk54, 0.0, temp_r30->unk5C); HuSetVecF(&sp218, temp_r28->unk54, 0.0, temp_r28->unk5C); HuSubVecF(&sp20C, &sp224, &sp218); sp194 = VECMagXZ(&sp20C); if (sp194 < sp190) { sp190 = sp194; var_r17 = i; } } } for (i = 0, var_r26 = -1, sp190 = 10000.0f; i < 4; i++) { if (i != lbl_1_bss_5AC && i != var_r17) { temp_r28 = &lbl_1_bss_200[i]; HuSetVecF(&sp224, temp_r30->unk54, 0.0, temp_r30->unk5C); HuSetVecF(&sp218, temp_r28->unk54, 0.0, temp_r28->unk5C); HuSubVecF(&sp20C, &sp224, &sp218); sp194 = VECMagXZ(&sp20C); if (sp194 < sp190) { sp190 = sp194; var_r26 = i; } } } if (arg0->unk28 != var_r26) { var_f30 = sp18C; var_f29 = sp188; } var_f31 = fn_1_21D4(atan2d(var_f30 - arg0->unk54, var_f29 - arg0->unk5C)); break; case 2: for (i = 0, var_r26 = 0; i < 4; i++) { if (i != lbl_1_bss_5AC && i != arg0->unk28) { temp_r28 = &lbl_1_bss_200[i]; sp198[var_r26++] = fn_1_21D4(atan2d(temp_r28->unk54 - arg0->unk54, temp_r28->unk5C - arg0->unk5C)); } } sp180 = fn_1_21D4(ABS_INV(sp198[0] - sp198[1]) / 2.0f); if (sp180 < 90.0f) { sp180 += 180.0f; } if (sp198[0] < sp198[1]) { sp180 += sp198[0]; } else { sp180 += sp198[1]; } sp180 = fn_1_21D4(sp180); if (sqrtf(arg0->unk54 * arg0->unk54 + arg0->unk5C * arg0->unk5C) < 500.0f) { sp194 = 600.0f; var_f30 = arg0->unk54 + sp194 * sind(sp180); var_f29 = arg0->unk5C + sp194 * cosd(sp180); var_f31 = fn_1_21D4(atan2d(var_f30 - arg0->unk54, var_f29 - arg0->unk5C)); } else { arg0->unkAC = 1; } break; case 3: for (i = 0, sp174 = 10000.0f; i < 4; i++) { if (i != lbl_1_bss_5AC && i != arg0->unk28) { temp_r28 = &lbl_1_bss_200[i]; sp178 = fn_1_595C(temp_r28->unk54, temp_r28->unk5C, arg0); if (sp178 < sp174) { sp174 = sp178; sp17C = i; } } } temp_r28 = &lbl_1_bss_200[sp17C]; var_f31 = fn_1_21D4(180.0 + atan2d(temp_r28->unk54 - arg0->unk54, temp_r28->unk5C - arg0->unk5C)); var_f30 = arg0->unk54 + 100.0 * sind(var_f31); var_f29 = arg0->unk5C + 100.0 * cosd(var_f31); if (arg0->unkD4-- == 0) { arg0->unkD0 = 0; arg0->unkAC = 1; } break; } var_r29->unk9C = 0.0f; if (ABS_INV(arg0->unk6C - var_f31) > 30.0f && ABS_INV(arg0->unk6C - var_f31) < 330.0f) { if (ABS_INV(fn_1_21D4(arg0->unk6C - var_f31)) > 180.0f) { arg0->unkA0 = -30; var_r29->unk9C = arg0->unk98; } else { arg0->unkA0 = 30; var_r29->unk9C = -arg0->unk98; } } if (arg0->unkB8 == 0) { HuSetVecF(&sp224, var_f30, 0.0, var_f29); HuSetVecF(&sp218, arg0->unk54, 0.0, arg0->unk5C); HuSubVecF(&sp20C, &sp224, &sp218); if (VECMagXZ(&sp20C) > 10.0f) { if (ABS_INV(arg0->unk6C - var_f31) < 90.0f || ABS_INV(arg0->unk6C - var_f31) > 270.0f) { arg0->unkA4 |= 0x100; } else { arg0->unkA4 |= 0x200; var_r29->unk9C = -var_r29->unk9C; } } } var_r29->unk28 = arg0->unk28; var_r29->unk54 = arg0->unk54; var_r29->unk58 = arg0->unk58; var_r29->unk5C = arg0->unk5C; var_r29->unk90 = arg0->unk90; var_r29->unk9C = fn_1_21D4(arg0->unk9C + var_r29->unk9C); var_r29->unk8C = lbl_1_bss_200[lbl_1_bss_5AC].unk8C + arg0->unk8C + arg0->unk90; var_r20 = fn_1_50A4(var_r29, arg0->unk90, 0); if (var_r20 != -1 && var_r20 != lbl_1_bss_5AC) { if (arg0->unkA4 & 0x100) { var_r29->unk54 += var_r29->unk90 * sind(var_r29->unk9C); var_r29->unk5C += var_r29->unk90 * cosd(var_r29->unk9C); } if (arg0->unkA4 & 0x200) { var_r29->unk54 -= var_r29->unk90 * sind(var_r29->unk9C); var_r29->unk5C -= var_r29->unk90 * cosd(var_r29->unk9C); } temp_r28 = &lbl_1_bss_200[var_r20]; HuSetVecF(&sp224, arg0->unk54, 0.0, arg0->unk5C); HuSetVecF(&sp218, temp_r28->unk54, 0.0, temp_r28->unk5C); HuSubVecF(&sp20C, &sp224, &sp218); sp194 = VECMagXYZ(&sp20C); HuSetVecF(&sp224, var_r29->unk54, 0.0, var_r29->unk5C); HuSetVecF(&sp218, temp_r28->unk54, 0.0, temp_r28->unk5C); HuSubVecF(&sp20C, &sp224, &sp218); sp190 = VECMagXYZ(&sp20C); var_r18 = fn_1_50A4(var_r29, 0.0f, 0); if (sp194 > sp190 || (var_r20 != var_r18 && var_r18 != -1)) { arg0->unkA0 = 30; arg0->unkA4 = 0; arg0->unkAC = 2; arg0->unkA8 = 300; if (arg0->unkB8 == 0) { arg0->unkB8 = 60; } } else if (var_r18 == -1) { arg0->unkAC = 2; if (ABS_INV(arg0->unk6C - var_f31) < 90.0f || ABS_INV(arg0->unk6C - var_f31) > 270.0f) { arg0->unkA4 |= 0x100; } else { arg0->unkA4 |= 0x200; var_r29->unk9C = -var_r29->unk9C; } } else { arg0->unkA0 = 30; } } if (arg0->unkB8 != 0) { arg0->unkB8--; } } void fn_1_DECC(void) { StructBss200* temp_r31; s32 i; temp_r31 = HuPrcCurrentGet()->user_data; for (i = 0; i < 20; i++) { temp_r31->unk88 -= 4.0f; Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk80, temp_r31->unk84, temp_r31->unk88); HuPrcVSleep(); } HuPrcKill(HuPrcCurrentGet()); while (TRUE) { HuPrcVSleep(); } } s32 fn_1_DF3C(StructBss200* arg0) { s32 var_r31; s32 var_r30; var_r31 = 1; var_r30 = 1; if (arg0->unk34 != 4 && arg0->unk34 != 5) { var_r30 = 0; } if (var_r30 == 0 && arg0->unk34 != 6) { var_r31 = 0; } return var_r31; } void fn_1_DF98(void) { float var_f27; float var_f25; float var_f26; StructBss200* temp_r31; StructBss200* temp_r30; s32 var_r25; s32 var_r29; s32 var_r28; s32 sp90; Process* sp8C; s32 sp88; s32 sp84; s32 sp80; s32 sp7C; Process* sp78; temp_r31 = HuPrcCurrentGet()->user_data; temp_r31->unk34 = 0; temp_r31->unkA8 = temp_r31->unkAC = temp_r31->unkB0 = temp_r31->unkB4 = temp_r31->unkB8 = temp_r31->unk50 = 0; temp_r31->unkC0 = 0; temp_r31->unk38 = 0; temp_r31->unkD0 = 0; while (lbl_1_bss_5B4 == 0) { HuPrcVSleep(); } lbl_1_bss_5B4 = 2; while (lbl_1_bss_5B4 == 2) { HuPrcVSleep(); } temp_r31->unkD8 = temp_r31->unk54; temp_r31->unkDC = temp_r31->unk5C; var_r29 = 0; while (TRUE) { temp_r31->unk60 = temp_r31->unk54; temp_r31->unk64 = temp_r31->unk5C; if (GWPlayerCfg[temp_r31->unk28].iscom == 1) { fn_1_B054(temp_r31); } if (temp_r31->unk3C != 0) { if (temp_r31->unk48 == 300) { sp8C = HuPrcChildCreate(fn_1_32F8, 0x2000, 0x1000, 0, HuPrcCurrentGet()); sp8C->user_data = (void*) temp_r31->unk28; } if (temp_r31->unk48-- == 0) { temp_r31->unk3C = 0; temp_r31->unk90 = 2.25f; temp_r31->unk98 = 0.66f; } } if (temp_r31->unk24 != 0) { break; } switch (temp_r31->unk34) { case 8: if (temp_r31->unk44 != 0) { temp_r31->unk44--; } else { Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); temp_r31->unk34 = 0; } break; case 4: omVibrate(temp_r31->unk28, 12, 4, 2); Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[4], 0.0f, 5.0f, HU3D_MOTATTR_NONE); temp_r31->unk44 = 90; temp_r31->unk4C = 30; temp_r31->unk34 = 5; break; case 5: if (temp_r31->unk4C-- == 0) { HuAudFXPlay(0x5E7); temp_r31->unk74 = temp_r31->unk54; temp_r31->unk78 = temp_r31->unk58; temp_r31->unk7C = temp_r31->unk5C; temp_r31->unk38 |= 1; } if (temp_r31->unk44 != 0) { temp_r31->unk44--; } else { Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[5]); Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP); temp_r31->unk34 = 6; } break; case 6: if (Hu3DMotionEndCheck(temp_r31->unk00) == 1) { Hu3DMotionSet(temp_r31->unk00, temp_r31->unk06[0]); temp_r31->unk34 = 0; } break; default: if (fn_1_4E54(temp_r31->unk28, 0) > 20) { temp_r31->unk9C -= temp_r31->unk98; if (temp_r31->unk9C < 0.0f) { temp_r31->unk9C += 360.0f; } temp_r31->unk6C = temp_r31->unk9C; } if (fn_1_4E54(temp_r31->unk28, 0) < -20) { temp_r31->unk9C += temp_r31->unk98; if (temp_r31->unk9C > 360.0f) { temp_r31->unk9C -= 360.0f; } temp_r31->unk6C = temp_r31->unk9C; } if (fn_1_5038(temp_r31->unk28) & 0x100) { temp_r31->unk54 += temp_r31->unk90 * sind(temp_r31->unk9C); temp_r31->unk5C += temp_r31->unk90 * cosd(temp_r31->unk9C); } if (fn_1_5038(temp_r31->unk28) & 0x200) { temp_r31->unk54 -= temp_r31->unk90 * sind(temp_r31->unk9C); temp_r31->unk5C -= temp_r31->unk90 * cosd(temp_r31->unk9C); } if (fn_1_5038(temp_r31->unk28) & 0x300) { if (temp_r31->unk3C != 1) { if (temp_r31->unk34 != 2) { temp_r31->unk34 = 2; if (fn_1_5038(temp_r31->unk28) & 0x100) { 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 != 0) { var_r29 = 0; HuAudFXStop(var_r25); } } } else { if (temp_r31->unk34 != 3) { temp_r31->unk34 = 3; temp_r31->unk50 = 0; if (fn_1_5038(temp_r31->unk28) & 0x100) { 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 != 0) { var_r29 = 0; HuAudFXStop(var_r25); } } } if (temp_r31->unk3C != 1) { sp88 = 8; sp84 = 32; } else { sp88 = 7; sp84 = 22; } if (temp_r31->unk50 == sp88) { HuAudFXPlay(0x5E0); } if (temp_r31->unk50 == sp84) { HuAudFXPlay(0x5E0); } temp_r31->unk50++; if (temp_r31->unk3C != 1) { if (temp_r31->unk50 >= 50) { temp_r31->unk50 -= 50; } } else { if (temp_r31->unk50 >= 30) { temp_r31->unk50 -= 30; } } } else { if (ABS_INV(fn_1_4E54(temp_r31->unk28, 0)) <= 20) { if (temp_r31->unk34 != 0) { temp_r31->unk34 = 0; Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); if (var_r29 != 0) { var_r29 = 0; HuAudFXStop(var_r25); } } } else { if (temp_r31->unk34 != 1) { temp_r31->unk34 = 1; Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[3], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.5f); var_r25 = HuAudFXPlay(0x5EB); var_r29 = 1; } } } if ((sp90 = fn_1_50A4(temp_r31, 0.0f, 0)) != -1) { temp_r30 = &lbl_1_bss_200[sp90]; if (GWPlayerCfg[temp_r30->unk28].group != 0) { HuAudFXPlay(0x5ED); temp_r31->unk34 = 8; temp_r31->unk44 = 90; Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[6], 0.0f, 5.0f, 0U); if ((temp_r30->unk34 == 4 || temp_r30->unk34 == 5 || temp_r30->unk34 == 6) == FALSE) { temp_r30->unk34 = 8; temp_r30->unk44 = 90; Hu3DMotionShiftSet(temp_r30->unk00, temp_r30->unk06[6], 0.0f, 5.0f, HU3D_MOTATTR_NONE); } temp_r31->unk54 = temp_r31->unk60; temp_r31->unk5C = temp_r31->unk64; } else { temp_r30->unk24 = 1; temp_r30->unk40 = temp_r31->unk28; } } if ((sp90 = fn_1_52E8(temp_r31)) != -1) { temp_r30 = &lbl_1_bss_200[sp90]; if (GWPlayerCfg[temp_r30->unk28].group != 0) { HuAudFXPlay(0x5ED); temp_r31->unk34 = 8; temp_r31->unk44 = 90; Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[6], 0.0f, 5.0f, HU3D_MOTATTR_NONE); if ((temp_r30->unk34 == 4 || temp_r30->unk34 == 5 || temp_r30->unk34 == 6) == FALSE) { temp_r30->unk34 = 8; temp_r30->unk44 = 90; Hu3DMotionShiftSet(temp_r30->unk00, temp_r30->unk06[6], 0.0f, 5.0f, HU3D_MOTATTR_NONE); } temp_r31->unk54 = temp_r31->unk60; temp_r31->unk5C = temp_r31->unk64; } else { temp_r30->unk24 = 1; temp_r30->unk40 = temp_r31->unk28; } } break; } if (temp_r31->unkD8 == temp_r31->unk54 && temp_r31->unkDC == temp_r31->unk5C) { temp_r31->unkD0++; } else { temp_r31->unkD8 = temp_r31->unk54; temp_r31->unkDC = temp_r31->unk5C; temp_r31->unkD0 = 0; } Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); HuPrcVSleep(); } if (var_r29 != 0) { HuAudFXStop(var_r25); } if (lbl_1_bss_5A8 == lbl_1_bss_5AC) { Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(90); if (lbl_1_bss_5AC == 0) { if (temp_r31->unk28 != 0) { HuAudFXPlay(0x5EA); } } else { if (temp_r31->unk28 == 0) { HuAudFXPlay(0x5EA); } } Hu3DModelAttrReset(temp_r31->unk04, 1); Hu3DModelAttrReset(temp_r31->unk04, HU3D_MOTATTR_PAUSE); Hu3DModelPosSet(temp_r31->unk04, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[7], 0.0f, 5.0f, HU3D_MOTATTR_NONE); if (lbl_1_bss_5AC == 0) { if (temp_r31->unk28 != 0) { HuAudFXPlay(0x5E3); } } else { if (temp_r31->unk28 == 0) { HuAudFXPlay(0x5E3); } } HuPrcSleep(15); HuPrcSleep(30); temp_r31->unk74 = temp_r31->unk54; temp_r31->unk78 = temp_r31->unk58; temp_r31->unk7C = temp_r31->unk5C; temp_r31->unk38 |= 2; while (!Hu3DMotionEndCheck(temp_r31->unk00)) { HuPrcVSleep(); } lbl_1_bss_594[temp_r31->unk28] = HuAudPlayerVoicePlay(temp_r31->unk28, 0x11A); CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk1C[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->unk54, temp_r31->unk58 + var_f27, temp_r31->unk5C); HuPrcSleep(60); for (sp80 = 0, sp7C = 0; sp80 < 90; sp80++) { if (sp7C & 1) { Hu3DModelAttrReset(temp_r31->unk00, 1); Hu3DModelAttrReset(temp_r31->unk04, 1); } else { Hu3DModelAttrSet(temp_r31->unk00, 1); Hu3DModelAttrSet(temp_r31->unk04, 1); } sp7C++; HuPrcVSleep(); } Hu3DModelAttrSet(temp_r31->unk04, 1); for (var_r28 = 0, var_f25 = 1.0f; var_r28 < 30; var_r28++) { var_f25 -= 0.033333335f; Hu3DModelTPLvlSet(temp_r31->unk00, var_f25); if (var_f27 > 0.0f) { var_f27 -= 5.0f; Hu3DModelPosSet(temp_r31->unk02, temp_r31->unk54, temp_r31->unk58 + var_f27, temp_r31->unk5C); } HuPrcVSleep(); } Hu3DModelAttrSet(temp_r31->unk00, 1); } else { var_f26 = temp_r31->unk98; Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[3], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); if (fn_1_21D4(temp_r31->unk6C) != 0.0f) { var_r28 = (360.0f - fn_1_21D4(temp_r31->unk6C)) / var_f26; if (temp_r31->unk6C < 180.0f) { var_r28 = temp_r31->unk6C / var_f26; var_f26 = -var_f26; } while (var_r28 != 0) { temp_r31->unk6C += var_f26; Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, temp_r31->unk6C, temp_r31->unk70); HuPrcVSleep(); var_r28--; } Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk68, 0.0f, temp_r31->unk70); } Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk06[0], 0.0f, 2.0f, HU3D_MOTATTR_LOOP); while (lbl_1_bss_5A4 < 60) { HuPrcVSleep(); } sp78 = HuPrcChildCreate(fn_1_DECC, 0x2000, 0x1000, 0, HuPrcCurrentGet()); sp78->user_data = temp_r31; CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk1C[2], 0.0f, 2.0f, HU3D_MOTATTR_NONE); temp_r31->unk34 = 10; } while (TRUE) { HuPrcVSleep(); } } void fn_1_F73C(void) { StructBss200* var_r31; float var_f31; s32 var_r30; s32 var_r29; for (var_r30 = 0; var_r30 < 4; var_r30++) { Hu3DModelAttrReset(lbl_1_bss_200[var_r30].unk00, 1); } for (var_r29 = 0, var_f31 = 1000.0f; var_r29 < 60; var_r29++, var_f31 -= 7.5f) { for (var_r30 = 0; var_r30 < 4; var_r30++) { if (var_r30 != lbl_1_bss_5AC) { var_r31 = &lbl_1_bss_200[var_r30]; var_r31->unk54 = var_f31 * sind(var_r31->unk6C - 180.0f); var_r31->unk5C = var_f31 * cosd(var_r31->unk6C - 180.0f); Hu3DModelPosSet(var_r31->unk00, var_r31->unk54, var_r31->unk58, var_r31->unk5C); } } HuPrcVSleep(); } var_r31->unk54 = 550.0 * sind(var_r31->unk6C - 180.0f); var_r31->unk5C = 550.0 * cosd(var_r31->unk6C - 180.0f); Hu3DModelPosSet(var_r31->unk00, var_r31->unk54, var_r31->unk58, var_r31->unk5C); for (var_r30 = 0; var_r30 < 4; var_r30++) { if (var_r30 != lbl_1_bss_5AC) { var_r31 = &lbl_1_bss_200[var_r30]; Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk06[0], 0.0f, 5.0f, HU3D_MOTATTR_LOOP); } } HuPrcKill(HuPrcCurrentGet()); while (TRUE) { HuPrcVSleep(); } } void fn_1_F9BC(void) { StructBss200* temp_r31; float temp_f26; float temp_f28; float temp_f27; float temp_f29; float temp_f30; float var_f31; s32 var_r28; s32 var_r30; s32 var_r29; s32 var_r27; HuAudFXPlay(0x5E5); temp_r31 = &lbl_1_bss_200[lbl_1_bss_5AC]; CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[4], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); var_r27 = 180; temp_f29 = ((CenterM->z - 687.0f) / var_r27) * 40.0f / 60.0f; temp_f26 = ((CenterM->z - 687.0f) / var_r27) * 20.0f / 60.0f; temp_f30 = CenterM->y; for (var_r30 = 0; var_r30 < 3; var_r30++) { for (var_r29 = 30, var_f31 = 0.0f; var_r29 != 0; var_r29--, var_f31 += 3.0f) { CenterM->y = temp_f30 + 50.0 * sind(var_f31); CenterM->z -= 2.0f * temp_f29; HuPrcVSleep(); } for (var_r29 = 20, var_f31 = 90.0f; var_r29 != 0; var_r29--, var_f31 += 4.5f) { CenterM->y = temp_f30 + 50.0 * sind(var_f31); CenterM->z -= 2.0f * temp_f26 * 1.5f; HuPrcVSleep(); } HuAudFXPlay(0x5DF); for (var_r28 = 0; var_r28 < 4; var_r28++) { omVibrate(var_r28, 12, 12, 0); } HuPrcSleep(5); for (var_r29 = 10, var_f31 = 180.0f; var_r29 != 0; var_r29--, var_f31 += 18.0f) { CenterM->y = temp_f30 + 10.0 * sind(var_f31); HuPrcVSleep(); } HuPrcSleep(10); } HuPrcChildCreate(fn_1_F73C, 0x2000, 0x1000, 0, HuPrcCurrentGet()); temp_f28 = CRotM->x; temp_f30 = CenterM->y; temp_f29 = CenterM->z; temp_f27 = CZoomM[0]; for (var_r30 = 0; var_r30 < 60; var_r30++) { CRotM->x += (-45.0f - temp_f28) / 60.0f; CenterM->y += (100.0f - temp_f30) / 60.0f; CenterM->z += (70.0f - temp_f29) / 60.0f; CZoomM[0] += (2130.0f - temp_f27) / 60.0f; HuPrcVSleep(); } HuAudFXPlay(0x5DF); for (var_r28 = 0; var_r28 < 4; var_r28++) { omVibrate(var_r28, 12, 12, 0); } Hu3DModelAttrSet(lbl_1_bss_5B8, 1); HuAudPlayerVoicePlay(temp_r31->unk28, 0x128); temp_r31 = &lbl_1_bss_200[lbl_1_bss_5AC]; while (Hu3DMotionEndCheck(temp_r31->unk00)) { HuPrcVSleep(); } CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[5], 0.0f, 10.0f, HU3D_MOTATTR_NONE); HuPrcSleep(15); while (Hu3DMotionEndCheck(temp_r31->unk00)) { HuPrcVSleep(); } CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[0], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(60); temp_f28 = CRotM->x; temp_f30 = CenterM->y; temp_f29 = CenterM->z; temp_f27 = CZoomM[0]; for (var_r30 = 0; var_r30 < 60; var_r30++) { CRotM->x += (-35.0f - temp_f28) / 60.0f; CenterM->y += -temp_f30 / 60.0f; CenterM->z += (-250.0f - temp_f29) / 60.0f; CZoomM[0] += (4820.0f - temp_f27) / 60.0f; HuPrcVSleep(); } HuPrcSleep(30); temp_r31 = &lbl_1_bss_200[lbl_1_bss_5AC]; CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], temp_r31->unk06[4], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); HuPrcSleep(15); while (Hu3DMotionEndCheck(temp_r31->unk00)) { HuPrcVSleep(); } CharModelMotionSpeedSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk28].character], 2.0f); } void fn_1_10258(s32 arg0) { StructBss200* var_r30; float temp_f31; float temp_f30; float temp_f29; s32 i; if (arg0 == lbl_1_bss_5AC) { HuPrcSleep(120); temp_f31 = CenterM->x; temp_f30 = CenterM->z; temp_f29 = CZoomM[0]; for (i = 0; i < 60; i++) { var_r30 = &lbl_1_bss_200[lbl_1_bss_5AC]; CenterM->x += (var_r30->unk54 - temp_f31) / 60.0f; CenterM->z += (var_r30->unk5C - 100.0f - temp_f30) / 60.0f; CZoomM[0] += (1000.0f - temp_f29) / 60.0f; HuPrcVSleep(); } for (i = 0; i < 4; i++) { if (i == lbl_1_bss_5AC) { continue; } HuAudFXStop(lbl_1_bss_594[i]); } HuAudSStreamPlay(1); Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk16, 0.0f, 5.0f, HU3D_MOTATTR_NONE); } else { for (lbl_1_bss_5A4 = 0; lbl_1_bss_5A4 < 60; lbl_1_bss_5A4++) { HuPrcVSleep(); } HuAudSStreamPlay(1); } } void fn_1_104A0(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_10500(void) { s16 temp_r28; s16 temp_r30; s16 var_r29; s32 var_r26; s32 var_r27; s32 sp8[3]; s32 i; lbl_1_bss_5B4 = 0; lbl_1_bss_5A8 = -1; fn_1_F9BC(); HuPrcSleep(30); lbl_1_bss_5B4 = 1; while (lbl_1_bss_5B4 == 1) { HuPrcVSleep(); } var_r26 = HuAudSeqPlay(0x49); temp_r30 = MGSeqStartCreate(); while (MGSeqStatGet(temp_r30) != 0) { HuPrcVSleep(); } var_r29 = 0xAC7; temp_r28 = MGSeqTimerCreate(var_r29 / 60); lbl_1_bss_5B4 = 3; while (TRUE) { if (lbl_1_bss_200[lbl_1_bss_5AC].unk24 == 1) { break; } if (var_r29 < 59) { lbl_1_bss_5A8 = lbl_1_bss_5AC; break; } MGSeqParamSet(temp_r28, 1, var_r29-- / 60); lbl_1_bss_5B0++; HuPrcVSleep(); } for (i = 0; i < 4; i++) { lbl_1_bss_200[i].unk24 = 1; } lbl_1_bss_5B4 = 4; HuAudSeqFadeOut(var_r26, 100); MGSeqParamSet(temp_r28, 2, -1); temp_r30 = MGSeqFinishCreate(); while (MGSeqStatGet(temp_r30) != 0) { HuPrcVSleep(); } fn_1_10258(lbl_1_bss_5A8); if (lbl_1_bss_5A8 == lbl_1_bss_5AC) { GWPlayerCoinWinSet(lbl_1_bss_5A8, 10); temp_r30 = MGSeqWinCreate(GWPlayerCfg[lbl_1_bss_5A8].character, -1, -1, -1); } else { for (i = 0, var_r27 = 0; i < 4; i++) { if (i != lbl_1_bss_5AC) { sp8[var_r27++] = i; GWPlayerCoinWinSet(i, 10); } } temp_r30 = MGSeqWinCreate(GWPlayerCfg[sp8[0]].character, GWPlayerCfg[sp8[1]].character, GWPlayerCfg[sp8[2]].character, -1); } HuPrcSleep(210); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); HuPrcSleep(60); HuAudFadeOut(1); MGSeqKillAll(); omOvlReturnEx(1, 1); while (TRUE) { HuPrcVSleep(); } }