marioparty4/src/REL/m429Dll/main.c
2024-06-16 23:52:23 -05:00

2888 lines
No EOL
75 KiB
C

#include "REL/executor.h"
#include "game/chrman.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/frand.h"
#include "game/wipe.h"
#include "game/minigame_seq.h"
#include "game/gamework_data.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/mapspace.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/hsfanim.h"
#include "game/hsfdraw.h"
#include "game/esprite.h"
#include "game/sprite.h"
#include "ext_math.h"
#include "rel_sqrt_consts.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 (36000 <= arg2) {
arg2 = 35999;
}
var_r30 = arg2 / 3600;
arg2 -= var_r30 * 3600;
if (var_r30 > 9) {
var_r30 = 9;
}
espBankSet(arg0[arg1], var_r30);
var_r30 = arg2 / 60;
arg2 -= var_r30 * 60;
espBankSet(arg0[arg1 + 2], var_r30 / 10);
espBankSet(arg0[arg1 + 3], var_r30 % 10);
var_r30 = 101.5f * arg2 / 60.0f;
espBankSet(arg0[arg1 + 5], var_r30 / 10);
espBankSet(arg0[arg1 + 6], var_r30 % 10);
}
void fn_1_798(s32 arg0) {
lbl_1_bss_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;
}
}
PSVECAdd((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] = {
0x005F0000,
0x005F0002,
0x005F0003,
0x005F0017,
0x005F0072,
0x005F005A,
0x003C0008,
0x005F0058,
0x005F0059,
0x003C0000,
0x001A0000,
0x001A0002,
0x001A0003,
0x001A0017,
0x001A0072,
0x001A005A,
0x003C0009,
0x001A0058,
0x001A0059,
0x003C0001,
0x006D0000,
0x006D0002,
0x006D0003,
0x006D0017,
0x006D0072,
0x006D005A,
0x003C000A,
0x006D0058,
0x006D0059,
0x003C0002,
0x008A0000,
0x008A0002,
0x008A0003,
0x008A0017,
0x008A0072,
0x008A005A,
0x003C000B,
0x008A0058,
0x008A0059,
0x003C0003,
0x00850000,
0x00850002,
0x00850003,
0x00850017,
0x00850072,
0x0085005A,
0x003C000C,
0x00850058,
0x00850059,
0x003C0004,
0x00110000,
0x00110002,
0x00110003,
0x00110017,
0x00110072,
0x0011005A,
0x003C000D,
0x00110058,
0x00110059,
0x003C0005,
0x000D0000,
0x000D0002,
0x000D0003,
0x000D0017,
0x000D0072,
0x000D005A,
0x003C000E,
0x000D0058,
0x000D0059,
0x003C0006,
0x00810000,
0x00810002,
0x00810003,
0x00810017,
0x00810072,
0x0081005A,
0x003C000F,
0x00810058,
0x00810059,
0x003C0007
};
s32 lbl_1_data_1290[8] = {
0x610000,
0x610001,
0x610002,
0x610003,
0x610004,
0x610005,
0x610006,
0x610007
};
s32 lbl_1_data_12B0[8] = {
0x003C002C, 0x003C002E,
0x003C002C, 0x003C002E,
0x003C002D, 0x003C002E,
0x003C002D, 0x003C002E
};
s32 lbl_1_data_12D0[4] = {
0x003C003D,
0x003C003D,
0x003C003E,
0x003C003E
};
s32 lbl_1_data_12E0[4][3] = {
0x003C0024, 0x003C0030, 0x003C0025,
0x003C0026, 0x003C0030, 0x003C0027,
0x003C0028, 0x003C0030, 0x003C0029,
0x003C002A, 0x003C0030, 0x003C002B,
};
s32 lbl_1_data_1310[4] = {
0x003C003A,
0x003C003A,
0x003C003B,
0x003C003B
};
s32 lbl_1_data_1320[4] = {
0x003C0013,
0x003C0016,
0x003C0015,
0x003C0014
};
s32 lbl_1_data_1330[4] = {
0x003C001C,
0x003C001F,
0x003C001E,
0x003C001D
};
Data1340Struct lbl_1_data_1340[2] = {
{
0,
lbl_1_data_1320,
{
0x003C0010,
0x003C0011,
0x003C0017,
0x003C0018
},
13000,
39,
lbl_1_data_22C
},
{
4,
lbl_1_data_1330,
{
0x003C0019,
0x003C001A,
0x003C0020,
0x003C0021
},
13000,
42,
lbl_1_data_9EC
},
};
s32 lbl_1_data_1388[8] = {
0x003C0032,
0x003C0033,
0x003C0034,
0x003C0035,
0x003C0036,
0x003C0037,
0x003C0038,
0x003C0039
};
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, 1);
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], 1);
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], 1);
Hu3DModelAttrSet(object->model[temp_r29], 0x40000001);
Hu3DModelAttrReset(object->model[temp_r29], 0x40000002);
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], 1);
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 ,0x40000001);
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], 0x40000001);
if(!arg0->unkA4) {
arg0->unkA8 = 5;
Hu3DMotionShiftSet(arg1->model[0], arg1->motion[5], 0, 10, 0);
HuAudFXPlay(1642);
} else {
arg0->unkA8 = 6;
Hu3DMotionShiftSet(arg1->model[0], arg1->motion[6], 0, 10, 0);
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], 1);
temp_r30->unk18 |= 0x1;
Hu3DModelAttrSet(lbl_1_bss_19C[temp_r28]->model[0], 1);
Hu3DModelAttrReset(lbl_1_bss_19C[temp_r28]->model[1], 1);
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], 0x40000201);
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], 0x40000003);
Hu3DModelAttrSet(object->model[0], 0x40000004);
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, 0);
}
}
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, 0);
}
if(temp_r31->unk9C == 2008 && temp_r31->unkA0 >= 0) {
Hu3DModelAttrSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[0], 1);
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], 1);
Hu3DModelAttrReset(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], 0x40000002);
Hu3DModelAttrSet(lbl_1_bss_1A0[temp_r31->unkA0]->model[1], 0x40000001);
}
}
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], 0x40000003);
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], 0x40000003);
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], 0x40000004);
Hu3DMotionShiftSet(object->model[0], object->motion[3], 0, 8, 0);
}
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], 1);
Hu3DModelAttrSet(object->model[0], 0x40000001);
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(0x3C0031, 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(0x3C003C, 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], 1);
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], 1);
Hu3DModelAttrSet(object->model[temp_r30], 0x40000002);
Hu3DModelAttrReset(object->model[temp_r30], 0x40000001);
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], 1);
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], 1);
Hu3DModelAttrSet(object->model[0], 0x40000002);
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], 1);
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/60;
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, 120, 6, 6);
omVibrate(temp_r30->unk114, 120, 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/60.0f;
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/60;
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(60.0f <= 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/60;
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(60.0f <= 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 = 3600;
lbl_1_bss_2FC = MGSeqTimerCreate(lbl_1_bss_304/60);
lbl_1_bss_2FE = -1;
}
}
break;
case 1006:
MGSeqParamSet(lbl_1_bss_2FC, 1, (lbl_1_bss_304+59)/60);
lbl_1_bss_304--;
if(lbl_1_bss_304 < 0 || lbl_1_bss_28 >= 0) {
object->work[0] = 1007;
lbl_1_bss_304 = 3600;
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], 0x40000002);
Hu3DModelAttrReset(object->model[3], 0x40000002);
Hu3DModelAttrReset(object->model[3], 1);
}
} 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], 1);
Hu3DModelAttrReset(object->model[4], 1);
Hu3DModelAttrReset(object->model[4], 0x40000002);
}
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(60.0f < 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/60.0f;
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(120.0f < lbl_1_bss_12C) {
object->work[0]++;
lbl_1_bss_12C = 0;
HuAudFXPlay(1651);
} else {
temp_f30 = lbl_1_bss_12C/120.0f;
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], 0x4001);
Hu3DModelAttrSet(object->model[0], 0x40000002);
Hu3DModelAttrReset(object->model[0], 0x40000001);
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(0x3C0022);
Hu3DModelCameraSet(object->model[1], 15);
Hu3DModelAttrSet(object->model[1], 0x4001);
Hu3DModelAttrSet(object->model[1], 0x40000002);
Hu3DModelLayerSet(object->model[1], 0);
Hu3DModelShadowMapSet(object->model[1]);
Hu3DModelPosSet(object->model[1], 0, 0, 0);
object->model[2] = Hu3DModelCreateFile(0x3C0023);
Hu3DModelCameraSet(object->model[2], 15);
Hu3DModelAttrSet(object->model[2], 0x4001);
Hu3DModelAttrSet(object->model[2], 0x40000002);
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], 0x4001);
Hu3DModelAttrSet(object->model[3], 0x40000002);
Hu3DModelAttrReset(object->model[3], 0x40000001);
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], 0x4001);
Hu3DModelAttrSet(object->model[4], 0x40000003);
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], 1);
}
object->work[0] = 1000;
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
object->func = fn_1_B8E0;
}
void ModuleProlog(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(0x3C002F);
Hu3DModelAttrSet(lbl_1_bss_1A, 1);
Hu3DModelAttrSet(lbl_1_bss_1A, 0x40000003);
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(0x3C003F);
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);
}