Skip to main content

psp/sys/
types.rs

1#[repr(C)]
2#[derive(Debug, Copy, Clone)]
3pub struct ScePspSRect {
4    pub x: i16,
5    pub y: i16,
6    pub w: i16,
7    pub h: i16,
8}
9
10#[repr(C)]
11#[derive(Debug, Copy, Clone)]
12pub struct ScePspIRect {
13    pub x: i32,
14    pub y: i32,
15    pub w: i32,
16    pub h: i32,
17}
18
19#[repr(C)]
20#[derive(Debug, Copy, Clone)]
21pub struct ScePspL64Rect {
22    pub x: u64,
23    pub y: u64,
24    pub w: u64,
25    pub h: u64,
26}
27
28#[repr(C)]
29#[derive(Debug, Copy, Clone)]
30pub struct ScePspFRect {
31    pub x: f32,
32    pub y: f32,
33    pub w: f32,
34    pub h: f32,
35}
36
37#[repr(C)]
38#[derive(Debug, Copy, Clone)]
39pub struct ScePspSVector2 {
40    pub x: i16,
41    pub y: i16,
42}
43
44#[repr(C)]
45#[derive(Debug, Copy, Clone)]
46pub struct ScePspIVector2 {
47    pub x: i32,
48    pub y: i32,
49}
50
51#[repr(C)]
52#[derive(Debug, Copy, Clone)]
53pub struct ScePspL64Vector2 {
54    pub x: u64,
55    pub y: u64,
56}
57
58#[repr(C)]
59#[derive(Debug, Copy, Clone)]
60pub struct ScePspFVector2 {
61    pub x: f32,
62    pub y: f32,
63}
64
65#[repr(C)]
66#[derive(Copy, Clone)]
67pub union ScePspVector2 {
68    pub fv: ScePspFVector2,
69    pub iv: ScePspIVector2,
70    pub f: [f32; 2usize],
71    pub i: [i32; 2usize],
72}
73
74#[repr(C)]
75#[derive(Debug, Copy, Clone)]
76pub struct ScePspSVector3 {
77    pub x: i16,
78    pub y: i16,
79    pub z: i16,
80}
81
82#[repr(C)]
83#[derive(Debug, Copy, Clone)]
84pub struct ScePspIVector3 {
85    pub x: i32,
86    pub y: i32,
87    pub z: i32,
88}
89
90#[repr(C)]
91#[derive(Debug, Copy, Clone)]
92pub struct ScePspL64Vector3 {
93    pub x: u64,
94    pub y: u64,
95    pub z: u64,
96}
97
98// This is not annotated as aligned in PSPSDK. Maybe the `gum` operations that
99// take this struct should load it as 3 components (X, Y, Z) rather than a quad
100// load at once?
101#[repr(C, align(16))]
102#[derive(Debug, Copy, Clone)]
103pub struct ScePspFVector3 {
104    pub x: f32,
105    pub y: f32,
106    pub z: f32,
107}
108
109#[repr(C)]
110#[derive(Copy, Clone)]
111pub union ScePspVector3 {
112    pub fv: ScePspFVector3,
113    pub iv: ScePspIVector3,
114    pub f: [f32; 3usize],
115    pub i: [i32; 3usize],
116}
117
118#[repr(C)]
119#[derive(Debug, Copy, Clone)]
120pub struct ScePspSVector4 {
121    pub x: i16,
122    pub y: i16,
123    pub z: i16,
124    pub w: i16,
125}
126
127#[repr(C)]
128#[derive(Debug, Copy, Clone)]
129pub struct ScePspIVector4 {
130    pub x: i32,
131    pub y: i32,
132    pub z: i32,
133    pub w: i32,
134}
135
136#[repr(C)]
137#[derive(Debug, Copy, Clone)]
138pub struct ScePspL64Vector4 {
139    pub x: u64,
140    pub y: u64,
141    pub z: u64,
142    pub w: u64,
143}
144
145#[repr(C, align(16))]
146#[derive(Debug, Copy, Clone)]
147pub struct ScePspFVector4 {
148    pub x: f32,
149    pub y: f32,
150    pub z: f32,
151    pub w: f32,
152}
153
154#[repr(C)]
155#[derive(Debug, Copy, Clone)]
156pub struct ScePspFVector4Unaligned {
157    pub x: f32,
158    pub y: f32,
159    pub z: f32,
160    pub w: f32,
161}
162
163#[repr(C, align(16))]
164#[derive(Copy, Clone)]
165pub union ScePspVector4 {
166    pub fv: ScePspFVector4,
167    pub iv: ScePspIVector4,
168    pub qw: u128,
169    pub f: [f32; 4usize],
170    pub i: [i32; 4usize],
171}
172
173#[repr(C)]
174#[derive(Debug, Copy, Clone)]
175pub struct ScePspIMatrix2 {
176    pub x: ScePspIVector2,
177    pub y: ScePspIVector2,
178}
179
180#[repr(C)]
181#[derive(Debug, Copy, Clone)]
182pub struct ScePspFMatrix2 {
183    pub x: ScePspFVector2,
184    pub y: ScePspFVector2,
185}
186
187#[repr(C)]
188#[derive(Copy, Clone)]
189pub union ScePspMatrix2 {
190    pub fm: ScePspFMatrix2,
191    pub im: ScePspIMatrix2,
192    pub fv: [ScePspFVector2; 2usize],
193    pub iv: [ScePspIVector2; 2usize],
194    pub v: [ScePspVector2; 2usize],
195    pub f: [[f32; 2usize]; 2usize],
196    pub i: [[i32; 2usize]; 2usize],
197}
198
199#[repr(C)]
200#[derive(Debug, Copy, Clone)]
201pub struct ScePspIMatrix3 {
202    pub x: ScePspIVector3,
203    pub y: ScePspIVector3,
204    pub z: ScePspIVector3,
205}
206
207#[repr(C)]
208#[derive(Debug, Copy, Clone)]
209pub struct ScePspFMatrix3 {
210    pub x: ScePspFVector3,
211    pub y: ScePspFVector3,
212    pub z: ScePspFVector3,
213}
214
215#[repr(C)]
216#[derive(Copy, Clone)]
217pub union ScePspMatrix3 {
218    pub fm: ScePspFMatrix3,
219    pub im: ScePspIMatrix3,
220    pub fv: [ScePspFVector3; 3usize],
221    pub iv: [ScePspIVector3; 3usize],
222    pub v: [ScePspVector3; 3usize],
223    pub f: [[f32; 3usize]; 3usize],
224    pub i: [[i32; 3usize]; 3usize],
225}
226
227#[repr(C, align(16))]
228#[derive(Debug, Copy, Clone)]
229pub struct ScePspIMatrix4 {
230    pub x: ScePspIVector4,
231    pub y: ScePspIVector4,
232    pub z: ScePspIVector4,
233    pub w: ScePspIVector4,
234}
235
236#[repr(C)]
237#[derive(Debug, Copy, Clone)]
238pub struct ScePspIMatrix4Unaligned {
239    pub x: ScePspIVector4,
240    pub y: ScePspIVector4,
241    pub z: ScePspIVector4,
242    pub w: ScePspIVector4,
243}
244
245#[repr(C, align(16))]
246#[derive(Debug, Copy, Clone)]
247pub struct ScePspFMatrix4 {
248    pub x: ScePspFVector4,
249    pub y: ScePspFVector4,
250    pub z: ScePspFVector4,
251    pub w: ScePspFVector4,
252}
253
254#[repr(C)]
255#[derive(Debug, Copy, Clone)]
256pub struct ScePspFMatrix4Unaligned {
257    pub x: ScePspFVector4,
258    pub y: ScePspFVector4,
259    pub z: ScePspFVector4,
260    pub w: ScePspFVector4,
261}
262
263#[repr(C)]
264#[derive(Copy, Clone)]
265pub union ScePspMatrix4 {
266    pub fm: ScePspFMatrix4,
267    pub im: ScePspIMatrix4,
268    pub fv: [ScePspFVector4; 4usize],
269    pub iv: [ScePspIVector4; 4usize],
270    pub v: [ScePspVector4; 4usize],
271    pub f: [[f32; 4usize]; 4usize],
272    pub i: [[i32; 4usize]; 4usize],
273}