marioparty4/src/REL/m436Dll/main.c
2024-11-10 06:57:04 +01:00

3300 lines
94 KiB
C
Executable file

#include "REL/m436Dll.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/gamework_data.h"
#include "game/hsfdraw.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/minigame_seq.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/process.h"
#include "game/window.h"
#include "game/wipe.h"
#include "ext_math.h"
typedef struct {
/* 0x00 */ omObjData *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 */ s32 unk28;
/* 0x2C */ float unk2C;
} StructBss3E4; // Size 0x30
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
} StructBss4A4; // Size 0x10
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ float unk04;
/* 0x08 */ s32 unk08[15];
/* 0x44 */ s32 unk44[15];
/* 0x80 */ float unk80[15][2];
} StructBss234; // Size 0xF8
typedef struct {
/* 0x00 */ omObjData *unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ char unk08[0xC];
} StructBss220; // Size 0x14
typedef struct {
/* 0x00 */ omObjData *unk00;
/* 0x04 */ Vec unk04[8];
} StructBss1BC; // Size 0x64
typedef struct {
/* 0x00 */ omObjData *unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ float unk08[6];
/* 0x20 */ char unk20[8];
/* 0x28 */ float unk28[6];
/* 0x40 */ char unk40[8];
/* 0x48 */ float unk48[6];
/* 0x60 */ char unk60[8];
/* 0x68 */ float unk68[6];
/* 0x80 */ char unk80[8];
/* 0x88 */ float unk88[6];
/* 0xA0 */ char unkA0[8];
} StructBssD8; // Size 0xA8
typedef struct {
/* 0x00 */ omObjData *unk00;
/* 0x04 */ char unk04[0x10];
} StructBss1A8; // Size 0x14
typedef struct {
/* 0x00 */ omObjData *unk00;
/* 0x04 */ char unk04[0x10];
} StructBss180; // Size 0x14
typedef struct {
/* 0x00 */ char unk00[0x28];
/* 0x28 */ s32 unk28;
/* 0x2C */ char unk2C[0xC];
} StructBss3AC; // Size 0x38
s32 fn_1_538C(s32 arg0);
StructBss4A4 lbl_1_bss_4A4;
StructBss3E4 lbl_1_bss_3E4[4];
StructBss3AC lbl_1_bss_3AC;
s32 lbl_1_bss_3A4[2];
StructBss32C lbl_1_bss_32C;
StructBss234 lbl_1_bss_234;
StructBss220 lbl_1_bss_220;
StructBss1BC lbl_1_bss_1BC;
StructBss1A8 lbl_1_bss_1A8;
StructBss180 lbl_1_bss_180[2];
StructBssD8 lbl_1_bss_D8;
StructBssC0 lbl_1_bss_C0;
StructBssC0 lbl_1_bss_A8;
Mtx lbl_1_bss_78;
Mtx lbl_1_bss_48;
Vec lbl_1_bss_3C;
StructBssC0 lbl_1_bss_24;
s32 lbl_1_bss_20_pad; // unused
s32 lbl_1_bss_1C;
s32 lbl_1_bss_18;
s32 lbl_1_bss_14;
s32 lbl_1_bss_10;
s32 lbl_1_bss_C;
s32 lbl_1_bss_8;
s32 lbl_1_bss_4;
Process *lbl_1_bss_0;
s32 lbl_1_data_0[]
= { DATA_MAKE_NUM(DATADIR_M436, 13), DATA_MAKE_NUM(DATADIR_M436, 14), DATA_MAKE_NUM(DATADIR_M436, 15), DATA_MAKE_NUM(DATADIR_M436, 16),
DATA_MAKE_NUM(DATADIR_M436, 17), DATA_MAKE_NUM(DATADIR_M436, 18), DATA_MAKE_NUM(DATADIR_M436, 19), DATA_MAKE_NUM(DATADIR_M436, 20) };
s32 lbl_1_data_20[] = { MAKE_MESSID(29, 23), MAKE_MESSID(29, 24), MAKE_MESSID(29, 30), MAKE_MESSID(29, 26), MAKE_MESSID(29, 28), MAKE_MESSID(29, 27),
MAKE_MESSID(29, 25), MAKE_MESSID(29, 29) };
s32 lbl_1_data_40[][5] = { { 91, 105, 126, 141, -1 }, { 91, 105, 126, 141, -1 }, { 124, 137, -1, -1, -1 }, { 85, 100, 127, -1, -1 },
{ 124, 139, -1, -1, -1 }, { 85, 97, 127, 139, -1 }, { 127, 137, -1, -1, -1 }, { 79, 95, 109, 127, -1 } };
s32 lbl_1_data_E0 = -1;
s32 lbl_1_data_E4 = -1;
s32 lbl_1_data_E8 = -1;
void fn_1_0(void)
{
s32 i;
while (TRUE) {
HuPrcVSleep();
if (lbl_1_data_E0 == -1 || lbl_1_data_E4 == -1 || lbl_1_data_E8 == -1 || lbl_1_data_E4 != Hu3DMotionIDGet(lbl_1_data_E0)) {
continue;
}
for (i = 0; i < 5; i++) {
if (lbl_1_data_40[lbl_1_data_E8][i] != -1 && Hu3DMotionTimeGet(lbl_1_data_E0) >= lbl_1_data_40[lbl_1_data_E8][i]) {
OSReport("KE-System CHR:%d TIME:%d\n", lbl_1_data_E8, lbl_1_data_40[lbl_1_data_E8][i]);
HuAudFXPlay(0x6D8);
lbl_1_data_40[lbl_1_data_E8][i] = -1;
}
}
}
}
void fn_1_1A8(void)
{
s32 var_r31;
var_r31 = Hu3DGLightCreate(0.0f, 1000.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0xFF, 0xFF, 0xFF);
Hu3DGLightInfinitytSet(var_r31);
}
void fn_1_230(void)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
if (HuPadBtn[0] & 0x200) {
if (HuPadBtn[0] & 0x100) {
var_r31->unk0C -= HuPadStkY[0] / 10.0f;
}
else {
var_r31->unk04 += HuPadStkX[0] / 10.0f;
var_r31->unk08 += HuPadStkY[0] / 10.0f;
}
}
if (HuPadBtn[0] & 0x800) {
var_r31->unk1C -= HuPadStkY[0] / 100.0f;
var_r31->unk20 += HuPadStkX[0] / 100.0f;
}
if (HuPadBtn[0] & 0x400) {
var_r31->unk34 -= HuPadStkY[0] / 10.0f;
}
if (var_r31->unk1C >= 360.0f) {
var_r31->unk1C -= 360.0f;
}
if (var_r31->unk1C < 0.0f) {
var_r31->unk1C += 360.0f;
}
if (var_r31->unk20 >= 360.0f) {
var_r31->unk20 -= 360.0f;
}
if (var_r31->unk20 < 0.0f) {
var_r31->unk20 += 360.0f;
}
print8(16, 100, 1.0f, ">>>>>>>>>> CAMERA TEST <<<<<<<<<<");
print8(16, 110, 1.0f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk04, var_r31->unk08, var_r31->unk0C);
print8(16, 120, 1.0f, "ROT : %.2f, %.2f, %.2f", var_r31->unk1C, var_r31->unk20, var_r31->unk24);
print8(16, 130, 1.0f, "ZOOM : %.2f", var_r31->unk34);
}
void fn_1_614(s32 arg0, s32 arg1, float arg2)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
var_r31->unk40[arg0] = arg1;
if (var_r31->unk5C[arg0] < 0.0f) {
var_r31->unk5C[arg0] = -arg2;
}
else {
var_r31->unk5C[arg0] = arg2;
}
}
void fn_1_67C(s32 arg0, float arg1)
{
fn_1_614(arg0, -1, arg1);
}
float fn_1_6E8(s32 arg0)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
if (var_r31->unk5C[arg0] != 0.0f) {
var_r31->unk5C[arg0] *= -0.9f;
if (var_r31->unk40[arg0] == -1) {
if (var_r31->unk5C[arg0] >= -0.5f && var_r31->unk5C[arg0] <= 0.5f) {
var_r31->unk5C[arg0] = 0.0f;
}
}
else {
var_r31->unk40[arg0]--;
if (var_r31->unk40[arg0] <= 0) {
var_r31->unk40[arg0] = 0;
var_r31->unk5C[arg0] = 0.0f;
}
}
}
return var_r31->unk5C[arg0];
}
void fn_1_818(void)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
var_r31->unk04 = 0.0f;
var_r31->unk08 = 225.0f;
var_r31->unk0C = 1740.0f;
var_r31->unk1C = -10.0f;
var_r31->unk20 = 0.0f;
var_r31->unk24 = 0.0f;
var_r31->unk34 = 300.0f;
}
void fn_1_8A4(void (*arg0)(void))
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
var_r31->unk00 = arg0;
}
void fn_1_8C4(omObjData *arg0)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
if (var_r31->unk00 != NULL) {
var_r31->unk00();
}
Center.x = var_r31->unk04 + fn_1_6E8(0);
Center.y = var_r31->unk08 + fn_1_6E8(1);
Center.z = var_r31->unk0C + fn_1_6E8(2);
CRot.x = var_r31->unk1C + fn_1_6E8(3);
CRot.y = var_r31->unk20 + fn_1_6E8(4);
CRot.z = var_r31->unk24 + fn_1_6E8(5);
CZoom = var_r31->unk34 + fn_1_6E8(6);
}
void fn_1_F6C(void)
{
Hu3DCameraCreate(1);
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
Hu3DCameraPerspectiveSet(1, 45.0f, 0.1f, 10000.0f, 1.2f);
fn_1_8A4(fn_1_818);
omAddObjEx(lbl_1_bss_0, 0x7FDA, 0, 0, -1, omOutView);
omAddObjEx(lbl_1_bss_0, 0x7FD9, 0, 0, -1, fn_1_8C4);
}
void fn_1_1084(void)
{
Vec sp20 = { 0.0f, 2500.0f, 1.0f };
Vec sp14 = { 0.0f, 0.0f, 0.0f };
Vec sp8 = { 0.0f, 1.0f, 0.0f };
Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f);
Hu3DShadowTPLvlSet(0.8f);
Hu3DShadowPosSet(&sp20, &sp8, &sp14);
}
void fn_1_1148(s32 arg0, float arg1, float arg2, s32 arg3)
{
WindowData *temp_r29;
float temp_f29;
float temp_f28;
float temp_f25;
float temp_f24;
float temp_f27;
float temp_f26;
float var_f31;
float var_f30;
float var_f23;
float var_f22;
float var_f21;
float var_f20;
s32 i;
temp_r29 = &winData[arg0];
temp_f29 = temp_r29->pos_x;
temp_f28 = temp_r29->pos_y;
temp_f25 = temp_r29->w;
temp_f24 = temp_r29->h;
var_f31 = temp_f29 + temp_f25 * arg1;
temp_f27 = 4.0f / temp_f25;
if (var_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) {
var_f31 = temp_f29 + temp_f25 - 4.0f;
}
else {
if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) {
var_f31 = temp_f29;
}
else {
var_f31 -= 2.0f;
}
}
var_f30 = temp_f28 + temp_f24 * arg2;
temp_f26 = 4.0f / temp_f24;
if (var_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) {
var_f30 = temp_f28 + temp_f24 - 4.0f;
}
else {
if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) {
var_f30 = temp_f28;
}
else {
var_f30 -= 2.0f;
}
}
if (arg3 != 0) {
HuWinPosSet(arg0, var_f31, var_f30);
HuWinScaleSet(arg0, temp_f27, temp_f26);
var_f23 = var_f31;
var_f21 = temp_f27;
var_f22 = var_f30;
var_f20 = temp_f26;
}
else {
HuWinPosSet(arg0, temp_f29, temp_f28);
HuWinScaleSet(arg0, 1.0f, 1.0f);
var_f23 = temp_f29;
var_f21 = 1.0f;
var_f22 = temp_f28;
var_f20 = 1.0f;
}
HuWinDispOn(arg0);
for (i = 0; i <= 15; i++) {
HuPrcVSleep();
if (arg3 != 0) {
if (i <= 10) {
var_f23 = fn_1_11164(var_f31, temp_f29, i, 10.0f);
var_f21 = fn_1_11164(temp_f27, 1.0f, i, 10.0f);
}
else {
var_f22 = fn_1_11164(var_f30, temp_f28, i - 10, 5.0f);
var_f20 = fn_1_11164(temp_f26, 1.0f, i - 10, 5.0f);
}
}
else {
if (i <= 10) {
var_f22 = fn_1_11164(temp_f28, var_f30, i, 10.0f);
var_f20 = fn_1_11164(1.0f, temp_f26, i, 10.0f);
}
else {
var_f23 = fn_1_11164(temp_f29, var_f31, i - 10, 5.0f);
var_f21 = fn_1_11164(1.0f, temp_f27, i - 10, 5.0f);
}
}
HuWinPosSet(arg0, var_f23, var_f22);
HuWinScaleSet(arg0, var_f21, var_f20);
}
if (arg3 != 0) {
HuWinPosSet(arg0, temp_f29, temp_f28);
HuWinScaleSet(arg0, 1.0f, 1.0f);
}
else {
HuWinPosSet(arg0, var_f31, var_f30);
HuWinScaleSet(arg0, temp_f27, temp_f26);
}
HuPrcVSleep();
}
void fn_1_178C(void)
{
HuWinInit(1);
}
void fn_1_17B0(s32 arg0, float arg1, float arg2)
{
WindowData *temp_r31;
float temp_f29;
float temp_f28;
float temp_f27;
float temp_f26;
float temp_f25;
float temp_f24;
float var_f31;
float var_f30;
float temp_f23;
float temp_f22;
float temp_f21;
float temp_f20;
s32 i;
temp_r31 = &winData[arg0];
temp_f29 = temp_r31->pos_x;
temp_f28 = temp_r31->pos_y;
temp_f27 = temp_r31->w;
temp_f26 = temp_r31->h;
var_f31 = temp_f29 + temp_f27 * arg1;
temp_f25 = 4.0f / temp_f27;
if (var_f31 + 4.0f - (temp_f29 + temp_f27) >= 0.0f) {
var_f31 = temp_f29 + temp_f27 - 4.0f;
}
else {
if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) {
var_f31 = temp_f29;
}
else {
var_f31 = var_f31 - 2.0f;
}
}
var_f30 = temp_f28 + temp_f26 * arg2;
temp_f24 = 4.0f / temp_f26;
if (var_f30 + 4.0f - (temp_f28 + temp_f26) >= 0.0f) {
var_f30 = temp_f28 + temp_f26 - 4.0f;
}
else {
if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) {
var_f30 = temp_f28;
}
else {
var_f30 = var_f30 - 2.0f;
}
}
HuWinPosSet(arg0, var_f31, var_f30);
HuWinScaleSet(arg0, temp_f25, temp_f24);
HuPrcVSleep();
for (i = 0; i < 10; i++) {
temp_f23 = fn_1_11164(var_f31, temp_f29, i, 10.0f);
temp_f21 = fn_1_11164(temp_f25, 1.0f, i, 10.0f);
temp_f22 = fn_1_11164(var_f30, temp_f28, i, 10.0f);
temp_f20 = fn_1_11164(temp_f24, 1.0f, i, 10.0f);
HuWinPosSet(arg0, temp_f23, temp_f22);
HuWinScaleSet(arg0, temp_f21, temp_f20);
HuPrcVSleep();
}
HuWinPosSet(arg0, temp_f29, temp_f28);
HuWinScaleSet(arg0, 1.0f, 1.0f);
HuPrcVSleep();
}
void fn_1_1C08(s32 arg0, float arg1, float arg2)
{
WindowData *temp_r31;
float temp_f29;
float temp_f28;
float temp_f27;
float temp_f26;
float temp_f25;
float temp_f24;
float var_f31;
float var_f30;
float temp_f23;
float temp_f22;
float temp_f21;
float temp_f20;
s32 i;
temp_r31 = &winData[arg0];
temp_f29 = temp_r31->pos_x;
temp_f28 = temp_r31->pos_y;
temp_f27 = temp_r31->w;
temp_f26 = temp_r31->h;
var_f31 = temp_f29 + temp_f27 * arg1;
temp_f25 = 4.0f / temp_f27;
if (var_f31 + 4.0f - (temp_f29 + temp_f27) >= 0.0f) {
var_f31 = temp_f29 + temp_f27 - 4.0f;
}
else {
if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) {
var_f31 = temp_f29;
}
else {
var_f31 = var_f31 - 2.0f;
}
}
var_f30 = temp_f28 + temp_f26 * arg2;
temp_f24 = 4.0f / temp_f26;
if (var_f30 + 4.0f - (temp_f28 + temp_f26) >= 0.0f) {
var_f30 = temp_f28 + temp_f26 - 4.0f;
}
else {
if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) {
var_f30 = temp_f28;
}
else {
var_f30 = var_f30 - 2.0f;
}
}
HuWinPosSet(arg0, temp_f29, temp_f28);
HuWinScaleSet(arg0, 1.0f, 1.0f);
HuPrcVSleep();
for (i = 0; i < 10; i++) {
temp_f23 = fn_1_112F4(temp_f29, var_f31, i, 10.0f);
temp_f21 = fn_1_112F4(1.0f, temp_f25, i, 10.0f);
temp_f22 = fn_1_112F4(temp_f28, var_f30, i, 10.0f);
temp_f20 = fn_1_112F4(1.0f, temp_f24, i, 10.0f);
HuWinPosSet(arg0, temp_f23, temp_f22);
HuWinScaleSet(arg0, temp_f21, temp_f20);
HuPrcVSleep();
}
HuWinPosSet(arg0, var_f31, var_f30);
HuWinScaleSet(arg0, temp_f25, temp_f24);
HuPrcVSleep();
}
s32 fn_1_2060(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s32 arg4)
{
s32 sp20[][5] = { { 0xFF, 0xFF, 0xCC, 0x00, 0x09 }, { 0xCC, 0xFF, 0xFF, 0x00, 0x09 }, { 0xFF, 0xCC, 0xFF, 0x00, 0x09 } };
float sp14[] = { 0.9f, 0.9f, 0.9f };
GXColor sp10;
s32 temp_r31;
temp_r31 = HuWinCreate(arg0, arg1, arg2, arg3, 1);
sp10.r = sp20[arg4][0];
sp10.g = sp20[arg4][1];
sp10.b = sp20[arg4][2];
HuWinBGColSet(temp_r31, &sp10);
HuWinBGTPLvlSet(temp_r31, sp14[arg4]);
fn_1_1148(temp_r31, 0.5f, 0.5f, 1);
return temp_r31;
}
s32 fn_1_2230(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s32 arg4)
{
return fn_1_2060(arg0, arg1, arg2, arg3, arg4);
}
void fn_1_2400(s32 arg0)
{
HuWinMesSet(arg0, MAKE_MESSID(29, 22));
HuPrcVSleep();
fn_1_1148(arg0, 0.5f, 0.5f, 0);
HuWinKill(arg0);
}
void fn_1_2468(s32 arg0)
{
fn_1_2400(arg0);
}
void fn_1_24D0(s32 arg0, s32 arg1)
{
s32 i;
s32 var_r30;
s32 temp_r28;
var_r30 = 0;
temp_r28 = GWMessDelayGet();
if (arg1 > 0) {
HuPrcSleep(arg1);
return;
}
HuWinComKeyReset();
for (i = 0; i < 4; i++) {
if (lbl_1_bss_3E4[i].unk0C == 0) {
var_r30 = 1;
winData[arg0].active_pad = 0xF;
}
}
if (var_r30 == 0) {
winData[arg0].active_pad = 0xF;
HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, temp_r28);
}
HuWinMesWait(arg0);
HuWinComKeyReset();
}
void fn_1_25B8(s32 arg0)
{
s32 var_r31;
s32 temp_r28;
s32 i;
var_r31 = 0;
temp_r28 = GWMessDelayGet();
HuWinComKeyReset();
for (i = 0; i < 4; i++) {
if (lbl_1_bss_3E4[i].unk0C == 0) {
var_r31 = 1;
winData[arg0].active_pad = 0xF;
}
}
if (var_r31 == 0) {
winData[arg0].active_pad = 0xF;
HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, temp_r28);
}
var_r31 = HuWinChoiceGet(arg0, 1);
if (var_r31 == -1 || var_r31 == 1) {
lbl_1_bss_8 = 0;
}
else {
lbl_1_bss_8 = 1;
}
HuWinComKeyReset();
}
void fn_1_26D4(float *arg0, s32 arg1)
{
float spC[2];
HuWinMesMaxSizeGet(1, spC, arg1);
if (spC[0] > arg0[0]) {
arg0[0] = spC[0];
}
if (spC[1] > arg0[1]) {
arg0[1] = spC[1];
}
}
void fn_1_2744(s32 arg0, s32 arg1)
{
winData[arg0].mess_color = 0;
winData[arg0].mess_shadow_color = 9;
winData[arg0].attr |= 0x80;
HuWinMesSet(arg0, arg1);
}
void fn_1_27C8(s32 arg0)
{
if (lbl_1_bss_10 == 0) {
lbl_1_bss_10 = 1;
lbl_1_bss_C = arg0 * 60;
}
}
s32 fn_1_2800(void)
{
if (lbl_1_bss_10 == 3) {
return 1;
}
else {
return 0;
}
}
void fn_1_2824(void)
{
if (lbl_1_bss_10 == 2) {
lbl_1_bss_10 = 3;
lbl_1_bss_C = 30;
}
}
s32 lbl_1_data_16C = -1;
void fn_1_285C(omObjData *arg0)
{
switch (lbl_1_bss_10) {
case 1:
if (lbl_1_data_16C == -1) {
lbl_1_data_16C = MGSeqCreate(1, lbl_1_bss_C / 60, -1, -1);
}
lbl_1_bss_10 = 2;
break;
case 2:
lbl_1_bss_C--;
if (lbl_1_data_16C != -1) {
MGSeqParamSet(lbl_1_data_16C, 1, (lbl_1_bss_C + 59) / 60);
}
if (lbl_1_bss_C <= 0) {
lbl_1_bss_C = 30;
lbl_1_bss_10 = 3;
}
break;
case 3:
if (lbl_1_data_16C != -1) {
MGSeqParamSet(lbl_1_data_16C, 2, -1);
lbl_1_data_16C = -1;
}
lbl_1_bss_C = 0;
lbl_1_bss_10 = 0;
break;
}
}
void fn_1_2A2C(void)
{
lbl_1_bss_C = 0;
lbl_1_bss_10 = 0;
omAddObjEx(lbl_1_bss_0, 0x2000, 0, 0, -1, fn_1_285C);
}
void fn_1_2A90(s32 arg0)
{
float spC[2];
float temp_f31;
float temp_f30;
float temp_f28;
float temp_f29;
WindowData *temp_r29;
StructBss234 *var_r31;
s32 i;
temp_r29 = &winData[arg0];
var_r31 = &lbl_1_bss_234;
temp_f31 = temp_r29->pos_x;
temp_f30 = temp_r29->pos_y;
temp_f28 = temp_r29->h;
temp_f29 = temp_r29->w;
for (i = 0; i < var_r31->unk00; i++) {
HuWinMesMaxSizeGet(1, spC, lbl_1_data_20[var_r31->unk44[i]]);
var_r31->unk08[i]
= HuWinCreate(temp_f31 + temp_f29 + 16.0f + var_r31->unk80[i][0], temp_f30 + 26.0f + var_r31->unk80[i][1], spC[0], spC[1], 1);
winData[var_r31->unk08[i]].mess_shadow_color = 9;
HuWinMesColSet(var_r31->unk08[i], 0);
HuWinScissorSet(var_r31->unk08[i], temp_f31 + 20.0f, temp_f30, temp_f29 + 20.0f, temp_f28);
HuWinBGTPLvlSet(var_r31->unk08[i], 0.0f);
HuPrcVSleep();
fn_1_2744(var_r31->unk08[i], lbl_1_data_20[var_r31->unk44[i]]);
}
var_r31->unk04 = 4.0f;
HuPrcVSleep();
}
void fn_1_2D94(s32 arg0)
{
float sp10[2];
float temp_f31;
float temp_f29;
float spC;
float temp_f30;
WindowData *temp_r30;
StructBss234 *var_r31;
s32 i;
temp_r30 = &winData[arg0];
var_r31 = &lbl_1_bss_234;
temp_f31 = temp_r30->pos_x;
temp_f29 = temp_r30->pos_y;
spC = temp_r30->h;
temp_f30 = temp_r30->w;
while (TRUE) {
for (i = 0; i < var_r31->unk00; i++) {
var_r31->unk80[i][0] -= var_r31->unk04;
HuWinPosSet(var_r31->unk08[i], temp_f31 + temp_f30 + 16.0f + var_r31->unk80[i][0], 26.0f + temp_f29 + var_r31->unk80[i][1]);
}
if (var_r31->unk00 >= 2) {
HuWinMesMaxSizeGet(1, sp10, lbl_1_data_20[var_r31->unk44[2]]);
if (temp_f31 + temp_f30 + 16.0f + var_r31->unk80[2][0] + sp10[0] <= temp_f31 + temp_f30 - 16.0f) {
var_r31->unk04 += 0.75f;
}
}
HuWinMesMaxSizeGet(1, sp10, lbl_1_data_20[var_r31->unk44[var_r31->unk00 - 1]]);
if (temp_f31 + temp_f30 + 16.0f + var_r31->unk80[var_r31->unk00 - 1][0] + sp10[0] <= temp_f31 - 16.0f) {
break;
}
HuPrcVSleep();
}
HuPrcVSleep();
}
void fn_1_3020(void)
{
s32 i;
StructBss234 *var_r30;
var_r30 = &lbl_1_bss_234;
for (i = 0; i < var_r30->unk00; i++) {
HuWinKill(var_r30->unk08[i]);
HuPrcVSleep();
}
HuPrcVSleep();
}
void fn_1_3088(void)
{
float sp8[2];
StructBss234 *var_r31;
s32 i;
var_r31 = &lbl_1_bss_234;
var_r31->unk00 = rand8() % 2 + 10;
if (var_r31->unk00 >= 15) {
var_r31->unk00 = 15;
}
for (i = 0; i < 15; i++) {
var_r31->unk44[i] = -1;
}
for (i = 0; i < var_r31->unk00; i++) {
var_r31->unk44[i] = rand8() % 8;
}
var_r31->unk80[0][0] = 0.0f;
var_r31->unk80[0][1] = 0.0f;
for (i = 1; i < var_r31->unk00; i++) {
HuWinMesMaxSizeGet(1, sp8, lbl_1_data_20[var_r31->unk44[i - 1]]);
var_r31->unk80[i][0] = var_r31->unk80[i - 1][0] + sp8[0] + 8.0f;
var_r31->unk80[i][1] = var_r31->unk80[0][1];
}
}
void fn_1_31FC(omObjData *arg0)
{
StructBss220 *var_r29;
ModelData *temp_r30;
s32 i;
var_r29 = &lbl_1_bss_220;
temp_r30 = &Hu3DData[arg0->model[8]];
for (i = 0; i < 3; i++) {
Hu3DData[arg0->model[i + 5]].rot.y += 360.0f / (2500.0f + 2500.0f * i);
}
if (arg0->work[0] == 0 && arg0->work[2]++ >= 600) {
arg0->work[2] = 0;
if (rand8() % 2 == 0) {
arg0->work[0] = 1;
}
}
switch (arg0->work[0]) {
case 10:
var_r29->unk04 = 11;
fn_1_11818(arg0, 10, 12, 1, 0);
Hu3DModelAttrReset(arg0->model[10], HU3D_ATTR_DISPOFF);
fn_1_614(1, 10, 4.0f);
HuAudFXPlay(0x6CF);
/* fallthrough */
case 1:
case 11:
fn_1_11818(arg0, 0, 0, 1, 0);
fn_1_11818(arg0, 3, 3, 1, 0);
fn_1_11818(arg0, 4, 4, 1, 0);
fn_1_11818(arg0, 5, 5, 1, 0);
fn_1_11818(arg0, 6, 6, 1, 0);
fn_1_11818(arg0, 7, 7, 1, 0);
if (arg0->work[0] == 1) {
HuAudFXPlay(0x6CE);
}
arg0->work[0] = 99;
break;
case 2:
arg0->work[0] = 3;
fn_1_11818(arg0, 0, 0, 1, 0);
fn_1_11818(arg0, 1, 1, 1, 0);
fn_1_11818(arg0, 2, 2, 1, 0);
fn_1_11818(arg0, 3, 3, 1, 0);
fn_1_11818(arg0, 4, 4, 1, 0);
fn_1_11818(arg0, 5, 5, 1, 0);
fn_1_11818(arg0, 6, 6, 1, 0);
fn_1_11818(arg0, 7, 7, 1, 0);
fn_1_11818(arg0, 9, 9, 1, 0);
Hu3DModelAttrReset(arg0->model[9], HU3D_ATTR_DISPOFF);
HuAudFXPlay(0x6D0);
break;
case 3:
fn_1_614(6, -1, 8.0f);
if (Hu3DMotionTimeGet(arg0->model[3]) >= 30.0f) {
arg0->work[0] = 99;
fn_1_11818(arg0, 8, 8, 0, 0);
fn_1_614(6, -1, 128.0f);
HuAudFXPlay(0x6DA);
omVibrate(fn_1_538C(0), 12, 12, 0);
omVibrate(fn_1_538C(1), 12, 12, 0);
omVibrate(fn_1_538C(2), 12, 12, 0);
omVibrate(fn_1_538C(3), 12, 12, 0);
Hu3DModelAttrReset(arg0->model[8], HU3D_ATTR_DISPOFF);
}
break;
case 99:
if (Hu3DMotionEndCheck(arg0->model[3]) != 0) {
arg0->work[0] = 0;
fn_1_11818(arg0, 3, 10, 1, 1);
fn_1_11818(arg0, 4, 11, 1, 1);
Hu3DModelAttrSet(arg0->model[9], HU3D_ATTR_DISPOFF);
}
break;
}
if (Hu3DMotionTimeGet(arg0->model[10]) >= 25.0f && var_r29->unk04 == 0) {
var_r29->unk04 = 1;
fn_1_614(1, 10, 4.0f);
}
else if (Hu3DMotionTimeGet(arg0->model[10]) >= 40.0f && var_r29->unk04 == 1) {
var_r29->unk04 = 2;
fn_1_614(1, 10, 4.0f);
}
switch (arg0->work[1]) {
case 1:
if (arg0->work[3] >= 360.0f) {
arg0->work[3] = 0;
}
temp_r30->pos.y = fn_1_110FC(temp_r30->pos.y, fn_1_1122C(210.0f, 220.0f, arg0->work[3]++, 360.0f), 30.0f);
break;
case 2:
temp_r30->pos.y = fn_1_110FC(temp_r30->pos.y, 60.0f, 20.0f);
arg0->work[3] = 0;
break;
case 3:
temp_r30->pos.y = fn_1_110FC(temp_r30->pos.y, 260.0f, 20.0f);
arg0->work[3] = 0;
break;
}
}
void fn_1_39B4(omObjData *arg0)
{
fn_1_11818(arg0, 0, 0, 1, 2);
Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, -680.0f);
fn_1_11818(arg0, 1, 1, 1, 2);
Hu3DModelPosSet(arg0->model[2], 0.0f, 0.0f, -680.0f);
fn_1_11818(arg0, 2, 2, 1, 2);
Hu3DModelPosSet(arg0->model[3], 525.0f, 0.0f, -1150.0f);
fn_1_11818(arg0, 3, 10, 1, 1);
Hu3DModelPosSet(arg0->model[4], -525.0f, 0.0f, -1150.0f);
fn_1_11818(arg0, 4, 11, 1, 1);
fn_1_11818(arg0, 5, 5, 1, 2);
fn_1_11818(arg0, 6, 6, 1, 2);
fn_1_11818(arg0, 7, 7, 1, 2);
Hu3DModelPosSet(arg0->model[8], 0.0f, 210.0f, -320.0f);
Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF);
fn_1_11818(arg0, 8, 8, 1, 1);
Hu3DModelAttrSet(arg0->model[9], HU3D_ATTR_DISPOFF);
fn_1_11818(arg0, 9, 9, 1, 2);
arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0;
}
void fn_1_3BF0(omObjData *arg0)
{
arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 21));
arg0->motion[0] = Hu3DMotionIDGet(arg0->model[0]);
Hu3DModelShadowMapSet(arg0->model[0]);
fn_1_11818(arg0, 0, 0, 1, 2);
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 22));
arg0->motion[1] = Hu3DMotionIDGet(arg0->model[1]);
Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, -680.0f);
Hu3DModelShadowMapSet(arg0->model[1]);
fn_1_11818(arg0, 1, 1, 1, 2);
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 23));
arg0->motion[2] = Hu3DMotionIDGet(arg0->model[2]);
Hu3DModelPosSet(arg0->model[2], 0.0f, 0.0f, -680.0f);
Hu3DModelShadowSet(arg0->model[2]);
fn_1_11818(arg0, 2, 2, 1, 2);
arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 24));
arg0->motion[3] = Hu3DMotionIDGet(arg0->model[3]);
arg0->motion[10] = Hu3DJointMotionFile(arg0->model[3], DATA_MAKE_NUM(DATADIR_M436, 26));
Hu3DModelPosSet(arg0->model[3], 525.0f, 0.0f, -1150.0f);
Hu3DModelShadowSet(arg0->model[3]);
fn_1_11818(arg0, 3, 10, 1, 1);
arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 25));
arg0->motion[4] = Hu3DMotionIDGet(arg0->model[4]);
arg0->motion[11] = Hu3DJointMotionFile(arg0->model[4], DATA_MAKE_NUM(DATADIR_M436, 27));
Hu3DModelPosSet(arg0->model[4], -525.0f, 0.0f, -1150.0f);
Hu3DModelShadowSet(arg0->model[4]);
fn_1_11818(arg0, 4, 11, 1, 1);
arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 10));
arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]);
Hu3DModelPosSet(arg0->model[5], 0.0f, 150.0f, 0.0f);
Hu3DModelLayerSet(arg0->model[5], 1);
fn_1_11818(arg0, 5, 5, 1, 2);
arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 11));
arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]);
Hu3DModelPosSet(arg0->model[6], 0.0f, 150.0f, 0.0f);
fn_1_11818(arg0, 6, 6, 1, 2);
arg0->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 12));
arg0->motion[7] = Hu3DMotionIDGet(arg0->model[7]);
Hu3DModelPosSet(arg0->model[7], 0.0f, 150.0f, 0.0f);
fn_1_11818(arg0, 7, 7, 1, 2);
arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 8));
arg0->motion[8] = Hu3DMotionIDGet(arg0->model[8]);
Hu3DModelPosSet(arg0->model[8], 0.0f, 210.0f, -320.0f);
Hu3DModelShadowSet(arg0->model[8]);
Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF);
Hu3DModelLayerSet(arg0->model[8], 2);
fn_1_11818(arg0, 8, 8, 1, 1);
arg0->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 28));
arg0->motion[9] = Hu3DMotionIDGet(arg0->model[9]);
Hu3DModelAttrSet(arg0->model[9], HU3D_ATTR_DISPOFF);
Hu3DModelLayerSet(arg0->model[9], 2);
fn_1_11818(arg0, 9, 9, 1, 2);
arg0->model[10] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 29));
arg0->motion[12] = Hu3DMotionIDGet(arg0->model[10]);
Hu3DModelAttrSet(arg0->model[10], HU3D_ATTR_DISPOFF);
Hu3DModelLayerSet(arg0->model[10], 2);
fn_1_11818(arg0, 10, 12, 1, 2);
arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0;
arg0->func = fn_1_31FC;
}
void fn_1_420C(omObjData *arg0)
{
s32 i;
switch (arg0->work[0]) {
case 1:
arg0->work[0] = 0;
for (i = 0; i < 8; i++) {
Hu3DModelAttrReset(arg0->model[i + 1], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(arg0->model[i + 9], HU3D_ATTR_DISPOFF);
fn_1_11818(arg0, i + 1, i + 1, 1, 0);
}
break;
case 2:
arg0->work[0] = 0;
Hu3DModelAttrReset(arg0->model[arg0->work[1] + 1], HU3D_ATTR_DISPOFF);
fn_1_11818(arg0, arg0->work[1] + 1, arg0->work[1] + 1, 1, 0);
break;
}
}
void fn_1_4304(omObjData *arg0)
{
StructBss1BC *var_r30;
s32 i;
var_r30 = &lbl_1_bss_1BC;
for (i = 0; i < 8; i++) {
var_r30->unk04[i].x = -2000.0 * cosd(287.5f - 5.0f * i);
var_r30->unk04[i].y = 0.0f;
var_r30->unk04[i].z = -2000.0 * sind(287.5f - 5.0f * i) - 1500.0;
}
for (i = 0; i < 8; i++) {
Hu3DModelPosSet(arg0->model[i + 1], var_r30->unk04[i].x, var_r30->unk04[i].y + 65.0f, var_r30->unk04[i].z);
Hu3DModelAttrSet(arg0->model[i + 1], HU3D_ATTR_DISPOFF);
fn_1_11818(arg0, i + 1, i + 1, 1, 2);
}
for (i = 0; i < 8; i++) {
Hu3DModelPosSet(arg0->model[i + 9], var_r30->unk04[i].x, var_r30->unk04[i].y, var_r30->unk04[i].z);
Hu3DModelAttrSet(arg0->model[i + 9], HU3D_ATTR_DISPOFF);
}
arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0;
}
void fn_1_4594(omObjData *arg0)
{
StructBss1BC *var_r30;
s32 i;
var_r30 = &lbl_1_bss_1BC;
for (i = 0; i < 8; i++) {
var_r30->unk04[i].x = -2000.0 * cosd(287.5f - 5.0f * i);
var_r30->unk04[i].y = 0.0f;
var_r30->unk04[i].z = -2000.0 * sind(287.5f - 5.0f * i) - 1500.0;
}
for (i = 0; i < 8; i++) {
arg0->model[i + 1] = Hu3DModelCreateFile(lbl_1_data_0[i]);
arg0->motion[i + 1] = Hu3DMotionIDGet(arg0->model[i + 1]);
Hu3DModelPosSet(arg0->model[i + 1], var_r30->unk04[i].x, 65.0f + var_r30->unk04[i].y, var_r30->unk04[i].z);
Hu3DModelAttrSet(arg0->model[i + 1], HU3D_ATTR_DISPOFF);
fn_1_11818(arg0, i + 1, i + 1, 1, 2);
}
for (i = 0; i < 8; i++) {
arg0->model[i + 9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 9));
Hu3DModelPosSet(arg0->model[i + 9], var_r30->unk04[i].x, var_r30->unk04[i].y, var_r30->unk04[i].z);
Hu3DModelShadowSet(arg0->model[i + 9]);
}
arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0;
arg0->func = fn_1_420C;
}
void fn_1_48AC(omObjData *arg0)
{
StructBss1A8 *sp8;
sp8 = &lbl_1_bss_1A8;
switch (arg0->work[3]) {
case 1:
arg0->work[3] = 0;
fn_1_11818(arg0, 0, 2, 5, 0);
break;
case 2:
arg0->work[3] = 0;
fn_1_11818(arg0, 0, 1, 30, 1);
break;
case 3:
arg0->work[3] = 0;
fn_1_11818(arg0, 0, 3, 5, 0);
break;
case 4:
arg0->work[3] = 0;
fn_1_11818(arg0, 0, 2, 5, 1);
break;
case 5:
arg0->work[3] = 0;
fn_1_11818(arg0, 0, 2, 5, 0);
break;
}
if (arg0->work[2] == 1) {
arg0->work[2] = 0;
fn_1_11818(arg0, 1, 11, 1, 0);
Hu3DModelAttrReset(arg0->model[1], HU3D_ATTR_DISPOFF);
}
}
void fn_1_49FC(omObjData *arg0)
{
omSetTra(arg0, 0.0f, 37.0f, -565.0f);
omSetSca(arg0, 1.5f, 1.5f, 1.5f);
Hu3DModelHookReset(arg0->model[0]);
fn_1_11818(arg0, 0, 1, 1, 1);
arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0;
}
void fn_1_4AB4(s32 arg0)
{
ModelData *var_r28;
HsfData *temp_r31;
HsfMaterial *var_r30;
s32 i;
var_r28 = &Hu3DData[arg0];
temp_r31 = var_r28->hsfData;
var_r30 = temp_r31->material;
for (i = 0; i < temp_r31->materialCnt; i++, var_r30++) {
var_r30->flags = 0x10;
}
}
void fn_1_4B1C(omObjData *arg0)
{
StructBss1A8 *sp8;
sp8 = &lbl_1_bss_1A8;
arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 31));
arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 32));
arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 33));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 34));
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 35));
arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 36));
arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 37));
arg0->motion[6] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 38));
arg0->motion[7] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 39));
arg0->motion[8] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 40));
arg0->motion[9] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 41));
arg0->motion[10] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 42));
arg0->motion[12] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 43));
omSetTra(arg0, 0.0f, 37.0f, -565.0f);
omSetSca(arg0, 1.5f, 1.5f, 1.5f);
Hu3DModelShadowSet(arg0->model[0]);
fn_1_11818(arg0, 0, 1, 1, 1);
arg0->work[0] = arg0->work[1] = arg0->work[2] = arg0->work[3] = 0;
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 30));
arg0->motion[11] = Hu3DMotionIDGet(arg0->model[1]);
fn_1_11818(arg0, 0, 11, 1, 2);
Hu3DModelPosSet(arg0->model[1], 0.0f, 300.0f, -770.0f);
Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF);
arg0->func = fn_1_48AC;
}
void fn_1_4EA8(omObjData *arg0)
{
switch (arg0->work[3]) {
case 1:
arg0->work[3] = 0;
if (arg0->work[0] == 0) {
fn_1_11818(arg0, 0, 2, 5, 0);
fn_1_11818(arg0, 1, 5, 5, 2);
}
else {
fn_1_11818(arg0, 0, 3, 5, 0);
}
break;
case 2:
arg0->work[3] = 0;
if (arg0->work[0] == 0) {
fn_1_11818(arg0, 0, 0, 30, 1);
fn_1_11818(arg0, 1, 5, 30, 1);
}
else {
fn_1_11818(arg0, 0, 0, 30, 1);
}
break;
}
}
void fn_1_4FB0(omObjData *arg0)
{
s32 temp_r30;
temp_r30 = arg0->work[0];
arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 46));
if (temp_r30 == 0) {
arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 48));
arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 49));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 50));
omSetTra(arg0, -400.0f, 37.0f, -425.0f);
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 58));
arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_M436, 59));
arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_M436, 60));
Hu3DModelHookSet(arg0->model[0], "g007m0-itemhook_r", arg0->model[1]);
Hu3DModelLayerSet(arg0->model[0], 2);
Hu3DModelLayerSet(arg0->model[1], 2);
fn_1_11818(arg0, 0, 0, 1, 1);
fn_1_11818(arg0, 1, 5, 1, 1);
}
else {
arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 47));
arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 51));
arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 52));
arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 53));
arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 54));
arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 55));
arg0->motion[6] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 56));
arg0->motion[7] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, 57));
omSetTra(arg0, 400.0f, 37.0f, -475.0f);
omSetRot(arg0, 0.0f, -15.0f, 0.0f);
fn_1_11818(arg0, 0, 0, 1, 1);
}
Hu3DModelShadowSet(arg0->model[0]);
arg0->func = fn_1_4EA8;
}
s32 fn_1_538C(s32 arg0)
{
StructBss3E4 *temp_r31;
temp_r31 = &lbl_1_bss_3E4[arg0];
return temp_r31->unk04;
}
s32 fn_1_53B4(void)
{
StructBss3E4 *temp_r29;
s32 var_r30;
s32 i;
var_r30 = 0;
for (i = 0; i < 4; i++) {
temp_r29 = &lbl_1_bss_3E4[i];
if (temp_r29->unk0C != 0) {
var_r30++;
}
}
return var_r30;
}
s32 fn_1_5414(s32 arg0)
{
StructBss3E4 *temp_r31;
temp_r31 = &lbl_1_bss_3E4[arg0];
if (temp_r31->unk0C != 0) {
return 1;
}
return 0;
}
s32 fn_1_5450(s32 arg0)
{
StructBss3E4 *temp_r31;
temp_r31 = &lbl_1_bss_3E4[arg0];
if (HuPadBtnDown[temp_r31->unk18] == 0x100) {
return 1;
}
return 0;
}
void fn_1_54A0(void)
{
StructBss3E4 *temp_r31;
s32 sp8[4];
s32 i;
sp8[0] = GWPlayerCurrGet();
for (i = 1; i < 4; i++) {
sp8[i] = sp8[i - 1] + 1;
if (sp8[i] >= 4) {
sp8[i] = 0;
}
}
for (i = 0; i < 4; i++) {
temp_r31 = &lbl_1_bss_3E4[i];
temp_r31->unk04 = sp8[i];
temp_r31->unk08 = GWPlayerCfg[temp_r31->unk04].group;
temp_r31->unk0C = GWPlayerCfg[temp_r31->unk04].iscom;
if (temp_r31->unk0C != 0) {
temp_r31->unk10 = GWPlayerCfg[temp_r31->unk04].diff;
}
else {
temp_r31->unk10 = 0;
}
temp_r31->unk14 = GWPlayerCfg[temp_r31->unk04].character;
temp_r31->unk18 = GWPlayerCfg[temp_r31->unk04].pad_idx;
}
}
s32 fn_1_5608(omObjData *arg0, Vec arg1, float arg2, float arg3, float arg4, float arg5, s32 arg6)
{
float var_f31;
float var_f30;
float var_f27;
float var_f26;
s32 var_r30;
StructBss3E4 *sp18;
var_r30 = 0;
sp18 = &lbl_1_bss_3E4[arg0->work[0]];
var_f31 = arg1.x - arg0->trans.x;
var_f30 = arg0->trans.z - arg1.z;
var_f26 = 90.0 + atan2d(var_f30, var_f31);
var_f27 = sqrtf(var_f31 * var_f31 + var_f30 * var_f30);
if (var_f27 <= arg4) {
var_f31 = var_f30 = 0.0f;
var_r30 = 1;
}
else {
var_f31 = 72.0f * (var_f31 / var_f27);
var_f30 = 72.0f * (var_f30 / var_f27);
}
var_f27 = arg3 * (sqrtf(var_f31 * var_f31 + var_f30 * var_f30) / 72.0f);
if (var_f27 >= arg3) {
var_f27 = arg3;
}
else if (var_f27 <= 1.0f) {
var_f31 = var_f30 = var_f27 = 0.0f;
var_r30 = 1;
}
if (var_f31 != 0.0f || var_f30 != 0.0f || arg2 >= 0.0f) {
if (arg2 >= 0.0f && var_f31 == 0.0f && var_f30 == 0.0f) {
var_f26 = arg2;
}
if (var_f26 >= 180.0f) {
if (arg0->rot.y - var_f26 >= 180.0f) {
arg0->rot.y -= 360.0f;
}
if (arg0->rot.y - var_f26 < -180.0f) {
arg0->rot.y += 360.0f;
}
}
else {
if (arg0->rot.y - var_f26 > 180.0f) {
arg0->rot.y -= 360.0f;
}
if (arg0->rot.y - var_f26 <= -180.0f) {
arg0->rot.y += 360.0f;
}
}
arg0->rot.y = (var_f26 + arg0->rot.y * (arg5 - 1.0f)) / arg5;
}
arg0->trans.x += var_f27 * sind(arg0->rot.y);
arg0->trans.z += var_f27 * cosd(arg0->rot.y);
if (arg6 == 0) {
if (var_f27 >= 6.75f) {
fn_1_11B18(arg0, 0, 2, 15, 1);
}
else if (var_f27 > 0.0f) {
fn_1_11B18(arg0, 0, 1, 15, 1);
}
else {
fn_1_11B18(arg0, 0, 0, 15, 1);
}
}
return var_r30;
}
void fn_1_5CD0(omObjData *arg0)
{
StructBss3E4 *sp8;
char **temp_r26;
s32 var_r22;
s32 i, j;
ModelData *temp_r24;
HsfData *temp_r27;
HsfMaterial *var_r31;
StructBss3E4 *temp_r30;
HsfAttribute *temp_r23;
sp8 = &lbl_1_bss_3E4[arg0->work[0]];
if (arg0->work[2] != 1) {
return;
}
var_r22 = 1;
temp_r24 = &Hu3DData[arg0->model[0]];
temp_r27 = temp_r24->hsfData;
var_r31 = temp_r27->material;
temp_r30 = &lbl_1_bss_3E4[arg0->work[0]];
if (temp_r30->unk14 == 3) {
for (i = 0; i < temp_r24->hsfData->materialCnt; i++, var_r31++) {
if (i != 1 && i != 2) {
var_r31->color[0] *= temp_r30->unk2C;
if (var_r31->color[0] == 0) {
var_r31->color[0] = 0;
}
var_r31->color[1] *= temp_r30->unk2C;
if (var_r31->color[1] == 0) {
var_r31->color[1] = 0;
}
var_r31->color[2] *= temp_r30->unk2C;
if (var_r31->color[2] == 0) {
var_r31->color[2] = 0;
}
}
}
}
else {
temp_r26 = CharModelTexNameGet(temp_r30->unk14, 2);
for (i = 0; i < temp_r27->materialCnt; i++, var_r31++) {
var_r22 = 1;
for (j = 0; j < var_r31->numAttrs; j++) {
temp_r23 = &temp_r27->attribute[var_r31->attrs[j]];
if (strcmp(temp_r26[0], temp_r23->bitmap->name) == 0 || strcmp(temp_r26[1], temp_r23->bitmap->name) == 0) {
var_r22 = 0;
}
}
if (var_r22 != 0) {
var_r31->color[0] *= temp_r30->unk2C;
if (var_r31->color[0] == 0) {
var_r31->color[0] = 0;
}
var_r31->color[1] *= temp_r30->unk2C;
if (var_r31->color[1] == 0) {
var_r31->color[1] = 0;
}
var_r31->color[2] *= temp_r30->unk2C;
if (var_r31->color[2] == 0) {
var_r31->color[2] = 0;
}
}
}
}
temp_r30->unk2C -= 0.01;
if (temp_r30->unk2C < 0.0f) {
temp_r30->unk2C = 0.0f;
}
}
void fn_1_6060(omObjData *arg0)
{
u32 temp_r29 = arg0->work[0];
StructBss3E4 *temp_r30 = &lbl_1_bss_3E4[temp_r29];
Vec sp8[] = { { -600.0f, 0.0f, 300.0f }, { -600.0f, 0.0f, 150.0f }, { -450.0f, 0.0f, 150.0f }, { -300.0f, 0.0f, 150.0f } };
arg0->model[0] = CharModelCreate(temp_r30->unk14, 2);
arg0->motion[0] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0));
arg0->motion[1] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 2));
arg0->motion[2] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3));
arg0->motion[3] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 88));
arg0->motion[4] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 89));
arg0->motion[5] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 90));
arg0->motion[6] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 72));
arg0->motion[7] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 28));
arg0->motion[8] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M436, temp_r30->unk14));
Hu3DModelShadowSet(arg0->model[0]);
Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF);
fn_1_11B18(arg0, 0, 0, 0, 1);
omSetTra(arg0, sp8[temp_r29].x, sp8[temp_r29].y, sp8[temp_r29].z);
CharModelMotionDataClose(temp_r30->unk14);
temp_r30->unk2C = 1.0f;
arg0->func = fn_1_5CD0;
}
// unused
s16 gap_04_00000182_data[] = { 0, 0x43, 0, 0x43, 1, 0x43, 2, 0x43, 3, 0x43, 4, 0x43, 5, 0x43, 6, 0x43, 7 };
s32 fn_1_62C4(omObjData *arg0)
{
Mtx sp8;
StructBss4A4 *var_r25;
StructBssD8 *var_r31;
StructBss1A8 *var_r28;
StructBss3E4 *temp_r27;
s32 i;
var_r25 = &lbl_1_bss_4A4;
var_r31 = &lbl_1_bss_D8;
var_r28 = &lbl_1_bss_1A8;
temp_r27 = &lbl_1_bss_3E4[var_r25->unk00];
if (arg0->work[3] == 1) {
arg0->work[3] = 0;
arg0->work[1] = 1;
arg0->work[2] = 0;
var_r31->unk04 = 1;
for (i = 0; i < 6; i++) {
var_r31->unk08[i] = -(50.0f * i);
}
}
switch (arg0->work[1]) {
case 1:
arg0->work[1] = 2;
fn_1_11818(var_r28->unk00, 0, 8, 5, 0);
break;
case 2:
if (Hu3DMotionTimeGet(var_r28->unk00->model[0]) == 90.0f) {
arg0->work[1] = 3;
fn_1_11818(temp_r27->unk00, 0, 7, 5, 0);
Hu3DMotionTimeSet(var_r28->unk00->model[0], 90.0f);
Hu3DMotionSpeedSet(var_r28->unk00->model[0], 0.0f);
HuAudCharVoicePlay(temp_r27->unk14, 0x123);
HuAudFXPlay(0x6D5);
omVibrate(temp_r27->unk04, 120, 12, 0);
}
break;
case 3:
Hu3DModelObjMtxGet(var_r28->unk00->model[0], "g000m0-itemhook_M", sp8);
temp_r27->unk00->work[2] = 1;
for (i = 0; i < 6; i++) {
if (var_r31->unk04 == 1 || (var_r31->unk04 == 0 && var_r31->unk08[i] > 0.0f)) {
var_r31->unk08[i] += 10.0f;
}
if (var_r31->unk08[i] > 0.0f) {
var_r31->unk48[i] += 0.1f;
var_r31->unk28[i] -= 5.0f;
if (var_r31->unk88[i] == 0.0f) {
fn_1_11818(arg0, i + 1, i + 1, 1, 1);
}
if (var_r31->unk88[i] < 8.0f) {
var_r31->unk68[i] += 0.025f;
}
else if (var_r31->unk88[i] < 23.0f) {
var_r31->unk68[i] = 0.7f;
}
else if (var_r31->unk88[i] < 31.0f) {
var_r31->unk68[i] -= 0.1f;
if (var_r31->unk68[i] < 0.0f) {
var_r31->unk68[i] = 0.0f;
}
}
var_r31->unk88[i] += 1.0f;
}
Hu3DModelPosSet(arg0->model[i + 1], sp8[0][3], sp8[1][3] + var_r31->unk28[i], sp8[2][3] + var_r31->unk08[i]);
Hu3DModelScaleSet(arg0->model[i + 1], 1.5f * var_r31->unk48[i], 1.5f * var_r31->unk48[i], 1.5f * var_r31->unk48[i]);
Hu3DModelTPLvlSet(arg0->model[i + 1], var_r31->unk68[i]);
if (var_r31->unk88[i] == 31.0f) {
var_r31->unk08[i] = 0.0f;
var_r31->unk28[i] = 0.0f;
var_r31->unk48[i] = 0.0f;
var_r31->unk68[i] = 0.5f;
var_r31->unk88[i] = 0.0f;
}
}
if (arg0->work[2]++ >= 120) {
var_r31->unk04 = 0;
Hu3DMotionSpeedSet(var_r28->unk00->model[0], 1.0f);
temp_r27->unk00->work[2] = 0;
}
if (arg0->work[2] >= 10 && arg0->work[2] <= 120) {
fn_1_67C(6, 8.0f);
}
break;
}
}
void fn_1_68E8(omObjData *arg0)
{
StructBss1A8 *var_r30;
var_r30 = &lbl_1_bss_1A8;
fn_1_11818(var_r30->unk00, 0, 8, 5, 0);
arg0->func = (void *)fn_1_62C4; // fn_1_62C4 must return s32 to match
}
void fn_1_6944(omObjData *arg0)
{
StructBssD8 *var_r29;
s32 i;
var_r29 = &lbl_1_bss_D8;
for (i = 0; i < 6; i++) {
if (i % 2 == 0) {
arg0->model[i + 1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 44));
arg0->motion[i + 1] = Hu3DMotionIDGet(arg0->model[i + 1]);
}
else {
arg0->model[i + 1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M436, 45));
arg0->motion[i + 1] = Hu3DMotionIDGet(arg0->model[i + 1]);
}
fn_1_11818(arg0, i + 1, i + 1, 5, 1);
Hu3DModelPosSet(arg0->model[i + 1], 0.0f, 0.0f, 0.0f);
Hu3DModelRotSet(arg0->model[i + 1], 0.0f, 0.0f, 0.0f);
Hu3DModelScaleSet(arg0->model[i + 1], 0.0f, 0.0f, 0.0f);
Hu3DModelLayerSet(arg0->model[i + 1], 2);
var_r29->unk08[i] = -(50.0f * i);
var_r29->unk28[i] = 0.0f;
var_r29->unk48[i] = 0.0f;
var_r29->unk68[i] = 0.5f;
var_r29->unk88[i] = 0.0f;
}
var_r29->unk04 = 1;
arg0->func = (void *)fn_1_62C4; // fn_1_62C4 must return s32 to match
}
void fn_1_6BDC(void)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
var_r31->unk10 = 0.0f;
var_r31->unk14 = 300.0f;
var_r31->unk18 = 1740.0f;
var_r31->unk28 = -10.0f;
var_r31->unk2C = 0.0f;
var_r31->unk30 = 0.0f;
var_r31->unk38 = 300.0f;
fn_1_125F4(var_r31, 200.0f);
}
void fn_1_6C8C(void)
{
StructBss32C *var_r31;
StructBss32C sp8;
var_r31 = &lbl_1_bss_32C;
sp8.unk04 = 0.0f;
sp8.unk08 = 200.0f;
sp8.unk0C = -50.0f;
sp8.unk1C = 5.0f;
sp8.unk20 = 0.0f;
sp8.unk24 = 0.0f;
sp8.unk34 = 200.0f;
fn_1_14D24(var_r31, &sp8, var_r31->unk3C++, 30.0f, 5.0f);
}
void fn_1_6D64(void)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
var_r31->unk10 = 0.0f;
var_r31->unk14 = 200.0f;
var_r31->unk18 = -50.0f;
var_r31->unk28 = 5.0f;
var_r31->unk2C = 0.0f;
var_r31->unk30 = 0.0f;
var_r31->unk38 = 200.0f;
fn_1_125F4(var_r31, 200.0f);
}
void fn_1_6E14(void)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
var_r31->unk10 = 0.0f;
var_r31->unk14 = 300.0f;
var_r31->unk18 = -550.0f;
var_r31->unk28 = -15.0f;
var_r31->unk2C = 0.0f;
var_r31->unk30 = 0.0f;
var_r31->unk38 = 1200.0f;
fn_1_125F4(var_r31, 45.0f);
}
void fn_1_6EC4(void)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
var_r31->unk10 = 0.0f;
var_r31->unk14 = 150.0f;
var_r31->unk18 = -550.0f;
var_r31->unk28 = -15.0f;
var_r31->unk2C = 0.0f;
var_r31->unk30 = 0.0f;
var_r31->unk38 = 1200.0f;
fn_1_125F4(var_r31, 30.0f);
}
void fn_1_6F74(void)
{
StructBss32C *var_r31;
StructBss32C sp8;
var_r31 = &lbl_1_bss_32C;
sp8.unk04 = 0.0f;
sp8.unk08 = 100.0f;
sp8.unk0C = -550.0f;
sp8.unk1C = -20.0f;
sp8.unk20 = 0.0f;
sp8.unk24 = 0.0f;
sp8.unk34 = 2400.0f;
fn_1_13C48(var_r31, &sp8, var_r31->unk3C++, 10.0f, 5.0f);
}
void fn_1_704C(void)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
var_r31->unk10 = 0.0f;
var_r31->unk14 = 150.0f;
var_r31->unk18 = -550.0f;
var_r31->unk28 = -15.0f;
var_r31->unk2C = 0.0f;
var_r31->unk30 = 0.0f;
var_r31->unk38 = 1200.0f;
fn_1_125F4(var_r31, 20.0f);
}
void fn_1_70FC(void)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
var_r31->unk10 = 0.0f;
var_r31->unk14 = 300.0f;
var_r31->unk18 = -550.0f;
var_r31->unk28 = -15.0f;
var_r31->unk2C = 0.0f;
var_r31->unk30 = 0.0f;
var_r31->unk38 = 1200.0f;
fn_1_125F4(var_r31, 20.0f);
}
void fn_1_71AC(s32 arg0)
{
StructBss32C *var_r23;
var_r23 = &lbl_1_bss_32C;
fn_1_12294(var_r23);
switch (arg0) {
case 0:
fn_1_8A4(fn_1_6E14);
break;
case 1:
fn_1_8A4(fn_1_6EC4);
break;
case 2:
fn_1_8A4(fn_1_6F74);
break;
case 3:
fn_1_8A4(fn_1_6C8C);
break;
case 4:
fn_1_8A4(fn_1_6BDC);
break;
case 5:
fn_1_8A4(fn_1_6D64);
break;
case 10:
fn_1_8A4(fn_1_704C);
break;
case 11:
fn_1_8A4(fn_1_70FC);
break;
}
}
void fn_1_72CC(void)
{
float sp18[] = { 0.0f, 0.0f };
StructBss1A8 *var_r30;
s32 var_r31;
var_r30 = &lbl_1_bss_1A8;
fn_1_26D4(sp18, MAKE_MESSID(29, 0));
fn_1_26D4(sp18, MAKE_MESSID(29, 1));
var_r31 = fn_1_2230((580.0f - sp18[0]) / 2, 80.0f, sp18[0], sp18[1], 2);
HuAudFXPlay(0x6D1);
var_r30->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 0));
fn_1_24D0(var_r31, 0);
var_r30->unk00->work[3] = 2;
var_r30->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 1));
fn_1_24D0(var_r31, 0);
var_r30->unk00->work[3] = 2;
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
HuPrcEnd();
}
void fn_1_77F0(void)
{
float sp18[] = { 0.0f, 0.0f };
StructBss1A8 *var_r30;
s32 var_r31;
var_r30 = &lbl_1_bss_1A8;
fn_1_26D4(sp18, MAKE_MESSID(29, 3));
var_r31 = fn_1_2230((580.0f - sp18[0]) / 2, 100.0f, sp18[0], sp18[1], 2);
HuAudFXPlay(0x6D2);
var_r30->unk00->work[3] = 3;
fn_1_2744(var_r31, MAKE_MESSID(29, 3));
fn_1_24D0(var_r31, 60);
lbl_1_bss_4 = 2;
fn_1_24D0(var_r31, 60);
var_r30->unk00->work[3] = 2;
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
HuPrcEnd();
}
void fn_1_7B58(s32 arg0)
{
float sp10[2] = { 0.0f, 0.0f };
StructBss180 *var_r30 = &lbl_1_bss_180[0];
s32 sp18[] = { MAKE_MESSID(29, 6), MAKE_MESSID(29, 8), MAKE_MESSID(29, 10), MAKE_MESSID(29, 12), MAKE_MESSID(29, 15), MAKE_MESSID(29, 17) };
s32 var_r31;
var_r30->unk00->work[3] = 1;
HuPrcSleep(15);
fn_1_26D4(sp10, sp18[arg0]);
HuAudFXPlayVolPan(0x3E, 0x7F, 0x20);
var_r31 = fn_1_2230(20.0f, 360.0f, sp10[0], sp10[1], 0);
fn_1_2744(var_r31, sp18[arg0]);
fn_1_24D0(var_r31, 0);
var_r30->unk00->work[3] = 2;
fn_1_2468(var_r31);
}
void fn_1_7F1C(void)
{
float sp2D8[2] = { 0.0f, 0.0f };
StructBss180 *var_r30;
s32 var_r31;
var_r30 = &lbl_1_bss_180[1];
fn_1_26D4(sp2D8, MAKE_MESSID(29, 5));
fn_1_26D4(sp2D8, MAKE_MESSID(29, 7));
fn_1_26D4(sp2D8, MAKE_MESSID(29, 9));
fn_1_26D4(sp2D8, MAKE_MESSID(29, 11));
fn_1_26D4(sp2D8, MAKE_MESSID(29, 13));
fn_1_26D4(sp2D8, MAKE_MESSID(29, 14));
fn_1_26D4(sp2D8, MAKE_MESSID(29, 16));
var_r31 = fn_1_2230(550.0f - sp2D8[0], 340.0f, sp2D8[0], sp2D8[1], 1);
HuAudFXPlayVolPan(0x65, 0x7F, 0x60);
var_r30->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 5));
fn_1_24D0(var_r31, 0);
var_r30->unk00->work[3] = 2;
fn_1_7B58(0);
var_r30->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 7));
fn_1_24D0(var_r31, 0);
var_r30->unk00->work[3] = 2;
fn_1_7B58(1);
var_r30->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 9));
fn_1_24D0(var_r31, 0);
var_r30->unk00->work[3] = 2;
fn_1_7B58(2);
var_r30->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 11));
fn_1_24D0(var_r31, 0);
var_r30->unk00->work[3] = 2;
fn_1_7B58(3);
var_r30->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 13));
fn_1_24D0(var_r31, 0);
var_r30->unk00->work[3] = 2;
var_r30->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 14));
fn_1_24D0(var_r31, 0);
var_r30->unk00->work[3] = 2;
fn_1_7B58(4);
var_r30->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 16));
fn_1_24D0(var_r31, 0);
var_r30->unk00->work[3] = 2;
fn_1_7B58(5);
var_r30->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 18));
fn_1_24D0(var_r31, 0);
var_r30->unk00->work[3] = 2;
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
HuPrcEnd();
}
void fn_1_A5A8(void)
{
float sp9C[2] = { 0.0f, 0.0f };
StructBss220 *sp68;
StructBss1A8 *var_r28;
s32 var_r31;
sp68 = &lbl_1_bss_220;
var_r28 = &lbl_1_bss_1A8;
fn_1_26D4(sp9C, MAKE_MESSID(29, 19));
fn_1_26D4(sp9C, MAKE_MESSID(29, 20));
fn_1_26D4(sp9C, MAKE_MESSID(29, 21));
fn_1_26D4(sp9C, MAKE_MESSID(29, 22));
fn_1_26D4(sp9C, MAKE_MESSID(29, 37));
var_r31 = fn_1_2230((580.0f - sp9C[0]) / 2, 80.0f, sp9C[0], sp9C[1], 2);
HuAudFXPlay(0x6D2);
var_r28->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 19));
fn_1_24D0(var_r31, 0);
var_r28->unk00->work[3] = 2;
var_r28->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 20));
fn_1_24D0(var_r31, 0);
var_r28->unk00->work[3] = 2;
var_r28->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 21));
fn_1_24D0(var_r31, 180);
var_r28->unk00->work[3] = 2;
sp68->unk00->work[0] = 10;
fn_1_2744(var_r31, MAKE_MESSID(29, 22));
fn_1_24D0(var_r31, 60);
var_r28->unk00->work[3] = 4;
fn_1_2A90(var_r31);
fn_1_2D94(var_r31);
fn_1_3020();
var_r28->unk00->work[3] = 2;
HuPrcSleep(120);
var_r28->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 37));
fn_1_24D0(var_r31, 0);
var_r28->unk00->work[3] = 2;
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
HuPrcEnd();
}
void fn_1_B3D4(void)
{
float sp1C[2] = { 0.0f, 0.0f };
StructBss180 *var_r30;
s32 var_r31;
var_r30 = &lbl_1_bss_180[1];
lbl_1_bss_4 = 0;
fn_1_26D4(sp1C, MAKE_MESSID(29, 64));
var_r31 = fn_1_2230(550.0f - sp1C[0], 340.0f, sp1C[0], sp1C[1], 1);
HuAudFXPlayVolPan(0x65, 0x7F, 0x60);
var_r30->unk00->work[3] = 1;
fn_1_2744(var_r31, MAKE_MESSID(29, 64));
fn_1_25B8(var_r31);
var_r30->unk00->work[3] = 2;
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
HuPrcEnd();
}
void fn_1_B7E0(void) { }
s32 fn_1_B7E4(void)
{
StructBss220 *var_r31;
var_r31 = &lbl_1_bss_220;
if (fn_1_11F04(&lbl_1_bss_C0, 0) == 80) {
fn_1_71AC(3);
lbl_1_bss_3A4[0] = HuAudSeqPlay(6);
}
if (fn_1_11F04(&lbl_1_bss_C0, 0) == 115) {
fn_1_71AC(5);
}
if (fn_1_11F04(&lbl_1_bss_C0, 0) == 180) {
fn_1_71AC(0);
}
if (fn_1_11F04(&lbl_1_bss_C0, 0) == 0) {
var_r31->unk00->work[0] = 10;
}
if (fn_1_11F04(&lbl_1_bss_C0, 0) == 150) {
var_r31->unk00->work[0] = 1;
}
if (fn_1_11F04(&lbl_1_bss_C0, 1) != 0) {
return fn_1_11D74(&lbl_1_bss_C0);
}
return 0;
}
void fn_1_B968(void)
{
lbl_1_bss_4 = 0;
HuPrcChildCreate(fn_1_72CC, 100, 0x2000, 0, HuPrcCurrentGet());
}
s32 fn_1_B9B4(void)
{
if (lbl_1_bss_4 == 1 && fn_1_11F04(&lbl_1_bss_C0, 1) != 0) {
return fn_1_11D74(&lbl_1_bss_C0);
}
return 0;
}
void fn_1_BA10(void)
{
StructBss3E4 *var_r30;
s32 i;
lbl_1_bss_4 = 0;
HuPrcChildCreate(fn_1_77F0, 100, 0x2000, 0, HuPrcCurrentGet());
for (i = 0; i < 4; i++) {
var_r30 = &lbl_1_bss_3E4[i];
Hu3DModelAttrReset(var_r30->unk00->model[0], HU3D_ATTR_DISPOFF);
}
}
s32 fn_1_BAA4(void)
{
StructBss220 *var_r31;
StructBss1BC *var_r30;
StructBss220 *var_r29;
var_r31 = &lbl_1_bss_220;
var_r30 = &lbl_1_bss_1BC;
if (lbl_1_bss_4 == 2) {
lbl_1_bss_4 = 0;
var_r31->unk00->work[0] = 2;
var_r30->unk00->work[0] = 1;
}
if (lbl_1_bss_4 == 1 && fn_1_11F04(&lbl_1_bss_C0, 0) == 0) {
var_r29 = &lbl_1_bss_220;
var_r29->unk00->work[1] = 1;
}
if (lbl_1_bss_4 == 1 && fn_1_11F04(&lbl_1_bss_C0, 1) != 0) {
return fn_1_11D74(&lbl_1_bss_C0);
}
return 0;
}
void fn_1_BBA4(void)
{
fn_1_71AC(10);
}
s32 fn_1_BBF4(void)
{
if (fn_1_11F04(&lbl_1_bss_C0, 1) != 0) {
return fn_1_11D74(&lbl_1_bss_C0);
}
return 0;
}
void fn_1_BC3C(void)
{
HuPrcChildCreate(fn_1_B3D4, 100, 0x2000, 0, HuPrcCurrentGet());
}
s32 fn_1_BC78(void)
{
if (lbl_1_bss_4 != 0 && fn_1_11F04(&lbl_1_bss_C0, 1) != 0) {
if (lbl_1_bss_8 != 0) {
return fn_1_11D74(&lbl_1_bss_C0);
}
fn_1_11E70(&lbl_1_bss_C0, 6);
}
return 0;
}
void fn_1_BCF8(void)
{
StructBss1A8 *var_r31;
var_r31 = &lbl_1_bss_1A8;
fn_1_11818(var_r31->unk00, 0, 12, 60, 1);
lbl_1_bss_4 = 0;
HuPrcChildCreate(fn_1_7F1C, 100, 0x2000, 0, HuPrcCurrentGet());
}
s32 fn_1_BD6C(void)
{
StructBss1A8 *var_r31;
var_r31 = &lbl_1_bss_1A8;
if (lbl_1_bss_4 == 1 && fn_1_11F04(&lbl_1_bss_C0, 0) == 0) {
fn_1_11818(var_r31->unk00, 0, 1, 60, 1);
}
if (lbl_1_bss_4 == 1 && fn_1_11F04(&lbl_1_bss_C0, 1) != 0) {
return fn_1_11D74(&lbl_1_bss_C0);
}
return 0;
}
void fn_1_BE1C(void)
{
fn_1_71AC(11);
}
s32 fn_1_BE6C(void)
{
if (fn_1_11F04(&lbl_1_bss_C0, 1) != 0) {
return fn_1_11D74(&lbl_1_bss_C0);
}
return 0;
}
void fn_1_BEB4(void)
{
lbl_1_bss_4 = 0;
HuPrcChildCreate(fn_1_A5A8, 100, 0x2000, 0, HuPrcCurrentGet());
}
s32 fn_1_BF00(void)
{
if (lbl_1_bss_4 == 1) {
lbl_1_bss_4 = 2;
HuAudSeqFadeOut(lbl_1_bss_3A4[0], 1000);
}
if (lbl_1_bss_4 != 0 && fn_1_11F04(&lbl_1_bss_C0, 1) != 0) {
fn_1_71AC(2);
return fn_1_11D74(&lbl_1_bss_C0);
}
return 0;
}
StructData1E8 lbl_1_data_1E8[] = { { fn_1_B7E0, fn_1_B7E4, 300 }, { fn_1_B968, fn_1_B9B4, 60 }, { fn_1_BA10, fn_1_BAA4, 60 },
{ fn_1_BBA4, fn_1_BBF4, 45 }, { fn_1_BC3C, fn_1_BC78, 60 }, { fn_1_BCF8, fn_1_BD6C, 60 }, { fn_1_BE1C, fn_1_BE6C, 45 },
{ fn_1_BEB4, fn_1_BF00, 15 }, { NULL, NULL, -1 } };
void fn_1_BFC8(void)
{
fn_1_11D18(&lbl_1_bss_C0, lbl_1_data_1E8);
}
s32 fn_1_BFF8(void)
{
s32 var_r31;
var_r31 = 0;
if (lbl_1_bss_C0.unk10 != NULL) {
lbl_1_bss_C0.unk10();
lbl_1_bss_C0.unk10 = NULL;
}
if (lbl_1_bss_C0.unk14 != NULL) {
var_r31 = lbl_1_bss_C0.unk14();
}
return var_r31;
}
s32 fn_1_C090(s32 arg0, s32 arg1, s32 arg2)
{
StructBss4A4 *var_r28;
StructBss3E4 *temp_r31;
StructBss1BC *var_r27;
StructBss234 *var_r26;
s32 var_r29;
s32 var_r30;
s32 spC;
s32 var_r23;
s32 temp_r22;
s32 i;
var_r29 = 0;
var_r30 = arg1;
spC = arg1;
var_r28 = &lbl_1_bss_4A4;
temp_r31 = &lbl_1_bss_3E4[arg0];
var_r27 = &lbl_1_bss_1BC;
var_r26 = &lbl_1_bss_234;
if (temp_r31->unk0C != 0) {
if (arg2 % 27 == 2 && temp_r31->unk24 == 0) {
switch (temp_r31->unk10) {
case 0:
if (arg2 <= 120) {
var_r29 = 0;
}
else if (var_r28->unk04 <= 3) {
temp_r31->unk24 = var_r29 = 1;
}
else {
var_r29 = 0;
}
break;
case 1:
if (arg2 <= 120) {
var_r29 = 0;
}
else if (var_r28->unk04 <= 6) {
temp_r31->unk24 = var_r29 = 1;
}
else {
var_r29 = 0;
}
break;
case 2:
if (arg2 <= 60) {
var_r29 = 0;
}
else if (var_r28->unk04 <= 9) {
temp_r31->unk24 = var_r29 = 1;
}
else {
var_r29 = 0;
}
break;
case 3:
if (arg2 <= 60) {
var_r29 = 0;
}
else if (var_r28->unk04 <= 12) {
temp_r31->unk24 = var_r29 = 1;
}
else {
var_r29 = 0;
}
break;
}
if (var_r29 == 0) {
temp_r31->unk28 = rand8() % 8;
}
else {
var_r23 = 0;
for (i = 0; i <= temp_r31->unk10; i++) {
temp_r22 = rand8() % 10;
if (var_r26->unk44[temp_r22] != -1) {
temp_r31->unk28 = var_r26->unk44[temp_r22];
var_r23 = 1;
break;
}
}
if (var_r23 == 0) {
temp_r31->unk28 = rand8() % 8;
}
}
}
if (temp_r31->unk24 == 1 && temp_r31->unk28 == var_r30) {
var_r30 = 99;
}
else if (temp_r31->unk28 > var_r30 && temp_r31->unk00->trans.x >= var_r27->unk04[var_r30].x - 7.5f && var_r30 < 7) {
var_r30++;
}
else if (temp_r31->unk28 < var_r30 && temp_r31->unk00->trans.x <= var_r27->unk04[var_r30].x + 7.5f && var_r30 > 0) {
var_r30--;
}
}
else {
var_r30 = arg1;
if (HuPadStkX[temp_r31->unk18] > 20.0f && temp_r31->unk00->trans.x >= var_r27->unk04[var_r30].x - 7.5f && var_r30 < 7) {
var_r30++;
}
else if (HuPadStkX[temp_r31->unk18] < -20.0f && temp_r31->unk00->trans.x <= var_r27->unk04[var_r30].x + 7.5f && var_r30 > 0) {
var_r30--;
}
else if (HuPadBtnDown[temp_r31->unk18] & 0x100) {
var_r30 = 99;
}
}
return var_r30;
}
void fn_1_C4E8(void)
{
StructBss4A4 *var_r29;
StructBss3E4 *temp_r30;
StructBss1BC *var_r28;
StructBss32C *var_r31;
var_r29 = &lbl_1_bss_4A4;
temp_r30 = &lbl_1_bss_3E4[var_r29->unk00];
var_r28 = &lbl_1_bss_1BC;
var_r31 = &lbl_1_bss_32C;
var_r31->unk10 = temp_r30->unk00->trans.x;
var_r31->unk14 = temp_r30->unk00->trans.y + 75.0f;
var_r31->unk18 = var_r28->unk04[0].z - 100.0f;
var_r31->unk28 = -10.0f;
var_r31->unk2C = 0.0f;
var_r31->unk30 = 0.0f;
var_r31->unk38 = 750.0f;
fn_1_125F4(var_r31, 10.0f);
}
void fn_1_C5E4(void)
{
StructBss32C *var_r31;
var_r31 = &lbl_1_bss_32C;
var_r31->unk10 = 0.0f;
var_r31->unk14 = 100.0f;
var_r31->unk18 = -550.0f;
var_r31->unk28 = -20.0f;
var_r31->unk2C = 0.0f;
var_r31->unk30 = 0.0f;
var_r31->unk38 = 2400.0f;
fn_1_125F4(var_r31, 360.0f);
}
void fn_1_C694(void)
{
StructBss32C *var_r31;
StructBss32C sp8;
var_r31 = &lbl_1_bss_32C;
sp8.unk04 = 0.0f;
sp8.unk08 = 200.0f;
sp8.unk0C = -550.0f;
sp8.unk1C = -15.0f;
sp8.unk20 = 0.0f;
sp8.unk24 = 0.0f;
sp8.unk34 = 1200.0f;
fn_1_13C48(var_r31, &sp8, var_r31->unk3C++, 10.0f, 5.0f);
}
void fn_1_C76C(void)
{
StructBss32C *var_r31;
StructBss32C sp8;
var_r31 = &lbl_1_bss_32C;
sp8.unk04 = 0.0f;
sp8.unk08 = 100.0f;
sp8.unk0C = -550.0f;
sp8.unk1C = -20.0f;
sp8.unk20 = 0.0f;
sp8.unk24 = 0.0f;
sp8.unk34 = 2400.0f;
fn_1_13C48(var_r31, &sp8, var_r31->unk3C++, 60.0f, 10.0f);
}
void fn_1_C844(s32 arg0)
{
StructBss32C *var_r27;
var_r27 = &lbl_1_bss_32C;
fn_1_12294(var_r27);
switch (arg0) {
case 0:
fn_1_8A4(fn_1_C4E8);
break;
case 1:
fn_1_8A4(fn_1_C5E4);
break;
case 2:
fn_1_8A4(fn_1_C694);
break;
case 3:
fn_1_8A4(fn_1_C76C);
break;
}
}
void fn_1_C90C(void)
{
float sp28[] = { 0.0f, 0.0f };
s32 var_r28;
s32 var_r31;
StructBss1A8 *var_r27 = &lbl_1_bss_1A8;
s32 sp3C[] = { MAKE_MESSID(29, 31), MAKE_MESSID(29, 32), MAKE_MESSID(29, 33) };
var_r28 = rand8() % 3;
HuPrcSleep(70);
fn_1_26D4(sp28, sp3C[var_r28]);
var_r31 = fn_1_2230((580.0f - sp28[0]) / 2, 60.0f, sp28[0], sp28[1], 2);
var_r27->unk00->work[2] = 1;
HuAudFXPlay(0x6D2);
HuAudFXPlay(0x6E3);
fn_1_2744(var_r31, sp3C[var_r28]);
fn_1_24D0(var_r31, 120);
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
HuPrcEnd();
}
void fn_1_CCA4(void)
{
float sp2C[] = { 0.0f, 0.0f };
s32 var_r28;
s32 var_r31;
s32 sp24[] = { MAKE_MESSID(29, 34), MAKE_MESSID(29, 35) };
var_r28 = rand8() % 2;
HuPrcSleep(40);
fn_1_26D4(sp2C, sp24[var_r28]);
var_r31 = fn_1_2230((580.0f - sp2C[0]) / 2, 60.0f, sp2C[0], sp2C[1], 2);
HuAudFXPlay(0x6D6);
HuAudFXPlay(0x6D9);
HuAudSeqAllFadeOut(100);
fn_1_2744(var_r31, sp24[var_r28]);
fn_1_24D0(var_r31, 120);
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
HuPrcEnd();
}
void fn_1_D018(void)
{
float sp2C[] = { 0.0f, 0.0f };
s32 var_r31;
HuPrcSleep(40);
fn_1_26D4(sp2C, MAKE_MESSID(29, 36));
var_r31 = fn_1_2230((580.0f - sp2C[0]) / 2, 60.0f, sp2C[0], sp2C[1], 2);
HuAudFXPlay(0x6D6);
HuAudFXPlay(0x6D9);
HuAudSeqAllFadeOut(100);
fn_1_2744(var_r31, MAKE_MESSID(29, 36));
fn_1_24D0(var_r31, 120);
fn_1_2468(var_r31);
lbl_1_bss_4 = 1;
HuPrcEnd();
}
void fn_1_D344(void)
{
StructBss4A4 *var_r30;
StructBss3E4 *temp_r31;
StructBss1A8 *var_r29;
var_r30 = &lbl_1_bss_4A4;
temp_r31 = &lbl_1_bss_3E4[var_r30->unk00];
temp_r31->unk1C = temp_r31->unk20 = temp_r31->unk24 = temp_r31->unk28 = 0;
var_r29 = &lbl_1_bss_1A8;
fn_1_11818(var_r29->unk00, 0, 12, 60, 1);
fn_1_C844(0);
fn_1_27C8(5);
}
s32 fn_1_D418(void)
{
Vec sp14;
StructBss4A4 *var_r30;
StructBss3E4 *temp_r31;
StructBss1BC *var_r28;
StructBss180 *var_r26;
StructBss3E4 *var_r25;
s32 var_r27;
s32 i;
var_r27 = 0;
var_r30 = &lbl_1_bss_4A4;
temp_r31 = &lbl_1_bss_3E4[var_r30->unk00];
var_r28 = &lbl_1_bss_1BC;
fn_1_11F04(&lbl_1_bss_A8, 1);
if (fn_1_11F04(&lbl_1_bss_A8, 0) < 10) {
return 0;
}
if (temp_r31->unk20 == 0) {
if (fn_1_2800()) {
temp_r31->unk20 = 1;
temp_r31->unk24 = 0;
}
else {
var_r27 = fn_1_C090(var_r30->unk00, temp_r31->unk1C, fn_1_11F04(&lbl_1_bss_A8, 0));
if (var_r27 == 99) {
temp_r31->unk20 = 1;
temp_r31->unk24 = 0;
fn_1_2824();
}
else {
temp_r31->unk1C = var_r27;
}
}
}
else if (temp_r31->unk24++ >= 60) {
return fn_1_11D74(&lbl_1_bss_A8);
}
sp14.x = var_r28->unk04[temp_r31->unk1C].x;
sp14.y = temp_r31->unk00->trans.y;
sp14.z = var_r28->unk04[0].z - 100.0f;
fn_1_5608(temp_r31->unk00, sp14, 0.0f, 9.0f, 5.0f, 2.0f, 0);
if (temp_r31->unk00->trans.z > sp14.z) {
temp_r31->unk00->trans.z = sp14.z;
}
if (temp_r31->unk00->trans.z < sp14.z) {
temp_r31->unk00->trans.z = sp14.z;
}
var_r26 = &lbl_1_bss_180[1];
fn_1_113CC(var_r26->unk00, 0, temp_r31->unk00, 0);
for (i = 0; i < 4; i++) {
if (var_r30->unk00 != i) {
var_r25 = &lbl_1_bss_3E4[i];
fn_1_113CC(var_r25->unk00, 0, temp_r31->unk00, 0);
}
}
return 0;
}
void fn_1_D6C0(void)
{
StructBss4A4 *var_r30;
var_r30 = &lbl_1_bss_4A4;
var_r30->unk0C = 0;
}
s32 fn_1_D6E4(void)
{
StructBss4A4 *var_r29;
StructBss3E4 *temp_r31;
StructBss1BC *var_r30;
StructBss180 *var_r26;
StructBss3E4 *var_r25;
s32 i;
var_r29 = &lbl_1_bss_4A4;
temp_r31 = &lbl_1_bss_3E4[var_r29->unk00];
var_r30 = &lbl_1_bss_1BC;
if (fn_1_11F04(&lbl_1_bss_A8, 0) < 30) {
if (var_r30->unk04[temp_r31->unk1C].z - 100.0f > temp_r31->unk00->trans.z) {
temp_r31->unk00->trans.z += 9.0f;
fn_1_11B18(temp_r31->unk00, 0, 1, 10, 1);
if (var_r30->unk04[temp_r31->unk1C].z - 100.0f < temp_r31->unk00->trans.z) {
temp_r31->unk00->trans.z = var_r30->unk04[temp_r31->unk1C].z - 100.0f;
fn_1_11B18(temp_r31->unk00, 0, 0, 10, 1);
}
}
else {
fn_1_11B18(temp_r31->unk00, 0, 0, 10, 1);
}
}
else if (fn_1_11F04(&lbl_1_bss_A8, 0) == 30) {
fn_1_11990(temp_r31->unk00, 0, 5, 30, 0);
}
else if (fn_1_11708(temp_r31->unk00, 0, 5, 35, 1) != 0 && var_r29->unk0C == 0) {
var_r29->unk0C = 1;
Hu3DModelHookSet(temp_r31->unk00->model[0], CharModelHookNameGet(temp_r31->unk14, 2, 0), var_r30->unk00->model[temp_r31->unk1C + 1]);
if (temp_r31->unk14 != 7) {
Hu3DModelPosSet(var_r30->unk00->model[temp_r31->unk1C + 1], 0.0f, 5.0f, 0.0f);
}
else {
Hu3DModelPosSet(var_r30->unk00->model[temp_r31->unk1C + 1], 0.0f, -15.0f, 0.0f);
}
Hu3DModelScaleSet(var_r30->unk00->model[temp_r31->unk1C + 1], 0.75f, 0.75f, 0.75f);
omVibrate(temp_r31->unk04, 12, 4, 2);
}
var_r26 = &lbl_1_bss_180[1];
fn_1_113CC(var_r26->unk00, 0, temp_r31->unk00, 0);
for (i = 0; i < 4; i++) {
if (var_r29->unk00 != i) {
var_r25 = &lbl_1_bss_3E4[i];
fn_1_113CC(var_r25->unk00, 0, temp_r31->unk00, 0);
}
}
if (fn_1_11F04(&lbl_1_bss_A8, 1) != 0) {
return fn_1_11D74(&lbl_1_bss_A8);
}
// Required to match.
if (0) {
s32 var_r28 = 0;
(void)var_r28;
(void)var_r28;
(void)var_r28;
(void)var_r28;
(void)var_r28;
(void)var_r28;
}
return 0;
}
void fn_1_DA60(void)
{
StructBss4A4 *var_r30;
StructBss1A8 *sp8;
StructBss3E4 *temp_r31;
var_r30 = &lbl_1_bss_4A4;
temp_r31 = &lbl_1_bss_3E4[var_r30->unk00];
sp8 = &lbl_1_bss_1A8;
var_r30->unk0C = 0;
temp_r31->unk20 = temp_r31->unk24 = temp_r31->unk28 = 0;
Hu3DMotionOverlaySet(temp_r31->unk00->model[0], temp_r31->unk00->motion[4]);
Hu3DModelAttrSet(temp_r31->unk00->model[0], HU3D_MOTATTR_OVL_LOOP);
}
Vec lbl_1_data_254 = { 0.0f, 0.0f, 0.0f };
Vec lbl_1_data_260 = { 0.0f, 0.0f, 0.0f }; // unused
s32 fn_1_DB00(void)
{
StructBss4A4 *var_r30;
StructBss220 *var_r28;
StructBss1BC *sp8;
StructBss3E4 *temp_r31;
StructBss1A8 *var_r27;
StructBss180 *var_r26;
StructBss3E4 *var_r25;
s32 i;
var_r30 = &lbl_1_bss_4A4;
var_r28 = &lbl_1_bss_220;
sp8 = &lbl_1_bss_1BC;
var_r27 = &lbl_1_bss_1A8;
temp_r31 = &lbl_1_bss_3E4[var_r30->unk00];
if (temp_r31->unk20 == 0 && fn_1_11F04(&lbl_1_bss_A8, 0) <= 180) {
lbl_1_data_254.x = 0.0f;
lbl_1_data_254.y = temp_r31->unk00->trans.y;
lbl_1_data_254.z = 300.0f;
}
else if (temp_r31->unk20 == 1 && fn_1_11F04(&lbl_1_bss_A8, 0) <= 320) {
lbl_1_data_254.x = 0.0f;
lbl_1_data_254.y = temp_r31->unk00->trans.y;
lbl_1_data_254.z = -240.0f;
}
temp_r31->unk20 += fn_1_5608(temp_r31->unk00, lbl_1_data_254, 180.0f, 8.0f, 30.0f, 5.0f, 0);
if (temp_r31->unk20 == 1 && var_r30->unk0C == 0) {
var_r30->unk0C = 1;
fn_1_C844(1);
fn_1_11B18(var_r27->unk00, 0, 1, 60, 0);
var_r28->unk00->work[1] = 2;
}
var_r26 = &lbl_1_bss_180[1];
fn_1_113CC(var_r26->unk00, 0, temp_r31->unk00, 0);
for (i = 0; i < 4; i++) {
if (var_r30->unk00 != i) {
var_r25 = &lbl_1_bss_3E4[i];
fn_1_113CC(var_r25->unk00, 0, temp_r31->unk00, 0);
}
}
fn_1_11F04(&lbl_1_bss_A8, 1);
if (temp_r31->unk20 == 2) {
Hu3DModelAttrReset(*temp_r31->unk00->model, HU3D_MOTATTR_OVL_LOOP);
return fn_1_11D74(&lbl_1_bss_A8);
}
return 0;
}
void fn_1_DDBC(void)
{
StructBss4A4 *var_r30;
StructBss1A8 *var_r29;
StructBss3E4 *temp_r31;
var_r30 = &lbl_1_bss_4A4;
var_r29 = &lbl_1_bss_1A8;
temp_r31 = &lbl_1_bss_3E4[var_r30->unk00];
var_r30->unk0C = 0;
var_r29->unk00->work[3] = 0;
Hu3DMotionSet(temp_r31->unk00->model[0], temp_r31->unk00->motion[5]);
Hu3DMotionTimeSet(temp_r31->unk00->model[0], 999.0f);
Hu3DModelAttrReset(temp_r31->unk00->model[0], HU3D_MOTATTR_LOOP);
Hu3DModelAttrSet(temp_r31->unk00->model[0], HU3D_MOTATTR_REV);
Hu3DMotionOverlayReset(temp_r31->unk00->model[0]);
temp_r31->unk20 = temp_r31->unk24 = temp_r31->unk28 = 0;
}
s32 fn_1_DEB0(void)
{
StructBss4A4 *var_r30;
StructBss220 *var_r28;
StructBss1BC *var_r29;
StructBss3E4 *temp_r31;
ModelData *temp_r27;
ModelData *temp_r26;
StructBss180 *var_r25;
var_r30 = &lbl_1_bss_4A4;
var_r28 = &lbl_1_bss_220;
var_r29 = &lbl_1_bss_1BC;
temp_r31 = &lbl_1_bss_3E4[var_r30->unk00];
temp_r27 = &Hu3DData[var_r28->unk00->model[8]];
if (fn_1_11708(temp_r31->unk00, 0, 5, 30, 0) != 0 && var_r30->unk0C == 0) {
Hu3DModelHookReset(temp_r31->unk00->model[0]);
Hu3DModelPosSet(var_r29->unk00->model[temp_r31->unk1C + 1], 0.0f, temp_r27->pos.y, -355.0f);
Hu3DModelScaleSet(var_r29->unk00->model[temp_r31->unk1C + 1], 1.0f, 1.0f, 1.0f);
var_r30->unk0C = temp_r31->unk20 = 1;
}
if (temp_r31->unk20 == 1 && temp_r31->unk24++ >= 60) {
temp_r26 = &Hu3DData[var_r29->unk00->model[temp_r31->unk1C + 1]];
var_r28->unk00->work[1] = 3;
temp_r26->pos.y = temp_r27->pos.y;
if (var_r30->unk0C == 1) {
var_r30->unk0C = 2;
var_r25 = &lbl_1_bss_180[1];
fn_1_11818(var_r25->unk00, 0, 6, 60, 1);
}
}
if (temp_r31->unk20 == 1 && fn_1_11F04(&lbl_1_bss_A8, 1) != 0) {
return fn_1_11D74(&lbl_1_bss_A8);
}
return 0;
}
void fn_1_E0B0(void)
{
StructBss4A4 *var_r31;
StructBss1A8 *var_r30;
StructBss3E4 *var_r29;
var_r31 = &lbl_1_bss_4A4;
var_r30 = &lbl_1_bss_1A8;
var_r29 = &lbl_1_bss_3E4[var_r31->unk00];
var_r31->unk08 = var_r31->unk0C = 0;
fn_1_11990(var_r29->unk00, 0, 0, 30, 1);
fn_1_11818(var_r30->unk00, 0, 4, 1, 0);
}
s32 fn_1_E144(void)
{
StructBss4A4 *var_r31;
StructBss220 *var_r28;
StructBss1BC *var_r30;
StructBss1A8 *var_r27;
StructBss3E4 *temp_r29;
StructBss180 *var_r25;
var_r31 = &lbl_1_bss_4A4;
var_r28 = &lbl_1_bss_220;
var_r30 = &lbl_1_bss_1BC;
var_r27 = &lbl_1_bss_1A8;
temp_r29 = &lbl_1_bss_3E4[var_r31->unk00];
if (fn_1_11708(var_r27->unk00, 0, 4, 80, 1) != 0 && var_r31->unk0C == 0) {
var_r31->unk0C = 1;
Hu3DModelHookSet(var_r27->unk00->model[0], "g000m0-itemhook_R", var_r30->unk00->model[temp_r29->unk1C + 1]);
Hu3DModelPosSet(var_r30->unk00->model[temp_r29->unk1C + 1], 0.0f, 0.0f, 0.0f);
Hu3DModelRotSet(var_r30->unk00->model[temp_r29->unk1C + 1], 0.0f, 90.0f, 0.0f);
Hu3DModelScaleSet(var_r30->unk00->model[temp_r29->unk1C + 1], 0.5f, 0.5f, 0.5f);
var_r28->unk00->work[1] = 1;
}
if (fn_1_11F04(&lbl_1_bss_A8, 0) == 180) {
fn_1_C844(2);
}
if (var_r31->unk0C == 1) {
var_r25 = &lbl_1_bss_180[1];
var_r25->unk00->rot.y = fn_1_110FC(var_r25->unk00->rot.y, 280.0f, 10.0f);
}
if (fn_1_11F04(&lbl_1_bss_A8, 1) != 0) {
var_r28->unk00->work[0] = 10;
return fn_1_11D74(&lbl_1_bss_A8);
}
return 0;
}
void fn_1_E38C(void)
{
StructBss4A4 *var_r31;
StructBss220 *sp8;
StructBss1A8 *var_r30;
sp8 = &lbl_1_bss_220;
var_r31 = &lbl_1_bss_4A4;
var_r30 = &lbl_1_bss_1A8;
if (var_r31->unk08 == 0) {
var_r31->unk08 = 1;
if (var_r31->unk04 > 3) {
fn_1_11818(var_r30->unk00, 0, 9, 15, 0);
}
if (var_r31->unk04 > 3 && rand8() % 2 == 0) {
var_r31->unk08 = 2;
}
}
else if (var_r31->unk08 == 2) {
var_r31->unk08 = 1;
fn_1_11818(var_r30->unk00, 0, 10, 15, 0);
if (var_r31->unk04 > 6 && rand8() % 2 == 0) {
var_r31->unk08 = 3;
}
}
else if (var_r31->unk08 == 3) {
var_r31->unk08 = 1;
fn_1_11818(var_r30->unk00, 0, 10, 15, 0);
}
}
s32 fn_1_E4CC(void)
{
StructBss4A4 *var_r31;
StructBss1A8 *var_r30;
var_r31 = &lbl_1_bss_4A4;
var_r30 = &lbl_1_bss_1A8;
if (Hu3DMotionEndCheck(var_r30->unk00->model[0]) && fn_1_11F04(&lbl_1_bss_A8, 1) != 0) {
if (var_r31->unk08 != 1) {
return fn_1_11E70(&lbl_1_bss_A8, 5);
}
else {
return fn_1_11D74(&lbl_1_bss_A8);
}
}
return 0;
}
void fn_1_E56C(void)
{
StructBss4A4 *var_r31;
StructBss234 *var_r30;
StructBss3E4 *var_r28;
s32 i;
var_r31 = &lbl_1_bss_4A4;
var_r30 = &lbl_1_bss_234;
var_r28 = &lbl_1_bss_3E4[var_r31->unk00];
var_r31->unk08 = 1;
for (i = 0; i < var_r30->unk00; i++) {
if (var_r30->unk44[i] == var_r28->unk1C) {
var_r31->unk08 = 0;
var_r30->unk44[i] = -1;
break;
}
}
if (var_r30->unk00 == var_r31->unk04) {
var_r31->unk08 = 2;
}
}
s32 fn_1_E628(void)
{
StructBss4A4 *var_r31;
var_r31 = &lbl_1_bss_4A4;
if (var_r31->unk08 != 0) {
fn_1_11E70(&lbl_1_bss_A8, 10);
}
else {
fn_1_11D74(&lbl_1_bss_A8);
}
}
void fn_1_E680(void)
{
StructBss4A4 *var_r31;
StructBss1A8 *var_r30;
var_r31 = &lbl_1_bss_4A4;
var_r30 = &lbl_1_bss_1A8;
var_r31->unk08 = var_r31->unk0C = 0;
fn_1_11818(var_r30->unk00, 0, 7, 15, 0);
lbl_1_bss_4 = 0;
HuPrcChildCreate(fn_1_C90C, 100, 0x2000, 0, HuPrcCurrentGet());
}
s32 fn_1_E710(void)
{
StructBss4A4 *var_r29;
StructBss1A8 *var_r28;
StructBss1BC *var_r31;
StructBss3E4 *temp_r30;
StructBss180 *var_r27;
var_r29 = &lbl_1_bss_4A4;
var_r31 = &lbl_1_bss_1BC;
var_r28 = &lbl_1_bss_1A8;
temp_r30 = &lbl_1_bss_3E4[var_r29->unk00];
if (fn_1_11708(var_r28->unk00, 0, 7, 30, 1) != 0 && var_r29->unk08 == 0) {
var_r29->unk08 = 1;
}
if (fn_1_11708(var_r28->unk00, 0, 7, 40, 1) != 0 && var_r29->unk0C == 0) {
var_r29->unk0C = 1;
var_r27 = &lbl_1_bss_180[1];
fn_1_11818(var_r27->unk00, 0, 7, 10, 0);
Hu3DModelHookReset(var_r28->unk00->model[0]);
Hu3DModelPosSet(var_r31->unk00->model[temp_r30->unk1C + 1], var_r31->unk04[temp_r30->unk1C].x, var_r31->unk04[temp_r30->unk1C].y + 65.0f,
var_r31->unk04[temp_r30->unk1C].z);
Hu3DModelRotSet(var_r31->unk00->model[temp_r30->unk1C + 1], 0.0f, 0.0f, 0.0f);
Hu3DModelScaleSet(var_r31->unk00->model[temp_r30->unk1C + 1], 1.0f, 1.0f, 1.0f);
}
if (lbl_1_bss_4 == 1) {
lbl_1_bss_4 = 2;
}
if (fn_1_11F04(&lbl_1_bss_A8, 1) != 0) {
return fn_1_11D74(&lbl_1_bss_A8);
}
return 0;
}
void fn_1_E930(void)
{
StructBss4A4 *var_r29;
StructBss3E4 *var_r28;
StructBss180 *var_r31;
s32 var_r30;
var_r29 = &lbl_1_bss_4A4;
var_r30 = var_r29->unk00 + 1;
if (var_r30 == 4) {
var_r30 = 0;
}
var_r28 = &lbl_1_bss_3E4[var_r30];
fn_1_11990(var_r28->unk00, 0, 1, 15, 1);
var_r31 = &lbl_1_bss_180[1];
fn_1_11818(var_r31->unk00, 0, 0, 1, 1);
Hu3DMotionSpeedSet(var_r31->unk00->model[0], 1.0f);
fn_1_C844(3);
}
s32 fn_1_EA04(void)
{
Vec sp14[] = { { -600.0f, 0.0f, 300.0f }, { -600.0f, 0.0f, 150.0f }, { -450.0f, 0.0f, 150.0f }, { -300.0f, 0.0f, 150.0f } };
StructBss4A4 *var_r30;
StructBss1BC *var_r27;
StructBss3E4 *temp_r31;
StructBss3E4 *temp_r26;
s32 i;
s32 var_r28;
var_r30 = &lbl_1_bss_4A4;
var_r27 = &lbl_1_bss_1BC;
var_r28 = var_r30->unk00 + 1;
if (var_r28 == 4) {
var_r28 = 0;
}
for (i = 0; i < 4; i++) {
temp_r31 = &lbl_1_bss_3E4[var_r28];
if (i != 0) {
fn_1_5608(temp_r31->unk00, sp14[i], 0.0f, 9.0f, 10.0f, 8.0f, 0);
}
else {
temp_r31->unk00->trans.x -= 1.0f;
temp_r31->unk00->trans.z += 5.0f;
temp_r31->unk00->rot.y = fn_1_110FC(temp_r31->unk00->rot.y, 0.0f, 10.0f);
if (temp_r31->unk00->trans.x <= -600.0f) {
temp_r31->unk00->trans.x = -600.0f;
}
if (temp_r31->unk00->trans.z >= var_r27->unk04[0].z - 100.0f) {
fn_1_11B18(temp_r31->unk00, 0, 0, 15, 1);
temp_r31->unk00->trans.z = var_r27->unk04[0].z - 100.0f;
}
}
if (i != 0 && i != 3) {
if (temp_r31->unk00->trans.z > 150.0f) {
temp_r31->unk00->trans.z = 150.0f;
}
if (temp_r31->unk00->trans.z < 150.0f) {
temp_r31->unk00->trans.z = 150.0f;
}
}
var_r28++;
if (var_r28 == 4) {
var_r28 = 0;
}
}
if (fn_1_11F04(&lbl_1_bss_A8, 1) != 0) {
temp_r26 = &lbl_1_bss_3E4[var_r30->unk00];
temp_r26->unk00->rot.y = 0.0f;
var_r30->unk00++;
if (var_r30->unk00 == 4) {
var_r30->unk00 = 0;
}
var_r30->unk04++;
return fn_1_11E70(&lbl_1_bss_A8, 0);
}
return 0;
}
void fn_1_ED4C(void)
{
StructBss4A4 *var_r31;
StructBss1A8 *var_r30;
var_r31 = &lbl_1_bss_4A4;
var_r30 = &lbl_1_bss_1A8;
fn_1_11818(var_r30->unk00, 0, 6, 1, 0);
lbl_1_bss_4 = 0;
if (var_r31->unk08 == 1) {
HuPrcChildCreate(fn_1_CCA4, 100, 0x2000, 0, HuPrcCurrentGet());
}
else {
HuPrcChildCreate(fn_1_D018, 100, 0x2000, 0, HuPrcCurrentGet());
}
var_r31->unk04 = var_r31->unk08 = var_r31->unk0C = 0;
}
s32 fn_1_EE10(void)
{
StructBss4A4 *var_r30;
StructBss220 *var_r26;
StructBss1BC *var_r29;
StructBss1A8 *var_r27;
StructBss180 *var_r31;
StructBss3E4 *temp_r28;
var_r30 = &lbl_1_bss_4A4;
var_r26 = &lbl_1_bss_220;
var_r29 = &lbl_1_bss_1BC;
var_r27 = &lbl_1_bss_1A8;
var_r31 = &lbl_1_bss_180[1];
temp_r28 = &lbl_1_bss_3E4[var_r30->unk00];
lbl_1_bss_48[0][3] = 400.0f;
lbl_1_bss_48[1][3] = 91.0f;
lbl_1_bss_48[2][3] = -436.0f;
var_r31->unk00->rot.y = fn_1_110FC(var_r31->unk00->rot.y, 360.0f, 10.0f);
if (fn_1_11708(var_r27->unk00, 0, 6, 40, 1) != 0 && var_r30->unk0C == 0) {
var_r30->unk0C = 1;
Hu3DModelHookReset(var_r27->unk00->model[0]);
Hu3DModelObjMtxGet(var_r27->unk00->model[0], "g000m0-itemhook_R", lbl_1_bss_78);
Hu3DModelPosSet(var_r29->unk00->model[temp_r28->unk1C + 1], lbl_1_bss_78[0][3], lbl_1_bss_78[1][3], lbl_1_bss_78[2][3]);
Hu3DModelRotSet(var_r29->unk00->model[temp_r28->unk1C + 1], 0.0f, 0.0f, 0.0f);
Hu3DModelScaleSet(var_r29->unk00->model[temp_r28->unk1C + 1], 1.0f, 1.0f, 1.0f);
Hu3DMotionSpeedSet(var_r26->unk00->model[8], -1.0f);
var_r30->unk04 = 1;
HuAudFXPlay(0x6E0);
}
if (var_r30->unk04 == 1) {
lbl_1_bss_3C.x = fn_1_1113C(lbl_1_bss_78[0][3], lbl_1_bss_48[0][3], lbl_1_bss_14, 30.0f);
if (lbl_1_bss_14 < 13) {
lbl_1_bss_3C.y = fn_1_11164(lbl_1_bss_78[1][3], 500.0f, lbl_1_bss_14, 13.0f);
}
else {
lbl_1_bss_3C.y = fn_1_112F4(500.0f, lbl_1_bss_48[1][3], lbl_1_bss_14 - 13, 17.0f);
}
lbl_1_bss_3C.z = fn_1_1113C(lbl_1_bss_78[2][3], lbl_1_bss_48[2][3], lbl_1_bss_14, 30.0f);
if (lbl_1_bss_14 == 10) {
fn_1_11818(var_r31->unk00, 0, 4, 1, 0);
Hu3DMotionSpeedSet(var_r31->unk00->model[0], 1.0f);
}
if (fn_1_11708(var_r31->unk00, 0, 4, 21, 1) != 0 && var_r30->unk08 == 0) {
var_r30->unk08 = 1;
Hu3DMotionSpeedSet(var_r31->unk00->model[0], 0.0f);
}
else {
Hu3DModelPosSet(var_r29->unk00->model[temp_r28->unk1C + 1], lbl_1_bss_3C.x, lbl_1_bss_3C.y, lbl_1_bss_3C.z);
}
if (lbl_1_bss_14++ >= 30) {
var_r30->unk04 = 2;
}
}
else if (var_r30->unk04 == 2) {
Hu3DModelHookSet(var_r31->unk00->model[0], "g007m0-itemhook_c", var_r29->unk00->model[temp_r28->unk1C + 1]);
Hu3DModelPosSet(var_r29->unk00->model[temp_r28->unk1C + 1], 0.0f, 0.0f, 0.0f);
Hu3DMotionSpeedSet(var_r31->unk00->model[0], 1.0f);
}
if (lbl_1_bss_4 == 1 && Hu3DMotionEndCheck(var_r31->unk00->model[0])) {
lbl_1_bss_14 = 0;
fn_1_11818(var_r31->unk00, 0, 5, 1, 0);
return fn_1_11D74(&lbl_1_bss_A8);
}
return 0;
}
void fn_1_F404(void)
{
StructBss4A4 *var_r29;
StructBss1A8 *spC;
StructBssD8 *var_r28;
StructBss180 *var_r31;
StructBss180 *var_r30;
StructBss3E4 *sp8;
var_r29 = &lbl_1_bss_4A4;
spC = &lbl_1_bss_1A8;
var_r28 = &lbl_1_bss_D8;
var_r31 = &lbl_1_bss_180[1];
var_r30 = &lbl_1_bss_180[0];
sp8 = &lbl_1_bss_3E4[var_r29->unk00];
var_r28->unk00->work[3] = 1;
var_r31->unk00->rot.y = 0.0f;
fn_1_11818(var_r31->unk00, 0, 5, 30, 1);
fn_1_11818(var_r30->unk00, 0, 1, 30, 1);
fn_1_11818(var_r30->unk00, 1, 6, 30, 1);
}
s32 fn_1_F4F0(void)
{
if (fn_1_11F04(&lbl_1_bss_A8, 1) != 0) {
return fn_1_11D74(&lbl_1_bss_A8);
}
return 0;
}
StructData1E8 lbl_1_data_290[]
= { { fn_1_D344, fn_1_D418, 600 }, { fn_1_D6C0, fn_1_D6E4, 90 }, { fn_1_DA60, fn_1_DB00, 300 }, { fn_1_DDBC, fn_1_DEB0, 150 },
{ fn_1_E0B0, fn_1_E144, 240 }, { fn_1_E38C, fn_1_E4CC, 90 }, { fn_1_E56C, fn_1_E628, 120 }, { fn_1_E680, fn_1_E710, 120 },
{ fn_1_E930, fn_1_EA04, 120 }, { NULL, NULL, -1 }, { fn_1_ED4C, fn_1_EE10, -1 }, { fn_1_F404, fn_1_F4F0, 60 }, { NULL, NULL, -1 } };
void fn_1_F538(void)
{
fn_1_11D18(&lbl_1_bss_A8, lbl_1_data_290);
}
s32 fn_1_F568(void)
{
s32 var_r31;
var_r31 = 0;
if (lbl_1_bss_A8.unk10 != NULL) {
lbl_1_bss_A8.unk10();
lbl_1_bss_A8.unk10 = NULL;
}
if (lbl_1_bss_A8.unk14 != NULL) {
var_r31 = lbl_1_bss_A8.unk14();
}
return var_r31;
}
void fn_1_F600(void)
{
StructBss4A4 *var_r30;
StructBss3E4 *temp_r31;
var_r30 = &lbl_1_bss_4A4;
temp_r31 = &lbl_1_bss_3E4[var_r30->unk00];
var_r30->unk0C = 0;
lbl_1_data_E0 = temp_r31->unk00->model[0];
lbl_1_data_E4 = temp_r31->unk00->motion[8];
lbl_1_data_E8 = temp_r31->unk14;
HuPrcChildCreate(fn_1_0, 100, 0x2000, 0, HuPrcCurrentGet());
}
s32 fn_1_F6B0(void)
{
StructBss4A4 *var_r31;
StructBss3E4 *temp_r30;
var_r31 = &lbl_1_bss_4A4;
temp_r30 = &lbl_1_bss_3E4[var_r31->unk00];
if (fn_1_11F04(&lbl_1_bss_24, 0) == 120) {
fn_1_11818(temp_r30->unk00, 0, 8, 30, 0);
HuAudSStreamPlay(3);
}
if (fn_1_11F04(&lbl_1_bss_24, 1) != 0) {
return fn_1_11D74(&lbl_1_bss_24);
}
return 0;
}
StructData1E8 lbl_1_data_32C[] = { { fn_1_F600, fn_1_F6B0, 360 }, { NULL, NULL, -1 } };
void fn_1_F75C(void)
{
fn_1_11D18(&lbl_1_bss_24, lbl_1_data_32C);
}
s32 fn_1_F78C(void)
{
s32 var_r31;
var_r31 = 0;
if (lbl_1_bss_24.unk10 != NULL) {
lbl_1_bss_24.unk10();
lbl_1_bss_24.unk10 = NULL;
}
if (lbl_1_bss_24.unk14 != NULL) {
var_r31 = lbl_1_bss_24.unk14();
}
return var_r31;
}
void fn_1_F824(omObjData *arg0)
{
StructBss1A8 *sp8;
StructBss4A4 *var_r30;
StructBss3E4 *temp_r29;
s32 i;
sp8 = &lbl_1_bss_1A8;
if (WipeStatGet() == 0) {
CharModelKill(-1);
MGSeqKillAll();
HuAudFadeOut(1);
var_r30 = &lbl_1_bss_4A4;
temp_r29 = &lbl_1_bss_3E4[var_r30->unk00];
for (i = 0; i < 4; i++) {
GWPlayerCoinWinSet(i, 0);
}
GWPlayerCoinWinSet(temp_r29->unk04, 1);
omOvlReturnEx(1, 1);
arg0->func = NULL;
}
}
void fn_1_F924(omObjData *arg0)
{
if (omSysExitReq == 1) {
HuAudSeqAllFadeOut(250);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
arg0->func = fn_1_F824;
}
}
void fn_1_F984(void)
{
StructBss180 *var_r21;
StructBss4A4 *var_r22;
StructBss3E4 *temp_r25;
s32 i;
fn_1_3088();
fn_1_39B4(lbl_1_bss_220.unk00);
fn_1_4304(lbl_1_bss_1BC.unk00);
fn_1_49FC(lbl_1_bss_1A8.unk00);
var_r21 = &lbl_1_bss_180[1];
Hu3DModelHookReset(var_r21->unk00->model[0]);
fn_1_11818(var_r21->unk00, 0, 0, 1, 1);
var_r22 = &lbl_1_bss_4A4;
var_r22->unk00 = var_r22->unk04 = var_r22->unk08 = var_r22->unk0C = 0;
{
StructBss1BC *var_r20 = &lbl_1_bss_1BC;
Vec sp18[] = { { -600.0f, 0.0f, 300.0f }, { -600.0f, 0.0f, 150.0f }, { -450.0f, 0.0f, 150.0f }, { -300.0f, 0.0f, 150.0f } };
sp18[0].z = var_r20->unk04[0].z - 100.0f;
for (i = 0; i < 4; i++) {
temp_r25 = &lbl_1_bss_3E4[i];
if (i == 0) {
sp18[i].z = var_r20->unk04[0].z - 100.0f;
}
omSetTra(temp_r25->unk00, sp18[i].x, sp18[i].y, sp18[i].z);
omSetRot(temp_r25->unk00, 0.0f, 0.0f, 0.0f);
omSetSca(temp_r25->unk00, 1.0f, 1.0f, 1.0f);
temp_r25->unk1C = temp_r25->unk20 = temp_r25->unk24 = temp_r25->unk28 = 0;
}
}
fn_1_BFC8();
fn_1_F538();
fn_1_F75C();
fn_1_71AC(4);
lbl_1_bss_3AC.unk28 = HuAudFXPlay(0x6D7);
}
void fn_1_1026C(omObjData *arg0)
{
switch (lbl_1_bss_18) {
case 0:
fn_1_F984();
lbl_1_bss_18 = 1;
break;
case 1:
if (WipeStatGet() == 0) {
lbl_1_bss_18 = 2;
}
break;
case 2:
if (fn_1_BFF8()) {
lbl_1_bss_18 = 3;
}
break;
case 3:
lbl_1_bss_1C = MGSeqStartCreate();
lbl_1_bss_18 = 4;
lbl_1_bss_3A4[1] = -1;
break;
case 4:
if ((MGSeqStatGet(lbl_1_bss_1C) & 0x10) && lbl_1_bss_3A4[1] == -1) {
lbl_1_bss_3A4[1] = HuAudSeqPlay(0x4D);
}
if (MGSeqStatGet(lbl_1_bss_1C) == 0) {
lbl_1_bss_18 = 5;
}
break;
case 5:
if (fn_1_F568()) {
lbl_1_bss_18 = 6;
}
break;
case 6:
lbl_1_bss_1C = MGSeqFinishCreate();
lbl_1_bss_18 = 7;
HuAudSeqPauseAll(0);
HuAudSeqAllFadeOut(250);
break;
case 7:
if (MGSeqStatGet(lbl_1_bss_1C) == 0) {
lbl_1_bss_18 = 8;
}
break;
case 8:
lbl_1_bss_220.unk00->work[0] = 999;
if (fn_1_F78C()) {
lbl_1_bss_18 = 9;
}
break;
case 9:
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
arg0->func = fn_1_F824;
HuAudFXFadeOut(lbl_1_bss_3AC.unk28, 500);
break;
}
fn_1_F924(arg0);
}
void fn_1_10670(omObjData *arg0)
{
StructBss220 *var_r28;
StructBss1BC *var_r27;
StructBss1A8 *var_r26;
StructBss180 *temp_r30;
StructBss3E4 *temp_r29;
StructBssD8 *var_r25;
s32 i;
var_r28 = &lbl_1_bss_220;
var_r28->unk00 = omAddObjEx(lbl_1_bss_0, 0x100, 16, 16, -1, fn_1_3BF0);
var_r27 = &lbl_1_bss_1BC;
var_r27->unk00 = omAddObjEx(lbl_1_bss_0, 0x200, 20, 20, -1, fn_1_4594);
var_r26 = &lbl_1_bss_1A8;
var_r26->unk00 = omAddObjEx(lbl_1_bss_0, 0x300, 16, 16, -1, fn_1_4B1C);
for (i = 0; i < 2; i++) {
temp_r30 = &lbl_1_bss_180[i];
temp_r30->unk00 = omAddObjEx(lbl_1_bss_0, 0x400, 16, 16, -1, fn_1_4FB0);
temp_r30->unk00->work[0] = i;
}
for (i = 0; i < 4; i++) {
temp_r29 = &lbl_1_bss_3E4[i];
temp_r29->unk00 = omAddObjEx(lbl_1_bss_0, 0x500, 16, 16, -1, fn_1_6060);
temp_r29->unk00->work[0] = i;
}
var_r25 = &lbl_1_bss_D8;
var_r25->unk00 = omAddObjEx(lbl_1_bss_0, 0x600, 16, 16, -1, fn_1_6944);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
arg0->func = fn_1_1026C;
}
#include "src/REL/executor.c"
void fn_1_108DC(void)
{
lbl_1_bss_0 = omInitObjMan(62, 0x2000);
omGameSysInit(lbl_1_bss_0);
fn_1_1A8();
fn_1_F6C();
fn_1_1084();
fn_1_178C();
fn_1_2A2C();
fn_1_54A0();
omAddObjEx(lbl_1_bss_0, 0x1000, 0, 0, -1, fn_1_10670);
}
void ObjectSetup(void)
{
fn_1_108DC();
}