#include "ext_math.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "REL/m420dll.h" typedef struct M420DllUnkMapStruct2 { /* 0x00 */ struct { s8 unk_00_field0 : 1; s8 unk_00_field1 : 1; s8 unk_00_field2 : 1; s8 unk_00_field3 : 1; s8 unk_00_field4 : 1; s8 unk_00_field5 : 1; s8 unk_00_field6 : 1; s8 unk_00_field7 : 1; }; /* 0x04 */ s16 unk_02; /* 0x04 */ Vec unk_04; /* 0x10 */ Vec unk_10; /* 0x1C */ Vec unk_1C; /* 0x28 */ Vec unk_28; /* 0x34 */ Vec unk_34; /* 0x40 */ Vec unk_40; /* 0x4C */ Vec unk_4C; /* 0x58 */ Vec unk_58; /* 0x64 */ Vec unk_64; /* 0x70 */ float unk_70; /* 0x74 */ float unk_74; /* 0x78 */ s32 unk_78; /* 0x7C */ float unk_7C; /* 0x80 */ float unk_80; /* 0x84 */ s32 unk_84; /* 0x88 */ float unk_88; /* 0x8C */ float unk_8C; /* 0x90 */ s32 unk_90; } M420DllUnkMapStruct2; /* size = 0x94 */ typedef struct M420DllUnkMapStruct { /* 0x00 */ M420DllUnkMapStruct2 *unk_00; /* 0x04 */ M420DllUnkMapStruct2 *unk_04; /* 0x08 */ M420DllUnkMapStruct2 *unk_08; /* 0x0C */ M420DllUnkMapStruct2 *unk_0C; /* 0x10 */ M420DllUnkMapStruct2 *unk_10; /* 0x14 */ s32 unk_14; /* 0x18 */ char pad_18[4]; /* 0x1C */ float unk_1C; /* 0x20 */ float unk_20; /* 0x24 */ float unk_24; /* 0x28 */ float unk_28; /* 0x2C */ float unk_2C; /* 0x30 */ s32 unk_30; /* 0x34 */ s32 unk_34; /* 0x38 */ s32 unk_38; /* 0x3C */ s32 unk_3C; } M420DllUnkMapStruct; /* size = 0x40 */ typedef struct M420DllUnkMapStruct3 { /* 0x00 */ Vec unk_00; /* 0x0C */ Vec unk_0C; /* 0x18 */ GXColor unk_18; } M420DllUnkMapStruct3; /* size = 0x1C */ s32 fn_1_5A7C(s32 arg0); void fn_1_6820(void); void fn_1_6884(void); void fn_1_6950(void); void fn_1_6D0C(void); void fn_1_6D5C(void); void fn_1_6DF0(M420DllUnkMapStruct2 *arg0); void fn_1_7230(M420DllUnkMapStruct2 *arg0, Vec *arg1, s32 arg2, s32 arg3); void fn_1_7704(void); void fn_1_7E24(void); void fn_1_8240(void); void fn_1_8414(void); M420DllUnkMapStruct3 lbl_1_data_138 = { { 1000.0f, 2000.0f, 0.0f }, { -0.5f, -0.5f, -0.5f }, { 0xFF, 0xFF, 0xFF, 0xFF }, }; void (*lbl_1_data_154[4])() = { fn_1_7704, fn_1_7E24, fn_1_8240, fn_1_8414 }; static const s32 lbl_1_rodata_360[0x1B] = { DATA_MAKE_NUM(DATADIR_M420, 0x00), DATA_MAKE_NUM(DATADIR_M420, 0x14), DATA_MAKE_NUM(DATADIR_M420, 0x07), DATA_MAKE_NUM(DATADIR_M420, 0x08), DATA_MAKE_NUM(DATADIR_M420, 0x01), DATA_MAKE_NUM(DATADIR_M420, 0x02), DATA_MAKE_NUM(DATADIR_M420, 0x03), DATA_MAKE_NUM(DATADIR_M420, 0x04), DATA_MAKE_NUM(DATADIR_M420, 0x05), DATA_MAKE_NUM(DATADIR_M420, 0x06), DATA_MAKE_NUM(DATADIR_M420, 0x15), DATA_MAKE_NUM(DATADIR_M420, 0x16), DATA_MAKE_NUM(DATADIR_M420, 0x17), DATA_MAKE_NUM(DATADIR_M420, 0x09), DATA_MAKE_NUM(DATADIR_M420, 0x09), DATA_MAKE_NUM(DATADIR_M420, 0x0A), DATA_MAKE_NUM(DATADIR_M420, 0x0B), DATA_MAKE_NUM(DATADIR_M420, 0x0E), DATA_MAKE_NUM(DATADIR_M420, 0x0F), DATA_MAKE_NUM(DATADIR_M420, 0x0C), DATA_MAKE_NUM(DATADIR_M420, 0x0D), DATA_MAKE_NUM(DATADIR_M420, 0x12), DATA_MAKE_NUM(DATADIR_M420, 0x11), DATA_MAKE_NUM(DATADIR_M420, 0x10), DATA_MAKE_NUM(DATADIR_M420, 0x10), DATA_MAKE_NUM(DATADIR_M420, 0x13), DATA_MAKE_NUM(DATADIR_M420, 0x13), }; Process *lbl_1_bss_A40; Process *lbl_1_bss_A3C; Process *lbl_1_bss_A2C[4]; s32 lbl_1_bss_A28; s16 lbl_1_bss_9F0[0x1C]; s16 lbl_1_bss_9EE; s16 lbl_1_bss_9EC; M420DllUnkMapStruct2 lbl_1_bss_140[15]; struct M420DllUnkMapStruct lbl_1_bss_C0[2]; s32 lbl_1_bss_BC; s32 lbl_1_bss_B8; s32 lbl_1_bss_B4; s32 lbl_1_bss_B0; s32 fn_1_4964(void) { M420DllUnkMapStruct2 *var_r31; M420DllUnkMapStruct *var_r30; s32 var_r29; lbl_1_bss_A40 = HuPrcChildCreate(fn_1_6820, 0x3E9, 0x4000, 0, lbl_1_bss_4); lbl_1_bss_A3C = HuPrcChildCreate(fn_1_6884, 0x3EA, 0x4000, 0, lbl_1_bss_4); for (var_r29 = 0; var_r29 < 4; var_r29++) { lbl_1_bss_A2C[var_r29] = NULL; } lbl_1_bss_A28 = 0; fn_1_6D5C(); fn_1_6950(); var_r31 = lbl_1_bss_140; var_r31->unk_02 = lbl_1_bss_9F0[1]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 0.0f; var_r31->unk_04.y = 1000.0f; var_r31->unk_04.z = 0.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[1]; var_r31->unk_02 = lbl_1_bss_9F0[0xA]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 0.0f; var_r31->unk_04.y = 0.0f; var_r31->unk_04.z = 0.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[2]; var_r31->unk_02 = lbl_1_bss_9F0[0xC]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 0.0f; var_r31->unk_04.y = 0.0f; var_r31->unk_04.z = 0.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[3]; var_r31->unk_02 = lbl_1_bss_9F0[0xB]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 0.0f; var_r31->unk_04.y = 0.0f; var_r31->unk_04.z = 0.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[4]; var_r31->unk_02 = lbl_1_bss_9F0[0xD]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = -220.0f; var_r31->unk_04.y = -60.0f; var_r31->unk_04.z = 170.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[9]; var_r31->unk_02 = lbl_1_bss_9F0[0x17]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = -170.0f; var_r31->unk_04.y = 0.0f; var_r31->unk_04.z = 170.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[11]; var_r31->unk_02 = lbl_1_bss_9F0[0x19]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = -160.0f; var_r31->unk_04.y = 0.0f; var_r31->unk_04.z = 220.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[6]; var_r31->unk_02 = lbl_1_bss_9F0[0x11]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 0.0f; var_r31->unk_04.y = -65.0f; var_r31->unk_04.z = 0.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[5]; var_r31->unk_02 = lbl_1_bss_9F0[0xE]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 220.0f; var_r31->unk_04.y = -60.0f; var_r31->unk_04.z = 170.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[10]; var_r31->unk_02 = lbl_1_bss_9F0[0x18]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 190.0f; var_r31->unk_04.y = 0.0f; var_r31->unk_04.z = 170.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[12]; var_r31->unk_02 = lbl_1_bss_9F0[0x1A]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 185.0f; var_r31->unk_04.y = 0.0f; var_r31->unk_04.z = 220.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[7]; var_r31->unk_02 = lbl_1_bss_9F0[0x12]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 0.0f; var_r31->unk_04.y = -65.0f; var_r31->unk_04.z = 0.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[8]; var_r31->unk_02 = lbl_1_bss_9F0[0x13]; var_r31->unk_00_field3 = 1; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 0.0f; var_r31->unk_04.y = 300.0f; var_r31->unk_04.z = 0.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[13]; var_r31->unk_02 = lbl_1_bss_9F0[3]; var_r31->unk_00_field3 = 0; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 0.0f; var_r31->unk_04.y = 0.0f; var_r31->unk_04.z = 0.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); var_r31 = &lbl_1_bss_140[14]; var_r31->unk_02 = lbl_1_bss_9F0[2]; var_r31->unk_00_field3 = 0; var_r31->unk_00_field0 = 0; var_r31->unk_00_field1 = 0; var_r31->unk_04.x = 0.0f; var_r31->unk_04.y = 0.0f; var_r31->unk_04.z = 0.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_r31->unk_4C.x = 1.0f; var_r31->unk_4C.y = 1.0f; var_r31->unk_4C.z = 1.0f; fn_1_6DF0(var_r31); for (var_r29 = 0; var_r29 < 2; var_r29++) { var_r30 = &lbl_1_bss_C0[var_r29]; var_r30->unk_14 = var_r29; var_r30->unk_1C = 20.0f; var_r30->unk_20 = 0.0f; var_r30->unk_2C = 0.0f; var_r30->unk_24 = 0.2f; var_r30->unk_28 = 0.1f; var_r30->unk_38 = 0; var_r30->unk_3C = 0; var_r30->unk_30 = 1; var_r30->unk_00 = &lbl_1_bss_140[var_r29 + 13]; var_r30->unk_04 = &lbl_1_bss_140[var_r29 + 4]; var_r30->unk_08 = &lbl_1_bss_140[var_r29 + 6]; var_r30->unk_0C = &lbl_1_bss_140[var_r29 + 9]; var_r30->unk_10 = &lbl_1_bss_140[var_r29 + 11]; } lbl_1_bss_B8 = 0; lbl_1_bss_B4 = 0; lbl_1_bss_B0 = 0; fn_1_6728(); { Vec sp14 = { 0.0f, 0.0f, 0.0f }; Vec sp8 = { 0.0f, 0.0f, -1.0f }; HuAudFXListnerSetEX(&sp14, &sp8, 3000.0, 1000.0, 100.0, 300.0, 300.0); HuAudFXPlay(0x5F0); } return 1; } void fn_1_596C(void) { Process *var_r30; s32 var_r31; for (var_r31 = 0; var_r31 < 4; var_r31++) { var_r30 = lbl_1_bss_A2C[var_r31]; if (var_r30) { HuPrcKill(var_r30); } } fn_1_6D0C(); HuPrcKill(lbl_1_bss_A3C); HuPrcKill(lbl_1_bss_A40); } s32 fn_1_59F4(s32 arg0) { if (fn_1_5A7C(arg0) != 0) { return 0; } lbl_1_bss_A2C[arg0] = HuPrcChildCreate(lbl_1_data_154[arg0], 0x3ED, 0x5000, 0, lbl_1_bss_4); return 1; } s32 fn_1_5A7C(s32 arg0) { return lbl_1_bss_A2C[arg0] != NULL; } s32 fn_1_5AA8(s32 arg0, float arg1) { M420DllUnkMapStruct *var_r31; s32 var_r29; s32 var_r30; var_r31 = &lbl_1_bss_C0[arg0]; if ((var_r31->unk_1C += arg1) >= 200.0f) { var_r31->unk_1C = 200.0f; } var_r31->unk_38 = 1; var_r31->unk_30 = (s32)(200.0f - var_r31->unk_1C) / 10.0f; switch (arg0) { case 0: var_r29 = 3; var_r30 = 0x15; break; case 1: var_r29 = 2; var_r30 = 0x16; break; } if (var_r31->unk_1C >= 200.0f) { if (lbl_1_bss_B0 == 0) { var_r31->unk_3C = 1; Hu3DMotionTimeSet(lbl_1_bss_9F0[var_r30], 0.0f); Hu3DModelAttrReset(lbl_1_bss_9F0[var_r30], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[var_r30], HU3D_MOTATTR_LOOP); Hu3DModelAttrSet(lbl_1_bss_9F0[var_r29], HU3D_ATTR_DISPOFF); } return 1; } return 0; } void fn_1_5C8C(M420DllUnkMapStruct *arg0) { Vec sp8; if (arg0->unk_38 != 0) { if (arg0->unk_30 > 0) { arg0->unk_30--; } if (arg0->unk_30 <= 0) { sp8 = arg0->unk_04->unk_04; sp8.y = -60.0f + arg0->unk_1C; fn_1_7230(arg0->unk_04, &sp8, 0x1E, 0); sp8 = arg0->unk_08->unk_04; sp8.y = -65.0f + arg0->unk_1C; fn_1_7230(arg0->unk_08, &sp8, 0x1E, 0); sp8 = arg0->unk_0C->unk_04; sp8.y = 40.0f + arg0->unk_1C; fn_1_7230(arg0->unk_0C, &sp8, 0x1E, 1); Hu3DMotionTimeSet(arg0->unk_0C->unk_02, 0.0f); Hu3DModelAttrReset(arg0->unk_0C->unk_02, HU3D_ATTR_DISPOFF); sp8 = arg0->unk_10->unk_04; sp8.y = -50.0f + arg0->unk_1C; fn_1_7230(arg0->unk_10, &sp8, 0x1E, 1); Hu3DMotionTimeSet(arg0->unk_10->unk_02, 0.0f); Hu3DModelAttrReset(arg0->unk_10->unk_02, HU3D_ATTR_DISPOFF); Hu3DMotionStartEndSet(arg0->unk_00->unk_02, 0.0f, 30.0f); Hu3DMotionTimeSet(arg0->unk_00->unk_02, 0.0f); Hu3DModelAttrReset(arg0->unk_00->unk_02, HU3D_MOTATTR_PAUSE); Hu3DModelAttrReset(arg0->unk_00->unk_02, HU3D_MOTATTR_LOOP); arg0->unk_34 = 3; arg0->unk_38 = 0; arg0->unk_24 = 0.8f; arg0->unk_28 = 0.3f; arg0->unk_2C = 0.0f; if (arg0->unk_14 == 0) { HuAudFXPlay(0x5F7); } else { HuAudFXPlay(0x5F8); } } } if ((Hu3DMotionEndCheck(arg0->unk_00->unk_02) != 0) && (arg0->unk_34 > 0)) { if (--arg0->unk_34 > 0) { Hu3DMotionTimeSet(arg0->unk_00->unk_02, 0.0f); } else { Hu3DMotionStartEndSet(arg0->unk_00->unk_02, 0.0f, 1.0f); Hu3DMotionTimeSet(arg0->unk_00->unk_02, 0.0f); Hu3DModelAttrSet(arg0->unk_00->unk_02, HU3D_MOTATTR_PAUSE); } } if (arg0->unk_24 > 0.2f) { if ((arg0->unk_24 -= 0.005f) <= 0.2f) { arg0->unk_24 = 0.2f; } } arg0->unk_04->unk_28.y += arg0->unk_24; if (arg0->unk_28 > 0.05f) { if ((arg0->unk_28 -= 0.003f) <= 0.05f) { arg0->unk_28 = 0.05f; } } arg0->unk_04->unk_4C.y = 1.0 + (arg0->unk_28 * sind((90.0f * arg0->unk_2C))); arg0->unk_2C += 0.02f; } s32 fn_1_60F0(void) { float var_f31; float var_f30; s32 var_r31; if (lbl_1_bss_BC >= 6) { return 1; } var_f31 = 5.0f * (6 - lbl_1_bss_BC); var_f30 = var_f31 - 5.0f; Hu3DMotionStartEndSet(lbl_1_bss_9F0[0xF], var_f30, var_f31); Hu3DMotionTimeSet(lbl_1_bss_9F0[0xF], var_f31); Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_LOOP); Hu3DModelAttrSet(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_REV); lbl_1_bss_B8 = 5; lbl_1_bss_BC += 1; if (lbl_1_bss_BC == 6) { var_r31 = 1; } else { var_r31 = 0; } return var_r31; } void fn_1_6268(void) { float var_f31 = 0.0f; float var_f30 = 30.0f; Hu3DMotionStartEndSet(lbl_1_bss_9F0[0xF], var_f31, var_f30); Hu3DMotionTimeSet(lbl_1_bss_9F0[0xF], var_f31); Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_LOOP); Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_REV); Hu3DMotionStartEndSet(lbl_1_bss_9F0[0x10], var_f31, var_f30); Hu3DMotionTimeSet(lbl_1_bss_9F0[0x10], var_f31); lbl_1_bss_BC = 0; } void fn_1_636C(void) { float var_f31 = 0.0f; float var_f30 = 30.0f; Hu3DMotionStartEndSet(lbl_1_bss_9F0[0x14], var_f31, var_f30); Hu3DMotionTimeSet(lbl_1_bss_9F0[0x14], var_f31); } void fn_1_63EC(void) { float var_f31 = 5.0f * (6 - lbl_1_bss_BC); float var_f30 = 30.0f; Hu3DMotionStartEndSet(lbl_1_bss_9F0[0xF], var_f31, var_f30); Hu3DMotionTimeSet(lbl_1_bss_9F0[0xF], var_f31); Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_LOOP); Hu3DModelAttrReset(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_REV); lbl_1_bss_BC = 0; lbl_1_bss_B8 = 0; } s32 fn_1_650C(void) { s32 var_r31 = 0; if ((lbl_1_bss_BC == 6) && (lbl_1_bss_B8 == 0)) { var_r31 = 1; } return var_r31; } void fn_1_6554(void) { Vec sp8; M420DllUnkMapStruct2 *var_r31; var_r31 = &lbl_1_bss_140[8]; var_r31->unk_04.x = 480.0f; var_r31->unk_04.y = 800.0f; var_r31->unk_04.z = -314.0f; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; fn_1_6DF0(var_r31); sp8.x = 480.0f; sp8.y = 370.0f; sp8.z = -314.0f; Hu3DModelAttrReset(var_r31->unk_02, HU3D_ATTR_DISPOFF); fn_1_7230(var_r31, &sp8, 0x14, 0); Hu3DMotionTimeSet(fn_1_6660(), 0.0f); Hu3DModelAttrSet(fn_1_6660(), HU3D_MOTATTR_PAUSE); } s16 fn_1_6660(void) { return lbl_1_bss_140[8].unk_02; } s32 fn_1_6670(void) { M420DllUnkMapStruct2 *var_r31 = &lbl_1_bss_140[8]; return var_r31->unk_00_field0; } void fn_1_669C(s32 arg0) { M420DllUnkMapStruct2 *var_r31 = &lbl_1_bss_140[8]; if (arg0 == 0) { var_r31->unk_04.x = 0.0f; var_r31->unk_04.y = 0.0f; var_r31->unk_04.z = 0.0f; fn_1_6DF0(var_r31); } var_r31->unk_00_field3 = arg0; } void fn_1_6728(void) { M420DllUnkMapStruct2 *var_r31 = &lbl_1_bss_140[8]; var_r31->unk_04.x = 0.0f; var_r31->unk_04.y = 1000.0f; var_r31->unk_04.z = 0.0f; fn_1_6DF0(var_r31); Hu3DModelAttrSet(lbl_1_bss_9F0[0x13], HU3D_ATTR_DISPOFF); } s32 fn_1_67A4(s32 arg0) { M420DllUnkMapStruct *var_r31 = &lbl_1_bss_C0[arg0]; return var_r31->unk_1C >= 200.0f; } s32 fn_1_67E8(s32 arg0) { M420DllUnkMapStruct *var_r31 = &lbl_1_bss_C0[arg0]; return var_r31->unk_3C; } s32 fn_1_6810(void) { return lbl_1_bss_B4; } void fn_1_6820(void) { while (TRUE) { if (lbl_1_bss_B8 > 0) { if (--lbl_1_bss_B8 <= 0) { Hu3DModelAttrSet(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); } } HuPrcVSleep(); } } void fn_1_6884(void) { s32 var_r31; M420DllUnkMapStruct *var_r30; M420DllUnkMapStruct *var_r29; while (TRUE) { for (var_r31 = 0; var_r31 < 0xF; var_r31++) { fn_1_6DF0(&lbl_1_bss_140[var_r31]); } for (var_r31 = 0; var_r31 < 2; var_r31++) { fn_1_5C8C(&lbl_1_bss_C0[var_r31]); } var_r30 = lbl_1_bss_C0; if ((var_r30->unk_1C >= 200.0f) || (var_r29 = &lbl_1_bss_C0[1], var_r29->unk_1C >= 200.0f)) { lbl_1_bss_B0 = 1; } HuPrcVSleep(); } } void fn_1_6950(void) { s32 var_r31; for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { lbl_1_bss_9F0[var_r31] = Hu3DModelCreateFile(lbl_1_rodata_360[var_r31]); } Hu3DModelAttrSet(lbl_1_bss_9F0[1], HU3D_MOTATTR_LOOP); Hu3DModelAttrSet(lbl_1_bss_9F0[0xA], HU3D_MOTATTR_LOOP); Hu3DModelAttrSet(lbl_1_bss_9F0[3], HU3D_MOTATTR_PAUSE); Hu3DModelAttrSet(lbl_1_bss_9F0[2], HU3D_MOTATTR_PAUSE); Hu3DModelPosSet(lbl_1_bss_9F0[0xF], -219.0f, 300.0f, -92.0f); Hu3DModelRotSet(lbl_1_bss_9F0[0xF], 0.0f, 0.0f, 0.0f); Hu3DModelPosSet(lbl_1_bss_9F0[0x10], 0.0f, 0.0f, 0.0f); Hu3DModelShadowMapSet(lbl_1_bss_9F0[0]); Hu3DModelShadowMapSet(lbl_1_bss_9F0[0xD]); Hu3DModelShadowMapSet(lbl_1_bss_9F0[0xE]); Hu3DModelShadowSet(lbl_1_bss_9F0[0xF]); Hu3DModelShadowSet(lbl_1_bss_9F0[1]); Hu3DModelShadowSet(lbl_1_bss_9F0[0xA]); Hu3DModelShadowSet(lbl_1_bss_9F0[0xB]); Hu3DModelShadowSet(lbl_1_bss_9F0[0x10]); Hu3DModelShadowSet(lbl_1_bss_9F0[0x14]); Hu3DModelShadowSet(lbl_1_bss_9F0[0x13]); Hu3DModelAttrSet(lbl_1_bss_9F0[4], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[5], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[6], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[7], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[8], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[9], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[0xB], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[0xC], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[0x15], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[0x16], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[0x17], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[0x18], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[0x19], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[0x1A], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); Hu3DMotionStartEndSet(lbl_1_bss_9F0[0xF], 30.0f, 30.0f); Hu3DMotionTimeSet(lbl_1_bss_9F0[0xF], 30.0f); Hu3DModelAttrSet(lbl_1_bss_9F0[0xF], HU3D_MOTATTR_PAUSE); Hu3DModelHookSet(lbl_1_bss_9F0[1], "itemhook_sao", lbl_1_bss_9F0[0xA]); } void fn_1_6D0C(void) { s32 var_r31; for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { Hu3DModelKill(lbl_1_bss_9F0[var_r31]); } } void fn_1_6D5C(void) { LightData *var_r31; Hu3DLighInit(); lbl_1_bss_9EC = Hu3DGLightCreateV(&lbl_1_data_138.unk_00, &lbl_1_data_138.unk_0C, &lbl_1_data_138.unk_18); Hu3DGLightInfinitytSet(lbl_1_bss_9EC); var_r31 = &Hu3DGlobalLight[lbl_1_bss_9EC]; var_r31->unk_00 |= 0x8000; } void fn_1_6DF0(M420DllUnkMapStruct2 *arg0) { float var_f31; if (arg0->unk_00_field3) { if (arg0->unk_00_field0) { switch (arg0->unk_78) { case 0: var_f31 = arg0->unk_70; break; case 1: var_f31 = sind((90.0f * arg0->unk_70)); var_f31 *= var_f31; break; case 2: var_f31 = sind((90.0f * arg0->unk_70)); var_f31 *= var_f31 * var_f31; break; } arg0->unk_04.x = arg0->unk_10.x + (var_f31 * (arg0->unk_1C.x - arg0->unk_10.x)); arg0->unk_04.y = arg0->unk_10.y + (var_f31 * (arg0->unk_1C.y - arg0->unk_10.y)); arg0->unk_04.z = arg0->unk_10.z + (var_f31 * (arg0->unk_1C.z - arg0->unk_10.z)); if ((arg0->unk_70 += arg0->unk_74) >= 1.0f) { arg0->unk_04 = arg0->unk_1C; arg0->unk_00_field0 = 0; } } Hu3DModelPosSet(arg0->unk_02, arg0->unk_04.x, arg0->unk_04.y, arg0->unk_04.z); if (arg0->unk_00_field1) { switch (arg0->unk_84) { case 0: var_f31 = arg0->unk_7C; break; case 1: var_f31 = sind((90.0f * arg0->unk_7C)); var_f31 *= var_f31; break; } arg0->unk_28.x = arg0->unk_34.x + (var_f31 * (arg0->unk_40.x - arg0->unk_34.x)); arg0->unk_28.y = arg0->unk_34.y + (var_f31 * (arg0->unk_40.y - arg0->unk_34.y)); arg0->unk_28.z = arg0->unk_34.z + (var_f31 * (arg0->unk_40.z - arg0->unk_34.z)); if ((arg0->unk_7C += arg0->unk_80) >= 1.0f) { arg0->unk_28 = arg0->unk_40; arg0->unk_00_field1 = 0; } } Hu3DModelRotSet(arg0->unk_02, arg0->unk_28.x, arg0->unk_28.y, arg0->unk_28.z); if (arg0->unk_00_field2) { switch (arg0->unk_90) { case 0: var_f31 = arg0->unk_88; break; case 1: var_f31 = sind((90.0f * arg0->unk_88)); var_f31 *= var_f31; break; } arg0->unk_4C.x = arg0->unk_58.x + (var_f31 * (arg0->unk_64.x - arg0->unk_58.x)); arg0->unk_4C.y = arg0->unk_58.y + (var_f31 * (arg0->unk_64.y - arg0->unk_58.y)); arg0->unk_4C.z = arg0->unk_58.z + (var_f31 * (arg0->unk_64.z - arg0->unk_58.z)); if ((arg0->unk_88 += arg0->unk_8C) >= 1.0f) { arg0->unk_4C = arg0->unk_64; arg0->unk_00_field2 = 0; } } Hu3DModelScaleSet(arg0->unk_02, arg0->unk_4C.x, arg0->unk_4C.y, arg0->unk_4C.z); } } void fn_1_7230(M420DllUnkMapStruct2 *arg0, Vec *arg1, s32 arg2, s32 arg3) { arg0->unk_1C = *arg1; arg0->unk_10 = arg0->unk_04; arg0->unk_70 = 0.0f; arg0->unk_74 = 1.0f / arg2; arg0->unk_78 = arg3; arg0->unk_00_field0 = 1; } void fn_1_72C8(M420DllUnkMapStruct2 *arg0, Vec *arg1, s32 arg2, s32 arg3) { arg0->unk_40 = *arg1; arg0->unk_34 = arg0->unk_28; arg0->unk_7C = 0.0f; arg0->unk_80 = 1.0f / arg2; arg0->unk_84 = arg3; arg0->unk_00_field1 = 1; } void fn_1_7360(M420DllUnkMapStruct2 *arg0, Vec *arg1, s32 arg2, s32 arg3) { arg0->unk_64 = *arg1; arg0->unk_58 = arg0->unk_4C; arg0->unk_88 = 0.0f; arg0->unk_8C = 1.0f / arg2; arg0->unk_90 = arg3; arg0->unk_00_field2 = 1; } float fn_1_73F8(float arg8) { float var_f31; float var_f30; if (arg8 < 0.0f) { arg8 = -arg8; } if (arg8 < 1.0f) { var_f31 = (4.0f + ((arg8 * (3.0f * arg8 * arg8)) - (6.0f * arg8 * arg8))) / 6.0f; } else if (arg8 < 2.0f) { var_f30 = arg8 - 2.0f; var_f31 = (var_f30 * (-var_f30 * var_f30)) / 6.0f; } else { var_f31 = 0.0f; } return var_f31; } void fn_1_74F8(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) { float var_f30; float var_f29; float var_f26; s32 var_r31; s32 var_r30; s32 var_r29; var_r29 = 0xB; var_f30 = 0.0f; var_f29 = 0.0f; for (var_r31 = -2; var_r31 <= var_r29 + 2; var_r31++) { var_r30 = var_r31; if (var_r31 < 0) { var_r30 = 0; } if (var_r31 > var_r29) { var_r30 = var_r29; } var_f26 = fn_1_73F8(arg8 - var_r31); var_f30 += var_f26 * arg0[var_r30]; var_f29 += var_f26 * arg1[var_r30]; } *arg2 = var_f30; *arg3 = var_f29; } void fn_1_7704(void) { Vec sp20; Vec sp14; Vec sp8; M420DllUnkMapStruct2 *var_r31; s32 var_r29; s32 var_r28; var_r28 = 0; var_r31 = &lbl_1_bss_140[0]; sp20.x = 0.0f; sp20.y = 1000.0f; sp20.z = 0.0f; sp14.x = 0.0f; sp14.y = 0.0f; sp14.z = 0.0f; sp8.x = 1.0f; sp8.y = 1.0f; sp8.z = 1.0f; fn_1_7230(var_r31, &sp20, 1, 0); fn_1_72C8(var_r31, &sp14, 1, 0); var_r28 = HuAudFXEmiterPlay(0x5EF, &sp20); sp20.y = 750.0f; fn_1_7230(var_r31, &sp20, 80, 1); HuPrcSleep(0x50); { float var_f30; float sp5C[12] = { 0.0f, 50.0f, 300.0f, 350.0f, 300.0f, 0.0f, -300.0f, -350.0f, -350.0f, -300.0f, -100.0f, 0.0f, }; float sp2C[12] = { 750.0f, 700.0f, 600.0f, 500.0f, 400.0f, 300.0f, 350.0f, 400.0f, 450.0f, 500.0f, 600.0f, 900.0f, }; float var_f24 = 0.050000004f; for (var_f30 = -1.0f; var_f30 < 12.0f; var_f30 += var_f24) { fn_1_74F8(sp5C, sp2C, &sp20.x, &sp20.y, var_f30); fn_1_7230(var_r31, &sp20, 1, 0); HuAudFXEmiterUpDate(var_r28, &sp20); HuPrcVSleep(); } } for (var_r29 = 0; var_r29 < 0x1E; var_r29++) { Hu3DModelTPLvlSet(lbl_1_bss_9F0[1], 1.0f - (0.033333335f * var_r29)); Hu3DModelTPLvlSet(lbl_1_bss_9F0[0xA], 1.0f - (0.033333335f * var_r29)); HuAudFXEmiterUpDate(var_r28, &sp20); HuPrcSleep(1); } HuAudFXStop(var_r28); sp20.x = 1000.0f; sp20.y = 0.0f; sp20.z = 0.0f; fn_1_7230(var_r31, &sp20, 1, 0); HuPrcSleep(1); Hu3DModelTPLvlSet(lbl_1_bss_9F0[1], 1.0f); Hu3DModelTPLvlSet(lbl_1_bss_9F0[0xA], 1.0f); *lbl_1_bss_A2C = NULL; HuPrcEnd(); while (TRUE) { HuPrcVSleep(); } } void fn_1_7E24(void) { float var_f31; float var_f30; float var_f29; float var_f28; float var_f27; float var_f26; M420DllUnkMapStruct2 *var_r31; s32 var_r30; s32 var_r29; s32 var_r28; M420DllUnkMapStruct *var_r27; s32 var_r26; s32 var_r25; var_r31 = &lbl_1_bss_140[0]; { Vec sp8 = { 0.0f, 0.0f, 0.0f }; var_f29 = 800.0f; var_f28 = 10.0f; var_r29 = 0; var_r28 = 0; var_r30 = 0; var_r31->unk_28.x = 0.0f; var_r31->unk_28.y = 0.0f; var_r31->unk_28.z = 0.0f; var_f31 = 0.0f; var_f26 = 0.005f; var_r27 = &lbl_1_bss_C0[1]; var_r26 = var_r27->unk_3C; var_r25 = var_r26; if (var_r25 != 0) { var_f27 = 220.0f; } else { var_f27 = -220.0f; } for (var_f30 = var_f27; var_f31 < 1.0f; var_f31 += var_f26) { sp8.x = (var_f29 * cosd((-180.0f * var_f31))) - (var_f28 * sind((-180.0f * var_f31))); sp8.y = 1200.0 + ((var_f28 * cosd((-180.0f * var_f31))) + (var_f29 * sind((-180.0f * var_f31)))); sp8.z = 0.0f; if (var_f31 <= 0.0f) { var_r30 = HuAudFXEmiterPlay(0x5EF, &sp8); } if ((sp8.x < (200.0f + var_f30)) && (var_r28 == 0)) { Hu3DModelHookReset(lbl_1_bss_9F0[1]); Hu3DModelAttrSet(lbl_1_bss_9F0[0xA], HU3D_ATTR_DISPOFF); Hu3DModelHookSet(lbl_1_bss_9F0[1], "itemhook_sao", lbl_1_bss_9F0[0xC]); Hu3DModelAttrReset(lbl_1_bss_9F0[0xC], HU3D_ATTR_DISPOFF); Hu3DMotionTimeSet(lbl_1_bss_9F0[0xC], 0.0f); var_r28 = 1; } if ((sp8.x < var_f30) && (var_r29 == 0)) { sp8.x = var_f30; if (lbl_1_bss_A2C[3] == NULL) { lbl_1_bss_A2C[3] = HuPrcChildCreate(lbl_1_data_154[3], 0x3ED, 0x5000, 0, lbl_1_bss_4); } var_r29 = 1; } fn_1_7230(var_r31, &sp8, 1, 0); HuAudFXEmiterUpDate(var_r30, &sp8); HuPrcVSleep(); } } HuAudFXStop(var_r30); lbl_1_bss_A2C[1] = NULL; HuPrcEnd(); while (TRUE) { HuPrcVSleep(); } } void fn_1_8240(void) { Hu3DModelAttrReset(lbl_1_bss_9F0[4], HU3D_ATTR_DISPOFF); Hu3DMotionTimeSet(lbl_1_bss_9F0[4], 0.0f); Hu3DModelAttrReset(lbl_1_bss_9F0[6], HU3D_ATTR_DISPOFF); Hu3DMotionTimeSet(lbl_1_bss_9F0[6], 0.0f); Hu3DModelAttrReset(lbl_1_bss_9F0[8], HU3D_ATTR_DISPOFF); Hu3DMotionTimeSet(lbl_1_bss_9F0[8], 0.0f); HuPrcSleep(0x78); Hu3DModelAttrSet(lbl_1_bss_9F0[4], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[6], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[8], HU3D_ATTR_DISPOFF); Hu3DModelAttrReset(lbl_1_bss_9F0[5], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[5], HU3D_MOTATTR_LOOP); Hu3DMotionTimeSet(lbl_1_bss_9F0[5], 0.0f); Hu3DModelAttrReset(lbl_1_bss_9F0[7], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[7], HU3D_MOTATTR_LOOP); Hu3DMotionTimeSet(lbl_1_bss_9F0[7], 0.0f); Hu3DModelAttrReset(lbl_1_bss_9F0[9], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(lbl_1_bss_9F0[9], HU3D_MOTATTR_LOOP); Hu3DMotionTimeSet(lbl_1_bss_9F0[9], 0.0f); lbl_1_bss_A2C[2] = NULL; HuPrcEnd(); while (TRUE) { HuPrcVSleep(); } } void fn_1_8414(void) { Vec sp14; Vec sp8; float var_f31; float var_f30; M420DllUnkMapStruct2 *var_r31; M420DllUnkMapStruct *var_r30; M420DllUnkMapStruct2 *var_r29; M420DllUnkMapStruct2 *var_r28; M420DllUnkMapStruct2 *var_r27; M420DllUnkMapStruct2 *var_r26; s32 var_r25; var_r31 = &lbl_1_bss_140[2]; var_r27 = &lbl_1_bss_140[3]; var_r26 = &lbl_1_bss_140[0]; Hu3DModelHookReset(lbl_1_bss_9F0[1]); var_r31->unk_04 = var_r26->unk_04; var_r31->unk_04.y -= 100.0f; var_r31->unk_04.z += 148.0f; fn_1_6DF0(var_r31); sp14 = var_r31->unk_04; sp14.y = 80.0f; sp14.z = 170.0f; sp8 = var_r31->unk_28; sp8.x += 45.0f; fn_1_7230(var_r31, &sp14, 30, 0); fn_1_72C8(var_r31, &sp8, 30, 0); HuPrcSleep(0xA); HuAudFXPlay(0x5F5); var_r25 = fn_1_67A4(0) != 0 ? 0 : 1; var_r30 = &lbl_1_bss_C0[var_r25]; if (var_r25 == 0) { var_f30 = -220.0f; } else { var_f30 = 220.0f; } var_f31 = var_f30; sp14 = var_r30->unk_0C->unk_04; sp14.y = 40.0f + var_r30->unk_1C; sp14.x = var_f31; var_r29 = var_r30->unk_0C; fn_1_7230(var_r29, &sp14, 30, 1); Hu3DMotionTimeSet(var_r30->unk_0C->unk_02, 0.0f); Hu3DModelAttrReset(var_r30->unk_0C->unk_02, HU3D_ATTR_DISPOFF); sp14 = var_r30->unk_10->unk_04; sp14.y = -50.0f + var_r30->unk_1C; sp14.x = var_f31; var_r28 = var_r30->unk_10; fn_1_7230(var_r28, &sp14, 30, 1); Hu3DMotionTimeSet(var_r30->unk_10->unk_02, 0.0f); Hu3DModelAttrReset(var_r30->unk_10->unk_02, HU3D_ATTR_DISPOFF); HuPrcSleep(5); lbl_1_bss_B4 = 1; sp8.x = 0.0f; fn_1_72C8(var_r31, &sp8, 15, 1); HuPrcSleep(0xF); var_r27->unk_04 = var_r31->unk_04; Hu3DModelAttrSet(var_r31->unk_02, HU3D_ATTR_DISPOFF); Hu3DModelAttrReset(var_r27->unk_02, HU3D_ATTR_DISPOFF); Hu3DMotionTimeSet(var_r27->unk_02, 0.0f); Hu3DModelAttrReset(var_r27->unk_02, HU3D_MOTATTR_PAUSE); Hu3DModelAttrSet(var_r27->unk_02, HU3D_MOTATTR_LOOP); HuPrcSleep(0x78); lbl_1_bss_A2C[3] = NULL; HuPrcEnd(); while (TRUE) { HuPrcVSleep(); } } const float _pad = 0;