Starship/src/main/5A20.c

130 lines
2.8 KiB
C
Raw Normal View History

#include "global.h"
2023-10-07 09:24:29 +03:00
extern s32 D_8013B3A0;
2023-10-07 09:28:35 +03:00
extern s32 D_8013B3A4;
extern s32 D_8013B3A8;
extern s32 D_8013B3AC;
2023-10-07 09:24:29 +03:00
extern s32 D_8013B3B0;
extern s32 D_8013B3B4;
2023-10-07 09:17:19 +03:00
f32 func_80004E20(f32 arg0, f32 arg1) {
return arg0 - ((s32) (arg0 / arg1) * arg1);
2023-10-07 09:17:19 +03:00
}
2023-10-06 15:57:30 +03:00
2023-10-07 09:28:35 +03:00
void func_80004E4C(void) {
D_8013B3A4 = (s32) osGetTime() % 30000;
D_8013B3A8 = (s32) osGetTime() % 30000;
D_8013B3AC = (s32) osGetTime() % 30000;
2023-10-07 09:28:35 +03:00
}
2023-10-06 15:57:30 +03:00
f32 func_80004EB0(void) {
D_8013B3A4 = (D_8013B3A4 * 0xAB) % 30269;
D_8013B3A8 = (D_8013B3A8 * 0xAC) % 30307;
D_8013B3AC = (D_8013B3AC * 0xAA) % 30323;
return fabsf(func_80004E20((D_8013B3A4 / 30269.0f) + (D_8013B3A8 / 30307.0f) + (D_8013B3AC / 30323.0f), 1.0f));
}
2023-10-06 15:57:30 +03:00
2023-10-07 09:17:19 +03:00
void func_80004FC8(s32 arg0, s32 arg1, s32 arg2) {
D_8013B3B0 = arg0;
D_8013B3B4 = arg1;
D_8013B3A0 = arg2;
}
2023-10-06 15:57:30 +03:00
f32 func_80004FE8(void) {
D_8013B3B0 = (D_8013B3B0 * 0xAB) % 30269;
D_8013B3B4 = (D_8013B3B4 * 0xAC) % 30307;
D_8013B3A0 = (D_8013B3A0 * 0xAA) % 30323;
return fabsf(func_80004E20((D_8013B3B0 / 30269.0f) + (D_8013B3B4 / 30307.0f) + (D_8013B3A0 / 30323.0f), 1.0f));
}
2023-10-06 15:57:30 +03:00
2023-10-07 10:29:27 +03:00
f32 func_80005100(f32 arg0, f32 arg1) {
if ((arg0 == 0.0f) && (arg1 == 0.0f)) {
return 0.0f;
}
if (arg1 == 0.0f) {
if (arg0 < 0.0f) {
return -M_PI / 2.0f;
2023-10-07 10:29:27 +03:00
} else {
return M_PI / 2.0f;
2023-10-07 10:29:27 +03:00
}
}
if (arg1 < 0.0f) {
if (arg0 < 0.0f) {
return -(M_PI - func_8001FBE8(fabs(arg0 / arg1)));
2023-10-07 10:29:27 +03:00
} else {
return M_PI - func_8001FBE8(fabs(arg0 / arg1));
2023-10-07 10:29:27 +03:00
}
} else {
return func_8001FBE8(arg0 / arg1);
}
}
2023-10-06 15:57:30 +03:00
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/5A20/func_800051F8.s")
2023-10-07 09:58:07 +03:00
f32 func_80005320(f32 arg0, f32 arg1) {
if ((arg0 == 0.0f) && (arg1 == 0.0f)) {
return 0.0f;
}
2023-10-07 10:38:28 +03:00
2023-10-07 09:58:07 +03:00
if (arg0 == 0.0f) {
if (arg1 < 0.0f) {
return -M_PI / 2.0f;
2023-10-07 09:58:07 +03:00
}
return M_PI / 2.0f;
2023-10-07 09:58:07 +03:00
}
2023-10-07 10:38:28 +03:00
2023-10-07 09:58:07 +03:00
if (arg1 == 0.0f) {
return 0.0f;
}
return -func_8001FBE8(arg0 / arg1);
}
2023-10-06 15:57:30 +03:00
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/5A20/func_800053C8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/5A20/func_800054C8.s")
2023-10-07 09:21:36 +03:00
f32 func_800055DC(f32 arg0, s32 arg1) {
f32 var_fv1 = 1.0f;
2023-10-07 10:38:28 +03:00
2023-10-07 09:21:36 +03:00
while (arg1 > 0) {
arg1--;
var_fv1 *= arg0;
}
return var_fv1;
}
2023-10-06 15:57:30 +03:00
2023-10-07 09:40:47 +03:00
void func_80005604(s32* arg0, s32* arg1, s32 arg2, s32 arg3, s32 arg4) {
if (arg2 < arg3) {
if (arg3 < arg4) {
*arg0 = arg2;
*arg1 = arg4;
return;
}
*arg1 = arg3;
2023-10-07 10:38:28 +03:00
2023-10-07 09:40:47 +03:00
if (arg2 < arg4) {
*arg0 = arg2;
return;
}
*arg0 = arg4;
return;
}
2023-10-07 10:38:28 +03:00
2023-10-07 09:40:47 +03:00
if (arg2 < arg4) {
*arg0 = arg3;
*arg1 = arg4;
return;
}
*arg1 = arg2;
2023-10-07 10:38:28 +03:00
2023-10-07 09:40:47 +03:00
if (arg3 < arg4) {
*arg0 = arg3;
return;
}
*arg0 = arg4;
}