161 lines
4.1 KiB
C
161 lines
4.1 KiB
C
#include <ultra64.h>
|
|
#include "core1/core1.h"
|
|
#include "functions.h"
|
|
#include "variables.h"
|
|
|
|
extern void controller_getJoystick(s32, f32*);
|
|
extern f32 player_getYaw(void);
|
|
extern void particleEmitter_setSphericalParticleVelocityRange(ParticleEmitter *this, f32 pitch_min, f32 yaw_min, f32 radial_min, f32 pitch_max, f32 yaw_max, f32 radial_max);
|
|
ParticleEmitter * func_802EDD8C(f32[3], f32, f32);
|
|
extern void func_80354030(f32[3], f32);
|
|
extern void func_80356074(f32[3], f32[3], f32, f32);
|
|
extern void func_80292864(f32, f32);
|
|
|
|
/* .bss */
|
|
struct {
|
|
f32 unk0;
|
|
s32 unk4;
|
|
f32 unk8[5];
|
|
f32 unk1C[2];
|
|
f32 unk24;
|
|
f32 unk28;
|
|
s32 unk2C;
|
|
s32 unk30;
|
|
u8 unk34;
|
|
} D_8037D1A0;
|
|
|
|
/*.code */
|
|
f32 func_8029AF50(f32 arg0, f32 arg1, f32 arg2){
|
|
return (arg0 - arg1)/(arg2 - arg1);
|
|
}
|
|
|
|
void func_8029AF68(void) {
|
|
s32 i;
|
|
|
|
if (D_8037D1A0.unk28 <= D_8037D1A0.unk8[0]) {
|
|
D_8037D1A0.unk4 = 0;
|
|
D_8037D1A0.unk0 = 0.0f;
|
|
return;
|
|
}
|
|
|
|
if ((D_8037D1A0.unk8[0] < D_8037D1A0.unk28) && (D_8037D1A0.unk28 <= D_8037D1A0.unk8[1])) {
|
|
D_8037D1A0.unk4 = 1;
|
|
D_8037D1A0.unk0 = func_8029AF50(D_8037D1A0.unk28, D_8037D1A0.unk8[0], D_8037D1A0.unk8[1]);
|
|
return;
|
|
}
|
|
if ((D_8037D1A0.unk8[1] < D_8037D1A0.unk28) && (D_8037D1A0.unk28 <= D_8037D1A0.unk8[2])) {
|
|
D_8037D1A0.unk4 = 2;
|
|
D_8037D1A0.unk0 = func_8029AF50(D_8037D1A0.unk28, D_8037D1A0.unk8[1], D_8037D1A0.unk8[2]);
|
|
return;
|
|
}
|
|
if ((D_8037D1A0.unk8[2] < D_8037D1A0.unk28) && (D_8037D1A0.unk28 <= D_8037D1A0.unk8[3])) {
|
|
D_8037D1A0.unk4 = 3;
|
|
D_8037D1A0.unk0 = func_8029AF50(D_8037D1A0.unk28, D_8037D1A0.unk8[2], D_8037D1A0.unk8[3]);
|
|
return;
|
|
}
|
|
if ((D_8037D1A0.unk8[3] < D_8037D1A0.unk28) && (D_8037D1A0.unk28 <= D_8037D1A0.unk8[4])) {
|
|
D_8037D1A0.unk4 = 4;
|
|
D_8037D1A0.unk0 = func_8029AF50(D_8037D1A0.unk28, D_8037D1A0.unk8[3], D_8037D1A0.unk8[4]);
|
|
return;
|
|
}
|
|
}
|
|
|
|
void func_8029B0C0(void) {
|
|
func_8029B324(0, 0.12f);
|
|
func_8029B324(1, 0.2f);
|
|
func_8029B324(2, 0.5f);
|
|
func_8029B324(3, 0.75f);
|
|
func_8029B324(4, 1.0f);
|
|
}
|
|
|
|
void func_8029B11C(void) {
|
|
D_8037D1A0.unk1C[0] = D_8037D1A0.unk1C[1] = D_8037D1A0.unk28 = D_8037D1A0.unk24 = D_8037D1A0.unk0 = 0.0f;
|
|
D_8037D1A0.unk34 = 0;
|
|
D_8037D1A0.unk30 = 0;
|
|
D_8037D1A0.unk2C = 0;
|
|
D_8037D1A0.unk4 = 0;
|
|
func_8029B0C0();
|
|
}
|
|
|
|
void func_8029B174(void) {
|
|
controller_getJoystick(0, &D_8037D1A0.unk1C);
|
|
if (D_8037D1A0.unk34) {
|
|
D_8037D1A0.unk1C[0] = D_8037D1A0.unk1C[1] = 0.0f;
|
|
}
|
|
D_8037D1A0.unk28 = gu_sqrtf(D_8037D1A0.unk1C[0]*D_8037D1A0.unk1C[0] + D_8037D1A0.unk1C[1]*D_8037D1A0.unk1C[1]);
|
|
if (D_8037D1A0.unk28 != 0.0f) {
|
|
D_8037D1A0.unk2C = 0;
|
|
D_8037D1A0.unk30 = (s32) (D_8037D1A0.unk30 + 1);
|
|
D_8037D1A0.unk24 = ml_acosf(D_8037D1A0.unk1C[1] / D_8037D1A0.unk28);
|
|
if (D_8037D1A0.unk1C[0] < 0.0f) {
|
|
D_8037D1A0.unk24 = (f32) (180.0f - D_8037D1A0.unk24);
|
|
}
|
|
if (D_8037D1A0.unk1C[1] < 0.0f) {
|
|
D_8037D1A0.unk24 = (f32) (360.0f - D_8037D1A0.unk24);
|
|
}
|
|
} else {
|
|
D_8037D1A0.unk30 = 0;
|
|
D_8037D1A0.unk2C = (s32) (D_8037D1A0.unk2C + 1);
|
|
}
|
|
if (D_8037D1A0.unk28 > 1.0) {
|
|
D_8037D1A0.unk28 = 1.0f;
|
|
}
|
|
func_8029AF68();
|
|
}
|
|
|
|
|
|
f32 func_8029B2D0(void){
|
|
return D_8037D1A0.unk1C[0];
|
|
}
|
|
|
|
f32 func_8029B2DC(void){
|
|
return D_8037D1A0.unk1C[1];
|
|
}
|
|
|
|
f32 func_8029B2E8(void){
|
|
return D_8037D1A0.unk28;
|
|
}
|
|
|
|
f32 func_8029B2F4(void){
|
|
return D_8037D1A0.unk24;
|
|
}
|
|
|
|
s32 func_8029B300(void){
|
|
return D_8037D1A0.unk4;
|
|
}
|
|
|
|
f32 func_8029B30C(void){
|
|
return D_8037D1A0.unk0;
|
|
}
|
|
|
|
void func_8029B318(bool arg0){
|
|
D_8037D1A0.unk34 = arg0;
|
|
}
|
|
|
|
void func_8029B324(s32 arg0, f32 arg1){
|
|
D_8037D1A0.unk8[arg0] = arg1;
|
|
}
|
|
|
|
f32 func_8029B33C(void){
|
|
f32 sp1C[3];
|
|
|
|
_player_getPosition(sp1C);
|
|
return viewport_adjustAngleToRight(sp1C, func_8029B2F4());
|
|
}
|
|
|
|
s32 func_8029B370(void){
|
|
return D_8037D1A0.unk30;
|
|
}
|
|
|
|
s32 func_8029B37C(void){
|
|
return D_8037D1A0.unk2C;
|
|
}
|
|
|
|
bool func_8029B388(void){
|
|
return D_8037D1A0.unk30 == 1;
|
|
}
|
|
|
|
bool func_8029B39C(void){
|
|
return D_8037D1A0.unk2C == 1;
|
|
}
|