halfway point (fn_1_E034)
This commit is contained in:
parent
588c7f21ad
commit
d117010759
3 changed files with 991 additions and 4 deletions
|
|
@ -1,12 +1,41 @@
|
|||
#include "REL/m440Dll.h"
|
||||
|
||||
#include "string.h"
|
||||
#include "math.h"
|
||||
#include "ext_math.h"
|
||||
#include "game/flag.h"
|
||||
#include "game/gamework_data.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/pad.h"
|
||||
|
||||
// bss
|
||||
omObjData* lbl_1_bss_C0[4];
|
||||
s16 lbl_1_bss_B8[4];
|
||||
Vec lbl_1_bss_88[4];
|
||||
f32 lbl_1_bss_84;
|
||||
s16 lbl_1_bss_74;
|
||||
u8 lbl_1_bss_72;
|
||||
s16 lbl_1_bss_70;
|
||||
|
||||
// data
|
||||
s16 lbl_1_data_1D8 = 2;
|
||||
s16 lbl_1_data_1DA = -1;
|
||||
u32 lbl_1_data_1DC[8][2] = {
|
||||
{ 0x5F0000, 0 },
|
||||
{ 0x5F0002, 0 },
|
||||
{ 0x5F0003, 0 },
|
||||
{ 0x5F0038, 0 },
|
||||
{ 0x5F0048, 0 },
|
||||
{ 0x5F0017, 0 },
|
||||
{ 0x47000C, 1 },
|
||||
{ 0x5F0036, 0 }
|
||||
};
|
||||
f32 lbl_1_data_21C[4] = {
|
||||
210.0f, 190.0f, 170.0f, 0.0f
|
||||
};
|
||||
|
||||
// prototypes
|
||||
void fn_1_AEE4(omObjData*);
|
||||
void fn_1_B180(omObjData*);
|
||||
|
||||
void fn_1_AE08(Process* arg0) {
|
||||
|
|
@ -15,10 +44,907 @@ void fn_1_AE08(Process* arg0) {
|
|||
omMakeGroupEx(arg0, 0, 4);
|
||||
omGetGroupMemberListEx(arg0, 0);
|
||||
|
||||
loop_2:
|
||||
for (var_r31 = 0; var_r31 < 4; var_r31++) {
|
||||
lbl_1_bss_C0[var_r31] = omAddObjEx(arg0, 0x64, 9, 8, 0, fn_1_AEE4);
|
||||
lbl_1_bss_C0[var_r31]->work[0] = var_r31;
|
||||
}
|
||||
omAddObjEx(arg0, 0x65, 0, 0, -1, fn_1_B180);
|
||||
}
|
||||
|
||||
void fn_1_AEE4(omObjData* arg0) {
|
||||
f32 var_f31;
|
||||
s32 temp_r28;
|
||||
s16 var_r29;
|
||||
unkObjStruct* temp_r31;
|
||||
|
||||
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x78, 0x10000000);
|
||||
temp_r31 = (unkObjStruct*)arg0->data;
|
||||
memset(temp_r31, 0, 0x78);
|
||||
arg0->stat |= 0x100;
|
||||
temp_r31->unk4 = arg0->work[0];
|
||||
temp_r31->unk6 = GWPlayerCfg[temp_r31->unk4].pad_idx;
|
||||
temp_r31->unk8 = GWPlayerCfg[temp_r31->unk4].character;
|
||||
arg0->model[0] = CharModelCreate(temp_r31->unk8, 4);
|
||||
Hu3DModelLayerSet(arg0->model[0], 1);
|
||||
Hu3DModelShadowSet(arg0->model[0]);
|
||||
|
||||
for (var_r29 = 0; var_r29 < 8; var_r29++) {
|
||||
if (lbl_1_data_1DC[var_r29][1] == 0) {
|
||||
arg0->motion[var_r29] = CharModelMotionCreate(temp_r31->unk8, lbl_1_data_1DC[var_r29][0]);
|
||||
} else {
|
||||
arg0->motion[var_r29] = CharModelMotionCreate(temp_r31->unk8, temp_r31->unk8 + lbl_1_data_1DC[var_r29][0]);
|
||||
}
|
||||
}
|
||||
CharModelVoiceEnableSet(temp_r31->unk8, arg0->motion[4], 0);
|
||||
CharModelMotionDataClose(temp_r31->unk8);
|
||||
Hu3DMotionSet(arg0->model[0], arg0->motion[0]);
|
||||
temp_r31->unk18.x = temp_r31->unk18.y = temp_r31->unk18.z = 0.0f;
|
||||
temp_r31->unk30.x = temp_r31->unk30.y = temp_r31->unk30.z = 0.0f;
|
||||
temp_r31->unk3C.y = 90.0f;
|
||||
temp_r31->unkC = 0;
|
||||
temp_r31->unkE = 0x78;
|
||||
temp_r31->unk10 = temp_r31->unk12 = temp_r31->unk14 = 0;
|
||||
if (temp_r31->unk8 == 5) {
|
||||
var_f31 = 350.0f;
|
||||
} else {
|
||||
var_f31 = 410.0f;
|
||||
}
|
||||
temp_r31->unk5C = var_f31;
|
||||
temp_r28 = temp_r31->unk4;
|
||||
if (_CheckFlag(0x1000CU) == 0) {
|
||||
GWPlayer[temp_r28].coin_win = 0;
|
||||
}
|
||||
arg0->func = fn_1_B17C;
|
||||
}
|
||||
|
||||
void fn_1_B17C(omObjData* arg0) {
|
||||
return;
|
||||
}
|
||||
|
||||
void fn_1_B180(omObjData* arg0) {
|
||||
s16 var_r29;
|
||||
s16 var_r31;
|
||||
s32 var_r28;
|
||||
u32 temp_r0;
|
||||
u32 temp_r3;
|
||||
u32 temp_r3_2;
|
||||
unkObjStruct* temp_r30;
|
||||
|
||||
var_r28 = GWSystem.player_curr;
|
||||
if (var_r28 < 0) {
|
||||
var_r28 = 0;
|
||||
}
|
||||
var_r29 = var_r28;
|
||||
|
||||
for (var_r31 = 0; var_r31 < 4; var_r31++) {
|
||||
lbl_1_bss_B8[var_r31] = var_r29;
|
||||
var_r29 = (var_r29 + 1) % 4;
|
||||
}
|
||||
lbl_1_bss_88->x = (700.0f * cos(M_PI/2 - M_PI/9));
|
||||
lbl_1_bss_88->z = (700.0f * sin(M_PI/2 - M_PI/9));
|
||||
|
||||
for (var_r31 = 1; var_r31 < 4; var_r31++) {
|
||||
lbl_1_bss_88[var_r31].x = lbl_1_bss_88[var_r31 - 1].x - 150.0f;
|
||||
lbl_1_bss_88[var_r31].z = lbl_1_bss_88->z;
|
||||
}
|
||||
|
||||
for (var_r31 = 0; var_r31 < 4; var_r31++) {
|
||||
temp_r30 = lbl_1_bss_C0[lbl_1_bss_B8[var_r31]]->data;
|
||||
temp_r30->unkA = var_r31;
|
||||
temp_r30->unk24.x = (lbl_1_bss_88[var_r31].x - 1000.0f);
|
||||
temp_r30->unk24.y = 0.0f;
|
||||
temp_r30->unk24.z = lbl_1_bss_88->z;
|
||||
}
|
||||
arg0->func = fn_1_B3A4;
|
||||
}
|
||||
|
||||
void fn_1_B3A4(omObjData* arg0) {
|
||||
f32 sp14;
|
||||
ModelData* sp8;
|
||||
f32 var_f31;
|
||||
s16 var_r28;
|
||||
s16 var_r29;
|
||||
omObjData* var_r30;
|
||||
unkObjStruct* var_r31;
|
||||
|
||||
for (var_r29 = 0; var_r29 < 4; var_r29++) {
|
||||
if (lbl_1_bss_B8[var_r29] != -1) {
|
||||
var_r30 = lbl_1_bss_C0[lbl_1_bss_B8[var_r29]];
|
||||
sp8 = &Hu3DData[var_r30->model[0]];
|
||||
var_r31 = (unkObjStruct*)var_r30->data;
|
||||
switch(var_r31->unk0 & 0xF) {
|
||||
case 1:
|
||||
var_r31->unkC++;
|
||||
var_f31 = (f32)var_r31->unkC / var_r31->unkE;
|
||||
if (var_f31 >= 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
var_r31->unkC = 0;
|
||||
if (lbl_1_bss_72 == 0) {
|
||||
lbl_1_bss_72 = 1;
|
||||
fn_1_F228();
|
||||
} else {
|
||||
fn_1_F4D4(var_r31, 15, 7);
|
||||
Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[1], 0.0f, 7.0f, 0x40000001);
|
||||
}
|
||||
}
|
||||
var_r28 = (var_r31->unkA == -1) ? 0 : var_r31->unkA;
|
||||
var_r31->unk18.x = var_r31->unk24.x + (lbl_1_bss_88[var_r28].x - var_r31->unk24.x) * var_f31;
|
||||
var_r31->unk18.y = 0.0f;
|
||||
var_r31->unk18.z = var_r31->unk24.z + (lbl_1_bss_88[var_r28].z - var_r31->unk24.z) * var_f31;
|
||||
var_r31->unk14++;
|
||||
var_f31 = var_r31->unk14 / 20.0f;
|
||||
if (var_f31 >= 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
var_r31->unk30.y = var_r31->unk3C.y + (90.0f - var_r31->unk3C.y) * var_f31;
|
||||
break;
|
||||
case 7:
|
||||
var_r31->unkC++;
|
||||
var_f31 = (f32)var_r31->unkC / 40.0f;
|
||||
if (var_f31 >= 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
var_r31->unkC = 0;
|
||||
fn_1_F4D4(var_r31, 15, 8);
|
||||
Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[0], 0.0f, 7.0f, 0x40000001);
|
||||
}
|
||||
var_r31->unk30.y = 90.0f + (lbl_1_data_21C[var_r31->unkA] - 90.0f) * var_f31;
|
||||
var_r31->unk3C = var_r31->unk30;
|
||||
break;
|
||||
case 2:
|
||||
fn_1_B884(var_r30, var_r31);
|
||||
break;
|
||||
case 3:
|
||||
if (fn_1_1954() != 0) {
|
||||
fn_1_16D8();
|
||||
fn_1_C1D4(var_r30, var_r31);
|
||||
fn_1_C944(var_r30, var_r31);
|
||||
fn_1_D34C(var_r30, var_r31);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
fn_1_D7F8(var_r30, var_r31);
|
||||
break;
|
||||
case 5:
|
||||
fn_1_E034(var_r30, var_r31);
|
||||
break;
|
||||
case 6:
|
||||
if (fn_1_E8AC(var_r30, var_r31) != 0) {
|
||||
lbl_1_bss_B8[var_r29] = -1;
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
case 8:
|
||||
break;
|
||||
}
|
||||
Hu3DModelPosSet(var_r30->model[0], var_r31->unk18.x, var_r31->unk18.y, var_r31->unk18.z);
|
||||
Hu3DModelRotSet(var_r30->model[0], var_r31->unk30.x, var_r31->unk30.y, var_r31->unk30.z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
f32 lbl_1_data_250 = 70.0f;
|
||||
|
||||
void fn_1_B884(omObjData* arg0, unkObjStruct* arg1) {
|
||||
s16 sp8[5] = {3, 1, 0, 2, 4};
|
||||
f32 var_f29;
|
||||
f32 var_f28;
|
||||
f32 var_f31;
|
||||
f32 var_f30;
|
||||
s16 temp_r0;
|
||||
s16 temp_r0_2;
|
||||
s16 temp_r3;
|
||||
s16 var_r30;
|
||||
|
||||
switch (lbl_1_bss_74) {
|
||||
case 0:
|
||||
lbl_1_data_250 -= 0.5f;
|
||||
if (lbl_1_data_250 <= 45.0f) {
|
||||
lbl_1_data_250 = 45.0f;
|
||||
lbl_1_bss_74++;
|
||||
}
|
||||
arg1->unk24 = arg1->unk18;
|
||||
arg1->unk18.x = (700.0 * cos((M_PI * lbl_1_data_250) / 180.0));
|
||||
arg1->unk18.z = (700.0 * sin((M_PI * lbl_1_data_250) / 180.0));
|
||||
var_f29 = (arg1->unk18.x - arg1->unk24.x);
|
||||
var_f28 = (arg1->unk18.z - arg1->unk24.z);
|
||||
var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI));
|
||||
if (var_f30 < 0.0f) {
|
||||
var_f30 += 360.0f;
|
||||
}
|
||||
arg1->unk68 = var_f30;
|
||||
arg1->unk30.y = var_f30;
|
||||
return;
|
||||
case 1:
|
||||
arg1->unkE++;
|
||||
var_f31 = arg1->unkE / 10.0f;
|
||||
if (var_f31 >= 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
var_f30 = 225.0f;
|
||||
arg1->unk30.y = arg1->unk68 + (var_f31 * (var_f30 - arg1->unk68));
|
||||
arg1->unkC++;
|
||||
var_f31 = arg1->unkC / 50.0f;
|
||||
if (var_f31 >= 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
arg1->unkC = arg1->unkE = 0;
|
||||
arg1->unk68 = arg1->unk30.y;
|
||||
|
||||
for (var_r30 = 0; var_r30 < 5; var_r30++) {
|
||||
if (lbl_1_data_14[sp8[var_r30]] != 0) {
|
||||
arg1->unk4A = arg1->unk60 = sp8[var_r30];
|
||||
break;
|
||||
}
|
||||
}
|
||||
lbl_1_bss_74++;
|
||||
}
|
||||
var_f29 = 700.0f + ((arg1->unk5C - 700.0f) * var_f31);
|
||||
arg1->unk18.x = (var_f29 * cos(M_PI/4));
|
||||
arg1->unk18.z = (var_f29 * sin(M_PI/4));
|
||||
var_f29 = 0.1f;
|
||||
var_f28 = 0.6f;
|
||||
if (var_f31 >= var_f29) {
|
||||
var_f31 -= var_f29;
|
||||
var_f31 *= (1.0f / var_f28);
|
||||
if (var_f31 > 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
arg1->unk18.y = 150.0f * var_f31;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
lbl_1_data_250++;
|
||||
if (lbl_1_data_250 >= lbl_1_data_0[arg1->unk60]) {
|
||||
lbl_1_data_250 = lbl_1_data_0[arg1->unk60];
|
||||
lbl_1_bss_74++;
|
||||
}
|
||||
arg1->unk24 = arg1->unk18;
|
||||
arg1->unk18.x = (arg1->unk5C * cos((M_PI * lbl_1_data_250) / 180.0));
|
||||
arg1->unk18.z = (arg1->unk5C * sin((M_PI * lbl_1_data_250) / 180.0));
|
||||
var_f29 = (arg1->unk18.x - arg1->unk24.x);
|
||||
var_f28 = (arg1->unk18.z - arg1->unk24.z);
|
||||
var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI));
|
||||
if (var_f30 < 0.0f) {
|
||||
var_f30 += 360.0f;
|
||||
}
|
||||
arg1->unkC++;
|
||||
var_f31 = arg1->unkC / 10.0f;
|
||||
if (var_f31 < 1.0f) {
|
||||
arg1->unk30.y = arg1->unk68 + (var_f31 * (var_f30 - arg1->unk68));
|
||||
} else {
|
||||
arg1->unk30.y = var_f30;
|
||||
}
|
||||
arg1->unk6C = arg1->unk30.y;
|
||||
return;
|
||||
case 3:
|
||||
arg1->unkE++;
|
||||
var_f31 = arg1->unkE / 10.0f;
|
||||
if (var_f31 >= 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
arg1->unkC = arg1->unkE = 0;
|
||||
lbl_1_bss_74++;
|
||||
Hu3DMotionShiftSet(*arg0->model, *arg0->motion, 0.0f, 7.0f, 0x40000001U);
|
||||
}
|
||||
|
||||
var_f30 = 90.0f - lbl_1_data_0[arg1->unk60];
|
||||
arg1->unk30.y = fn_1_927C(arg1->unk6C, var_f30, var_f31);
|
||||
return;
|
||||
case 4:
|
||||
if (++arg1->unkC > 0xF) {
|
||||
lbl_1_bss_74++;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (lbl_1_data_1DA < 0) {
|
||||
fn_1_181C();
|
||||
lbl_1_data_1DA++;
|
||||
return;
|
||||
}
|
||||
if (lbl_1_data_1DA == 0) {
|
||||
if (fn_1_1890() == 0) {
|
||||
lbl_1_data_1DA++;
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
lbl_1_bss_74 = 0;
|
||||
lbl_1_data_250 = 70.0f;
|
||||
arg1->unk48 = 0;
|
||||
arg1->unkC = arg1->unkE = 0;
|
||||
arg1->unk68 = lbl_1_data_0[arg1->unk60];
|
||||
arg1->unk6C = 0.0f;
|
||||
arg1->unk60 = 0;
|
||||
fn_1_D24C(arg1, arg1->unk30.y, arg1->unk30.y);
|
||||
fn_1_F4D4(arg1, 0xF, 3);
|
||||
fn_1_1768();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_C1D4(omObjData* arg0, unkObjStruct* arg1) {
|
||||
s16 sp12[5];
|
||||
s16 sp8[5];
|
||||
f32 var_f28;
|
||||
f32 var_f29;
|
||||
f32 var_f30;
|
||||
f32 var_f31;
|
||||
s16 temp_r0;
|
||||
s16 temp_r0_2;
|
||||
s16 temp_r3;
|
||||
s16 var_r29;
|
||||
s16 var_r28;
|
||||
s16 var_r30;
|
||||
|
||||
if (GWPlayerCfg[arg1->unk4].iscom != 0) {
|
||||
HuPadStkX[arg1->unk6] = 0;
|
||||
HuPadStkY[arg1->unk6] = 0;
|
||||
HuPadTrigR[arg1->unk6] = 0;
|
||||
HuPadBtn[arg1->unk6] = 0;
|
||||
switch (GWPlayerCfg[arg1->unk4].diff) {
|
||||
case 0:
|
||||
var_f31 = 0.3f;
|
||||
break;
|
||||
case 1:
|
||||
var_f31 = 0.3f;
|
||||
break;
|
||||
case 2:
|
||||
var_f31 = 0.3f;
|
||||
break;
|
||||
case 3:
|
||||
var_f31 = 0.3f;
|
||||
break;
|
||||
}
|
||||
|
||||
var_f31 += (0.1f * lbl_1_bss_70);
|
||||
for (var_r30 = 0, var_r29 = 0; var_r30 < 5; var_r30++) {
|
||||
if (lbl_1_data_14[var_r30] != 0) {
|
||||
sp8[var_r29++] = var_r30;
|
||||
}
|
||||
}
|
||||
var_r29--;
|
||||
if (arg1->unk50 == -1) {
|
||||
if (arg1->unk4C < var_f31) {
|
||||
arg1->unk50 = fn_1_4E54(-1);
|
||||
} else {
|
||||
for (var_r30 = 0, var_r28 = 0; var_r30 < 5; var_r30++) {
|
||||
if ((var_r30 != fn_1_4E54(-1)) && (lbl_1_data_14[var_r30] != 0)) {
|
||||
sp12[var_r28++] = var_r30;
|
||||
}
|
||||
}
|
||||
var_r28--;
|
||||
var_r30 = (((rand8() << 8) | rand8()) % (s16)(var_r28 + 1));
|
||||
arg1->unk50 = sp12[var_r30];
|
||||
}
|
||||
var_r30 = (((rand8() << 8) | rand8()) % (s16)(var_r29 + 1));
|
||||
arg1->unk52 = sp8[var_r30];
|
||||
}
|
||||
if (arg1->unk54 == 0) {
|
||||
var_f30 = ABS(arg1->unk68 - lbl_1_data_0[arg1->unk50]);
|
||||
if (var_f30 < 5.0f) {
|
||||
HuPadTrigR[arg1->unk6] = 0x96;
|
||||
HuPadBtn[arg1->unk6] = 0x20;
|
||||
return;
|
||||
}
|
||||
if (arg1->unk68 < lbl_1_data_0[arg1->unk50]) {
|
||||
HuPadStkX[arg1->unk6] = -0x2D;
|
||||
return;
|
||||
}
|
||||
if (arg1->unk68 > lbl_1_data_0[arg1->unk50]) {
|
||||
HuPadStkX[arg1->unk6] = 0x2D;
|
||||
}
|
||||
} else {
|
||||
var_f30 = ABS(arg1->unk68 - lbl_1_data_0[arg1->unk52]);
|
||||
if (var_f30 < 5.0f) {
|
||||
if (arg1->unk5A != 0) {
|
||||
arg1->unk56++;
|
||||
var_f31 = arg1->unk56 / 40.0f;
|
||||
if (var_f31 > 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
arg1->unk5A = 0;
|
||||
arg1->unk54--;
|
||||
var_r30 = (((rand8() << 8) | rand8()) % (s16)(var_r29 + 1));
|
||||
arg1->unk52 = sp8[var_r30];
|
||||
}
|
||||
HuPadTrigR[arg1->unk6] = (u8) (arg1->unk58 * var_f31);
|
||||
return;
|
||||
}
|
||||
if ((((rand8() << 8) | rand8()) % 101) < 0x32) {
|
||||
arg1->unk56 = 0;
|
||||
arg1->unk58 = ((((rand8() << 8) | rand8()) % 81) + 0x32);
|
||||
arg1->unk5A = 1;
|
||||
return;
|
||||
}
|
||||
arg1->unk54--;
|
||||
var_r30 = (((rand8() << 8) | rand8()) % (s16)(var_r29 + 1));
|
||||
arg1->unk52 = sp8[var_r30];
|
||||
return;
|
||||
}
|
||||
if (arg1->unk68 < lbl_1_data_0[arg1->unk52]) {
|
||||
HuPadStkX[arg1->unk6] = -0x2D;
|
||||
return;
|
||||
}
|
||||
if (arg1->unk68 > lbl_1_data_0[arg1->unk52]) {
|
||||
HuPadStkX[arg1->unk6] = 0x2D;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_C944(omObjData* arg0, unkObjStruct* arg1) {
|
||||
s16 sp8;
|
||||
f32 var_f26;
|
||||
f32 var_f25;
|
||||
f32 var_f28;
|
||||
f32 temp_f27;
|
||||
f32 var_f29;
|
||||
f32 var_f30;
|
||||
f32 var_f31;
|
||||
s16 var_r28;
|
||||
s16 var_r30;
|
||||
s16 var_r29;
|
||||
|
||||
if (fn_1_17CC() < -1) {
|
||||
fn_1_1708();
|
||||
HuPadStkX[arg1->unk6] = 0;
|
||||
HuPadStkY[arg1->unk6] = 0;
|
||||
HuPadTrigR[arg1->unk6] = 0x96;
|
||||
HuPadBtn[arg1->unk6] = 0x20;
|
||||
} else {
|
||||
var_r29 = HuPadStkX[arg1->unk6];
|
||||
sp8 = HuPadStkY[arg1->unk6];
|
||||
}
|
||||
if ((arg1->unk48 & 8) == 0) {
|
||||
var_r30 = -1;
|
||||
if (ABS(var_r29) < 7) {
|
||||
var_r30 = fn_1_CFAC(arg1, 0);
|
||||
} else {
|
||||
if (var_r29 > 0) {
|
||||
arg1->unk48 = arg1->unk48 & 0xFFFFFFFD;
|
||||
arg1->unk48 = arg1->unk48 | 1;
|
||||
} else {
|
||||
arg1->unk48 = arg1->unk48 & 0xFFFFFFFE;
|
||||
arg1->unk48 = arg1->unk48 | 2;
|
||||
}
|
||||
var_r30 = fn_1_CFAC(arg1, 1);
|
||||
if (var_r30 >= 0x64) {
|
||||
var_r30 -= 0x64;
|
||||
arg1->unk4A = var_r30;
|
||||
arg1->unk48 = arg1->unk48 & 0xFFFFFFFC;
|
||||
}
|
||||
}
|
||||
if ((arg1->unk48 & 1) != 0) {
|
||||
arg1->unk68 -= 1.0f;
|
||||
if ((var_r30 != -1) && (lbl_1_data_0[var_r30] > arg1->unk68)) {
|
||||
arg1->unk68 = lbl_1_data_0[var_r30];
|
||||
arg1->unk4A = var_r30;
|
||||
arg1->unk48 = arg1->unk48 & 0xFFFFFFFE;
|
||||
}
|
||||
} else if ((arg1->unk48 & 2) != 0) {
|
||||
arg1->unk68++;
|
||||
if ((var_r30 != -1) && (lbl_1_data_0[var_r30] < arg1->unk68)) {
|
||||
arg1->unk68 = lbl_1_data_0[var_r30];
|
||||
arg1->unk4A = var_r30;
|
||||
arg1->unk48 = arg1->unk48 & 0xFFFFFFFD;
|
||||
}
|
||||
}
|
||||
arg1->unk24 = arg1->unk18;
|
||||
arg1->unk18.x = (arg1->unk5C * cos((M_PI * arg1->unk68) / 180.0));
|
||||
arg1->unk18.z = (arg1->unk5C * sin((M_PI * arg1->unk68) / 180.0));
|
||||
if ((arg1->unk48 & 3) != 0) {
|
||||
arg1->unk48 = arg1->unk48 & ~4;
|
||||
var_f26 = (arg1->unk18.x - arg1->unk24.x);
|
||||
var_f25 = (arg1->unk18.z - arg1->unk24.z);
|
||||
var_f29 = (180.0 * (atan2(var_f26, var_f25) / M_PI));
|
||||
if (var_f29 < 0.0f) {
|
||||
var_f29 += 360.0f;
|
||||
}
|
||||
fn_1_D24C(arg1, arg1->unk30.y, var_f29);
|
||||
} else {
|
||||
arg1->unk48 |= 4;
|
||||
var_f29 = 90.0f - lbl_1_data_0[arg1->unk4A];
|
||||
fn_1_D24C(arg1, arg1->unk30.y, var_f29);
|
||||
}
|
||||
arg1->unkC++;
|
||||
var_f28 = (f32)arg1->unkC / arg1->unkE;
|
||||
if (arg1->unkC >= arg1->unkE) {
|
||||
arg1->unkC = arg1->unkE;
|
||||
var_f28 = 1.0f;
|
||||
if ((arg1->unk48 & 4) != 0) {
|
||||
fn_1_ED88(arg0, 0, 0x40000001);
|
||||
} else {
|
||||
fn_1_ED88(arg0, 2, 0x40000001);
|
||||
}
|
||||
} else {
|
||||
fn_1_ED88(arg0, 2, 0x40000001);
|
||||
}
|
||||
if ((arg1->unk48 & 4) != 0) {
|
||||
arg1->unk30.y = fn_1_927C(arg1->unk6C, arg1->unk70, var_f28);
|
||||
return;
|
||||
}
|
||||
var_f31 = arg1->unk6C;
|
||||
temp_f27 = arg1->unk70;
|
||||
if ((arg1->unk48 & 1) != 0) {
|
||||
if (var_f31 > temp_f27) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
} else if (((arg1->unk48 & 2) != 0) && (var_f31 < temp_f27)) {
|
||||
var_f31 += 360.0f;
|
||||
}
|
||||
var_f30 = var_f31 + (var_f28 * (temp_f27 - var_f31));
|
||||
if (var_f30 < 0.0f) {
|
||||
var_f30 += 360.0f;
|
||||
} else {
|
||||
if (var_f30 >= 360.0f) {
|
||||
var_f30 -= 360.0f;
|
||||
}
|
||||
}
|
||||
arg1->unk30.y = var_f30;
|
||||
}
|
||||
}
|
||||
|
||||
s16 fn_1_CFAC(unkObjStruct* arg0, u8 arg1) {
|
||||
f32 var_f31;
|
||||
s16 var_r30;
|
||||
s16 var_r31;
|
||||
|
||||
var_f31 = 999.0f;
|
||||
var_r30 = -1;
|
||||
if ((arg0->unk48 & 1) != 0) {
|
||||
for (var_r31 = 0; var_r31 < 5; var_r31++) {
|
||||
if (lbl_1_data_14[var_r31] != 0) {
|
||||
if (arg1 == 0) {
|
||||
if (lbl_1_data_0[var_r31] > arg0->unk68) {
|
||||
continue;
|
||||
}
|
||||
} else if (lbl_1_data_0[var_r31] >= arg0->unk68) {
|
||||
continue;
|
||||
}
|
||||
if (var_f31 > (arg0->unk68 - lbl_1_data_0[var_r31])) {
|
||||
var_r30 = var_r31;
|
||||
var_f31 = arg0->unk68 - lbl_1_data_0[var_r31];
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if ((arg0->unk48 & 2) != 0) {
|
||||
for (var_r31 = 0; var_r31 < 5; var_r31++) {
|
||||
if (lbl_1_data_14[var_r31] != 0) {
|
||||
if (arg1 == 0) {
|
||||
if (lbl_1_data_0[var_r31] < arg0->unk68) {
|
||||
continue;
|
||||
}
|
||||
} else if (lbl_1_data_0[var_r31] <= arg0->unk68) {
|
||||
continue;
|
||||
}
|
||||
if (var_f31 > (lbl_1_data_0[var_r31] - arg0->unk68)) {
|
||||
var_r30 = var_r31;
|
||||
var_f31 = lbl_1_data_0[var_r31] - arg0->unk68;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((var_r30 == -1) && (arg1 != 0)) {
|
||||
for (var_r31 = 0; var_r31 < 5; var_r31++) {
|
||||
if ((lbl_1_data_14[var_r31] != 0) && (arg0->unk68 == lbl_1_data_0[var_r31])) {
|
||||
var_r30 = var_r31 + 0x64;
|
||||
}
|
||||
}
|
||||
}
|
||||
return var_r30;
|
||||
}
|
||||
|
||||
void fn_1_D24C(unkObjStruct* arg0, f32 arg1, f32 arg2) {
|
||||
f32 var_f28;
|
||||
f32 var_f29;
|
||||
f32 var_f30;
|
||||
f32 var_f31;
|
||||
|
||||
var_f28 = 10.0f;
|
||||
arg0->unk6C = arg1;
|
||||
arg0->unk70 = arg2;
|
||||
var_f31 = ABS(arg1 - arg2);
|
||||
if (var_f31 > 180.0f) {
|
||||
var_f31 -= 360.0f;
|
||||
}
|
||||
var_f31 = ABS(var_f31);
|
||||
arg0->unkC = 0;
|
||||
arg0->unkE = ((var_f28 / 90.0f) * var_f31);
|
||||
}
|
||||
|
||||
void fn_1_D34C(omObjData* arg0, unkObjStruct* arg1) {
|
||||
ModelData* temp_r30;
|
||||
f32 temp_f28;
|
||||
f32 temp_f29;
|
||||
f32 temp_f30;
|
||||
f32 var_f31;
|
||||
f32 var_f26;
|
||||
|
||||
temp_r30 = &Hu3DData[arg0->model[0]];
|
||||
temp_f29 = 7.0f;
|
||||
temp_f28 = Hu3DMotionMaxTimeGet(arg0->model[0]) - temp_f29;
|
||||
temp_f30 = HuPadTrigR[arg1->unk6];
|
||||
if ((temp_r30->unk_0C == -1) && (temp_r30->unk_08 == arg0->motion[0]) && ((arg1->unk48 & 8) == 0) && (temp_f30 > 10.0f)) {
|
||||
arg1->unk48 |= 8;
|
||||
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[3], 0.0f, 7.0f, 0U);
|
||||
}
|
||||
if ((arg1->unk48 & 8) != 0) {
|
||||
if (temp_f30 <= 10.0f) {
|
||||
fn_1_4E00(arg1->unk4A, -1.0f);
|
||||
arg1->unk48 &= ~8;
|
||||
temp_r30->unk_68 = 1.0f;
|
||||
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 7.0f, 0x40000001U);
|
||||
} else if (temp_f30 > 10.0f) {
|
||||
if ((HuPadBtn[arg1->unk6] & 0x20) != 0) {
|
||||
arg1->unk60 = 0;
|
||||
arg1->unk68 = temp_f30;
|
||||
arg1->unk6C = 0.0f;
|
||||
arg1->unk48 = 0;
|
||||
lbl_1_data_14[arg1->unk4A] = 0;
|
||||
if (fn_1_17CC() < 270.0f) {
|
||||
fn_1_1708();
|
||||
}
|
||||
fn_1_F4D4(arg1, 0xF, 4);
|
||||
}
|
||||
if (temp_r30->unk_0C == -1) {
|
||||
temp_r30->unk_68 = 0.0f;
|
||||
var_f31 = 0.006666667f * (temp_f30 - 10.0f);
|
||||
if (var_f31 > 0.8f) {
|
||||
var_f31 = 0.8f;
|
||||
}
|
||||
var_f31 = temp_f29 + (var_f31 * temp_f28);
|
||||
var_f26 = ABS(temp_r30->unk_64 - var_f31);
|
||||
if (var_f26 < 1.0f) {
|
||||
temp_r30->unk_64 = var_f31;
|
||||
}
|
||||
if (temp_r30->unk_64 < var_f31) {
|
||||
temp_r30->unk_64 += 1.0f;
|
||||
} else if (temp_r30->unk_64 > var_f31) {
|
||||
temp_r30->unk_64 -= 1.0f;
|
||||
}
|
||||
var_f31 = (temp_r30->unk_64 - temp_f29) / temp_f28;
|
||||
fn_1_4E00(arg1->unk4A, var_f31);
|
||||
}
|
||||
}
|
||||
arg1->unk18.x = (410.0 * cos((M_PI * lbl_1_data_0[arg1->unk4A]) / 180.0));
|
||||
arg1->unk18.z = (410.0 * sin((M_PI * lbl_1_data_0[arg1->unk4A]) / 180.0));
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_D7F8(omObjData* arg0, unkObjStruct* arg1) {
|
||||
ModelData* temp_r29;
|
||||
f32 temp_f28;
|
||||
f32 temp_f29;
|
||||
f32 var_f26;
|
||||
f32 var_f30;
|
||||
f32 var_f31;
|
||||
|
||||
temp_r29 = &Hu3DData[arg0->model[0]];
|
||||
temp_f29 = 7.0f;
|
||||
temp_f28 = Hu3DMotionMaxTimeGet(arg0->model[0]) - temp_f29;
|
||||
switch (arg1->unk60) {
|
||||
case 0:
|
||||
if (temp_r29->unk_0C == -1) {
|
||||
arg1->unk68 += 40.0f;
|
||||
temp_r29->unk_68 = 0.0f;
|
||||
var_f31 = 0.006666667f * (arg1->unk68 - 10.0f);
|
||||
if (var_f31 > 0.8f) {
|
||||
var_f31 = 0.8f;
|
||||
}
|
||||
var_f30 = 0.01f * (arg1->unk68 - 130.0f);
|
||||
if (var_f30 > 0.19999999f) {
|
||||
var_f30 = 0.19999999f;
|
||||
} else if (var_f30 < 0.0f) {
|
||||
var_f30 = 0.0f;
|
||||
}
|
||||
var_f31 += var_f30;
|
||||
var_f31 = var_f30 = temp_f29 + (var_f31 * temp_f28);
|
||||
var_f26 = ABS(temp_r29->unk_64 - var_f31);
|
||||
if (var_f26 < 1.0f) {
|
||||
temp_r29->unk_64 = var_f31;
|
||||
}
|
||||
if (temp_r29->unk_64 < var_f31) {
|
||||
temp_r29->unk_64 += 3.0f;
|
||||
} else if (temp_r29->unk_64 > var_f31) {
|
||||
temp_r29->unk_64 -= 3.0f;
|
||||
}
|
||||
var_f31 = (temp_r29->unk_64 - temp_f29) / temp_f28;
|
||||
fn_1_4E00(arg1->unk4A, var_f31);
|
||||
arg1->unk18.x = (410.0 * cos((M_PI * lbl_1_data_0[arg1->unk4A]) / 180.0));
|
||||
arg1->unk18.z = (410.0 * sin((M_PI * lbl_1_data_0[arg1->unk4A]) / 180.0));
|
||||
if (arg1->unk68 >= 150.0f) {
|
||||
arg1->unk68 = 150.0f;
|
||||
if (temp_r29->unk_64 == var_f30) {
|
||||
arg1->unkC = 0;
|
||||
arg1->unk68 = arg1->unk30.y;
|
||||
arg1->unk6C = 180.0f + arg1->unk30.y;
|
||||
if (arg1->unk6C >= 360.0f) {
|
||||
arg1->unk6C -= 360.0f;
|
||||
}
|
||||
arg1->unk60++;
|
||||
HuAudFXPlay(0x70B);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (++arg1->unkC > 0xA) {
|
||||
arg1->unkC = 0;
|
||||
Hu3DMotionSpeedSet(arg0->model[0], 2.0f);
|
||||
if ((arg1->unk6C - arg1->unk68) > 0.0f) {
|
||||
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[7], 64.0f, 7.0f, 0U);
|
||||
} else {
|
||||
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[7], 4.0f, 7.0f, 0U);
|
||||
}
|
||||
Hu3DMotionShiftSpeedSet(arg0->model[0], 2.0f);
|
||||
arg1->unk60++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
arg1->unkC++;
|
||||
var_f31 = arg1->unkC / 30.0f;
|
||||
arg1->unk18.x = ((410.0f + (var_f31 * (arg1->unk5C - 410.0f))) * cos((M_PI * lbl_1_data_0[arg1->unk4A]) / 180.0));
|
||||
arg1->unk18.z = ((410.0f + (var_f31 * (arg1->unk5C - 410.0f))) * sin((M_PI * lbl_1_data_0[arg1->unk4A]) / 180.0));
|
||||
if (var_f31 >= 1.0f) {
|
||||
arg1->unkC = 0;
|
||||
var_f31 = 1.0f;
|
||||
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 7.0f, 0x40000001U);
|
||||
arg1->unk60++;
|
||||
} else if (((arg1->unk6C - arg1->unk68) < 0.0f) && (Hu3DMotionShiftIDGet(arg0->model[0]) < 0)) {
|
||||
if (Hu3DMotionTimeGet(arg0->model[0]) >= 60.0f) {
|
||||
Hu3DMotionSpeedSet(arg0->model[0], 0.0f);
|
||||
}
|
||||
}
|
||||
arg1->unk30.y = fn_1_927C(arg1->unk68, arg1->unk6C, var_f31);
|
||||
break;
|
||||
case 3:
|
||||
if (++arg1->unkC > 0x3C) {
|
||||
if (fn_1_4E54(arg1->unk4A) == 0) {
|
||||
fn_1_4EEC(7U, 3U);
|
||||
} else {
|
||||
fn_1_4EEC(7U, 4U);
|
||||
}
|
||||
arg1->unkC = 0;
|
||||
arg1->unk60++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (fn_1_4EA8(0x100U) != 0) {
|
||||
fn_1_4EEC(0x100U, 0U);
|
||||
if (fn_1_4E54(arg1->unk4A) == 0) {
|
||||
fn_1_F4D4(arg1, 0xF, 5);
|
||||
} else {
|
||||
fn_1_F4D4(arg1, 0xF, 6);
|
||||
}
|
||||
arg1->unkC = arg1->unkE = 0;
|
||||
arg1->unk60 = arg1->unk62 = 0;
|
||||
arg1->unk68 = arg1->unk6C = 0.0f;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (fn_1_17F4() >= 0) {
|
||||
if (fn_1_17CC() < 270.0f) {
|
||||
fn_1_1708();
|
||||
return;
|
||||
}
|
||||
fn_1_16D8();
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_E034(omObjData* arg0, unkObjStruct* arg1) {
|
||||
ModelData* temp_r27;
|
||||
f32 var_f28;
|
||||
f32 var_f29;
|
||||
f32 var_f30;
|
||||
f32 var_f31;
|
||||
s16 var_r28;
|
||||
s16 var_r29;
|
||||
|
||||
temp_r27 = &Hu3DData[arg0->model[0]];
|
||||
switch (arg1->unk60) {
|
||||
case 0:
|
||||
lbl_1_bss_84 = lbl_1_data_0[arg1->unk4A];
|
||||
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[4], 0.0f, 7.0f, 0x40000001);
|
||||
HuAudCharVoicePlay(arg1->unk8, 0x125);
|
||||
arg1->unk60++;
|
||||
break;
|
||||
case 1:
|
||||
if (temp_r27->unk_64 >= (Hu3DMotionMaxTimeGet(arg0->model[0]) - 1.0f)) {
|
||||
Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 7.0f, 0x40000001U);
|
||||
arg1->unkC = arg1->unkE = 0;
|
||||
arg1->unk68 = arg1->unk30.y;
|
||||
|
||||
for (var_r29 = 0, var_r28 = -1; var_r29 < 5; var_r29++) {
|
||||
if (lbl_1_data_14[var_r29] != 0) {
|
||||
var_r28++;
|
||||
}
|
||||
}
|
||||
if (var_r28 == 0) {
|
||||
lbl_1_bss_70++;
|
||||
fn_1_4EEC(0x18, 0x18);
|
||||
HuAudFXPlay(0x70E);
|
||||
}
|
||||
arg1->unk60++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
lbl_1_bss_84++;
|
||||
if (lbl_1_bss_84 >= 135.0f) {
|
||||
lbl_1_bss_84 = 135.0f;
|
||||
arg1->unkE = arg1->unk10 = 0;
|
||||
fn_1_F228();
|
||||
arg1->unk60++;
|
||||
}
|
||||
arg1->unk24 = arg1->unk18;
|
||||
arg1->unk18.x = (arg1->unk5C * cos((M_PI * lbl_1_bss_84) / 180.0));
|
||||
arg1->unk18.z = (arg1->unk5C * sin((M_PI * lbl_1_bss_84) / 180.0));
|
||||
var_f29 = (arg1->unk18.x - arg1->unk24.x);
|
||||
var_f28 = (arg1->unk18.z - arg1->unk24.z);
|
||||
var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI));
|
||||
if (var_f30 < 0.0f) {
|
||||
var_f30 += 360.0f;
|
||||
}
|
||||
arg1->unkC++;
|
||||
var_f31 = arg1->unkC / 10.0f;
|
||||
if (var_f31 >= 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
arg1->unk30.y = fn_1_927C(arg1->unk68, var_f30, var_f31);
|
||||
arg1->unk6C = arg1->unk30.y;
|
||||
break;
|
||||
case 3:
|
||||
arg1->unkE++;
|
||||
var_f31 = arg1->unkE / 10.0f;
|
||||
if (var_f31 >= 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
var_f30 = 315.0f;
|
||||
arg1->unk30.y = arg1->unk6C + (var_f31 * (var_f30 - arg1->unk6C));
|
||||
arg1->unk10++;
|
||||
var_f31 = arg1->unk10 / 50.0f;
|
||||
if (var_f31 >= 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
arg1->unkC = arg1->unkE = arg1->unk10 = 0;
|
||||
arg1->unk68 = arg1->unk30.y;
|
||||
arg1->unk60++;
|
||||
}
|
||||
var_f29 = arg1->unk5C + ((700.0f - arg1->unk5C) * var_f31);
|
||||
arg1->unk18.x = (var_f29 * cos(2.356194490192345)); // atan2(1.0, -1.0)
|
||||
arg1->unk18.z = (var_f29 * sin(2.356194490192345));
|
||||
var_f29 = 0.3f;
|
||||
var_f28 = 0.6f;
|
||||
if (var_f31 >= var_f29) {
|
||||
var_f31 -= var_f29;
|
||||
var_f31 *= (1.0f / var_f28);
|
||||
if (var_f31 > 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
arg1->unk18.y = 150.0f * (1.0f - var_f31);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
lbl_1_bss_84 -= 0.5f;
|
||||
if (lbl_1_bss_84 <= 110.0f) {
|
||||
lbl_1_bss_84 = 110.0f;
|
||||
arg1->unk60 = 0;
|
||||
arg1->unkC = 0;
|
||||
arg1->unkE = (3 - lbl_1_data_1D8) * 0x1E;
|
||||
arg1->unk14 = 0;
|
||||
arg1->unk3C.y = 90.0f;
|
||||
fn_1_F4D4(arg1, 0xF, 1);
|
||||
}
|
||||
arg1->unk24 = arg1->unk18;
|
||||
arg1->unk18.x = (700.0 * cos((M_PI * lbl_1_bss_84) / 180.0));
|
||||
arg1->unk18.z = (700.0 * sin((M_PI * lbl_1_bss_84) / 180.0));
|
||||
var_f29 = (arg1->unk18.x - arg1->unk24.x);
|
||||
var_f28 = (arg1->unk18.z - arg1->unk24.z);
|
||||
var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI));
|
||||
if (var_f30 < 0.0f) {
|
||||
var_f30 += 360.0f;
|
||||
}
|
||||
arg1->unk10++;
|
||||
var_f31 = arg1->unk10 / 10.0f;
|
||||
if (var_f31 >= 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
arg1->unk30.y = fn_1_927C(arg1->unk68, var_f30, var_f31);
|
||||
break;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue