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