marioparty4/src/REL/m402Dll/main.c
2024-11-17 16:46:52 +01:00

1889 lines
65 KiB
C
Executable file

#include "REL/executor.h"
#include "game/chrman.h"
#include "game/data.h"
#include "game/esprite.h"
#include "game/flag.h"
#include "game/frand.h"
#include "game/gamework.h"
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfdraw.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/memory.h"
#include "game/minigame_seq.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/process.h"
#include "game/sprite.h"
#include "game/wipe.h"
#include "dolphin.h"
#include "ext_math.h"
#include "version.h"
#undef ABS
#define ABS(x) ((0 > (x)) ? -(x) : (x))
typedef struct unk_bss_204_struct {
/* 0x00 */ u16 unk00;
/* 0x02 */ s16 unk02;
/* 0x04 */ struct unk_bss_204_struct *unk04;
/* 0x08 */ struct unk_bss_204_struct *unk08;
} UnkBss204Struct; // Size 0xC
typedef struct unk_bss_1ec_struct {
/* 0x00 */ HsfanimStruct00 *unk00;
/* 0x04 */ s32 *unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
/* 0x10 */ struct unk_bss_1ec_struct *unk10;
/* 0x14 */ struct unk_bss_1ec_struct *unk14;
} UnkBss1ECStruct; // Size 0x18
typedef struct {
/* 0x00 */ u32 unk00;
/* 0x04 */ s16 unk04;
/* 0x06 */ char unk06[2]; // padding?
} UnkBss5CStruct; // Size 8
typedef struct {
/* 0x00 */ float unk00;
/* 0x04 */ float unk04;
/* 0x08 */ float unk08;
/* 0x0C */ float unk0C;
/* 0x10 */ float unk10;
/* 0x14 */ float unk14;
/* 0x18 */ float unk18;
/* 0x1C */ float unk1C;
/* 0x20 */ float unk20;
/* 0x24 */ float unk24;
/* 0x28 */ float unk28;
/* 0x2C */ float unk2C;
/* 0x30 */ float unk30;
/* 0x34 */ s32 unk34;
/* 0x38 */ s32 unk38;
/* 0x3C */ s32 unk3C;
/* 0x40 */ s32 unk40;
/* 0x44 */ s32 unk44;
/* 0x48 */ s32 unk48;
/* 0x4C */ s32 unk4C;
/* 0x50 */ s32 unk50;
/* 0x54 */ s32 unk54;
/* 0x58 */ s32 unk58;
/* 0x5C */ s32 unk5C;
/* 0x60 */ s32 unk60;
} UnkFn27A8Struct; // Size 0x64
typedef struct {
/* 0x00 */ float unk00;
/* 0x04 */ float unk04;
/* 0x08 */ float unk08;
/* 0x0C */ float unk0C;
/* 0x10 */ s32 unk10;
} UnkData234Struct; // Size 0x14
typedef struct {
/* 0x00 */ float unk00;
/* 0x04 */ float unk04;
/* 0x08 */ float unk08;
/* 0x0C */ float unk0C;
/* 0x10 */ float unk10;
/* 0x14 */ float unk14;
/* 0x18 */ s32 unk18;
} UnkFn6AB4Struct; // Size 0x1C
typedef struct {
/* 0x00 */ Vec unk00;
/* 0x0C */ float unk0C;
/* 0x10 */ float unk10;
/* 0x14 */ float unk14;
/* 0x18 */ float unk18;
/* 0x1C */ float unk1C;
/* 0x20 */ float unk20;
/* 0x24 */ Vec unk24;
/* 0x30 */ float unk30;
/* 0x34 */ float unk34;
/* 0x38 */ s32 unk38;
} UnkFn70E4Struct; // Size 0x3C
static void fn_1_0(void);
static void fn_1_24(u16 arg0, s16 arg1);
static s16 fn_1_AC(s16 arg0);
static void fn_1_150(void);
static void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6);
static void fn_1_2D8(void);
static void fn_1_414(void);
static s16 fn_1_46C(s32 arg0);
static void fn_1_580(s32 *arg0, s32 arg1, s32 arg2);
static void fn_1_798(s32 arg0);
static void fn_1_9EC(void);
static void fn_1_A40(void);
static void fn_1_B4C(float arg0, s32 arg1);
static void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3);
static void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2);
static s32 fn_1_13DC(float arg0, Vec *arg1);
static void fn_1_1710(float arg0, Vec *arg1);
static void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2);
static void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2);
static void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3);
static float fn_1_1E20(float arg0, float arg1, float arg2);
static void fn_1_1F24(s32 arg0);
static void fn_1_1F58(s32 arg0);
static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3);
static void fn_1_2454(void);
static void fn_1_2744(s16 arg0, GXColor *arg1);
static u16 fn_1_27A8(UnkFn27A8Struct *arg0);
static void fn_1_2880(UnkFn27A8Struct *arg0, omObjData *arg1);
static void fn_1_2970(UnkFn27A8Struct *arg0, omObjData *arg1, u8 arg2);
static void fn_1_2B30(UnkFn27A8Struct *arg0, omObjData *arg1, omObjData *arg2);
static u8 fn_1_2DBC(UnkFn27A8Struct *arg0, omObjData *arg1);
static void fn_1_313C(UnkFn27A8Struct *arg0, omObjData *arg1);
static void fn_1_3204(omObjData *arg0);
static void fn_1_4190(float arg0);
static void fn_1_4284(float arg0);
static void fn_1_43D8(omObjData *arg0);
static void fn_1_63C8(omObjData *arg0);
static void fn_1_6858(omObjData *arg0);
static void fn_1_685C(omObjData *arg0);
static void fn_1_6AB4(omObjData *arg0);
static void fn_1_6E64(omObjData *arg0);
static void fn_1_7020(omObjData *arg0);
static void fn_1_70E4(omObjData *arg0);
static void fn_1_7950(omObjData *arg0);
static void fn_1_7AEC(s32 arg0, Vec *arg1, Vec *arg2);
static void fn_1_7D48(omObjData *arg0);
static void fn_1_7D4C(omObjData *arg0);
static void fn_1_7E80(omObjData *arg0);
static void fn_1_7E84(omObjData *arg0);
static void fn_1_8048(void);
static void fn_1_8218(omObjData *arg0);
static void fn_1_9058(omObjData *arg0);
static void fn_1_9AF4(omObjData *arg0);
static UnkBss204Struct lbl_1_bss_204;
static UnkBss1ECStruct lbl_1_bss_1EC;
static Process *lbl_1_bss_1E8;
static Vec lbl_1_bss_1DC;
static Vec lbl_1_bss_1D0;
static Vec lbl_1_bss_1C4;
static Vec lbl_1_bss_1B8;
static u32 lbl_1_bss_1B4;
static s32 lbl_1_bss_1B0;
static s32 lbl_1_bss_1AC;
static s16 lbl_1_bss_1AA;
static s16 lbl_1_bss_1A8;
static s32 lbl_1_bss_1A4;
static s32 lbl_1_bss_1A0;
static float lbl_1_bss_19C;
static s32 lbl_1_bss_15C[16];
static UnkBss5CStruct lbl_1_bss_5C[32];
static omObjData *lbl_1_bss_58;
static omObjData **lbl_1_bss_54;
static omObjData **lbl_1_bss_50;
static omObjData **lbl_1_bss_4C;
static omObjData **lbl_1_bss_48;
static omObjData **lbl_1_bss_44;
static omObjData **lbl_1_bss_40;
static u8 lbl_1_bss_3C_unused[4];
static float lbl_1_bss_38;
static float lbl_1_bss_34;
static float lbl_1_bss_30;
static float lbl_1_bss_2C;
static float lbl_1_bss_28;
static s16 lbl_1_bss_26;
static s16 lbl_1_bss_24;
static s16 lbl_1_bss_16[7];
static s16 lbl_1_bss_14;
static s32 lbl_1_bss_10;
static float lbl_1_bss_C;
static float lbl_1_bss_8;
static float lbl_1_bss_4;
static u8 lbl_1_bss_0[4];
static s16 lbl_1_data_0[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
static Vec lbl_1_data_10 = { 0.0f, 2500.0f, 2200.0f };
static Vec lbl_1_data_1C = { 0.0f, 1.0f, 0.0f };
static Vec lbl_1_data_28 = { 0.0f, 388.0f, 0.0f };
static Vec lbl_1_data_34 = { 0.0f, 2000.0f, 1000.0f };
static Vec lbl_1_data_40 = { 0.0f, -2.0f, -1.0f };
static GXColor lbl_1_data_4C = { 0xFF, 0xFF, 0xFF, 0xFF };
static Vec lbl_1_data_50_unused = { 0.0f, -1.0f, 0.0f };
static u8 lbl_1_data_5C_unused[] = { 0xFF, 0xFF, 0xFF, 0xFF };
static Vec lbl_1_data_60 = { 0.0f, 4000.0f, 1000.0f };
static Vec lbl_1_data_6C = { 0.0f, 0.0f, 0.0f };
static s32 lbl_1_data_78[8][11] = { { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), DATA_MAKE_NUM(DATADIR_MARIOMOT, 28),
DATA_MAKE_NUM(DATADIR_M402, 16), DATA_MAKE_NUM(DATADIR_MARIOMOT, 62), DATA_MAKE_NUM(DATADIR_MARIOMOT, 3),
DATA_MAKE_NUM(DATADIR_M402, 8), DATA_MAKE_NUM(DATADIR_M402, 0), DATA_MAKE_NUM(DATADIR_M402, 24),
DATA_MAKE_NUM(DATADIR_MARIOMOT, 117), DATA_MAKE_NUM(DATADIR_MARIOMOT, 76) },
{ DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 2), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 17),
DATA_MAKE_NUM(DATADIR_LUIGIMOT, 62), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 9), DATA_MAKE_NUM(DATADIR_M402, 1),
DATA_MAKE_NUM(DATADIR_M402, 25), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 117), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 76) },
{ DATA_MAKE_NUM(DATADIR_PEACHMOT, 0), DATA_MAKE_NUM(DATADIR_PEACHMOT, 2), DATA_MAKE_NUM(DATADIR_PEACHMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 18),
DATA_MAKE_NUM(DATADIR_PEACHMOT, 62), DATA_MAKE_NUM(DATADIR_PEACHMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 10), DATA_MAKE_NUM(DATADIR_M402, 2),
DATA_MAKE_NUM(DATADIR_M402, 26), DATA_MAKE_NUM(DATADIR_PEACHMOT, 117), DATA_MAKE_NUM(DATADIR_PEACHMOT, 76) },
{ DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 2), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 19),
DATA_MAKE_NUM(DATADIR_YOSHIMOT, 62), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 11), DATA_MAKE_NUM(DATADIR_M402, 3),
DATA_MAKE_NUM(DATADIR_M402, 27), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 117), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 76) },
{ DATA_MAKE_NUM(DATADIR_WARIOMOT, 0), DATA_MAKE_NUM(DATADIR_WARIOMOT, 2), DATA_MAKE_NUM(DATADIR_WARIOMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 20),
DATA_MAKE_NUM(DATADIR_WARIOMOT, 62), DATA_MAKE_NUM(DATADIR_WARIOMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 12), DATA_MAKE_NUM(DATADIR_M402, 4),
DATA_MAKE_NUM(DATADIR_M402, 28), DATA_MAKE_NUM(DATADIR_WARIOMOT, 117), DATA_MAKE_NUM(DATADIR_WARIOMOT, 76) },
{ DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 2), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 21),
DATA_MAKE_NUM(DATADIR_DONKEYMOT, 62), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 13), DATA_MAKE_NUM(DATADIR_M402, 5),
DATA_MAKE_NUM(DATADIR_M402, 29), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 117), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 76) },
{ DATA_MAKE_NUM(DATADIR_DAISYMOT, 0), DATA_MAKE_NUM(DATADIR_DAISYMOT, 2), DATA_MAKE_NUM(DATADIR_DAISYMOT, 28), DATA_MAKE_NUM(DATADIR_M402, 22),
DATA_MAKE_NUM(DATADIR_DAISYMOT, 62), DATA_MAKE_NUM(DATADIR_DAISYMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 14), DATA_MAKE_NUM(DATADIR_M402, 6),
DATA_MAKE_NUM(DATADIR_M402, 30), DATA_MAKE_NUM(DATADIR_DAISYMOT, 117), DATA_MAKE_NUM(DATADIR_DAISYMOT, 76) },
{ DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 2), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 28),
DATA_MAKE_NUM(DATADIR_M402, 23), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 62), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 3), DATA_MAKE_NUM(DATADIR_M402, 15),
DATA_MAKE_NUM(DATADIR_M402, 7), DATA_MAKE_NUM(DATADIR_M402, 31), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 117),
DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 76) } };
static s32 lbl_1_data_1D8[]
= { DATA_MAKE_NUM(DATADIR_M402, 38), DATA_MAKE_NUM(DATADIR_M402, 40), DATA_MAKE_NUM(DATADIR_M402, 37), DATA_MAKE_NUM(DATADIR_M402, 39) };
static s32 lbl_1_data_1E8[] = { DATA_MAKE_NUM(DATADIR_M402, 41), DATA_MAKE_NUM(DATADIR_M402, 42), DATA_MAKE_NUM(DATADIR_M402, 43) };
static s32 lbl_1_data_1F4 = DATA_MAKE_NUM(DATADIR_M402, 44);
static s32 lbl_1_data_1F8[] = { DATA_MAKE_NUM(DATADIR_M402, 45), DATA_MAKE_NUM(DATADIR_M402, 46) };
static Vec lbl_1_data_200[] = { { 450.0f, 290.0f, 0.0f }, { -450.0f, 290.0f, 0.0f } };
static s32 lbl_1_data_218[] = { DATA_MAKE_NUM(DATADIR_M402, 48), DATA_MAKE_NUM(DATADIR_M402, 50), DATA_MAKE_NUM(DATADIR_M402, 47),
DATA_MAKE_NUM(DATADIR_M402, 49), DATA_MAKE_NUM(DATADIR_M402, 51), DATA_MAKE_NUM(DATADIR_M402, 52), DATA_MAKE_NUM(DATADIR_M402, 53) };
static UnkData234Struct lbl_1_data_234[] = { { 0.0f, 0.0f, 0.0f, 0.0f, -1 }, { 2.0f, 2.0f, 0.1f, 0.125f, 0x514 }, { 2.0f, 2.0f, 0.2f, 0.25f, -1 },
{ 3.0f, 4.0f, 0.3f, 0.35f, 0x515 }, { 3.0f, 4.0f, 0.4f, 0.45f, -1 }, { 3.0f, 6.0f, 0.45f, 0.5125f, 0x516 }, { 3.0f, 6.0f, 0.5f, 0.575f, -1 },
{ 3.0f, 6.0f, 0.55f, 0.6375f, -1 }, { 3.0f, 6.0f, 0.6f, 0.7f, -1 }, { 4.0f, 8.0f, 0.65f, 0.75f, 0x517 }, { 4.0f, 8.0f, 0.7f, 0.8f, -1 },
{ 4.0f, 8.0f, 0.75f, 0.85f, -1 }, { 4.0f, 8.0f, 0.8f, 0.9f, -1 }, { 4.0f, 10.0f, 0.83f, 0.9166f, 0x518 }, { 4.0f, 10.0f, 0.86f, 0.9333f, -1 },
{ 4.0f, 10.0f, 0.9f, 0.95f, -1 }, { 4.0f, 10.0f, 0.93f, 0.9666f, -1 }, { 4.0f, 10.0f, 0.96f, 0.9833f, -1 }, { 4.0f, 10.0f, 1.0f, 1.0f, -1 },
{ 1.0f, 10.0f, 1.0f, 1.0f, -1 } };
static s32 lbl_1_data_3C4[] = { 0x00000514, 0x00000515, 0x00000516, 0x00000517, 0x00000518 };
static void fn_1_0(void)
{
lbl_1_bss_204.unk04 = NULL;
lbl_1_bss_204.unk08 = NULL;
}
static void fn_1_24(u16 arg0, s16 arg1)
{
UnkBss204Struct *temp_r31;
UnkBss204Struct *temp_r30;
UnkBss204Struct *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_204;
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;
}
static s16 fn_1_AC(s16 arg0)
{
UnkBss204Struct *var_r31;
UnkBss204Struct *temp_r29;
UnkBss204Struct *temp_r30;
s16 temp_r28;
var_r31 = lbl_1_bss_204.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;
}
static void fn_1_150(void)
{
lbl_1_bss_1EC.unk10 = NULL;
lbl_1_bss_1EC.unk14 = NULL;
}
static void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6)
{
UnkBss1ECStruct *temp_r27;
UnkBss1ECStruct *var_r31;
UnkBss1ECStruct *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_1EC;
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;
}
static void fn_1_2D8(void)
{
UnkBss1ECStruct *var_r31;
UnkBss1ECStruct *temp_r28;
UnkBss1ECStruct *temp_r29;
s32 i;
var_r31 = lbl_1_bss_1EC.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;
}
}
static void fn_1_414(void)
{
s32 i;
for (i = 0; i < 32; i++) {
lbl_1_bss_5C[i].unk00 = 0;
lbl_1_bss_5C[i].unk04 = -1;
}
}
static s16 fn_1_46C(s32 arg0)
{
s32 i;
for (i = 0; i < 32; i++) {
if (arg0 == lbl_1_bss_5C[i].unk00) {
return Hu3DModelLink(lbl_1_bss_5C[i].unk04);
}
}
for (i = 0; i < 32; i++) {
if (lbl_1_bss_5C[i].unk00 == 0) {
lbl_1_bss_5C[i].unk00 = arg0;
lbl_1_bss_5C[i].unk04 = Hu3DModelCreateFile(arg0);
return lbl_1_bss_5C[i].unk04;
}
}
return Hu3DModelCreateFile(arg0);
}
static 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);
}
static void fn_1_798(s32 arg0)
{
lbl_1_bss_19C = 0.0f;
lbl_1_bss_1AC = lbl_1_bss_1B0;
GWMGRecordSet(arg0, lbl_1_bss_1AC);
fn_1_580(lbl_1_bss_15C, 7, lbl_1_bss_1B0);
}
static void fn_1_9EC(void)
{
s32 i;
for (i = 0; i < 16; i++) {
espDispOn(lbl_1_bss_15C[i]);
}
}
static void fn_1_A40(void)
{
float temp_f31;
s32 i;
if (0.0f <= lbl_1_bss_19C) {
lbl_1_bss_19C += 16.0f;
temp_f31 = 1.0 + 0.2f * sind(lbl_1_bss_19C);
for (i = 7; i <= 14; i++) {
espScaleSet(lbl_1_bss_15C[i], temp_f31, temp_f31);
}
}
}
static 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_15C[15] = espEntry(arg1, 0, 0);
espTPLvlSet(lbl_1_bss_15C[15], 0.5f);
espColorSet(lbl_1_bss_15C[15], 0, 0, 0);
espPosSet(lbl_1_bss_15C[15], temp_f31, temp_f30);
temp_f31 = 248.0f;
temp_f30 = arg0 - 8.0f;
lbl_1_bss_15C[14] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 55), 0, 0);
espPosSet(lbl_1_bss_15C[14], temp_f31 - 18.0f, temp_f30);
for (i = 7; i <= 13; i++) {
lbl_1_bss_15C[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 48), 0, 0);
espPosSet(lbl_1_bss_15C[i], temp_f31, temp_f30);
temp_f31 += 16.0f;
}
fn_1_580(lbl_1_bss_15C, 7, lbl_1_bss_1AC);
temp_f31 = 248.0f;
temp_f30 = arg0 + 8.0f;
for (i = 0; i <= 6; i++) {
lbl_1_bss_15C[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 49), 0, 0);
espPosSet(lbl_1_bss_15C[i], temp_f31, temp_f30);
temp_f31 += 16.0f;
}
fn_1_580(lbl_1_bss_15C, 0, 0);
for (i = 0; i < 16; i++) {
espDrawNoSet(lbl_1_bss_15C[i], 0);
espDispOff(lbl_1_bss_15C[i]);
espAttrSet(lbl_1_bss_15C[i], HUSPR_ATTR_NOANIM);
espPriSet(lbl_1_bss_15C[i], 0x80 + i);
}
}
static 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);
}
static void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2)
{
Hu3DCameraPosSetV(1, arg0, arg1, arg2);
lbl_1_bss_1DC = *arg0;
lbl_1_bss_1C4 = *arg2;
}
static s32 fn_1_13DC(float arg0, Vec *arg1)
{
Vec sp18;
Vec spC;
fn_1_11F4(arg0, &lbl_1_bss_1DC, &lbl_1_bss_1D0, &sp18);
fn_1_11F4(arg0, &lbl_1_bss_1C4, &lbl_1_bss_1B8, &spC);
Hu3DCameraPosSetV(1, &sp18, arg1, &spC);
if (1.0f <= arg0) {
return 1;
}
else {
lbl_1_bss_1A0 = 1;
return 0;
}
}
static void fn_1_1710(float arg0, Vec *arg1)
{
Vec sp18;
Vec spC;
fn_1_11F4(arg0, &lbl_1_bss_1DC, &lbl_1_bss_1D0, &sp18);
fn_1_11F4(arg0, &lbl_1_bss_1C4, &lbl_1_bss_1B8, &spC);
fn_1_1350(&sp18, arg1, &spC);
lbl_1_bss_1A0 = 1;
}
static 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];
C_MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target);
PSMTXMultVec(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;
}
static 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];
}
static 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];
}
static 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;
}
static void fn_1_1F24(s32 arg0)
{
lbl_1_bss_1A4 = HuAudSeqPlay(arg0);
}
static void fn_1_1F58(s32 arg0)
{
if (lbl_1_bss_1A4 >= 0) {
if (arg0 < 0) {
arg0 = 1000;
}
HuAudSeqFadeOut(lbl_1_bss_1A4, arg0);
}
lbl_1_bss_1A4 = -1;
}
static 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);
}
#include "src/REL/executor.c"
static void fn_1_2454(void)
{
HuSysVWaitSet(1);
if (HuPadBtnDown[0] & 0x400) {
lbl_1_bss_1B0 = -1;
}
print8(24, 32, 1.5f, "%f COUNT:%d MES:%d WIN:%d", lbl_1_bss_38, lbl_1_bss_1B4, lbl_1_bss_1AA, lbl_1_bss_26);
print8(24, 48, 1.5f, "%f %f %f", lbl_1_bss_4, lbl_1_bss_C, lbl_1_bss_8);
print8(24, 64, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM),
HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA));
lbl_1_bss_8 -= HuPadSubStkX[0] / 59.0f;
lbl_1_bss_C -= (HuPadSubStkY[0] / 59.0f) * 4.0f;
lbl_1_bss_4 -= (HuPadTrigL[0] / 150.0f) * 4.0f;
lbl_1_bss_4 += (HuPadTrigR[0] / 150.0f) * 4.0f;
}
static void fn_1_2744(s16 arg0, GXColor *arg1)
{
s16 var_r30;
var_r30 = Hu3DLLightCreateV(arg0, &lbl_1_data_34, &lbl_1_data_40, arg1);
Hu3DLLightStaticSet(arg0, var_r30, 1);
}
static u16 fn_1_27A8(UnkFn27A8Struct *arg0)
{
u16 var_r30;
var_r30 = 0;
if (frandmod(arg0->unk34) == 0) {
var_r30 = 0x100;
}
if (--arg0->unk38 < 0) {
arg0->unk34 -= frandmod(3);
if (arg0->unk34 < 2) {
arg0->unk34 = 2;
}
arg0->unk38 = (arg0->unk3C >> 1) + frandmod(arg0->unk3C);
}
if (var_r30 == 0) {
if (++arg0->unk40 > 60) {
arg0->unk40 = 0;
var_r30 = 0x100;
}
}
else {
arg0->unk40 = 0;
}
return var_r30;
}
static void fn_1_2880(UnkFn27A8Struct *arg0, omObjData *arg1)
{
arg0->unk4C = 2016;
arg0->unk60 = 0;
arg0->unk2C = 0.0f;
arg0->unk30 = 0.0f;
arg0->unk1C = 670.0f;
arg0->unk20 = 0.0f;
arg0->unk24 = arg0->unk1C;
arg0->unk08 = 0.0f;
arg0->unk0C = 0.0f;
arg0->unk10 = arg0->unk0C;
Hu3DModelAttrReset(arg1->model[0], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrSet(arg1->model[0], HU3D_MOTATTR_LOOP);
Hu3DMotionSet(arg1->model[0], arg1->motion[0]);
}
static void fn_1_2970(UnkFn27A8Struct *arg0, omObjData *arg1, u8 arg2)
{
Vec sp18;
Vec spC;
float temp_f31;
s32 i;
fn_1_1D18(arg1->model[0], "motionC-stretch", &sp18);
for (i = 0; i < 8; i++) {
temp_f31 = arg0->unk1C + 50.0f;
spC.x = 20.0f * frandf() - 10.0f;
spC.y = arg0->unk18;
spC.z = 20.0f;
if (arg2 != 0) {
spC.y += 180.0f;
spC.z = 10.0f;
}
temp_f31 = 3.0f * (30.0f * frandf() - 15.0f);
spC.y += temp_f31 + 10.0f * (0.0f > temp_f31 ? -1 : 1);
fn_1_7AEC(arg0->unk54, &sp18, &spC);
}
}
static void fn_1_2B30(UnkFn27A8Struct *arg0, omObjData *arg1, omObjData *arg2)
{
arg0->unk50 = 0;
arg0->unk20 = (770.0f - arg0->unk1C) / 18.0f;
arg0->unk0C = Hu3DMotionTimeGet(arg2->model[0]);
Hu3DMotionTimeSet(lbl_1_bss_54[arg0->unk54]->model[0], 0.0f);
Hu3DMotionSpeedSet(arg1->model[0], 1.0f);
Hu3DModelAttrReset(arg1->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
Hu3DMotionShiftSet(arg1->model[0], arg1->motion[7], 0.0f, 8.0f, HU3D_MOTATTR_NONE);
fn_1_2970(arg0, arg2, 1);
HuAudCharVoicePlay(arg0->unk58, 0x123);
}
static u8 fn_1_2DBC(UnkFn27A8Struct *arg0, omObjData *arg1)
{
Vec sp20;
float var_f30;
float var_f29;
arg0->unk50++;
var_f30 = 90.0f * (arg0->unk50 / 18.0f);
var_f29 = arg0->unk0C * (1.0 - sind(var_f30));
Hu3DMotionTimeSet(arg1->model[0], var_f29);
fn_1_1D18(arg1->model[0], "motionC-stretch", &sp20);
arg0->unk28 = sp20.y - arg0->unk14 + 388.0f;
arg0->unk1C += arg0->unk20;
if (18.0f < arg0->unk50) {
arg0->unk20 = (670.0f - arg0->unk1C) / 20.0f;
Hu3DModelAttrReset(arg1->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
Hu3DMotionSet(arg1->model[0], arg1->motion[2]);
Hu3DMotionTimeSet(arg1->model[0], 20.0f);
omVibrate(arg0->unk54, 12, 4, 2);
HuAudFXPlay(0x50F);
fn_1_2970(arg0, arg1, 0);
return 1;
}
return 0;
}
static void fn_1_313C(UnkFn27A8Struct *arg0, omObjData *arg1)
{
Vec sp8;
arg0->unk1C += arg0->unk20;
if (670.0f > arg0->unk1C) {
arg0->unk1C = 670.0f;
}
fn_1_1D18(arg1->model[0], "motionC-stretch", &sp8);
arg0->unk28 = sp8.y - arg0->unk14 + 388.0f;
}
static void fn_1_3204(omObjData *arg0)
{
Vec sp48;
Vec sp3C;
Vec sp24;
Vec spC;
float temp_f31;
UnkFn27A8Struct *temp_r31;
omObjData *temp_r29;
UnkData234Struct *temp_r28;
u16 var_r26;
temp_r31 = arg0->data;
if (lbl_1_bss_58->work[0] == 1007) {
switch (temp_r31->unk4C) {
case 2017:
temp_r31->unk4C = 2014;
break;
case 2018:
temp_r31->unk4C = 2015;
break;
default:
temp_r31->unk4C = 2010;
break;
}
Hu3DMotionSpeedSet(arg0->model[0], 1.0f);
if (lbl_1_bss_26 == temp_r31->unk54) {
GWPlayerCoinWinSet(temp_r31->unk54, 10);
}
arg0->func = fn_1_43D8;
return;
}
if (lbl_1_bss_58->work[0] == 1006) {
temp_r29 = lbl_1_bss_48[temp_r31->unk54];
if (temp_r31->unk60 < 19) {
if (GWPlayerCfg[temp_r31->unk54].iscom) {
var_r26 = fn_1_27A8(temp_r31);
}
else {
var_r26 = HuPadBtnDown[temp_r31->unk5C];
}
if (temp_r31->unk60 == 0) {
if (var_r26 & 0x100) {
temp_r31->unk60 = 1;
temp_r31->unk2C = 0.0f;
temp_r31->unk30 = 0.0f;
temp_r31->unk08 = 0.0f;
temp_r31->unk0C = 0.0f;
temp_r31->unk10 = temp_r31->unk0C;
temp_r31->unk20 = 0.0f;
temp_r31->unk24 = temp_r31->unk1C;
HuAudFXPlay(0x50E);
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 2.0f, HU3D_MOTATTR_LOOP);
}
}
else {
temp_r31->unk30 += 1.0f;
}
switch (temp_r31->unk4C) {
case 2016:
if (var_r26 & 0x100) {
temp_r28 = &lbl_1_data_234[temp_r31->unk60];
if (temp_r28->unk10 >= 0 && 0.0f == temp_r31->unk2C) {
HuAudFXPlay(temp_r28->unk10);
}
temp_r31->unk2C += 1.0f;
Hu3DMotionTimeSet(lbl_1_bss_54[temp_r31->unk54]->model[0], temp_r28->unk04);
temp_f31 = temp_r28->unk08 - temp_r28[-1].unk08;
temp_f31 *= 1.0f - temp_r31->unk2C / temp_r28->unk00;
temp_r31->unk24 = 670.0f - 450.0f * (temp_r28->unk08 - temp_f31);
temp_f31 = temp_r28->unk0C - temp_r28[-1].unk0C;
temp_f31 *= 1.0f - temp_r31->unk2C / temp_r28->unk00;
temp_r31->unk10 = (temp_r28->unk0C - temp_f31) * Hu3DMotionMaxTimeGet(temp_r29->model[0]);
temp_f31 = temp_r31->unk60 / 20.0f;
temp_r31->unk20 = temp_f31 * (temp_r31->unk24 - temp_r31->unk1C);
temp_r31->unk08 = temp_f31 * (temp_r31->unk10 - temp_r31->unk0C);
if (temp_r28->unk00 <= temp_r31->unk2C) {
temp_r31->unk60++;
if (temp_r31->unk60 == 3) {
Hu3DMotionSpeedSet(arg0->model[0], 0.83f);
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[6], 0.0f, 4.0f, HU3D_MOTATTR_LOOP);
}
if (temp_r31->unk60 == 9) {
Hu3DMotionSpeedSet(arg0->model[0], 1.0f);
}
temp_r31->unk2C = 0.0f;
temp_r31->unk30 = 0.0f;
if (temp_r31->unk60 >= 19) {
temp_r31->unk1C = temp_r31->unk24;
temp_r31->unk20 = 0.0f;
temp_r31->unk0C = temp_r31->unk10;
temp_r31->unk08 = 0.0f;
if (lbl_1_bss_26 < 0) {
lbl_1_bss_26 = temp_r31->unk54;
}
else if (frandmod(100) > 50) {
lbl_1_bss_26 = temp_r31->unk54;
}
}
}
}
if (60.0f <= temp_r31->unk30) {
temp_r31->unk4C = 2017;
fn_1_2B30(temp_r31, arg0, temp_r29);
}
else {
if (temp_r31->unk1C > temp_r31->unk24) {
temp_r31->unk1C += temp_r31->unk20;
if (temp_r31->unk1C <= temp_r31->unk24) {
temp_r31->unk1C = temp_r31->unk24;
}
}
if (temp_r31->unk0C < temp_r31->unk10) {
temp_r31->unk0C += temp_r31->unk08;
if (temp_r31->unk0C >= temp_r31->unk10) {
temp_r31->unk0C = temp_r31->unk10;
}
}
Hu3DMotionTimeSet(temp_r29->model[0], temp_r31->unk0C);
}
break;
case 2017:
if (fn_1_2DBC(temp_r31, temp_r29) != 0) {
temp_r31->unk4C = 2018;
temp_r31->unk50 = 120;
}
break;
case 2018:
fn_1_313C(temp_r31, temp_r29);
temp_r31->unk50 -= 1.0f;
if (temp_r31->unk50 == 32) {
Hu3DMotionSet(arg0->model[0], arg0->motion[9]);
Hu3DMotionShiftSet(temp_r29->model[0], temp_r29->motion[1], 0.0f, 20.0f, HU3D_MOTATTR_PAUSE);
}
if (0.0f > temp_r31->unk50) {
fn_1_2880(temp_r31, arg0);
}
break;
default:
OSReport("*** player mode error(%d)!!\n", temp_r31->unk4C);
break;
}
if (lbl_1_bss_28 < temp_r31->unk1C) {
lbl_1_bss_28 = temp_r31->unk1C;
}
omSetTra(arg0, temp_r31->unk1C * sind(180.0f + temp_r31->unk18), temp_r31->unk28, temp_r31->unk1C * cosd(180.0f + temp_r31->unk18));
}
}
}
static void fn_1_4190(float arg0)
{
Vec sp8;
s32 i;
for (i = 0; i < 4; i++) {
sp8.x = 155.5 * sind(arg0);
sp8.y = 588.0f;
sp8.z = 155.5 * cosd(arg0);
fn_1_7AEC(5, &sp8, NULL);
arg0 += 90.0f;
}
}
static void fn_1_4284(float arg0)
{
Vec sp8;
s32 i;
for (i = 0; i < 4; i++) {
sp8.x = 155.5 * sind(arg0);
sp8.y = 388.0f;
sp8.z = 155.5 * cosd(arg0);
sp8.x += 40.0f * frandf() - 20.0f;
sp8.z += 40.0f * frandf() - 20.0f;
fn_1_7AEC(4, &sp8, NULL);
arg0 += 90.0f;
}
}
static void fn_1_43D8(omObjData *arg0)
{
Vec spE8;
float temp_f31;
float temp_f23;
UnkFn27A8Struct *temp_r31;
omObjData *temp_r30;
s32 temp_r28;
temp_r31 = arg0->data;
temp_r30 = lbl_1_bss_48[temp_r31->unk54];
switch (temp_r31->unk4C) {
case 2000:
if (lbl_1_bss_58->work[0] == 1001) {
temp_r31->unk4C++;
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 10.0f, HU3D_MOTATTR_NONE);
}
break;
case 2001:
temp_r31->unk1C -= 1.0f;
if (Hu3DMotionEndCheck(arg0->model[0])) {
temp_r31->unk4C++;
temp_r31->unk08 = 0.0f;
temp_r31->unk04 = 2000.0f;
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 10.0f, HU3D_MOTATTR_NONE);
Hu3DMotionSet(temp_r30->model[0], temp_r30->motion[0]);
Hu3DModelAttrSet(temp_r30->model[0], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(temp_r30->model[0], HU3D_MOTATTR_LOOP);
Hu3DModelAttrReset(temp_r30->model[0], HU3D_ATTR_DISPOFF);
}
break;
case 2002:
temp_r31->unk08 += 0.4f;
temp_r31->unk04 -= temp_r31->unk08;
if (temp_r31->unk48 != 0 && Hu3DMotionEndCheck(arg0->model[0])) {
temp_r31->unk48 = 0;
HuAudCharVoicePlay(temp_r31->unk58, 0x128);
}
if (786.0f > temp_r31->unk04) {
temp_r31->unk4C++;
if (temp_r31->unk54 == 0) {
HuAudFXPlay(0x50D);
}
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE);
}
break;
case 2003:
temp_r31->unk08 += 0.4f;
temp_r31->unk04 -= temp_r31->unk08;
if (536.0f > temp_r31->unk04) {
temp_r31->unk4C++;
temp_r31->unk50 = 0;
temp_r31->unk04 = 536.0f;
Hu3DModelAttrReset(temp_r30->model[0], HU3D_MOTATTR_PAUSE);
spE8.x = temp_r31->unk00 * sind(180.0f + temp_r31->unk18);
spE8.y = temp_r31->unk04;
spE8.z = temp_r31->unk00 * cosd(180.0f + temp_r31->unk18);
fn_1_7AEC(6, &spE8, NULL);
omVibrate(temp_r31->unk54, 12, 0xC, 0);
}
break;
case 2004:
temp_r31->unk50++;
if (70.0f < temp_r31->unk50) {
temp_r31->unk4C++;
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[4], 0.0f, 10.0f, HU3D_MOTATTR_NONE);
}
break;
case 2005:
temp_r31->unk50++;
if (130.0f == temp_r31->unk50) {
if (lbl_1_bss_10 != 0) {
lbl_1_bss_10 = 0;
HuAudFXPlay(0x510);
}
fn_1_2970(temp_r31, temp_r30, 0);
}
if (!Hu3DMotionEndCheck(arg0->model[0])) {
temp_r31->unk1C -= 2.3f;
}
if (Hu3DMotionEndCheck(temp_r30->model[0])) {
temp_r31->unk4C++;
temp_r31->unk50 = 0;
temp_r31->unk0C = 0.0f;
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 10.0f, HU3D_MOTATTR_LOOP);
Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 10.0f, HU3D_MOTATTR_PAUSE);
}
break;
case 2006:
if (temp_r31->unk50++ > 10) {
temp_r31->unk4C++;
}
fn_1_1D18(temp_r30->model[0], "motionC-stretch", &spE8);
temp_r31->unk14 = spE8.y;
break;
case 2007:
temp_r31->unk1C -= 5.0f;
if (670.0f > temp_r31->unk1C) {
temp_f31 = (670.0f - temp_r31->unk1C) / 450.0f;
Hu3DMotionTimeSet(lbl_1_bss_54[temp_r31->unk54]->model[0], 10.0f * temp_f31);
temp_r28 = (s32)(10.0f * temp_f31) >> 1;
if (temp_r28 < 5 && temp_r31->unk44 != lbl_1_data_3C4[temp_r28]) {
temp_r31->unk44 = lbl_1_data_3C4[temp_r28];
HuAudFXPlay(temp_r31->unk44);
}
}
if (470.0f > temp_r31->unk1C) {
temp_r31->unk4C++;
temp_r31->unk1C = 470.0f;
fn_1_2B30(temp_r31, arg0, temp_r30);
}
else {
temp_r31->unk0C += 0.7f;
Hu3DMotionTimeSet(temp_r30->model[0], temp_r31->unk0C);
}
break;
case 2008:
if (fn_1_2DBC(temp_r31, temp_r30) != 0) {
temp_r31->unk4C++;
temp_r31->unk50 = 120;
}
break;
case 2009:
fn_1_313C(temp_r31, temp_r30);
temp_r31->unk50 -= 1.0f;
if (temp_r31->unk50 == 32) {
Hu3DMotionSet(arg0->model[0], arg0->motion[9]);
Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 20.0f, HU3D_MOTATTR_PAUSE);
}
if (0.0f > temp_r31->unk50) {
lbl_1_bss_58->work[0]++;
fn_1_2880(temp_r31, arg0);
arg0->func = fn_1_3204;
}
break;
case 2010:
if (temp_r31->unk54 == lbl_1_bss_26) {
temp_r31->unk4C = 2012;
temp_r31->unk20 = 10.5f;
Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[8], 0.0f, 20.0f, HU3D_MOTATTR_NONE);
Hu3DModelAttrReset(temp_r30->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[2], 20.0f, 20.0f, HU3D_MOTATTR_NONE);
HuAudFXPlay(0x513);
fn_1_4190(temp_r31->unk18);
}
else {
temp_r31->unk4C = 2014;
fn_1_2B30(temp_r31, arg0, temp_r30);
}
break;
case 2011:
break;
case 2012:
temp_r31->unk1C -= temp_r31->unk20;
if (0.0f > temp_r31->unk1C) {
temp_r31->unk1C = 0.0f;
}
temp_r31->unk20 -= 0.25f;
if (0.0f > temp_r31->unk20) {
temp_r31->unk4C++;
temp_r31->unk50 = 0;
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[9], 0.0f, 20.0f, HU3D_MOTATTR_NONE);
}
if (4.5f <= temp_r31->unk20) {
fn_1_4284(temp_r31->unk18);
}
break;
case 2013:
temp_r31->unk50++;
temp_f23 = 90.0f * (temp_r31->unk50 / 20.0f);
temp_f31 = sind(temp_f23) * sind(temp_f23);
if (180.0f > temp_r31->unk18) {
temp_r31->unk24 = temp_r31->unk18 + -temp_r31->unk18 * temp_f31;
}
else {
temp_r31->unk24 = temp_r31->unk18 + (360.0f - temp_r31->unk18) * temp_f31;
}
omSetRot(arg0, 0.0f, temp_r31->unk24, 0.0f);
if (20.0f <= temp_r31->unk50) {
temp_r31->unk4C = 2011;
}
break;
case 2014:
if (fn_1_2DBC(temp_r31, temp_r30) != 0) {
temp_r31->unk4C++;
temp_r31->unk50 = 120;
}
break;
case 2015:
fn_1_313C(temp_r31, temp_r30);
temp_r31->unk50 -= 1.0f;
if (temp_r31->unk50 == 32) {
Hu3DMotionSet(arg0->model[0], arg0->motion[9]);
Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 20.0f, HU3D_MOTATTR_PAUSE);
}
if (0.0f > temp_r31->unk50) {
temp_r31->unk4C = 2011;
}
break;
default:
OSReport("*** player mode error(%d)!!\n", temp_r31->unk4C);
break;
}
omSetTra(arg0, temp_r31->unk1C * sind(180.0f + temp_r31->unk18), temp_r31->unk28, temp_r31->unk1C * cosd(180.0f + temp_r31->unk18));
omSetTra(temp_r30, temp_r31->unk00 * sind(180.0f + temp_r31->unk18), temp_r31->unk04, temp_r31->unk00 * cosd(180.0f + temp_r31->unk18));
if (lbl_1_bss_58->work[0] < 1008 && temp_r31->unk54 == lbl_1_bss_26) {
lbl_1_bss_1B8.x = temp_r31->unk1C * sind(180.0f + temp_r31->unk18);
lbl_1_bss_1B8.y = 508.0f;
lbl_1_bss_1B8.z = temp_r31->unk1C * cosd(180.0f + temp_r31->unk18);
lbl_1_bss_1D0.x = lbl_1_bss_1B8.x;
lbl_1_bss_1D0.y = lbl_1_bss_1B8.y + 270.0f;
lbl_1_bss_1D0.z = lbl_1_bss_1B8.z + 850.0f;
}
}
static void fn_1_63C8(omObjData *arg0)
{
UnkFn27A8Struct *temp_r31;
s16 temp_r28;
s16 var_r27;
s32 i;
temp_r31 = arg0->data;
temp_r31->unk54 = arg0->work[0];
temp_r31->unk58 = GWPlayerCfg[temp_r31->unk54].character;
temp_r31->unk5C = GWPlayerCfg[temp_r31->unk54].pad_idx;
temp_r31->unk4C = 2000;
temp_r31->unk60 = 0;
temp_r31->unk28 = 388.0f;
temp_r31->unk2C = 0.0f;
temp_r31->unk30 = 0.0f;
temp_r31->unk0C = 0.0f;
temp_r31->unk00 = 895.0f;
temp_r31->unk04 = 536.0f;
temp_r31->unk44 = -1;
temp_r31->unk48 = 1;
temp_r31->unk34 = 10;
temp_r31->unk38 = 10;
temp_r31->unk3C = 10;
temp_r31->unk40 = 60;
arg0->model[0] = CharModelCreate(lbl_1_data_0[temp_r31->unk58], 4);
CharModelStepTypeSet(lbl_1_data_0[temp_r31->unk58], 0);
for (i = 0; i < 11; i++) {
arg0->motion[i] = CharModelMotionCreate(lbl_1_data_0[temp_r31->unk58], lbl_1_data_78[temp_r31->unk58][i]);
CharModelMotionSet(lbl_1_data_0[temp_r31->unk58], arg0->motion[i]);
}
temp_r28 = arg0->model[0];
var_r27 = Hu3DLLightCreateV(temp_r28, &lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C);
Hu3DLLightStaticSet(temp_r28, var_r27, 1);
Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP);
Hu3DModelLayerSet(arg0->model[0], 3);
Hu3DMotionSet(arg0->model[0], arg0->motion[0]);
temp_r31->unk18 = 135.0f + 90.0f * temp_r31->unk54;
temp_r31->unk1C = 895.0f;
omSetTra(arg0, temp_r31->unk1C * sind(180.0f + temp_r31->unk18), temp_r31->unk28, temp_r31->unk1C * cosd(180.0f + temp_r31->unk18));
omSetRot(arg0, 0.0f, temp_r31->unk18, 0.0f);
Hu3DModelShadowSet(arg0->model[0]);
Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF);
if (GWPlayerCfg[temp_r31->unk54].iscom) {
switch (GWPlayerCfg[temp_r31->unk54].diff) {
case 0:
temp_r31->unk34 = 26;
temp_r31->unk3C = 90;
break;
case 1:
temp_r31->unk34 = 24;
temp_r31->unk3C = 80;
break;
case 2:
temp_r31->unk34 = 22;
temp_r31->unk3C = 70;
break;
case 3:
default:
temp_r31->unk34 = 18;
temp_r31->unk3C = 40;
break;
}
temp_r31->unk38 = (temp_r31->unk3C >> 1) + frandmod(temp_r31->unk3C);
}
CharModelMotionDataClose(lbl_1_data_0[temp_r31->unk58]);
arg0->func = fn_1_43D8;
}
static void fn_1_6858(omObjData *arg0) { }
static void fn_1_685C(omObjData *arg0)
{
float temp_f31;
float temp_f29;
float temp_f30;
s32 temp_r29;
s32 i;
temp_r29 = arg0->work[0];
arg0->model[0] = Hu3DModelCreateFile(lbl_1_data_1D8[temp_r29]);
for (i = 0; i < 3; i++) {
arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_1E8[i]);
}
Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(arg0->model[0], 4);
Hu3DMotionSet(arg0->model[0], arg0->motion[0]);
temp_f31 = ((UnkFn27A8Struct *)lbl_1_bss_4C[temp_r29]->data)->unk18;
temp_f29 = ((UnkFn27A8Struct *)lbl_1_bss_4C[temp_r29]->data)->unk04;
temp_f30 = ((UnkFn27A8Struct *)lbl_1_bss_4C[temp_r29]->data)->unk00;
omSetTra(arg0, temp_f30 * sind(180.0f + temp_f31), temp_f29, temp_f30 * cosd(180.0f + temp_f31));
omSetRot(arg0, 0.0f, temp_f31, 0.0f);
Hu3DModelShadowSet(arg0->model[0]);
arg0->func = fn_1_6858;
}
static void fn_1_6AB4(omObjData *arg0)
{
Vec *temp_r29;
UnkFn6AB4Struct *temp_r31;
float temp_f31;
temp_r29 = &lbl_1_data_200[arg0->work[0]];
temp_r31 = arg0->data;
switch (temp_r31->unk18) {
case 3000:
temp_r31->unk14 -= 1.0f;
if (0.0f > temp_r31->unk14 && frandmod(20) == 0) {
temp_r31->unk18 = 3001;
temp_r31->unk0C = 360.0f * frandf();
temp_r31->unk10 = 10.0f;
HuAudFXPlay(0x512);
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 20.0f, HU3D_MOTATTR_NONE);
}
break;
case 3001:
temp_r31->unk00 += sind(temp_r31->unk0C);
temp_r31->unk08 += cosd(temp_r31->unk0C);
temp_f31 = temp_r31->unk00 - temp_r29->x;
if (50.0f < ABS(temp_f31)) {
temp_r31->unk00 = temp_r29->x + 50.0f * (0.0f > temp_f31 ? -1 : 1);
}
temp_f31 = temp_r31->unk08 - temp_r29->z;
if (50.0f < ABS(temp_f31)) {
temp_r31->unk08 = temp_r29->z + 50.0f * (0.0f > temp_f31 ? -1 : 1);
}
temp_r31->unk04 += temp_r31->unk10;
temp_r31->unk10 -= 0.5f;
if (temp_r29->y > temp_r31->unk04) {
temp_r31->unk18 = 3000;
temp_r31->unk14 = 20.0f;
temp_r31->unk04 = temp_r29->y;
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 20.0f, HU3D_MOTATTR_NONE);
}
break;
}
omSetTra(arg0, temp_r31->unk00, temp_r31->unk04, temp_r31->unk08);
omSetRot(arg0, 0.0f, temp_r31->unk0C, 0.0f);
}
static void fn_1_6E64(omObjData *arg0)
{
Vec *temp_r29;
UnkFn6AB4Struct *temp_r30;
s32 i;
temp_r29 = &lbl_1_data_200[arg0->work[0]];
temp_r30 = arg0->data;
arg0->model[0] = Hu3DModelCreateFile(lbl_1_data_1F4);
for (i = 0; i < 2; i++) {
arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_1F8[i]);
}
Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelLayerSet(arg0->model[0], 5);
Hu3DMotionSet(arg0->model[0], arg0->motion[1]);
temp_r30->unk18 = 3000;
temp_r30->unk14 = 0.0f;
temp_r30->unk00 = temp_r29->x;
temp_r30->unk04 = temp_r29->y;
temp_r30->unk08 = temp_r29->z;
temp_r30->unk0C = 360.0f * frandf();
omSetTra(arg0, temp_r30->unk00, temp_r30->unk04, temp_r30->unk08);
omSetRot(arg0, 0.0f, temp_r30->unk0C, 0.0f);
Hu3DModelShadowSet(arg0->model[0]);
Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF);
arg0->func = fn_1_6AB4;
}
static void fn_1_7020(omObjData *arg0)
{
Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF);
fn_1_24(arg0->work[0], arg0->model[0]);
omDelObjEx(lbl_1_bss_1E8, arg0);
lbl_1_bss_24--;
}
static void fn_1_70E4(omObjData *arg0)
{
Mtx sp18;
Vec spC;
float var_f27;
float temp_f26;
float temp_f30;
float temp_f31;
UnkFn70E4Struct *temp_r31;
temp_r31 = arg0->data;
switch (arg0->work[0]) {
case 0:
case 1:
case 2:
case 3:
var_f27 = temp_r31->unk24.z;
spC.x = 0.0f;
spC.y = 0.0f;
spC.z = var_f27;
temp_r31->unk24.z *= 0.92f;
PSMTXIdentity(sp18);
mtxRot(sp18, temp_r31->unk24.x, temp_r31->unk24.y, 0.0f);
PSMTXMultVec(sp18, &spC, &spC);
VECAdd(&spC, &temp_r31->unk00, &temp_r31->unk00);
omSetTra(arg0, temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z);
Hu3DModelTPLvlSet(arg0->model[0], temp_r31->unk30);
temp_r31->unk30 -= 0.02f;
if (0.1f > temp_r31->unk30) {
fn_1_7020(arg0);
}
break;
case 4:
temp_r31->unk00.y += temp_r31->unk30;
if (390.0f >= temp_r31->unk00.y) {
temp_r31->unk00.y = 390.0f;
}
omSetTra(arg0, temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z);
if (390.0f >= temp_r31->unk00.y) {
break;
}
temp_r31->unk0C += 8.0f + frandmod(8);
temp_r31->unk10 += 8.0f + frandmod(8);
temp_r31->unk14 += 8.0f + frandmod(8);
omSetRot(arg0, temp_r31->unk0C, temp_r31->unk10, temp_r31->unk14);
if (0.0f < temp_r31->unk30) {
temp_r31->unk30 -= 0.3f;
break;
}
if (0.0f == temp_r31->unk34) {
temp_r31->unk34 = 0.003f + 0.006f * frandf();
}
temp_r31->unk30 -= temp_r31->unk34;
temp_r31->unk00.x += temp_r31->unk24.x;
temp_r31->unk00.z += temp_r31->unk24.z;
if (!(lbl_1_bss_1B4 & 3)) {
temp_r31->unk24.x = 6.0f * frandf() - 3.0f;
temp_r31->unk24.z = 6.0f * frandf() - 3.0f;
}
break;
case 5:
if (Hu3DMotionEndCheck(arg0->model[0])) {
fn_1_7020(arg0);
}
break;
case 6:
spC = lbl_1_data_10;
temp_f26 = Hu3DMotionMaxTimeGet(arg0->model[0]);
temp_f31 = 1.0f - Hu3DMotionTimeGet(arg0->model[0]) / temp_f26;
spC.x += 100.0f * temp_f31 * frandf() * (frandmod(100) > 50 ? 1.0f : -1.0f);
spC.z += 100.0f * temp_f31 * frandf() * (frandmod(100) > 50 ? 1.0f : -1.0f);
Hu3DCameraPosSetV(1, &spC, &lbl_1_data_1C, &lbl_1_data_28);
lbl_1_bss_1DC = spC;
lbl_1_bss_1C4 = lbl_1_data_28;
temp_f30 = 0.5f * Hu3DMotionMaxTimeGet(arg0->model[0]);
if (temp_f30 < Hu3DMotionTimeGet(arg0->model[0])) {
temp_f31 = 1.0f - (Hu3DMotionTimeGet(arg0->model[0]) - temp_f30) / temp_f30;
Hu3DModelTPLvlSet(arg0->model[0], temp_f31);
temp_f31 = 1.0f - temp_f31;
omSetSca(arg0, temp_r31->unk18 + temp_f31, temp_r31->unk1C + temp_f31, temp_r31->unk20 + temp_f31);
}
if (Hu3DMotionEndCheck(arg0->model[0])) {
Hu3DCameraPosSetV(1, &lbl_1_data_10, &lbl_1_data_1C, &lbl_1_data_28);
lbl_1_bss_1DC = lbl_1_data_10;
lbl_1_bss_1C4 = lbl_1_data_28;
fn_1_7020(arg0);
}
break;
default:
OSReport("effect id error!!(%d)\n", arg0->work[0]);
break;
}
}
static void fn_1_7950(omObjData *arg0)
{
UnkFn70E4Struct *temp_r30;
s16 var_r25;
temp_r30 = arg0->data;
temp_r30->unk38--;
if (temp_r30->unk38 <= 0) {
var_r25 = fn_1_AC(arg0->work[0]);
if (var_r25 < 0) {
arg0->model[0] = Hu3DModelLink(lbl_1_bss_16[arg0->work[0]]);
}
else {
arg0->model[0] = var_r25;
}
Hu3DMotionTimeSet(arg0->model[0], 0.0f);
Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelLayerSet(arg0->model[0], 2);
omSetTra(arg0, temp_r30->unk00.x, temp_r30->unk00.y, temp_r30->unk00.z);
omSetRot(arg0, temp_r30->unk0C, temp_r30->unk10, temp_r30->unk14);
omSetSca(arg0, temp_r30->unk18, temp_r30->unk1C, temp_r30->unk20);
Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF);
arg0->func = fn_1_70E4;
}
}
static void fn_1_7AEC(s32 arg0, Vec *arg1, Vec *arg2)
{
omObjData *temp_r3;
UnkFn70E4Struct *temp_r31;
if (lbl_1_bss_24 < 300) {
lbl_1_bss_24++;
temp_r3 = omAddObjEx(lbl_1_bss_1E8, 105, 1, 1, 5, fn_1_7950);
temp_r3->work[0] = arg0;
temp_r3->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM);
temp_r31 = temp_r3->data;
temp_r31->unk0C = 0.0f;
temp_r31->unk10 = 0.0f;
temp_r31->unk14 = 0.0f;
temp_r31->unk18 = 1.0f;
temp_r31->unk1C = 1.0f;
temp_r31->unk20 = 1.0f;
temp_r31->unk24.x = 0.0f;
temp_r31->unk24.y = 0.0f;
temp_r31->unk24.z = 0.0f;
temp_r31->unk00 = *arg1;
if (NULL != arg2) {
temp_r31->unk24 = *arg2;
}
temp_r31->unk38 = frandmod(10);
switch (arg0) {
case 0:
case 1:
case 2:
case 3:
temp_r31->unk30 = 1.0f;
break;
case 4:
temp_r31->unk30 = 12.0f + 2.0f * frandf();
temp_r31->unk34 = 0.0f;
temp_r31->unk18 = 8.0f;
temp_r31->unk1C = 8.0f;
temp_r31->unk20 = 8.0f;
break;
case 5:
temp_r31->unk18 = 4.0f;
temp_r31->unk1C = 4.0f;
temp_r31->unk20 = 4.0f;
break;
}
}
}
static void fn_1_7D48(omObjData *arg0) { }
static void fn_1_7D4C(omObjData *arg0)
{
arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 35));
Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(arg0->model[0], 0);
omSetTra(arg0, 0.0f, 0.0f, 0.0f);
omSetRot(arg0, 0.0f, 270.0f + 90.0f * arg0->work[0], 0.0f);
Hu3DModelShadowMapSet(arg0->model[0]);
Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF);
arg0->func = fn_1_7D48;
}
static void fn_1_7E80(omObjData *arg0) { }
static void fn_1_7E84(omObjData *arg0)
{
float temp_f31;
arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 36));
Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP);
Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(arg0->model[0], 1);
temp_f31 = 135.0f + 90.0f * arg0->work[0];
omSetTra(arg0, 155.5 * sind(temp_f31), 0.0f, 155.5 * cosd(temp_f31));
omSetRot(arg0, 0.0f, 0.0f, 0.0f);
Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF);
arg0->func = fn_1_7E80;
}
static inline void fn_1_8048InlineFunc(Vec *arg0, float arg1, float arg2, float arg3)
{
arg0->x = arg1;
arg0->y = arg2;
arg0->z = arg3;
}
static void fn_1_8048(void)
{
Vec sp14;
Vec sp8;
lbl_1_bss_38 += lbl_1_bss_34;
if (360.0f < lbl_1_bss_38) {
lbl_1_bss_34 -= 0.2f;
if (0.0f > lbl_1_bss_34) {
lbl_1_bss_34 = 0.0f;
}
}
sp14.x = 2000.0 * cosd(lbl_1_bss_38);
sp14.y = 2000.0 * sind(lbl_1_bss_38);
sp14.z = 0.0f;
fn_1_8048InlineFunc(&sp8, -sp14.x, -sp14.y, -sp14.z);
Hu3DGLightPosSetV(lbl_1_bss_14, &sp14, &sp8);
}
static void fn_1_8218(omObjData *arg0)
{
Vec sp38;
float temp_f26;
omObjData *temp_r30;
if (omSysExitReq != 0) {
fn_1_1F58(-1);
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
arg0->func = fn_1_9AF4;
}
lbl_1_bss_1B4++;
switch (arg0->work[0]) {
case 1000:
if (WipeStatGet() == 0) {
arg0->work[0]++;
}
break;
case 1001:
case 1002:
case 1003:
case 1004:
break;
case 1005:
if (lbl_1_bss_1AA < 0) {
lbl_1_bss_1AA = MGSeqCreate(3, 0);
}
else {
if (lbl_1_bss_1A4 < 0 && (MGSeqStatGet(lbl_1_bss_1AA) & 0x10)) {
lbl_1_bss_1A4 = HuAudSeqPlay(0x46);
}
if (MGSeqStatGet(lbl_1_bss_1AA) == 0) {
arg0->work[0]++;
lbl_1_bss_1B0 = 1800;
lbl_1_bss_1A8 = MGSeqCreate(1, lbl_1_bss_1B0 / 60, -1, -1);
lbl_1_bss_1AA = -1;
}
}
break;
case 1006:
MGSeqParamSet(lbl_1_bss_1A8, 1, (lbl_1_bss_1B0 + REFRESH_RATE - 1) / REFRESH_RATE);
lbl_1_bss_1B0--;
if (lbl_1_bss_1B0 < 0 || lbl_1_bss_26 >= 0) {
lbl_1_bss_1B0 = 1800;
lbl_1_bss_2C = 0.0f;
arg0->work[0] = 1007;
}
if (670.0f <= lbl_1_bss_28) {
lbl_1_bss_28 = 670.0f;
}
temp_f26 = 2.5f * (670.0f - lbl_1_bss_28);
sp38 = lbl_1_data_10;
sp38.y = lbl_1_bss_1DC.y + (lbl_1_data_10.y - temp_f26 - lbl_1_bss_1DC.y) / 3.0f;
sp38.z = lbl_1_bss_1DC.z + (lbl_1_data_10.z - temp_f26 - lbl_1_bss_1DC.z) / 3.0f;
fn_1_1350(&sp38, &lbl_1_data_1C, &lbl_1_data_28);
lbl_1_bss_28 = 0.0f;
break;
case 1007:
if (lbl_1_bss_1AA < 0) {
MGSeqParamSet(lbl_1_bss_1A8, 2, -1);
lbl_1_bss_1A8 = -1;
lbl_1_bss_1AA = MGSeqCreate(3, 1);
fn_1_1F58(100);
}
else {
lbl_1_bss_2C += 1.0f;
if (90.0f >= lbl_1_bss_2C) {
fn_1_13DC(lbl_1_bss_2C / 90.0f, &lbl_1_data_1C);
}
if (MGSeqStatGet(lbl_1_bss_1AA) == 0) {
arg0->work[0]++;
lbl_1_bss_1AA = -1;
lbl_1_bss_2C = 0.0f;
}
}
break;
case 1008:
if (lbl_1_bss_1AA < 0) {
if (lbl_1_bss_26 < 0) {
lbl_1_bss_1AA = MGSeqCreate(3, 2);
HuAudSStreamPlay(4);
}
else {
lbl_1_bss_1AA = MGSeqCreate(5, 3, GWPlayerCfg[lbl_1_bss_26].character, -1, -1, -1);
temp_r30 = lbl_1_bss_4C[lbl_1_bss_26];
Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[10], 0.0f, 20.0f, HU3D_MOTATTR_NONE);
HuAudSStreamPlay(1);
}
}
else {
lbl_1_bss_2C += 1.0f;
if (lbl_1_bss_26 >= 0 && 110.0f == lbl_1_bss_2C) {
Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(arg0->model[2], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF);
Hu3DMotionTimeSet(arg0->model[2], 0.0f);
Hu3DMotionSpeedSet(arg0->model[2], 3.0f);
}
if (210.0f < lbl_1_bss_2C && MGSeqStatGet(lbl_1_bss_1AA) == 0) {
fn_1_1F58(-1);
lbl_1_bss_1AA = -1;
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
arg0->func = fn_1_9AF4;
}
}
break;
default:
OSReport("*** main mode error(%d)!!\n", arg0->work[0]);
break;
}
lbl_1_bss_30 -= 1.0f;
if (0.0f == lbl_1_bss_30) {
Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(arg0->model[2], HU3D_MOTATTR_PAUSE);
Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF);
Hu3DMotionTimeSet(arg0->model[2], 0.0f);
Hu3DMotionSpeedSet(arg0->model[2], 3.0f);
}
if (0.0f > lbl_1_bss_30) {
lbl_1_bss_30 = -1.0f;
fn_1_8048();
if (Hu3DMotionEndCheck(arg0->model[2])) {
Hu3DModelAttrReset(arg0->model[1], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF);
}
}
}
static void fn_1_9058(omObjData *arg0)
{
s16 temp_r29;
s16 temp_r28;
s32 i;
arg0->work[0] = 1000;
arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 32));
arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 33));
arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 34));
for (i = 0; i < 3; i++) {
Hu3DModelAttrSet(arg0->model[i], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(arg0->model[i], HU3D_MOTATTR_PAUSE);
Hu3DModelLayerSet(arg0->model[i], 0);
Hu3DModelPosSet(arg0->model[i], 0.0f, 0.0f, 0.0f);
}
Hu3DModelReflectTypeSet(arg0->model[0], 3);
Hu3DModelReflectTypeSet(arg0->model[1], 3);
Hu3DModelReflectTypeSet(arg0->model[2], 3);
temp_r29 = arg0->model[0];
temp_r28 = Hu3DLLightCreateV(temp_r29, &lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C);
Hu3DLLightStaticSet(temp_r29, temp_r28, 1);
Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF);
Hu3DModelAttrReset(arg0->model[1], HU3D_ATTR_DISPOFF);
Hu3DModelShadowMapSet(arg0->model[0]);
HuAudFXPlay(0x519);
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
arg0->func = fn_1_8218;
}
void ObjectSetup(void)
{
Vec sp20;
omObjData *temp_r30;
s32 i;
OSReport("******* M402 ObjectSetup *********\n");
lbl_1_bss_1E8 = omInitObjMan(400, 0x2000);
omGameSysInit(lbl_1_bss_1E8);
lbl_1_bss_1B4 = 0;
lbl_1_bss_1AA = -1;
lbl_1_bss_1A8 = -1;
lbl_1_bss_26 = -1;
lbl_1_bss_1A4 = -1;
lbl_1_bss_10 = 1;
lbl_1_bss_8 = 0.0f;
lbl_1_bss_C = 2200.0f;
lbl_1_bss_4 = 2500.0f;
lbl_1_bss_1D0 = lbl_1_data_10;
lbl_1_bss_1B8 = lbl_1_data_28;
Hu3DReflectNoSet(0);
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 20000.0f, 1.2f);
fn_1_1350(&lbl_1_data_10, &lbl_1_data_1C, &lbl_1_data_28);
lbl_1_bss_38 = 180.0f;
lbl_1_bss_34 = 4.0f;
lbl_1_bss_30 = 60.0f;
lbl_1_bss_14 = Hu3DGLightCreateV(&lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C);
Hu3DGLightStaticSet(lbl_1_bss_14, 1);
fn_1_8048();
Hu3DShadowCreate(30.0f, 20.0f, 20000.0f);
Hu3DShadowTPLvlSet(0.5f);
VECNormalize(&lbl_1_data_60, &sp20);
Hu3DShadowPosSet(&lbl_1_data_60, &sp20, &lbl_1_data_6C);
omMakeGroupEx(lbl_1_bss_1E8, 0, 4);
lbl_1_bss_54 = omGetGroupMemberListEx(lbl_1_bss_1E8, 0);
for (i = 0; i < 4; i++) {
temp_r30 = omAddObjEx(lbl_1_bss_1E8, 100, 1, 0, 0, fn_1_7D4C);
temp_r30->work[0] = i;
}
omMakeGroupEx(lbl_1_bss_1E8, 1, 4);
lbl_1_bss_50 = omGetGroupMemberListEx(lbl_1_bss_1E8, 1);
for (i = 0; i < 4; i++) {
temp_r30 = omAddObjEx(lbl_1_bss_1E8, 101, 1, 0, 1, fn_1_7E84);
temp_r30->work[0] = i;
}
omMakeGroupEx(lbl_1_bss_1E8, 2, 4);
lbl_1_bss_4C = omGetGroupMemberListEx(lbl_1_bss_1E8, 2);
for (i = 0; i < 4; i++) {
temp_r30 = omAddObjEx(lbl_1_bss_1E8, 102, 1, 11, 2, fn_1_63C8);
temp_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkFn27A8Struct), MEMORY_DEFAULT_NUM);
temp_r30->work[0] = i;
}
omMakeGroupEx(lbl_1_bss_1E8, 3, 4);
lbl_1_bss_48 = omGetGroupMemberListEx(lbl_1_bss_1E8, 3);
for (i = 0; i < 4; i++) {
temp_r30 = omAddObjEx(lbl_1_bss_1E8, 103, 1, 3, 3, fn_1_685C);
temp_r30->work[0] = i;
}
omMakeGroupEx(lbl_1_bss_1E8, 4, 2);
lbl_1_bss_44 = omGetGroupMemberListEx(lbl_1_bss_1E8, 4);
for (i = 0; i < 2; i++) {
temp_r30 = omAddObjEx(lbl_1_bss_1E8, 104, 1, 2, 4, fn_1_6E64);
temp_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkFn6AB4Struct), MEMORY_DEFAULT_NUM);
temp_r30->work[0] = i;
}
fn_1_0();
lbl_1_bss_24 = 0;
omMakeGroupEx(lbl_1_bss_1E8, 5, 300);
lbl_1_bss_40 = omGetGroupMemberListEx(lbl_1_bss_1E8, 5);
for (i = 0; i < 7; i++) {
lbl_1_bss_16[i] = Hu3DModelCreateFile(lbl_1_data_218[i]);
Hu3DModelAttrSet(lbl_1_bss_16[i], HU3D_ATTR_DISPOFF);
Hu3DModelAttrSet(lbl_1_bss_16[i], HU3D_MOTATTR_PAUSE);
}
lbl_1_bss_58 = omAddObjEx(lbl_1_bss_1E8, 106, 3, 1, -1, fn_1_9058);
}
static void fn_1_9AF4(omObjData *arg0)
{
s32 i;
if (WipeStatGet() == 0) {
if (lbl_1_bss_1AA >= 0) {
MGSeqKill(lbl_1_bss_1AA);
}
if (lbl_1_bss_1A8 >= 0) {
MGSeqKill(lbl_1_bss_1A8);
}
MGSeqKillAll();
HuAudAllStop();
for (i = 0; i < 4; i++) {
CharModelKill(lbl_1_data_0[GWPlayerCfg[i].character]);
}
omOvlReturnEx(1, 1);
}
}