diff --git a/desmume/src/types.h b/desmume/src/types.h index fb2892207..bb431113c 100644 --- a/desmume/src/types.h +++ b/desmume/src/types.h @@ -74,6 +74,34 @@ typedef u8 uint8; typedef u16 uint16; typedef u32 uint32; +/*---------- GPU3D fixed-points types -----------*/ + +typedef s32 f32; +#define inttof32(n) ((n) << 12) +#define f32toint(n) ((n) >> 12) +#define floattof32(n) ((int32)((n) * (1 << 12))) +#define f32tofloat(n) (((float)(n)) / (float)(1<<12)) + +typedef s16 t16; +#define f32tot16(n) ((t16)(n >> 8)) +#define inttot16(n) ((n) << 4) +#define t16toint(n) ((n) >> 4) +#define floattot16(n) ((t16)((n) * (1 << 4))) + +typedef s16 v16; +#define inttov16(n) ((n) << 12) +#define f32tov16(n) (n) +#define v16toint(n) ((n) >> 12) +#define floattov16(n) ((v16)((n) * (1 << 12))) + +typedef s16 v10; +#define inttov10(n) ((n) << 9) +#define f32tov10(n) ((v10)(n >> 3)) +#define v10toint(n) ((n) >> 9) +#define floattov10(n) ((v10)((n) * (1 << 9))) + +/*----------------------*/ + typedef int BOOL; #ifndef TRUE