#include "REL/m446Dll.h" #include "game/chrman.h" #include "game/gamework_data.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/objsub.h" #include "game/pad.h" #include "math.h" // cursor.c extern unkStruct7 *m446CursorCreate(s32); extern void fn_1_76E8(unkStruct7 *); extern void fn_1_77C8(unkStruct7 *, u8); // bss unkStruct3 *lbl_1_bss_30; // data s32 lbl_1_data_228[9] = { DATA_MAKE_NUM(DATADIR_M446, 10), DATA_MAKE_NUM(DATADIR_M446, 11), DATA_MAKE_NUM(DATADIR_M446, 12), DATA_MAKE_NUM(DATADIR_M446, 13), DATA_MAKE_NUM(DATADIR_M446, 14), DATA_MAKE_NUM(DATADIR_M446, 15), DATA_MAKE_NUM(DATADIR_M446, 16), DATA_MAKE_NUM(DATADIR_M446, 17), DATA_MAKE_NUM(DATADIR_M446, 33), }; s32 lbl_1_data_24C[9][4] = { { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 54), DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), DATA_MAKE_NUM(DATADIR_MARIOMOT, 114), }, { DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 54), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 23), DATA_MAKE_NUM(DATADIR_LUIGIMOT, 114), }, { DATA_MAKE_NUM(DATADIR_PEACHMOT, 0), DATA_MAKE_NUM(DATADIR_PEACHMOT, 54), DATA_MAKE_NUM(DATADIR_PEACHMOT, 23), DATA_MAKE_NUM(DATADIR_PEACHMOT, 114), }, { DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 54), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 23), DATA_MAKE_NUM(DATADIR_YOSHIMOT, 114), }, { DATA_MAKE_NUM(DATADIR_WARIOMOT, 0), DATA_MAKE_NUM(DATADIR_WARIOMOT, 54), DATA_MAKE_NUM(DATADIR_WARIOMOT, 23), DATA_MAKE_NUM(DATADIR_WARIOMOT, 114), }, { DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 54), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 23), DATA_MAKE_NUM(DATADIR_DONKEYMOT, 114), }, { DATA_MAKE_NUM(DATADIR_DAISYMOT, 0), DATA_MAKE_NUM(DATADIR_DAISYMOT, 54), DATA_MAKE_NUM(DATADIR_DAISYMOT, 23), DATA_MAKE_NUM(DATADIR_DAISYMOT, 114), }, { DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 54), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 23), DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 114), }, { DATA_MAKE_NUM(DATADIR_M446, 0x22), DATA_MAKE_NUM(DATADIR_M446, 0x23), DATA_MAKE_NUM(DATADIR_M446, 0x25), DATA_MAKE_NUM(DATADIR_M446, 0x24), }, }; m446Func8 lbl_1_data_2DC[5] = { NULL, fn_1_5B48, fn_1_5C24, fn_1_5D00, fn_1_6074 }; s32 fn_1_480C(void) { lbl_1_bss_30 = 0; return 1; } void fn_1_4824(void) { unkStruct3 *var_r31; void *var_r30; var_r31 = lbl_1_bss_30; if (var_r31) { do { var_r30 = var_r31->unk0; fn_1_509C(var_r30); var_r31 = var_r31->unk8; } while (var_r31); } } void fn_1_487C(void) { f32 temp_f31; unkStruct8 *temp_r31; unkStruct3 *var_r30; var_r30 = lbl_1_bss_30; if (var_r30) { do { temp_r31 = var_r30->unk0; if (lbl_1_data_2DC[temp_r31->unk18]) { lbl_1_data_2DC[temp_r31->unk18](temp_r31); } if (temp_r31->unkB4 != 0) { temp_f31 = sin((M_PI * (90.0f * temp_r31->unkC0)) / 180.0); temp_f31 *= temp_f31; temp_r31->unk48.x = (temp_r31->unk9C.x + (temp_f31 * (temp_r31->unkA8.x - temp_r31->unk9C.x))); temp_r31->unk48.y = (temp_r31->unk9C.y + (temp_f31 * (temp_r31->unkA8.y - temp_r31->unk9C.y))); temp_r31->unk48.z = (temp_r31->unk9C.z + (temp_f31 * (temp_r31->unkA8.z - temp_r31->unk9C.z))); temp_r31->unkC0 += temp_r31->unkC4; if (temp_r31->unkC0 >= 1.0f) { temp_r31->unk48.x = temp_r31->unkA8.x; temp_r31->unk48.y = temp_r31->unkA8.y; temp_r31->unk48.z = temp_r31->unkA8.z; temp_r31->unkB4 = 0; } } if (temp_r31->unk98 != 0) { temp_f31 = sin((M_PI * (90.0f * temp_r31->unkB8)) / 180.0); temp_f31 *= temp_f31; temp_r31->unk54.x = (temp_r31->unk80.x + (temp_f31 * (temp_r31->unk8C.x - temp_r31->unk80.x))); temp_r31->unk54.y = (temp_r31->unk80.y + (temp_f31 * (temp_r31->unk8C.y - temp_r31->unk80.y))); temp_r31->unk54.z = (temp_r31->unk80.z + (temp_f31 * (temp_r31->unk8C.z - temp_r31->unk80.z))); temp_r31->unkB8 = (temp_r31->unkB8 + temp_r31->unkBC); if (temp_r31->unkB8 >= 1.0f) { temp_r31->unk54.x = temp_r31->unk8C.x; temp_r31->unk54.y = temp_r31->unk8C.y; temp_r31->unk54.z = temp_r31->unk8C.z; temp_r31->unk98 = 0; } } fn_1_6578(temp_r31); var_r30 = var_r30->unk8; } while (var_r30); } } unkStruct8 *m446PlayerCreate(s32 arg0, unkStruct6 *arg1) { f32 var_f31; s32 var_r27; s32 var_r26; s16 var_r25; s16 var_r24; unkStruct3 *var_r28; s32 var_r30; unkStruct8 *var_r31; var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xCC, MEMORY_DEFAULT_NUM); if (!var_r31) { return NULL; } var_r31->unk0 = arg0; if (GWPlayerCfg[arg0].iscom != 0) { var_r27 = 1; } else { var_r27 = 0; } var_r31->unk68 = var_r27; var_r31->unk4 = arg1; if (GWPlayerCfg[arg0].character == 0xB) { var_r26 = 1; } else { var_r26 = 0; } var_r31->unk70 = var_r26; if (var_r31->unk70 != 0) { var_r25 = 8; } else { var_r25 = GWPlayerCfg[arg0].character; } var_r31->unk64 = var_r25; if (var_r31->unk68 != 0) { var_r24 = 4; } else { var_r24 = GWPlayerCfg[arg0].pad_idx; } var_r31->unk66 = var_r24; var_r31->unk65 = GWPlayerCfg[arg0].diff; var_r31->unk6C = 0; var_r31->unkC = 0; var_r31->unk10 = 2; var_r31->unk48.x = 0.0f; if (var_r31->unk70 != 0) { var_f31 = 70.0f; } else { var_f31 = 0.0f; } var_r31->unk48.y = var_f31; var_r31->unk48.z = 0.0f; var_r31->unk54.x = 0.0f; var_r31->unk54.y = 0.0f; var_r31->unk54.z = 0.0f; var_r31->unk60 = 1.0f; var_r31->unk38 = 0; var_r31->unk24 = 0; var_r31->unk74 = 0; var_r31->unk18 = 0; var_r31->unk1C = 0; var_r31->unk98 = 0; var_r31->unkB4 = 0; for (var_r30 = 0; var_r30 < 3; var_r30++) { var_r31->unk2C[var_r30] = NULL; } var_r31->unk8 = m446CursorCreate(1); if (!var_r31->unk8) { HuMemDirectFree(var_r31); return NULL; } fn_1_7884(var_r31->unk8); switch (var_r31->unk0) { case 0: var_r31->unk48.z = 150.0f; var_r31->unk54.y = 180.0f; break; case 1: var_r31->unk48.z = -150.0f; var_r31->unk54.y = 0.0f; break; } if (var_r31->unk70 != 0) { var_r31->unk3C[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M446, 0x20)); var_r31->unk3C[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M446, 0x21)); } else { var_r31->unk3C[0] = CharModelCreate(var_r31->unk64, 2); var_r31->unk3C[1] = Hu3DModelCreateFile(lbl_1_data_228[var_r31->unk64]); } Hu3DModelAmbSet(var_r31->unk3C[0], 0.0f, 0.0f, 0.0f); Hu3DModelAmbSet(var_r31->unk3C[1], 0.0f, 0.0f, 0.0f); Hu3DModelShadowSet(var_r31->unk3C[0]); Hu3DModelShadowSet(var_r31->unk3C[1]); Hu3DModelPosSet(var_r31->unk3C[1], 0.0f, 100.0f, 0.0f); Hu3DModelAttrReset(var_r31->unk3C[1], 0x40000001); Hu3DModelAttrSet(var_r31->unk3C[1], 1); Hu3DModelPosSet(var_r31->unk3C[1], 2000.0f, 2000.0f, 2000.0f); fn_1_637C(var_r31, 0); for (var_r30 = 0; var_r30 < 4; var_r30++) { if (var_r31->unk70 != 0) { var_r31->unk40[var_r30] = Hu3DJointMotionFile(var_r31->unk3C[0], lbl_1_data_24C[var_r31->unk64][var_r30]); } else { var_r31->unk40[var_r30] = CharModelMotionCreate(var_r31->unk64, lbl_1_data_24C[var_r31->unk64][var_r30]); } } if (var_r31->unk70 == 0) { CharModelMotionDataClose(var_r31->unk64); } if (var_r31->unk70 != 0) { Hu3DMotionSet(var_r31->unk3C[0], var_r31->unk40[0]); } else { CharModelMotionSet(var_r31->unk64, var_r31->unk40[0]); } Hu3DModelAttrSet(var_r31->unk3C[0], 0x40000001); var_r28 = fn_1_1DF4(var_r31); if (!var_r28) { OSReport("[!] m446PlayerCreate ERROR...\n"); HuMemDirectFree(var_r31); return NULL; } if (lbl_1_bss_30) { fn_1_1EC8(lbl_1_bss_30, var_r28); } else { lbl_1_bss_30 = var_r28; } return var_r31; } void fn_1_509C(unkStruct8 *arg0) { s32 var_r29; unkStruct3 *var_r30; var_r30 = lbl_1_bss_30; do { if (arg0 == var_r30->unk0) { if (var_r30 == lbl_1_bss_30) { lbl_1_bss_30 = var_r30->unk8; } fn_1_1F04(var_r30); fn_1_1E5C(var_r30); for (var_r29 = 0; var_r29 < 4; var_r29++) { if (arg0->unk70 != 0) { Hu3DMotionKill(arg0->unk40[var_r29]); } else { CharModelMotionKill(arg0->unk64, arg0->unk40[var_r29]); } } if (arg0->unk70 != 0) { Hu3DModelKill(arg0->unk3C[0]); Hu3DModelKill(arg0->unk3C[1]); } else { CharModelKill(arg0->unk64); Hu3DModelKill(arg0->unk3C[1]); } fn_1_76E8(arg0->unk8); HuMemDirectFree(arg0); break; } var_r30 = var_r30->unk8; } while (var_r30); } s32 m446PlayerAppendCard(unkStruct8 *arg0, unkStruct4 *arg1, s32 arg2) { Vec sp18; Vec spC; s32 temp_r0_2; s32 temp_r28; s32 temp_r27; s32 var_r29; if (arg0->unk38 >= 3) { OSReport("m446PlayerAppendCard ERROR...\n"); return 0; } for (var_r29 = 0; var_r29 < 3; var_r29++) { if (!arg0->unk2C[var_r29]) { break; } } if (var_r29 == 3) { OSReport("m446PlayerAppendCard ERROR...\n"); return 0; } arg0->unk2C[var_r29] = arg1; arg0->unk38++; sp18.y = 86.0f; switch (arg0->unk0) { case 0: sp18.x = -30.0f + (30.0f * var_r29); sp18.z = 45.0f; break; case 1: sp18.x = 30.0f - (30.0f * var_r29); sp18.z = -45.0f; break; } spC = arg1->unk34; switch (arg0->unk0) { case 0: spC.y = 0.0f; break; case 1: spC.y = 180.0f; break; } switch (arg2) { case 0: arg1->unk10 = sp18; arg1->unk34 = spC; arg1->unk58 = 1.5f; fn_1_272C(arg1); break; case 1: fn_1_27FC(arg1, &sp18, 0x3C); fn_1_2928(arg1, &spC, 0x1E); fn_1_29B4(arg1, 1.5f, 0x1E); break; case 4: fn_1_27FC(arg1, &sp18, 0x1E); fn_1_2928(arg1, &spC, 0x1E); fn_1_29B4(arg1, 1.5f, 0x1E); break; } temp_r28 = arg0->unk24; temp_r27 = arg0->unk20; fn_1_6620(arg0); if ((arg0->unk24 != 0) && (temp_r28 == 0)) { HuAudFXPlay(0x76B); fn_1_64BC(arg0, 1, 0x3C); } else if ((arg0->unk20 != 0) && (temp_r27 == 0)) { HuAudFXPlay(0x76B); fn_1_64BC(arg0, 0, 0x3C); } return 1; } s32 m446PlayerRemoveCard(unkStruct8 *arg0, unkStruct4 *arg1, s32 arg2) { Vec spC; s32 var_r30; if (arg0->unk38 <= 0) { OSReport("m446PlayerRemoveCard ERROR...\n"); return 0; } for (var_r30 = 0; var_r30 < 3; var_r30++) { if (arg0->unk2C[var_r30] == arg1) { break; } } if (var_r30 == 3) { OSReport("m446PlayerRemoveCard ERROR...\n"); return 0; } arg0->unk2C[var_r30] = NULL; arg0->unk38--; fn_1_2A58(arg1); fn_1_6620(arg0); switch (arg2) { case 3: spC = arg1->unk10; spC.y = 86.0f; spC.z = 0.0f; fn_1_2890(arg1, &spC, 0x1E, 0x21); fn_1_5E54(arg0, var_r30); break; } return 1; } s32 fn_1_5648(unkStruct8 *arg0, s32 arg1, unkStruct4 **arg2) { if ((arg1 < 0) || (arg1 >= 3)) { return 0; } *arg2 = arg0->unk2C[arg1]; return 1; } s32 fn_1_5678(unkStruct8 *arg0, unkStruct4 **arg1, s32 arg2) { s32 sp14[3]; Vec sp8; s32 var_r28; s32 var_r30; s32 var_r25; s32 var_r24; s32 var_r27; s32 var_r26; unkStruct4 *var_r29; var_r27 = 0; var_r26 = 0; var_r25 = 0; *arg1 = NULL; if (arg0->unk68 != 0) { if (arg0->unk6C == 0) { if (arg0->unk20 != 0) { var_r24 = fn_1_4720(arg0->unk4, arg0->unk28); if (var_r24 >= 1) { for (var_r30 = 0; var_r30 < 3; var_r30++) { var_r29 = arg0->unk2C[var_r30]; if (var_r29->unk0 != arg0->unk28) { arg0->unk74 = var_r30; break; } } } else { for (var_r30 = 0; var_r30 < 3; var_r30++) { var_r29 = arg0->unk2C[var_r30]; if (var_r29->unk0 != arg0->unk28) { break; } } var_r24 = fn_1_4720(arg0->unk4, var_r29->unk0); if (var_r24 >= 2) { for (var_r30 = 0; var_r30 < 3; var_r30++) { var_r29 = arg0->unk2C[var_r30]; if (var_r29->unk0 == arg0->unk28) { arg0->unk74 = var_r30; break; } } } else { arg0->unk74 = (fn_1_38F0() % 3); } } } else { for (var_r30 = 0; var_r30 < 3; var_r30++) { var_r29 = arg0->unk2C[var_r30]; sp14[var_r30] = fn_1_4720(arg0->unk4, var_r29->unk0); } for (var_r28 = 0; var_r28 < 5; var_r28++) { for (var_r30 = 0; var_r30 < 3; var_r30++) { if (var_r28 == sp14[var_r30]) { break; } } if (var_r30 < 3) { break; } } if (var_r28 == 5) { arg0->unk74 = (fn_1_38F0() % 3); } else { arg0->unk74 = var_r30; } } arg0->unk6C = 1; arg0->unk7C = 0x1E; } if (arg0->unk7C > 0) { arg0->unk7C--; } else { var_r27 = arg0->unk74 < arg0->unk10; var_r26 = arg0->unk74 > arg0->unk10; var_r25 = arg0->unk74 == arg0->unk10; arg0->unk7C = 0x12; } } else { switch (arg0->unk0) { case 0: var_r27 = (HuPadDStkRep[arg0->unk66] & 1) != 0; var_r26 = (HuPadDStkRep[arg0->unk66] & 2) != 0; break; case 1: var_r27 = (HuPadDStkRep[arg0->unk66] & 2) != 0; var_r26 = (HuPadDStkRep[arg0->unk66] & 1) != 0; break; } var_r25 = (HuPadBtnDown[arg0->unk66] & 0x100) != 0; } if (arg2 == 0) { if (var_r27 != 0) { if (--arg0->unk10 < 0) { arg0->unk10 = 2; } HuAudFXPlay(0); } if (var_r26 != 0) { if (++arg0->unk10 > 2) { arg0->unk10 = 0; } HuAudFXPlay(0); } } var_r29 = arg0->unk2C[arg0->unk10]; if (!var_r29) { return 0; } if (arg0->unk8->field00_bit0 == 0) { fn_1_77C8(arg0->unk8, arg0->unk64); } sp8 = var_r29->unk10; sp8.y++; arg0->unk8->unk20 = sp8; arg0->unk8->unk44 = 1.5f; if ((var_r25 != 0) || (arg2 != 0)) { HuAudFXPlay(0x769); *arg1 = var_r29; fn_1_7884(arg0->unk8); arg0->unk6C = 0; return 1; } return 0; } void fn_1_5B34(unkStruct8 *arg0) { arg0->unk18 = 1; arg0->unk1C = 0; } static const s32 lbl_1_rodata_1C8[4] = { 0, 1, 2, 3 }; void fn_1_5B48(unkStruct8 *arg0) { switch (arg0->unk1C) { case 0: if (arg0->unk70 != 0) { Hu3DMotionShiftSet(arg0->unk3C[0], arg0->unk40[2], 0.0f, 10.0f, HU3D_MOTATTR_NONE); } else { CharModelMotionShiftSet(arg0->unk64, arg0->unk40[2], 0.0f, 10.0f, HU3D_MOTATTR_NONE); } arg0->unk1C = 1; break; case 1: if (Hu3DMotionEndCheck(arg0->unk3C[0]) != 0) { arg0->unk18 = 0; } } } void fn_1_5C10(unkStruct8 *arg0) { arg0->unk18 = 2; arg0->unk1C = 0; } void fn_1_5C24(unkStruct8 *arg0) { switch (arg0->unk1C) { case 0: if (arg0->unk70 != 0) { Hu3DMotionShiftSet(arg0->unk3C[0], arg0->unk40[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); } else { CharModelMotionShiftSet(arg0->unk64, arg0->unk40[3], 0.0f, 10.0f, HU3D_MOTATTR_NONE); } arg0->unk1C = 1; break; case 1: if (Hu3DMotionEndCheck(arg0->unk3C[0]) != 0) { arg0->unk18 = 0; } } } void fn_1_5CEC(unkStruct8 *arg0) { arg0->unk18 = 3; arg0->unk1C = 0; } void fn_1_5D00(unkStruct8 *arg0) { Vec sp8; sp8 = arg0->unk54; switch (arg0->unk1C) { case 0: Hu3DModelAmbSet(arg0->unk3C[0], 0.8f, 0.8f, 0.8f); if (arg0->unk70 != 0) { Hu3DMotionShiftSet(arg0->unk3C[0], arg0->unk40[1], 0.0f, 10.0f, HU3D_MOTATTR_NONE); } else { CharModelMotionShiftSet(arg0->unk64, arg0->unk40[1], 0.0f, 10.0f, HU3D_MOTATTR_LOOP); Hu3DMotionStartEndSet(arg0->unk3C[0], 0.0f, 59.0f); } sp8.y = 0.0f; fn_1_6264(arg0, &sp8, 0x3C); arg0->unk1C = 1; arg0->unk14 = 0; return; case 1: if (arg0->unk98 == 0) { arg0->unk18 = 0; } } } void fn_1_5E54(unkStruct8 *arg0, s32 arg1) { Vec sp14; Vec sp8; f32 var_f31; f32 var_f30; f32 var_f29; if (arg0->unk70 != 0) { var_f31 = 95.0f; } else { var_f31 = 80.0f; } sp14.y = var_f31; switch (arg0->unk0) { case 0: sp14.x = -30.0f + (30.0f * arg1); sp14.z = 105.0f; sp8.x = 0.0f; sp8.y = 90.0f; sp8.z = 0.0f; break; case 1: sp14.x = 30.0f - (30.0f * arg1); if (arg0->unk70 != 0) { var_f30 = 30.0f; } else { var_f30 = 55.0f; } sp14.z = -50.0f - var_f30; sp8.x = 0.0f; if (arg0->unk70 != 0) { var_f29 = 180.0f; } else { var_f29 = -90.0f; } sp8.y = var_f29; sp8.z = 0.0f; break; } arg0->unk48 = sp14; arg0->unk54 = sp8; arg0->unk18 = 4; arg0->unk1C = 0; } void fn_1_6074(unkStruct8 *arg0) { Vec sp8; f32 var_f31; f32 var_f30; switch (arg0->unk1C) { case 0: arg0->unk1C = 1; arg0->unk14 = 0; case 1: sp8 = arg0->unk48; if (arg0->unk0 == 0) { var_f31 = -25.0f; } else { var_f31 = 25.0f; } sp8.z += var_f31; fn_1_62F0(arg0, &sp8, 0x1E); arg0->unk1C = 2; arg0->unk14 = 0; break; case 2: if (arg0->unk14++ < 0x1E) break; arg0->unk1C = 3; case 3: Hu3DModelAttrSet(arg0->unk3C[1], 0x40000001); arg0->unk1C = 4; arg0->unk14 = 0; break; case 4: if (arg0->unk14 == 1) { Hu3DModelAttrReset(arg0->unk3C[1], 0x40000001); } if (arg0->unk14++ < 0x1E) break; arg0->unk1C = 5; case 5: sp8 = arg0->unk48; if (arg0->unk0 == 0) { var_f30 = -50.0f; } else { var_f30 = 50.0f; } sp8.z -= var_f30; fn_1_62F0(arg0, &sp8, 12); arg0->unk1C = 6; arg0->unk14 = 0; break; case 6: if (arg0->unk14++ >= 12) { arg0->unk18 = 0; } break; } } void fn_1_6264(unkStruct8 *arg0, Vec *arg1, s32 arg2) { arg0->unk8C = *arg1; arg0->unk80 = arg0->unk54; arg0->unkB8 = 0.0f; arg0->unkBC = (1.0f / arg2); arg0->unk98 = 1; } void fn_1_62F0(unkStruct8 *arg0, Vec *arg1, s32 arg2) { arg0->unkA8 = *arg1; arg0->unk9C = arg0->unk48; arg0->unkC0 = 0.0f; arg0->unkC4 = (1.0f / arg2); arg0->unkB4 = 1; } void fn_1_637C(unkStruct8 *arg0, s32 arg1) { f32 var_f31; arg0->unkC8 = arg1; switch (arg1) { case 0: Hu3DModelAttrReset(arg0->unk3C[0], 1); Hu3DModelAttrSet(arg0->unk3C[0], 0x40000001); Hu3DModelAttrSet(arg0->unk3C[1], 1); arg0->unk48.x = 0.0f; if (arg0->unk70 != 0) { var_f31 = 70.0f; } else { var_f31 = 0.0f; } arg0->unk48.y = var_f31; switch (arg0->unk0) { case 0: arg0->unk48.z = 150.0f; arg0->unk54.y = 180.0f; return; case 1: arg0->unk48.z = -150.0f; arg0->unk54.y = 0.0f; return; } break; case 1: Hu3DModelAttrReset(arg0->unk3C[1], 1); Hu3DModelAttrSet(arg0->unk3C[0], 1); break; } } void fn_1_64BC(unkStruct8 *arg0, s32 arg1, s32 arg2) { if (arg0->unk70 == 0) { switch (arg1) { case 0: omVibrate(arg0->unk0, arg2, 6, 6); return; case 1: omVibrate(arg0->unk0, arg2, 4, 2); return; case 2: omVibrate(arg0->unk0, arg2, 12, 0); break; } } } static inline unkStruct8UnkC8(unkStruct8 *arg0) { if (arg0->unkC8 == 0) { return 0; } else { return 1; } } void fn_1_6578(unkStruct8 *arg0) { s32 var_r30; var_r30 = unkStruct8UnkC8(arg0); Hu3DModelPosSet(arg0->unk3C[var_r30], arg0->unk48.x, arg0->unk48.y, arg0->unk48.z); Hu3DModelRotSet(arg0->unk3C[var_r30], arg0->unk54.x, arg0->unk54.y, arg0->unk54.z); Hu3DModelScaleSet(arg0->unk3C[var_r30], arg0->unk60, arg0->unk60, arg0->unk60); } void fn_1_6620(unkStruct8 *arg0) { s32 var_r26; unkStruct4 *temp_r27; unkStruct4 *temp_r30; s32 var_r29; s32 var_r28; arg0->unk20 = 0; arg0->unk24 = 0; for (var_r29 = 0; var_r29 < 3; var_r29++) { temp_r30 = arg0->unk2C[var_r29]; if (temp_r30) { fn_1_2A58(temp_r30); } } for (var_r29 = 0; var_r29 < 3; var_r29++) { var_r26 = 0; temp_r30 = arg0->unk2C[var_r29]; if (temp_r30) { for (var_r28 = 0; var_r28 < 3; var_r28++) { temp_r27 = arg0->unk2C[var_r28]; if ((var_r29 != var_r28) && (temp_r27) && (temp_r30->unk0 == temp_r27->unk0)) { var_r26++; } } if (var_r26 > 0) { arg0->unk28 = temp_r30->unk0; if (var_r26 == 1) { arg0->unk20 = 1; } else if (var_r26 == 2) { arg0->unk24 = 1; } for (var_r28 = 0; var_r28 < 3; var_r28++) { temp_r27 = arg0->unk2C[var_r28]; if ((temp_r27) && (temp_r30->unk0 == temp_r27->unk0)) { fn_1_2A1C(temp_r27); } } break; } } } }