Loading...
Searching...
No Matches
Go to the documentation of this file.
5#include <libultraship.h>
8#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
9 #include <stdnoreturn.h>
10 #define NORETURN noreturn
11#elif defined(__cplusplus) && __cplusplus >= 201103L
12 #define NORETURN [[noreturn]]
13#elif defined(_MSC_VER)
14 #define NORETURN __declspec(noreturn)
15#elif defined(__GNUC__) || defined(__clang__)
16 #define NORETURN __attribute__((noreturn))
22#define GLOBAL_ASM(...)
25#if !defined(__sgi) && (!defined(NON_MATCHING) || !defined(AVOID_UB))
31#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
33#define GLUE(a, b) a##b
34#define GLUE2(a, b) GLUE(a, b)
38#define UNUSED __attribute__((unused))
45#define NORETURN __attribute__((noreturn))
52#define NO_REORDER __attribute__((no_reorder))
59#define STATIC_ASSERT(cond, msg) _Static_assert(cond, msg)
61#define STATIC_ASSERT(cond, msg) typedef char GLUE2(static_assertion_failed, __LINE__)[(cond) ? 1 : -1]
66#define ALIGNED8 __attribute__((aligned(8)))
73#define ALIGNED16 __attribute__((aligned(16)))
80#define ALIGNED4096 __attribute__((aligned(4096)))
86#define FTOFIX(f) ((s32) ((f) * 65536.0))
87#define ITOFIX(i) ((s32) ((i) << 16))
88#define FIXTOF(x) ((double) ((x) / 65536.0))
89#define FIXTOI(x) ((s32) ((x) >> 16))
92#define toFixedInt(f) (FTOFIX(f) >> 16)
93#define toFrac(f) (FTOFIX(f) & 0xFFFF)
96#define toFixedPointMatrix(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) \
98 { ((toFixedInt(x1)) << 16) | toFixedInt(x2), ((toFixedInt(x3)) << 16) | toFixedInt(x4), \
99 (toFixedInt(x5) << 16) | toFixedInt(x6), (toFixedInt(x7) << 16) | toFixedInt(x8) }, \
100 { ((toFixedInt(x9)) << 16) | toFixedInt(x10), ((toFixedInt(x11)) << 16) | toFixedInt(x12), \
101 (toFixedInt(x13) << 16) | toFixedInt(x14), (toFixedInt(x15) << 16) | toFixedInt(x16) }, \
102 { ((toFrac(x1)) << 16) | toFrac(x2), ((toFrac(x3)) << 16) | toFrac(x4), (toFrac(x5) << 16) | toFrac(x6), \
103 (toFrac(x7) << 16) | toFrac(x8) }, \
105 ((toFrac(x9)) << 16) | toFrac(x10), ((toFrac(x11)) << 16) | toFrac(x12), \
106 (toFrac(x13) << 16) | toFrac(x14), (toFrac(x15) << 16) | toFrac(x16) \
112#define VIRTUAL_TO_PHYSICAL(addr) (addr)
115#define PHYSICAL_TO_VIRTUAL(addr) (addr)
118#define VIRTUAL_TO_PHYSICAL2(addr) (addr)
120#define VIRTUAL_TO_PHYSICAL(addr) ((uintptr_t) (addr) & 0x1FFFFFFF)
123#define PHYSICAL_TO_VIRTUAL(addr) ((uintptr_t) (addr) | 0x80000000)
126#define VIRTUAL_TO_PHYSICAL2(addr) ((u8*) (addr) - 0x80000000U)
130#define ALIGN16(val) (((val) + 0xF) & ~0xF)
136#define BSWAP16(x) (x)
138#define BSWAP16(x) (((x) & 0xff) << 8 | (((x) >> 8) & 0xff))
148#define GET_PACKED_END(dl) (((u8*) dl) + sizeof(dl) - sizeof(dl[0]) - 0x07000000)
151#define MAX(a, b) ((a) > (b) ? (a) : (b))
155#define MIN(a, b) ((a) < (b) ? (a) : (b))
159#define CLAMP(var, min, max) ((var) < (min) ? min : (var) > (max) ? max : var)