marioparty4/src/REL/m429Dll/main.c
2024-12-15 23:22:30 +01:00

2884 lines
93 KiB
C

#include "REL/executor.h"
#include "game/chrman.h"
#include "game/frand.h"
#include "game/minigame_seq.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/wipe.h"
#include "game/gamework_data.h"
#include "game/mapspace.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/hsfanim.h"
#include "game/hsfdraw.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/esprite.h"
#include "game/sprite.h"
#include "ext_math.h"
#include "version.h"
#undef ABS
#define ABS(x) ((0 > (x)) ? -(x) : (x))
typedef struct unk_bss_358_struct {
/* 0x00 */ u16 unk00;
/* 0x02 */ s16 unk02;
/* 0x04 */ struct unk_bss_358_struct *unk04;
/* 0x08 */ struct unk_bss_358_struct *unk08;
} UnkBss358Struct; // Size 0xC
typedef struct unk_bss_340_struct {
/* 0x00 */ HsfanimStruct00 *unk00;
/* 0x04 */ s32 *unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
/* 0x10 */ struct unk_bss_340_struct *unk10;
/* 0x14 */ struct unk_bss_340_struct *unk14;
} UnkBss340Struct; // Size 0x18
typedef struct {
/* 0x00 */ u32 unk00;
/* 0x04 */ s16 unk04;
} UnkBss1B0Struct; // Size 8
UnkBss358Struct lbl_1_bss_358;
UnkBss340Struct lbl_1_bss_340;
Process *lbl_1_bss_33C;
Vec lbl_1_bss_330;
Vec lbl_1_bss_324;
Vec lbl_1_bss_318;
Vec lbl_1_bss_30C;
u32 lbl_1_bss_308;
s32 lbl_1_bss_304;
u32 lbl_1_bss_300;
s16 lbl_1_bss_2FE;
s16 lbl_1_bss_2FC;
s32 lbl_1_bss_2F8;
s32 lbl_1_bss_2F4;
float lbl_1_bss_2F0;
s32 lbl_1_bss_2B0[16];
UnkBss1B0Struct lbl_1_bss_1B0[32];
void fn_1_0(void)
{
lbl_1_bss_358.unk04 = NULL;
lbl_1_bss_358.unk08 = NULL;
}
void fn_1_24(u16 arg0, s16 arg1)
{
UnkBss358Struct *temp_r31;
UnkBss358Struct *temp_r30;
UnkBss358Struct *temp_r29;
temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM);
temp_r31->unk00 = arg0;
temp_r31->unk02 = arg1;
temp_r30 = &lbl_1_bss_358;
temp_r29 = temp_r30->unk08;
temp_r30->unk08 = temp_r31;
if (NULL != temp_r29) {
temp_r29->unk04 = temp_r31;
}
temp_r31->unk04 = temp_r30;
temp_r31->unk08 = temp_r29;
}
s16 fn_1_AC(s16 arg0)
{
UnkBss358Struct *var_r31;
UnkBss358Struct *temp_r29;
UnkBss358Struct *temp_r30;
s16 temp_r28;
var_r31 = lbl_1_bss_358.unk08;
while (NULL != var_r31) {
if (arg0 == var_r31->unk00) {
temp_r28 = var_r31->unk02;
temp_r29 = var_r31->unk04;
temp_r30 = var_r31->unk08;
temp_r29->unk08 = temp_r30;
if (NULL != temp_r30) {
temp_r30->unk04 = temp_r29;
}
HuMemDirectFree(var_r31);
return temp_r28;
}
var_r31 = var_r31->unk08;
}
return -1;
}
void fn_1_150(void)
{
lbl_1_bss_340.unk10 = NULL;
lbl_1_bss_340.unk14 = NULL;
}
void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6)
{
UnkBss340Struct *temp_r27;
UnkBss340Struct *var_r31;
UnkBss340Struct *temp_r28;
s32 i;
var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r31), MEMORY_DEFAULT_NUM);
var_r31->unk00 = arg1;
var_r31->unk08 = arg3;
var_r31->unk0C = arg4;
var_r31->unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, arg4 * sizeof(*var_r31->unk04), MEMORY_DEFAULT_NUM);
for (i = 0; i < arg4; i++, arg5++) {
var_r31->unk04[i] = Hu3DParManLink(arg0, arg1);
if (var_r31->unk04[i] >= 0) {
Hu3DParManAttrReset(var_r31->unk04[i], 1);
Hu3DParManPosSet(var_r31->unk04[i], arg5->x, arg5->y, arg5->z);
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg6);
Hu3DModelLayerSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg2);
}
}
temp_r28 = &lbl_1_bss_340;
temp_r27 = temp_r28->unk14;
temp_r28->unk14 = var_r31;
if (NULL != temp_r27) {
temp_r27->unk10 = var_r31;
}
var_r31->unk10 = temp_r28;
var_r31->unk14 = temp_r27;
}
void fn_1_2D8(void)
{
UnkBss340Struct *var_r31;
UnkBss340Struct *temp_r28;
UnkBss340Struct *temp_r29;
s32 i;
var_r31 = lbl_1_bss_340.unk14;
while (NULL != var_r31) {
var_r31->unk08--;
if (var_r31->unk08 == 0) {
for (i = 0; i < var_r31->unk0C; i++) {
if (var_r31->unk04[i] >= 0) {
Hu3DParManAttrSet(var_r31->unk04[i], 1);
}
}
}
temp_r28 = var_r31->unk10;
temp_r29 = var_r31->unk14;
if (-var_r31->unk00->unk00 > var_r31->unk08) {
for (i = 0; i < var_r31->unk0C; i++) {
if (var_r31->unk04[i] >= 0) {
Hu3DParManKill(var_r31->unk04[i]);
}
}
temp_r28->unk14 = temp_r29;
if (NULL != temp_r29) {
temp_r29->unk10 = temp_r28;
}
HuMemDirectFree(var_r31->unk04);
HuMemDirectFree(var_r31);
}
var_r31 = temp_r29;
}
}
void fn_1_414(void)
{
s32 i;
for (i = 0; i < 32; i++) {
lbl_1_bss_1B0[i].unk00 = 0;
lbl_1_bss_1B0[i].unk04 = -1;
}
}
s16 fn_1_46C(s32 arg0)
{
s32 i;
for (i = 0; i < 32; i++) {
if (arg0 == lbl_1_bss_1B0[i].unk00) {
return Hu3DModelLink(lbl_1_bss_1B0[i].unk04);
}
}
for (i = 0; i < 32; i++) {
if (lbl_1_bss_1B0[i].unk00 == 0) {
lbl_1_bss_1B0[i].unk00 = arg0;
lbl_1_bss_1B0[i].unk04 = Hu3DModelCreateFile(arg0);
return lbl_1_bss_1B0[i].unk04;
}
}
return Hu3DModelCreateFile(arg0);
}
void fn_1_580(s32 *arg0, s32 arg1, s32 arg2)
{
s32 var_r30;
espBankSet(arg0[arg1 + 1], 10);
espBankSet(arg0[arg1 + 4], 11);
if (600 * REFRESH_RATE <= arg2) {
arg2 = 600 * REFRESH_RATE - 1;
}
var_r30 = arg2 / (60 * REFRESH_RATE);
arg2 -= var_r30 * (60 * REFRESH_RATE);
if (var_r30 > 9) {
var_r30 = 9;
}
espBankSet(arg0[arg1], var_r30);
var_r30 = arg2 / REFRESH_RATE;
arg2 -= var_r30 * REFRESH_RATE;
espBankSet(arg0[arg1 + 2], var_r30 / 10);
espBankSet(arg0[arg1 + 3], var_r30 % 10);
var_r30 = 101.5f * arg2 / REFRESH_RATE;
espBankSet(arg0[arg1 + 5], var_r30 / 10);
espBankSet(arg0[arg1 + 6], var_r30 % 10);
}
void fn_1_798(s32 arg0)
{
lbl_1_bss_2F0 = 0.0f;
lbl_1_bss_300 = lbl_1_bss_304;
GWMGRecordSet(arg0, lbl_1_bss_300);
fn_1_580(lbl_1_bss_2B0, 7, lbl_1_bss_304);
}
void fn_1_9EC(void)
{
s32 i;
for (i = 0; i < 16; i++) {
espDispOn(lbl_1_bss_2B0[i]);
}
}
void fn_1_A40(void)
{
float temp_f31;
s32 i;
if (0.0f <= lbl_1_bss_2F0) {
lbl_1_bss_2F0 += 16.0f;
temp_f31 = 1.0 + 0.2f * sind(lbl_1_bss_2F0);
for (i = 7; i <= 14; i++) {
espScaleSet(lbl_1_bss_2B0[i], temp_f31, temp_f31);
}
}
}
void fn_1_B4C(float arg0, s32 arg1)
{
float temp_f30;
float temp_f31;
s32 i;
temp_f31 = 288.0f;
temp_f30 = arg0;
lbl_1_bss_2B0[15] = espEntry(arg1, 0, 0);
espTPLvlSet(lbl_1_bss_2B0[15], 0.5f);
espColorSet(lbl_1_bss_2B0[15], 0, 0, 0);
espPosSet(lbl_1_bss_2B0[15], temp_f31, temp_f30);
temp_f31 = 248.0f;
temp_f30 = arg0 - 8.0f;
lbl_1_bss_2B0[14] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 55), 0, 0);
espPosSet(lbl_1_bss_2B0[14], temp_f31 - 18.0f, temp_f30);
for (i = 7; i <= 13; i++) {
lbl_1_bss_2B0[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 48), 0, 0);
espPosSet(lbl_1_bss_2B0[i], temp_f31, temp_f30);
temp_f31 += 16.0f;
}
fn_1_580(lbl_1_bss_2B0, 7, lbl_1_bss_300);
temp_f31 = 248.0f;
temp_f30 = arg0 + 8.0f;
for (i = 0; i <= 6; i++) {
lbl_1_bss_2B0[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 49), 0, 0);
espPosSet(lbl_1_bss_2B0[i], temp_f31, temp_f30);
temp_f31 += 16.0f;
}
fn_1_580(lbl_1_bss_2B0, 0, 0);
for (i = 0; i < 16; i++) {
espDrawNoSet(lbl_1_bss_2B0[i], 0);
espDispOff(lbl_1_bss_2B0[i]);
espAttrSet(lbl_1_bss_2B0[i], HUSPR_ATTR_NOANIM);
espPriSet(lbl_1_bss_2B0[i], 0x80 + i);
}
}
void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3)
{
float temp_f31;
if (1.0f < arg0) {
arg0 = 1.0f;
}
temp_f31 = sind(90.0f * arg0) * sind(90.0f * arg0);
arg3->x = arg1->x + temp_f31 * (arg2->x - arg1->x);
arg3->y = arg1->y + temp_f31 * (arg2->y - arg1->y);
arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z);
}
void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2)
{
Hu3DCameraPosSetV(1, arg0, arg1, arg2);
lbl_1_bss_330 = *arg0;
lbl_1_bss_318 = *arg2;
}
s32 fn_1_13DC(float arg0, Vec *arg1)
{
Vec sp18;
Vec spC;
fn_1_11F4(arg0, &lbl_1_bss_330, &lbl_1_bss_324, &sp18);
fn_1_11F4(arg0, &lbl_1_bss_318, &lbl_1_bss_30C, &spC);
Hu3DCameraPosSetV(1, &sp18, arg1, &spC);
if (1.0f <= arg0) {
return 1;
}
else {
lbl_1_bss_2F4 = 1;
return 0;
}
}
void fn_1_1710(float arg0, Vec *arg1)
{
Vec sp18;
Vec spC;
fn_1_11F4(arg0, &lbl_1_bss_330, &lbl_1_bss_324, &sp18);
fn_1_11F4(arg0, &lbl_1_bss_318, &lbl_1_bss_30C, &spC);
fn_1_1350(&sp18, arg1, &spC);
lbl_1_bss_2F4 = 1;
}
void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2)
{
Mtx sp1C;
Vec sp10;
float temp_f30;
float temp_f29;
float temp_f28;
float temp_f31;
CameraData *temp_r31;
s32 i;
for (i = 0; i < 16; i++) {
if (arg1 & (1 << i)) {
break;
}
}
temp_r31 = &Hu3DCamera[i];
MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target);
MTXMultVec(sp1C, arg0, &sp10);
temp_f30 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * temp_r31->aspect;
temp_f29 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2));
temp_f28 = 0.9f * temp_r31->viewport_x;
temp_f31 = 0.9f * temp_r31->viewport_w;
arg2->x = temp_f31 / 2 + sp10.x * ((temp_f31 / 2) / -temp_f30) + temp_f28;
arg2->y = temp_r31->viewport_h / 2 + sp10.y * ((temp_r31->viewport_h / 2) / temp_f29) + temp_r31->viewport_y;
arg2->z = 0.0f;
}
void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2)
{
Mtx sp10;
Hu3DModelObjMtxGet(arg0, arg1, sp10);
arg2->x = sp10[0][3];
arg2->y = sp10[1][3];
arg2->z = sp10[2][3];
}
void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3)
{
Mtx spC;
ModelData *var_r30;
var_r30 = &Hu3DData[arg0];
Hu3DModelObjMtxGet(arg0, arg1, spC);
PSMTXConcat(var_r30->unk_F0, spC, spC);
if (NULL != arg3) {
PSMTXCopy(spC, arg3);
}
arg2->x = spC[0][3];
arg2->y = spC[1][3];
arg2->z = spC[2][3];
}
float fn_1_1E20(float arg0, float arg1, float arg2)
{
float var_f31;
float var_f30;
var_f31 = fmod(arg1 - arg0, 360.0);
if (0.0f > var_f31) {
var_f31 += 360.0f;
}
if (180.0f < var_f31) {
var_f31 -= 360.0f;
}
var_f30 = fmod(arg0 + var_f31 * arg2, 360.0);
if (0.0f > var_f30) {
var_f30 += 360.0f;
}
return var_f30;
}
void fn_1_1F24(s32 arg0)
{
lbl_1_bss_2F8 = HuAudSeqPlay((s32)arg0);
}
void fn_1_1F58(s32 arg0)
{
if (lbl_1_bss_2F8 >= 0) {
if (arg0 < 0) {
arg0 = 1000;
}
HuAudSeqFadeOut(lbl_1_bss_2F8, arg0);
}
lbl_1_bss_2F8 = -1;
}
void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3)
{
Vec sp18;
float var_f28;
s32 var_r30;
sp18.x = 0.0f;
sp18.y = 0.0f;
sp18.z = 0.0f;
sp18.x = arg2 / 4.0f;
sp18.z = -(float)arg3 / 4.0f;
var_r30 = 0;
var_f28 = VECMagXZ(&sp18);
if (0.5f <= var_f28) {
if (10.0f <= var_f28) {
sp18.x /= var_f28;
sp18.z /= var_f28;
var_f28 = 10.0f;
sp18.x = 10.0f * sp18.x;
sp18.z = 10.0f * sp18.z;
}
*arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f);
if (8.0f <= var_f28) {
var_r30 = 2;
}
else {
var_r30 = 1;
}
}
VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0);
}
typedef struct data_1340_sub_struct {
char *unk0;
s32 unk4;
s32 unk8[4];
Vec unk18;
} Data1340SubStruct;
typedef struct data_1340_struct {
s32 unk0;
s32 *unk4;
s32 unk8[4];
float unk18;
s32 unk1C;
Data1340SubStruct *unk20;
} Data1340Struct;
typedef struct data_13A8_struct {
float unk0;
float unk4;
float unk8;
s32 unkC;
} Data13A8Struct;
typedef struct bss_130_struct {
s32 unk0;
float unk4;
float unk8;
float unkC;
float unk10;
float unk14;
} Bss130Struct;
s16 lbl_1_data_0[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
Data1340SubStruct lbl_1_data_22C[] = {
{ "baseA2-null2", 1, { 13, 1, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null11", 0, { 10, 0, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null12", 0, { 6, 3, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null13", 8, { 20, 2, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null5", 16, { 14, 5, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null6", 0, { 9, 4, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null20", 128, { 2, -1, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null21", 128, { 8, -1, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null22", 0, { 19, 7, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null7", 0, { 5, 15, 10, -1 }, { 0, 0, 0 } },
{ "baseA2-null10", 16, { 1, 9, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null18", 0, { 17, 12, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null17", 0, { 18, 11, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null3", 0, { 0, 14, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null4", 0, { 4, 13, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null8", 0, { 9, 16, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null9", 0, { 22, 15, 17, -1 }, { 0, 0, 0 } },
{ "baseA2-null19", 0, { 11, 23, 16, -1 }, { 0, 0, 0 } },
{ "baseA2-null16", 0, { 12, 19, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null15", 0, { 8, 18, 20, -1 }, { 0, 0, 0 } },
{ "baseA2-null14", 0, { 3, 19, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null39", 0, { 30, 22, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null40", 0, { 16, 21, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null27", 0, { 17, 37, 24, -1 }, { 0, 0, 0 } },
{ "baseA2-null28", 64, { 32, 23, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null23", 64, { 33, 26, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null24", 0, { 38, 25, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null35", 0, { 31, 28, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null34", 32, { 35, 27, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null31", 32, { 36, -1, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null37", 0, { 21, 34, 31, -1 }, { 0, 0, 0 } },
{ "baseA2-null36", 0, { 27, 30, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null29", 0, { 24, 33, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null30", 0, { 25, 32, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null38", 2, { 30, 35, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null33", 0, { 28, 34, 36, -1 }, { 0, 0, 0 } },
{ "baseA2-null32", 0, { 29, 35, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null26", 0, { 23, 38, -1, -1 }, { 0, 0, 0 } },
{ "baseA2-null25", 4, { 26, 37, -1, -1 }, { 0, 0, 0 } },
};
Data1340SubStruct lbl_1_data_9EC[] = {
{ "baseB2-null1", 1, { 12, 1, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null2", 0, { 8, 0, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null6", 0, { 9, 3, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null10", 0, { 15, 2, 4, -1 }, { 0, 0, 0 } },
{ "baseB2-null11", 0, { 10, 3, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null12", 0, { 11, 6, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null13", 8, { 18, 5, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null7", 16, { 14, -1, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null4", 16, { 1, 9, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null5", 0, { 2, 8, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null14", 128, { 4, 11, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null15", 0, { 5, 10, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null3", 0, { 0, 13, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null9", 0, { 21, 12, 14, -1 }, { 0, 0, 0 } },
{ "baseB2-null8", 0, { 7, 13, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null16", 0, { 3, 16, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null17", 0, { 24, 15, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null18", 128, { 18, -1, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null19", 0, { 6, 17, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null20", 0, { 35, 20, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null21", 0, { 27, 19, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null30", 0, { 13, 22, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null29", 0, { 38, 21, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null31", 0, { 32, 24, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null33", 0, { 16, 23, 25, -1 }, { 0, 0, 0 } },
{ "baseB2-null34", 0, { 30, 24, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null42", 64, { 34, -1, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null25", 0, { 20, 28, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null26", 32, { 37, 27, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null36", 0, { 39, 30, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null35", 0, { 25, 33, 29, -1 }, { 0, 0, 0 } },
{ "baseB2-null24", 32, { 36, -1, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null32", 64, { 23, -1, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null38", 0, { 30, 40, 34, -1 }, { 0, 0, 0 } },
{ "baseB2-null40", 0, { 26, 33, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null22", 2, { 19, 36, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null23", 0, { 31, 35, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null27", 0, { 28, 38, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null28", 0, { 22, 37, 39, -1 }, { 0, 0, 0 } },
{ "baseB2-null37", 0, { 29, 38, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null39", 0, { 33, 41, -1, -1 }, { 0, 0, 0 } },
{ "baseB2-null41", 4, { 40, -1, -1, -1 }, { 0, 0, 0 } },
};
Vec lbl_1_data_FD4 = { 0, 1, -1 };
Vec lbl_1_data_FE0 = { 0, 1, 0 };
s32 lbl_1_data_FEC[4] = { 1, 2, 4, 8 };
float lbl_1_data_FFC[4][4] = { 0, 0, 320, 240, 0, 240, 320, 240, 320, 0, 320, 240, 320, 240, 320, 240 };
float lbl_1_data_103C[4][4] = { 2, 2, 316, 236, 2, 242, 316, 236, 322, 2, 316, 236, 322, 242, 316, 236 };
float lbl_1_data_107C[4][4] = { 0, 0, 640, 480, 0, 480, 640, 0, 640, 0, 0, 480, 640, 480, 0, 0 };
float lbl_1_data_10BC[4][4] = { 0, 0, 0, 480, 0, 480, 0, 0, 0, 0, 640, 480, 0, 480, 640, 0 };
float lbl_1_data_10FC[4][2] = { -1, -1, -1, 1, 1, -1, 1, 1 };
Vec lbl_1_data_111C = { 0, 10000, 0 };
Vec lbl_1_data_1128 = { 0, -1, 0 };
GXColor lbl_1_data_1134 = { 255, 255, 255, 255 };
Vec lbl_1_data_1138 = { 0, 8000, 1000 };
Vec lbl_1_data_1144 = { 0, 0, 0 };
s32 lbl_1_data_1150[8][10] = {
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x72),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x5A),
DATA_MAKE_NUM(DATADIR_M429, 0x08),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x58),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x59),
DATA_MAKE_NUM(DATADIR_M429, 0x00),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x02),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x03),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x72),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x5A),
DATA_MAKE_NUM(DATADIR_M429, 0x09),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x58),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x59),
DATA_MAKE_NUM(DATADIR_M429, 0x01),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x02),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x03),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x72),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x5A),
DATA_MAKE_NUM(DATADIR_M429, 0x0A),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x58),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x59),
DATA_MAKE_NUM(DATADIR_M429, 0x02),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x02),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x03),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x72),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x5A),
DATA_MAKE_NUM(DATADIR_M429, 0x0B),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x58),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x59),
DATA_MAKE_NUM(DATADIR_M429, 0x03),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x02),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x03),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x72),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x5A),
DATA_MAKE_NUM(DATADIR_M429, 0x0C),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x58),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x59),
DATA_MAKE_NUM(DATADIR_M429, 0x04),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x02),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x03),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x72),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x5A),
DATA_MAKE_NUM(DATADIR_M429, 0x0D),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x58),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x59),
DATA_MAKE_NUM(DATADIR_M429, 0x05),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x02),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x03),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x72),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x5A),
DATA_MAKE_NUM(DATADIR_M429, 0x0E),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x58),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x59),
DATA_MAKE_NUM(DATADIR_M429, 0x06),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x02),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x03),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x72),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x5A),
DATA_MAKE_NUM(DATADIR_M429, 0x0F),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x58),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x59),
DATA_MAKE_NUM(DATADIR_M429, 0x07),
};
s32 lbl_1_data_1290[8] = {
DATA_MAKE_NUM(DATADIR_MGCONST, 0x00),
DATA_MAKE_NUM(DATADIR_MGCONST, 0x01),
DATA_MAKE_NUM(DATADIR_MGCONST, 0x02),
DATA_MAKE_NUM(DATADIR_MGCONST, 0x03),
DATA_MAKE_NUM(DATADIR_MGCONST, 0x04),
DATA_MAKE_NUM(DATADIR_MGCONST, 0x05),
DATA_MAKE_NUM(DATADIR_MGCONST, 0x06),
DATA_MAKE_NUM(DATADIR_MGCONST, 0x07),
};
s32 lbl_1_data_12B0[8] = {
DATA_MAKE_NUM(DATADIR_M429, 0x2C),
DATA_MAKE_NUM(DATADIR_M429, 0x2E),
DATA_MAKE_NUM(DATADIR_M429, 0x2C),
DATA_MAKE_NUM(DATADIR_M429, 0x2E),
DATA_MAKE_NUM(DATADIR_M429, 0x2D),
DATA_MAKE_NUM(DATADIR_M429, 0x2E),
DATA_MAKE_NUM(DATADIR_M429, 0x2D),
DATA_MAKE_NUM(DATADIR_M429, 0x2E),
};
s32 lbl_1_data_12D0[4] = {
DATA_MAKE_NUM(DATADIR_M429, 0x3D),
DATA_MAKE_NUM(DATADIR_M429, 0x3D),
DATA_MAKE_NUM(DATADIR_M429, 0x3E),
DATA_MAKE_NUM(DATADIR_M429, 0x3E),
};
s32 lbl_1_data_12E0[4][3] = {
DATA_MAKE_NUM(DATADIR_M429, 0x24),
DATA_MAKE_NUM(DATADIR_M429, 0x30),
DATA_MAKE_NUM(DATADIR_M429, 0x25),
DATA_MAKE_NUM(DATADIR_M429, 0x26),
DATA_MAKE_NUM(DATADIR_M429, 0x30),
DATA_MAKE_NUM(DATADIR_M429, 0x27),
DATA_MAKE_NUM(DATADIR_M429, 0x28),
DATA_MAKE_NUM(DATADIR_M429, 0x30),
DATA_MAKE_NUM(DATADIR_M429, 0x29),
DATA_MAKE_NUM(DATADIR_M429, 0x2A),
DATA_MAKE_NUM(DATADIR_M429, 0x30),
DATA_MAKE_NUM(DATADIR_M429, 0x2B),
};
s32 lbl_1_data_1310[4] = {
DATA_MAKE_NUM(DATADIR_M429, 0x3A),
DATA_MAKE_NUM(DATADIR_M429, 0x3A),
DATA_MAKE_NUM(DATADIR_M429, 0x3B),
DATA_MAKE_NUM(DATADIR_M429, 0x3B),
};
s32 lbl_1_data_1320[4] = {
DATA_MAKE_NUM(DATADIR_M429, 0x13),
DATA_MAKE_NUM(DATADIR_M429, 0x16),
DATA_MAKE_NUM(DATADIR_M429, 0x15),
DATA_MAKE_NUM(DATADIR_M429, 0x14),
};
s32 lbl_1_data_1330[4] = {
DATA_MAKE_NUM(DATADIR_M429, 0x1C),
DATA_MAKE_NUM(DATADIR_M429, 0x1F),
DATA_MAKE_NUM(DATADIR_M429, 0x1E),
DATA_MAKE_NUM(DATADIR_M429, 0x1D),
};
Data1340Struct lbl_1_data_1340[2] = {
{
0,
lbl_1_data_1320,
{
DATA_MAKE_NUM(DATADIR_M429, 0x10),
DATA_MAKE_NUM(DATADIR_M429, 0x11),
DATA_MAKE_NUM(DATADIR_M429, 0x17),
DATA_MAKE_NUM(DATADIR_M429, 0x18),
},
13000,
39,
lbl_1_data_22C,
},
{
4,
lbl_1_data_1330,
{
DATA_MAKE_NUM(DATADIR_M429, 0x19),
DATA_MAKE_NUM(DATADIR_M429, 0x1A),
DATA_MAKE_NUM(DATADIR_M429, 0x20),
DATA_MAKE_NUM(DATADIR_M429, 0x21),
},
13000,
42,
lbl_1_data_9EC,
},
};
s32 lbl_1_data_1388[8] = {
DATA_MAKE_NUM(DATADIR_M429, 0x32),
DATA_MAKE_NUM(DATADIR_M429, 0x33),
DATA_MAKE_NUM(DATADIR_M429, 0x34),
DATA_MAKE_NUM(DATADIR_M429, 0x35),
DATA_MAKE_NUM(DATADIR_M429, 0x36),
DATA_MAKE_NUM(DATADIR_M429, 0x37),
DATA_MAKE_NUM(DATADIR_M429, 0x38),
DATA_MAKE_NUM(DATADIR_M429, 0x39),
};
Data13A8Struct lbl_1_data_13A8 = { 0.5f, 100.0f, 130.0f, 15 };
Data13A8Struct lbl_1_data_13B8 = { 0.6f, 110.0f, 120.0f, 12 };
Data13A8Struct lbl_1_data_13C8 = { 0.7f, 120.0f, 110.0f, 9 };
Data13A8Struct lbl_1_data_13D8 = { 0.8f, 130.0f, 100.0f, 6 };
HsfanimStruct00 lbl_1_data_13E8 = {
30,
{ 0, 0 },
1.0f,
10.0f,
360.0f,
{ 0.0f, 0.1f, 0.0f },
1.0f,
1.0f,
30.0f,
1.05f,
1,
{
{ 255, 255, 255, 255 },
{ 255, 255, 255, 255 },
{ 255, 255, 255, 255 },
{ 255, 255, 255, 255 },
},
{
{ 255, 255, 255, 0 },
{ 255, 255, 255, 0 },
{ 255, 255, 255, 0 },
{ 255, 255, 255, 0 },
},
};
omObjData *lbl_1_bss_1AC;
omObjData *lbl_1_bss_1A8;
omObjData **lbl_1_bss_1A4;
omObjData **lbl_1_bss_1A0;
omObjData **lbl_1_bss_19C;
omObjData **lbl_1_bss_198;
s32 lbl_1_bss_194;
Data1340Struct *lbl_1_bss_190;
Bss130Struct lbl_1_bss_130[4];
float lbl_1_bss_12C;
float lbl_1_bss_128;
float lbl_1_bss_124;
float lbl_1_bss_120;
float lbl_1_bss_11C;
float lbl_1_bss_118;
float lbl_1_bss_114;
float lbl_1_bss_110;
Vec lbl_1_bss_F8[2];
Vec lbl_1_bss_C8[4];
Vec lbl_1_bss_98[4];
Vec lbl_1_bss_68[4];
Vec lbl_1_bss_38[4];
s32 lbl_1_bss_34;
s32 lbl_1_bss_2C[2];
s32 lbl_1_bss_28;
s32 lbl_1_bss_24;
s32 lbl_1_bss_20;
s32 lbl_1_bss_1C;
s16 lbl_1_bss_1A;
s16 lbl_1_bss_10[5];
AnimData *lbl_1_bss_C;
s16 lbl_1_bss_8;
s32 lbl_1_bss_4;
s32 lbl_1_bss_0;
typedef struct work_8F68 {
Data13A8Struct *unk0;
Vec unk4;
Vec unk10;
Vec unk1C;
Vec unk28;
Vec unk34;
Vec unk40;
float unk4C;
float unk50;
float unk54;
float unk58;
float unk5C;
float unk60;
float unk64;
float unk68;
float unk6C;
s32 unk70;
u8 *unk74;
s32 unk78;
s32 unk7C;
s32 unk80;
s32 unk84;
s32 unk88;
s32 unk8C;
float unk90;
u32 unk94[2];
s32 unk9C;
s32 unkA0;
s32 unkA4;
s32 unkA8;
s32 unkAC;
s32 unkB0;
s32 unkB4;
s32 unkB8[4];
s32 unkC8[4][2];
s32 unkE8;
s32 unkEC;
s32 unkF0;
s32 unkF4;
s32 unkF8;
s32 unkFC;
s32 unk100;
s32 unk104;
s32 unk108;
s32 unk10C;
s32 unk110;
s32 unk114;
s32 unk118;
s32 unk11C;
s32 unk120;
} Work8F68;
void fn_1_23B4(void)
{
Work8F68 *temp_r31;
s32 temp_r30;
HuSysVWaitSet(1);
lbl_1_bss_11C -= HuPadSubStkX[0] / 59.0f;
lbl_1_bss_120 -= 4 * (HuPadSubStkY[0] / 59.0f);
lbl_1_bss_118 -= 4 * (HuPadTrigL[0] / 150.0f);
lbl_1_bss_118 += 4 * (HuPadTrigR[0] / 150.0f);
for (temp_r30 = 0; temp_r30 < 4; temp_r30++) {
temp_r31 = lbl_1_bss_1A4[temp_r30]->data;
print8(24, 96 + (16 * temp_r30), 1.5f, "%d %d %d M%2d %04x %2d %2d %d %d", temp_r31->unk100, temp_r31->unk10C, temp_r31->unk104,
temp_r31->unk8C, temp_r31->unkE8, temp_r31->unkEC, temp_r31->unkF0, temp_r31->unk80, temp_r31->unk8C);
}
}
Data1340SubStruct *fn_1_2614(s32 arg0)
{
Data1340SubStruct *temp_r31;
s32 temp_r30;
temp_r31 = lbl_1_bss_190->unk20;
for (temp_r30 = 0; temp_r30 < lbl_1_bss_190->unk1C; temp_r30++, temp_r31++) {
if (arg0 & temp_r31->unk4) {
return temp_r31;
}
}
return NULL;
}
void fn_1_2684(void)
{
Data1340SubStruct *temp_r31;
s32 temp_r30;
s32 temp_r28;
temp_r30 = frandmod(2);
lbl_1_bss_190 = &lbl_1_data_1340[temp_r30];
temp_r30 = Hu3DModelCreateFile(lbl_1_bss_190->unk8[0]);
Hu3DModelAttrSet(temp_r30, HU3D_ATTR_DISPOFF);
Hu3DModelPosSet(temp_r30, 0, 0, 0);
Hu3DModelRotSet(temp_r30, 0, -90.f * lbl_1_bss_34, 0);
for (temp_r28 = 0; temp_r28 < lbl_1_bss_190->unk1C; temp_r28++) {
fn_1_1D18(temp_r30, lbl_1_bss_190->unk20[temp_r28].unk0, &lbl_1_bss_190->unk20[temp_r28].unk18);
}
lbl_1_bss_128 = 2000;
lbl_1_bss_124 = 2000;
temp_r31 = fn_1_2614(1);
if (NULL != temp_r31) {
lbl_1_bss_128 = 2.0f * ABS(temp_r31->unk18.x);
lbl_1_bss_124 = 2.2f * ABS(temp_r31->unk18.z);
}
}
void fn_1_2950(Work8F68 *arg0)
{
float temp_f31;
float temp_f30;
float temp_f28;
float temp_f27;
s32 temp_r31;
Data1340SubStruct *temp_r30;
s32 temp_r29;
s32 temp_r28;
s32 temp_r27;
s32 temp_r26;
temp_r28 = arg0->unkEC;
temp_r31 = -1;
temp_f27 = lbl_1_bss_190->unk18;
temp_r30 = lbl_1_bss_190->unk20;
for (temp_r29 = 0; temp_r29 < lbl_1_bss_190->unk1C; temp_r29++, temp_r30++) {
temp_f31 = arg0->unk4.x - temp_r30->unk18.x;
temp_f30 = arg0->unk4.z - temp_r30->unk18.z;
temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
if (arg0->unk54 + 200.0f > temp_f28 && temp_f27 > temp_f28) {
temp_r31 = temp_r29;
temp_f27 = temp_f28;
}
}
if (temp_r31 >= 0) {
arg0->unkEC = temp_r31;
if (temp_r28 != temp_r31) {
if (--arg0->unk8C < 0) {
arg0->unk8C = -1;
}
}
temp_r27 = temp_r31 / 32;
temp_r26 = temp_r31 % 32;
arg0->unk94[temp_r27] |= 1 << temp_r26;
}
}
void fn_1_2BE0(Work8F68 *arg0, s32 arg1, s32 arg2, s32 arg3, u8 *arg4, s32 *arg5)
{
s32 sp8[2];
s32 temp_r31;
Data1340SubStruct *temp_r30;
s32 temp_r29;
u8 *temp_r27;
s32 temp_r24;
s32 temp_r23;
temp_r24 = arg1 / 32;
temp_r23 = arg1 % 32;
arg5[temp_r24] |= 1 << temp_r23;
temp_r27 = HuMemDirectMallocNum(HEAP_SYSTEM, arg3 + 1, MEMORY_DEFAULT_NUM);
for (temp_r31 = 0; temp_r31 < arg3; temp_r31++) {
temp_r27[temp_r31] = arg4[temp_r31];
}
temp_r30 = &lbl_1_bss_190->unk20[arg1];
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
if (temp_r30->unk8[temp_r31] < 0) {
break;
}
temp_r27[arg3] = temp_r30->unk8[temp_r31];
if (arg2 == temp_r30->unk8[temp_r31]) {
if (arg0->unk78 > arg3 + 1) {
if (NULL != arg0->unk74) {
HuMemDirectFree(arg0->unk74);
}
arg0->unk74 = HuMemDirectMallocNum(HEAP_SYSTEM, arg3 + 1, MEMORY_DEFAULT_NUM);
for (temp_r29 = 0; temp_r29 < arg3 + 1; temp_r29++) {
arg0->unk74[temp_r29] = temp_r27[temp_r29];
}
arg0->unk78 = arg3 + 1;
}
}
else {
if (temp_r30->unk8[temp_r31] >= 0) {
temp_r24 = temp_r30->unk8[temp_r31] / 32;
temp_r23 = temp_r30->unk8[temp_r31] % 32;
if ((arg5[temp_r24] & (1 << temp_r23)) == 0u) {
for (temp_r29 = 0; temp_r29 < 2; temp_r29++) {
sp8[temp_r29] = arg5[temp_r29];
}
fn_1_2BE0(arg0, temp_r30->unk8[temp_r31], arg2, arg3 + 1, temp_r27, sp8);
}
}
}
}
HuMemDirectFree(temp_r27);
}
void fn_1_2E14(Work8F68 *arg0)
{
s32 spC[2];
u8 sp8;
s32 temp_r30;
if (NULL != arg0->unk74) {
HuMemDirectFree(arg0->unk74);
}
arg0->unk74 = NULL;
arg0->unk78 = 65535;
arg0->unk7C = 0;
if (arg0->unkEC == arg0->unkF0) {
arg0->unkE8 |= 0x8;
arg0->unkF0 = -1;
return;
}
sp8 = arg0->unkEC;
for (temp_r30 = 0; temp_r30 < 2; temp_r30++) {
spC[temp_r30] = 0;
}
fn_1_2BE0(arg0, arg0->unkEC, arg0->unkF0, 1, &sp8, spC);
}
void fn_1_2EEC(Work8F68 *arg0)
{
Vec sp18;
Vec spC;
float temp_f31;
float temp_f30;
float temp_f28;
Data1340SubStruct *temp_r30;
Data1340SubStruct *temp_r29;
if (NULL != arg0->unk74 && arg0->unk78 >= 2) {
temp_r30 = &lbl_1_bss_190->unk20[arg0->unk74[0]];
temp_r29 = &lbl_1_bss_190->unk20[arg0->unk74[1]];
temp_f31 = temp_r30->unk18.x - arg0->unk4.x;
temp_f30 = temp_r30->unk18.z - arg0->unk4.z;
temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
if (150.0f > temp_f28) {
arg0->unk7C = 1;
return;
}
VECSubtract(&temp_r29->unk18, &temp_r30->unk18, &sp18);
VECSubtract(&arg0->unk4, &temp_r30->unk18, &spC);
if (0.0f != VECMag(&sp18) && 0.0f != VECMag(&spC)) {
VECNormalize(&sp18, &sp18);
VECNormalize(&spC, &spC);
if (0.8f < VECDotProduct(&sp18, &spC)) {
arg0->unk7C = 1;
}
}
}
}
void fn_1_31A8(omObjData *object) { }
void fn_1_31AC(omObjData *object)
{
object->model[0] = Hu3DModelCreateFile(lbl_1_bss_190->unk4[lbl_1_bss_34]);
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
omSetTra(object, 0, 0, 0);
omSetRot(object, 0, 0, 0);
object->func = fn_1_31A8;
}
typedef struct work_3284 {
Vec unk0;
float unkC;
float unk10;
s32 unk14;
s32 unk18;
} Work3284;
void fn_1_3284(omObjData *object)
{
Work3284 *temp_r31 = object->data;
if (lbl_1_bss_1AC->work[0] >= 1007) {
temp_r31->unk10 *= 0.9f;
if (0.0f > temp_r31->unk10) {
temp_r31->unk10 = 0.0f;
}
}
else {
if (temp_r31->unk18 & 0x1) {
temp_r31->unkC += 6.0f;
if (180.0f < temp_r31->unkC) {
temp_r31->unkC = 180.0f;
}
temp_r31->unk10 = 1.0 - (0.5 * sind(temp_r31->unkC));
}
}
omSetSca(object, temp_r31->unk10, temp_r31->unk10, temp_r31->unk10);
Hu3DModelScaleSet(object->model[1], temp_r31->unk10, temp_r31->unk10, temp_r31->unk10);
Hu3DModelScaleSet(object->model[0], temp_r31->unk10, temp_r31->unk10, temp_r31->unk10);
}
void fn_1_33F8(omObjData *object)
{
Work3284 *temp_r31 = object->data;
s32 temp_r29;
s32 temp_r28;
s32 *temp_r27;
Data1340SubStruct *temp_r26;
s32 temp_r25;
s32 temp_r24;
temp_r31->unk0.x = 0;
temp_r31->unk0.y = 0;
temp_r31->unk0.z = 0;
temp_r31->unkC = 0;
temp_r31->unk10 = 1;
temp_r31->unk14 = -1;
temp_r31->unk18 = 0;
temp_r24 = 16 << ((object->work[0] + lbl_1_bss_34 + 2) & 0x3);
temp_r25 = frandmod(lbl_1_bss_190->unk1C) + 1;
temp_r28 = frandmod(lbl_1_bss_190->unk1C);
while (1) {
temp_r26 = &lbl_1_bss_190->unk20[temp_r28];
if ((temp_r24 & temp_r26->unk4) && --temp_r25 < 0) {
temp_r31->unk14 = temp_r28;
temp_r31->unk0 = temp_r26->unk18;
break;
}
else {
temp_r28 = (temp_r28 + 1) % lbl_1_bss_190->unk1C;
}
}
temp_r31->unk0.y = 100;
temp_r27 = &lbl_1_data_12B0[object->work[0] * 2];
object->model[0] = Hu3DModelCreateFile(*temp_r27++);
object->model[1] = Hu3DModelCreateFile(*temp_r27++);
for (temp_r29 = 0; temp_r29 < 2; temp_r29++) {
Hu3DModelCameraSet(object->model[temp_r29], 15);
Hu3DModelAttrSet(object->model[temp_r29], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[temp_r29], HU3D_MOTATTR_LOOP);
Hu3DModelAttrReset(object->model[temp_r29], HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(object->model[temp_r29], 3);
Hu3DModelPosSet(object->model[temp_r29], temp_r31->unk0.x, temp_r31->unk0.y, temp_r31->unk0.z);
Hu3DModelRotSet(object->model[temp_r29], 0, 0, 0);
Hu3DModelShadowSet(object->model[temp_r29]);
}
omSetTra(object, temp_r31->unk0.x, temp_r31->unk0.y, temp_r31->unk0.z);
omSetRot(object, 0, 0, 0);
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
object->func = fn_1_3284;
}
s32 fn_1_36FC(Work8F68 *arg0)
{
AddX = 0;
AddZ = 0;
MapWall(arg0->unk54, arg0->unk4.x, arg0->unk4.y + arg0->unk54, arg0->unk4.z);
arg0->unk4.x += AddX;
arg0->unk4.z += AddZ;
if (0.0f != ABS(AddX) + ABS(AddZ)) {
arg0->unk108 = 1;
return 1;
}
else {
return 0;
}
}
static inline void VECSet(Vec *dst, float x, float y, float z)
{
dst->x = x;
dst->y = y;
dst->z = z;
}
void fn_1_386C(Work8F68 *arg0)
{
Vec sp18;
Vec spC;
float temp_f31;
float temp_f30;
float temp_f28;
Work8F68 *temp_r30;
s32 temp_r29;
s32 temp_r28;
s32 temp_r27;
temp_r28 = 0;
temp_r27 = 0;
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
temp_r30 = lbl_1_bss_1A4[temp_r29]->data;
if (arg0->unk114 == temp_r30->unk114) {
continue;
}
temp_f31 = arg0->unk4.x - temp_r30->unk4.x;
temp_f30 = arg0->unk4.z - temp_r30->unk4.z;
temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
if (temp_f28 < arg0->unk54 + temp_r30->unk54) {
if (0.0f == temp_f28) {
temp_f31 = 0;
temp_f30 = -1;
}
else {
temp_f31 /= temp_f28;
temp_f30 /= temp_f28;
}
temp_r27++;
arg0->unk4.x = temp_r30->unk4.x + (temp_f31 * (arg0->unk54 + temp_r30->unk54));
arg0->unk4.z = temp_r30->unk4.z + (temp_f30 * (arg0->unk54 + temp_r30->unk54));
fn_1_36FC(arg0);
VECSet(&sp18, arg0->unkF4, 0, arg0->unkF8);
VECSet(&spC, temp_r30->unkF4, 0, temp_r30->unkF8);
if (0.0f != VECMag(&sp18) && 0.0f != VECMag(&spC)) {
VECNormalize(&sp18, &sp18);
VECNormalize(&spC, &spC);
if (-0.8f > VECDotProduct(&sp18, &spC)) {
temp_r28++;
}
}
}
}
if (temp_r28 != 0 || temp_r27 >= 2) {
arg0->unk100++;
arg0->unk10C++;
}
else {
arg0->unk10C = 0;
}
}
void fn_1_3DCC(Work8F68 *arg0)
{
float temp_f31;
float temp_f30;
float temp_f28;
Work3284 *temp_r31;
s32 temp_r30;
for (temp_r30 = 0; temp_r30 < 4; temp_r30++) {
temp_r31 = lbl_1_bss_19C[temp_r30]->data;
temp_f31 = arg0->unk4.x - temp_r31->unk0.x;
temp_f30 = arg0->unk4.z - temp_r31->unk0.z;
temp_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
if (temp_f28 < arg0->unk54 + 50) {
if (0.0f == temp_f28) {
temp_f31 = 0;
temp_f30 = -1;
}
else {
temp_f31 /= temp_f28;
temp_f30 /= temp_f28;
}
arg0->unk4.x = temp_r31->unk0.x + (temp_f31 * (arg0->unk54 + 50));
arg0->unk4.z = temp_r31->unk0.z + (temp_f30 * (arg0->unk54 + 50));
}
}
}
#include "src/REL/executor.c"
void fn_1_40C0(Work8F68 *arg0, omObjData *arg1, s32 arg2)
{
float temp_f31;
s32 temp_r29;
if (arg2 >= 0 && arg0->unkA8 != arg2) {
arg0->unkA8 = arg2;
Hu3DMotionShiftSet(arg1->model[0], arg1->motion[arg0->unkA8], 0, 8, HU3D_MOTATTR_LOOP);
temp_r29 = -1;
temp_f31 = 1;
if (arg0->unkA4 == 1) {
temp_r29 = 9;
}
if (arg0->unkA4 == 0) {
switch (arg0->unkA8) {
case 0:
temp_r29 = 7;
break;
case 1:
temp_r29 = 7;
temp_f31 = 30.0f / 11.0f;
break;
case 2:
temp_r29 = 8;
break;
}
}
if (temp_r29 > 0 && arg0->unkAC != temp_r29) {
arg0->unkAC = temp_r29;
Hu3DMotionOverlaySet(arg1->model[0], arg1->motion[arg0->unkAC]);
Hu3DMotionOverlaySpeedSet(arg1->model[0], temp_f31);
}
}
}
void fn_1_4224(Work8F68 *arg0, omObjData *arg1)
{
s32 temp_r25;
arg0->unk10 = arg0->unk4;
arg0->unk1C.x = 0;
arg0->unk1C.y = 0;
arg0->unk1C.z = 0;
arg0->unk1C.x = arg0->unkF4 / 4.0f;
arg0->unk1C.z = (-(float)arg0->unkF8) / 4.0f;
temp_r25 = 0;
if ((arg0->unkE8 & 0x1) == 0) {
arg0->unk58 = VECMagXZ(&arg0->unk1C);
if (0.5f <= arg0->unk58) {
if (10.0f <= arg0->unk58) {
arg0->unk1C.x /= arg0->unk58;
arg0->unk1C.z /= arg0->unk58;
arg0->unk58 = 10;
arg0->unk1C.x = 10.0f * arg0->unk1C.x;
arg0->unk1C.z = 10.0f * arg0->unk1C.z;
}
arg0->unk50 = fn_1_1E20(arg0->unk50, atan2d(arg0->unk1C.x, arg0->unk1C.z), 0.4f);
if (8.0f <= arg0->unk58) {
temp_r25 = 2;
}
else {
temp_r25 = 1;
}
}
VECAdd(&arg0->unk4, &arg0->unk1C, &arg0->unk4);
}
arg0->unk108 = 0;
fn_1_36FC(arg0);
fn_1_386C(arg0);
fn_1_3DCC(arg0);
fn_1_36FC(arg0);
if (arg0->unk108) {
arg0->unk100++;
arg0->unk104++;
}
else {
arg0->unk104 = 0;
}
fn_1_2950(arg0);
fn_1_40C0(arg0, arg1, temp_r25);
}
Work8F68 *fn_1_4DF0(s32 arg0)
{
s32 temp_r31;
Work8F68 *temp_r30;
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
temp_r30 = lbl_1_bss_1A4[temp_r31]->data;
if (arg0 == temp_r30->unk110) {
return temp_r30;
}
}
return NULL;
}
void fn_1_4E50(Work8F68 *arg0)
{
float temp_f31;
float temp_f30;
float temp_f27;
Work8F68 *temp_r31;
if ((arg0->unkE8 & 0x4) && lbl_1_bss_28 < 0) {
temp_r31 = fn_1_4DF0(arg0->unk110 ^ 1);
if (temp_r31->unkE8 & 0x4) {
temp_f31 = arg0->unk4.x - temp_r31->unk4.x;
temp_f30 = arg0->unk4.z - temp_r31->unk4.z;
temp_f27 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
if ((1.5f * (arg0->unk54 + temp_r31->unk54)) >= temp_f27) {
lbl_1_bss_28 = arg0->unk110 & 0x2;
}
}
}
}
void fn_1_50AC(Work8F68 *arg0, omObjData *arg1)
{
float temp_f31;
float temp_f30;
float temp_f27;
Work3284 *temp_r30;
s32 temp_r28;
omObjData *temp_r27;
if (arg0->unkE8 & 0x2) {
return;
}
for (temp_r28 = 0; temp_r28 < 4; temp_r28++) {
if ((arg0->unk110 & 0x2) != (lbl_1_bss_19C[temp_r28]->work[0] & 0x2)) {
continue;
}
temp_r30 = lbl_1_bss_19C[temp_r28]->data;
if (temp_r30->unk18 & 0x1) {
continue;
}
temp_f31 = temp_r30->unk0.x - arg0->unk4.x;
temp_f30 = temp_r30->unk0.z - arg0->unk4.z;
temp_f27 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
if (50 + arg0->unk54 >= temp_f27) {
omVibrate(arg0->unk114, 12, 6, 6);
arg0->unk9C = 2002;
arg0->unk5C = 0;
arg0->unkE8 |= 0x2;
arg0->unkE8 &= ~0x10;
arg0->unk28 = temp_r30->unk0;
arg0->unkA4 = lbl_1_bss_2C[arg0->unk110 >> 1]++;
arg0->unkA0 = (arg0->unk110 & 0x2) + arg0->unkA4;
Hu3DModelAttrReset(arg1->model[0], HU3D_MOTATTR_LOOP);
if (!arg0->unkA4) {
arg0->unkA8 = 5;
Hu3DMotionShiftSet(arg1->model[0], arg1->motion[5], 0, 10, HU3D_MOTATTR_NONE);
HuAudFXPlay(1642);
}
else {
arg0->unkA8 = 6;
Hu3DMotionShiftSet(arg1->model[0], arg1->motion[6], 0, 10, HU3D_MOTATTR_NONE);
HuAudFXPlay(1643);
}
temp_r27 = lbl_1_bss_1A0[arg0->unkA0];
omSetTra(temp_r27, arg0->unk28.x, arg0->unk28.y, arg0->unk28.z);
Hu3DModelAttrReset(temp_r27->model[0], HU3D_ATTR_DISPOFF);
temp_r30->unk18 |= 0x1;
Hu3DModelAttrSet(lbl_1_bss_19C[temp_r28]->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_19C[temp_r28]->model[1], HU3D_ATTR_DISPOFF);
break;
}
}
}
void fn_1_54BC(Work8F68 *arg0, omObjData *arg1)
{
float temp_f31;
float temp_f30;
float temp_f29;
Vec sp14;
Vec sp8;
omObjData *temp_r29;
arg0->unk5C++;
temp_f31 = arg0->unk5C / 50;
if (1.0f <= temp_f31) {
temp_f31 = 1.0f;
}
fn_1_1D18(arg1->model[0], CharModelHookNameGet(arg0->unk118, 8, 0), &sp14);
fn_1_11F4(temp_f31, &arg0->unk28, &sp14, &sp8);
sp8.y += sind(180.0f * temp_f31) * 100;
temp_r29 = lbl_1_bss_1A0[arg0->unkA0];
omSetTra(temp_r29, sp8.x, sp8.y, sp8.z);
(void)temp_f31;
if (80.0f <= arg0->unk5C++) {
arg0->unk9C = 2001;
arg0->unkE8 |= 0x4;
arg0->unkA8 = 0;
omSetTra(temp_r29, 0, 0, 0);
Hu3DModelHookSet(arg1->model[0], CharModelHookNameGet(arg0->unk118, 8, 0), temp_r29->model[0]);
if (arg0->unkA4 == 0) {
arg0->unkAC = 7;
}
else {
arg0->unkAC = 9;
}
Hu3DModelAttrSet(arg1->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_OVL_LOOP);
Hu3DMotionSet(arg1->model[0], arg1->motion[0]);
Hu3DMotionOverlaySet(arg1->model[0], arg1->motion[arg0->unkAC]);
}
}
s32 fn_1_583C(Work8F68 *arg0, s32 arg1)
{
s32 temp_r31;
s32 temp_r29;
s32 temp_r27;
s32 temp_r26;
if (arg0->unkE8 & 0x10) {
return arg1;
}
temp_r29 = 0;
temp_r31 = arg1;
if (arg0->unk8C >= 0) {
arg0->unk88 = -1;
temp_r31 = frandmod(lbl_1_bss_190->unk1C);
do {
temp_r29++;
if (lbl_1_bss_190->unk1C <= temp_r29) {
temp_r31 = frandmod(lbl_1_bss_190->unk1C);
}
else {
temp_r27 = temp_r31 / 32;
temp_r26 = temp_r31 % 32;
if ((1 << temp_r26) & arg0->unk94[temp_r27]) {
temp_r31 = (temp_r31 + 1) % lbl_1_bss_190->unk1C;
}
}
} while (temp_r31 == arg1);
}
return temp_r31;
}
void fn_1_595C(Work8F68 *arg0, Work8F68 *arg1)
{
s32 temp_r29;
s32 temp_r28;
s32 temp_r27;
Work3284 *temp_r26;
s32 temp_r24;
Data1340SubStruct *temp_r23;
if (!(arg0->unkE8 & 0x10)) {
fn_1_2950(arg0);
if (arg0->unkEC >= 0) {
temp_r27 = 0;
temp_r23 = &lbl_1_bss_190->unk20[arg0->unkEC];
for (temp_r28 = 0; temp_r28 < 4; temp_r28++) {
temp_r24 = temp_r23->unk8[temp_r28];
if (temp_r24 < 0) {
break;
}
if (arg0->unkE8 & 0x2) {
if (temp_r24 == arg1->unkEC) {
temp_r27 = 1;
}
}
else {
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
if ((arg0->unk110 & 0x2) == (lbl_1_bss_19C[temp_r29]->work[0] & 0x2)) {
temp_r26 = lbl_1_bss_19C[temp_r29]->data;
if (!(temp_r26->unk18 & 0x1)) {
if (temp_r24 == temp_r26->unk14) {
temp_r27 = 1;
}
}
}
}
}
if (temp_r27 != 0) {
break;
}
}
if (temp_r27 != 0) {
arg0->unkF0 = -1;
arg0->unkE8 |= 0x10;
}
}
}
}
s32 fn_1_5CDC(Work8F68 *arg0)
{
s32 temp_r30;
s32 temp_r29;
s32 temp_r28;
Work3284 *temp_r27;
s32 temp_r24;
temp_r28 = -1;
temp_r24 = 65535;
arg0->unk88 = -1;
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
if ((arg0->unk110 & 0x2) == (lbl_1_bss_19C[temp_r29]->work[0] & 0x2)) {
temp_r27 = lbl_1_bss_19C[temp_r29]->data;
if (temp_r27->unk18 & 0x1) {
continue;
}
arg0->unkF0 = temp_r27->unk14;
fn_1_2E14(arg0);
if (temp_r24 > arg0->unk78) {
temp_r28 = temp_r27->unk14;
temp_r24 = arg0->unk78;
arg0->unk88 = temp_r29;
}
}
}
temp_r28 = fn_1_583C(arg0, temp_r28);
return temp_r28;
}
void fn_1_5F44(Work8F68 *arg0)
{
float temp_f31;
float temp_f30;
float temp_f24;
float temp_f23;
Vec spC4;
Work3284 *sp78;
Work8F68 *temp_r28;
s32 temp_r18;
if (NULL == arg0->unk0) {
return;
}
temp_r28 = fn_1_4DF0(arg0->unk110 ^ 1);
arg0->unk90--;
if (0.0f < arg0->unk90) {
return;
}
if (arg0->unk100 > 30 || arg0->unk10C > 30) {
arg0->unk90 = 30;
if (arg0->unkE8 & 0x2) {
arg0->unk90 *= 2.5f;
}
}
arg0->unk84 -= 1.0f;
if (0.0f > arg0->unk84) {
arg0->unk80 -= 1.0f;
if (0.0f > arg0->unk80) {
arg0->unk80 = ((arg0->unk0->unk4 / 2) * frandf()) + arg0->unk0->unk4;
arg0->unk84 = ((arg0->unk0->unk8 / 2) * frandf()) + arg0->unk0->unk8;
}
}
if (arg0->unkF0 >= 0) {
if (arg0->unkE8 & 0x2) {
if (arg0->unk8C >= 0) {
if (arg0->unkE8 & 0x8) {
arg0->unkF0 = -1;
}
}
else {
if (arg0->unkF0 != temp_r28->unkEC) {
arg0->unkF0 = -1;
}
}
}
else {
if (arg0->unk88 >= 0) {
sp78 = lbl_1_bss_19C[arg0->unk88]->data;
if (sp78->unk18 & 0x1) {
arg0->unkF0 = -1;
}
}
else {
if (arg0->unkE8 & 0x8) {
arg0->unkF0 = -1;
}
}
}
if (arg0->unk100 > 30) {
arg0->unkF0 = -1;
}
if (arg0->unk104 > 30) {
arg0->unkF0 = -1;
}
if (arg0->unk10C > 30) {
arg0->unkF0 = -1;
}
}
temp_r18 = -1;
if (arg0->unkF0 < 0) {
if (arg0->unkE8 & 0x2) {
arg0->unkF0 = fn_1_583C(arg0, temp_r28->unkEC);
}
else {
arg0->unkF0 = fn_1_5CDC(arg0);
}
temp_r18 = arg0->unkF0;
arg0->unkE8 &= ~0x8;
fn_1_2E14(arg0);
fn_1_2EEC(arg0);
}
if ((arg0->unkE8 & 0x8) && (arg0->unkE8 & 0x2)) {
spC4 = temp_r28->unk4;
}
else {
if (NULL == arg0->unk74) {
if (temp_r18 < 0) {
arg0->unkE8 &= ~0x8;
arg0->unkF0 = frandmod(lbl_1_bss_190->unk1C);
fn_1_2E14(arg0);
fn_1_2EEC(arg0);
return;
}
else {
spC4 = lbl_1_bss_190->unk20[temp_r18].unk18;
}
}
else {
spC4 = lbl_1_bss_190->unk20[arg0->unk74[arg0->unk7C]].unk18;
}
}
temp_f31 = spC4.x - arg0->unk4.x;
temp_f30 = spC4.z - arg0->unk4.z;
temp_f24 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30));
if (10.0f <= temp_f24) {
temp_f31 /= temp_f24;
temp_f30 /= temp_f24;
}
else {
temp_f31 = 0;
temp_f30 = 0;
}
if (150.0f > temp_f24) {
fn_1_595C(arg0, temp_r28);
arg0->unk7C++;
if (arg0->unk78 <= arg0->unk7C) {
arg0->unk7C = arg0->unk78 - 1;
arg0->unkE8 |= 8;
}
}
temp_f23 = arg0->unk0->unk0;
arg0->unkF4 = (72.0f * temp_f31) * temp_f23;
arg0->unkF8 = (72.0f * -temp_f30) * temp_f23;
if (ABS(arg0->unkF4) > 72) {
arg0->unkF4 = ((arg0->unkF4 < 0) ? -1 : 1) * 72;
}
if (ABS(arg0->unkF8) > 72) {
arg0->unkF8 = ((arg0->unkF8 < 0) ? -1 : 1) * 72;
}
}
void fn_1_7098(s32 arg0, float *arg1)
{
Bss130Struct *temp_r30;
Hu3DCameraViewportSet(lbl_1_data_FEC[arg0], arg1[0], arg1[1], arg1[2], arg1[3], 0, 1);
Hu3DCameraScissorSet(lbl_1_data_FEC[arg0], arg1[0], arg1[1], arg1[2], arg1[3]);
temp_r30 = &lbl_1_bss_130[arg0];
temp_r30->unk8 = 0.9f * (arg1[0] + (arg1[2] / 2));
temp_r30->unkC = arg1[1] + (arg1[3] / 2);
temp_r30->unk10 = arg1[2] / 316;
temp_r30->unk14 = arg1[3] / 236;
}
void fn_1_7D38(omObjData *object);
void fn_1_71F0(omObjData *object)
{
Work8F68 *temp_r31;
s32 temp_r29;
temp_r31 = object->data;
if (lbl_1_bss_1AC->work[0] == 1007) {
temp_r31->unkE8 &= ~0x1;
espDispOff(temp_r31->unkB4);
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
espDispOff(temp_r31->unkB8[temp_r29]);
espDispOff(temp_r31->unkC8[temp_r29][0]);
espDispOff(temp_r31->unkC8[temp_r29][1]);
}
if (temp_r31->unk9C == 2001) {
temp_r31->unk9C = 2003;
fn_1_40C0(temp_r31, object, 0);
if (lbl_1_bss_28 == (temp_r31->unk110 & 0x2)) {
GWPlayerCoinWinSet(temp_r31->unk114, 10);
}
object->func = fn_1_7D38;
return;
}
}
if (GWPlayerCfg[temp_r31->unk114].iscom) {
temp_r31->unkF4 = 0;
temp_r31->unkF8 = 0;
temp_r31->unkFC = 0;
fn_1_5F44(temp_r31);
}
else {
temp_r31->unkF4 = HuPadStkX[temp_r31->unk11C];
temp_r31->unkF8 = HuPadStkY[temp_r31->unk11C];
temp_r31->unkFC = HuPadBtnDown[temp_r31->unk11C];
}
if (lbl_1_bss_1AC->work[0] < 1007 && (temp_r31->unkFC & (PAD_BUTTON_X | PAD_BUTTON_Y))) {
if (temp_r31->unkE8 & 0x1) {
temp_r31->unkE8 &= ~0x1;
espDispOff(temp_r31->unkB4);
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
espDispOff(temp_r31->unkB8[temp_r29]);
espDispOff(temp_r31->unkC8[temp_r29][0]);
espDispOff(temp_r31->unkC8[temp_r29][1]);
}
}
else {
temp_r31->unkE8 |= 0x1;
espDispOn(temp_r31->unkB4);
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
espDispOn(temp_r31->unkB8[temp_r29]);
}
}
}
switch (temp_r31->unk9C) {
case 2001:
fn_1_4224(temp_r31, object);
fn_1_50AC(temp_r31, object);
fn_1_4E50(temp_r31);
break;
case 2002:
fn_1_54BC(temp_r31, object);
break;
default:
OSReport("*** player mode error(%d)!!\n", temp_r31->unk9C);
break;
}
if (temp_r31->unk104 == 0 && temp_r31->unk10C == 0) {
temp_r31->unk100 = 0;
}
lbl_1_bss_C8[temp_r31->unk110].x = temp_r31->unk4.x + (lbl_1_bss_120 * sind(lbl_1_bss_11C));
lbl_1_bss_C8[temp_r31->unk110].y = temp_r31->unk4.y + lbl_1_bss_118;
lbl_1_bss_C8[temp_r31->unk110].z = temp_r31->unk4.z + (lbl_1_bss_120 * cosd(lbl_1_bss_11C));
lbl_1_bss_68[temp_r31->unk110].x = temp_r31->unk4.x;
lbl_1_bss_68[temp_r31->unk110].y = temp_r31->unk4.y;
lbl_1_bss_68[temp_r31->unk110].z = temp_r31->unk4.z;
Hu3DCameraPosSetV(lbl_1_data_FEC[temp_r31->unk110], &lbl_1_bss_C8[temp_r31->unk110], &lbl_1_data_FE0, &lbl_1_bss_68[temp_r31->unk110]);
temp_r31->unk60 = temp_r31->unk50;
omSetTra(object, temp_r31->unk4.x, temp_r31->unk4.y, temp_r31->unk4.z);
omSetRot(object, 0, temp_r31->unk50, 0);
}
void fn_1_7D38(omObjData *object)
{
float temp_f27;
Mtx sp74;
Vec sp8;
Work8F68 *temp_r31 = object->data;
switch (temp_r31->unk9C) {
case 2000:
if (lbl_1_bss_1AC->work[0] >= 1006) {
temp_r31->unk9C++;
object->func = fn_1_71F0;
}
break;
case 2003:
if (lbl_1_bss_1AC->work[0] == 1010) {
Hu3DMotionOverlayReset(object->model[0]);
if (lbl_1_bss_28 >= 0 && (temp_r31->unk110 == lbl_1_bss_28 || temp_r31->unk110 == (lbl_1_bss_28 ^ 1))) {
temp_r31->unk9C = 2004;
temp_r31->unk5C = 0;
temp_r31->unkE8 |= 0x20;
fn_1_1D18(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0), &temp_r31->unk28);
Hu3DModelObjMtxGet(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0), sp74);
Hu3DMtxRotGet(sp74, &temp_r31->unk40);
Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0));
omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk28.x, temp_r31->unk28.y, temp_r31->unk28.z);
if (temp_r31->unkA4 == 0) {
temp_r31->unk4C = lbl_1_bss_110;
Hu3DMotionSet(object->model[0], object->motion[5]);
}
else {
temp_r31->unk4C = lbl_1_bss_110 + 180;
temp_r31->unk40.y = lbl_1_bss_110 + 180;
Hu3DMotionSet(object->model[0], object->motion[6]);
}
Hu3DMotionTimeSet(object->model[0], Hu3DMotionMaxTimeGet(object->model[0]) - 1);
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_REV);
temp_r31->unk40.x = 0;
temp_r31->unk40.z = 0;
omSetRot(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
temp_r31->unk4C = fmod(temp_r31->unk4C - temp_r31->unk40.y, 360);
if (0.0f > temp_r31->unk4C) {
temp_r31->unk4C += 360.0f;
}
if (180.0f < temp_r31->unk4C) {
temp_r31->unk4C -= 360.0f;
}
temp_r31->unk4C /= 60.0f;
}
else {
temp_r31->unk9C = 2008;
Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 8, HU3D_MOTATTR_NONE);
}
}
if (lbl_1_bss_1AC->work[0] == 1012) {
temp_r31->unk9C = 2008;
Hu3DMotionOverlayReset(object->model[0]);
Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 8, HU3D_MOTATTR_NONE);
}
if (temp_r31->unk9C == 2008 && temp_r31->unkA0 >= 0) {
Hu3DModelAttrSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], HU3D_ATTR_DISPOFF);
fn_1_1D18(object->model[0], CharModelHookNameGet(temp_r31->unk118, 8, 0), &sp8);
temp_r31->unk70 = Hu3DParManLink(lbl_1_bss_8, &lbl_1_data_13E8);
temp_r31->unk6C = 0;
Hu3DParManPosSet(temp_r31->unk70, sp8.x, sp8.y, sp8.z);
Hu3DParManAttrReset(temp_r31->unk70, 1);
Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(temp_r31->unk70), 1);
Hu3DModelLayerSet(Hu3DParManModelIDGet(temp_r31->unk70), 6);
}
break;
case 2004:
temp_r31->unk5C++;
fn_1_11F4(temp_r31->unk5C / 60, &temp_r31->unk28, &lbl_1_bss_F8[temp_r31->unkA4], &temp_r31->unk34);
temp_r31->unk34.y += sind(temp_r31->unk5C * 3.0f) * 100;
omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk34.x, temp_r31->unk34.y, temp_r31->unk34.z);
temp_r31->unk40.y += temp_r31->unk4C;
omSetRot(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk40.x, temp_r31->unk40.y, temp_r31->unk40.z);
if (60.0f <= temp_r31->unk5C) {
temp_r31->unk9C++;
temp_r31->unk5C = 0;
temp_r31->unk28 = temp_r31->unk34;
if (temp_r31->unkA4 == 1) {
lbl_1_bss_F8[1].x -= 10 * sind(lbl_1_bss_110);
lbl_1_bss_F8[1].z -= 10 * cosd(lbl_1_bss_110);
}
else {
sp8.x = (30 * sind(lbl_1_bss_110)) + temp_r31->unk34.x;
sp8.y = 30 + temp_r31->unk34.y;
sp8.z = (30 * cosd(lbl_1_bss_110)) + temp_r31->unk34.z;
Hu3DModelTPLvlSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], 0);
Hu3DModelPosSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], sp8.x, sp8.y, sp8.z);
Hu3DModelRotSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], 0, lbl_1_bss_110, 0);
Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], HU3D_MOTATTR_LOOP);
}
}
break;
case 2005:
temp_r31->unk5C++;
fn_1_11F4(temp_r31->unk5C / 60, &temp_r31->unk28, &lbl_1_bss_F8[temp_r31->unkA4], &temp_r31->unk34);
omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], temp_r31->unk34.x, temp_r31->unk34.y, temp_r31->unk34.z);
if (temp_r31->unkA4 == 0) {
temp_f27 = temp_r31->unk5C / 20;
if (1.0f <= temp_f27) {
temp_f27 = 1.0f;
}
Hu3DModelTPLvlSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], temp_f27);
}
if (60.0f <= temp_r31->unk5C) {
temp_r31->unk9C++;
temp_r31->unk5C = 0;
if (temp_r31->unkA4 == 1) {
Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
Hu3DMotionSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], lbl_1_bss_1A0[temp_r31->unkA0]->motion[0]);
HuAudFXPlay(1649);
}
}
break;
case 2006:
temp_r31->unk5C++;
if (20.0f == temp_r31->unk5C) {
temp_r31->unk60 = temp_r31->unk64;
if (temp_r31->unkA4 == 0) {
Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
Hu3DMotionSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], lbl_1_bss_1A0[temp_r31->unkA0]->motion[0]);
HuAudFXPlay(1648);
}
}
if (30.0f < temp_r31->unk5C && Hu3DMotionEndCheck(lbl_1_bss_1A0[temp_r31->unkA0 & 0x2]->model[0])) {
temp_r31->unk9C++;
lbl_1_bss_1C++;
}
break;
case 2007:
if ((temp_r31->unk110 & 0x1) < lbl_1_bss_20) {
temp_r31->unk9C = 2008;
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_REV);
Hu3DMotionShiftSet(object->model[0], object->motion[3], 0, 8, HU3D_MOTATTR_NONE);
}
break;
case 2008:
if (temp_r31->unk70 >= 0) {
temp_r31->unk6C++;
if (10.0f == temp_r31->unk6C) {
Hu3DParManAttrSet(temp_r31->unk70, 1);
}
}
break;
default:
OSReport("*** player mode error(%d)!!\n", temp_r31->unk9C);
break;
}
if (temp_r31->unk9C >= 2005 && (temp_r31->unkE8 & 0x20)) {
temp_r31->unk68 += 4.0f;
sp8 = temp_r31->unk34;
sp8.y += sind(temp_r31->unk68) * 5.0;
omSetTra(lbl_1_bss_1A0[temp_r31->unkA0], sp8.x, sp8.y, sp8.z);
sp8.x = temp_r31->unk34.x + (30.0 * sind(lbl_1_bss_110));
sp8.y = (temp_r31->unk34.y + 30) + (5.0 * sind(temp_r31->unk68));
sp8.z = temp_r31->unk34.z + (30.0 * cosd(lbl_1_bss_110));
Hu3DModelPosSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], sp8.x, sp8.y, sp8.z);
}
if (temp_r31->unk9C >= 2003) {
temp_r31->unk50 = fn_1_1E20(temp_r31->unk50, temp_r31->unk60, 0.1f);
}
omSetTra(object, temp_r31->unk4.x, temp_r31->unk4.y, temp_r31->unk4.z);
omSetRot(object, 0, temp_r31->unk50, 0);
}
void fn_1_8F68(omObjData *object)
{
Work8F68 *temp_r31;
s32 temp_r29;
s32 temp_r28;
Data1340SubStruct *temp_r23;
temp_r31 = object->data;
temp_r31->unk118 = GWPlayerCfg[temp_r31->unk114].character;
temp_r31->unk11C = GWPlayerCfg[temp_r31->unk114].pad_idx;
temp_r31->unk9C = 2000;
temp_r31->unkA0 = -1;
temp_r31->unkA4 = -1;
temp_r31->unkE8 = 0;
temp_r31->unk70 = -1;
temp_r31->unk50 = 0;
temp_r31->unk68 = 0;
temp_r31->unkA8 = 0;
temp_r31->unkAC = -1;
temp_r31->unk54 = 65;
temp_r31->unk0 = 0;
temp_r31->unk80 = 0;
temp_r31->unk84 = 0;
temp_r31->unk74 = 0;
temp_r31->unk78 = 65535;
temp_r31->unk7C = 0;
temp_r31->unk88 = -1;
temp_r31->unk8C = -1;
temp_r31->unk90 = 0;
temp_r31->unkEC = -1;
temp_r31->unkF0 = -1;
temp_r31->unk100 = 0;
temp_r31->unk104 = 0;
temp_r31->unk10C = 0;
for (temp_r29 = 0; temp_r29 < 2; temp_r29++) {
temp_r31->unk94[temp_r29] = 0;
}
object->model[0] = CharModelCreate(lbl_1_data_0[temp_r31->unk118], 8);
CharModelStepTypeSet(lbl_1_data_0[temp_r31->unk118], 0);
for (temp_r29 = 0; temp_r29 < 10; temp_r29++) {
object->motion[temp_r29] = CharModelMotionCreate(lbl_1_data_0[temp_r31->unk118], lbl_1_data_1150[temp_r31->unk118][temp_r29]);
CharModelMotionSet(lbl_1_data_0[temp_r31->unk118], object->motion[temp_r29]);
}
Hu3DModelCameraSet(object->model[0], 15);
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP);
Hu3DModelLayerSet(object->model[0], 2);
Hu3DMotionSet(object->model[0], object->motion[0]);
Hu3DModelShadowSet(object->model[0]);
temp_r31->unk4.x = 0;
temp_r31->unk4.y = 0;
temp_r31->unk4.z = 0;
temp_r28 = temp_r31->unk110;
if (temp_r28 >= 2) {
temp_r28 ^= 1;
}
temp_r28 = (temp_r28 + lbl_1_bss_34) % 4;
temp_r23 = fn_1_2614(1 << temp_r28);
if (NULL != temp_r23) {
temp_r31->unk4 = temp_r23->unk18;
}
omSetTra(object, temp_r31->unk4.x, temp_r31->unk4.y, temp_r31->unk4.z);
omSetRot(object, 0, temp_r31->unk50, 0);
lbl_1_bss_98[temp_r31->unk110].x = temp_r31->unk4.x;
lbl_1_bss_98[temp_r31->unk110].y = temp_r31->unk4.y + 450;
lbl_1_bss_98[temp_r31->unk110].z = temp_r31->unk4.z + 850;
lbl_1_bss_38[temp_r31->unk110].x = temp_r31->unk4.x;
lbl_1_bss_38[temp_r31->unk110].y = temp_r31->unk4.y;
lbl_1_bss_38[temp_r31->unk110].z = temp_r31->unk4.z;
temp_r31->unkB0 = espEntry(lbl_1_data_12D0[temp_r31->unk110], 134, 0);
espDrawNoSet(temp_r31->unkB0, 0);
lbl_1_bss_130[temp_r31->unk110].unk0 = temp_r31->unkB0;
espDispOff(temp_r31->unkB0);
espZRotSet(temp_r31->unkB0, (temp_r31->unk110 & 0x1) ? 0.0f : 180.0f);
temp_r31->unkB4 = espEntry(DATA_MAKE_NUM(DATADIR_M429, 0x31), 133, 0);
espDrawNoSet(temp_r31->unkB4, 0);
espDispOff(temp_r31->unkB4);
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
temp_r31->unkB8[temp_r29] = espEntry(lbl_1_data_1290[GWPlayerCfg[temp_r29].character], (temp_r31->unk114 == temp_r29) ? 129 : 130, 0);
espDrawNoSet(temp_r31->unkB8[temp_r29], 0);
espDispOff(temp_r31->unkB8[temp_r29]);
temp_r31->unkC8[temp_r29][0] = espEntry(lbl_1_data_1310[temp_r29], 128, 0);
espDrawNoSet(temp_r31->unkC8[temp_r29][0], 0);
espDispOff(temp_r31->unkC8[temp_r29][0]);
temp_r31->unkC8[temp_r29][1] = espEntry(DATA_MAKE_NUM(DATADIR_M429, 0x3C), 128, 0);
espDrawNoSet(temp_r31->unkC8[temp_r29][1], 0);
espDispOff(temp_r31->unkC8[temp_r29][1]);
}
if (GWPlayerCfg[temp_r31->unk114].iscom) {
switch (GWPlayerCfg[temp_r31->unk114].diff) {
case 0:
temp_r31->unk0 = &lbl_1_data_13A8;
break;
case 1:
temp_r31->unk0 = &lbl_1_data_13B8;
break;
case 2:
temp_r31->unk0 = &lbl_1_data_13C8;
break;
case 3:
default:
temp_r31->unk0 = &lbl_1_data_13D8;
break;
}
temp_r31->unk80 = frandf() * temp_r31->unk0->unk4;
temp_r31->unk8C = temp_r31->unk0->unkC + ((temp_r31->unk0->unkC / 2.0f) * frandf());
}
CharModelVoiceEnableSet(temp_r31->unk118, object->motion[4], 0);
fn_1_2950(temp_r31);
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
CharModelLayerSetAll2(5);
CharModelMotionDataClose(lbl_1_data_0[temp_r31->unk118]);
object->func = fn_1_7D38;
}
void fn_1_99EC(omObjData *object) { }
void fn_1_99F0(omObjData *object)
{
s32 temp_r30;
s32 *temp_r29;
temp_r29 = &lbl_1_data_12E0[object->work[0]][0];
for (temp_r30 = 0; temp_r30 < 2; temp_r30++) {
object->model[temp_r30] = Hu3DModelCreateFile(*temp_r29++);
Hu3DModelCameraSet(object->model[temp_r30], 15);
Hu3DModelAttrSet(object->model[temp_r30], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[temp_r30], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(object->model[temp_r30], HU3D_MOTATTR_LOOP);
Hu3DModelLayerSet(object->model[temp_r30], 3);
Hu3DModelShadowSet(object->model[temp_r30]);
}
for (temp_r30 = 0; temp_r30 < 1; temp_r29++, temp_r30++) {
object->motion[temp_r30] = Hu3DJointMotionFile(object->model[0], temp_r29[0]);
}
Hu3DMotionSet(object->model[0], object->motion[0]);
omSetTra(object, 0, 0, 0);
omSetRot(object, 0, 0, 0);
object->func = fn_1_99EC;
}
void fn_1_9BAC(omObjData *object)
{
float temp_f31;
float temp_f30;
Vec *temp_r31;
Work8F68 *temp_r29;
s32 temp_r27;
temp_r31 = object->data;
temp_r31[1].x += (frandf() * 12.0f) + 12.0f;
temp_r27 = lbl_1_bss_28;
if (object->work[0] & 0x1) {
temp_r27 ^= 0x1;
}
temp_r29 = fn_1_4DF0(temp_r27);
temp_r31[1].y++;
if (90.0f < temp_r31[1].y) {
temp_r31[1].y = 90.0f;
}
temp_f31 = temp_r31[1].y / 90.0f;
temp_f30 = sind(90.0f * temp_f31) * sind(90.0f * temp_f31);
temp_r31[0].x = lbl_1_bss_F8->x + temp_f30 * (temp_r29->unk4.x - lbl_1_bss_F8->x) * 1.5f;
temp_r31[0].z = lbl_1_bss_F8->z + temp_f30 * (temp_r29->unk4.z - lbl_1_bss_F8->z) * 1.5f;
temp_r31[0].y += temp_r31[1].z;
temp_r31[1].z -= 0.4f;
omSetTra(object, temp_r31[0].x, temp_r31[0].y, temp_r31[0].z);
omSetRot(object, 0, temp_r31[1].x, 0);
if (0.0f > temp_r31[1].z && 180.0f > temp_r31[0].y) {
lbl_1_bss_20++;
HuAudFXPlay(7);
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
CharModelCoinEffectCreate(lbl_1_data_FEC[lbl_1_bss_28], temp_r31);
omDelObjEx(lbl_1_bss_33C, object);
}
}
void fn_1_9EEC(omObjData *object)
{
Vec *temp_r30;
temp_r30 = object->data;
object->model[0] = Hu3DModelLink(lbl_1_bss_1A);
Hu3DModelCameraSet(object->model[0], lbl_1_data_FEC[lbl_1_bss_28]);
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(object->model[0], 4);
Hu3DModelShadowSet(object->model[0]);
temp_r30[0] = lbl_1_bss_F8[0];
temp_r30[0].y += 20;
temp_r30[1].x = 0;
temp_r30[1].y = 0;
temp_r30[1].z = (4 * frandf()) + 10;
omSetTra(object, temp_r30[0].x, temp_r30[0].y, temp_r30[0].z);
omSetRot(object, 0, temp_r30[1].x, 0);
omSetSca(object, 0.4f, 0.4f, 0.4f);
Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF);
object->func = fn_1_9BAC;
}
void fn_1_A0A8(s32 arg0)
{
omObjData *object;
object = omAddObjEx(lbl_1_bss_33C, 103, 1, 0, 3, fn_1_9EEC);
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Vec) * 2, MEMORY_DEFAULT_NUM);
object->work[0] = arg0;
}
void fn_1_A118(void)
{
s32 temp_r31;
float temp_f31;
float temp_f30;
Vec sp8;
temp_f30 = sind(15.0f) / cosd(15.0f);
temp_f31 = 0.5f;
sp8.z = (1.0f - temp_f31) * (lbl_1_bss_190->unk18 * temp_f30);
sp8.x = 1.2f * sp8.z;
sp8.y = lbl_1_bss_190->unk18 * temp_f31;
Hu3DCameraCreate(15);
Hu3DCameraPerspectiveSet(15, 30, 10, 20000, 1.2f);
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
fn_1_7098(temp_r31, &lbl_1_data_FFC[temp_r31][0]);
lbl_1_bss_C8[temp_r31].x = sp8.x * lbl_1_data_10FC[temp_r31][0];
lbl_1_bss_C8[temp_r31].y = sp8.y;
lbl_1_bss_C8[temp_r31].z = sp8.z * lbl_1_data_10FC[temp_r31][1];
lbl_1_bss_68[temp_r31].x = lbl_1_bss_C8[temp_r31].x;
lbl_1_bss_68[temp_r31].y = 0;
lbl_1_bss_68[temp_r31].z = lbl_1_bss_C8[temp_r31].z;
Hu3DCameraPosSetV(lbl_1_data_FEC[temp_r31], &lbl_1_bss_C8[temp_r31], &lbl_1_data_FD4, &lbl_1_bss_68[temp_r31]);
}
}
void fn_1_A588(s32 arg0, Vec *arg1, float arg2)
{
Vec sp18;
Vec spC;
sp18.x = lbl_1_bss_C8[arg0].x + (arg2 * (lbl_1_bss_98[arg0].x - lbl_1_bss_C8[arg0].x));
sp18.y = lbl_1_bss_C8[arg0].y + (arg2 * (lbl_1_bss_98[arg0].y - lbl_1_bss_C8[arg0].y));
sp18.z = lbl_1_bss_C8[arg0].z + (arg2 * (lbl_1_bss_98[arg0].z - lbl_1_bss_C8[arg0].z));
spC.x = lbl_1_bss_68[arg0].x + (arg2 * (lbl_1_bss_38[arg0].x - lbl_1_bss_68[arg0].x));
spC.y = lbl_1_bss_68[arg0].y + (arg2 * (lbl_1_bss_38[arg0].y - lbl_1_bss_68[arg0].y));
spC.z = lbl_1_bss_68[arg0].z + (arg2 * (lbl_1_bss_38[arg0].z - lbl_1_bss_68[arg0].z));
Hu3DCameraPosSetV(lbl_1_data_FEC[arg0], &sp18, arg1, &spC);
}
void fn_1_A7B4(void)
{
s32 temp_r31;
float *temp_r30;
float *temp_r29;
float temp_f31;
float temp_f30;
float sp20[4];
lbl_1_bss_12C++;
temp_f30 = lbl_1_bss_12C / 120;
temp_f31 = sind(90 * temp_f30) * sind(90 * temp_f30);
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
fn_1_A588(temp_r31, &lbl_1_data_FD4, temp_f31);
}
if (30.0f < lbl_1_bss_12C) {
temp_f30 = (lbl_1_bss_12C - 30.0f) / 60.0f;
if (1.0f < temp_f30) {
temp_f30 = 1;
}
temp_f31 = sind(90 * temp_f30) * sind(90 * temp_f30);
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
temp_r30 = &lbl_1_data_FFC[temp_r31][0];
temp_r29 = &lbl_1_data_103C[temp_r31][0];
sp20[0] = temp_r30[0] + (temp_f31 * (temp_r29[0] - temp_r30[0]));
sp20[1] = temp_r30[1] + (temp_f31 * (temp_r29[1] - temp_r30[1]));
sp20[2] = temp_r30[2] + (temp_f31 * (temp_r29[2] - temp_r30[2]));
sp20[3] = temp_r30[3] + (temp_f31 * (temp_r29[3] - temp_r30[3]));
fn_1_7098(temp_r31, sp20);
}
}
}
void fn_1_AD74(float *arg0)
{
float sp8[4];
float *temp_r31;
s32 temp_r28;
float temp_f31;
float temp_f30;
temp_r31 = &lbl_1_data_103C[0][0];
temp_f30 = lbl_1_bss_12C / REFRESH_RATE;
temp_f31 = sind(90 * temp_f30) * sind(90 * temp_f30);
for (temp_r28 = 0; temp_r28 < 4; temp_r28++, temp_r31 += 4, arg0 += 4) {
sp8[0] = temp_r31[0] + (temp_f31 * (arg0[0] - temp_r31[0]));
sp8[1] = temp_r31[1] + (temp_f31 * (arg0[1] - temp_r31[1]));
sp8[2] = temp_r31[2] + (temp_f31 * (arg0[2] - temp_r31[2]));
sp8[3] = temp_r31[3] + (temp_f31 * (arg0[3] - temp_r31[3]));
fn_1_7098(temp_r28, sp8);
}
}
void fn_1_B01C(void)
{
float temp_f31;
float temp_f30;
float temp_f29;
Work8F68 *temp_r31;
Work8F68 *temp_r30;
temp_r31 = fn_1_4DF0(lbl_1_bss_28);
temp_r30 = fn_1_4DF0(lbl_1_bss_28 ^ 1);
temp_f31 = temp_r31->unk4.x - temp_r30->unk4.x;
temp_f30 = temp_r31->unk4.z - temp_r30->unk4.z;
lbl_1_bss_110 = atan2d(temp_f31, temp_f30) + 90;
if (90.0f < lbl_1_bss_110) {
lbl_1_bss_110 -= 180.0f;
}
lbl_1_bss_38[lbl_1_bss_28].x = lbl_1_bss_68[lbl_1_bss_28].x - (temp_f31 / 2);
lbl_1_bss_38[lbl_1_bss_28].y = lbl_1_bss_68[lbl_1_bss_28].y + 200;
lbl_1_bss_38[lbl_1_bss_28].z = lbl_1_bss_68[lbl_1_bss_28].z - (temp_f30 / 2);
temp_f29 = 1350;
lbl_1_bss_98[lbl_1_bss_28].x = lbl_1_bss_38[lbl_1_bss_28].x + (temp_f29 * sind(lbl_1_bss_110));
lbl_1_bss_98[lbl_1_bss_28].y = 250 + lbl_1_bss_38[lbl_1_bss_28].y;
lbl_1_bss_98[lbl_1_bss_28].z = lbl_1_bss_38[lbl_1_bss_28].z + (temp_f29 * cosd(lbl_1_bss_110));
lbl_1_bss_F8[0] = lbl_1_bss_38[lbl_1_bss_28];
lbl_1_bss_F8[1] = lbl_1_bss_38[lbl_1_bss_28];
lbl_1_bss_F8[1].x += 50 * sind(lbl_1_bss_110);
lbl_1_bss_F8[1].y += 15;
lbl_1_bss_F8[1].z += 50 * cosd(lbl_1_bss_110);
temp_f31 = lbl_1_bss_F8[0].x - temp_r31->unk4.x;
temp_f30 = lbl_1_bss_F8[0].z - temp_r31->unk4.z;
temp_r31->unk60 = atan2d(temp_f31, temp_f30);
temp_f31 = lbl_1_bss_F8[0].x - temp_r30->unk4.x;
temp_f30 = lbl_1_bss_F8[0].z - temp_r30->unk4.z;
temp_r30->unk60 = atan2d(temp_f31, temp_f30);
temp_f31 = lbl_1_bss_98[lbl_1_bss_28].x - temp_r31->unk4.x;
temp_f30 = lbl_1_bss_98[lbl_1_bss_28].z - temp_r31->unk4.z;
temp_r31->unk64 = atan2d(temp_f31, temp_f30);
temp_f31 = lbl_1_bss_98[lbl_1_bss_28].x - temp_r30->unk4.x;
temp_f30 = lbl_1_bss_98[lbl_1_bss_28].z - temp_r30->unk4.z;
temp_r30->unk64 = atan2d(temp_f31, temp_f30);
omVibrate(temp_r31->unk114, (VERSION_JP ? 3 : 2) * REFRESH_RATE, 6, 6);
omVibrate(temp_r30->unk114, (VERSION_JP ? 3 : 2) * REFRESH_RATE, 6, 6);
}
void fn_1_B754(float *arg0, float arg1, float arg2, s32 arg3)
{
float temp_f31;
float temp_f30;
temp_f30 = (arg0[2] / 2) * (arg1 / lbl_1_bss_128);
temp_f31 = (arg0[3] / 2) * (arg2 / lbl_1_bss_124);
temp_f30 += arg0[0] + (arg0[2] / 2);
temp_f31 += arg0[1] + (arg0[3] / 2);
temp_f30 = 576.0f * (temp_f30 / 640.0f);
temp_f31 = 480.0f * (temp_f31 / 480.0f);
temp_f31 += (240.0f <= arg0[1]) ? -16.0f : 16.0f;
espPosSet(arg3, temp_f30, temp_f31);
}
void fn_1_E96C(omObjData *object);
void fn_1_B8E0(omObjData *object)
{
float temp_f31;
float temp_f30;
float temp_f20;
float temp_f19;
float *temp_r31;
s32 temp_r29;
Work8F68 *temp_r28;
Bss130Struct *temp_r27;
s32 temp_r24;
Work3284 *temp_r23;
Work8F68 *temp_r20;
s32 sp74;
Work8F68 *sp68;
Work8F68 *sp5C;
if (omSysExitReq) {
fn_1_1F58(-1);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_E96C;
}
lbl_1_bss_114 += 1.0f / REFRESH_RATE;
if (360.0f <= lbl_1_bss_114) {
lbl_1_bss_114 -= 360.0f;
}
Hu3DModelRotSet(object->model[2], 0, lbl_1_bss_114, 0);
lbl_1_bss_308++;
switch (object->work[0]) {
case 1000:
if (!WipeStatGet()) {
object->work[0]++;
lbl_1_bss_12C = 0;
HuAudFXPlay(1644);
}
break;
case 1001:
lbl_1_bss_12C++;
if (60.0f <= lbl_1_bss_12C) {
object->work[0]++;
lbl_1_bss_12C = 0;
}
break;
case 1002:
lbl_1_bss_12C++;
temp_f30 = lbl_1_bss_12C / REFRESH_RATE;
temp_f31 = 1 - (sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f));
for (temp_r29 = 0; temp_r29 < 5; temp_r29++) {
espTPLvlSet(lbl_1_bss_10[temp_r29], temp_f31);
}
if (REFRESH_RATE <= lbl_1_bss_12C) {
object->work[0]++;
lbl_1_bss_12C = 0;
for (temp_r29 = 0; temp_r29 < 5; temp_r29++) {
espKill(lbl_1_bss_10[temp_r29]);
}
}
break;
case 1003:
lbl_1_bss_12C++;
temp_f30 = lbl_1_bss_12C / REFRESH_RATE;
temp_f31 = sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f);
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
lbl_1_bss_130[temp_r29].unk4 = temp_f31;
}
if (REFRESH_RATE <= lbl_1_bss_12C) {
object->work[0]++;
lbl_1_bss_12C = 0;
lbl_1_bss_4 = HuAudFXPlay(1645);
lbl_1_bss_0 = HuAudFXPlay(1646);
}
break;
case 1004:
fn_1_A7B4();
if (120.0f <= lbl_1_bss_12C) {
object->work[0]++;
HuAudFXStop(lbl_1_bss_4);
}
break;
case 1005:
if (lbl_1_bss_2FE < 0) {
lbl_1_bss_2FE = MGSeqStartCreate();
}
else {
if (lbl_1_bss_2F8 < 0 && (MGSeqStatGet(lbl_1_bss_2FE) & 0x10)) {
fn_1_1F24(71);
}
if (!MGSeqStatGet(lbl_1_bss_2FE)) {
object->work[0]++;
lbl_1_bss_304 = 60 * REFRESH_RATE;
lbl_1_bss_2FC = MGSeqTimerCreate(lbl_1_bss_304 / REFRESH_RATE);
lbl_1_bss_2FE = -1;
}
}
break;
case 1006:
MGSeqParamSet(lbl_1_bss_2FC, 1, (lbl_1_bss_304 + REFRESH_RATE - 1) / REFRESH_RATE);
lbl_1_bss_304--;
if (lbl_1_bss_304 < 0 || lbl_1_bss_28 >= 0) {
object->work[0] = 1007;
lbl_1_bss_304 = 60 * REFRESH_RATE;
lbl_1_bss_12C = 0;
}
break;
case 1007:
if (lbl_1_bss_2FE < 0) {
MGSeqParamSet(lbl_1_bss_2FC, 2, -1);
lbl_1_bss_2FC = -1;
lbl_1_bss_2FE = MGSeqFinishCreate();
fn_1_1F58(100);
lbl_1_bss_12C = 0;
if (lbl_1_bss_28 >= 0) {
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(object->model[3], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF);
}
}
else {
sp74 = 0;
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
if (((Work8F68 *)lbl_1_bss_1A4[temp_r29]->data)->unk9C >= 2003) {
sp74++;
}
}
if (sp74 == 4) {
lbl_1_bss_12C++;
}
if (lbl_1_bss_28 >= 0 && 60.0f == lbl_1_bss_12C) {
Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(object->model[4], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(object->model[4], HU3D_MOTATTR_PAUSE);
}
if (60.0f < lbl_1_bss_12C && !MGSeqStatGet(lbl_1_bss_2FE)) {
lbl_1_bss_2FE = -1;
lbl_1_bss_12C = 0;
if (lbl_1_bss_28 < 0) {
object->work[0] = 1012;
lbl_1_bss_12C = 0;
lbl_1_bss_2FE = MGSeqDrawCreate();
HuAudSStreamPlay(4);
}
else {
object->work[0] = 1008;
fn_1_B01C();
}
}
}
break;
case 1008:
lbl_1_bss_12C++;
if (REFRESH_RATE < lbl_1_bss_12C) {
object->work[0]++;
lbl_1_bss_12C = 0;
HuAudFXPlay(1650);
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
if (lbl_1_bss_28 != temp_r29) {
Hu3DCameraKill(lbl_1_data_FEC[temp_r29]);
}
}
}
else {
fn_1_AD74(((lbl_1_bss_28 & 0x2) == 0) ? &lbl_1_data_107C[0][0] : &lbl_1_data_10BC[0][0]);
temp_f30 = lbl_1_bss_12C / REFRESH_RATE;
temp_f31 = sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f);
fn_1_A588(lbl_1_bss_28, &lbl_1_data_FE0, temp_f31);
}
break;
case 1009:
lbl_1_bss_12C++;
if (2 * REFRESH_RATE < lbl_1_bss_12C) {
object->work[0]++;
lbl_1_bss_12C = 0;
HuAudFXPlay(1651);
}
else {
temp_f30 = lbl_1_bss_12C / (2 * REFRESH_RATE);
temp_f31 = sind(temp_f30 * 90.0f) * sind(temp_f30 * 90.0f);
temp_f20 = (6.0f * frandf()) - 3.0f;
temp_f19 = (6.0f * frandf()) - 3.0f;
omSetTra(object, temp_f20, -90 * temp_f31, temp_f19);
Hu3DModelPosSet(object->model[3], temp_f20, -90 * temp_f31, temp_f19);
Hu3DModelPosSet(object->model[4], temp_f20, -90 * temp_f31, temp_f19);
}
break;
case 1010:
if (lbl_1_bss_1C >= 2) {
object->work[0]++;
lbl_1_bss_12C = 0;
}
break;
case 1011:
if (lbl_1_bss_20 > 0 && lbl_1_bss_2FE < 0) {
lbl_1_bss_2FE = MGSeqWinCreate(fn_1_4DF0(lbl_1_bss_28)->unk118, fn_1_4DF0(lbl_1_bss_28 + 1)->unk118, -1, -1);
HuAudSStreamPlay(1);
}
if (lbl_1_bss_24 < 20) {
if ((lbl_1_bss_308 % 6) == 0) {
lbl_1_bss_24++;
fn_1_A0A8(lbl_1_bss_24);
}
}
else {
if (lbl_1_bss_24 == lbl_1_bss_20) {
lbl_1_bss_12C++;
if (60.0f < lbl_1_bss_12C) {
object->work[0] = 1012;
lbl_1_bss_12C = 0;
}
}
}
break;
case 1012:
lbl_1_bss_12C++;
if (210.0f < lbl_1_bss_12C) {
if (lbl_1_bss_2FE < 0 || !MGSeqStatGet(lbl_1_bss_2FE)) {
fn_1_1F58(-1);
lbl_1_bss_2FE = -1;
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_E96C;
}
}
break;
default:
OSReport("*** main mode error(%d)!!\n", object->work[0]);
break;
}
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
temp_r27 = &lbl_1_bss_130[temp_r29];
if (temp_r27->unk0 >= 0) {
espPosSet(temp_r27->unk0, temp_r27->unk8, temp_r27->unkC);
espScaleSet(temp_r27->unk0, temp_r27->unk10, temp_r27->unk14);
espTPLvlSet(temp_r27->unk0, temp_r27->unk4);
espDispOn(temp_r27->unk0);
}
}
for (temp_r29 = 0; temp_r29 < 4; temp_r29++) {
temp_r28 = lbl_1_bss_1A4[temp_r29]->data;
temp_r31 = &lbl_1_data_103C[temp_r28->unk110][0];
if ((temp_r28->unkE8 & 0x1) == 0) {
continue;
}
fn_1_B754(temp_r31, 0, 0, temp_r28->unkB4);
for (temp_r24 = 0; temp_r24 < 4; temp_r24++) {
temp_r20 = lbl_1_bss_1A4[temp_r24]->data;
fn_1_B754(temp_r31, temp_r20->unk4.x, temp_r20->unk4.z, temp_r28->unkB8[temp_r24]);
temp_r23 = lbl_1_bss_19C[temp_r24]->data;
fn_1_B754(temp_r31, temp_r23->unk0.x, temp_r23->unk0.z, temp_r28->unkC8[temp_r24][0]);
fn_1_B754(temp_r31, temp_r23->unk0.x, temp_r23->unk0.z, temp_r28->unkC8[temp_r24][1]);
if (temp_r23->unk18 & 0x1) {
espDispOn(temp_r28->unkC8[temp_r24][1]);
espDispOff(temp_r28->unkC8[temp_r24][0]);
}
else {
espDispOn(temp_r28->unkC8[temp_r24][0]);
espDispOff(temp_r28->unkC8[temp_r24][1]);
}
}
}
}
void fn_1_D5E8(omObjData *object)
{
float temp_f31;
float temp_f30;
s32 temp_r30;
Work3284 *temp_r29;
temp_f31 = 288;
temp_f30 = 240;
lbl_1_bss_10[0] = espEntry(lbl_1_data_1388[lbl_1_bss_190->unk0 + lbl_1_bss_34], 132, 0);
espPosSet(lbl_1_bss_10[0], temp_f31, temp_f30);
for (temp_r30 = 0; temp_r30 < 4; temp_r30++) {
temp_r29 = lbl_1_bss_19C[temp_r30]->data;
lbl_1_bss_10[temp_r30 + 1] = espEntry(lbl_1_data_1310[temp_r30], 131, 0);
espPosSet(lbl_1_bss_10[temp_r30 + 1], temp_f31 + (0.07f * temp_r29->unk0.x), temp_f30 + (0.07f * temp_r29->unk0.z));
}
for (temp_r30 = 0; temp_r30 < 5; temp_r30++) {
espDrawNoSet(lbl_1_bss_10[temp_r30], 0);
espTPLvlSet(lbl_1_bss_10[temp_r30], 1.0f);
espDispOn(lbl_1_bss_10[temp_r30]);
}
object->model[0] = Hu3DModelCreateFile(lbl_1_bss_190->unk8[1]);
Hu3DModelCameraSet(object->model[0], 15);
Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL);
Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_LOOP);
Hu3DModelLayerSet(object->model[0], 0);
Hu3DModelShadowMapSet(object->model[0]);
omSetTra(object, 0, 0, 0);
omSetRot(object, 0, -90.0f * lbl_1_bss_34, 0);
object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M429, 0x22));
Hu3DModelCameraSet(object->model[1], 15);
Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL);
Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(object->model[1], 0);
Hu3DModelShadowMapSet(object->model[1]);
Hu3DModelPosSet(object->model[1], 0, 0, 0);
object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M429, 0x23));
Hu3DModelCameraSet(object->model[2], 15);
Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL);
Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(object->model[2], 0);
Hu3DModelPosSet(object->model[2], 0, 0, 0);
object->model[3] = Hu3DModelCreateFile(lbl_1_bss_190->unk8[2]);
Hu3DModelCameraSet(object->model[3], 15);
Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL);
Hu3DModelAttrSet(object->model[3], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(object->model[3], HU3D_MOTATTR_LOOP);
Hu3DModelLayerSet(object->model[3], 1);
Hu3DModelPosSet(object->model[3], 0, 0, 0);
Hu3DModelRotSet(object->model[3], 0, -90.0f * lbl_1_bss_34, 0);
object->model[4] = Hu3DModelCreateFile(lbl_1_bss_190->unk8[3]);
Hu3DModelCameraSet(object->model[4], 15);
Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL);
Hu3DModelAttrSet(object->model[4], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(object->model[4], 1);
Hu3DModelPosSet(object->model[4], 0, 0, 0);
Hu3DModelRotSet(object->model[4], 0, -90.0f * lbl_1_bss_34, 0);
lbl_1_bss_114 = 45;
for (temp_r30 = 0; temp_r30 < 3; temp_r30++) {
Hu3DModelAttrReset(object->model[temp_r30], HU3D_ATTR_DISPOFF);
}
object->work[0] = 1000;
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_B8E0;
}
void ObjectSetup(void)
{
s32 temp_r31;
omObjData *temp_r28;
Work8F68 *temp_r27;
s32 temp_r22;
s32 temp_r17;
Vec sp2C;
s32 sp1C;
s32 sp18;
s32 sp14;
OSReport("******* M429 ObjectSetup *********\n");
nMap = 0;
nChar = 0;
lbl_1_bss_33C = omInitObjMan(100, 8192);
omGameSysInit(lbl_1_bss_33C);
lbl_1_bss_308 = 0;
lbl_1_bss_2FE = -1;
lbl_1_bss_2FC = -1;
lbl_1_bss_28 = -1;
lbl_1_bss_24 = 0;
lbl_1_bss_20 = 0;
lbl_1_bss_1C = 0;
lbl_1_bss_2F8 = -1;
lbl_1_bss_4 = -1;
lbl_1_bss_0 = -1;
lbl_1_bss_11C = 0;
lbl_1_bss_120 = 850;
lbl_1_bss_118 = 450;
for (temp_r31 = 0; temp_r31 < 2; temp_r31++) {
lbl_1_bss_2C[temp_r31] = 0;
}
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
lbl_1_bss_130[temp_r31].unk0 = -1;
lbl_1_bss_130[temp_r31].unk4 = 0;
}
lbl_1_bss_34 = frandmod(4);
fn_1_2684();
fn_1_A118();
temp_r17 = Hu3DGLightCreateV(&lbl_1_data_111C, &lbl_1_data_1128, &lbl_1_data_1134);
Hu3DGLightStaticSet(temp_r17, 1);
Hu3DGLightInfinitytSet(temp_r17);
Hu3DShadowCreate(30, 10, 20000);
Hu3DShadowTPLvlSet(0.5f);
VECNormalize(&lbl_1_data_1138, &sp2C);
Hu3DShadowPosSet(&lbl_1_data_1138, &sp2C, &lbl_1_data_1144);
omMakeGroupEx(lbl_1_bss_33C, 0, 4);
lbl_1_bss_1A4 = omGetGroupMemberListEx(lbl_1_bss_33C, 0);
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
temp_r28 = omAddObjEx(lbl_1_bss_33C, 100, 1, 10, 0, fn_1_8F68);
temp_r28->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work8F68), MEMORY_DEFAULT_NUM);
temp_r28->work[0] = temp_r31;
temp_r27 = temp_r28->data;
temp_r27->unk110 = -1;
temp_r27->unk114 = temp_r28->work[0];
temp_r27->unk120 = GWPlayerCfg[temp_r27->unk114].group;
}
(void)&sp14;
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
sp14 = -1;
sp18 = 40;
for (temp_r22 = 0; temp_r22 < 4; temp_r22++) {
temp_r27 = lbl_1_bss_1A4[temp_r22]->data;
if (temp_r27->unk110 < 0) {
sp1C = temp_r27->unk114 + (temp_r27->unk120 * 4);
if (sp18 > sp1C) {
sp18 = sp1C;
sp14 = temp_r22;
}
}
}
((Work8F68 *)lbl_1_bss_1A4[sp14]->data)->unk110 = temp_r31;
}
omMakeGroupEx(lbl_1_bss_33C, 1, 4);
lbl_1_bss_1A0 = omGetGroupMemberListEx(lbl_1_bss_33C, 1);
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
temp_r28 = omAddObjEx(lbl_1_bss_33C, 101, 2, 1, 1, fn_1_99F0);
temp_r28->work[0] = temp_r31;
}
omMakeGroupEx(lbl_1_bss_33C, 2, 4);
lbl_1_bss_19C = omGetGroupMemberListEx(lbl_1_bss_33C, 2);
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
temp_r28 = omAddObjEx(lbl_1_bss_33C, 102, 2, 0, 2, fn_1_33F8);
temp_r28->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work3284), MEMORY_DEFAULT_NUM);
temp_r28->work[0] = temp_r31;
}
lbl_1_bss_1A = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M429, 0x2F));
Hu3DModelAttrSet(lbl_1_bss_1A, HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(lbl_1_bss_1A, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
omMakeGroupEx(lbl_1_bss_33C, 3, 20);
lbl_1_bss_198 = omGetGroupMemberListEx(lbl_1_bss_33C, 3);
lbl_1_bss_1A8 = omAddObjEx(lbl_1_bss_33C, 104, 5, 0, -1, fn_1_31AC);
MapObject[nMap++] = lbl_1_bss_1A8;
lbl_1_bss_1AC = omAddObjEx(lbl_1_bss_33C, 105, 5, 0, -1, fn_1_D5E8);
lbl_1_bss_C = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M429, 0x3F));
HuSprAnimLock(lbl_1_bss_C);
lbl_1_bss_8 = Hu3DParManCreate(lbl_1_bss_C, 20, &lbl_1_data_13E8);
Hu3DParManAttrSet(lbl_1_bss_8, 1);
}
void fn_1_E96C(omObjData *object)
{
s32 temp_r31;
if (lbl_1_bss_0 >= 0) {
HuAudFXStop(lbl_1_bss_0);
lbl_1_bss_0 = -1;
}
if (WipeStatGet()) {
return;
}
if (lbl_1_bss_2FE >= 0) {
MGSeqKill(lbl_1_bss_2FE);
}
if (lbl_1_bss_2FC >= 0) {
MGSeqKill(lbl_1_bss_2FC);
}
MGSeqKillAll();
HuAudAllStop();
for (temp_r31 = 0; temp_r31 < 4; temp_r31++) {
CharModelKill(lbl_1_data_0[GWPlayerCfg[temp_r31].character]);
}
omOvlReturnEx(1, 1);
}