match most of m412

This commit is contained in:
CreateSource 2024-08-02 11:44:41 -04:00
parent b548fe02d9
commit 25910aa5ba
3 changed files with 1057 additions and 134 deletions

View file

@ -8,6 +8,7 @@
#include "game/frand.h"
#include "game/hsfmotion.h"
#include "game/mapspace.h"
#include "game/minigame_seq.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/sprite.h"
@ -20,6 +21,7 @@ s16 lbl_1_bss_79C;
s16 lbl_1_bss_798[2];
s32 lbl_1_bss_794;
s32 lbl_1_bss_790;
s32 lbl_1_bss_780[4];
f32 lbl_1_bss_77C;
f32 lbl_1_bss_778;
f32 lbl_1_bss_774;
@ -137,13 +139,13 @@ void ObjectSetup(void) {
WipeCreate(1, 0, 0x3C);
}
void fn_1_6EC(f32 arg8, f32 arg9, f32 argA, s32 arg0) {
void* fn_1_6EC(f32 arg8, f32 arg9, f32 argA, s32 arg0) {
Vec sp8;
sp8.x = arg8;
sp8.y = arg9;
sp8.z = argA;
HuAudFXEmiterPlay(arg0, &sp8);
return (void*)HuAudFXEmiterPlay(arg0, &sp8);
}
void fn_1_73C(void) {
@ -1247,17 +1249,14 @@ s32 fn_1_53F4(unkStruct3* arg0, f32 arg8, f32 arg9, f32 argA) {
unkStruct3* temp_r31;
var_r28 = -1;
var_r30 = 0;
var_f28 = 10000.0f;
for (;var_r30 < 4; var_r30++) {
for (var_r30 = 0, var_f28 = 10000.0f; var_r30 < 4; var_r30++) {
if (var_r30 != arg0->unk24) {
temp_r31 = &lbl_1_bss_4D4[var_r30];
HuSetVecF(&sp30, arg8, arg9, argA);
HuSetVecF(&sp24, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
HuSubVecF(&sp18, &sp30, &sp24);
var_f27 = sqrtf((sp18.z * sp18.z) + ((sp18.x * sp18.x) + (sp18.y * sp18.y)));
if ((var_f27 < (arg0->unk60.x + temp_r31->unk60.x)) && (var_f27 < var_f28)) {
if (((var_f27 = sqrtf((sp18.z * sp18.z) + ((sp18.x * sp18.x) + (sp18.y * sp18.y)))) < (arg0->unk60.x + temp_r31->unk60.x)) && (var_f27 < var_f28)) {
var_f28 = var_f27;
var_r28 = var_r30;
arg0->unkA4 = 0;
@ -1289,8 +1288,7 @@ s32 fn_1_561C(unkStruct3* arg0, s32* arg1) {
HuSetVecF(&sp24, arg0->unk40.x, arg0->unk40.y, arg0->unk40.z);
HuSetVecF(&sp18, temp_r30->unk40.x, temp_r30->unk40.y, temp_r30->unk40.z);
HuSubVecF(&spC, &sp24, &sp18);
var_f27 = sqrtf((spC.z * spC.z) + ((spC.x * spC.x) + (spC.y * spC.y)));
if (var_f27 < (arg0->unk60.x + temp_r30->unk60.x)) {
if ((var_f27 = sqrtf((spC.z * spC.z) + ((spC.x * spC.x) + (spC.y * spC.y)))) < (arg0->unk60.x + temp_r30->unk60.x)) {
var_r28 += 1;
if (var_f27 < var_f28) {
var_f28 = var_f27;
@ -1302,4 +1300,921 @@ s32 fn_1_561C(unkStruct3* arg0, s32* arg1) {
}
*arg1 = var_r28;
return var_r27;
}
void fn_1_5838(unkStruct3* arg0) {
Vec spA8;
Vec sp9C;
Vec sp90;
Vec sp84;
Vec sp78;
Vec sp6C;
s32 sp68;
f32 sp64;
f32 sp60;
f32 sp5C;
f32 sp58;
f32 sp54;
f32 sp50;
f32 sp4C;
f32 var_f20;
f32 var_f25;
f32 var_f27;
f32 var_f26;
s32 var_r25;
s32 var_r29;
unkStruct3* temp_r27;
unkStruct3* var_r30;
s32 var_r24;
var_r24 = fn_1_561C(arg0, &sp68);
if (var_r24 != -1) {
var_f20 = fn_1_1D08(atan2d((arg0->unk40.x - arg0->unk4C.x), (arg0->unk40.z - arg0->unk4C.y)));
sp58 = var_f27 = arg0->unk4C.x;
sp54 = var_f26 = arg0->unk4C.y;
sp4C = 1.0f;
var_r25 = (1.0f + (10.0f / sp4C));
while (var_r25 != 0) {
var_f27 += sp4C * sind(var_f20);
var_f26 += sp4C * cosd(var_f20);
HuSetVecF(&spA8, var_f27, arg0->unk40.y, var_f26);
for (var_r29 = 0; var_r29 < 4; var_r29++) {
if (var_r29 == arg0->unk24) continue;
var_r30 = &lbl_1_bss_4D4[var_r29];
HuSetVecF(&sp9C, var_r30->unk40.x, var_r30->unk40.y, var_r30->unk40.z);
HuSubVecF(&sp90, &spA8, &sp9C);
if (sqrtf((sp90.z * sp90.z) + ((sp90.x * sp90.x) + (sp90.y * sp90.y))) < (arg0->unk60.x + var_r30->unk60.x))
break;
}
if (var_r29 < 4) break;
AddX = 0.0f;
AddZ = 0.0f;
MapWall(arg0->unk60.x, var_f27, arg0->unk40.y + arg0->unk60.x, var_f26);
if ((AddX + AddZ) != 0.0f) goto end;
sp58 = var_f27;
sp54 = var_f26;
var_r25--;
}
var_f20 = fn_1_1D08(atan2d((arg0->unk40.x - arg0->unk4C.x), (arg0->unk40.z - arg0->unk4C.y)));
var_f25 = fn_1_1D08(atan2d((var_r30->unk40.x - arg0->unk4C.x), (var_r30->unk40.z - arg0->unk4C.y)));
sp60 = var_f20 - var_f25;
if (sp60 > 0.0f) {
sp5C = -0.5f;
} else {
sp5C = 0.5f;
}
if (ABS_INV(var_f20 - var_f25) > 180.0f) {
sp5C = -sp5C;
}
var_f25 = fn_1_1D08(atan2d((arg0->unk4C.x - var_r30->unk40.x), (arg0->unk4C.y - var_r30->unk40.z)));
sp50 = 0.8f * arg0->unk60.y;
var_r24 = var_r30->unk24;
sp64 = 1.0f + (arg0->unk60.x + var_r30->unk60.x);
while (1) {
var_f27 = (var_r30->unk40.x + (sp64 * sind(var_f25)));
var_f26 = (var_r30->unk40.z + (sp64 * cosd(var_f25)));
HuSetVecF(&spA8, var_f27, 0.0, var_f26);
for (var_r29 = 0; var_r29 < 4; var_r29++) {
if ((var_r29 == arg0->unk24) || (var_r29 == var_r24)) continue;
temp_r27 = &lbl_1_bss_4D4[var_r29];
HuSetVecF(&sp9C, temp_r27->unk40.x, 0.0, temp_r27->unk40.z);
HuSubVecF(&sp90, &spA8, &sp9C);
if (sqrtf((sp90.x * sp90.x) + (sp90.z * sp90.z)) < (arg0->unk60.x + temp_r27->unk60.x)) break;
}
if (var_r29 < 4) break;
AddX = 0.0f;
AddZ = 0.0f;
MapWall(arg0->unk60.x, var_f27, arg0->unk40.y + arg0->unk60.x, var_f26);
if ((AddX + AddZ) != 0.0f) break;
sp58 = var_f27;
sp54 = var_f26;
HuSetVecF(&spA8, arg0->unk4C.x, 0.0, arg0->unk4C.y);
HuSetVecF(&sp9C, var_f27, 0.0, var_f26);
HuSubVecF(&sp90, &spA8, &sp9C);
if (sqrtf((sp90.x * sp90.x) + (sp90.z * sp90.z)) > sp50) break;
var_f25 += sp5C;
}
end:
arg0->unk40.x = sp58;
arg0->unk40.z = sp54;
}
}
f32 fn_1_6594(f32 arg8, f32 arg9, f32 argA) {
f32 var_f30;
f32 var_f31;
var_f31 = fmod((arg9 - arg8), 360.0);
if (0.0f > var_f31) {
var_f31 += 360.0f;
}
if (180.0f < var_f31) {
var_f31 -= 360.0f;
}
var_f30 = fmod((arg8 + (var_f31 * argA)), 360.0);
if (0.0f > var_f30) {
var_f30 += 360.0f;
}
return var_f30;
}
f32 fn_1_6698(f32 arg8, f32 arg9, unkStruct3* arg0) {
Vec sp2C;
Vec sp20;
Vec sp14;
HuSetVecF(&sp2C, arg8, 0.0, arg9);
HuSetVecF(&sp20, arg0->unk40.x, 0.0, arg0->unk40.z);
HuSubVecF(&sp14, &sp2C, &sp20);
return sqrtf((sp14.x * sp14.x) + (sp14.z * sp14.z));
}
// fn_1_6814: https://decomp.me/scratch/WQPjD
void fn_1_6814(unkStruct3* arg0) {
Vec sp104;
Vec spF8;
Vec spEC;
Vec spE0;
Vec spD4;
Vec spC8;
f32 spBC;
f32 spB0;
f32 spA4;
volatile f32 spA0;
f32 sp9C;
f32 sp98;
f32 var_f27; // probably debug code
f32 var_f18;
f32 temp_f31;
f32 temp_f30;
f32 var_f29;
s32 var_r22;
s32 var_r21;
s32 var_r20;
unkStruct* temp_r27;
s32 var_r28;
unkStruct3* temp_r29;
unkStruct* var_r30;
arg0->unk88 = arg0->unk89 = 0;
arg0->unk8B = arg0->unk8A = 0;
arg0->unk8C = arg0->unk8E = 0;
switch (GWPlayerCfg[arg0->unk24].diff) {
case 0:
var_r22 = 0x3C;
break;
case 1:
var_r22 = 0x50;
break;
case 2:
var_r22 = 0x5A;
break;
default:
var_r22 = 0x5F;
break;
}
switch (GWPlayerCfg[arg0->unk24].diff) {
case 0:
spA0 = 200.0f;
break;
case 1:
spA0 = 250.0f;
break;
case 2:
spA0 = 300.0f;
break;
default:
spA0 = 350.0f;
break;
}
for (var_r28 = 0, sp98 = 10000.0f; var_r28 < 0x20; var_r28++) {
temp_r27 = lbl_1_bss_278[var_r28];
if (temp_r27 && (temp_r27->unk6 != -1)) {
HuSetVecF(&sp104, arg0->unk40.x, 0.0, arg0->unk40.z);
HuSetVecF(&spF8, temp_r27->unk10.x, 0.0, temp_r27->unk10.z);
HuSubVecF(&spEC, &sp104, &spF8);
var_f29 = sqrtf((spEC.z * spEC.z) + ((spEC.x * spEC.x) + (spEC.y * spEC.y)));
if ((var_f29 < (spA0 + (arg0->unk60.x + temp_r27->unk30))) && (sp98 > var_f29)) {
var_r30 = temp_r27;
sp98 = var_f29;
}
}
}
if (sp98 < 10000.0f) {
arg0->unk9C = 0;
var_r21 = 1;
if (arg0->unkA0 != var_r30->unk6) {
if (frandmod(0x64) < 0) {
(void)var_r21; // probably debug code
} else {
(void)var_r21;
}
}
if (var_r21 != 0) {
sp9C = 200.0f + (var_r30->unk30 + arg0->unk60.x) + (100.0f * frandf());
sp104.x = temp_f31 = (var_r30->unk10.x + (sp9C * sind(var_r30->unk24.x + 90.0f)));
sp104.z = temp_f30 = (var_r30->unk10.z + (sp9C * cosd(var_r30->unk24.x + 90.0f)));
var_f29 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
spF8.x = temp_f31 = (var_r30->unk10.x + (sp9C * sind(var_r30->unk24.x - 90.0f)));
spF8.z = temp_f30 = (var_r30->unk10.z + (sp9C * cosd(var_r30->unk24.x - 90.0f)));
spA0 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
if (sqrtf((arg0->unk40.x * arg0->unk40.x) + (arg0->unk40.z * arg0->unk40.z)) < 400.0f) {
spEC.x = var_f29;
var_f29 = spA0;
spA0 = spEC.x;
}
if (var_f29 > spA0) {
spEC.x = spF8.x;
spEC.z = spF8.z;
} else {
spEC.x = sp104.x;
spEC.z = sp104.z;
}
if (arg0->unkA0 != var_r30->unk6) {
arg0->unkA0 = var_r30->unk6;
arg0->unk90.x = spEC.x;
arg0->unk90.y = spEC.z;
}
var_f18 = atan2d((arg0->unk90.x - arg0->unk40.x), (arg0->unk90.y - arg0->unk40.z));
if (fn_1_53F4(arg0, arg0->unk40.x + arg0->unk7C.x, arg0->unk40.y, arg0->unk40.z + arg0->unk7C.z) != -1) {
var_f18 += 90.0f;
}
arg0->unk88 = 50.0 * sind(var_f18);
arg0->unk89 = -50.0f * cosd(var_f18);
}
} else {
if (arg0->unk9C == 0) {
arg0->unk9C = 1;
arg0->unk98 = (250.0f + (90.0f * frandf()));
arg0->unkA4 = 30;
}
if ((sqrtf((arg0->unk40.x * arg0->unk40.x) + (arg0->unk40.z * arg0->unk40.z)) > arg0->unk98) && (arg0->unkA4 != 0)) {
arg0->unkA4--;
var_f18 = (180.0 + (atan2d(arg0->unk40.x, arg0->unk40.z)));
if (fn_1_53F4(arg0, arg0->unk40.x + arg0->unk7C.x, arg0->unk40.y, arg0->unk40.z + arg0->unk7C.z) != -1) {
arg0->unkA4 = 0;
var_f18 += 90.0f;
}
arg0->unk88 = 25.0 * sind(var_f18);
arg0->unk89 = -25.0 * cosd(var_f18);
return;
}
var_r28 = 0;
sp98 = 10000.0f;
var_r20 = -1;
for (;var_r28 < 4; var_r28++) {
if (var_r28 != arg0->unk24) {
temp_r29 = &lbl_1_bss_4D4[var_r28];
HuSetVecF(&sp104, arg0->unk40.x, 0.0, arg0->unk40.z);
HuSetVecF(&spF8, temp_r29->unk40.x, 0.0, temp_r29->unk40.z);
HuSubVecF(&spEC, &sp104, &spF8);
var_f29 = sqrtf((spEC.z * spEC.z) + ((spEC.x * spEC.x) + (spEC.y * spEC.y)));
if (var_f29 < sp98) {
var_r20 = var_r28;
sp98 = var_f29;
}
}
}
if (var_r20 != -1) {
temp_r29 = &lbl_1_bss_4D4[var_r20];
HuSetVecF(&sp104, arg0->unk40.x, 0.0, arg0->unk40.z);
HuSetVecF(&spF8, temp_r29->unk40.x, 0.0, temp_r29->unk40.z);
HuSubVecF(&spEC, &sp104, &spF8);
var_f29 = sqrtf((spEC.x * spEC.x) + (spEC.z * spEC.z));
if ((var_f29 < 200.0f) && (var_f29 > 150.0f)) {
var_f18 = atan2d((arg0->unk40.x - temp_r29->unk40.x), (arg0->unk40.z - temp_r29->unk40.z));
(void)var_f29;
arg0->unk88 = 30.0f * sind(var_f18);
arg0->unk89 = -30.0f * cosd(var_f18);
}
}
}
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
(void)var_f27;
}
// fn_1_7C60: https://decomp.me/scratch/eMCi6
void fn_1_7C60(void) {
Vec sp1A0;
Vec sp188;
Vec sp17C;
Vec sp170;
Vec sp164;
Vec sp158;
Vec sp14C;
Vec sp140;
f32 sp13C;
f32 sp138;
f32 sp134;
f32 sp130;
f32 sp12C;
f32 sp128;
f32 sp124;
s32 sp120;
f32 sp11C;
f32 sp118;
f32 sp114;
f32 sp110;
f32 sp10C;
f32 sp108;
f32 sp104;
f32 sp100;
f32 spFC;
f32 spF8;
f32 spF4;
f32 spF0;
s32 spEC;
f32 spE8;
f32 spE4;
s32 spE0;
f32 spDC;
f32 spD8;
f32 spD4;
f32 spD0;
f32 spCC;
f32 spC8;
f32 spC4;
f32 spC0;
f32 spBC;
f32 spB8;
f32 temp_f20;
f32 var_f21;
f32 var_f31;
s32 var_r27;
unkStruct3* temp_r30;
unkStruct3* temp_r31;
temp_r31 = HuPrcCurrentGet()->user_data;
temp_r31->unk30 = 0;
temp_r31->unk9C = 0;
temp_r31->unkA0 = -1;
while (lbl_1_bss_794 == 0) {
HuPrcVSleep();
}
lbl_1_bss_794 = 2;
while (lbl_1_bss_794 == 2) {
HuPrcVSleep();
}
loop_6:
temp_r31->unk4C.x = temp_r31->unk40.x;
temp_r31->unk4C.y = temp_r31->unk40.z;
if (GWPlayerCfg[temp_r31->unk24].iscom == 1) {
fn_1_6814(temp_r31);
}
switch (temp_r31->unk30) {
default:
HuSetVecF(&temp_r31->unk24, fn_1_4E58(temp_r31->unk24, 0) * 0.25f, 0.0, -fn_1_4E58(temp_r31->unk24, 1) * 0.25f);
temp_r31->unk60.z = sqrtf((sp1A0.z * sp1A0.z) + ((sp1A0.x * sp1A0.x) + (sp1A0.y * sp1A0.y)));
if (temp_r31->unk60.z >= 0.5f) {
if (temp_r31->unk60.z >= 10.0f) {
sp1A0.x /= temp_r31->unk60.z;
sp1A0.z /= temp_r31->unk60.z;
temp_r31->unk60.z = 10.0f;
sp1A0.x = 10.0f * sp1A0.x;
sp1A0.z = 10.0f * sp1A0.z;
}
temp_r31->unk54.y = fn_1_6594(temp_r31->unk54.y, atan2d(sp1A0.x, sp1A0.z), 0.4f);
if (temp_r31->unk60.z >= 8.0f) {
if (temp_r31->unk30 != 2) {
temp_r31->unk30 = 2;
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[2], 0.0f, 8.0f, 0x40000001U);
Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[2], 0.0f, 8.0f, 0x40000001U);
}
} else if (temp_r31->unk30 != 1) {
temp_r31->unk30 = 1;
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[1], 0.0f, 8.0f, 0x40000001U);
Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[1], 0.0f, 8.0f, 0x40000001U);
}
temp_r31->unk7C.x += 0.1f * sp1A0.x;
temp_r31->unk7C.z += 0.1f * sp1A0.z;
} else if (temp_r31->unk30 != 0) {
temp_r31->unk30 = 0;
CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[0]);
Hu3DModelAttrSet(temp_r31->unk0, 0x40000001);
Hu3DMotionSet(temp_r31->unk2, temp_r31->unk18[0]);
Hu3DMotionSpeedSet(temp_r31->unk2, 2.0f);
Hu3DModelAttrSet(temp_r31->unk2, 0x40000001);
}
var_f21 = sqrtf((temp_r31->unk7C.x * temp_r31->unk7C.x) + (temp_r31->unk7C.z * temp_r31->unk7C.z));
if (temp_r31->unk60.z > 0.5f) {
if (var_f21 > 0.25f) {
var_f21 -= 0.25f;
}
} else {
var_f21 -= 0.25f;
}
if (var_f21 < 0.0f) {
HuSetVecF(&temp_r31->unk7C, 0.0, 0.0, 0.0);
var_f21 = 0.0f;
} else {
if (var_f21 > 10.0f) {
var_f21 = 10.0f;
}
sp13C = fn_1_1D08(atan2d(temp_r31->unk7C.x, temp_r31->unk7C.z));
HuSetVecF(&temp_r31->unk7C, (var_f21 * sind(sp13C)), 0.0, (var_f21 * cosd(sp13C)));
}
temp_r31->unk60.y = var_f21;
temp_r31->unk40.x += temp_r31->unk7C.x;
temp_r31->unk40.z += temp_r31->unk7C.z;
temp_r31->unk38 = fn_1_53F4(temp_r31, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
if (temp_r31->unk38 != -1) {
temp_r30 = &lbl_1_bss_4D4[temp_r31->unk38];
if (temp_r30->unk30 != 3) {
var_f31 = atan2d((temp_r30->unk40.x - temp_r31->unk40.x), (temp_r30->unk40.z - temp_r31->unk40.z));
temp_f20 = atan2d(temp_r31->unk7C.x, temp_r31->unk7C.z);
var_f31 = ABS_INV(var_f31 - temp_f20);
if (var_f31 > 180.0f) {
var_f31 = 360.0f - var_f31;
}
sp138 = var_f31 / 90.0f;
var_f31 = atan2d((temp_r31->unk40.x - temp_r30->unk40.x), (temp_r31->unk40.z - temp_r30->unk40.z));
temp_f20 = atan2d(temp_r31->unk7C.x, temp_r31->unk7C.z);
temp_f20 = fn_1_1D08(180.0f + temp_f20);
temp_f20 = fn_1_1D08(var_f31 - (temp_f20 - var_f31));
var_f31 = fn_1_1D08(atan2d((temp_r30->unk40.x - temp_r31->unk40.x), (temp_r30->unk40.z - temp_r31->unk40.z)));
HuSetVecF(&sp1A0, temp_r31->unk7C.x, 0.0, temp_r31->unk7C.z);
spBC = sqrtf((sp1A0.x * sp1A0.x) + (sp1A0.z * sp1A0.z));
spBC *= (1.0f - sp138);
sp1A0.x = spBC * sind(var_f31);
sp1A0.z = spBC * cosd(var_f31);
HuSetVecF(&temp_r30->unk7C, sp1A0.x, 0.0, sp1A0.z);
HuSetVecF(&sp1A0, temp_r31->unk7C.x, 0.0, temp_r31->unk7C.z);
spB8 = sqrtf((sp1A0.x * sp1A0.x) + (sp1A0.z * sp1A0.z));
spB8 *= sp138;
sp1A0.x = spB8 * sind(temp_f20);
sp1A0.z = spB8 * cosd(temp_f20);
HuSetVecF(&temp_r31->unk7C, sp1A0.x, 0.0, sp1A0.z);
}
fn_1_5838(temp_r31);
}
while (1) {
AddX = 0.0f;
AddZ = 0.0f;
MapWall(temp_r31->unk60.x, temp_r31->unk40.x, temp_r31->unk40.y + temp_r31->unk60.x, temp_r31->unk40.z);
temp_r31->unk40.x += AddX;
temp_r31->unk40.z += AddZ;
if ((temp_r31->unk38 = fn_1_53F4(temp_r31, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z)) == -1) break;
temp_r31->unk40.x = temp_r31->unk4C.x;
temp_r31->unk40.z = temp_r31->unk4C.y;
}
Hu3DModelPosSet(temp_r31->unk0, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
Hu3DModelRotSet(temp_r31->unk0, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z);
Hu3DModelPosSet(temp_r31->unk2, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
Hu3DModelRotSet(temp_r31->unk2, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z);
HuPrcVSleep();
goto loop_6;
case 3:
HuAudFXPlay(0x584);
Hu3DModelAttrSet(temp_r31->unk0, 0x40000002);
Hu3DModelAttrSet(temp_r31->unk2, 0x40000002);
Hu3DModelPosSet(temp_r31->unkA, temp_r31->unk40.x + (100.0 * sind(lbl_1_bss_778)), 200.0f + temp_r31->unk40.y, temp_r31->unk40.z + (100.0 * cosd(lbl_1_bss_778)));
Hu3DModelAttrReset(temp_r31->unkA, 1);
Hu3DModelAttrReset(temp_r31->unkA, 0x40000002);
HuPrcSleep(10);
Hu3DModelAttrSet(temp_r31->unk0, 0x40000002);
Hu3DModelAttrSet(temp_r31->unk2, 0x40000002);
HuPrcSleep(10);
Hu3DModelPosSet(temp_r31->unk6, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
Hu3DModelPosSet(temp_r31->unk8, temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
Hu3DModelAttrReset(temp_r31->unk6, 1);
Hu3DModelAttrReset(temp_r31->unk8, 1);
Hu3DModelShadowDispOn(temp_r31->unk6);
for (sp134 = 0.0f, sp130 = 1.0f; sp134 < 1; sp134 += 0.05f, sp130 -= 0.1f) {
Hu3DModelScaleSet(temp_r31->unk6, 1.0f, sp134, 1.0f);
Hu3DModelScaleSet(temp_r31->unk8, 1.0f, -sp134, 1.0f);
if (sp130 > 0.0f) {
Hu3DModelAmbSet(temp_r31->unk0, sp130, sp130, 1.0f);
}
HuPrcVSleep();
}
Hu3DModelScaleSet(temp_r31->unk6, 1.0f, 1.0f, 1.0f);
Hu3DModelScaleSet(temp_r31->unk8, 1.0f, -1.0f, 1.0f);
while (1) {
HuPrcVSleep();
}
case 4:
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[0], 0.0f, 5.0f, 0x40000001U);
Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[0], 0.0f, 5.0f, 0x40000001);
var_r27 = 30;
sp12C = fn_1_27C4(var_r27, lbl_1_bss_778, temp_r31->unk54.y);
for (;var_r27 != 0; var_r27--) {
temp_r31->unk54.y += sp12C;
Hu3DModelRotSet(temp_r31->unk0, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z);
Hu3DModelRotSet(temp_r31->unk2, temp_r31->unk54.x, temp_r31->unk54.y, temp_r31->unk54.z);
HuPrcVSleep();
}
while (lbl_1_bss_794 < 5) {
HuPrcVSleep();
}
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk24].character], temp_r31->unkC[5], 0.0f, 5.0f, 0U);
Hu3DMotionShiftSet(temp_r31->unk2, temp_r31->unk18[5], 0.0f, 5.0f, 0);
while (1) {
HuPrcVSleep();
}
}
}
void fn_1_A01C(ModelData* model, ParticleData* particle, f32 (*matrix)[4]) {
HsfanimStruct01* var_r31;
f32 var_f29;
f32 var_f28;
f32 var_f30;
f32 var_f31;
s16 var_r25;
s16 var_r24;
s16 var_r26;
s16 var_r28;
s32 var_r27;
unkStruct* temp_r30;
if (particle->unk_34 == 0) {
var_r31 = particle->unk_48;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
var_r31->unk14.x = var_r31->unk2C = 0.0f;
}
}
var_r31 = particle->unk_48;
for (var_r26 = 0; var_r26 < 0x20; var_r26++) {
temp_r30 = lbl_1_bss_278[var_r26];
if (temp_r30 && (temp_r30->unkA != 0)) {
for (var_r25 = 0, var_f30 = 0.0f; var_r25 < 4; var_r25++, var_f30 += 45.0f) {
for (var_r24 = 0, var_f31 = 0.0f; var_r24 < 8; var_r24++, var_f31 += 45.0f) {
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
if (var_r31->unk14.x == 0.0f) break;
}
if (var_r28 == particle->unk_30) break;
if (temp_r30->unkC == 1) {
var_f29 = 2.0f + (2.0f * frandf());
var_f28 = 10.0f;
} else {
var_f29 = 1.0f + frandf();
var_f28 = 3.0f;
}
var_r31->unk34.x = temp_r30->unk10.x + (var_f29 * (sind(var_f30) * cosd(var_f31)));
var_r31->unk34.y = temp_r30->unk10.y + (var_f29 * sind(var_f31));
var_r31->unk34.z = (temp_r30->unk10.z + (var_f29 * (cosd(var_f30) * cosd(var_f31))));
var_r31->unk08.x = (var_f28 * (sind(var_f30) * cosd(var_f31)));
var_r31->unk08.y = (var_f28 * sind(var_f31));
var_r31->unk08.z = (var_f28 * (cosd(var_f30) * cosd(var_f31)));
var_r31->unk14.x = 30.0f;
if (temp_r30->unkC == 1) {
var_r31->unk2C = 20.0f + (2.0f * frandf());
var_r31->unk14.y = 0.0f;
} else {
var_r31->unk2C = 15.0f;
var_r31->unk14.y = 0.0f;
}
var_r31->unk40.a = 0xFF;
var_r31->unk14.z = 20.0f;
}
}
temp_r30->unkA++;
}
}
var_r31 = particle->unk_48;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
if (var_r31->unk14.x != 0.0f) {
PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34);
var_r31->unk08.x *= 0.95f;
var_r31->unk08.z *= 0.95f;
var_r31->unk08.y -= 0.2f;
var_r31->unk2C += var_r31->unk14.y;
var_r27 = var_r31->unk40.a;
var_r27 -= var_r31->unk14.z;
if (var_r31->unk14.z > 3.0f) {
var_r31->unk14.z -= 1.0f;
}
if (var_r27 < 0) {
var_r27 = 0;
var_r31->unk14.x = 0.0f;
}
var_r31->unk40.a = var_r27;
if (var_r31->unk14.x == 0.0f) {
var_r31->unk2C = 0.0f;
}
}
}
}
void fn_1_A618(ModelData* model, ParticleData* particle, f32 (*matrix)[4]) {
HsfanimStruct01* var_r31;
f32 var_f31;
f32 var_f30;
f32 var_f29;
f32 var_f28;
s16 var_r26;
s16 var_r25;
s16 var_r29;
s32 var_r27;
unkStruct* temp_r28;
if (particle->unk_34 == 0) {
var_r31 = particle->unk_48;
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
var_r31->unk14.x = var_r31->unk2C = 0.0f;
}
}
var_r31 = particle->unk_48;
for (var_r26 = 0; var_r26 < 0x20; var_r26++) {
temp_r28 = lbl_1_bss_278[var_r26];
if (temp_r28 && (temp_r28->unkA != 0)) {
for (var_r25 = 0, var_f28 = 0.0f; var_r25 < 9; var_r25++, var_f28 += 45.0f) {
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
if (var_r31->unk14.x == 0.0f) break;
}
if (var_r29 == particle->unk_30) break;
var_f31 = var_f28;
if (var_r25 < 8) {
var_f30 = 1.0f + frandf();
var_f29 = 2.0f;
} else {
var_f30 = var_f29 = 0.0f;
}
var_r31->unk34.x = temp_r28->unk10.x + (var_f30 * sind(var_f31));
var_r31->unk34.y = temp_r28->unk10.y + (10.0f * frandf());
var_r31->unk34.z = temp_r28->unk10.z + (var_f30 * cosd(var_f31));
var_r31->unk08.x = var_f29 * sind(var_f31);
var_r31->unk08.y = -1.0f + frandf();
var_r31->unk08.z = var_f29 * cosd(var_f31);
var_r31->unk14.x = 30.0f;
var_r31->unk2C = 15.0f;
var_r31->unk14.y = 1.5f;
var_r31->unk40.a = 0xC8;
var_r31->unk14.z = 17.0f;
}
temp_r28->unkA = 0;
}
}
var_r31 = particle->unk_48;
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
if (0.0f != var_r31->unk14.x) {
PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34);
var_r31->unk08.x *= 0.95f;
var_r31->unk08.z *= 0.95f;
var_r31->unk08.y -= 0.2f;
var_r31->unk2C += var_r31->unk14.y;
var_r27 = var_r31->unk40.a;
var_r27 -= var_r31->unk14.z;
if (var_r31->unk14.z > 3.0f) {
var_r31->unk14.z -= 1.0f;
}
if (var_r27 < 0) {
var_r27 = 0;
var_r31->unk14.x = 0.0f;
}
var_r31->unk40.a = var_r27;
if (0.0f == var_r31->unk14.x) {
var_r31->unk2C = 0.0f;
}
}
}
}
void fn_1_AA88(ModelData* model, ParticleData* particle, f32 (*matrix)[4]) {
HsfanimStruct01* var_r31;
f32 var_f31;
s16 var_r27;
s16 var_r28;
unkStruct2* temp_r29;
if (particle->unk_34 == 0) {
var_r31 = particle->unk_48;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
var_r31->unk14.x = var_r31->unk2C = 0.0f;
}
}
var_r31 = particle->unk_48;
for (var_r27 = 0; var_r27 < 6; var_r27++) {
temp_r29 = &lbl_1_bss_33C[var_r27];
if (temp_r29->unk20 == 0) continue;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
if (var_r31->unk14.x == 0.0f) break;
}
if (var_r28 == particle->unk_30) break;
var_r31->unk34.x = temp_r29->unk2C.x + (-100.0 * cosd(temp_r29->unk38.y));
var_r31->unk34.y = 98.0f + temp_r29->unk2C.y;
var_r31->unk34.z = temp_r29->unk2C.z + (100.0 * sind(temp_r29->unk38.y));
var_r31->unk14.x = 30.0f;
var_r31->unk2C = 80.0f;
var_r31->unk14.y = 5.0f;
var_r31->unk40.a = 0xC8;
var_r31->unk14.z = 17.0f;
temp_r29->unk20 = 0;
}
var_r31 = particle->unk_48;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
if (0.0f != var_r31->unk14.x) {
var_r31->unk2C += var_r31->unk14.y;
if (var_r31->unk14.y > 2.0f) {
var_r31->unk14.y -= 0.2f;
}
var_f31 = var_r31->unk40.a;
var_f31 -= var_r31->unk14.z;
if (var_r31->unk14.z > 3.0f) {
var_r31->unk14.z -= 1.0f;
}
if (var_f31 < 0.0f) {
var_f31 = 0.0f;
var_r31->unk14.x = 0.0f;
}
var_r31->unk40.a = var_f31;
if (var_r31->unk14.x == 0.0f) {
var_r31->unk2C = 0.0f;
}
}
}
}
void fn_1_ADC8(void) {
Vec sp14;
Vec sp8;
f32 var_f31;
void* temp_r28;
Process* var_r29;
s32 var_r31;
unkStruct3* temp_r30;
fn_1_6EC(1465.0f, 770.0f, -2400.0f, 0x588);
HuAudFXPlay(0x58B);
var_r31 = 0;
var_f31 = Hu3DMotionMaxTimeGet(lbl_1_bss_79E);
for (; var_f31; var_r31++, var_f31--) {
if (var_r31 == 0x33) {
Hu3DModelAttrReset(lbl_1_bss_798[0], 0x40000002);
Hu3DModelAttrReset(lbl_1_bss_798[0], 1);
Hu3DModelPosSet(lbl_1_bss_798[0], 1465.0f, 770.0f, -2400.0f);
}
if (var_r31 == 0x47) {
Hu3DModelAttrReset(lbl_1_bss_798[1], 0x40000002);
Hu3DModelAttrReset(lbl_1_bss_798[1], 1);
Hu3DModelPosSet(lbl_1_bss_798[1], 1531.0f, 773.0f, -2380.0f);
}
if (var_r31 == 0x82) {
temp_r28 = fn_1_6EC(1465.0f, 770.0f, -2400.0f, 0x580);
var_r29 = HuPrcChildCreate(fn_1_7BC, 0x2000, 0x1000, 0, HuPrcCurrentGet());
var_r29->user_data = temp_r28;
}
if (var_f31 == 90.0f) {
for (var_r31 = 0; var_r31 < 4; var_r31++) {
temp_r30 = &lbl_1_bss_4D4[var_r31];
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[var_r31].character], temp_r30->unkC[3], 0.0f, 5.0f, 0U);
Hu3DMotionShiftSet(temp_r30->unk2, temp_r30->unk18[3], 0.0f, 5.0f, 0U);
}
}
HuPrcVSleep();
}
HuPrcSleep(30);
for (var_r31 = 0; var_r31 < 4; var_r31++) {
temp_r30 = &lbl_1_bss_4D4[var_r31];
HuAudPlayerVoicePlay(temp_r30->unk24, 0x128);
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[var_r31].character], temp_r30->unkC[4], 0.0f, 5.0f, 0U);
Hu3DMotionShiftSet(temp_r30->unk2, temp_r30->unk18[4], 0.0f, 5.0f, 0U);
}
}
void fn_1_B13C(void) {
HuPrcSleep(0x1E);
}
void fn_1_B160(void) {
while (1) {
while (1) {
if (omSysExitReq != 1) break;
WipeCreate(2, 0, 0x3C);
HuAudFadeOut(0x3E8);
HuPrcSleep(0x3C);
MGSeqKillAll();
omOvlReturnEx(1, 1);
while (1) {
HuPrcVSleep();
}
}
HuPrcVSleep();
}
}
void fn_1_B1C0(void) {
s16 temp_r27;
s16 temp_r30;
s16 var_r29;
s32 var_r26;
s32 var_r28;
s32 var_r31;
lbl_1_bss_794 = 0;
for (var_r31 = 0; var_r31 < 4; var_r31++) {
lbl_1_bss_780[var_r31] = -1;
}
HuAudFXPlay(0x57F);
fn_1_6EC(1465.0f, 770.0f, -2400.0f, 0x589);
HuPrcSleep(1);
Hu3DModelAttrSet(lbl_1_bss_2F8.unk0, 0x40000002);
Hu3DModelClusterAttrSet(lbl_1_bss_2F8.unk0, 0, -0x3FFFFFFE);
Hu3DModelAttrSet(lbl_1_bss_2F8.unk2, 0x40000002);
Hu3DModelClusterAttrSet(lbl_1_bss_2F8.unk2, 0, -0x3FFFFFFE);
HuPrcSleep(1.0f + wipeData.duration);
fn_1_ADC8();
HuPrcSleep(30);
lbl_1_bss_794 = 1;
while (lbl_1_bss_794 == 1) {
HuPrcVSleep();
}
var_r26 = HuAudSeqPlay(0x43);
temp_r30 = MGSeqCreate(3, 0);
while (MGSeqStatGet(temp_r30) != 0) {
HuPrcVSleep();
}
var_r29 = 0xE4B;
temp_r27 = MGSeqCreate(1, var_r29 / 60, -1, -1);
lbl_1_bss_794 = 3;
while (1) {
for (var_r31 = 0, var_r28 = 0; var_r31 < 4; var_r31++) {
if (lbl_1_bss_4D4[var_r31].unk30 != 3) {
var_r28++;
}
}
if ((var_r28 <= 1) || (var_r29 < 0x3B)) break;
MGSeqParamSet(temp_r27, 1, var_r29-- / 60);
lbl_1_bss_790++;
HuPrcVSleep();
}
for (var_r31 = 0; var_r31 < 4; var_r31++) {
if (lbl_1_bss_4D4[var_r31].unk30 != 3) {
lbl_1_bss_780[var_r31] = GWPlayerCfg[var_r31].character;
if (_CheckFlag(0x1000C) == 0) {
GWPlayer[var_r31].coin_win = 10;
}
}
}
for (var_r31 = 0; var_r31 < 4; var_r31++) {
lbl_1_bss_4D4[var_r31].unk30 = 4;
}
lbl_1_bss_794 = 4;
HuAudSeqFadeOut(var_r26, 0x64);
MGSeqParamSet(temp_r27, 2, -1);
temp_r30 = MGSeqCreate(3, 1);
while (MGSeqStatGet(temp_r30) != 0) {
HuPrcVSleep();
}
HuPrcSleep(30);
lbl_1_bss_794 = 5;
for (var_r31 = 0; var_r31 < 4; var_r31++) {
if (lbl_1_bss_780[var_r31] != -1) break;
}
if (var_r31 < 4) {
HuAudSStreamPlay(1);
temp_r30 = MGSeqCreate(5, 3, lbl_1_bss_780[0], lbl_1_bss_780[1], lbl_1_bss_780[2], lbl_1_bss_780[3]);
} else {
HuAudSStreamPlay(4);
temp_r30 = MGSeqCreate(3, 2);
}
HuPrcSleep(0xD2);
WipeCreate(2, 0, 0x3C);
HuPrcSleep(0x3C);
HuAudFadeOut(1);
MGSeqKillAll();
omOvlReturnEx(1, 1);
while (1) {
HuPrcVSleep();
}
}