* Fix REL includes till mgmodedll * hsfload fixes * update aurora, fixups * Minor tweaks * update aurora * Mess byteswapping and comment out 3D render code
2107 lines
70 KiB
C
Executable file
2107 lines
70 KiB
C
Executable file
#include "REL/executor.h"
|
|
#include "game/audio.h"
|
|
#include "game/chrman.h"
|
|
#include "game/data.h"
|
|
#include "game/frand.h"
|
|
#include "game/gamework_data.h"
|
|
#include "game/hsfanim.h"
|
|
#include "game/hsfman.h"
|
|
#include "game/hsfmotion.h"
|
|
#include "game/mapspace.h"
|
|
#include "game/minigame_seq.h"
|
|
#include "game/object.h"
|
|
#include "game/objsub.h"
|
|
#include "game/pad.h"
|
|
#include "game/process.h"
|
|
#include "game/sprite.h"
|
|
#include "game/window.h"
|
|
#include "game/wipe.h"
|
|
|
|
#include "ext_math.h"
|
|
|
|
typedef struct {
|
|
/* 0x00 */ s16 unk00;
|
|
/* 0x02 */ s16 unk02[3];
|
|
/* 0x08 */ char unk08[4];
|
|
/* 0x0C */ s16 unk0C;
|
|
/* 0x0E */ s16 unk0E;
|
|
/* 0x10 */ s16 unk10;
|
|
/* 0x12 */ char unk12[2];
|
|
/* 0x14 */ s32 unk14;
|
|
/* 0x18 */ s32 unk18;
|
|
/* 0x1C */ s32 unk1C;
|
|
/* 0x20 */ s32 unk20[2];
|
|
/* 0x28 */ s32 unk28;
|
|
/* 0x2C */ s32 unk2C;
|
|
/* 0x30 */ s32 unk30;
|
|
/* 0x34 */ s32 unk34;
|
|
/* 0x38 */ s32 unk38;
|
|
/* 0x3C */ s32 unk3C;
|
|
/* 0x40 */ s32 unk40;
|
|
/* 0x44 */ s32 unk44;
|
|
/* 0x48 */ float unk48;
|
|
/* 0x4C */ float unk4C;
|
|
/* 0x50 */ float unk50[2];
|
|
/* 0x58 */ float unk58[2];
|
|
} UnkM445Struct_00; // Size 0x60
|
|
|
|
typedef struct {
|
|
/* 0x00 */ s16 unk00;
|
|
/* 0x02 */ s16 unk02;
|
|
/* 0x04 */ s16 unk04;
|
|
/* 0x06 */ s16 unk06;
|
|
/* 0x08 */ s16 unk08[16];
|
|
/* 0x28 */ s16 unk28;
|
|
/* 0x2A */ char unk2A[2];
|
|
/* 0x2C */ s32 unk2C;
|
|
/* 0x30 */ s32 unk30;
|
|
/* 0x34 */ s32 unk34;
|
|
} UnkM445Struct_01; // Size 0x38
|
|
|
|
typedef struct {
|
|
/* 0x00 */ s16 unk00;
|
|
/* 0x02 */ s16 unk02;
|
|
/* 0x04 */ s16 unk04;
|
|
/* 0x06 */ s16 unk06;
|
|
/* 0x08 */ s16 unk08[8];
|
|
/* 0x18 */ s32 unk18;
|
|
/* 0x1C */ s32 unk1C;
|
|
/* 0x20 */ s32 unk20;
|
|
/* 0x24 */ s32 unk24;
|
|
/* 0x28 */ s32 unk28;
|
|
/* 0x2C */ s32 unk2C;
|
|
/* 0x30 */ s32 unk30;
|
|
/* 0x34 */ float unk34;
|
|
/* 0x38 */ float unk38;
|
|
/* 0x3C */ float unk3C;
|
|
/* 0x40 */ float unk40;
|
|
/* 0x44 */ float unk44;
|
|
/* 0x48 */ float unk48;
|
|
/* 0x4C */ float unk4C;
|
|
/* 0x50 */ float unk50;
|
|
/* 0x54 */ float unk54;
|
|
/* 0x58 */ float unk58;
|
|
/* 0x5C */ float unk5C;
|
|
/* 0x60 */ float unk60;
|
|
/* 0x64 */ char unk64[0xC];
|
|
/* 0x70 */ Vec unk70;
|
|
/* 0x7C */ s8 unk7C;
|
|
/* 0x7D */ s8 unk7D;
|
|
/* 0x7E */ s8 unk7E;
|
|
/* 0x7F */ s8 unk7F;
|
|
/* 0x80 */ u16 unk80;
|
|
/* 0x82 */ u16 unk82;
|
|
/* 0x84 */ float unk84;
|
|
/* 0x88 */ float unk88;
|
|
/* 0x8C */ char unk8C[4];
|
|
/* 0x90 */ s32 unk90;
|
|
/* 0x94 */ char unk94[4];
|
|
/* 0x98 */ s32 unk98;
|
|
} UnkM445Struct_02; // Size 0x9C
|
|
|
|
typedef struct {
|
|
/* 0x00 */ char unk00[0x18];
|
|
/* 0x18 */ float unk18;
|
|
/* 0x1C */ char unk1C[4];
|
|
/* 0x20 */ float unk20;
|
|
} UnkM445Struct_03; // Size unknown
|
|
|
|
typedef struct {
|
|
/* 0x00 */ UnkM445Struct_03 *unk00;
|
|
/* 0x04 */ s32 unk04;
|
|
/* 0x08 */ s32 unk08;
|
|
/* 0x0C */ s32 unk0C;
|
|
} UnkM445Struct_04; // Size unknown
|
|
|
|
void ObjectSetup(void);
|
|
void fn_1_4B8(float arg0, float arg1, s32 arg2);
|
|
void fn_1_50C(omObjData *arg0);
|
|
void fn_1_510(omObjData *arg0);
|
|
BOOL fn_1_520(s32 arg0);
|
|
void fn_1_550(void);
|
|
float fn_1_1858(float arg0);
|
|
UnkM445Struct_01 *fn_1_18D8(void);
|
|
void fn_1_1934(void);
|
|
void fn_1_1968(void);
|
|
s32 fn_1_1AD0(s32 arg0);
|
|
void fn_1_1B0C(void);
|
|
void fn_1_1C64(void);
|
|
s8 fn_1_2BF4(s32 arg0, s32 arg1);
|
|
void fn_1_2CAC(Vec *arg0, float arg1, float arg2);
|
|
s8 fn_1_2E68(s32 arg0, s32 arg1);
|
|
u8 fn_1_2F38(s32 arg0, s32 arg1);
|
|
u16 fn_1_3010(s32 arg0);
|
|
u16 fn_1_3094(s32 arg0);
|
|
s32 fn_1_3114(UnkM445Struct_02 *arg0, float arg1, float arg2, float arg3);
|
|
s32 fn_1_3334(UnkM445Struct_02 *arg0, s32 *arg1);
|
|
void fn_1_3548(UnkM445Struct_02 *arg0);
|
|
float fn_1_42A0(float arg0, float arg1, float arg2);
|
|
BOOL fn_1_43A4(UnkM445Struct_02 *arg0, float arg1, float arg2);
|
|
void fn_1_45D0(UnkM445Struct_02 *arg0);
|
|
void fn_1_557C(void);
|
|
void fn_1_55F0(void);
|
|
void fn_1_5664(UnkM445Struct_02 *arg0, s32 arg1);
|
|
void fn_1_5700(UnkM445Struct_02 *arg0);
|
|
void fn_1_6268(void);
|
|
void fn_1_7FC0(ModelData *model, ParticleData *particle, Mtx matrix);
|
|
void fn_1_8320(void);
|
|
void fn_1_8938(void);
|
|
void fn_1_89B8(void);
|
|
void fn_1_8A18(void);
|
|
|
|
s16 lbl_1_bss_6E6;
|
|
char lbl_1_bss_6E4_pad[2]; // Unused.
|
|
s16 lbl_1_bss_6E2;
|
|
s16 lbl_1_bss_6E0;
|
|
s32 lbl_1_bss_6DC;
|
|
s32 lbl_1_bss_6D8;
|
|
s32 lbl_1_bss_6CC[3];
|
|
s32 lbl_1_bss_6C8;
|
|
s32 lbl_1_bss_6C4;
|
|
char lbl_1_bss_6C0_pad[4]; // Unused.
|
|
UnkM445Struct_02 lbl_1_bss_588[2];
|
|
UnkM445Struct_00 lbl_1_bss_288[8];
|
|
UnkM445Struct_01 lbl_1_bss_58[10];
|
|
Process *lbl_1_bss_54;
|
|
char lbl_1_bss_30_pad[0x24]; // Unused.
|
|
omObjData *lbl_1_bss_2C;
|
|
Vec lbl_1_bss_20;
|
|
Vec lbl_1_bss_14;
|
|
Vec lbl_1_bss_8;
|
|
s32 lbl_1_bss_4;
|
|
float lbl_1_bss_0;
|
|
|
|
s32 lbl_1_data_0[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
|
|
|
|
// Unused.
|
|
s32 lbl_1_data_20[] = { DATADIR_MARIOMOT, DATADIR_LUIGIMOT, DATADIR_PEACHMOT, DATADIR_YOSHIMOT, DATADIR_WARIOMOT, DATADIR_DONKEYMOT, DATADIR_DAISYMOT,
|
|
DATADIR_WALUIGIMOT };
|
|
|
|
s32 lbl_1_data_40[]
|
|
= { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), DATA_MAKE_NUM(DATADIR_M445, 0),
|
|
DATA_MAKE_NUM(DATADIR_M445, 8), DATA_MAKE_NUM(DATADIR_M445, 16), DATA_MAKE_NUM(DATADIR_MARIOMOT, 75), DATA_MAKE_NUM(DATADIR_MARIOMOT, 24) };
|
|
|
|
Vec lbl_1_data_60[] = { { -100.0f, 75.0f, 60.0f }, { 100.0f, 75.0f, -60.0f } };
|
|
|
|
Vec lbl_1_data_78[] = { { 0.0f, 0.0f, -79.5f }, { 180.0f, 0.0f, -100.5f } };
|
|
|
|
float lbl_1_data_90[][2] = { { 471.0f, 280.0f }, { -461.5f, 299.5f }, { 271.7f, -482.6f }, { -373.1f, -457.1f }, { 462.8f, -128.5f },
|
|
{ 0.0f, -495.4f }, { -40.8f, 632.3f }, { -477.7f, -110.0f } };
|
|
|
|
float lbl_1_data_D0[][2] = { { 467.0f, 393.0f }, { -461.5f, 395.5f }, { 367.7f, -492.1f }, { -268.9f, -467.0f }, { 462.8f, -128.5f },
|
|
{ 0.0f, -495.4f }, { -40.8f, 632.3f }, { -477.7f, -110.0f } };
|
|
|
|
s32 lbl_1_data_110[][2] = { { 360, 306 }, { -360, 341 }, { 326, -360 }, { -326, -360 }, { 321, -122 }, { 0, -332 }, { -50, 500 }, { -334, -110 } };
|
|
|
|
char *lbl_1_data_220[][2] = { { "tansu_w_itemhook1", "tansu_w_itemhook2" }, { "sidebord_itemhook1", "sidebord_itemhook2" },
|
|
{ "pinkshelf_itemhook1", "pinkshelf_itemhook2" }, { "green_itemhook1", "green_itemhook2" }, { "bookshelf_itemhook", "bookshelf_itemhook" },
|
|
{ "clock_itemhook", "clock_itemhook" }, { "book_itemhook", "book_itemhook" }, { "tv_itemhook", "tv_itemhook" } };
|
|
|
|
s32 lbl_1_data_260[] = { 2, 2, 2, 2, 1, 1, 1, 1 };
|
|
|
|
void ObjectSetup(void)
|
|
{
|
|
lbl_1_bss_54 = omInitObjMan(50, 0x2000);
|
|
omGameSysInit(lbl_1_bss_54);
|
|
HuWinInit(1);
|
|
Hu3DCameraCreate(1);
|
|
Hu3DCameraPerspectiveSet(1, 40.0f, 20.0f, 25000.0f, 1.2f);
|
|
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
|
|
Hu3DCameraScissorSet(1, 0, 0, 640, 480);
|
|
lbl_1_bss_2C = omAddObjEx(lbl_1_bss_54, 32730, 0, 0, -1, omOutViewMulti);
|
|
lbl_1_bss_2C->work[0] = 1;
|
|
CRotM[0].x = -12.5f;
|
|
CRotM[0].y = 0.0f;
|
|
CRotM[0].z = 0.0f;
|
|
CenterM[0].x = 0.0f;
|
|
CenterM[0].y = 345.0f;
|
|
CenterM[0].z = -250.0f;
|
|
CZoomM[0] = 520.0f;
|
|
Hu3DLighInit();
|
|
lbl_1_bss_6E6 = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 0xFF, 0xFF, 0xFF);
|
|
Hu3DGLightPosAimSet(lbl_1_bss_6E6, 0.0f, 4330.13f, 2500.0f, 0.0f, 0.0f, 0.0f);
|
|
Hu3DGLightInfinitytSet(lbl_1_bss_6E6);
|
|
lbl_1_bss_20.x = -200.0f;
|
|
lbl_1_bss_20.y = 4000.0f;
|
|
lbl_1_bss_20.z = 0.0f;
|
|
lbl_1_bss_14.x = lbl_1_bss_14.z = 0.0f;
|
|
lbl_1_bss_14.y = 1.0f;
|
|
lbl_1_bss_8.x = 0.0f;
|
|
lbl_1_bss_8.y = 0.0f;
|
|
lbl_1_bss_8.z = 0.0f;
|
|
Hu3DShadowCreate(30.0f, 20.0f, 10000.0f);
|
|
Hu3DShadowTPLvlSet(0.3f);
|
|
Hu3DShadowPosSet(&lbl_1_bss_20, &lbl_1_bss_14, &lbl_1_bss_8);
|
|
Hu3DBGColorSet(0, 0, 0);
|
|
fn_1_550();
|
|
HuPrcChildCreate(fn_1_8A18, 0x1000, 0x2000, 0, HuPrcCurrentGet());
|
|
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
|
|
}
|
|
|
|
void fn_1_4B8(float arg0, float arg1, s32 arg2)
|
|
{
|
|
Vec sp14;
|
|
|
|
sp14.x = arg0;
|
|
sp14.y = 0.0f;
|
|
sp14.z = arg1;
|
|
HuAudFXEmiterPlay(arg2, &sp14);
|
|
}
|
|
|
|
void fn_1_50C(omObjData *arg0) { }
|
|
|
|
void fn_1_510(omObjData *arg0)
|
|
{
|
|
arg0->func = fn_1_50C;
|
|
}
|
|
|
|
BOOL fn_1_520(s32 arg0)
|
|
{
|
|
return (GWPlayerCfg[arg0].character == 9);
|
|
}
|
|
|
|
void fn_1_550(void)
|
|
{
|
|
float var_f31;
|
|
float var_f30;
|
|
float var_f29;
|
|
UnkM445Struct_00 *temp_r26;
|
|
UnkM445Struct_01 *temp_r25;
|
|
UnkM445Struct_02 *temp_r31;
|
|
omObjData *temp_r24;
|
|
Process *var_r22;
|
|
AnimData *var_r20;
|
|
AnimData *sp38[4];
|
|
void *var_r29;
|
|
s16 var_r30;
|
|
s32 var_r23;
|
|
s32 var_r21;
|
|
Vec sp2C;
|
|
Vec sp20;
|
|
s32 i;
|
|
s32 j;
|
|
|
|
nMap = 0;
|
|
HuAudSndGrpSet(0x47);
|
|
sp2C.x = 0.0f;
|
|
sp2C.y = 998.0f;
|
|
sp2C.z = 1551.0f;
|
|
sp20.x = 0.0f;
|
|
sp20.y = -0.5f;
|
|
sp20.z = -1.0f;
|
|
HuAudFXListnerSetEX(&sp2C, &sp20, 10000.0f, 0.5666667f, 0.0f, 300.0f, 300.0f);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 24), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
Hu3DModelLayerSet(var_r30, 0);
|
|
Hu3DModelShadowMapSet(var_r30);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 25), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
|
temp_r24 = omAddObjEx(lbl_1_bss_54, 0x100, 1, 0, -1, fn_1_510);
|
|
MapObject[nMap++] = temp_r24;
|
|
temp_r24->model[0] = var_r30;
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 26), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
Hu3DModelLayerSet(var_r30, 0);
|
|
Hu3DModelShadowSet(var_r30);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 27), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
Hu3DModelLayerSet(var_r30, 0);
|
|
Hu3DModelShadowMapSet(var_r30);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 28), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
|
temp_r24 = omAddObjEx(lbl_1_bss_54, 0x100, 1, 0, -1, fn_1_510);
|
|
MapObject[nMap++] = temp_r24;
|
|
temp_r24->model[0] = var_r30;
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 100), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
lbl_1_bss_6E0 = Hu3DModelCreate(var_r29);
|
|
Hu3DModelAttrSet(lbl_1_bss_6E0, HU3D_ATTR_DISPOFF);
|
|
for (i = 0; i < 8; i++) {
|
|
temp_r26 = &lbl_1_bss_288[i];
|
|
temp_r26->unk14 = i;
|
|
temp_r26->unk30 = 0;
|
|
var_r23 = DATA_MAKE_NUM(DATADIR_M445, 38 + i * 5);
|
|
var_r29 = HuDataSelHeapReadNum(var_r23, MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
temp_r26->unk00 = var_r30;
|
|
for (j = 0, var_r23++; j < 3; j++) {
|
|
var_r29 = HuDataSelHeapReadNum(var_r23++, MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
temp_r26->unk02[j] = Hu3DJointMotion(var_r30, var_r29);
|
|
}
|
|
Hu3DModelShadowSet(var_r30);
|
|
Hu3DMotionSet(var_r30, temp_r26->unk02[0]);
|
|
Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP);
|
|
temp_r26->unk48 = lbl_1_data_110[i][0];
|
|
temp_r26->unk4C = lbl_1_data_110[i][1];
|
|
temp_r26->unk50[0] = lbl_1_data_90[i][0];
|
|
temp_r26->unk58[0] = lbl_1_data_90[i][1];
|
|
temp_r26->unk50[1] = lbl_1_data_D0[i][0];
|
|
temp_r26->unk58[1] = lbl_1_data_D0[i][1];
|
|
if (i == 5) {
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 81), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
lbl_1_bss_6E2 = Hu3DJointMotion(var_r30, var_r29);
|
|
Hu3DMotionSet(var_r30, lbl_1_bss_6E2);
|
|
Hu3DMotionTimeSet(var_r30, 61.0f);
|
|
Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_PAUSE);
|
|
}
|
|
if (i == 6) {
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 78), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
temp_r26->unk0E = Hu3DJointMotion(var_r30, var_r29);
|
|
}
|
|
if (i == 7) {
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 79), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
temp_r26->unk0E = Hu3DJointMotion(var_r30, var_r29);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 80), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
temp_r26->unk10 = Hu3DJointMotion(var_r30, var_r29);
|
|
}
|
|
temp_r26->unk18 = nMap;
|
|
var_r29 = HuDataSelHeapReadNum(var_r23, MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
|
temp_r24 = MapObject[nMap++] = omAddObjEx(lbl_1_bss_54, 0x100, 1, 0, -1, fn_1_510);
|
|
temp_r24->model[0] = var_r30;
|
|
temp_r24->trans.x = temp_r26->unk48;
|
|
temp_r24->trans.y = 0.0f;
|
|
temp_r24->trans.z = temp_r26->unk4C;
|
|
var_r22 = HuPrcChildCreate(fn_1_1C64, 0x2000, 0x2000, 0, HuPrcCurrentGet());
|
|
var_r22->user_data = temp_r26;
|
|
}
|
|
HuPrcChildCreate(fn_1_1B0C, 0x2000, 0x2000, 0, HuPrcCurrentGet());
|
|
for (i = 0; i < 10; i++) {
|
|
temp_r25 = &lbl_1_bss_58[i];
|
|
temp_r25->unk2C = i;
|
|
temp_r25->unk30 = -1;
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 82), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
temp_r25->unk00 = var_r30;
|
|
for (j = 0; j < 4; j++) {
|
|
var_r29 = HuDataSelHeapReadNum(j + DATA_MAKE_NUM(DATADIR_M445, 83), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
temp_r25->unk08[j] = Hu3DJointMotion(var_r30, var_r29);
|
|
}
|
|
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 82), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
temp_r25->unk04 = var_r30;
|
|
for (j = 0; j < 4; j++) {
|
|
var_r29 = HuDataSelHeapReadNum(j + DATA_MAKE_NUM(DATADIR_M445, 87), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
temp_r25->unk08[j + 4] = Hu3DJointMotion(var_r30, var_r29);
|
|
}
|
|
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 91), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
temp_r25->unk02 = var_r30;
|
|
for (j = 0; j < 4; j++) {
|
|
var_r29 = HuDataSelHeapReadNum(j + DATA_MAKE_NUM(DATADIR_M445, 92), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
temp_r25->unk08[j + 8] = Hu3DJointMotion(var_r30, var_r29);
|
|
}
|
|
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 91), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
temp_r25->unk06 = var_r30;
|
|
for (j = 0; j < 4; j++) {
|
|
var_r29 = HuDataSelHeapReadNum(j + DATA_MAKE_NUM(DATADIR_M445, 96), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
temp_r25->unk08[j + 12] = Hu3DJointMotion(var_r30, var_r29);
|
|
}
|
|
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
|
}
|
|
for (i = 0; i < 2; i++) {
|
|
temp_r31 = &lbl_1_bss_588[i];
|
|
temp_r31->unk18 = i;
|
|
temp_r31->unk1C = i;
|
|
temp_r31->unk20 = GWPlayerCfg[i].pad_idx;
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
temp_r31->unk00 = CharModelCreate(lbl_1_data_0[GWPlayerCfg[i].character], 2);
|
|
}
|
|
else {
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 29), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
temp_r31->unk00 = Hu3DModelCreate(var_r29);
|
|
}
|
|
Hu3DModelLayerSet(temp_r31->unk00, 0);
|
|
CharModelStepTypeSet(lbl_1_data_0[GWPlayerCfg[i].character], 1);
|
|
CharModelLayerSetAll(3);
|
|
temp_r31->unk48 = temp_r31->unk50 = 0.0f;
|
|
if (i != 0) {
|
|
var_f31 = temp_r31->unk4C = fn_1_1858(-90.0f);
|
|
}
|
|
else {
|
|
temp_r31->unk4C = var_f31 = 90.0f;
|
|
}
|
|
temp_r31->unk60 = temp_r31->unk4C;
|
|
if (i != 0) {
|
|
var_f30 = temp_r31->unk34 = 160.0f;
|
|
}
|
|
else {
|
|
var_f30 = temp_r31->unk34 = -160.0f;
|
|
}
|
|
temp_r31->unk38 = 0.0f;
|
|
if (i != 0) {
|
|
var_f29 = temp_r31->unk3C = -45.0f;
|
|
}
|
|
else {
|
|
var_f29 = temp_r31->unk3C = 45.0f;
|
|
}
|
|
temp_r31->unk54 = 50.0f;
|
|
temp_r31->unk5C = temp_r31->unk58 = 0.0f;
|
|
HuSetVecF(&temp_r31->unk70, 0.0, 0.0, 0.0);
|
|
Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk34, temp_r31->unk38, temp_r31->unk3C);
|
|
Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50);
|
|
Hu3DModelShadowSet(temp_r31->unk00);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 37), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
temp_r31->unk06 = var_r30;
|
|
Hu3DModelLayerSet(var_r30, 0);
|
|
Hu3DModelShadowSet(var_r30);
|
|
Hu3DModelPosSet(var_r30, lbl_1_data_60[i].x, lbl_1_data_60[i].y, lbl_1_data_60[i].z);
|
|
Hu3DModelRotSet(var_r30, lbl_1_data_78[i].x, lbl_1_data_78[i].y, lbl_1_data_78[i].z);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 101), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
var_r30 = Hu3DModelCreate(var_r29);
|
|
temp_r31->unk02 = var_r30;
|
|
Hu3DMotionSpeedSet(var_r30, 1.4f);
|
|
Hu3DModelLayerSet(var_r30, 1);
|
|
Hu3DModelAttrSet(var_r30, HU3D_ATTR_DISPOFF);
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
for (j = 0; j < 8; j++) {
|
|
var_r21 = lbl_1_data_40[j];
|
|
if ((var_r21 & ~0xFFFF) == DATADIR_M445) {
|
|
var_r21 += GWPlayerCfg[i].character;
|
|
}
|
|
temp_r31->unk08[j] = CharModelMotionCreate(lbl_1_data_0[GWPlayerCfg[i].character], var_r21);
|
|
}
|
|
CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk08[0]);
|
|
}
|
|
else {
|
|
for (j = 0; j < 7; j++) {
|
|
var_r29 = HuDataSelHeapReadNum(j + DATA_MAKE_NUM(DATADIR_M445, 30), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
temp_r31->unk08[j] = Hu3DJointMotion(temp_r31->unk00, var_r29);
|
|
}
|
|
Hu3DMotionSet(temp_r31->unk00, temp_r31->unk08[0]);
|
|
CharModelEffectNpcInit(temp_r31->unk00, temp_r31->unk08[1], 0, 9);
|
|
CharModelEffectNpcInit(temp_r31->unk00, temp_r31->unk08[2], 1, 9);
|
|
}
|
|
Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP);
|
|
if (i == 0) {
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 22), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
sp38[0] = HuSprAnimRead(var_r29);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 23), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
sp38[1] = HuSprAnimRead(var_r29);
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 51), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
sp38[3] = HuSprAnimRead(var_r29);
|
|
}
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
var_r29 = HuDataSelHeapReadNum(GWPlayerCfg[i].character + DATADIR_MGCONST, MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
}
|
|
else {
|
|
var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M445, 102), MEMORY_DEFAULT_NUM, HEAP_DATA);
|
|
}
|
|
sp38[2] = HuSprAnimRead(var_r29);
|
|
temp_r31->unk04 = HuSprGrpCreate(5);
|
|
var_r30 = HuSprCreate(sp38[0], 0x1000, 0);
|
|
HuSprGrpMemberSet(temp_r31->unk04, 0, var_r30);
|
|
HuSprPosSet(temp_r31->unk04, 0, 0.0f, 0.0f);
|
|
var_r30 = HuSprCreate(sp38[1], 0x1001, 0);
|
|
HuSprGrpMemberSet(temp_r31->unk04, 1, var_r30);
|
|
HuSprPosSet(temp_r31->unk04, 1, 0.0f, 0.0f);
|
|
HuSprTPLvlSet(temp_r31->unk04, 1, 0.5f);
|
|
HuSprColorSet(temp_r31->unk04, 1, 0, 0, 0);
|
|
var_r30 = HuSprCreate(sp38[2], 0x1000, 0);
|
|
HuSprGrpMemberSet(temp_r31->unk04, 2, var_r30);
|
|
HuSprPosSet(temp_r31->unk04, 2, -36.0f, -2.0f);
|
|
var_r30 = HuSprCreate(sp38[3], 0x1000, 0);
|
|
HuSprGrpMemberSet(temp_r31->unk04, 3, var_r30);
|
|
HuSprPosSet(temp_r31->unk04, 3, 16.0f, 2.0f);
|
|
var_r30 = HuSprCreate(sp38[3], 0x1000, 0);
|
|
HuSprGrpMemberSet(temp_r31->unk04, 4, var_r30);
|
|
HuSprPosSet(temp_r31->unk04, 4, -4.0f, 2.0f);
|
|
HuSprAttrSet(temp_r31->unk04, 4, 4);
|
|
HuSprGrpPosSet(temp_r31->unk04, i * 438 + 73, 61.0f);
|
|
temp_r31->unk30 = 0;
|
|
fn_1_5664(temp_r31, temp_r31->unk30);
|
|
fn_1_55F0();
|
|
CharModelMotionDataClose(lbl_1_data_0[GWPlayerCfg[i].character]);
|
|
var_r22 = HuPrcChildCreate(fn_1_6268, 0x2000, 0x3000, 0, HuPrcCurrentGet());
|
|
var_r22->user_data = temp_r31;
|
|
}
|
|
var_r20 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 3), MEMORY_DEFAULT_NUM));
|
|
var_r30 = Hu3DParticleCreate(var_r20, 3);
|
|
Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f);
|
|
Hu3DModelLayerSet(var_r30, 4);
|
|
Hu3DParticleColSet(var_r30, 0xFF, 0xFF, 0xFF);
|
|
Hu3DParticleScaleSet(var_r30, 0.0f);
|
|
Hu3DParticleHookSet(var_r30, fn_1_7FC0);
|
|
HuDataDirClose(DATADIR_EFFECT);
|
|
lbl_1_bss_6C8 = 0;
|
|
lbl_1_bss_6CC[0] = frandmod(25);
|
|
lbl_1_bss_6CC[1] = frandmod(25) + 30;
|
|
lbl_1_bss_6CC[2] = 1000;
|
|
HuPrcChildCreate(fn_1_89B8, 0x1000, 0x1000, 0, HuPrcCurrentGet());
|
|
}
|
|
|
|
float fn_1_1858(float arg0)
|
|
{
|
|
while (arg0 >= 360.0f || arg0 < 0.0f) {
|
|
if (arg0 >= 360.0f) {
|
|
arg0 -= 360.0f;
|
|
}
|
|
if (arg0 < 0.0f) {
|
|
arg0 += 360.0f;
|
|
}
|
|
}
|
|
return arg0;
|
|
}
|
|
|
|
UnkM445Struct_01 *fn_1_18D8(void)
|
|
{
|
|
UnkM445Struct_01 *var_r30;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 10; i++) {
|
|
var_r30 = &lbl_1_bss_58[i];
|
|
if (var_r30->unk30 == -1) {
|
|
break;
|
|
}
|
|
}
|
|
if (i >= 10) {
|
|
var_r30 = NULL;
|
|
}
|
|
return var_r30;
|
|
}
|
|
|
|
void fn_1_1934(void)
|
|
{
|
|
UnkM445Struct_04 *var_r31;
|
|
|
|
var_r31 = HuPrcCurrentGet()->user_data;
|
|
HuMemDirectFree(var_r31);
|
|
}
|
|
|
|
void fn_1_1968(void)
|
|
{
|
|
float var_f31;
|
|
float var_f30;
|
|
UnkM445Struct_04 *temp_r31;
|
|
s32 i;
|
|
|
|
temp_r31 = HuPrcCurrentGet()->user_data;
|
|
HuPrcDestructorSet(fn_1_1934);
|
|
switch (temp_r31->unk04) {
|
|
case 0:
|
|
var_f31 = -140.0f / temp_r31->unk0C;
|
|
var_f30 = 0.0f / temp_r31->unk0C;
|
|
break;
|
|
default:
|
|
var_f31 = 0.0f;
|
|
var_f30 = 0.0f;
|
|
break;
|
|
}
|
|
for (i = temp_r31->unk0C; i != 0; i--) {
|
|
temp_r31->unk00->unk18 += var_f31;
|
|
temp_r31->unk00->unk20 += var_f30;
|
|
HuPrcVSleep();
|
|
}
|
|
while (temp_r31->unk08 == 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
for (i = temp_r31->unk0C; i != 0; i--) {
|
|
temp_r31->unk00->unk18 -= var_f31;
|
|
temp_r31->unk00->unk20 -= var_f30;
|
|
HuPrcVSleep();
|
|
}
|
|
HuPrcKill(HuPrcCurrentGet());
|
|
while (TRUE) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
s32 fn_1_1AD0(s32 arg0)
|
|
{
|
|
s32 var_r31;
|
|
|
|
if (arg0 < 20) {
|
|
var_r31 = 3;
|
|
}
|
|
else if (arg0 < 40) {
|
|
var_r31 = 4;
|
|
}
|
|
else {
|
|
var_r31 = 5;
|
|
}
|
|
return var_r31;
|
|
}
|
|
|
|
void fn_1_1B0C(void)
|
|
{
|
|
UnkM445Struct_00 *temp_r30;
|
|
s32 spC;
|
|
s32 sp8;
|
|
s32 var_r29;
|
|
s32 var_r28;
|
|
s32 i;
|
|
|
|
spC = -1;
|
|
sp8 = 0;
|
|
while (lbl_1_bss_6DC < 3) {
|
|
HuPrcVSleep();
|
|
}
|
|
while (TRUE) {
|
|
if (lbl_1_bss_6DC >= 4) {
|
|
break;
|
|
}
|
|
for (i = 0, var_r28 = 0; i < 8; i++) {
|
|
temp_r30 = &lbl_1_bss_288[i];
|
|
if (temp_r30->unk34 != 0) {
|
|
var_r28++;
|
|
}
|
|
}
|
|
if (var_r28 < fn_1_1AD0(lbl_1_bss_6D8 / 60)) {
|
|
var_r29 = frandmod(8) + 1;
|
|
i = 0;
|
|
while (TRUE) {
|
|
temp_r30 = &lbl_1_bss_288[i];
|
|
if (temp_r30->unk34 == 0) {
|
|
var_r29--;
|
|
}
|
|
if (var_r29 == 0) {
|
|
break;
|
|
}
|
|
i++;
|
|
if (i >= 8) {
|
|
i = 0;
|
|
}
|
|
}
|
|
temp_r30->unk34 = 1;
|
|
HuPrcSleep(60);
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
HuPrcKill(HuPrcCurrentGet());
|
|
while (TRUE) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
void fn_1_1C64(void)
|
|
{
|
|
UnkM445Struct_00 *temp_r31;
|
|
UnkM445Struct_01 *var_r25;
|
|
UnkM445Struct_01 *var_r29;
|
|
s32 var_r23;
|
|
s32 var_r26;
|
|
|
|
temp_r31 = HuPrcCurrentGet()->user_data;
|
|
temp_r31->unk1C = 0;
|
|
temp_r31->unk34 = 0;
|
|
while (TRUE) {
|
|
while (temp_r31->unk34 == 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
temp_r31->unk20[0] = temp_r31->unk20[1] = 0;
|
|
temp_r31->unk0C = 0;
|
|
if (temp_r31->unk14 == 5 || temp_r31->unk14 == 7) {
|
|
temp_r31->unk0C = 4;
|
|
}
|
|
var_r25 = fn_1_18D8();
|
|
var_r25->unk30 = temp_r31->unk14;
|
|
var_r25->unk34 = 0;
|
|
temp_r31->unk3C = var_r25->unk2C;
|
|
temp_r31->unk40 = -1;
|
|
if (lbl_1_bss_6CC[lbl_1_bss_6C8] < lbl_1_bss_6D8 / 60) {
|
|
temp_r31->unk38 = 1;
|
|
if (lbl_1_data_260[temp_r31->unk14] == 1) {
|
|
lbl_1_bss_6C8++;
|
|
}
|
|
if (temp_r31->unk14 == 5 || temp_r31->unk14 == 7) {
|
|
var_r25->unk28 = var_r25->unk04;
|
|
}
|
|
else {
|
|
var_r25->unk28 = var_r25->unk00;
|
|
}
|
|
}
|
|
else {
|
|
temp_r31->unk38 = 0;
|
|
if (temp_r31->unk14 == 5 || temp_r31->unk14 == 7) {
|
|
var_r25->unk28 = var_r25->unk06;
|
|
}
|
|
else {
|
|
var_r25->unk28 = var_r25->unk02;
|
|
}
|
|
temp_r31->unk0C += 8;
|
|
}
|
|
Hu3DModelAttrReset(var_r25->unk28, HU3D_ATTR_DISPOFF);
|
|
Hu3DModelHookSet(temp_r31->unk00, lbl_1_data_220[temp_r31->unk14][0], var_r25->unk28);
|
|
Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C]);
|
|
if (lbl_1_data_260[temp_r31->unk14] > 1) {
|
|
var_r29 = fn_1_18D8();
|
|
var_r29->unk30 = temp_r31->unk14;
|
|
var_r29->unk34 = 0;
|
|
temp_r31->unk40 = var_r29->unk2C;
|
|
if (lbl_1_bss_6CC[lbl_1_bss_6C8] < lbl_1_bss_6D8 / 60) {
|
|
lbl_1_bss_6C8++;
|
|
if (temp_r31->unk14 == 5 || temp_r31->unk14 == 7) {
|
|
var_r29->unk28 = var_r29->unk04;
|
|
}
|
|
else {
|
|
var_r29->unk28 = var_r29->unk00;
|
|
}
|
|
}
|
|
else {
|
|
if (temp_r31->unk14 == 5 || temp_r31->unk14 == 7) {
|
|
var_r29->unk28 = var_r29->unk06;
|
|
}
|
|
else {
|
|
var_r29->unk28 = var_r29->unk02;
|
|
}
|
|
}
|
|
Hu3DModelAttrReset(var_r29->unk28, HU3D_ATTR_DISPOFF);
|
|
Hu3DModelHookSet(temp_r31->unk00, lbl_1_data_220[temp_r31->unk14][1], var_r29->unk28);
|
|
Hu3DMotionSet(var_r29->unk28, var_r29->unk08[temp_r31->unk0C]);
|
|
}
|
|
temp_r31->unk1C = 1;
|
|
temp_r31->unk44 = 0;
|
|
switch (temp_r31->unk14) {
|
|
case 0:
|
|
case 1:
|
|
case 3:
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x751);
|
|
break;
|
|
case 6:
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x753);
|
|
break;
|
|
default:
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x752);
|
|
break;
|
|
}
|
|
if (temp_r31->unk14 == 7 && temp_r31->unk38 == 0) {
|
|
Hu3DMotionSet(temp_r31->unk00, temp_r31->unk0E);
|
|
}
|
|
else {
|
|
Hu3DMotionSet(temp_r31->unk00, temp_r31->unk02[1]);
|
|
}
|
|
Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_REV);
|
|
while (!Hu3DMotionEndCheck(temp_r31->unk00)) {
|
|
temp_r31->unk44++;
|
|
HuPrcVSleep();
|
|
}
|
|
if (lbl_1_bss_6DC >= 4) {
|
|
break;
|
|
}
|
|
if (temp_r31->unk14 == 7 && temp_r31->unk38 == 0) {
|
|
Hu3DMotionSet(temp_r31->unk00, temp_r31->unk10);
|
|
}
|
|
else if (temp_r31->unk14 == 6 && temp_r31->unk38 == 0) {
|
|
Hu3DMotionSet(temp_r31->unk00, temp_r31->unk0E);
|
|
}
|
|
else {
|
|
Hu3DMotionSet(temp_r31->unk00, temp_r31->unk02[2]);
|
|
}
|
|
var_r23 = 150;
|
|
Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C + 1]);
|
|
Hu3DModelAttrSet(var_r25->unk28, HU3D_MOTATTR_PAUSE);
|
|
if (temp_r31->unk14 == 6) {
|
|
HuPrcSleep(12);
|
|
Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV);
|
|
if (temp_r31->unk38 != 0) {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x758);
|
|
}
|
|
else {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x757);
|
|
}
|
|
}
|
|
if (temp_r31->unk14 == 7) {
|
|
HuPrcSleep(11);
|
|
Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV);
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x754);
|
|
Hu3DModelAttrReset(lbl_1_bss_6E0, HU3D_ATTR_DISPOFF);
|
|
Hu3DMotionTimeSet(lbl_1_bss_6E0, 0.0f);
|
|
}
|
|
while (!Hu3DMotionEndCheck(temp_r31->unk00)) {
|
|
temp_r31->unk44++;
|
|
HuPrcVSleep();
|
|
}
|
|
if (temp_r31->unk14 != 6) {
|
|
if (temp_r31->unk38 != 0) {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x758);
|
|
}
|
|
else {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x757);
|
|
}
|
|
Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV);
|
|
if (lbl_1_data_260[temp_r31->unk14] > 1) {
|
|
Hu3DMotionSet(var_r29->unk28, var_r29->unk08[temp_r31->unk0C + 1]);
|
|
Hu3DModelAttrReset(var_r29->unk28, HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_REV);
|
|
}
|
|
}
|
|
while (!Hu3DMotionEndCheck(var_r25->unk28)) {
|
|
HuPrcVSleep();
|
|
}
|
|
var_r25->unk34 = 1;
|
|
Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C + 2]);
|
|
Hu3DModelAttrSet(var_r25->unk28, HU3D_MOTATTR_LOOP);
|
|
if (lbl_1_data_260[temp_r31->unk14] > 1) {
|
|
var_r29->unk34 = 1;
|
|
Hu3DMotionSet(var_r29->unk28, var_r29->unk08[temp_r31->unk0C + 2]);
|
|
Hu3DModelAttrSet(var_r29->unk28, HU3D_MOTATTR_LOOP);
|
|
}
|
|
temp_r31->unk1C = 2;
|
|
var_r26 = var_r23;
|
|
while (TRUE) {
|
|
if (temp_r31->unk20[0] == 1) {
|
|
temp_r31->unk20[0] = 2;
|
|
Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C + 3]);
|
|
Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_LOOP);
|
|
if (temp_r31->unk38 != 0) {
|
|
if (temp_r31->unk28 != 0) {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75C);
|
|
}
|
|
else {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75A);
|
|
}
|
|
}
|
|
else {
|
|
if (temp_r31->unk28 != 0) {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75B);
|
|
}
|
|
else {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x759);
|
|
}
|
|
}
|
|
}
|
|
if (temp_r31->unk20[1] == 1) {
|
|
temp_r31->unk20[1] = 2;
|
|
Hu3DMotionSet(var_r29->unk28, var_r29->unk08[temp_r31->unk0C + 3]);
|
|
Hu3DModelAttrReset(var_r29->unk28, HU3D_MOTATTR_LOOP);
|
|
if (temp_r31->unk38 != 0) {
|
|
if (temp_r31->unk2C != 0) {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75C);
|
|
}
|
|
else {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75A);
|
|
}
|
|
}
|
|
else {
|
|
if (temp_r31->unk2C != 0) {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x75B);
|
|
}
|
|
else {
|
|
fn_1_4B8(temp_r31->unk48, temp_r31->unk4C, 0x759);
|
|
}
|
|
}
|
|
}
|
|
if (temp_r31->unk14 == 6 && temp_r31->unk20[0] == 2 && Hu3DMotionTimeGet(var_r25->unk28) == 12.0f) {
|
|
break;
|
|
}
|
|
if (lbl_1_data_260[temp_r31->unk14] > 1) {
|
|
if (var_r26 <= 0) {
|
|
break;
|
|
}
|
|
if (Hu3DMotionEndCheck(var_r25->unk28) && Hu3DMotionEndCheck(var_r29->unk28)) {
|
|
break;
|
|
}
|
|
}
|
|
else {
|
|
if (var_r26 <= 0) {
|
|
break;
|
|
}
|
|
if (Hu3DMotionEndCheck(var_r25->unk28)) {
|
|
break;
|
|
}
|
|
}
|
|
HuPrcVSleep();
|
|
var_r26--;
|
|
}
|
|
temp_r31->unk1C = 0;
|
|
var_r25->unk34 = 0;
|
|
if (temp_r31->unk14 != 6) {
|
|
if (temp_r31->unk20[0] == 0) {
|
|
Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C + 1]);
|
|
Hu3DMotionTimeSet(var_r25->unk28, Hu3DMotionMaxTimeGet(var_r25->unk28));
|
|
Hu3DMotionSpeedSet(var_r25->unk28, 2.0f);
|
|
Hu3DModelAttrSet(var_r25->unk28, HU3D_MOTATTR_REV);
|
|
Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_LOOP);
|
|
}
|
|
if (lbl_1_data_260[temp_r31->unk14] > 1 && temp_r31->unk20[1] == 0) {
|
|
var_r29->unk34 = 0;
|
|
Hu3DMotionSet(var_r29->unk28, var_r29->unk08[temp_r31->unk0C + 1]);
|
|
Hu3DMotionTimeSet(var_r29->unk28, Hu3DMotionMaxTimeGet(var_r29->unk28));
|
|
Hu3DMotionSpeedSet(var_r29->unk28, 2.0f);
|
|
Hu3DModelAttrSet(var_r29->unk28, HU3D_MOTATTR_REV);
|
|
Hu3DModelAttrReset(var_r29->unk28, HU3D_MOTATTR_LOOP);
|
|
}
|
|
if (lbl_1_data_260[temp_r31->unk14] > 1) {
|
|
while (!Hu3DMotionEndCheck(var_r25->unk28) || !Hu3DMotionEndCheck(var_r29->unk28)) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
else {
|
|
while (!Hu3DMotionEndCheck(var_r25->unk28)) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
}
|
|
Hu3DMotionSpeedSet(var_r25->unk28, 1.0f);
|
|
if (lbl_1_data_260[temp_r31->unk14] > 1) {
|
|
Hu3DMotionSpeedSet(var_r29->unk28, 1.0f);
|
|
}
|
|
Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_REV);
|
|
if (temp_r31->unk14 == 6 && temp_r31->unk20[0] == 0) {
|
|
HuPrcSleep(26);
|
|
Hu3DMotionSet(var_r25->unk28, var_r25->unk08[temp_r31->unk0C + 1]);
|
|
Hu3DMotionTimeSet(var_r25->unk28, Hu3DMotionMaxTimeGet(var_r25->unk28));
|
|
Hu3DMotionSpeedSet(var_r25->unk28, 2.0f);
|
|
Hu3DModelAttrSet(var_r25->unk28, HU3D_MOTATTR_REV);
|
|
Hu3DModelAttrReset(var_r25->unk28, HU3D_MOTATTR_LOOP);
|
|
}
|
|
while (!Hu3DMotionEndCheck(temp_r31->unk00)) {
|
|
HuPrcVSleep();
|
|
}
|
|
var_r25->unk30 = -1;
|
|
Hu3DModelAttrSet(var_r25->unk28, HU3D_ATTR_DISPOFF);
|
|
if (lbl_1_data_260[temp_r31->unk14] > 1) {
|
|
var_r29->unk30 = -1;
|
|
Hu3DModelAttrSet(var_r29->unk28, HU3D_ATTR_DISPOFF);
|
|
}
|
|
Hu3DModelHookReset(temp_r31->unk00);
|
|
Hu3DMotionSet(temp_r31->unk00, temp_r31->unk02[0]);
|
|
Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_LOOP);
|
|
temp_r31->unk34 = 0;
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
// identical to m411Dll/main.c::fn_1_5D58
|
|
s8 fn_1_2BF4(s32 arg0, s32 arg1)
|
|
{
|
|
UnkM445Struct_02 *temp_r31;
|
|
s8 var_r30;
|
|
|
|
temp_r31 = &lbl_1_bss_588[arg0];
|
|
if (!GWPlayerCfg[arg0].iscom) {
|
|
(arg1 != 0) ? (var_r30 = HuPadStkY[temp_r31->unk20]) : (var_r30 = HuPadStkX[temp_r31->unk20]);
|
|
}
|
|
else {
|
|
(arg1 != 0) ? (var_r30 = temp_r31->unk7D) : (var_r30 = temp_r31->unk7C);
|
|
}
|
|
return var_r30;
|
|
}
|
|
|
|
void fn_1_2CAC(Vec *arg0, float arg1, float arg2)
|
|
{
|
|
float temp_f29;
|
|
|
|
temp_f29 = sqrtf(arg0->x * arg0->x + arg0->z * arg0->z);
|
|
temp_f29 *= arg2;
|
|
arg0->x = temp_f29 * sind(arg1);
|
|
arg0->z = temp_f29 * cosd(arg1);
|
|
}
|
|
|
|
// similar to m414Dll/main.c::fn_1_5554
|
|
// TODO: update other files (m414 and m411).
|
|
s8 fn_1_2E68(s32 arg0, s32 arg1)
|
|
{
|
|
UnkM445Struct_02 *temp_r31;
|
|
s8 var_r30;
|
|
|
|
temp_r31 = &lbl_1_bss_588[arg0];
|
|
var_r30 = 0;
|
|
if (!GWPlayerCfg[arg0].iscom && lbl_1_bss_6DC < 4) {
|
|
(arg1 != 0) ? (var_r30 = HuPadStkY[temp_r31->unk20]) : (var_r30 = HuPadStkX[temp_r31->unk20]);
|
|
}
|
|
else {
|
|
(arg1 != 0) ? (var_r30 = temp_r31->unk7D) : (var_r30 = temp_r31->unk7C);
|
|
}
|
|
return var_r30;
|
|
}
|
|
|
|
u8 fn_1_2F38(s32 arg0, s32 arg1)
|
|
{
|
|
UnkM445Struct_02 *temp_r31;
|
|
s8 var_r30;
|
|
|
|
temp_r31 = &lbl_1_bss_588[arg0];
|
|
var_r30 = 0;
|
|
if (lbl_1_bss_6DC < 4) {
|
|
if (!GWPlayerCfg[arg0].iscom) {
|
|
(arg1 != 0) ? (var_r30 = HuPadTrigR[temp_r31->unk20]) : (var_r30 = HuPadTrigL[temp_r31->unk20]);
|
|
}
|
|
else {
|
|
(arg1 != 0) ? (var_r30 = temp_r31->unk7E) : (var_r30 = temp_r31->unk7F);
|
|
}
|
|
}
|
|
return var_r30;
|
|
}
|
|
|
|
u16 fn_1_3010(s32 arg0)
|
|
{
|
|
UnkM445Struct_02 *temp_r31;
|
|
u16 var_r30;
|
|
|
|
temp_r31 = &lbl_1_bss_588[arg0];
|
|
var_r30 = 0;
|
|
if (lbl_1_bss_6DC < 4) {
|
|
if (!GWPlayerCfg[arg0].iscom) {
|
|
var_r30 = HuPadBtnDown[temp_r31->unk20];
|
|
}
|
|
else {
|
|
var_r30 = temp_r31->unk82;
|
|
}
|
|
}
|
|
return var_r30;
|
|
}
|
|
|
|
u16 fn_1_3094(s32 arg0)
|
|
{
|
|
UnkM445Struct_02 *temp_r31;
|
|
u16 var_r30;
|
|
|
|
temp_r31 = &lbl_1_bss_588[arg0];
|
|
if (lbl_1_bss_6DC < 4) {
|
|
if (!GWPlayerCfg[arg0].iscom) {
|
|
var_r30 = HuPadBtn[temp_r31->unk20];
|
|
}
|
|
else {
|
|
var_r30 = temp_r31->unk80;
|
|
}
|
|
}
|
|
return var_r30;
|
|
}
|
|
|
|
s32 fn_1_3114(UnkM445Struct_02 *arg0, float arg1, float arg2, float arg3)
|
|
{
|
|
Vec sp30;
|
|
Vec sp24;
|
|
Vec sp18;
|
|
s32 var_r28;
|
|
float var_f27;
|
|
float var_f28;
|
|
UnkM445Struct_02 *temp_r31;
|
|
s32 i;
|
|
|
|
var_r28 = -1;
|
|
for (i = 0, var_f28 = 10000.0f; i < 2; i++) {
|
|
if (i == arg0->unk18) {
|
|
continue;
|
|
}
|
|
temp_r31 = &lbl_1_bss_588[i];
|
|
HuSetVecF(&sp30, arg1, arg2, arg3);
|
|
HuSetVecF(&sp24, temp_r31->unk34, temp_r31->unk38, temp_r31->unk3C);
|
|
HuSubVecF(&sp18, &sp30, &sp24);
|
|
if ((var_f27 = sqrtf(sp18.x * sp18.x + sp18.y * sp18.y + sp18.z * sp18.z)) < arg0->unk54 + temp_r31->unk54 && var_f27 < var_f28) {
|
|
var_f28 = var_f27;
|
|
var_r28 = i;
|
|
}
|
|
}
|
|
return var_r28;
|
|
}
|
|
|
|
s32 fn_1_3334(UnkM445Struct_02 *arg0, s32 *arg1)
|
|
{
|
|
Vec sp30;
|
|
Vec sp24;
|
|
Vec sp18;
|
|
float var_f27;
|
|
float var_f28;
|
|
UnkM445Struct_02 *temp_r31;
|
|
s32 var_r27;
|
|
s32 var_r28;
|
|
s32 i;
|
|
|
|
var_r27 = -1;
|
|
for (i = 0, var_f28 = 10000.0f, var_r28 = 0; i < 2; i++) {
|
|
if (i == arg0->unk18) {
|
|
continue;
|
|
}
|
|
temp_r31 = &lbl_1_bss_588[i];
|
|
HuSetVecF(&sp30, arg0->unk34, arg0->unk38, arg0->unk3C);
|
|
HuSetVecF(&sp24, temp_r31->unk34, temp_r31->unk38, temp_r31->unk3C);
|
|
HuSubVecF(&sp18, &sp30, &sp24);
|
|
if ((var_f27 = sqrtf(sp18.x * sp18.x + sp18.y * sp18.y + sp18.z * sp18.z)) < arg0->unk54 + temp_r31->unk54) {
|
|
var_r28++;
|
|
if (var_f27 < var_f28) {
|
|
var_f28 = var_f27;
|
|
var_r27 = i;
|
|
}
|
|
}
|
|
}
|
|
*arg1 = var_r28;
|
|
return var_r27;
|
|
}
|
|
|
|
void fn_1_3548(UnkM445Struct_02 *arg0)
|
|
{
|
|
Vec spA8;
|
|
Vec sp9C;
|
|
Vec sp90;
|
|
s32 sp68;
|
|
s32 var_r25;
|
|
s32 temp_r24;
|
|
float sp64;
|
|
float sp60;
|
|
float sp5C;
|
|
float sp58;
|
|
float sp54;
|
|
float sp50;
|
|
float sp4C;
|
|
float var_f20;
|
|
float var_f27;
|
|
float var_f26;
|
|
float var_f25;
|
|
UnkM445Struct_02 *var_r30;
|
|
UnkM445Struct_02 *temp_r27;
|
|
s32 i;
|
|
|
|
temp_r24 = fn_1_3334(arg0, &sp68);
|
|
if (temp_r24 == -1) {
|
|
return;
|
|
}
|
|
var_f20 = fn_1_1858(atan2d(arg0->unk34 - arg0->unk40, arg0->unk3C - arg0->unk44));
|
|
sp58 = var_f27 = arg0->unk40;
|
|
sp54 = var_f26 = arg0->unk44;
|
|
sp4C = 1.0f;
|
|
var_r25 = 1.0f + 10.0f / sp4C;
|
|
while (var_r25 != 0) {
|
|
var_f27 += sp4C * sind(var_f20);
|
|
var_f26 += sp4C * cosd(var_f20);
|
|
HuSetVecF(&spA8, var_f27, arg0->unk38, var_f26);
|
|
for (i = 0; i < 2; i++) {
|
|
if (i != arg0->unk18) {
|
|
var_r30 = &lbl_1_bss_588[i];
|
|
HuSetVecF(&sp9C, var_r30->unk34, var_r30->unk38, var_r30->unk3C);
|
|
HuSubVecF(&sp90, &spA8, &sp9C);
|
|
if (sqrtf(sp90.x * sp90.x + sp90.y * sp90.y + sp90.z * sp90.z) < arg0->unk54 + var_r30->unk54) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (i < 2) {
|
|
break;
|
|
}
|
|
AddX = 0.0f;
|
|
AddZ = 0.0f;
|
|
MapWall(arg0->unk54, var_f27, arg0->unk38 + arg0->unk54, var_f26);
|
|
if (AddX + AddZ != 0.0f) {
|
|
goto block_end;
|
|
}
|
|
sp58 = var_f27;
|
|
sp54 = var_f26;
|
|
var_r25--;
|
|
}
|
|
var_f20 = fn_1_1858(atan2d(arg0->unk34 - arg0->unk40, arg0->unk3C - arg0->unk44));
|
|
var_f25 = fn_1_1858(atan2d(var_r30->unk34 - arg0->unk40, var_r30->unk3C - arg0->unk44));
|
|
sp60 = var_f20 - var_f25;
|
|
if (sp60 > 0.0f) {
|
|
sp5C = -0.5f;
|
|
}
|
|
else {
|
|
sp5C = 0.5f;
|
|
}
|
|
if (ABS_INV(var_f20 - var_f25) > 180.0f) {
|
|
sp5C = -sp5C;
|
|
}
|
|
var_f25 = fn_1_1858(atan2d(arg0->unk40 - var_r30->unk34, arg0->unk44 - var_r30->unk3C));
|
|
sp50 = 0.8f * arg0->unk58;
|
|
temp_r24 = var_r30->unk18;
|
|
sp64 = arg0->unk54 + var_r30->unk54 + 1.0f;
|
|
while (TRUE) {
|
|
var_f27 = var_r30->unk34 + sp64 * sind(var_f25);
|
|
var_f26 = var_r30->unk3C + sp64 * cosd(var_f25);
|
|
HuSetVecF(&spA8, var_f27, 0.0, var_f26);
|
|
for (i = 0; i < 2; i++) {
|
|
if (i != arg0->unk18 && i != temp_r24) {
|
|
temp_r27 = &lbl_1_bss_588[i];
|
|
HuSetVecF(&sp9C, temp_r27->unk34, 0.0, temp_r27->unk3C);
|
|
HuSubVecF(&sp90, &spA8, &sp9C);
|
|
if (sqrtf(sp90.x * sp90.x + sp90.z * sp90.z) < arg0->unk54 + temp_r27->unk54) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (i < 2) {
|
|
break;
|
|
}
|
|
AddX = 0.0f;
|
|
AddZ = 0.0f;
|
|
MapWall(arg0->unk54, var_f27, arg0->unk38 + arg0->unk54, var_f26);
|
|
if (AddX + AddZ >= 5.0f) {
|
|
break;
|
|
}
|
|
sp58 = var_f27;
|
|
sp54 = var_f26;
|
|
HuSetVecF(&spA8, arg0->unk40, 0.0, arg0->unk44);
|
|
HuSetVecF(&sp9C, var_f27, 0.0, var_f26);
|
|
HuSubVecF(&sp90, &spA8, &sp9C);
|
|
if (sqrtf(sp90.x * sp90.x + sp90.z * sp90.z) > sp50) {
|
|
break;
|
|
}
|
|
var_f25 += sp5C;
|
|
}
|
|
block_end:
|
|
arg0->unk34 = sp58;
|
|
arg0->unk3C = sp54;
|
|
}
|
|
|
|
float fn_1_42A0(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;
|
|
}
|
|
|
|
BOOL fn_1_43A4(UnkM445Struct_02 *arg0, float arg1, float arg2)
|
|
{
|
|
Vec sp2C;
|
|
Vec sp20;
|
|
Vec sp14;
|
|
BOOL var_r30;
|
|
|
|
var_r30 = FALSE;
|
|
HuSetVecF(&sp2C, arg0->unk34 + 120.0 * sind(arg0->unk4C), 0.0, arg0->unk3C + 120.0 * cosd(arg0->unk4C));
|
|
HuSetVecF(&sp20, arg1, 0.0, arg2);
|
|
HuSubVecF(&sp14, &sp2C, &sp20);
|
|
if (sqrtf(sp14.x * sp14.x + sp14.z * sp14.z) < 80.0f) {
|
|
var_r30 = TRUE;
|
|
}
|
|
return var_r30;
|
|
}
|
|
|
|
void fn_1_45D0(UnkM445Struct_02 *arg0)
|
|
{
|
|
Vec spC8;
|
|
Vec spBC;
|
|
Vec spB0;
|
|
float sp64;
|
|
float sp60;
|
|
float sp5C;
|
|
float sp58;
|
|
float sp54;
|
|
float var_f24;
|
|
UnkM445Struct_00 *temp_r30;
|
|
UnkM445Struct_02 *var_r28;
|
|
u32 var_r27;
|
|
s32 i;
|
|
|
|
arg0->unk7C = arg0->unk7D = 0;
|
|
arg0->unk7F = arg0->unk7E = 0;
|
|
arg0->unk80 = arg0->unk82 = 0;
|
|
if (arg0->unk18 != 0) {
|
|
var_r28 = &lbl_1_bss_588[0];
|
|
}
|
|
else {
|
|
var_r28 = &lbl_1_bss_588[1];
|
|
}
|
|
switch (GWPlayerCfg[arg0->unk18].diff) {
|
|
case 0:
|
|
var_r27 = 90;
|
|
sp58 = 90.0f;
|
|
sp54 = 0.4f;
|
|
break;
|
|
case 1:
|
|
var_r27 = 95;
|
|
sp58 = 60.0f;
|
|
sp54 = 0.6f;
|
|
break;
|
|
case 2:
|
|
var_r27 = 99;
|
|
sp58 = 30.0f;
|
|
sp54 = 0.8f;
|
|
break;
|
|
default:
|
|
var_r27 = 100;
|
|
sp58 = 10.0f;
|
|
sp54 = 1.0f;
|
|
break;
|
|
}
|
|
for (i = 0, sp5C = 10000.0f; i < 8; i++) {
|
|
temp_r30 = &lbl_1_bss_288[i];
|
|
if (temp_r30->unk1C >= 1 && !(temp_r30->unk44 < sp58)) {
|
|
HuSetVecF(&spC8, arg0->unk34, 0.0, arg0->unk3C);
|
|
HuSetVecF(&spBC, temp_r30->unk48, 0.0, temp_r30->unk4C);
|
|
HuSubVecF(&spB0, &spC8, &spBC);
|
|
var_f24 = sqrtf(spB0.x * spB0.x + spB0.z * spB0.z);
|
|
sp60 = sqrtf(arg0->unk34 * arg0->unk34 + arg0->unk3C * arg0->unk3C);
|
|
if (sp60 < 200.0f) {
|
|
sp60 = 400.0f;
|
|
}
|
|
else {
|
|
sp60 = 600.0f;
|
|
}
|
|
if (sp5C > var_f24 && var_f24 < sp60) {
|
|
HuSetVecF(&spC8, var_r28->unk34, 0.0, var_r28->unk3C);
|
|
HuSetVecF(&spBC, temp_r30->unk48, 0.0, temp_r30->unk4C);
|
|
HuSubVecF(&spB0, &spC8, &spBC);
|
|
if (sqrtf(spB0.x * spB0.x + spB0.z * spB0.z) > 50.0f) {
|
|
arg0->unk98 = i;
|
|
sp5C = var_f24;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (arg0->unk98 == -1) {
|
|
for (i = 0, sp5C = 10000.0f; i < 8; i++) {
|
|
temp_r30 = &lbl_1_bss_288[i];
|
|
HuSetVecF(&spC8, arg0->unk34, 0.0, arg0->unk3C);
|
|
HuSetVecF(&spBC, temp_r30->unk48, 0.0, temp_r30->unk4C);
|
|
HuSubVecF(&spB0, &spC8, &spBC);
|
|
var_f24 = sqrtf(spB0.x * spB0.x + spB0.z * spB0.z);
|
|
if (sp5C > var_f24 && var_f24 > 200.0f) {
|
|
arg0->unk98 = i;
|
|
sp5C = var_f24;
|
|
sp54 = 0.3f;
|
|
}
|
|
}
|
|
}
|
|
if (arg0->unk98 != -1) {
|
|
temp_r30 = &lbl_1_bss_288[arg0->unk98];
|
|
arg0->unk84 = temp_r30->unk48;
|
|
arg0->unk88 = temp_r30->unk4C;
|
|
HuSetVecF(&spC8, arg0->unk34, 0.0, arg0->unk3C);
|
|
HuSetVecF(&spBC, arg0->unk84, 0.0, arg0->unk88);
|
|
HuSubVecF(&spB0, &spC8, &spBC);
|
|
var_f24 = sqrtf(spB0.x * spB0.x + spB0.z * spB0.z);
|
|
if (var_f24 > 20.0f) {
|
|
sp64 = atan2d(arg0->unk84 - arg0->unk34, arg0->unk88 - arg0->unk3C);
|
|
arg0->unk7C = 50.0 * sind(sp64) * sp54;
|
|
arg0->unk7D = -50.0 * cosd(sp64) * sp54;
|
|
}
|
|
else {
|
|
if (temp_r30->unk1C == 2) {
|
|
for (i = 0; i < lbl_1_data_260[temp_r30->unk14]; i++) {
|
|
if (temp_r30->unk20[i] == 0) {
|
|
sp64 = atan2d(temp_r30->unk50[i] - arg0->unk34, temp_r30->unk58[i] - arg0->unk3C);
|
|
arg0->unk7C = 15.0 * sind(sp64);
|
|
arg0->unk7D = -15.0 * cosd(sp64);
|
|
}
|
|
}
|
|
}
|
|
if (frandmod(100) > var_r27) {
|
|
arg0->unk82 |= 0x100;
|
|
}
|
|
arg0->unk98 = -1;
|
|
}
|
|
if (temp_r30->unk1C == 2) {
|
|
if (fn_1_43A4(arg0, temp_r30->unk50[0], temp_r30->unk58[0]) && temp_r30->unk20[0] == 0) {
|
|
arg0->unk82 |= 0x100;
|
|
}
|
|
if (lbl_1_data_260[temp_r30->unk14] > 1 && fn_1_43A4(arg0, temp_r30->unk50[1], temp_r30->unk58[1]) && temp_r30->unk20[1] == 0) {
|
|
arg0->unk82 |= 0x100;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_557C(void)
|
|
{
|
|
s32 j;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 2; i++) {
|
|
for (j = 0; j < 5; j++) {
|
|
HuSprAttrReset(lbl_1_bss_588[i].unk04, j, HUSPR_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_55F0(void)
|
|
{
|
|
s32 j;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 2; i++) {
|
|
for (j = 0; j < 5; j++) {
|
|
HuSprAttrSet(lbl_1_bss_588[i].unk04, j, HUSPR_ATTR_DISPOFF);
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_5664(UnkM445Struct_02 *arg0, s32 arg1)
|
|
{
|
|
HuSprBankSet(arg0->unk04, 3, arg1 % 10);
|
|
HuSprBankSet(arg0->unk04, 4, arg1 / 10);
|
|
HuSprAttrReset(arg0->unk04, 4, HUSPR_ATTR_DISPOFF);
|
|
}
|
|
|
|
void fn_1_5700(UnkM445Struct_02 *arg0)
|
|
{
|
|
Vec sp38;
|
|
Vec sp2C;
|
|
Vec sp20;
|
|
float temp_f27;
|
|
float var_f26;
|
|
float var_f21;
|
|
float var_f20;
|
|
UnkM445Struct_02 *var_r27;
|
|
s32 i;
|
|
s32 var_r28;
|
|
|
|
if (lbl_1_bss_6DC == 4) {
|
|
arg0->unk28 = 1;
|
|
for (i = 10, var_f21 = 1.0f; i != 0; i--, var_f21 -= 0.1f) {
|
|
Hu3DModelScaleSet(arg0->unk06, var_f21, var_f21, var_f21);
|
|
HuPrcVSleep();
|
|
}
|
|
Hu3DModelAttrSet(arg0->unk06, HU3D_ATTR_DISPOFF);
|
|
arg0->unk06 = -1;
|
|
Hu3DMotionOverlayReset(arg0->unk00);
|
|
if (lbl_1_bss_588[0].unk06 == -1 && lbl_1_bss_588[1].unk06 == -1) {
|
|
lbl_1_bss_6DC = 5;
|
|
}
|
|
return;
|
|
}
|
|
Hu3DMotionOverlayReset(arg0->unk00);
|
|
arg0->unk7C = arg0->unk7D = 0;
|
|
arg0->unk7F = arg0->unk7E = 0;
|
|
arg0->unk80 = arg0->unk82 = 0;
|
|
var_r28 = 0;
|
|
if (arg0->unk18 == 0) {
|
|
if (arg0->unk34 <= -152.0f) {
|
|
arg0->unk84 = -230.0f;
|
|
arg0->unk88 = 45.0f;
|
|
var_r28 = 1;
|
|
}
|
|
else if (arg0->unk3C > 203.0f || arg0->unk3C < -203.0f) {
|
|
arg0->unk84 = -170.0f;
|
|
arg0->unk88 = arg0->unk3C;
|
|
}
|
|
else {
|
|
arg0->unk84 = arg0->unk34;
|
|
if (arg0->unk3C > 0.0f) {
|
|
arg0->unk88 = 210.0f;
|
|
}
|
|
else {
|
|
arg0->unk88 = -210.0f;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (arg0->unk34 >= 152.0f) {
|
|
arg0->unk84 = 230.0f;
|
|
arg0->unk88 = -45.0f;
|
|
var_r28 = 1;
|
|
}
|
|
else if (arg0->unk3C > 203.0f || arg0->unk3C < -203.0f) {
|
|
arg0->unk84 = 170.0f;
|
|
arg0->unk88 = arg0->unk3C;
|
|
}
|
|
else {
|
|
arg0->unk84 = arg0->unk34;
|
|
if (arg0->unk3C > 0.0f) {
|
|
arg0->unk88 = 210.0f;
|
|
}
|
|
else {
|
|
arg0->unk88 = -210.0f;
|
|
}
|
|
}
|
|
}
|
|
var_r27 = (arg0->unk18 != 0) ? &lbl_1_bss_588[0] : &lbl_1_bss_588[1];
|
|
HuSetVecF(&sp38, arg0->unk34, 0.0, arg0->unk3C);
|
|
HuSetVecF(&sp2C, var_r27->unk34, 0.0, var_r27->unk3C);
|
|
HuSubVecF(&sp20, &sp38, &sp2C);
|
|
var_f26 = sqrtf(sp20.x * sp20.x + sp20.z * sp20.z);
|
|
if (var_f26 <= 110.0f) {
|
|
var_f26 = sqrtf(arg0->unk34 * arg0->unk34 + arg0->unk3C * arg0->unk3C);
|
|
var_f20 = sqrtf(var_r27->unk34 * var_r27->unk34 + var_r27->unk3C * var_r27->unk3C);
|
|
if (lbl_1_bss_4 == -1) {
|
|
temp_f27 = atan2d(arg0->unk34, arg0->unk3C);
|
|
if (var_f26 < 400.0f) {
|
|
if (var_f26 > var_f20) {
|
|
lbl_1_bss_4 = arg0->unk18;
|
|
lbl_1_bss_0 = temp_f27;
|
|
arg0->unk84 = arg0->unk34 + 100.0 * sind(temp_f27);
|
|
arg0->unk88 = arg0->unk3C + 100.0 * cosd(temp_f27);
|
|
}
|
|
}
|
|
else {
|
|
if (var_f26 < var_f20) {
|
|
temp_f27 += 180.0f;
|
|
lbl_1_bss_4 = arg0->unk18;
|
|
lbl_1_bss_0 = temp_f27;
|
|
arg0->unk84 = arg0->unk34 + 100.0 * sind(temp_f27);
|
|
arg0->unk88 = arg0->unk3C + 100.0 * cosd(temp_f27);
|
|
}
|
|
}
|
|
}
|
|
else if (arg0->unk18 == lbl_1_bss_4) {
|
|
OSReport("pno %d dir %f\n", arg0->unk18, lbl_1_bss_0);
|
|
arg0->unk84 = arg0->unk34 + 100.0 * sind(lbl_1_bss_0);
|
|
arg0->unk88 = arg0->unk3C + 100.0 * cosd(lbl_1_bss_0);
|
|
}
|
|
}
|
|
HuSetVecF(&sp38, arg0->unk34, 0.0, arg0->unk3C);
|
|
HuSetVecF(&sp2C, arg0->unk84, 0.0, arg0->unk88);
|
|
HuSubVecF(&sp20, &sp38, &sp2C);
|
|
var_f26 = sqrtf(sp20.x * sp20.x + sp20.z * sp20.z);
|
|
if (var_f26 < 20.0f && var_r28 != 0) {
|
|
arg0->unk24 = 4;
|
|
}
|
|
temp_f27 = atan2d(arg0->unk84 - arg0->unk34, arg0->unk88 - arg0->unk3C);
|
|
arg0->unk7C = 50.0 * sind(temp_f27);
|
|
arg0->unk7D = -50.0 * cosd(temp_f27);
|
|
}
|
|
|
|
void fn_1_6268(void)
|
|
{
|
|
Vec sp1D8;
|
|
s32 sp120;
|
|
float sp11C;
|
|
float var_f19;
|
|
UnkM445Struct_02 *temp_r31;
|
|
UnkM445Struct_00 *temp_r30;
|
|
u32 var_r24;
|
|
s32 var_r26;
|
|
s32 var_r28;
|
|
s32 i;
|
|
|
|
temp_r31 = HuPrcCurrentGet()->user_data;
|
|
temp_r31->unk24 = 0;
|
|
temp_r31->unk90 = 0;
|
|
temp_r31->unk98 = -1;
|
|
temp_r31->unk28 = 1;
|
|
lbl_1_bss_4 = -1;
|
|
while (lbl_1_bss_6DC == 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
lbl_1_bss_6DC = 2;
|
|
while (lbl_1_bss_6DC == 2) {
|
|
HuPrcVSleep();
|
|
}
|
|
while (TRUE) {
|
|
temp_r31->unk40 = temp_r31->unk34;
|
|
temp_r31->unk44 = temp_r31->unk3C;
|
|
if (GWPlayerCfg[temp_r31->unk18].iscom == 1) {
|
|
fn_1_45D0(temp_r31);
|
|
}
|
|
if (lbl_1_bss_6DC >= 4) {
|
|
fn_1_5700(temp_r31);
|
|
}
|
|
switch (temp_r31->unk24) {
|
|
case 4:
|
|
goto block_exit_loop;
|
|
}
|
|
if (fn_1_3010(temp_r31->unk18) & 0x100) {
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
Hu3DMotionOverlayReset(temp_r31->unk00);
|
|
CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[5]);
|
|
}
|
|
else {
|
|
Hu3DMotionSet(temp_r31->unk00, temp_r31->unk08[4]);
|
|
Hu3DMotionSpeedSet(temp_r31->unk00, 1.0f);
|
|
}
|
|
Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP);
|
|
HuPrcSleep(15);
|
|
if (temp_r31->unk18 != 0) {
|
|
fn_1_4B8(temp_r31->unk34, temp_r31->unk3C, 0x75F);
|
|
}
|
|
else {
|
|
fn_1_4B8(temp_r31->unk34, temp_r31->unk3C, 0x75E);
|
|
}
|
|
HuPrcSleep(15);
|
|
HuSetVecF(&sp1D8, temp_r31->unk34 + 120.0 * sind(temp_r31->unk4C), 0.0, temp_r31->unk3C + 120.0 * cosd(temp_r31->unk4C));
|
|
for (i = 0; i < 8; i++) {
|
|
temp_r30 = &lbl_1_bss_288[i];
|
|
if (temp_r30->unk1C == 2) {
|
|
sp120 = 0;
|
|
if (fn_1_43A4(temp_r31, temp_r30->unk50[0], temp_r30->unk58[0]) && temp_r30->unk20[0] == 0) {
|
|
sp120 = 1;
|
|
temp_r30->unk20[0] = 1;
|
|
temp_r30->unk28 = temp_r31->unk18;
|
|
if (temp_r31->unk18 != 0) {
|
|
fn_1_4B8(temp_r30->unk48, temp_r30->unk4C, 0x75D);
|
|
}
|
|
else {
|
|
fn_1_4B8(temp_r30->unk48, temp_r30->unk4C, 0x750);
|
|
}
|
|
Hu3DModelAttrReset(temp_r31->unk02, HU3D_ATTR_DISPOFF);
|
|
Hu3DMotionTimeSet(temp_r31->unk02, 0.0f);
|
|
Hu3DModelPosSet(temp_r31->unk02, sp1D8.x, 160.0f, sp1D8.z + 100.0f);
|
|
if (temp_r30->unk38 != 0) {
|
|
temp_r31->unk30 += 2;
|
|
}
|
|
else {
|
|
temp_r31->unk30++;
|
|
}
|
|
fn_1_5664(temp_r31, temp_r31->unk30);
|
|
}
|
|
if (lbl_1_data_260[temp_r30->unk14] > 1 && fn_1_43A4(temp_r31, temp_r30->unk50[1], temp_r30->unk58[1])
|
|
&& temp_r30->unk20[1] == 0) {
|
|
temp_r30->unk20[1] = 1;
|
|
temp_r30->unk2C = temp_r31->unk18;
|
|
if (temp_r31->unk18 != 0) {
|
|
fn_1_4B8(temp_r30->unk48, temp_r30->unk4C, 0x75D);
|
|
}
|
|
else {
|
|
fn_1_4B8(temp_r30->unk48, temp_r30->unk4C, 0x750);
|
|
}
|
|
Hu3DModelAttrReset(temp_r31->unk02, HU3D_ATTR_DISPOFF);
|
|
Hu3DMotionTimeSet(temp_r31->unk02, 0.0f);
|
|
Hu3DModelPosSet(temp_r31->unk02, sp1D8.x, 160.0f, sp1D8.z + 100.0f);
|
|
if (temp_r30->unk38 != 0) {
|
|
temp_r31->unk30 += 2;
|
|
}
|
|
else {
|
|
temp_r31->unk30++;
|
|
}
|
|
fn_1_5664(temp_r31, temp_r31->unk30);
|
|
}
|
|
}
|
|
}
|
|
while (!Hu3DMotionEndCheck(temp_r31->unk00)) {
|
|
HuPrcVSleep();
|
|
}
|
|
temp_r31->unk24 = 0;
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[0]);
|
|
Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_OVL_LOOP);
|
|
if (lbl_1_bss_6DC < 5) {
|
|
Hu3DMotionOverlaySet(temp_r31->unk00, temp_r31->unk08[4]);
|
|
Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_OVL_LOOP);
|
|
}
|
|
}
|
|
else {
|
|
Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.0f);
|
|
}
|
|
}
|
|
else {
|
|
HuSetVecF(&sp1D8, fn_1_2E68(temp_r31->unk18, 0) / 4.0f, 0.0, -fn_1_2E68(temp_r31->unk18, 1) / 4.0f);
|
|
temp_r31->unk5C = sqrtf(sp1D8.x * sp1D8.x + sp1D8.y * sp1D8.y + sp1D8.z * sp1D8.z);
|
|
if (temp_r31->unk5C >= 0.5f) {
|
|
if (temp_r31->unk5C >= 10.0f) {
|
|
sp1D8.x /= temp_r31->unk5C;
|
|
sp1D8.z /= temp_r31->unk5C;
|
|
temp_r31->unk5C = 10.0f;
|
|
sp1D8.x = 10.0f * sp1D8.x;
|
|
sp1D8.z = 10.0f * sp1D8.z;
|
|
}
|
|
temp_r31->unk4C = fn_1_1858(fn_1_42A0(temp_r31->unk4C, atan2d(sp1D8.x, sp1D8.z), 0.4f));
|
|
if (temp_r31->unk5C >= 8.0f) {
|
|
if (temp_r31->unk24 != 2) {
|
|
temp_r31->unk24 = 2;
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
CharModelMotionShiftSet(
|
|
lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
if (lbl_1_bss_6DC < 5) {
|
|
Hu3DMotionOverlaySet(temp_r31->unk00, temp_r31->unk08[4]);
|
|
Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_OVL_LOOP);
|
|
}
|
|
}
|
|
else {
|
|
Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f);
|
|
}
|
|
}
|
|
}
|
|
else if (temp_r31->unk24 != 1) {
|
|
temp_r31->unk24 = 1;
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
CharModelMotionShiftSet(
|
|
lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
if (lbl_1_bss_6DC < 5) {
|
|
Hu3DMotionOverlaySet(temp_r31->unk00, temp_r31->unk08[4]);
|
|
Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_OVL_LOOP);
|
|
}
|
|
}
|
|
else {
|
|
Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[1], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
Hu3DMotionShiftSpeedSet(temp_r31->unk00, 2.0f);
|
|
}
|
|
}
|
|
}
|
|
else if (temp_r31->unk24 != 0) {
|
|
temp_r31->unk24 = 0;
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[0], 0.0f, 0.0f, HU3D_MOTATTR_LOOP);
|
|
if (lbl_1_bss_6DC < 5) {
|
|
Hu3DMotionOverlaySet(temp_r31->unk00, temp_r31->unk08[4]);
|
|
Hu3DModelAttrSet(temp_r31->unk00, HU3D_MOTATTR_OVL_LOOP);
|
|
}
|
|
}
|
|
else {
|
|
Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[0], 0.0f, 0.0f, HU3D_MOTATTR_LOOP);
|
|
Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.0f);
|
|
}
|
|
}
|
|
temp_r31->unk70.x = sp1D8.x;
|
|
temp_r31->unk70.z = sp1D8.z;
|
|
temp_r31->unk58 = temp_r31->unk5C;
|
|
temp_r31->unk34 += temp_r31->unk70.x;
|
|
temp_r31->unk3C += temp_r31->unk70.z;
|
|
}
|
|
if ((temp_r31->unk2C = fn_1_3114(temp_r31, temp_r31->unk34, temp_r31->unk38, temp_r31->unk3C)) != -1) {
|
|
fn_1_3548(temp_r31);
|
|
}
|
|
AddX = 0.0f;
|
|
AddZ = 0.0f;
|
|
MapWall(temp_r31->unk54, temp_r31->unk34, temp_r31->unk38 + temp_r31->unk54, temp_r31->unk3C);
|
|
temp_r31->unk34 += AddX;
|
|
temp_r31->unk3C += AddZ;
|
|
Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk34, temp_r31->unk38, temp_r31->unk3C);
|
|
Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50);
|
|
HuPrcVSleep();
|
|
}
|
|
block_exit_loop:
|
|
lbl_1_bss_6DC = 6;
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[0], 0.0f, 2.0f, HU3D_MOTATTR_LOOP);
|
|
}
|
|
else {
|
|
Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[0], 0.0f, 0.0f, HU3D_MOTATTR_LOOP);
|
|
Hu3DMotionShiftSpeedSet(temp_r31->unk00, 1.0f);
|
|
}
|
|
var_f19 = 10.0f;
|
|
i = (360.0f - fn_1_1858(temp_r31->unk4C)) / var_f19;
|
|
if (temp_r31->unk4C < 180.0f) {
|
|
i = fn_1_1858(temp_r31->unk4C) / var_f19;
|
|
var_f19 = -var_f19;
|
|
}
|
|
for (; i != 0; i--) {
|
|
temp_r31->unk4C += var_f19;
|
|
Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50);
|
|
HuPrcVSleep();
|
|
}
|
|
Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk48, 0.0f, temp_r31->unk50);
|
|
while (lbl_1_bss_6DC < 7) {
|
|
HuPrcVSleep();
|
|
}
|
|
if (lbl_1_bss_588->unk30 == lbl_1_bss_588[1].unk30) {
|
|
var_r26 = -1;
|
|
}
|
|
if (lbl_1_bss_588->unk30 < lbl_1_bss_588[1].unk30) {
|
|
var_r26 = 1;
|
|
}
|
|
if (lbl_1_bss_588->unk30 > lbl_1_bss_588[1].unk30) {
|
|
var_r26 = 0;
|
|
}
|
|
var_r24 = HU3D_MOTATTR_NONE;
|
|
if (temp_r31->unk18 != 0) {
|
|
if (fn_1_520(1) == FALSE) {
|
|
if (var_r26 != -1) {
|
|
HuAudSStreamPlay(1);
|
|
}
|
|
else {
|
|
HuAudSStreamPlay(4);
|
|
}
|
|
}
|
|
else {
|
|
if (var_r26 == 0) {
|
|
HuAudSStreamPlay(1);
|
|
}
|
|
else {
|
|
HuAudSStreamPlay(3);
|
|
}
|
|
}
|
|
}
|
|
if (var_r26 == -1) {
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
var_r28 = 7;
|
|
}
|
|
else {
|
|
var_r28 = 6;
|
|
}
|
|
}
|
|
else {
|
|
GWPlayerCoinWinSet(var_r26, 10);
|
|
if (var_r26 == temp_r31->unk18) {
|
|
var_r28 = 6;
|
|
}
|
|
else {
|
|
var_r28 = 7;
|
|
}
|
|
}
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[var_r28], 0.0f, 8.0f, var_r24);
|
|
}
|
|
else {
|
|
if (var_r28 == 6) {
|
|
var_r28 = 5;
|
|
var_r24 = HU3D_MOTATTR_LOOP;
|
|
}
|
|
else {
|
|
var_r28 = 6;
|
|
var_r24 = HU3D_MOTATTR_NONE;
|
|
}
|
|
Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[var_r28], 0.0f, 8.0f, var_r24);
|
|
if (var_r28 == 6) {
|
|
for (i = 10, sp11C = 30.0f / i; i != 0; i--) {
|
|
temp_r31->unk4C += sp11C;
|
|
Hu3DModelRotSet(temp_r31->unk00, 0.0f, temp_r31->unk4C, 0.0f);
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
}
|
|
while (TRUE) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
void fn_1_7FC0(ModelData *model, ParticleData *particle, Mtx matrix)
|
|
{
|
|
HsfanimStruct01 *var_r31;
|
|
UnkM445Struct_02 *temp_r29;
|
|
float var_f31;
|
|
s16 var_r27;
|
|
s16 var_r28;
|
|
|
|
if (particle->unk_34 == 0) {
|
|
var_r31 = particle->unk_48;
|
|
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
|
|
var_r31->unk14.x = var_r31->unk2C = 0.0f;
|
|
}
|
|
}
|
|
var_r31 = particle->unk_48;
|
|
for (var_r27 = 0; var_r27 < 2; var_r27++) {
|
|
temp_r29 = &lbl_1_bss_588[var_r27];
|
|
if (temp_r29->unk28 != 0) {
|
|
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
|
|
if (var_r31->unk14.x == 0.0f) {
|
|
break;
|
|
}
|
|
}
|
|
if (var_r28 == particle->unk_30) {
|
|
break;
|
|
}
|
|
var_r31->unk34.x = temp_r29->unk34 + 50.0 * sind(temp_r29->unk4C - 90.0f);
|
|
var_r31->unk34.y = temp_r29->unk38 + 98.0f;
|
|
var_r31->unk34.z = temp_r29->unk3C + 50.0 * cosd(temp_r29->unk4C - 90.0f);
|
|
var_r31->unk14.x = 30.0f;
|
|
var_r31->unk2C = 100.0f;
|
|
var_r31->unk14.y = 10.0f;
|
|
var_r31->unk40.a = 200;
|
|
var_r31->unk14.z = 17.0f;
|
|
temp_r29->unk28 = 0;
|
|
}
|
|
}
|
|
var_r31 = particle->unk_48;
|
|
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
|
|
if (0.0f != var_r31->unk14.x) {
|
|
var_r31->unk2C += var_r31->unk14.y;
|
|
if (var_r31->unk14.y > 2.0f) {
|
|
var_r31->unk14.y -= 0.2f;
|
|
}
|
|
var_f31 = var_r31->unk40.a;
|
|
var_f31 -= var_r31->unk14.z;
|
|
if (var_r31->unk14.z > 3.0f) {
|
|
var_r31->unk14.z -= 1.0f;
|
|
}
|
|
if (var_f31 < 0.0f) {
|
|
var_f31 = 0.0f;
|
|
var_r31->unk14.x = 0.0f;
|
|
}
|
|
var_r31->unk40.a = var_f31;
|
|
if (0.0f == var_r31->unk14.x) {
|
|
var_r31->unk2C = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_8320(void)
|
|
{
|
|
float sp20[2];
|
|
GXColor sp1C;
|
|
WindowData *var_r26;
|
|
UnkM445Struct_02 *temp_r31;
|
|
s16 temp_r25;
|
|
s16 var_r29;
|
|
u32 var_r27;
|
|
s32 temp_r28;
|
|
s32 var_r24;
|
|
s32 i;
|
|
|
|
HuPrcSleep(30);
|
|
HuAudFXPlay(0x755);
|
|
temp_r28 = lbl_1_bss_288[5].unk00;
|
|
Hu3DModelAttrReset(temp_r28, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE);
|
|
while (!Hu3DMotionEndCheck(temp_r28)) {
|
|
HuPrcVSleep();
|
|
}
|
|
HuAudFXPlay(0x756);
|
|
Hu3DMotionSet(temp_r28, lbl_1_bss_288[5].unk02[0]);
|
|
Hu3DModelAttrSet(temp_r28, HU3D_MOTATTR_LOOP);
|
|
HuPrcSleep(30);
|
|
for (i = 30; i != 0; i--) {
|
|
CRotM[0].x += -0.55f;
|
|
CenterM[0].y += -11.5f;
|
|
CZoomM[0] += 51.333332f;
|
|
HuPrcVSleep();
|
|
}
|
|
if (fn_1_520(1) == TRUE) {
|
|
temp_r25 = HuAudSeqPlay(0x3D);
|
|
HuWinMesMaxSizeGet(8, sp20, MAKE_MESSID(41, 1), MAKE_MESSID(41, 2), MAKE_MESSID(41, 3), MAKE_MESSID(41, 4), MAKE_MESSID(41, 5),
|
|
MAKE_MESSID(41, 6), MAKE_MESSID(41, 7), MAKE_MESSID(41, 8));
|
|
var_r29 = HuWinCreate(-10000.0f, 40.0f, sp20[0], sp20[1], 1);
|
|
HuWinPriSet(var_r29, 0x100);
|
|
sp1C.r = sp1C.g = sp1C.b = 0xFF;
|
|
HuWinBGColSet(var_r29, &sp1C);
|
|
HuWinBGTPLvlSet(var_r29, 0.9f);
|
|
HuWinMesColSet(var_r29, 0);
|
|
var_r26 = &winData[var_r29];
|
|
var_r26->mess_shadow_color = 9;
|
|
HuWinMesSpeedSet(var_r29, 0);
|
|
HuWinDisablePlayerSet(var_r29, (1 << GWPlayerCfg->pad_idx) ^ 0xF);
|
|
HuWinExAnimIn(var_r29);
|
|
HuWinMesSet(var_r29, MAKE_MESSID(41, 1));
|
|
HuWinMesWait(var_r29);
|
|
HuWinMesColSet(var_r29, 0);
|
|
HuWinMesSet(var_r29, MAKE_MESSID(41, 2));
|
|
var_r24 = HuWinChoiceGet(var_r29, 0);
|
|
if (var_r24 == 0) {
|
|
i = 5;
|
|
var_r27 = MAKE_MESSID(41, 3);
|
|
}
|
|
else {
|
|
i = 1;
|
|
var_r27 = MAKE_MESSID(41, 8);
|
|
}
|
|
for (; i != 0; i--) {
|
|
HuWinMesColSet(var_r29, 0);
|
|
HuWinMesSet(var_r29, var_r27++);
|
|
HuWinMesWait(var_r29);
|
|
}
|
|
HuAudSeqFadeOut(temp_r25, 1000);
|
|
HuWinExAnimOut(var_r29);
|
|
HuWinAllKill();
|
|
}
|
|
for (i = 0; i < 2; i++) {
|
|
temp_r31 = &lbl_1_bss_588[i];
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
CharModelMotionSet(lbl_1_data_0[GWPlayerCfg[i].character], temp_r31->unk08[3]);
|
|
}
|
|
else {
|
|
Hu3DMotionSet(temp_r31->unk00, temp_r31->unk08[3]);
|
|
}
|
|
Hu3DModelAttrReset(temp_r31->unk00, HU3D_MOTATTR_LOOP);
|
|
}
|
|
HuPrcSleep(20);
|
|
for (i = 0; i < 2; i++) {
|
|
temp_r31 = &lbl_1_bss_588[i];
|
|
Hu3DModelPosSet(temp_r31->unk06, 0.0f, 0.0f, 0.0f);
|
|
Hu3DModelRotSet(temp_r31->unk06, 0.0f, 0.0f, 0.0f);
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
Hu3DModelHookSet(temp_r31->unk00, CharModelHookNameGet(GWPlayerCfg[i].character, 2, 0), temp_r31->unk06);
|
|
}
|
|
else {
|
|
Hu3DModelHookSet(temp_r31->unk00, "itemhook_r", temp_r31->unk06);
|
|
}
|
|
}
|
|
HuPrcSleep(20);
|
|
for (i = 0; i < 2; i++) {
|
|
temp_r31 = &lbl_1_bss_588[i];
|
|
if (fn_1_520(temp_r31->unk18) == FALSE) {
|
|
CharModelMotionShiftSet(lbl_1_data_0[GWPlayerCfg[temp_r31->unk18].character], temp_r31->unk08[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
Hu3DMotionOverlaySet(temp_r31->unk00, temp_r31->unk08[4]);
|
|
}
|
|
else {
|
|
Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk08[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP);
|
|
}
|
|
}
|
|
}
|
|
|
|
void fn_1_8938(void)
|
|
{
|
|
s32 i;
|
|
|
|
while (lbl_1_bss_6DC < 6) {
|
|
HuPrcVSleep();
|
|
}
|
|
for (i = 30; i != 0; i--) {
|
|
CZoomM[0] += -27.7f;
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
void fn_1_89B8(void)
|
|
{
|
|
while (TRUE) {
|
|
if (omSysExitReq == 1) {
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
|
|
HuAudFadeOut(1000);
|
|
HuPrcSleep(60);
|
|
MGSeqKillAll();
|
|
omOvlReturnEx(1, 1);
|
|
while (TRUE) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
HuPrcVSleep();
|
|
}
|
|
}
|
|
|
|
void fn_1_8A18(void)
|
|
{
|
|
s16 temp_r28;
|
|
s16 var_r31;
|
|
s16 temp_r26;
|
|
s32 var_r25;
|
|
s32 i;
|
|
|
|
lbl_1_bss_6DC = 0;
|
|
fn_1_8320();
|
|
HuPrcSleep(30);
|
|
lbl_1_bss_6DC = 1;
|
|
while (lbl_1_bss_6DC == 1) {
|
|
HuPrcVSleep();
|
|
}
|
|
var_r25 = HuAudSeqPlay(0x3E);
|
|
temp_r28 = MGSeqStartCreate();
|
|
while (MGSeqStatGet(temp_r28) != 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_557C();
|
|
var_r31 = 3659;
|
|
temp_r26 = MGSeqTimerCreate(var_r31 / 60);
|
|
lbl_1_bss_6DC = 3;
|
|
while (TRUE) {
|
|
if (var_r31 < 59) {
|
|
break;
|
|
}
|
|
MGSeqParamSet(temp_r26, 1, var_r31-- / 60);
|
|
lbl_1_bss_6D8++;
|
|
HuPrcVSleep();
|
|
}
|
|
lbl_1_bss_6C4 = -1;
|
|
if (lbl_1_bss_588->unk30 != lbl_1_bss_588[1].unk30) {
|
|
lbl_1_bss_6C4 = 0;
|
|
if (lbl_1_bss_588->unk30 < lbl_1_bss_588[1].unk30) {
|
|
lbl_1_bss_6C4 = 1;
|
|
}
|
|
}
|
|
lbl_1_bss_6DC = 4;
|
|
HuAudSeqFadeOut(var_r25, 100);
|
|
MGSeqParamSet(temp_r26, 2, -1);
|
|
temp_r28 = MGSeqFinishCreate();
|
|
while (MGSeqStatGet(temp_r28) != 0) {
|
|
HuPrcVSleep();
|
|
}
|
|
while (lbl_1_bss_588->unk24 != 4 || lbl_1_bss_588[1].unk24 != 4) {
|
|
HuPrcVSleep();
|
|
}
|
|
while (lbl_1_bss_6DC < 6) {
|
|
HuPrcVSleep();
|
|
}
|
|
for (i = 30; i != 0; i--) {
|
|
CZoomM[0] += -27.7f;
|
|
HuPrcVSleep();
|
|
}
|
|
lbl_1_bss_6DC = 7;
|
|
HuPrcSleep(210);
|
|
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
|
|
HuPrcSleep(60);
|
|
HuAudFadeOut(1);
|
|
MGSeqKillAll();
|
|
omOvlReturnEx(1, 1);
|
|
while (TRUE) {
|
|
HuPrcVSleep();
|
|
}
|
|
}
|