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
7
8#include "mtx.h"
9
10#include <dolphin/mtx/vec.h>
11#include <MSL/trigf.h>
12
13// functions
14void HSD_MulColor(GXColor* arg0, GXColor* arg1, GXColor* dest);
17
18// variables
19extern float HSD_identityMtx[];
20
21#define FLT_MIN 1.17549435e-38f
22
23static inline int vec_normalize_check(Vec3* src, Vec3* dst)
24{
25 if (!src || !dst) {
26 return -1;
27 }
28 if (fabsf_bitwise(src->x) <= FLT_MIN && fabsf_bitwise(src->y) <= FLT_MIN &&
29 fabsf_bitwise(src->z) <= FLT_MIN)
30 {
31 return -1;
32 }
33 PSVECNormalize(src, dst);
34 return 0;
35}
36
37static inline f32 atan2f_check(s8 y, s8 x)
38{
39 if (fabs(x) == 0.0) {
40 return y >= 0 ? 1.5707963267948966 : -1.5707963267948966;
41 } else {
42 return atan2f(y, x);
43 }
44}
45
46#endif // _UTIL_H_
float atan2f(float y, float x)
Definition lbrefract.c:104
static double fabs(double f)
Definition math.h:87
signed char s8
A signed 8-bit integer.
Definition platform.h:8
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
float f32
A 32-bit floating-point number.
Definition platform.h:62
signed long s32
A signed 32-bit integer.
Definition platform.h:14
Definition types.h:30
Definition types.h:13
f32 x
The x component.
Definition types.h:14
f32 z
The z component.
Definition types.h:14
f32 y
The y component.
Definition types.h:14
static f32 fabsf_bitwise(f32 v)
Definition mtx.h:34
float HSD_identityMtx[]
Definition util.c:7
s32 HSD_Index2PosNrmMtx(u32 arg0)
Definition util.c:30
static int vec_normalize_check(Vec3 *src, Vec3 *dst)
Definition util.h:23
void HSD_MulColor(GXColor *arg0, GXColor *arg1, GXColor *dest)
Definition util.c:9
#define FLT_MIN
Definition util.h:21
static f32 atan2f_check(s8 y, s8 x)
Definition util.h:37
u32 HSD_GetNbBits(u32 arg0)
Definition util.c:17
void PSVECNormalize(Vec3 *a, Vec3 *b)