marioparty4/src/REL/m422Dll/main.c
2024-12-17 19:31:42 -08:00

1887 lines
82 KiB
C
Executable file

#include "game/audio.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/esprite.h"
#include "game/frand.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfdraw.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/object.h"
#include "game/pad.h"
#include "game/sprite.h"
#include "game/wipe.h"
#include "ext_math.h"
#include "dolphin.h"
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ u32 unk04;
} StructBss104; // Size 4
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ float unk04[3];
} StructBss54; // Size 0x10
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 unk14;
/* 0x18 */ s32 unk18;
/* 0x1C */ s32 unk1C;
/* 0x20 */ s32 unk20;
/* 0x24 */ s32 unk24;
/* 0x28 */ float unk28;
/* 0x2C */ float unk2C;
/* 0x30 */ float unk30;
/* 0x34 */ float unk34;
/* 0x38 */ float unk38;
/* 0x3C */ float unk3C;
/* 0x40 */ s32 unk40;
} StructBss3CData; // Size 0x44
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ u32 unk08;
/* 0x0C */ float unk0C;
/* 0x10 */ float unk10;
/* 0x14 */ float unk14;
/* 0x18 */ float unk18;
/* 0x1C */ float unk1C;
/* 0x20 */ float unk20;
/* 0x24 */ float unk24;
/* 0x28 */ char unk28[4];
/* 0x2C */ s32 unk2C;
} StructDataF0; // Size 0x30
void fn_1_B480(omObjData* arg0);
StructBss104 lbl_1_bss_104[3][8];
StructBss54 lbl_1_bss_54[11];
omObjData* lbl_1_bss_50;
omObjData* lbl_1_bss_4C;
omObjData* lbl_1_bss_3C[4];
omObjData* lbl_1_bss_38;
s32 lbl_1_bss_34;
Process* lbl_1_bss_30;
s16 lbl_1_bss_2E;
s16 lbl_1_bss_2C;
s32 lbl_1_bss_28;
s32 lbl_1_bss_24;
s32 lbl_1_bss_20;
s32 lbl_1_bss_1C; // unused
s32 lbl_1_bss_18;
s32 lbl_1_bss_14;
s32 lbl_1_bss_10; // unused
s32 lbl_1_bss_C;
float lbl_1_bss_8;
float lbl_1_bss_4;
float lbl_1_bss_0;
const float lbl_1_rodata_10[12] = {
25.0f, 95.0f, 25.0f,
75.0f, 75.0f, 75.0f,
35.0f, 35.0f, 35.0f,
25.0f, 50.0f, 50.0f
};
const float lbl_1_rodata_40[12] = {
75.0f, 0.0f, 75.0f,
0.0f, 0.0f, 0.0f,
20.0f, 20.0f, 20.0f,
50.0f, 0.0f, 0.0f
};
const float lbl_1_rodata_70[12] = {
75.0f, 0.0f, 37.0f,
0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f,
70.0f, 0.0f, 0.0f
};
const float lbl_1_rodata_A0[12] = {
0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f,
75.0f, 50.0f, 0.0f
};
const float lbl_1_rodata_D0[12] = {
0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f
};
const float lbl_1_rodata_100[12] = {
30.0f, 30.0f, 30.0f,
30.0f, 30.0f, 30.0f,
40.0f, 40.0f, 40.0f,
0.0f, 0.0f, 0.0f
};
const float lbl_1_rodata_130[12] = {
290.0f, 290.0f, 290.0f,
370.0f, 370.0f, 370.0f,
450.0f, 450.0f, 450.0f,
0.0f, 0.0f, 0.0f
};
s32 lbl_1_data_0[] = {
DATA_MAKE_NUM(DATADIR_MGCONST, 41),
DATA_MAKE_NUM(DATADIR_MGCONST, 40),
DATA_MAKE_NUM(DATADIR_MGCONST, 51),
DATA_MAKE_NUM(DATADIR_MGCONST, 51),
DATA_MAKE_NUM(DATADIR_MGCONST, 8),
DATA_MAKE_NUM(DATADIR_M422, 51),
DATA_MAKE_NUM(DATADIR_MGCONST, 0),
DATA_MAKE_NUM(DATADIR_MGCONST, 37),
DATA_MAKE_NUM(DATADIR_MGCONST, 36),
DATA_MAKE_NUM(DATADIR_MGCONST, 51),
DATA_MAKE_NUM(DATADIR_MGCONST, 51),
DATA_MAKE_NUM(DATADIR_MGCONST, 8),
DATA_MAKE_NUM(DATADIR_M422, 51),
DATA_MAKE_NUM(DATADIR_MGCONST, 12),
DATA_MAKE_NUM(DATADIR_MGCONST, 12),
DATA_MAKE_NUM(DATADIR_MGCONST, 12)
};
s32 lbl_1_data_40[] = {
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x005E0000, 0x00190000, 0x006C0000, 0x00890000,
0x00840000, 0x00100000, 0x000C0000, 0x00800000
};
s32 lbl_1_data_A0[] = {
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 2),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 3),
DATA_MAKE_NUM(DATADIR_M422, 0),
DATA_MAKE_NUM(DATADIR_M422, 8),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 6),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 23),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 24)
};
u32 lbl_1_data_C0[] = { 0, 0, 0, 1, 1, 0, 0, 0 };
u8 lbl_1_data_E0[] = { 0, 0, 0, 1, 0, 1, 1 };
u8 lbl_1_data_E7[] = { 8, 8, 8, 0, 12, 0, 8, 8, 0 };
StructDataF0 lbl_1_data_F0[12][10] = { 0 };
char* lbl_1_data_1828[] = {
"m422al01-cube8",
"m422al02-cyl143",
"m422al03-cube11",
"m422am01-cyl76",
"m422am02-cube13",
"m422am03-cube12",
"m422as01-cube9",
"m422test11-cube9",
"m422test12-cube9",
"m422m09m-m422m09m",
"coin",
"m422a04-sphere2",
"m422m09m-m422m09m",
"m422m09m-m422m09m",
"m422m09m-m422m09m",
"m422m09m-m422m09m",
"m422m09m-m422m09m",
"m422m09m-m422m09m",
"m422m09m-m422m09m",
"m422m09m-m422m09m"
};
s32 lbl_1_data_1878[11] = { 0 };
s32 lbl_1_data_18A4[2] = { 0 };
s32 lbl_1_data_18AC = -1;
s32 lbl_1_data_18B0 = -1;
float lbl_1_data_18B4[][4] = {
{ 0.0f, 300.0f, 450.0f, 180.0f },
{ -200.0f, 0.0f, 1050.0f, 180.0f },
{ 0.0f, 0.0f, 1050.0f, 180.0f },
{ 200.0f, 0.0f, 1050.0f, 180.0f }
};
s32 lbl_1_data_18F4[] = { 0, 0 };
float lbl_1_data_18FC = 1.0f; // unused
s32 lbl_1_data_1900 = -1;
void fn_1_A0(void) {
Center.x += 10.0 * (((HuPadBtn[0] & 2) != 0) - ((HuPadBtn[0] & 1) != 0));
Center.z -= 10.0 * (((HuPadBtn[0] & 8) != 0) - ((HuPadBtn[0] & 4) != 0));
Center.y += ((HuPadTrigL[0] - HuPadTrigR[0]) / 128.0) * 30.0;
CRot.y += HuPadSubStkX[0] / 16.0;
CRot.x += HuPadSubStkY[0] / -16.0;
}
void fn_1_2FC(omObjData* arg0) {
Mtx sp254;
s32 sp1CC;
s32 sp1C8;
s32 sp1A4;
float sp1A0;
float sp158;
float sp154;
float sp150;
float sp14C;
float sp148;
s32 sp144;
float sp140;
float sp13C;
float sp138;
float sp134;
float sp130;
float sp12C;
float sp128;
s32 sp124;
float sp120;
float sp11C;
float sp118;
s32 var_r17;
s32 sp114;
float temp_f23;
float temp_f22;
float temp_f25;
float temp_f24;
float temp_f27;
float temp_f26;
float phi_f29;
float phi_f28;
StructDataF0* temp_r28;
StructDataF0* temp_r29;
StructBss3CData* temp_r31;
s32 var_r19;
s32 phi_r23;
s32 phi_r26;
s32 phi_r22;
s32 phi_r21;
s16 phi_r25;
s32 phi_r24;
s32 phi_r20;
s32 var_r18;
s32 i;
temp_r31 = arg0->data;
sp158 = 0.0f;
sp154 = 0.0f;
sp150 = 0.0f;
phi_r25 = -1;
if (temp_r31->unk20 == 0 || temp_r31->unk20 == 1) {
arg0->trans.z += lbl_1_bss_0;
}
temp_r31->unk2C = temp_r31->unk34 = 0.0f;
if (lbl_1_bss_34 != 1004 || !(lbl_1_bss_8 < 45.0f)) {
if (lbl_1_bss_34 >= 1004 && temp_r31->unk20 != 0) {
temp_f25 = lbl_1_data_18B4[temp_r31->unk00][0] - arg0->trans.x;
temp_f24 = lbl_1_data_18B4[temp_r31->unk00][2] - arg0->trans.z;
sp14C = 270.0 + atan2d(temp_f25, temp_f24) - CRot.y;
sp148 = sqrtf(temp_f25 * temp_f25 + temp_f24 * temp_f24);
sp148 = (sp148 > 100.0f) ? 72.0f
: (sp148 < 12.0f) ? 0.0f
: (72.0f * (sp148 / 100.0f));
sp154 = sp148 * cosd(sp14C);
sp150 = sp148 * sind(sp14C);
if (sp148 == 0.0f) {
temp_r31->unk20 = 0;
}
} else if (temp_r31->unk20 == 1) {
if (temp_r31->unk0C != -1) {
sp154 = HuPadStkX[temp_r31->unk0C];
sp150 = HuPadStkY[temp_r31->unk0C];
} else {
float sp238[7] = { 0 };
float sp21C[7] = { 0 };
float sp1EC[] = { -400.0f, -550.0f, -700.0f, -800.0f };
float sp1DC[] = { -800.0f, -900.0f, -1100.0f, -2100.0f };
Vec sp1D0;
sp154 = sp150 = 0.0f;
for (i = 0; i < 7; i++) {
sp238[i] = (temp_r31->unk00 == 0 ? 600.0f : 1400.0f) + sp1EC[temp_r31->unk10];
sp21C[i] = (temp_r31->unk00 == 0 ? 600.0f : 1400.0f) + sp1EC[temp_r31->unk10];
}
for (i = 0; i < 12; i++) {
for (phi_r23 = 0; phi_r23 < (i < 10 ? 4 : 10); phi_r23++) {
temp_r28 = &lbl_1_data_F0[i][phi_r23];
sp144 = (i < 10) ? (i * 4 + 43 + phi_r23) : ((i - 10) * 10 + 83 + phi_r23);
if (temp_r28->unk04 != 0 && !(temp_r28->unk14 < 0.0f)) {
Hu3DModelObjPosGet(lbl_1_bss_38->model[sp144], lbl_1_data_1828[temp_r28->unk00], &sp1D0);
phi_r26 = (s32) (300.0f + sp1D0.x + 2000.0f) / 100 - 20;
phi_r26--;
for (phi_r22 = 0; phi_r22 < 3; phi_r26++, phi_r22++) {
if (phi_r26 >= 0 && phi_r26 < 7
&& arg0->trans.z + 50.0f >= sp1D0.z - lbl_1_rodata_10[temp_r28->unk00] - lbl_1_rodata_70[temp_r28->unk00]
&& sp1D0.x - lbl_1_rodata_10[temp_r28->unk00] - lbl_1_rodata_70[temp_r28->unk00] - 50.0f < (phi_r26 - 3) * 100 && sp1D0.x + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00] + 50.0f > (phi_r26 - 3) * 100)
{
if (temp_r28->unk00 < 10) {
if (sp238[phi_r26] < sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00]) {
sp238[phi_r26] = sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00];
}
} else {
if (sp21C[phi_r26] < sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00]) {
sp21C[phi_r26] = sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00] + (temp_r28->unk00 < 11);
}
}
}
}
}
}
}
phi_r26 = (s32) (300.0f + arg0->trans.x + 2000.0f) / 100 - 20;
phi_r26 = (phi_r26 < 0) ? 0
: (phi_r26 >= 7) ? 6
: phi_r26;
for (i = 0, phi_r22 = phi_r26; i < 7; i++) {
var_r19 = ((temp_r31->unk00 / 2) % 2 == 0) ? i : (6 - i);
if (sp21C[phi_r22] - 60.0 * fabs(phi_r22 - phi_r26) < sp21C[var_r19] - 60.0 * fabs(var_r19 - phi_r26) && sp238[var_r19] < sp21C[var_r19]) {
phi_r22 = var_r19;
}
}
sp238[phi_r22] -= 1.0f;
for (i = 0, phi_r23 = phi_r26; i < 7; i++) {
var_r17 = ((temp_r31->unk00 / 2) % 2 == 0) ? i : (6 - i);
if (sp238[phi_r23] > sp238[var_r17]) {
phi_r23 = var_r17;
}
}
sp140 = arg0->trans.z - (temp_r31->unk00 == 0 ? -100.0f : 700.0f);
sp13C = (((sp238[phi_r22] > sp140 - 400.0f || sp140 > 550.0f) ? phi_r23
: (sp140 > 500.0f) ? ((sp140 - 500.0f) / 50.0f) * phi_r23 + (1.0f - (sp140 - 500.0f) / 50.0f) * phi_r22
: phi_r22) - 3.0f) * 100.0f - arg0->trans.x;
{
float sp1C4[] = { -21.0f, 0.0f, 15.0f };
float sp1B8[] = { 60.0f, 65.0f, 53.0f };
float sp1AC[] = { 54.0f, 72.0f, 59.0f };
float sp1A0[] = { -15.0f, 7.0f, 22.0f };
var_r18 = (temp_r31->unk14 / 5) % 3;
var_r18 = (temp_r31->unk00 == 0) ? (arg0->trans.z < 200.0f ? 0 : 1) : 2;
sp13C /= 20.0f;
sp13C = (sp13C < -1.0f) ? sp13C
: (sp13C > 1.0f) ? 1.0f
: sp13C;
sp138 = (sp13C < 0.0f) ? -sp13C : sp13C;
sp134 = 1.0f - sp138;
sp154 = (sp13C < 0.0f)
? (36.0f * sp134 + sp138 * sp1C4[var_r18])
: (36.0f * sp134 + sp138 * sp1B8[var_r18]);
sp150 = (sp13C < 0.0f)
? (42.0f * sp134 + sp138 * sp1AC[var_r18])
: (42.0f * sp134 + sp138 * sp1A0[var_r18]);
}
temp_f23 = temp_r31->unk38 - sp154;
temp_f22 = temp_r31->unk3C - sp150;
if (sqrtf(temp_f23 * temp_f23 + temp_f22 * temp_f22) > 50.0f) {
temp_r31->unk40++;
} else {
temp_r31->unk40 = 0;
}
if (temp_r31->unk40 >= 2) {
sp154 = temp_r31->unk38;
sp150 = temp_r31->unk3C;
temp_r31->unk40 = 0;
}
temp_r31->unk38 = sp154;
temp_r31->unk3C = sp150;
}
}
}
if (temp_r31->unk20 == 2) {
sp130 = arg0->trans.y;
sp12C = arg0->trans.z;
phi_r25 = 4;
arg0->trans.z += 9.375;
if (temp_r31->unk00 == 0
&& lbl_1_data_1900 != -1
&& arg0->trans.z > (arg0->trans.y > 0.0f ? 620.0f : 1400.0f) + 50.0f
&& sp12C <= (arg0->trans.y > 0.0f ? 620.0f : 1400.0f) + 50.0f)
{
HuAudFXStop(lbl_1_data_1900);
lbl_1_data_1900 = -1;
}
temp_r31->unk30 -= 1.0f;
arg0->trans.y += (arg0->trans.z > (arg0->trans.y > 0.0f ? 620.0f : 1400.0f) - 50.0f)
? temp_r31->unk30 : 0.0f;
if (temp_r31->unk00 == 0 && lbl_1_data_1900 == -1 && arg0->trans.z > 670.0f && arg0->trans.z < 1450.0f && arg0->trans.y == 0.0f && sp130 > 0.0f) {
lbl_1_data_1900 = HuAudFXPlay(0x612);
}
if (arg0->trans.z < 1400.0f && arg0->trans.y <= 0.0f) {
arg0->trans.y = 0.0f;
temp_r31->unk30 = 0.0f;
}
arg0->rot.y += (arg0->rot.y < 0.0f) ? 360
: (arg0->rot.y > 360.0f) ? -360 : 0;
arg0->rot.y = (arg0->rot.y > 140.0f && arg0->rot.y < 220.0f) ? 180.0f
: (arg0->rot.y < 180.0f) ? (40.0f + arg0->rot.y)
: (arg0->rot.y > 180.0f) ? (arg0->rot.y - 40.0f)
: arg0->trans.y;;
if (lbl_1_bss_C % 4 < 3) {
Hu3DModelAttrReset(arg0->model[0], 1);
} else {
Hu3DModelAttrSet(arg0->model[0], 1);
}
if (arg0->trans.y < -500.0f) {
temp_r31->unk20 = 3;
Hu3DModelAttrSet(arg0->model[0], 1);
}
} else if (temp_r31->unk20 != 3 && temp_r31->unk20 != 4) {
if (temp_r31->unk20 == 5) {
if (temp_r31->unk24 == 0) {
phi_r25 = 3;
Hu3DMotionSpeedSet(arg0->model[0], 1.0f);
Hu3DModelAttrReset(arg0->model[0], 1);
}
temp_r31->unk24++;
if (temp_r31->unk24 == 30) {
temp_r31->unk1C = -1;
temp_r31->unk18 = phi_r25 = 0;
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
}
if (temp_r31->unk24 >= 31 && temp_r31->unk24 <= 38) {
arg0->trans.x -= 150.0 * -sind(arg0->rot.y) / 7.0;
arg0->trans.z -= 150.0 * -cosd(arg0->rot.y) / 7.0;
} else {
arg0->trans.x = lbl_1_data_F0[9][temp_r31->unk00].unk0C;
arg0->trans.y = (temp_r31->unk00 == 0) ? 300 : 0;
arg0->trans.z = lbl_1_data_F0[9][temp_r31->unk00].unk14;
}
if (temp_r31->unk24 == 34 && temp_r31->unk00 == 0) {
Hu3DMotionTimeSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], 15.0f + Hu3DMotionTimeGet(lbl_1_bss_38->model[temp_r31->unk00 + 79]));
}
if (temp_r31->unk24 == 38) {
temp_r31->unk20 = 1;
}
} else {
float temp_f31 = 0.25 * sp154;
float temp_f30 = 0.25 * -sp150;
Vec sp194 = { 0.0f, 0.0f, 0.0f };
sp194.x = temp_f31;
sp194.z = temp_f30;
PSMTXRotRad(sp254, 'y', MTXDegToRad(CRot.y));
PSMTXMultVec(sp254, &sp194, &sp194);
temp_f31 = sp194.x;
temp_f30 = sp194.z;
sp158 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30);
if (sp158 >= 0.5f) {
if (sp158 < 10.0f) {
temp_r31->unk2C = temp_f31;
temp_r31->unk34 += temp_f30;
} else {
temp_f31 /= sp158;
temp_f30 /= sp158;
sp158 = 10.0f;
temp_r31->unk2C = temp_f31 * sp158;
temp_r31->unk34 = temp_f30 * sp158;
}
temp_r31->unk28 = sp158;
arg0->rot.y = atan2d(temp_r31->unk2C, temp_r31->unk34);
if (temp_r31->unk20 == 1) {
if (temp_r31->unk28 >= 8.0f) {
phi_r25 = 2;
} else {
phi_r25 = 1;
}
}
} else if (temp_r31->unk20 == 1) {
phi_r25 = 0;
}
if (lbl_1_bss_34 == 1005 && (temp_r31->unk20 == 1 || temp_r31->unk20 == 0)) {
temp_r31->unk1C = (lbl_1_data_18F4[temp_r31->unk00 == 0 ? 0 : 1] > 0) ? 6 : 7;
Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP);
temp_r31->unk20 = 0;
if (lbl_1_bss_8 == 1.0f && lbl_1_data_18F4[temp_r31->unk00 == 0 ? 0 : 1] > 0) {
s32 sp1FC[] = {
0x122, 0x162, 0x1A2, 0x1E2,
0x222, 0x262, 0x2A2, 0x2E2
};
HuAudFXPlay(sp1FC[temp_r31->unk08]);
}
}
if (lbl_1_bss_34 >= 1004 && temp_r31->unk20 == 0) {
arg0->rot.y = 2.4f + 0.8f * arg0->rot.y;
if (temp_r31->unk18 != 6 && temp_r31->unk18 != 7) {
phi_r25 = 0;
}
}
arg0->trans.x += temp_r31->unk2C;
arg0->trans.z += temp_r31->unk34;
if (temp_r31->unk00 != 0) {
for (phi_r21 = 1; phi_r21 < 4; phi_r21++) {
temp_f27 = lbl_1_bss_3C[phi_r21]->trans.x - arg0->trans.x;
phi_f29 = lbl_1_bss_3C[phi_r21]->trans.z - arg0->trans.z;
if (phi_r21 != temp_r31->unk00) {
if (temp_f27 == 0.0f && phi_f29 == 0.0f) {
phi_f29 = -1.0f;
}
sp128 = sqrtf(temp_f27 * temp_f27 + phi_f29 * phi_f29);
if (sp128 < 100.0f) {
temp_f27 *= (100.0f / sp128);
phi_f29 *= (100.0f / sp128);
arg0->trans.x = lbl_1_bss_3C[phi_r21]->trans.x - temp_f27;
arg0->trans.z = lbl_1_bss_3C[phi_r21]->trans.z - phi_f29;
}
}
}
}
if (lbl_1_bss_34 > 1001) {
for (phi_r24 = 0; phi_r24 < 12; phi_r24++) {
if (phi_r24 == 9 && lbl_1_bss_34 <= 1001) {
}
for (phi_r20 = 0; phi_r20 < (phi_r24 < 10 ? 4 : 10); phi_r20++) {
temp_r29 = &lbl_1_data_F0[phi_r24][phi_r20];
sp124 = (phi_r24 < 10) ? (phi_r24 * 4 + 43 + phi_r20)
: ((phi_r24 - 10) * 10 + 83 + phi_r20);
if (temp_r29->unk04 != 0 && temp_r29->unk2C <= 0) {
Vec sp188;
Hu3DModelObjPosGet(lbl_1_bss_38->model[sp124], lbl_1_data_1828[temp_r29->unk00], &sp188);
if (((temp_r29->unk04 == 3 || (temp_r29->unk04 == 4 && sp188.y >= 250.0f)) && temp_r31->unk00 == 0)
|| (((temp_r29->unk04 == 4 && sp188.y < 250.0f) || temp_r29->unk04 == 5 || temp_r29->unk04 == 6) && temp_r31->unk00 != 0))
{
sp11C = sp188.x;
sp118 = sp188.z;
if (lbl_1_rodata_40[temp_r29->unk00] > 0.0f || lbl_1_rodata_70[temp_r29->unk00] > 0.0f) {
sp11C = (arg0->trans.x < sp11C - lbl_1_rodata_40[temp_r29->unk00]) ? (sp11C - lbl_1_rodata_40[temp_r29->unk00])
: (arg0->trans.x > sp11C + lbl_1_rodata_40[temp_r29->unk00]) ? (sp11C + lbl_1_rodata_40[temp_r29->unk00])
: arg0->trans.x;
sp118 = (arg0->trans.z < sp118 - lbl_1_rodata_70[temp_r29->unk00]) ? (sp118 - lbl_1_rodata_70[temp_r29->unk00])
: (arg0->trans.z > sp118 + lbl_1_rodata_70[temp_r29->unk00]) ? (sp118 + lbl_1_rodata_70[temp_r29->unk00])
: arg0->trans.z;
}
temp_f26 = sp11C - arg0->trans.x;
phi_f28 = sp118 - arg0->trans.z;
if (phi_r24 < 10 && temp_f26 == 0.0f && phi_f28 == 0.0f) {
phi_f28 = -1.0f;
}
sp120 = sqrtf(temp_f26 * temp_f26 + phi_f28 * phi_f28);
if (sp120 < 50.0f + lbl_1_rodata_10[temp_r29->unk00]) {
if (phi_r24 < 10) {
temp_f26 *= (50.0f + lbl_1_rodata_10[temp_r29->unk00]) / sp120;
phi_f28 *= (50.0f + lbl_1_rodata_10[temp_r29->unk00]) / sp120;
arg0->trans.x = sp11C - temp_f26;
arg0->trans.z = sp118 - phi_f28;
} else {
temp_r29->unk04 = 0;
lbl_1_data_18F4[temp_r31->unk00 == 0 ? 0 : 1] += (phi_r24 == 10 ? 1 : 5);
CharModelCoinEffectCreate(-1, &sp188);
if (lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk00 < 3) {
lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk04[lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk00] = 0.0f;
lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk00++;
}
}
}
}
}
}
}
}
if (arg0->trans.z > (temp_r31->unk00 == 0 ? 620.0f : 1400.0f) - 50.0f) {
temp_r31->unk20 = 2;
temp_r31->unk30 = 0.0f;
HuAudCharVoicePlay(temp_r31->unk08, 0x123);
}
if (temp_r31->unk20 != 2) {
if (arg0->trans.x > (temp_r31->unk00 == 0 ? 400 : 400) - 50.0f) {
arg0->trans.x = (temp_r31->unk00 == 0 ? 400 : 400) - 50.0f;
}
if (arg0->trans.x < -(temp_r31->unk00 == 0 ? 400 : 400) + 50.0f) {
arg0->trans.x = -(temp_r31->unk00 == 0 ? 400 : 400) + 50.0f;
}
if (arg0->trans.z < (temp_r31->unk00 == 0 ? 0.0f : 600.0f) + 50.0f) {
arg0->trans.z = (temp_r31->unk00 == 0 ? 0.0f : 600.0f) + 50.0f;
}
if (arg0->trans.z > (temp_r31->unk00 == 0 ? 620.0f : 1400.0f) - 50.0f) {
arg0->trans.z = (temp_r31->unk00 == 0 ? 620.0f : 1400.0f) - 50.0f;
}
}
}
}
if (lbl_1_bss_34 == 1001) {
sp114 = temp_r31->unk00;
if (lbl_1_bss_8 == 23.0f) {
Hu3DMotionSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], lbl_1_bss_38->motion[temp_r31->unk00 + 22]);
Hu3DModelAttrReset(lbl_1_bss_38->model[temp_r31->unk00 + 79], HU3D_MOTATTR_PAUSE);
if (lbl_1_bss_54[4].unk00 < 3) {
lbl_1_bss_54[4].unk04[lbl_1_bss_54[4].unk00] = 0.0f;
lbl_1_bss_54[4].unk00++;
}
}
if (lbl_1_bss_8 == 43.0f) {
Hu3DModelAttrSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], HU3D_MOTATTR_PAUSE);
}
if (lbl_1_bss_8 == 80.0f) {
Hu3DMotionTimeSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], 20.0f);
Hu3DModelAttrReset(lbl_1_bss_38->model[temp_r31->unk00 + 79], HU3D_MOTATTR_PAUSE);
}
if (lbl_1_bss_8 == 100.0f && lbl_1_bss_54[0].unk00 < 3) {
lbl_1_bss_54[0].unk04[lbl_1_bss_54[0].unk00] = 0.0f;
lbl_1_bss_54[0].unk00++;
}
if (lbl_1_bss_8 == 106.0f) {
Hu3DModelAttrReset(lbl_1_bss_38->model[temp_r31->unk00 + 39], 1);
Hu3DParticleCntSet(lbl_1_bss_38->model[temp_r31->unk00 + 39], 0);
lbl_1_bss_18 = 1;
}
if (lbl_1_bss_8 == 60.0f) {
Hu3DModelAttrReset(arg0->model[0], 1);
Hu3DMotionSet(arg0->model[0], arg0->motion[3]);
Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE);
}
if (lbl_1_bss_8 == 61.0f) {
Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE);
}
if (lbl_1_bss_8 == 120.0f) {
phi_r25 = 3;
Hu3DModelAttrReset(arg0->model[0], 1);
}
if (lbl_1_bss_8 == 155.0f) {
phi_r25 = 0;
}
arg0->trans.x = lbl_1_data_F0[9][sp114].unk0C;
arg0->trans.z = (lbl_1_bss_8 > 163.0f) ? arg0->trans.z
: (lbl_1_bss_8 > 155.0f) ? (arg0->trans.z - 18.75)
: lbl_1_data_F0[9][sp114].unk14;
}
if (temp_r31->unk1C >= 0) {
phi_r25 = temp_r31->unk1C;
}
if (phi_r25 >= 0 && phi_r25 != temp_r31->unk18) {
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[phi_r25], 0.0f, lbl_1_data_E7[phi_r25], (lbl_1_data_E0[phi_r25] != 0) ? HU3D_MOTATTR_NONE : HU3D_MOTATTR_LOOP);
temp_r31->unk18 = phi_r25;
}
}
s32 fn_1_34BC(float arg0, float arg1, float arg2, s32 arg3, s32 arg4) {
Vec sp1C;
float var_f27;
float var_f28;
float var_f25;
float var_f26;
float temp_f30;
float var_f31;
float sp18;
StructDataF0* temp_r31;
s32 var_r24;
s32 i;
s32 j;
for (i = 0; i < 12; i++) {
for (j = 0; j < (i < 10 ? 4 : 10); j++) {
temp_r31 = &lbl_1_data_F0[i][j];
var_r24 = (i < 10) ? (i * 4 + 43 + j) : ((i - 10) * 10 + 83 + j);
if (temp_r31->unk04 != 0 && temp_r31->unk2C <= 0) {
Hu3DModelObjPosGet(lbl_1_bss_38->model[var_r24], lbl_1_data_1828[temp_r31->unk00], &sp1C);
if (temp_r31->unk04 == 3 || temp_r31->unk04 == 5) {
var_f27 = (temp_r31->unk08 == 0) ? temp_r31->unk0C : sp1C.x;
var_f28 = (temp_r31->unk08 == 0) ? temp_r31->unk14 : sp1C.z;
var_f25 = 50.0f + lbl_1_rodata_70[temp_r31->unk00];
var_f26 = 50.0f + lbl_1_rodata_70[temp_r31->unk00];
if (temp_r31->unk04 == 3) {
float sp28[][12] = {
{
-25.0f, -25.0f, -25.0f,
-6.6875f, -6.6875f, -6.6875f,
62.765625f, 62.765625f, 62.765625f,
51.99469f, 76.875f, 45.0f
},
{
-27.647583f, -27.647583f, -27.647583f,
-9.64325f, -9.64325f, -9.64325f,
60.49022f, 60.49022f, 60.49022f,
51.99469f, 76.875f, 45.0f
}
};
var_f28 += sp28[temp_r31->unk08 == 0 ? 0 : 1][temp_r31->unk00];
var_f25 += 50.0f;
var_f26 += 50.0f;
} else if (temp_r31->unk04 == 5 && temp_r31->unk08 == 0) {
var_f28 += lbl_1_rodata_130[temp_r31->unk00];
} else if (temp_r31->unk04 == 1) {
var_f27 = (temp_r31->unk0C < 0.0f ? -1 : 1) * 321;
var_f28 = 880.0f - lbl_1_bss_0 * (100 - temp_r31->unk08);
}
if (temp_r31->unk00 == 9) {
var_f26 += 300.0f;
}
if (lbl_1_rodata_40[temp_r31->unk00] > 0.0f || var_f25 > 0.0f || var_f26 > 0.0f) {
var_f27 = (arg0 < var_f27 - lbl_1_rodata_40[temp_r31->unk00]) ? (var_f27 - lbl_1_rodata_40[temp_r31->unk00])
: (arg0 > var_f27 + lbl_1_rodata_40[temp_r31->unk00]) ? (var_f27 + lbl_1_rodata_40[temp_r31->unk00])
: arg0;
var_f28 = (arg1 < var_f28 - var_f25) ? (var_f28 - var_f25)
: (arg1 > var_f28 + var_f26) ? (var_f28 + var_f26)
: arg1;
}
temp_f30 = var_f27 - arg0;
var_f31 = var_f28 - arg1;
if (i < 10 && temp_f30 == 0.0f && var_f31 == 0.0f) {
var_f31 = -1.0f;
}
sp18 = sqrtf(temp_f30 * temp_f30 + var_f31 * var_f31);
if (sp18 < arg2 + lbl_1_rodata_10[temp_r31->unk00]) {
return 1;
}
}
}
}
}
return 0;
}
void fn_1_3B74(omObjData* arg0) {
StructBss3CData* sp354[4];
Vec sp348;
s32 var_r20;
s32 var_r19;
s32 var_r18;
s32 var_r17;
s32 sp230;
s32 sp22C;
s32 sp228;
s32 sp224;
s32 sp220;
s32 sp21C;
s32 sp218;
float sp214;
float sp210;
float sp20C;
s32 sp208;
float var_f25;
float var_f24;
float temp_f21;
float temp_f20;
float temp_f23;
float temp_f22;
float temp_f26;
float temp_f28;
float temp_f27;
float temp_f29;
float temp_f30;
float temp_f31;
StructDataF0* temp_r31;
s32 var_r21;
s32 var_r28;
s32 var_r27;
s32 var_r25;
s32 i;
s32 j;
for (i = 0; i < 4; i++) {
sp354[i] = lbl_1_bss_3C[i]->data;
}
lbl_1_bss_C++;
lbl_1_bss_0 = (lbl_1_bss_34 <= 1002) ? 1.5
: (lbl_1_bss_34 == 1003) ? (7.5 * (lbl_1_bss_8 > 120.0f ? 1.0 : (0.2 + 0.8 * (lbl_1_bss_8 / 120.0))))
: 0.0;
lbl_1_bss_4 = (lbl_1_bss_34 < 1005 && sp354[0]->unk20 >= 2 && sp354[0]->unk20 <= 5
&& !(lbl_1_bss_34 == 1003 && lbl_1_bss_8 <= 120.0f)) ? 7.5 : lbl_1_bss_0;
Hu3DMotionSpeedSet(arg0->model[1], 1.5 * lbl_1_bss_4 / 7.5);
Hu3DMotionSpeedSet(arg0->model[3], 1.5 * lbl_1_bss_0 / 7.5);
if (lbl_1_data_18B0 != -1) {
temp_f21 = 1.5 * lbl_1_bss_4 / 7.5;
HuAudFXPitchSet(lbl_1_data_18B0, 8190.0f * temp_f21 - 8190.0f);
HuAudFXVolSet(lbl_1_data_18B0, temp_f21 <= 0.001 ? 0 : 127);
}
if (lbl_1_bss_34 <= 1001) {
temp_f31 = (lbl_1_bss_34 == 1000 || lbl_1_bss_8 < 60.0f) ? 0.0
: (lbl_1_bss_8 < 120.0f) ? (lbl_1_bss_8 - 60.0f) / 60.0
: 1.0;
temp_f31 = 1.0f - temp_f31;
temp_f31 *= temp_f31;
temp_f31 = 1.0f - temp_f31;
temp_f28 = 1.0f - temp_f31;
Center.x = 690.0f * temp_f31;
Center.y = 400.0f * temp_f28 + 1340.0f * temp_f31;
Center.z = 500.0f * temp_f28 + 1380.0f * temp_f31;
CRot.x = -10.0f * temp_f28 + -50.8125f * temp_f31;
CRot.y = 40.0f * temp_f31;
CZoom = 2126.6f * temp_f28 + 2126.6f * temp_f31;
Center.x = 700.0f * temp_f31;
Center.y = 400.0f * temp_f28 + 870.0f * temp_f31;
Center.z = 500.0f * temp_f28 + 1320.0f * temp_f31;
CRot.x = -10.0f * temp_f28 + -37.25f * temp_f31;
CRot.y = 40.0f * temp_f31;
}
if (lbl_1_bss_34 == 1005 && lbl_1_bss_8 < 100.0f) {
temp_f30 = (lbl_1_bss_8 < 90.0f) ? (lbl_1_bss_8 / 90.0) : 1.0;
temp_f30 = 1.0f - temp_f30;
temp_f30 *= temp_f30;
temp_f30 = 1.0f - temp_f30;
temp_f26 = 1.0f - temp_f30;
Center.x = 120.0f * temp_f30 + 700.0f * temp_f26;
Center.y = 292.5f * temp_f30 + 870.0f * temp_f26;
Center.z = 1200.0f * temp_f30 + 1320.0f * temp_f26;
CRot.x = -19.5f * temp_f30 + -37.25f * temp_f26;
CRot.y = 13.5f * temp_f30 + 40.0 * temp_f26;
CZoom = 2126.6f * temp_f30 + 2126.6f * temp_f26;
}
var_r20 = (sp354[0]->unk20 == 3 && (lbl_1_data_F0[9][0].unk04 == 0 || lbl_1_bss_34 != 1003));
sp22C = (sp354[1]->unk20 == 3 && (lbl_1_data_F0[9][1].unk04 == 0 || lbl_1_bss_34 != 1003))
+ (sp354[2]->unk20 == 3 && (lbl_1_data_F0[9][2].unk04 == 0 || lbl_1_bss_34 != 1003))
+ (sp354[3]->unk20 == 3 && (lbl_1_data_F0[9][3].unk04 == 0 || lbl_1_bss_34 != 1003));
var_r19 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? (rand8() % 2 + 1 + var_r20) : var_r20;
var_r18 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 120 == 0) ? (rand8() % 2 + 1) : 0;
var_r17 = sp22C + (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0 && lbl_1_bss_28 > 120);
sp228 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? (rand8() % 2 + 2) : 0;
sp224 = 0;
var_r19 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? ((rand8() % 4 < 3) + 1 + var_r20) : var_r20;
var_r18 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 120 == 1) ? (rand8() % 2 + 1) : 0;
var_r17 = sp22C + (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 38 && lbl_1_bss_28 > 120);
sp228 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? (rand8() % 2 + 2) : 0;
while (var_r19 > 0 || var_r18 > 0 || var_r17 > 0 || sp228 > 0) {
var_r27 = (rand8() % 2 == 0)
? ((var_r17 != 0) ? 3
: (sp228 != 0) ? 4
: (var_r19 != 0) ? 1
: (var_r18 != 0) ? 2 : 0)
: ((var_r17 != 0) ? 3
: (var_r19 != 0) ? 1
: (sp228 != 0) ? 4
: (var_r18 != 0) ? 2 : 0);
sp224++;
if (sp224 > 8) {
var_r19 -= (var_r27 == 1);
var_r18 -= (var_r27 == 2);
var_r17 -= (var_r27 == 3);
sp228 -= (var_r27 == 4);
sp224 = 0;
} else if (var_r27 == 1 || var_r27 == 2 || var_r27 == 3 || var_r27 == 4) {
var_r28 = (var_r27 != 4) ? (rand8() % 9) : 10;
if (var_r27 == 1 && var_r20 != 0) {
var_r28 = 9;
i = 0;
} else if (var_r27 == 3 && sp22C != 0) {
var_r28 = 9;
i = (sp354[(lbl_1_bss_C % 3) + 1]->unk20 == 3 && (lbl_1_data_F0[9][lbl_1_bss_C % 3 + 1].unk04 == 0 || lbl_1_bss_34 != 1003)) ? (lbl_1_bss_C % 3 + 1)
: (sp354[(lbl_1_bss_C + 1) % 3 + 1]->unk20 == 3 && (lbl_1_data_F0[9][(lbl_1_bss_C + 1) % 3 + 1].unk04 == 0 || lbl_1_bss_34 != 1003)) ? ((lbl_1_bss_C + 1) % 3 + 1)
: (sp354[(lbl_1_bss_C + 2) % 3 + 1]->unk20 == 3 && (lbl_1_data_F0[9][(lbl_1_bss_C + 2) % 3 + 1].unk04 == 0 || lbl_1_bss_34 != 1003)) ? ((lbl_1_bss_C + 2) % 3 + 1) : 0;
} else {
if (var_r28 == 10 && (lbl_1_bss_28 / 60) / 15 + 1 <= 2 - lbl_1_bss_14 && rand8() % (((lbl_1_bss_28 / 60 - (1 - lbl_1_bss_14) * 15) * 3) + 1) == 0) {
var_r28 = 11;
}
for (i = 0; i < (var_r27 != 4 ? 4 : 10); i++) {
if (lbl_1_data_F0[var_r28][i].unk04 == 0) {
break;
}
}
if (i >= (var_r27 != 4 ? 4 : 10)) {
continue;
}
}
lbl_1_data_F0[var_r28][i].unk0C = (var_r27 != 3)
? (rand8() % 7 - 3) * 100
: ((rand8() % 2) * 2 - 1) * 1595;
if (i == 0 && lbl_1_bss_34 >= 1004 && var_r28 == 9) {
lbl_1_data_F0[var_r28][i].unk0C = 0.0f;
}
lbl_1_data_F0[var_r28][i].unk10 = (var_r27 == 1) ? 300
: (var_r27 == 2) ? 0
: (var_r27 == 3) ? 500
: (var_r27 == 4) ? 300 : 0;
lbl_1_data_F0[var_r28][i].unk14 = (var_r27 == 1) ? -450
: (var_r27 == 2) ? -450
: (var_r27 == 3) ? 105
: (var_r27 == 4) ? -150 : 0;
lbl_1_data_F0[var_r28][i].unk14 += (var_r27 == 1) ? -(var_r28 <= 8 ? 0 : 0)
: (var_r27 == 2) ? -(var_r28 <= 8 ? (var_r28 / 3) * 80 : 0)
: (var_r27 == 4) ? -50 : 0;
lbl_1_data_F0[var_r28][i].unk14 += (var_r27 == 1)
? ((var_r28 <= 2) ? 315.0
: (var_r28 <= 5) ? 296.6875
: (var_r28 <= 8) ? 227.234375
: (var_r28 == 9) ? 200 : 0) : 0.0;
if (var_r27 == 1 || var_r27 == 4) {
float sp3C4[] = {
-25.0f, -25.0f, -25.0f,
-6.6875f, -6.6875f, -6.6875f,
62.765625f, 62.765625f, 62.765625f,
51.99469f, 76.875f, 45.0f,
-27.647583f, -27.647583f, -27.647583f,
-9.64325f, -9.64325f, -9.64325f,
60.49022f, 60.49022f, 60.49022f,
51.99469f, 76.875f, 45.0f
};
var_f25 = lbl_1_data_F0[var_r28][i].unk0C;
var_f24 = sp3C4[var_r28] + lbl_1_data_F0[var_r28][i].unk14;
} else if (var_r27 == 2) {
var_f25 = lbl_1_data_F0[var_r28][i].unk0C;
var_f24 = lbl_1_rodata_130[var_r28] + lbl_1_data_F0[var_r28][i].unk14;
} else if (var_r27 == 3) {
var_f25 = (lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? -335 : 335;
var_f24 = 830.0f - 94.0f * lbl_1_bss_0;
} else {
var_f25 = lbl_1_data_F0[var_r28][i].unk0C;
var_f24 = lbl_1_data_F0[var_r28][i].unk14;
}
if (fn_1_34BC(var_f25, var_f24, lbl_1_rodata_10[lbl_1_data_F0[var_r28][i].unk00] + lbl_1_rodata_40[lbl_1_data_F0[var_r28][i].unk00], var_r28, 0) != 0) {
continue;
}
if (var_r27 == 3 && lbl_1_data_18A4[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 0 : 1] > 0) {
continue;
}
if (var_r27 == 4) {
for (var_r21 = 0; var_r21 < 10; var_r21++) {
if (lbl_1_data_F0[10][var_r21].unk04 != 0
&& fabs(lbl_1_data_F0[var_r28][i].unk14 - lbl_1_data_F0[10][var_r21].unk14) <= 100.0
&& fabs(lbl_1_data_F0[var_r28][i].unk0C - lbl_1_data_F0[10][var_r21].unk0C) <= 200.0)
{
break;
}
if (lbl_1_data_F0[11][var_r21].unk04 != 0
&& fabs(lbl_1_data_F0[var_r28][i].unk14 - lbl_1_data_F0[11][var_r21].unk14) <= 100.0
&& fabs(lbl_1_data_F0[var_r28][i].unk0C - lbl_1_data_F0[11][var_r21].unk0C) <= 200.0)
{
break;
}
}
if (var_r21 < 10 || (lbl_1_data_F0[var_r28][i].unk0C >= -100.0f && lbl_1_data_F0[var_r28][i].unk0C <= 100.0f)) {
continue;
}
}
if (var_r28 == 11) {
lbl_1_bss_14++;
}
if ((lbl_1_bss_28 / 60) / 15 == 0 && lbl_1_bss_14 == 0) {
lbl_1_bss_14++;
}
lbl_1_data_F0[var_r28][i].unk00 = var_r28;
lbl_1_data_F0[var_r28][i].unk04 = (var_r27 == 1) ? 3
: (var_r27 == 2) ? 5
: (var_r27 == 3) ? 1
: (var_r27 == 4) ? 3 : 0;
lbl_1_data_F0[var_r28][i].unk08 = 0;
lbl_1_data_F0[var_r28][i].unk2C = 0;
lbl_1_data_F0[var_r28][i].unk18 = lbl_1_data_F0[var_r28][i].unk1C = lbl_1_data_F0[var_r28][i].unk20 = 0.0f;
if (var_r27 != 4) {
sp220 = var_r28 * 4 + 43 + i;
Hu3DMotionTimeSet(arg0->model[sp220], (var_r27 == 1 || var_r27 == 3) ? 1.0f : Hu3DMotionMaxTimeGet(arg0->model[sp220]));
Hu3DModelAttrSet(arg0->model[sp220], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(arg0->model[sp220], 1);
Hu3DModelRotSet(arg0->model[sp220], 0.0f, 0.0f, 0.0f);
} else {
Hu3DModelAttrReset(arg0->model[i + (var_r28 == 10 ? 83 : 93)], 1);
}
if (var_r27 == 1 && var_r20 != 0) {
var_r20--;
sp354[0]->unk20 = 4;
} else if (var_r27 == 3 && sp22C != 0) {
sp22C--;
sp354[i]->unk20 = 4;
}
if (var_r27 == 3) {
lbl_1_data_18A4[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 0 : 1] = 85;
Hu3DMotionTimeSet(arg0->model[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 6 : 5], 9.0f);
if (var_r28 == 9 && lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6].unk00 < 3) {
lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6].unk04[lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6].unk00] = 0.0f;
lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6].unk00++;
}
}
if (var_r28 == 9) {
sp21C = var_r28 * 4 + 43 + i;
Hu3DMotionSet(arg0->model[sp21C], arg0->motion[i + 22]);
Hu3DMotionTimeSet(arg0->model[sp21C], 0.0f);
Hu3DMotionSpeedSet(arg0->model[sp21C], 2.0f);
}
var_r19 -= (var_r27 == 1);
var_r18 -= (var_r27 == 2);
var_r17 -= (var_r27 == 3);
sp228 -= (var_r27 == 4);
sp224 = 0;
}
}
for (i = 0; i < 12; i++) {
for (j = 0; j < (i < 10 ? 4 : 10); j++) {
temp_r31 = &lbl_1_data_F0[i][j];
var_r25 = (i < 10)
? (i * 4 + 43 + j)
: ((i - 10) * 10 + 83 + j);
sp348.x = sp348.y = sp348.z = 0.0f;
if (temp_r31->unk04 == 0) {
Hu3DModelAttrSet(arg0->model[var_r25], 1);
} else {
temp_r31->unk08++;
temp_r31->unk24 += (temp_r31->unk00 == 10) ? 0 : 0;
temp_r31->unk24 += (temp_r31->unk24 < 0.0f) ? 360
: (temp_r31->unk24 > 360.0f) ? -360 : 0;
Hu3DModelObjPosGet(arg0->model[var_r25], lbl_1_data_1828[temp_r31->unk00], &sp348);
switch (temp_r31->unk04) {
case 3:
case 5:
case 6:
if (temp_r31->unk00 >= 3 && temp_r31->unk00 >= 9 && temp_r31->unk04 == 3
&& temp_r31->unk14 < -120.0f && temp_r31->unk14 + lbl_1_bss_4 >= -120.0f)
{
sp218 = (500.0f + temp_r31->unk0C) / 100.0f;
sp218 = (sp218 < 0) ? 0
: (sp218 >= 11) ? 10
: sp218;
lbl_1_data_1878[sp218] = 15;
Hu3DMotionShiftSet(arg0->model[sp218 + 8], arg0->motion[11], 20.0f, 15.0f, HU3D_MOTATTR_NONE);
if (temp_r31->unk00 == 9 && lbl_1_bss_54[5].unk00 < 3) {
lbl_1_bss_54[5].unk04[lbl_1_bss_54[5].unk00] = 0.0f;
lbl_1_bss_54[5].unk00++;
}
}
temp_r31->unk14 += (temp_r31->unk04 == 3 ? lbl_1_bss_4 : lbl_1_bss_0);
if (lbl_1_bss_34 >= 1003 && lbl_1_bss_34 < 1005) {
if ((temp_r31->unk04 == 3 && temp_r31->unk00 == 9 && temp_r31->unk14 >= 150.0f && temp_r31->unk14 - lbl_1_bss_4 < 150.0f)
|| (temp_r31->unk04 == 6 && temp_r31->unk00 == 9 && temp_r31->unk08 == 1))
{
sp354[j]->unk20 = 5;
sp354[j]->unk24 = 0;
lbl_1_bss_3C[j]->trans.x = temp_r31->unk0C;
lbl_1_bss_3C[j]->trans.y = (j == 0 ? 300 : 0);
lbl_1_bss_3C[j]->trans.z = temp_r31->unk14;
lbl_1_bss_3C[j]->rot.y = 180 + ((lbl_1_bss_20 == 4 && temp_r31->unk04 == 6)
? (temp_r31->unk0C < 0.0f ? -45 : 45)
: 0);
Hu3DMotionSpeedSet(arg0->model[j + 79], 1.0f);
Hu3DMotionShiftSet(arg0->model[j + 79], arg0->motion[j + 22], 44.0f, 2.0f, HU3D_MOTATTR_NONE);
Hu3DParticleCntSet(arg0->model[j + 39], j == 0 ? 15 : 0);
if (lbl_1_bss_54->unk00 < 3) {
lbl_1_bss_54->unk04[lbl_1_bss_54->unk00] = 0.0f;
lbl_1_bss_54->unk00++;
}
}
}
if (temp_r31->unk04 == 3 && temp_r31->unk14 > 510.0f) {
temp_r31->unk04 = 4;
temp_r31->unk08 = 0;
if (temp_r31->unk00 != 10) {
if (temp_r31->unk00 != 9) {
Hu3DMotionTimeSet(arg0->model[var_r25], 1.0f);
} else {
Hu3DMotionSet(arg0->model[var_r25], arg0->motion[j + 26]);
Hu3DMotionTimeSet(arg0->model[var_r25], 1.0f);
Hu3DMotionSpeedSet(arg0->model[var_r25], 1.0f);
}
Hu3DModelAttrReset(arg0->model[var_r25], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
}
}
if ((temp_r31->unk04 == 5 || temp_r31->unk04 == 6) && sp348.z > 1400.0f && temp_r31->unk14 > 700.0f) {
temp_r31->unk08 = 0;
temp_r31->unk10 = sp348.y;
temp_r31->unk14 = sp348.z;
temp_r31->unk1C = 0.0f;
if (temp_r31->unk00 == 10) {
Hu3DModelAttrSet(arg0->model[var_r25], HU3D_MOTATTR_LOOP);
} else if (temp_r31->unk00 != 9) {
Hu3DMotionTimeSet(arg0->model[var_r25], 2.0f);
Hu3DModelAttrReset(arg0->model[var_r25], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
} else {
Hu3DMotionSet(arg0->model[var_r25], arg0->motion[(temp_r31->unk04 == 6) ? (j + 26) : (j + 30)]);
Hu3DMotionTimeSet(arg0->model[var_r25], 1.0f);
Hu3DMotionSpeedSet(arg0->model[var_r25], 1.0f);
}
temp_r31->unk04 = 7;
Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, temp_r31->unk10, temp_r31->unk14);
} else {
Hu3DModelPosSet(arg0->model[var_r25],
temp_r31->unk0C,
((temp_r31->unk00 >= 0 && temp_r31->unk00 < 10)
? ((temp_r31->unk04 != 6 ? 300 : 0) + lbl_1_rodata_100[temp_r31->unk00])
: temp_r31->unk10) + lbl_1_rodata_A0[temp_r31->unk00],
temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]);
}
if (temp_r31->unk00 >= 10) {
Hu3DModelRotSet(arg0->model[var_r25], 0.0f, temp_r31->unk24, 0.0f);
}
break;
case 4:
if (temp_r31->unk00 >= 0 && temp_r31->unk00 < 10) {
float sp394[] = {
0.0f, 0.0f, 0.0f, 0.9f, 0.9f, 0.9f,
1.75f, 1.75f, 1.75f, 0.0f, 0.0f, 0.0f
};
s32 sp364[] = {
42, 42, 42, 41, 41, 41,
48, 48, 48, 27, 27, 27
};
if (temp_r31->unk00 >= 6 && temp_r31->unk00 <= 8) {
temp_f29 = temp_r31->unk08;
temp_f27 = (temp_f29 <= 1.0f) ? 0.0
: (temp_f29 >= 30.0f && temp_f29 < 40.0f) ? -1.0 * (1.0 - (temp_f29 - 30.0f) / 9.0)
: (temp_f29 >= 40.0f) ? 1.0 - (temp_f29 - 40.0f) / 8.0
: 1.0;
temp_f27 = (temp_f29 >= 40.0f)
? -1.0 + (temp_f27 * 0.5 + temp_f27 * temp_f27 * 0.5)
: temp_f27;
temp_f27 = (temp_f29 <= 1.0f) ? 0.0
: (temp_f29 < 23.0f) ? 1.0
: (temp_f29 < 32.0f) ? 0.5
: (temp_f29 < 40.0f) ? -0.8
: (-1.0 - 0.4 * (1.0 - (temp_f29 - 40.0f) / 8.0));
temp_r31->unk14 -= (lbl_1_bss_4 * sp394[temp_r31->unk00] / 4.0) * temp_f27;
} else {
temp_r31->unk14 -= lbl_1_bss_4 * sp394[temp_r31->unk00] / 4.0;
}
if (temp_r31->unk08 >= sp364[temp_r31->unk00]) {
temp_r31->unk10 = 0.0f;
temp_r31->unk04 = 5;
temp_r31->unk08 = 0;
}
} else {
temp_r31->unk1C -= 1.0f;
temp_r31->unk10 += temp_r31->unk1C;
temp_r31->unk14 += 1.25 * lbl_1_bss_4;
if (temp_r31->unk10 <= 0.0f) {
if (temp_r31->unk1C < -10.0f && temp_r31->unk00 == 10) {
temp_r31->unk1C = 9.0f;
} else {
temp_r31->unk1C = 0.0f;
temp_r31->unk10 = 0.0f;
temp_r31->unk04 = 5;
temp_r31->unk08 = 0;
}
}
}
Hu3DModelPosSet(arg0->model[var_r25],
temp_r31->unk0C,
lbl_1_rodata_A0[temp_r31->unk00] + ((temp_r31->unk00 >= 0 && temp_r31->unk00 < 10) ? (300.0f + lbl_1_rodata_100[temp_r31->unk00]) : temp_r31->unk10),
temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]);
if (temp_r31->unk00 >= 10) {
Hu3DModelRotSet(arg0->model[var_r25], 0.0f, temp_r31->unk24, 0.0f);
}
break;
case 1:
temp_f20 = temp_r31->unk08 / 90.0;
temp_f23 = 1.0f - temp_f20;
sp214 = temp_r31->unk0C;
sp210 = temp_r31->unk10;
sp20C = temp_r31->unk14;
temp_r31->unk0C = (460.0f + 1135.0f * temp_f23) * (temp_r31->unk0C < 0.0f ? -1 : 1);
temp_r31->unk10 = 100.0f * temp_f20 + 500.0f * temp_f23;
temp_r31->unk14 = 800.0f - 695.0f * temp_f23;
temp_r31->unk18 = temp_r31->unk0C - sp214;
temp_r31->unk1C = temp_r31->unk10 - sp210;
temp_r31->unk20 = temp_r31->unk14 - sp20C;
if (temp_r31->unk08 >= 90) {
temp_r31->unk04 = 2;
temp_r31->unk08 = 0;
}
Hu3DModelPosSet(arg0->model[var_r25],
temp_r31->unk0C,
temp_r31->unk10 + lbl_1_rodata_A0[temp_r31->unk00],
temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]);
Hu3DModelRotSet(arg0->model[var_r25],
9.0f,
(temp_r31->unk0C < 0.0f) ? -31 : 31,
(temp_r31->unk0C < 0.0f) ? -18 : 18);
break;
case 2:
temp_r31->unk1C -= (temp_r31->unk00 != 9) ? 0.625 : 0.9;
temp_r31->unk0C += temp_r31->unk18;
temp_r31->unk10 += temp_r31->unk1C;
temp_r31->unk14 += temp_r31->unk20;
if (temp_r31->unk10 <= lbl_1_rodata_100[temp_r31->unk00]) {
temp_r31->unk10 = -lbl_1_rodata_100[temp_r31->unk00];
temp_r31->unk1C = 0.0f;
temp_r31->unk04 = 6;
temp_r31->unk08 = 0;
Hu3DModelPosSet(arg0->model[var_r25],
temp_r31->unk0C,
temp_r31->unk10 + lbl_1_rodata_A0[temp_r31->unk00] + lbl_1_rodata_100[temp_r31->unk00] + lbl_1_rodata_100[temp_r31->unk00],
temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]);
Hu3DModelRotSet(arg0->model[var_r25], 0.0f, (temp_r31->unk0C < 0.0f) ? -31 : 31, 0.0f);
} else {
Hu3DModelPosSet(arg0->model[var_r25],
temp_r31->unk0C,
temp_r31->unk10 + lbl_1_rodata_A0[temp_r31->unk00],
temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]);
}
break;
case 7:
temp_r31->unk1C -= 1.0f;
temp_r31->unk10 += temp_r31->unk1C;
temp_r31->unk14 += (temp_r31->unk00 >= 10) ? lbl_1_bss_0 : 0.0f;
if (temp_r31->unk10 <= -800.0f) {
Hu3DModelAttrSet(arg0->model[var_r25], 1);
if (temp_r31->unk00 == 9) {
Hu3DMotionSet(arg0->model[var_r25], arg0->motion[j + 22]);
Hu3DMotionTimeSet(arg0->model[var_r25], 0.0f);
Hu3DMotionSpeedSet(arg0->model[var_r25], 2.0f);
}
temp_r31->unk04 = 0;
}
Hu3DModelPosSet(arg0->model[var_r25],
temp_r31->unk0C,
(temp_r31->unk00 >= 0 && temp_r31->unk00 < 9) ? (300.0f + lbl_1_rodata_100[temp_r31->unk00]) : temp_r31->unk10,
temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]);
Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, temp_r31->unk10, temp_r31->unk14);
if (temp_r31->unk00 >= 10) {
Hu3DModelRotSet(arg0->model[var_r25], 0.0f, temp_r31->unk24, 0.0f);
}
break;
}
if (temp_r31->unk00 >= 0 && temp_r31->unk00 <= 8 && (temp_r31->unk04 == 4 || temp_r31->unk04 == 5)) {
sp208 = Hu3DMotionTimeGet(arg0->model[var_r25]);
if (temp_r31->unk00 >= 0 && temp_r31->unk00 <= 2 && (sp208 == 26 || sp208 == -41) && lbl_1_bss_54[3].unk00 < 3) {
lbl_1_bss_54[3].unk04[lbl_1_bss_54[3].unk00] = 0.0f;
lbl_1_bss_54[3].unk00++;
}
if (temp_r31->unk00 >= 3 && temp_r31->unk00 <= 5 && (sp208 == 23 || sp208 == -39) && lbl_1_bss_54[2].unk00 < 3) {
lbl_1_bss_54[2].unk04[lbl_1_bss_54[2].unk00] = 0.0f;
lbl_1_bss_54[2].unk00++;
}
if (temp_r31->unk00 >= 6 && temp_r31->unk00 <= 8 && (sp208 == 20 || sp208 == -29) && lbl_1_bss_54[1].unk00 < 3) {
lbl_1_bss_54[1].unk04[lbl_1_bss_54[1].unk00] = 0.0f;
lbl_1_bss_54[1].unk00++;
}
}
if (i == 9 && lbl_1_bss_18 != 0) {
ModelData* sp204 = &Hu3DData[arg0->model[j + 39]];
ParticleData* sp200 = sp204->unk_120;
if (sp200->unk_34 == 63) {
ModelData* temp_r23 = &Hu3DData[arg0->model[var_r25]];
ModelData* temp_r22 = &Hu3DData[arg0->model[j + 39]];
temp_r22->pos.x = temp_r23->pos.x;
temp_r22->pos.y = temp_r23->pos.y;
temp_r22->pos.z = temp_r23->pos.z;
temp_r22->rot.x = temp_r23->rot.x;
temp_r22->rot.y = temp_r23->rot.y;
temp_r22->rot.z = temp_r23->rot.z;
}
}
if (temp_r31->unk2C == 0 && (lbl_1_bss_34 == 1004 || lbl_1_bss_34 == 1005)) {
if (temp_r31->unk00 != 9
|| (temp_r31->unk04 != 1 && temp_r31->unk04 != 2 && ((temp_r31->unk04 != 3 && temp_r31->unk04 != 6) || sp354[j]->unk20 > 5 || sp354[j]->unk20 < 3)))
{
temp_r31->unk2C = 1;
}
}
temp_r31->unk2C += (temp_r31->unk2C > 0);
if (temp_r31->unk2C != 0 && (temp_r31->unk2C % 2 == 0 || temp_r31->unk2C > 25)) {
Hu3DModelAttrSet(arg0->model[var_r25], 1);
} else {
Hu3DModelAttrReset(arg0->model[var_r25], 1);
}
}
}
}
for (i = 0; i < 11; i++) {
if (lbl_1_data_1878[i] == 1) {
Hu3DMotionShiftSet(arg0->model[i + 8], arg0->motion[0], 0.0f, 60.0f, HU3D_MOTATTR_LOOP);
}
lbl_1_data_1878[i] -= (lbl_1_data_1878[i] > 0);
}
lbl_1_data_18A4[0] -= (lbl_1_data_18A4[0] > 0);
lbl_1_data_18A4[1] -= (lbl_1_data_18A4[1] > 0);
for (i = 0; i < 3; i++) {
for (j = 0; j < 8; j++) {
s32 sp1FC = lbl_1_bss_104[i][j].unk00 + 21;
lbl_1_bss_104[i][j].unk04++;
if (lbl_1_bss_104[i][j].unk04 >= 520) {
if (lbl_1_bss_104[i][j].unk00 != -1) {
Hu3DModelAttrReset(arg0->model[lbl_1_bss_104[i][j].unk00 + 21], 1);
}
lbl_1_bss_104[i][j].unk04 = 0;
lbl_1_bss_104[i][j].unk00 = -1;
for (sp230 = 0; sp230 < 14; sp230++) {
s32 sp1F8;
s32 sp1F4 = rand8() % 18;
for (sp1F8 = 0; sp1F8 < 24; sp1F8++) {
if (sp1F4 == lbl_1_bss_104[sp1F8 / 8][sp1F8 % 8].unk00) {
break;
}
}
if (sp1F8 == 24) {
lbl_1_bss_104[i][j].unk00 = sp1F4;
break;
}
}
if (lbl_1_bss_104[i][j].unk00 != -1) {
Hu3DModelAttrReset(arg0->model[lbl_1_bss_104[i][j].unk00 + 21], 1);
}
}
sp1FC = lbl_1_bss_104[i][j].unk00 + 21;
temp_f22 = lbl_1_bss_104[i][j].unk04 / 520.0f;
if (lbl_1_bss_104[i][j].unk00 != -1) {
switch (i) {
case 0:
Hu3DModelPosSet(arg0->model[sp1FC], 2000.0f - 4000.0f * temp_f22, -490.0f, 1000.0f);
break;
case 1:
Hu3DModelPosSet(arg0->model[sp1FC], -1200.0f, -290.0f, 2000.0f - 4000.0f * temp_f22);
break;
case 2:
Hu3DModelPosSet(arg0->model[sp1FC], 1200.0f, -290.0f, 2000.0f - 4000.0f * temp_f22);
break;
}
}
}
}
for (i = 0; i < 2; i++) {
espBankSet(lbl_1_data_40[i * 7 + 2], lbl_1_data_18F4[i] % 10);
espBankSet(lbl_1_data_40[i * 7 + 3], (lbl_1_data_18F4[i] / 10) % 10);
}
for (i = 0; i < 4; i++) {
ModelData* temp_r24 = &Hu3DData[lbl_1_bss_3C[i]->model[0]];
float temp_f19 = 0.0f;
float sp1F0 = (temp_r24->unk_08 == lbl_1_bss_3C[i]->motion[3]) ? 0 : -1;
float sp1EC = (temp_r24->unk_0C == lbl_1_bss_3C[i]->motion[3]) ? 0 : -1;
float sp1E8 = (sp1F0 == -1.0f) ? 0.0f
: (temp_r24->unk_64 < 4.0f) ? 0.0f
: (temp_r24->unk_64 > 28.0f) ? 1.0f
: (temp_r24->unk_64 - 4.0f) / 24.0f;
float sp1E4 = (sp1EC == -1.0f) ? 0.0f
: (temp_r24->unk_84 < 4.0f) ? 0.0f
: (temp_r24->unk_84 > 28.0f) ? 1.0f
: (temp_r24->unk_84 - 4.0f) / 24.0f;
float temp_f18 = (temp_r24->unk_0C == -1) ? 0.0f
: (temp_r24->unk_80 == 0.0f) ? 1.0f
: (temp_r24->unk_7C / temp_r24->unk_80);
temp_f19 = sp1E8 * (1.0f - temp_f18) + sp1E4 * temp_f18;
if (!(temp_r24->attr & 1) && sp354[i]->unk20 != 3 && sp354[i]->unk20 != 4 && lbl_1_bss_3C[i]->trans.z < 1400.0f) {
Hu3DModelAttrReset(lbl_1_bss_3C[i]->model[1], 1);
Hu3DModelPosSet(lbl_1_bss_3C[i]->model[1],
lbl_1_bss_3C[i]->trans.x,
(lbl_1_bss_3C[i]->trans.z < 620.0f) ? 5 : -295,
lbl_1_bss_3C[i]->trans.z - 165.0f * temp_f19);
Hu3DModelScaleSet(lbl_1_bss_3C[i]->model[1],
0.75 * (sp354[i]->unk08 == 5 ? 1.25 : 1.0),
1.0f,
1.25 * (sp354[i]->unk08 == 5 ? 1.25 : 1.0));
} else {
Hu3DModelAttrSet(lbl_1_bss_3C[i]->model[1], 1);
}
}
}
void fn_1_89E0(omObjData* arg0) {
StructBss3CData* spC[4];
s32 sp8;
s32 var_r29;
s32 var_r30;
s32 i;
for (i = 0; i < 4; i++) {
spC[i] = lbl_1_bss_3C[i]->data;
}
for (i = 0; i < 11; i++) {
s32 sp1C[] = {
0x60A, 0x60B, 0x60C,
0x60D, 0x60E, 0x60F,
0x611, 0x610, 0x007,
0x013, 0x612
};
if (lbl_1_bss_54[i].unk00 > 3) {
lbl_1_bss_54[i].unk00 = 3;
}
if (lbl_1_bss_54[i].unk00 > 0) {
sp8 = HuAudFXPlay(sp1C[i]);
lbl_1_bss_54[i].unk00--;
}
}
if (omSysExitReq != 0 && WipeStatGet() == 0) {
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
arg0->func = fn_1_B480;
}
switch (lbl_1_bss_34) {
case 1000:
lbl_1_bss_8 += 1.0f;
if (lbl_1_bss_8 == 5.0f) {
lbl_1_data_18B0 = HuAudFXPlay(0x609);
}
if (WipeStatGet() == 0) {
lbl_1_bss_34++;
lbl_1_bss_8 = 0.0f;
}
break;
case 1001:
lbl_1_bss_8 += 1.0f;
if (180.0f < lbl_1_bss_8) {
lbl_1_bss_34++;
lbl_1_bss_8 = 0.0f;
}
break;
case 1002:
lbl_1_bss_8 += 1.0f;
if (lbl_1_bss_8 == 5.0f && lbl_1_bss_2E < 0) {
lbl_1_bss_2E = MGSeqStartCreate();
}
if (lbl_1_bss_8 >= 5.0f && lbl_1_data_18AC == -1 && (MGSeqStatGet(lbl_1_bss_2E) & 0x10)) {
lbl_1_data_18AC = HuAudSeqPlay(0x47);
}
if (lbl_1_bss_8 >= 5.0f && MGSeqStatGet(lbl_1_bss_2E) == 0 && lbl_1_bss_2E >= 0) {
lbl_1_bss_34++;
lbl_1_bss_28 = 1800;
lbl_1_bss_2C = MGSeqTimerCreate(lbl_1_bss_28 / 60);
lbl_1_bss_2E = -1;
lbl_1_bss_8 = 0.0f;
for (i = 0; i < 16; i++) {
espDispOn(lbl_1_data_40[i]);
}
for (i = 0; i < 4; i++) {
spC[i]->unk20 = 1;
}
}
break;
case 1003:
lbl_1_bss_8 += 1.0f;
MGSeqParamSet(lbl_1_bss_2C, 1, (lbl_1_bss_28 + 58) / 60);
lbl_1_bss_28--;
if (lbl_1_bss_28 <= 0) {
lbl_1_bss_34 = 1004;
lbl_1_bss_8 = 0.0f;
lbl_1_bss_20 = 4;
}
break;
case 1004:
if (lbl_1_bss_2E < 0 && lbl_1_bss_8 == 0.0f) {
MGSeqParamSet(lbl_1_bss_2C, 2, -1);
lbl_1_bss_2E = MGSeqFinishCreate();
if (lbl_1_data_18AC != -1) {
HuAudSeqFadeOut(lbl_1_data_18AC, 100);
}
} else {
var_r29 = 0;
var_r30 = 0;
for (i = 0; i < 4; i++) {
if (spC[i]->unk20 == 1 || (spC[i]->unk20 >= 2 && spC[i]->unk20 <= 5)) {
var_r29++;
}
if (i == 0 && ((spC[0]->unk20 >= 2 && spC[0]->unk20 <= 4) || (spC[0]->unk20 == 4 && lbl_1_data_F0[9][0].unk14 < 70.0f))) {
var_r30++;
} else if (i != 0 && spC[i]->unk20 >= 2 && spC[i]->unk20 <= 4) {
var_r30++;
}
}
if (MGSeqStatGet(lbl_1_bss_2E) == 0
&& ((lbl_1_bss_8 >= 150.0f && var_r29 == 0 && var_r30 == 0)
|| (lbl_1_bss_8 >= 240.0f && var_r30 == 0)
|| lbl_1_bss_8 >= 360.0f))
{
lbl_1_bss_34++;
lbl_1_bss_8 = 0.0f;
GWPlayerCoinCollectSet(spC[0]->unk04, lbl_1_data_18F4[0]);
GWPlayerCoinCollectSet(spC[1]->unk04, lbl_1_data_18F4[1]);
GWPlayerCoinCollectSet(spC[2]->unk04, lbl_1_data_18F4[1]);
GWPlayerCoinCollectSet(spC[3]->unk04, lbl_1_data_18F4[1]);
if (lbl_1_data_18F4[0] == 0 && lbl_1_data_18F4[1] == 0) {
HuAudSStreamPlay(4);
} else {
HuAudSStreamPlay(1);
}
}
}
lbl_1_bss_8 += 1.0f;
break;
case 1005:
lbl_1_bss_8 += 1.0f;
if (210.0f < lbl_1_bss_8) {
HuAudFXStop(lbl_1_data_18B0);
lbl_1_bss_2E = -1;
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
arg0->func = fn_1_B480;
}
break;
default:
OSReport("*** main mode error(%d)!!\n", lbl_1_bss_34);
break;
}
}
void fn_1_9410(ModelData* model, ParticleData* particle, Mtx matrix) {
HsfanimStruct01* var_r31;
float temp_f31;
float temp_f30;
s16 i;
if (particle->unk_34 < 50) {
var_r31 = particle->unk_48;
for (i = 0; i < particle->unk_30; i++, var_r31++) {
var_r31->unk00_s16 = particle->unk_34 + 41;
var_r31->unk40.a = 0;
var_r31->unk2C = 0.0f;
}
}
if (particle->unk_34 >= 255) {
var_r31 = particle->unk_48;
for (i = 0; i < particle->unk_30; i++, var_r31++) {
var_r31->unk00_s16 = 255;
var_r31->unk40.a = 0;
var_r31->unk2C = 0.0f;
}
}
var_r31 = particle->unk_48;
for (i = 0; i < particle->unk_30; i++, var_r31++) {
if (!var_r31->unk2C) {
break;
}
}
var_r31 = particle->unk_48;
for (i = 0; i < particle->unk_30; i++, var_r31++) {
if (var_r31->unk00_s16 == 104) {
var_r31->unk34.x = var_r31->unk34.z = 0.0f;
var_r31->unk34.y = 72.0f;
temp_f31 = frandu8() * 360 / 256;
temp_f30 = 0.5 + (rand8() / 256.0) * 1.5;
var_r31->unk34.x = 75.0 * sind(temp_f31);
var_r31->unk34.z = 75.0 * cosd(temp_f31);
var_r31->unk08.x = temp_f30 * sind(temp_f31) * 2.0;
var_r31->unk08.y = 3.0 + (rand8() / 256.0) * 1.5;
var_r31->unk08.z = temp_f30 * cosd(temp_f31) * 2.0;
var_r31->unk40.r = 0xFF;
var_r31->unk40.g = 0xFF;
var_r31->unk40.b = 0xFF;
var_r31->unk40.a = 0x60;
var_r31->unk2C = 50.0f;
PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34);
}
if (var_r31->unk00_s16 < 240) {
PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34);
var_r31->unk08.x *= 0.9f;
var_r31->unk08.z *= 0.9f;
var_r31->unk08.y *= 0.9f;
var_r31->unk40.a = var_r31->unk40.a * 16 / 17;
var_r31->unk08.z *= 0.99f;
var_r31->unk2C += 2.0f;
if (var_r31->unk2C <= 0.0f) {
var_r31->unk2C = 0.0f;
}
if (var_r31->unk40.a <= 3) {
var_r31->unk40.a = 0;
var_r31->unk2C = 0.0f;
}
}
var_r31->unk00_s16 += (var_r31->unk00_s16 < 0x8000);
}
}
void fn_1_9900(omObjData* arg0) {
s32 temp_r28;
s32 i;
s32 j;
s32 k;
arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 18));
omSetTra(arg0, 0.0f, 0.0f, 0.0f);
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 17));
Hu3DModelPosSet(arg0->model[1], 0.0f, 300.0f, -100.0f);
Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_LOOP);
Hu3DModelLayerSet(arg0->model[1], 0);
Hu3DMotionSpeedSet(arg0->model[1], 1.5f);
arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 16));
Hu3DModelPosSet(arg0->model[3], 0.0f, 0.0f, 0.0f);
Hu3DModelAttrSet(arg0->model[3], HU3D_MOTATTR_LOOP);
Hu3DModelLayerSet(arg0->model[3], 0);
Hu3DMotionSpeedSet(arg0->model[3], 1.5f);
arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 19));
Hu3DModelAttrSet(arg0->model[4], HU3D_MOTATTR_LOOP);
arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 20));
Hu3DModelPosSet(arg0->model[5], 460.0f, 0.0f, 800.0f);
Hu3DModelAttrReset(arg0->model[5], HU3D_MOTATTR_LOOP);
Hu3DMotionTimeSet(arg0->model[5], Hu3DMotionMaxTimeGet(arg0->model[5]));
arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 21));
Hu3DModelPosSet(arg0->model[6], -460.0f, 0.0f, 800.0f);
Hu3DModelAttrReset(arg0->model[6], HU3D_MOTATTR_LOOP);
Hu3DMotionTimeSet(arg0->model[6], Hu3DMotionMaxTimeGet(arg0->model[6]));
arg0->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 22));
Hu3DModelAttrSet(arg0->model[7], HU3D_MOTATTR_LOOP);
arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 23));
arg0->motion[0] = Hu3DJointMotionFile(arg0->model[8], DATA_MAKE_NUM(DATADIR_M422, 24));
arg0->motion[11] = Hu3DJointMotionFile(arg0->model[8], DATA_MAKE_NUM(DATADIR_M422, 25));
for (i = 0; i < 11; i++) {
if (i != 0) {
arg0->model[i + 8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 23));
arg0->motion[i] = Hu3DJointMotionFile(arg0->model[i + 8], DATA_MAKE_NUM(DATADIR_M422, 24));
arg0->motion[i + 11] = Hu3DJointMotionFile(arg0->model[i + 8], DATA_MAKE_NUM(DATADIR_M422, 25));
}
Hu3DModelPosSet(arg0->model[i + 8], i * 100 - 500, 550.0f, 0.0f);
Hu3DMotionSet(arg0->model[i + 8], arg0->motion[0]);
Hu3DModelAttrSet(arg0->model[i + 8], HU3D_MOTATTR_LOOP);
Hu3DModelAttrReset(arg0->model[i + 8], HU3D_MOTATTR_PAUSE);
Hu3DMotionTimeSet(arg0->model[i + 8], rand8() % (s32) Hu3DMotionMaxTimeGet(arg0->model[i + 8]));
}
arg0->model[19] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 26));
Hu3DModelPosSet(arg0->model[19], 1800.0f, 0.0f, -22.0f);
Hu3DModelAttrSet(arg0->model[19], HU3D_MOTATTR_LOOP);
arg0->model[20] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 27));
Hu3DModelPosSet(arg0->model[20], -1800.0f, 0.0f, -22.0f);
Hu3DModelAttrSet(arg0->model[20], HU3D_MOTATTR_LOOP);
for (i = 0; i < 10; i++) {
for (j = 0; j < 4; j++) {
s32 spD0[] = {
DATA_MAKE_NUM(DATADIR_M422, 41),
DATA_MAKE_NUM(DATADIR_M422, 42),
DATA_MAKE_NUM(DATADIR_M422, 43),
DATA_MAKE_NUM(DATADIR_M422, 44),
DATA_MAKE_NUM(DATADIR_M422, 45),
DATA_MAKE_NUM(DATADIR_M422, 46),
DATA_MAKE_NUM(DATADIR_M422, 47),
DATA_MAKE_NUM(DATADIR_M422, 48),
DATA_MAKE_NUM(DATADIR_M422, 49),
DATA_MAKE_NUM(DATADIR_M422, 30)
};
s32 sp30[] = {
DATA_MAKE_NUM(DATADIR_M422, 30),
DATA_MAKE_NUM(DATADIR_M422, 31),
DATA_MAKE_NUM(DATADIR_M422, 32),
DATA_MAKE_NUM(DATADIR_M422, 33),
DATA_MAKE_NUM(DATADIR_M422, 34),
DATA_MAKE_NUM(DATADIR_M422, 35),
DATA_MAKE_NUM(DATADIR_M422, 37),
DATA_MAKE_NUM(DATADIR_M422, 36)
};
temp_r28 = i * 4 + 43 + j;
if (i == 9) {
StructBss3CData* var_r23 = lbl_1_bss_3C[j]->data;
arg0->model[temp_r28] = Hu3DModelCreateFile(sp30[var_r23->unk08]);
} else if (j == 0) {
arg0->model[temp_r28] = Hu3DModelCreateFile(spD0[i]);
} else {
arg0->model[temp_r28] = Hu3DModelLink(arg0->model[temp_r28 - j]);
}
Hu3DModelAttrSet(arg0->model[temp_r28], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(arg0->model[temp_r28], HU3D_MOTATTR_LOOP);
Hu3DMotionTimeSet(arg0->model[temp_r28], 0.0f);
Hu3DMotionSpeedSet(arg0->model[temp_r28], (i != 9) ? 0.9375 : 1.0);
if (i == 9) {
arg0->motion[j + 22] = Hu3DJointMotionFile(arg0->model[temp_r28], DATA_MAKE_NUM(DATADIR_M422, 38));
arg0->motion[j + 26] = Hu3DJointMotionFile(arg0->model[temp_r28], DATA_MAKE_NUM(DATADIR_M422, 39));
arg0->motion[j + 30] = Hu3DJointMotionFile(arg0->model[temp_r28], DATA_MAKE_NUM(DATADIR_M422, 40));
Hu3DMotionSet(arg0->model[temp_r28], arg0->motion[j + 22]);
Hu3DModelAttrSet(arg0->model[temp_r28], HU3D_MOTATTR_PAUSE);
}
}
if (i <= 8) {
for (k = 0; k < 2; k++) {
arg0->model[i * 2 + 21 + k] = Hu3DModelLink(arg0->model[i * 4 + 43]);
Hu3DModelAttrSet(arg0->model[i * 2 + 21 + k], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
}
}
}
for (i = 0; i < 2; i++) {
for (j = 0; j < 10; j++) {
s32 sp28[] = {
DATA_MAKE_NUM(DATADIR_M422, 28),
DATA_MAKE_NUM(DATADIR_M422, 29)
};
temp_r28 = i * 10 + 83 + j;
if (j == 0) {
arg0->model[temp_r28] = Hu3DModelCreateFile(sp28[i]);
} else {
arg0->model[temp_r28] = Hu3DModelLink(arg0->model[temp_r28 - j]);
}
Hu3DModelAttrSet(arg0->model[temp_r28], HU3D_MOTATTR_LOOP);
Hu3DModelAttrSet(arg0->model[temp_r28], 1);
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 8; j++) {
lbl_1_bss_104[i][j].unk04 = j * 520 / 8;
lbl_1_bss_104[i][j].unk00 = -1;
}
}
for (i = 0; i < 16; i++) {
s32 sp20[] = { 88, 473 };
s32 sp18[] = { 78, 70 };
s32 sp90[] = { 0, 0, 42, 22, -20, 2, -54, 0, 0, 55, 35, -7, 15, -51, -65, -37 };
s32 sp50[] = { 0, 0, 1, 1, 1, 1, -2, 0, 0, 9, 9, 9, 9, -14, 10, 10 };
if (lbl_1_data_0[i] == DATA_MAKE_NUM(DATADIR_MGCONST, 12) || lbl_1_data_0[i] == DATA_MAKE_NUM(DATADIR_MGCONST, 0)) {
StructBss3CData* var_r22 = lbl_1_bss_3C[
(i == 6) ? 0
: (i == 13) ? 1
: (i == 14) ? 2 : 3
]->data;
lbl_1_data_40[i] = espEntry(lbl_1_data_0[i] + var_r22->unk08, 0, 0);
} else {
lbl_1_data_40[i] = espEntry(lbl_1_data_0[i], 0, 0);
}
espDrawNoSet(lbl_1_data_40[i], 0);
espDispOff(lbl_1_data_40[i]);
espAttrSet(lbl_1_data_40[i], 1);
espBankSet(lbl_1_data_40[i], 0);
espPriSet(lbl_1_data_40[i], 128 - i);
espPosSet(lbl_1_data_40[i], sp90[i] + sp20[i < 7 ? 0 : 1], sp50[i] + sp18[i < 7 ? 0 : 1]);
switch (i >= 7 ? i - 7 : i) {
case 0:
espTPLvlSet(lbl_1_data_40[i], 0.5f);
espColorSet(lbl_1_data_40[i], 0, 0, 0);
break;
case 5:
espBankSet(lbl_1_data_40[i], 10);
break;
}
}
for (i = 0; i < 4; i++) {
s32 temp_r26 = i + 39;
arg0->model[temp_r26] = Hu3DParticleCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 3), MEMORY_DEFAULT_NUM)), 40);
Hu3DModelPosSet(arg0->model[temp_r26], 2000.0f, -2000.0f, -2000.0f);
Hu3DModelScaleSet(arg0->model[temp_r26], 1.0f, 1.0f, 1.0f);
Hu3DModelLayerSet(arg0->model[temp_r26], 3);
Hu3DModelAttrReset(arg0->model[temp_r26], 1);
Hu3DParticleColSet(arg0->model[temp_r26], 0xFF, 0xFF, 0xFF);
Hu3DParticleScaleSet(arg0->model[temp_r26], 5.0f);
Hu3DParticleHookSet(arg0->model[temp_r26], fn_1_9410);
Hu3DParticleCntSet(arg0->model[temp_r26], 45);
}
for (i = 0; i < 4; i++) {
s32 var_r27 = 9;
s32 temp_r24 = 43 + var_r27 * 4 + i;
lbl_1_data_F0[var_r27][i].unk0C = lbl_1_data_18B4[i][0];
lbl_1_data_F0[var_r27][i].unk10 = (i == 0 ? 300 : 0);
lbl_1_data_F0[var_r27][i].unk14 = (i == 0 ? 50 : 800);
lbl_1_data_F0[var_r27][i].unk00 = 9;
lbl_1_data_F0[var_r27][i].unk04 = (i == 0 ? 3 : 6);
lbl_1_data_F0[var_r27][i].unk08 = 0;
lbl_1_data_F0[var_r27][i].unk18 = lbl_1_data_F0[var_r27][i].unk1C = lbl_1_data_F0[var_r27][i].unk20 = 0.0f;
Hu3DMotionTimeSet(arg0->model[temp_r24], 0.0f);
Hu3DModelAttrSet(arg0->model[temp_r24], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(arg0->model[temp_r24], 1);
Hu3DModelRotSet(arg0->model[temp_r24], 0.0f, 0.0f, 0.0f);
}
arg0->func = fn_1_3B74;
}
void fn_1_AC4C(omObjData* arg0) {
s32 sp8[] = { 0, 1, 2, 3 };
StructBss3CData* temp_r31;
s32 var_r27;
s32 j;
s32 i;
var_r27 = 0;
temp_r31 = arg0->data;
memset(temp_r31, 0, sizeof(*temp_r31));
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (i == GWPlayerCfg[j].group) {
sp8[var_r27] = j;
var_r27++;
}
}
}
temp_r31->unk00 = arg0->work[0];
temp_r31->unk04 = sp8[temp_r31->unk00];
if (temp_r31->unk04 == 4) {
OSReport("m422:wrong player group\n");
temp_r31->unk04 = temp_r31->unk00;
}
temp_r31->unk08 = GWPlayerCfg[temp_r31->unk04].character;
temp_r31->unk0C = (GWPlayerCfg[temp_r31->unk04].iscom ? -1 : GWPlayerCfg[temp_r31->unk04].pad_idx);
temp_r31->unk10 = (temp_r31->unk0C != -1) ? 0 : GWPlayerCfg[temp_r31->unk04].diff;
temp_r31->unk14 = rand8();
temp_r31->unk20 = 0;
arg0->model[0] = CharModelCreate(temp_r31->unk08, temp_r31->unk00 == 0 ? 2 : 2);
Hu3DModelLayerSet(arg0->model[0], 1);
Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrSet(arg0->model[0], 1);
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 50));
Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 0.0f);
Hu3DModelLayerSet(arg0->model[1], 0);
temp_r31->unk18 = 0;
temp_r31->unk1C = -1;
for (i = 0; i < 8; i++) {
arg0->motion[i] = CharModelMotionCreate(temp_r31->unk08, lbl_1_data_A0[i] + (lbl_1_data_C0[i] != 0 ? temp_r31->unk08 : 0));
}
CharModelVoiceEnableSet(temp_r31->unk08, arg0->motion[6], 0);
Hu3DMotionSet(arg0->model[0], arg0->motion[3]);
arg0->trans.x = lbl_1_data_18B4[temp_r31->unk00][0];
arg0->trans.y = lbl_1_data_18B4[temp_r31->unk00][1];
arg0->trans.z = lbl_1_data_18B4[temp_r31->unk00][2];
arg0->rot.y = lbl_1_data_18B4[temp_r31->unk00][3];
arg0->scale.x = arg0->scale.y = arg0->scale.z = 1.0f;
arg0->rot.x = arg0->rot.z = 0.0f;
arg0->func = fn_1_2FC;
}
void fn_1_B004(omObjData* arg0) {
lbl_1_bss_34 = 1000;
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
arg0->func = fn_1_89E0;
}
void ObjectSetup(void) {
omObjData* var_r30;
s32 i;
OSReport("******* M422 ObjectSetup *********\n");
HuAudSndGrpSet(47);
lbl_1_bss_30 = omInitObjMan(600, 0x2000);
omGameSysInit(lbl_1_bss_30);
Hu3DCameraCreate(1);
Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 25000.0f, 1.2f);
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
CZoom = 1676.6f;
Center.x = 690.0f;
Center.y = 1340.0f;
Center.z = 1380.0f;
CRot.x = -50.8125f;
CRot.y = 40.0f;
CRot.z = 0.0f;
CZoom = 2126.6f;
Center.x = 700.0f;
Center.y = 870.0f;
Center.z = 1320.0f;
CRot.x = -37.25f;
CRot.y = 40.0f;
CRot.z = 0.0f;
{
Vec sp18 = { -822.5f, 6743.0f, 4625.5f };
Vec spC = { 0.1545085f, -0.788462f, -0.5850064f };
GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF };
lbl_1_bss_24 = Hu3DGLightCreateV(&sp18, &spC, &sp8);
}
Hu3DGLightStaticSet(lbl_1_bss_24, 1);
Hu3DGLightInfinitytSet(lbl_1_bss_24);
lbl_1_bss_2E = -1;
lbl_1_bss_20 = -1;
lbl_1_bss_38 = omAddObjEx(lbl_1_bss_30, 101, 103, 34, 1, fn_1_9900);
for (i = 0; i < 4; i++) {
var_r30 = lbl_1_bss_3C[i] = omAddObjEx(lbl_1_bss_30, 100, 2, 8, 0, fn_1_AC4C);
var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StructBss3CData), MEMORY_DEFAULT_NUM);
var_r30->work[0] = i;
}
lbl_1_bss_4C = omAddObjEx(lbl_1_bss_30, 0x7FDA, 0, 0, -1, omOutView);
lbl_1_bss_50 = omAddObjEx(lbl_1_bss_30, 102, 0, 0, -1, fn_1_B004);
}
void fn_1_B480(omObjData* arg0) {
StructBss3CData* var_r30;
s32 i;
if (WipeStatGet() == 0) {
for (i = 0; i < 4; i++) {
var_r30 = lbl_1_bss_3C[i]->data;
CharModelKill(var_r30->unk08);
}
if (lbl_1_bss_2E >= 0) {
MGSeqKill(lbl_1_bss_2E);
}
MGSeqKillAll();
HuAudAllStop();
omOvlReturnEx(1, 1);
}
}