PSPSDK 2025-04-22
Loading...
Searching...
No Matches
psptypes.h
Go to the documentation of this file.
1/*
2 * PSP Software Development Kit - https://github.com/pspdev
3 * -----------------------------------------------------------------------
4 * Licensed under the BSD license, see LICENSE in PSPSDK root for details.
5 *
6 * psptypes.h - Commonly used typedefs.
7 *
8 * Copyright (c) 2005 Marcus R. Brown <mrbrown@ocgnet.org>
9 * Copyright (c) 2005 James Forshaw <tyranid@gmail.com>
10 * Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
11 *
12 */
13
14/* Note: Some of the structures, types, and definitions in this file were
15 extrapolated from symbolic debugging information found in the Japanese
16 version of Puzzle Bobble. */
17
18#ifndef _PSPTYPES_H_
19#define _PSPTYPES_H_ 1
20
21#include <stdint.h>
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27#ifndef NULL
28#ifdef __cplusplus
29#define NULL 0
30#else
31#define NULL ((void *) 0)
32#endif /* __cplusplus */
33#endif
34
35/* Legacy ps2dev types. */
36#ifndef PSP_LEGACY_TYPES_DEFINED
37#define PSP_LEGACY_TYPES_DEFINED
38typedef uint8_t u8;
39typedef uint16_t u16;
40
41typedef uint32_t u32;
42typedef uint64_t u64;
43
44typedef int8_t s8;
45typedef int16_t s16;
46
47typedef int32_t s32;
48typedef int64_t s64;
49#endif
50
51#ifndef PSP_LEGACY_VOLATILE_TYPES_DEFINED
52#define PSP_LEGACY_VOLATILE_TYPES_DEFINED
53typedef volatile uint8_t vu8;
54typedef volatile uint16_t vu16;
55
56typedef volatile uint32_t vu32;
57typedef volatile uint64_t vu64;
58
59typedef volatile int8_t vs8;
60typedef volatile int16_t vs16;
61
62typedef volatile int32_t vs32;
63typedef volatile int64_t vs64;
64#endif
65
66/* MIPS-like accessor macros. */
67static __inline__ u8 _lb(u32 addr) { return *(vu8 *)addr; }
68static __inline__ u16 _lh(u32 addr) { return *(vu16 *)addr; }
69static __inline__ u32 _lw(u32 addr) { return *(vu32 *)addr; }
70static __inline__ u64 _ld(u32 addr) { return *(vu64 *)addr; }
71
72static __inline__ void _sb(u8 val, u32 addr) { *(vu8 *)addr = val; }
73static __inline__ void _sh(u16 val, u32 addr) { *(vu16 *)addr = val; }
74static __inline__ void _sw(u32 val, u32 addr) { *(vu32 *)addr = val; }
75static __inline__ void _sd(u64 val, u32 addr) { *(vu64 *)addr = val; }
76
77/* SCE types. */
78typedef unsigned char SceUChar8;
79typedef uint16_t SceUShort16;
80typedef uint32_t SceUInt32;
81typedef uint64_t SceUInt64;
82typedef uint64_t SceULong64;
83/*typedef unsigned int SceULong128 __attribute__((mode(TI)));*/
84
85typedef char SceChar8;
86typedef int16_t SceShort16;
87typedef int32_t SceInt32;
88typedef int64_t SceInt64;
89typedef int64_t SceLong64;
90/*typedef int SceLong128 __attribute__((mode(TI)));*/
91
92typedef float SceFloat;
93typedef float SceFloat32;
94
95typedef short unsigned int SceWChar16;
96typedef unsigned int SceWChar32;
97
98typedef int SceBool;
99
100typedef void SceVoid;
101typedef void * ScePVoid;
102
103typedef unsigned int SceSize;
104
105/* PSP types. */
106
107/* Rectangles. */
108typedef struct ScePspSRect {
109 short int x;
110 short int y;
111 short int w;
112 short int h;
114
115typedef struct ScePspIRect {
116 int x;
117 int y;
118 int w;
119 int h;
121
128
129typedef struct ScePspFRect {
130 float x;
131 float y;
132 float w;
133 float h;
135
136/* 2D vectors. */
137typedef struct ScePspSVector2 {
138 short int x;
139 short int y;
141
142typedef struct ScePspIVector2 {
143 int x;
144 int y;
146
151
152typedef struct ScePspFVector2 {
153 float x;
154 float y;
156
163
164/* 3D vectors. */
165typedef struct ScePspSVector3 {
166 short int x;
167 short int y;
168 short int z;
170
171typedef struct ScePspIVector3 {
172 int x;
173 int y;
174 int z;
176
182
183typedef struct ScePspFVector3 {
184 float x;
185 float y;
186 float z;
188
195
196/* 4D vectors. */
197typedef struct ScePspSVector4 {
198 short int x;
199 short int y;
200 short int z;
201 short int w;
203
204typedef struct ScePspIVector4 {
205 int x;
206 int y;
207 int z;
208 int w;
210
217
218typedef struct ScePspFVector4 {
219 float x;
220 float y;
221 float z;
222 float w;
223} ScePspFVector4 __attribute__((aligned(16)));
224
226 float x;
227 float y;
228 float z;
229 float w;
231
232typedef union ScePspVector4 {
235/* SceULong128 qw;*/ /* Missing compiler support. */
236 float f[4];
237 int i[4];
238} ScePspVector4 __attribute__((aligned(16)));
239
240/* 2D matrix types. */
245
250
251typedef union ScePspMatrix2 {
257/* SceULong128 qw[2];*/ /* Missing compiler support. */
258 float f[2][2];
259 int i[2][2];
261
262/* 3D matrix types. */
268
274
275typedef union ScePspMatrix3 {
281/* SceULong128 qw[3];*/ /* Missing compiler support. */
282 float f[3][3];
283 int i[3][3];
285
286/* 4D matrix types. */
293
300
307
314
315typedef union ScePspMatrix4 {
321/* SceULong128 qw[4];*/ /* Missing compiler support. */
322 float f[4][4];
323 int i[4][4];
325
326/* Quaternions. */
327typedef struct ScePspFQuaternion {
328 float x;
329 float y;
330 float z;
331 float w;
332} ScePspFQuaternion __attribute__((aligned(16)));
333
340
341/* Colors and pixel formats. */
342typedef struct ScePspFColor {
343 float r;
344 float g;
345 float b;
346 float a;
347} ScePspFColor __attribute__((aligned(16)));
348
349typedef struct ScePspFColorUnaligned {
350 float r;
351 float g;
352 float b;
353 float a;
355
356typedef unsigned int ScePspRGBA8888;
357typedef unsigned short ScePspRGBA4444;
358typedef unsigned short ScePspRGBA5551;
359typedef unsigned short ScePspRGB565;
360
361/* Unions for converting between types. */
362typedef union ScePspUnion32 {
363 unsigned int ui;
364 int i;
365 unsigned short us[2];
366 short int s[2];
367 unsigned char uc[4];
368 char c[4];
369 float f;
375
393
394typedef union ScePspUnion128 {
395/* SceULong128 qw;*/ /* Missing compiler support. */
396/* SceULong128 uq;*/
397/* SceLong128 q;*/
400 unsigned int ui[4];
401 int i[4];
402 unsigned short us[8];
403 short int s[8];
404 unsigned char uc[16];
405 char c[16];
406 float f[4];
417} ScePspUnion128 __attribute__((aligned(16)));
418
419/* Date and time. */
420typedef struct ScePspDateTime {
421 unsigned short year;
422 unsigned short month;
423 unsigned short day;
424 unsigned short hour;
425 unsigned short minute;
426 unsigned short second;
427 unsigned int microsecond;
429
430#ifdef __cplusplus
431}
432#endif
433
434#endif /* _PSPTYPES_H_ */
unsigned short ScePspRGB565
Definition psptypes.h:359
unsigned short ScePspRGBA5551
Definition psptypes.h:358
int64_t s64
Definition psptypes.h:48
union ScePspUnion32 ScePspUnion32
struct ScePspL64Vector2 ScePspL64Vector2
struct ScePspIVector3 ScePspIVector3
void SceVoid
Definition psptypes.h:100
uint64_t u64
Definition psptypes.h:42
int SceBool
Definition psptypes.h:98
struct ScePspFVector4Unaligned ScePspFVector4Unaligned
struct ScePspL64Rect ScePspL64Rect
struct ScePspFRect ScePspFRect
volatile int16_t vs16
Definition psptypes.h:60
int32_t SceInt32
Definition psptypes.h:87
struct ScePspFMatrix4Unaligned ScePspFMatrix4Unaligned
struct ScePspL64Vector4 ScePspL64Vector4
int16_t SceShort16
Definition psptypes.h:86
union ScePspVector2 ScePspVector2
unsigned int SceSize
Definition psptypes.h:103
volatile uint64_t vu64
Definition psptypes.h:57
struct ScePspSRect ScePspSRect
union ScePspMatrix2 ScePspMatrix2
struct ScePspIVector2 ScePspIVector2
struct ScePspSVector4 ScePspSVector4
struct ScePspFColorUnaligned ScePspFColorUnaligned
struct ScePspIMatrix3 ScePspIMatrix3
uint16_t SceUShort16
Definition psptypes.h:79
void * ScePVoid
Definition psptypes.h:101
volatile int8_t vs8
Definition psptypes.h:59
int64_t SceLong64
Definition psptypes.h:89
volatile int32_t vs32
Definition psptypes.h:62
volatile int64_t vs64
Definition psptypes.h:63
uint8_t u8
Definition psptypes.h:38
unsigned short ScePspRGBA4444
Definition psptypes.h:357
union ScePspUnion64 ScePspUnion64
float SceFloat32
Definition psptypes.h:93
int8_t s8
Definition psptypes.h:44
union ScePspMatrix3 ScePspMatrix3
union ScePspVector3 ScePspVector3
int64_t SceInt64
Definition psptypes.h:88
int16_t s16
Definition psptypes.h:45
uint64_t SceUInt64
Definition psptypes.h:81
struct ScePspSVector2 ScePspSVector2
struct ScePspIMatrix4Unaligned ScePspIMatrix4Unaligned
struct ScePspSVector3 ScePspSVector3
uint32_t SceUInt32
Definition psptypes.h:80
struct ScePspL64Vector3 ScePspL64Vector3
short unsigned int SceWChar16
Definition psptypes.h:95
struct ScePspFVector3 ScePspFVector3
struct ScePspIRect ScePspIRect
union ScePspMatrix4 ScePspMatrix4
uint16_t u16
Definition psptypes.h:39
struct ScePspIVector4 ScePspIVector4
struct ScePspFQuaternionUnaligned ScePspFQuaternionUnaligned
struct ScePspIMatrix2 ScePspIMatrix2
struct ScePspDateTime ScePspDateTime
char SceChar8
Definition psptypes.h:85
int32_t s32
Definition psptypes.h:47
struct ScePspFVector2 ScePspFVector2
unsigned char SceUChar8
Definition psptypes.h:78
volatile uint16_t vu16
Definition psptypes.h:54
struct ScePspFMatrix3 ScePspFMatrix3
uint64_t SceULong64
Definition psptypes.h:82
volatile uint32_t vu32
Definition psptypes.h:56
unsigned int ScePspRGBA8888
Definition psptypes.h:356
struct ScePspFMatrix2 ScePspFMatrix2
uint32_t u32
Definition psptypes.h:41
unsigned int SceWChar32
Definition psptypes.h:96
volatile uint8_t vu8
Definition psptypes.h:53
float SceFloat
Definition psptypes.h:92
Definition psptypes.h:420
unsigned short hour
Definition psptypes.h:424
unsigned short day
Definition psptypes.h:423
unsigned short month
Definition psptypes.h:422
unsigned int microsecond
Definition psptypes.h:427
unsigned short minute
Definition psptypes.h:425
unsigned short year
Definition psptypes.h:421
unsigned short second
Definition psptypes.h:426
Definition psptypes.h:349
float b
Definition psptypes.h:352
float g
Definition psptypes.h:351
float r
Definition psptypes.h:350
float a
Definition psptypes.h:353
Definition psptypes.h:342
float g
Definition psptypes.h:344
float r
Definition psptypes.h:343
float a
Definition psptypes.h:346
float b
Definition psptypes.h:345
Definition psptypes.h:246
ScePspFVector2 x
Definition psptypes.h:247
ScePspFVector2 y
Definition psptypes.h:248
Definition psptypes.h:269
ScePspFVector3 z
Definition psptypes.h:272
ScePspFVector3 y
Definition psptypes.h:271
ScePspFVector3 x
Definition psptypes.h:270
Definition psptypes.h:308
ScePspFVector4 x
Definition psptypes.h:309
ScePspFVector4 w
Definition psptypes.h:312
ScePspFVector4 z
Definition psptypes.h:311
ScePspFVector4 y
Definition psptypes.h:310
Definition psptypes.h:301
ScePspFVector4 w
Definition psptypes.h:305
ScePspFVector4 x
Definition psptypes.h:302
ScePspFVector4 y
Definition psptypes.h:303
ScePspFVector4 z
Definition psptypes.h:304
Definition psptypes.h:334
float w
Definition psptypes.h:338
float y
Definition psptypes.h:336
float x
Definition psptypes.h:335
float z
Definition psptypes.h:337
Definition psptypes.h:327
float z
Definition psptypes.h:330
float y
Definition psptypes.h:329
float x
Definition psptypes.h:328
float w
Definition psptypes.h:331
Definition psptypes.h:129
float y
Definition psptypes.h:131
float x
Definition psptypes.h:130
float w
Definition psptypes.h:132
float h
Definition psptypes.h:133
Definition psptypes.h:152
float y
Definition psptypes.h:154
float x
Definition psptypes.h:153
Definition psptypes.h:183
float y
Definition psptypes.h:185
float z
Definition psptypes.h:186
float x
Definition psptypes.h:184
Definition psptypes.h:225
float y
Definition psptypes.h:227
float w
Definition psptypes.h:229
float x
Definition psptypes.h:226
float z
Definition psptypes.h:228
Definition psptypes.h:218
float x
Definition psptypes.h:219
float z
Definition psptypes.h:221
float w
Definition psptypes.h:222
float y
Definition psptypes.h:220
Definition psptypes.h:241
ScePspIVector2 x
Definition psptypes.h:242
ScePspIVector2 y
Definition psptypes.h:243
Definition psptypes.h:263
ScePspIVector3 x
Definition psptypes.h:264
ScePspIVector3 y
Definition psptypes.h:265
ScePspIVector3 z
Definition psptypes.h:266
Definition psptypes.h:294
ScePspIVector4 w
Definition psptypes.h:298
ScePspIVector4 z
Definition psptypes.h:297
ScePspIVector4 y
Definition psptypes.h:296
ScePspIVector4 x
Definition psptypes.h:295
Definition psptypes.h:287
ScePspIVector4 x
Definition psptypes.h:288
ScePspIVector4 y
Definition psptypes.h:289
ScePspIVector4 w
Definition psptypes.h:291
ScePspIVector4 z
Definition psptypes.h:290
Definition psptypes.h:115
int h
Definition psptypes.h:119
int y
Definition psptypes.h:117
int w
Definition psptypes.h:118
int x
Definition psptypes.h:116
Definition psptypes.h:142
int y
Definition psptypes.h:144
int x
Definition psptypes.h:143
Definition psptypes.h:171
int x
Definition psptypes.h:172
int z
Definition psptypes.h:174
int y
Definition psptypes.h:173
Definition psptypes.h:204
int w
Definition psptypes.h:208
int y
Definition psptypes.h:206
int x
Definition psptypes.h:205
int z
Definition psptypes.h:207
Definition psptypes.h:122
SceLong64 h
Definition psptypes.h:126
SceLong64 w
Definition psptypes.h:125
SceLong64 x
Definition psptypes.h:123
SceLong64 y
Definition psptypes.h:124
Definition psptypes.h:147
SceLong64 x
Definition psptypes.h:148
SceLong64 y
Definition psptypes.h:149
Definition psptypes.h:177
SceLong64 z
Definition psptypes.h:180
SceLong64 y
Definition psptypes.h:179
SceLong64 x
Definition psptypes.h:178
Definition psptypes.h:211
SceLong64 y
Definition psptypes.h:213
SceLong64 x
Definition psptypes.h:212
SceLong64 w
Definition psptypes.h:215
SceLong64 z
Definition psptypes.h:214
Definition psptypes.h:108
short int x
Definition psptypes.h:109
short int w
Definition psptypes.h:111
short int y
Definition psptypes.h:110
short int h
Definition psptypes.h:112
Definition psptypes.h:137
short int x
Definition psptypes.h:138
short int y
Definition psptypes.h:139
Definition psptypes.h:165
short int y
Definition psptypes.h:167
short int x
Definition psptypes.h:166
short int z
Definition psptypes.h:168
Definition psptypes.h:197
short int y
Definition psptypes.h:199
short int z
Definition psptypes.h:200
short int x
Definition psptypes.h:198
short int w
Definition psptypes.h:201
Definition psptypes.h:251
ScePspFMatrix2 fm
Definition psptypes.h:252
float f[2][2]
Definition psptypes.h:258
ScePspIMatrix2 im
Definition psptypes.h:253
ScePspVector2 v[2]
Definition psptypes.h:256
ScePspFVector2 fv[2]
Definition psptypes.h:254
ScePspIVector2 iv[2]
Definition psptypes.h:255
int i[2][2]
Definition psptypes.h:259
Definition psptypes.h:275
float f[3][3]
Definition psptypes.h:282
ScePspVector3 v[3]
Definition psptypes.h:280
int i[3][3]
Definition psptypes.h:283
ScePspIVector3 iv[3]
Definition psptypes.h:279
ScePspFVector3 fv[3]
Definition psptypes.h:278
ScePspIMatrix3 im
Definition psptypes.h:277
ScePspFMatrix3 fm
Definition psptypes.h:276
Definition psptypes.h:315
ScePspFMatrix4 fm
Definition psptypes.h:316
ScePspIMatrix4 im
Definition psptypes.h:317
ScePspFVector4 fv[4]
Definition psptypes.h:318
ScePspVector4 v[4]
Definition psptypes.h:320
int i[4][4]
Definition psptypes.h:323
float f[4][4]
Definition psptypes.h:322
ScePspIVector4 iv[4]
Definition psptypes.h:319
Definition psptypes.h:394
ScePspFQuaternion fq
Definition psptypes.h:411
ScePspFRect fr
Definition psptypes.h:407
int i[4]
Definition psptypes.h:401
ScePspFColor fc
Definition psptypes.h:412
ScePspRGBA8888 rgba8888[4]
Definition psptypes.h:413
ScePspIVector4 iv
Definition psptypes.h:410
unsigned int ui[4]
Definition psptypes.h:400
float f[4]
Definition psptypes.h:406
ScePspRGBA4444 rgba4444[8]
Definition psptypes.h:414
SceLong64 l[2]
Definition psptypes.h:399
char c[16]
Definition psptypes.h:405
SceULong64 ul[2]
Definition psptypes.h:398
short int s[8]
Definition psptypes.h:403
ScePspFVector4 fv
Definition psptypes.h:409
ScePspRGB565 rgb565[8]
Definition psptypes.h:416
ScePspRGBA5551 rgba5551[8]
Definition psptypes.h:415
unsigned char uc[16]
Definition psptypes.h:404
unsigned short us[8]
Definition psptypes.h:402
ScePspIRect ir
Definition psptypes.h:408
Definition psptypes.h:362
unsigned int ui
Definition psptypes.h:363
ScePspRGB565 rgb565[2]
Definition psptypes.h:373
unsigned short us[2]
Definition psptypes.h:365
int i
Definition psptypes.h:364
unsigned char uc[4]
Definition psptypes.h:367
float f
Definition psptypes.h:369
ScePspRGBA5551 rgba5551[2]
Definition psptypes.h:372
ScePspRGBA4444 rgba4444[2]
Definition psptypes.h:371
short int s[2]
Definition psptypes.h:366
ScePspRGBA8888 rgba8888
Definition psptypes.h:370
char c[4]
Definition psptypes.h:368
Definition psptypes.h:376
ScePspSRect sr
Definition psptypes.h:386
SceLong64 l
Definition psptypes.h:378
ScePspRGB565 rgb565[4]
Definition psptypes.h:391
ScePspRGBA5551 rgba5551[4]
Definition psptypes.h:390
int i[2]
Definition psptypes.h:380
unsigned char uc[8]
Definition psptypes.h:383
ScePspSVector4 sv
Definition psptypes.h:387
unsigned int ui[2]
Definition psptypes.h:379
ScePspRGBA8888 rgba8888[2]
Definition psptypes.h:388
short int s[4]
Definition psptypes.h:382
unsigned short us[4]
Definition psptypes.h:381
char c[8]
Definition psptypes.h:384
ScePspRGBA4444 rgba4444[4]
Definition psptypes.h:389
float f[2]
Definition psptypes.h:385
SceULong64 ul
Definition psptypes.h:377
Definition psptypes.h:157
ScePspIVector2 iv
Definition psptypes.h:159
float f[2]
Definition psptypes.h:160
int i[2]
Definition psptypes.h:161
ScePspFVector2 fv
Definition psptypes.h:158
Definition psptypes.h:189
int i[3]
Definition psptypes.h:193
float f[3]
Definition psptypes.h:192
ScePspIVector3 iv
Definition psptypes.h:191
ScePspFVector3 fv
Definition psptypes.h:190
Definition psptypes.h:232
int i[4]
Definition psptypes.h:237
ScePspFVector4 fv
Definition psptypes.h:233
float f[4]
Definition psptypes.h:236
ScePspIVector4 iv
Definition psptypes.h:234