132 lines
4.1 KiB
C
132 lines
4.1 KiB
C
#include <ultra64.h>
|
|
#include "functions.h"
|
|
#include "variables.h"
|
|
|
|
extern f32 func_80258780(f32[3], f32[3]);
|
|
|
|
typedef struct{
|
|
f32 unk0;
|
|
f32 unk4[3];
|
|
f32 unk10[3];
|
|
f32 unk1C[3];
|
|
f32 unk28[3];
|
|
f32 unk34[3];
|
|
f32 unk40[3];
|
|
f32 unk4C[3];
|
|
f32 unk58[3];
|
|
f32 unk64;
|
|
f32 unk68;
|
|
s32 unk6C;
|
|
}Struct_core2_CB050_0;
|
|
|
|
/* .code */
|
|
void func_80351FE0(Struct_core2_CB050_0 *arg0, Struct68s *arg1) {
|
|
f32 sp3C[3];
|
|
f32 sp30[3];
|
|
f32 sp24[3];
|
|
|
|
arg0->unk0 = randf2(80.0f, 100.0f);
|
|
arg0->unk4[0] = arg0->unk4[1] = arg0->unk4[2] = 0.0f;
|
|
arg0->unk10[0] = arg0->unk10[1] = arg0->unk10[2] = 0.0f;
|
|
arg0->unk1C[0] = arg0->unk1C[1] = arg0->unk1C[2] = 0.0f;
|
|
arg0->unk28[0] = arg0->unk28[1] = arg0->unk28[2] = 0.0f;
|
|
arg0->unk34[0] = arg0->unk34[1] = arg0->unk34[2] = 0.0f;
|
|
arg0->unk40[0] = arg0->unk40[1] = arg0->unk40[2] = 0.0f;
|
|
func_8035179C(arg1, arg0->unk4C);
|
|
func_80351814(arg1, arg0->unk58);
|
|
arg0->unk64 = 0.0f;
|
|
arg0->unk6C = 0;
|
|
if (map_get() == MAP_22_CC_INSIDE_CLANKER) {
|
|
sp3C[0] = arg0->unk4C[0];
|
|
sp3C[1] = arg0->unk4C[1] + 1000.0f;
|
|
sp3C[2] = arg0->unk4C[2];
|
|
|
|
sp30[0] = arg0->unk4C[0];
|
|
sp30[1] = arg0->unk4C[1] - 200.0f;
|
|
sp30[2] = arg0->unk4C[2];
|
|
|
|
if (func_80309B48(sp3C, sp30, sp24, 0xF800FF0F)) {
|
|
arg0->unk68 = arg0->unk4C[1] - sp30[1];
|
|
}
|
|
}
|
|
}
|
|
|
|
void func_80352114(Struct_core2_CB050_0 *arg0, s32 arg1, f32 arg2) {
|
|
f32 sp6C[3];
|
|
f32 player_position[3];
|
|
s32 pad;
|
|
f32 sp58;
|
|
f32 sp54;
|
|
f32 sp50;
|
|
f32 temp_f0;
|
|
f32 sp40[3];
|
|
f32 sp34[3];
|
|
f32 sp28[3];
|
|
|
|
arg0->unk64 = (f32) (arg0->unk64 + arg2);
|
|
player_getPosition(player_position);
|
|
if( (func_80294660() == 0x100)
|
|
&& func_8028F20C()
|
|
&& (func_80258780(player_position, arg0->unk4C) < 50000.0f)
|
|
) {
|
|
sp58 = arg0->unk4C[0] - player_position[0];
|
|
sp54 = arg0->unk4C[2] - player_position[2];
|
|
sp50 = cosf((arg0->unk58[1] * M_PI) / 180.0);
|
|
temp_f0 = sinf((arg0->unk58[1] * M_PI) / 180.0);
|
|
arg0->unk1C[0] = -((sp58 * temp_f0) + (sp54 * sp50)) / 4;
|
|
arg0->unk1C[2] = ((sp58 * sp50) - (sp54 * temp_f0)) / 4;
|
|
if (arg0->unk6C) {
|
|
if (arg0->unk34[1] < -20.0f) {
|
|
arg0->unk40[1] = -7.0f;
|
|
}
|
|
} else {
|
|
arg0->unk40[1] = -32.0f;
|
|
}
|
|
arg0->unk6C = TRUE;
|
|
|
|
} else {
|
|
arg0->unk1C[0] = arg0->unk1C[1] = arg0->unk1C[2] = 0.0f;
|
|
if (!arg0->unk6C) {
|
|
if (arg0->unk34[1] > 5.0f) {
|
|
arg0->unk40[1] = 0.0f;
|
|
}
|
|
} else {
|
|
arg0->unk40[1] = 10.0f;
|
|
}
|
|
arg0->unk6C = FALSE;
|
|
}
|
|
arg0->unk28[1] = sinf(((arg0->unk64 * arg0->unk0) / 180.0) * BAD_PI) * 10.0f;
|
|
arg0->unk4[0] = cosf(((arg0->unk64 * arg0->unk0) / 180.0) * BAD_PI) * 4.5;
|
|
arg0->unk4[1] = sinf(((arg0->unk64 * arg0->unk0) / 180.0) * BAD_PI) * 2;
|
|
if (map_get() == MAP_22_CC_INSIDE_CLANKER) {
|
|
sp40[0] = arg0->unk4C[0];
|
|
sp40[1] = arg0->unk4C[1] + 1000.0f;
|
|
sp40[2] = arg0->unk4C[2];
|
|
|
|
sp34[0] = arg0->unk4C[0];
|
|
sp34[1] = arg0->unk4C[1] - 200.0f;
|
|
sp34[2] = arg0->unk4C[2];
|
|
if (func_80309B48(sp40, sp34, sp28, 0xF800FF0F)) {
|
|
arg0->unk4C[1] = sp34[1] + arg0->unk68;
|
|
}
|
|
}
|
|
sp6C[0] = arg0->unk4C[0] + arg0->unk34[0];
|
|
sp6C[1] = arg0->unk4C[1] + arg0->unk34[1];
|
|
sp6C[2] = arg0->unk4C[2] + arg0->unk34[2];
|
|
sp6C[0] = sp6C[0] + arg0->unk28[0];
|
|
sp6C[1] = sp6C[1] + arg0->unk28[1];
|
|
sp6C[2] = sp6C[2] + arg0->unk28[2];
|
|
func_80351B28(arg1, sp6C);
|
|
|
|
arg0->unk10[2] += (arg0->unk1C[2] - arg0->unk10[2]) * 0.075;
|
|
arg0->unk10[0] += (arg0->unk1C[0] - arg0->unk10[0]) * 0.075;
|
|
arg0->unk34[1] += (arg0->unk40[1] - arg0->unk34[1]) * 0.2;
|
|
sp6C[0] = arg0->unk58[0] + arg0->unk4[0];
|
|
sp6C[1] = arg0->unk58[1] + arg0->unk4[1];
|
|
sp6C[2] = arg0->unk58[2] + arg0->unk4[2];
|
|
sp6C[0] = sp6C[0] + arg0->unk10[0];
|
|
sp6C[1] = sp6C[1] + arg0->unk10[1];
|
|
sp6C[2] = sp6C[2] + arg0->unk10[2];
|
|
func_80351C2C(arg1, sp6C);
|
|
}
|