SSBM Decomp
Loading...
Searching...
No Matches
util.h
Go to the documentation of this file.
1#ifndef _UTIL_H_
2#define _UTIL_H_
3
4#include <platform.h>
5
6#include "mtx.h"
7
8#include <dolphin/gx.h>
9#include <dolphin/mtx.h>
10#include <MSL/trigf.h>
11
12// functions
13void HSD_MulColor(GXColor* arg0, GXColor* arg1, GXColor* dest);
14u32 HSD_GetNbBits(u32 arg0);
15s32 HSD_Index2PosNrmMtx(u32 arg0);
16
17// variables
18extern Mtx HSD_identityMtx;
19
20#define FLT_MIN 1.17549435e-38f
21
22static inline int vec_normalize_check(Vec3* src, Vec3* dst)
23{
24 if (!src || !dst) {
25 return -1;
26 }
27 if (fabsf_bitwise(src->x) <= FLT_MIN && fabsf_bitwise(src->y) <= FLT_MIN &&
28 fabsf_bitwise(src->z) <= FLT_MIN)
29 {
30 return -1;
31 }
32 PSVECNormalize(src, dst);
33 return 0;
34}
35
36static inline f32 atan2f_check(s8 y, s8 x)
37{
38 if (fabs(x) == 0.0) {
39 return y >= 0 ? 1.5707963267948966 : -1.5707963267948966;
40 } else {
41 return atan2f(y, x);
42 }
43}
44
45#endif // _UTIL_H_
float atan2f(float y, float x)
Definition lbrefract.c:104
static double fabs(double f)
Definition math.h:87
static f32 fabsf_bitwise(f32 v)
Definition mtx.h:39
s32 HSD_Index2PosNrmMtx(u32 arg0)
Definition util.c:32
static int vec_normalize_check(Vec3 *src, Vec3 *dst)
Definition util.h:22
void HSD_MulColor(GXColor *arg0, GXColor *arg1, GXColor *dest)
Definition util.c:11
Mtx HSD_identityMtx
Definition util.c:7
#define FLT_MIN
Definition util.h:20
static f32 atan2f_check(s8 y, s8 x)
Definition util.h:36
u32 HSD_GetNbBits(u32 arg0)
Definition util.c:19