SSBM Decomp
Loading...
Searching...
No Matches
platform.h
Go to the documentation of this file.
1#ifndef RUNTIME_PLATFORM_H
2#define RUNTIME_PLATFORM_H
3
4#include <stdbool.h> // IWYU pragma: export
5#include <stddef.h> // IWYU pragma: export
6
8typedef signed char s8;
9
11typedef signed short s16;
12
14typedef signed long s32;
15
17typedef signed long long s64;
18
20typedef unsigned char u8;
21
23typedef unsigned short u16;
24
26typedef unsigned long u32;
27
29typedef unsigned long long u64;
30
32typedef unsigned short ushort;
33
35typedef unsigned int uint;
36
38typedef volatile u8 vu8;
39
41typedef volatile u16 vu16;
42
44typedef volatile u32 vu32;
45
47typedef volatile u64 vu64;
48
50typedef volatile s8 vs8;
51
53typedef volatile s16 vs16;
54
56typedef volatile s32 vs32;
57
59typedef volatile s64 vs64;
60
62typedef float f32;
63
65typedef double f64;
66
68typedef volatile f32 vf32;
69
71typedef volatile f64 vf64;
72
74typedef int enum_t;
75
77typedef void (*Event)(void);
78
79#if defined(__MWERKS__) && defined(__PPCGEKKO__)
80#define MWERKS_GEKKO
81#endif
82
83#ifndef ATTRIBUTE_ALIGN
84#if defined(__MWERKS__) || defined(__GNUC__)
85#define ATTRIBUTE_ALIGN(num) __attribute__((aligned(num)))
86#elif defined(_MSC_VER)
87#define ATTRIBUTE_ALIGN(num)
88#else
89#error unknown compiler
90#endif
91#endif
92
93#ifndef SECTION_INIT
94#if defined(__MWERKS__) && !defined(M2CTX)
95#define SECTION_INIT __declspec(section ".init")
96#else
97#define SECTION_INIT
98#endif
99#endif
100
101#ifndef SECTION_CTORS
102#if defined(__MWERKS__) && !defined(M2CTX)
103#define SECTION_CTORS __declspec(section ".ctors")
104#else
105#define SECTION_CTORS
106#endif
107#endif
108
109#ifndef ATTRIBUTE_NORETURN
110#if defined(__clang__) || defined(__GNUC__)
111#define ATTRIBUTE_NORETURN __attribute__((noreturn))
112#else
113#define ATTRIBUTE_NORETURN
114#endif
115#endif
116
117#ifndef ATTRIBUTE_RESTRICT
118#if defined(__MWERKS__) && !defined(M2CTX)
119#define ATTRIBUTE_RESTRICT __restrict
120#else
121#define ATTRIBUTE_RESTRICT
122#endif
123#endif
124
125#ifdef PERMUTER
126#define AT_ADDRESS(x) = FIXEDADDR(x)
127#elif defined(__MWERKS__) && !defined(M2CTX)
128#define AT_ADDRESS(x) : (x)
129#else
130#define AT_ADDRESS(x)
131#endif
132
133#ifdef __PPCGEKKO__
134#define qr0 0
135#define qr1 1
136#define qr2 2
137#define qr3 3
138#define qr4 4
139#define qr5 5
140#define qr6 6
141#define qr7 7
142#endif
143
144#define U8_MAX 0xFF
145#define U16_MAX 0xFFFF
146#define U32_MAX 0xFFFFFFFF
147#define S8_MAX 0x7F
148#define S16_MAX 0x7FFF
149#define S32_MAX 0x7FFFFFFF
150#define F32_MAX 3.4028235e38f
151
152#define SQ(x) ((x) * (x))
153#define MIN(a, b) (((a) > (b)) ? (b) : (a))
154#define MAX(a, b) (((a) > (b)) ? (a) : (b))
155
156#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
157
158#ifdef __cplusplus
159#ifndef _Static_assert
160#define _Static_assert static_assert
161#endif
162#endif
163#ifdef __MWERKS__
164#define STATIC_ASSERT(cond) \
165 struct { \
166 int x[1 - 2 * !(cond)]; \
167 };
168#else
169#define STATIC_ASSERT(cond) _Static_assert((cond), "(" #cond ") failed")
170#endif
171
172#define RETURN_IF(cond) \
173 do { \
174 if ((cond)) { \
175 return; \
176 } \
177 } while (0)
178
179#if defined(__MWERKS__) && !defined(M2CTX)
180#define SDATA __declspec(section ".sdata")
181#define WEAK __declspec(weak)
182#else
183#define SDATA
184#define WEAK
185#endif
186
187#endif
volatile s8 vs8
A volatile, signed 8-bit integer.
Definition platform.h:50
signed char s8
A signed 8-bit integer.
Definition platform.h:8
volatile u8 vu8
A volatile, unsigned 8-bit integer.
Definition platform.h:38
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
signed long long s64
A signed 64-bit integer.
Definition platform.h:17
volatile s64 vs64
A volatile, signed 64-bit integer.
Definition platform.h:59
float f32
A 32-bit floating-point number.
Definition platform.h:62
signed short s16
A signed 16-bit integer.
Definition platform.h:11
volatile u16 vu16
A volatile, unsigned 16-bit integer.
Definition platform.h:41
volatile s32 vs32
A volatile, signed 32-bit integer.
Definition platform.h:56
volatile s16 vs16
A volatile, signed 16-bit integer.
Definition platform.h:53
unsigned int uint
An unsigned integer of platform-dependent size.
Definition platform.h:35
double f64
A 64-bit floating-point number.
Definition platform.h:65
volatile f64 vf64
A volatile 64-bit floating-point number.
Definition platform.h:71
unsigned short u16
An unsigned 16-bit integer.
Definition platform.h:23
unsigned short ushort
An unsigned short integer of platform-dependent size.
Definition platform.h:32
volatile u32 vu32
A volatile, unsigned 32-bit integer.
Definition platform.h:44
volatile u64 vu64
A volatile, unsigned 64-bit integer.
Definition platform.h:47
int enum_t
The underlying type of an enum, used as a placeholder.
Definition platform.h:74
volatile f32 vf32
A volatile 32-bit floating-point number.
Definition platform.h:68
unsigned long long u64
An unsigned 64-bit integer.
Definition platform.h:29
signed long s32
A signed 32-bit integer.
Definition platform.h:14
void(* Event)(void)
A void callback with no arguments.
Definition platform.h:77
unsigned char u8
An unsigned 8-bit integer.
Definition platform.h:20