pokeheartgold/include/math_util.h
2023-08-18 17:37:06 -04:00

46 lines
1.2 KiB
C

#ifndef POKEHEARTGOLD_MATH_UTIL_H
#define POKEHEARTGOLD_MATH_UTIL_H
#include "heap.h"
u16 GF_DegreeToSinCosIdxNoWrap(u16 deg);
fx32 GF_SinDegNoWrap(u16 deg);
fx32 GF_CosDegNoWrap(u16 deg);
fx32 GF_SinDeg(u16 deg);
fx32 GF_CosDeg(u16 deg);
u16 GF_DegreeToSinCosIdxNoWrap(u16 deg);
u16 GF_DegreeToSinCosIdx(u16 deg);
fx32 GF_SinDegFX32(fx32 deg);
fx32 GF_CosDegFX32(fx32 deg);
u32 PRandom(u32 seed);
void MTX22_2DAffine(MtxFx22 * mtx, u16 radians, fx32 x, fx32 y, u8 type);
u32 Math_CalcArraySum(const void *data, u32 size);
u16 GF_CalcCRC16(const void *data, u32 size);
void GF_CRC16Init(HeapID heapId);
u16 LCRandom(void);
void SetLCRNGSeed(u32 seed);
u32 GetLCRNGSeed(void);
void SetMTRNGSeed(u32 seed);
u32 MTRandom(void);
void _MonEncryptSegment(u16 *data, u32 size, u32 seed);
void _MonDecryptSegment(u16 *data, u32 size, u32 seed);
fx32 sub_02096594(void);
static inline u16 LCRandRange(const u16 maximum) {
GF_ASSERT(maximum != 0);
if (maximum <= 1) {
return 0;
} else {
u16 result = LCRandom() % maximum;
return result;
}
}
static inline void SetVecFx32(VecFx32 *dest, fx32 x, fx32 y, fx32 z) {
dest->x = x;
dest->y = y;
dest->z = z;
}
#endif //POKEHEARTGOLD_MATH_UTIL_H