sdk-core
v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Toggle main menu visibility
Loading...
Searching...
No Matches
gs_gp.h
Go to the documentation of this file.
1
6
7
#ifndef __GS_GP_H__
8
#define __GS_GP_H__
9
10
#include <
tamtypes.h
>
11
12
// General Purpose Registers
14
#define GS_REG_PRIM 0x00
16
#define GS_REG_RGBAQ 0x01
18
#define GS_REG_ST 0x02
20
#define GS_REG_UV 0x03
22
#define GS_REG_XYZF2 0x04
24
#define GS_REG_XYZ2 0x05
26
#define GS_REG_TEX0 0x06
28
#define GS_REG_TEX0_1 0x06
30
#define GS_REG_TEX0_2 0x07
32
#define GS_REG_CLAMP 0x08
34
#define GS_REG_CLAMP_1 0x08
36
#define GS_REG_CLAMP_2 0x09
38
#define GS_REG_FOG 0x0A
40
#define GS_REG_XYZF3 0x0C
42
#define GS_REG_XYZ3 0x0D
44
#define GS_REG_TEX1 0x14
46
#define GS_REG_TEX1_1 0x14
48
#define GS_REG_TEX1_2 0x15
50
#define GS_REG_TEX2 0x16
52
#define GS_REG_TEX2_1 0x16
54
#define GS_REG_TEX2_2 0x17
56
#define GS_REG_XYOFFSET 0x18
58
#define GS_REG_XYOFFSET_1 0x18
60
#define GS_REG_XYOFFSET_2 0x19
62
#define GS_REG_PRMODECONT 0x1A
64
#define GS_REG_PRMODE 0x1B
66
#define GS_REG_TEXCLUT 0x1C
68
#define GS_REG_SCANMSK 0x22
70
#define GS_REG_MIPTBP1 0x34
72
#define GS_REG_MIPTBP1_1 0x34
74
#define GS_REG_MIPTBP1_2 0x35
76
#define GS_REG_MIPTBP2 0x36
78
#define GS_REG_MIPTBP2_1 0x36
80
#define GS_REG_MIPTBP2_2 0x37
82
#define GS_REG_TEXA 0x3B
84
#define GS_REG_FOGCOL 0x3D
86
#define GS_REG_TEXFLUSH 0x3F
88
#define GS_REG_SCISSOR 0x40
90
#define GS_REG_SCISSOR_1 0x40
92
#define GS_REG_SCISSOR_2 0x41
94
#define GS_REG_ALPHA 0x42
96
#define GS_REG_ALPHA_1 0x42
98
#define GS_REG_ALPHA_2 0x43
100
#define GS_REG_DIMX 0x44
102
#define GS_REG_DTHE 0x45
104
#define GS_REG_COLCLAMP 0x46
106
#define GS_REG_TEST 0x47
108
#define GS_REG_TEST_1 0x47
110
#define GS_REG_TEST_2 0x48
112
#define GS_REG_PABE 0x49
114
#define GS_REG_FBA 0x4A
116
#define GS_REG_FBA_1 0x4A
118
#define GS_REG_FBA_2 0x4B
120
#define GS_REG_FRAME 0x4C
122
#define GS_REG_FRAME_1 0x4C
124
#define GS_REG_FRAME_2 0x4D
126
#define GS_REG_ZBUF 0x4E
128
#define GS_REG_ZBUF_1 0x4E
130
#define GS_REG_ZBUF_2 0x4F
132
#define GS_REG_BITBLTBUF 0x50
134
#define GS_REG_TRXPOS 0x51
136
#define GS_REG_TRXREG 0x52
138
#define GS_REG_TRXDIR 0x53
140
#define GS_REG_HWREG 0x54
142
#define GS_REG_SIGNAL 0x60
144
#define GS_REG_FINISH 0x61
146
#define GS_REG_LABEL 0x62
148
#define GS_REG_NOP 0x7F
149
150
// GS Primitive types
152
#define GS_PRIM_POINT 0x00
154
#define GS_PRIM_LINE 0x01
156
#define GS_PRIM_LINE_STRIP 0x02
158
#define GS_PRIM_TRIANGLE 0x03
160
#define GS_PRIM_TRIANGLE_STRIP 0x04
162
#define GS_PRIM_TRIANGLE_FAN 0x05
164
#define GS_PRIM_SPRITE 0x06
165
166
167
// For generic enabling or disabling
168
#define GS_DISABLE 0x00
169
#define GS_ENABLE 0x01
170
171
#define GS_SET_ALPHA(A, B, C, D, ALPHA) \
172
(u64)((A)&0x00000003) << 0 | (u64)((B)&0x00000003) << 2 | \
173
(u64)((C)&0x00000003) << 4 | (u64)((D)&0x00000003) << 6 | \
174
(u64)((ALPHA)&0x000000FF) << 32
175
176
#define GS_SET_BITBLTBUF(SBA, SBW, SPSM, DBA, DBW, DPSM) \
177
(u64)((SBA)&0x00003FFF) << 0 | (u64)((SBW)&0x0000003F) << 16 | \
178
(u64)((SPSM)&0x0000003F) << 24 | (u64)((DBA)&0x00003FFF) << 32 | \
179
(u64)((DBW)&0x0000003F) << 48 | (u64)((DPSM)&0x0000003F) << 56
180
181
#define GS_SET_CLAMP(WMS, WMT, MINU, MAXU, MINV, MAXV) \
182
(u64)((WMS)&0x00000003) << 0 | (u64)((WMT)&0x00000003) << 2 | \
183
(u64)((MINU)&0x000003FF) << 4 | (u64)((MAXU)&0x000003FF) << 14 | \
184
(u64)((MINV)&0x000003FF) << 24 | (u64)((MAXV)&0x000003FF) << 34
185
186
#define GS_SET_COLCLAMP(CLAMP) (u64)((CLAMP)&0x00000001)
187
188
#define GS_SET_DIMX(D00, D01, D02, D03, D10, D11, D12, D13, D20, D21, D22, D23, D30, D31, D32, D33) \
189
(u64)((D00)&0x00000003) << 0 | (u64)((D01)&0x00000003) << 4 | \
190
(u64)((D02)&0x00000003) << 8 | (u64)((D03)&0x00000003) << 12 | \
191
(u64)((D10)&0x00000003) << 16 | (u64)((D11)&0x00000003) << 20 | \
192
(u64)((D12)&0x00000003) << 24 | (u64)((D13)&0x00000003) << 28 | \
193
(u64)((D20)&0x00000003) << 32 | (u64)((D21)&0x00000003) << 36 | \
194
(u64)((D22)&0x00000003) << 40 | (u64)((D23)&0x00000003) << 44 | \
195
(u64)((D30)&0x00000003) << 48 | (u64)((D31)&0x00000003) << 52 | \
196
(u64)((D32)&0x00000003) << 56 | (u64)((D33)&0x00000003) << 60
197
198
#define GS_SET_DTHE(ENABLE) (u64)((ENABLE)&0x00000001)
199
200
#define GS_SET_FBA(ALPHA) (u64)((ALPHA)&0x00000001)
201
202
#define GS_SET_FINISH(A) (u64)((A)&0xFFFFFFFF)
203
204
#define GS_SET_FOG(FOG) (u64)((FOG)&0x000000FF) << 56
205
206
#define GS_SET_FOGCOL(R, G, B) \
207
(u64)((R)&0x000000FF) << 0 | (u64)((G)&0x000000FF) << 8 | \
208
(u64)((B)&0x000000FF) << 16
209
210
#define GS_SET_FRAME(FBA, FBW, PSM, FMSK) \
211
(u64)((FBA)&0x000001FF) << 0 | (u64)((FBW)&0x0000003F) << 16 | \
212
(u64)((PSM)&0x0000003F) << 24 | (u64)((FMSK)&0xFFFFFFFF) << 32
213
214
// PSMCT16 FMSK for GS_SET_FRAME
215
#define GS_SET_FMSK16(R, G, B, A) \
216
(u32)((R)&0x0000001F) << 3 | (u32)((G)&0x0000001F) << 11 | \
217
(u32)((G)&0x0000001F) << 19 | (u32)((A)&0x00000001) << 31
218
219
#define GS_SET_HWREG(A) (u64)((A)&0xFFFFFFFFFFFFFFFF)
220
221
#define GS_SET_LABEL(ID, MSK) \
222
(u64)((ID)&0xFFFFFFFF) << 0 | (u64)((MSK)&0xFFFFFFFF) << 32
223
224
#define GS_SET_MIPTBP1(TBA1, TBW1, TBA2, TBW2, TBA3, TBW3) \
225
(u64)((TBA1)&0x00003FFF) << 0 | (u64)((TBW1)&0x0000003F) << 14 | \
226
(u64)((TBA2)&0x00003FFF) << 20 | (u64)((TBW2)&0x0000003F) << 34 | \
227
(u64)((TBA3)&0x00003FFF) << 40 | (u64)((TBW3)&0x0000003F) << 54
228
229
#define GS_SET_MIPTBP2(TBA4, TBW4, TBA5, TBW5, TBA6, TBW6) \
230
(u64)((TBA4)&0x00003FFF) << 0 | (u64)((TBW4)&0x0000003F) << 14 | \
231
(u64)((TBA5)&0x00003FFF) << 20 | (u64)((TBW5)&0x0000003F) << 34 | \
232
(u64)((TBA6)&0x00003FFF) << 40 | (u64)((TBW6)&0x0000003F) << 54
233
234
#define GS_SET_NOP(A) (u64)((A)&0xFFFFFFFF)
235
236
#define GS_SET_PABE(ENABLE) (u64)((ENABLE)&0x00000001)
237
238
#define GS_SET_PRIM(PRIM, IIP, TME, FGE, ABE, AA1, FST, CTXT, FIX) \
239
(u64)((PRIM)&0x00000007) << 0 | (u64)((IIP)&0x00000001) << 3 | \
240
(u64)((TME)&0x00000001) << 4 | (u64)((FGE)&0x00000001) << 5 | \
241
(u64)((ABE)&0x00000001) << 6 | (u64)((AA1)&0x00000001) << 7 | \
242
(u64)((FST)&0x00000001) << 8 | (u64)((CTXT)&0x00000001) << 9 | \
243
(u64)((FIX)&0x00000001) << 10
244
245
#define GS_SET_PRMODE(IIP, TME, FGE, ABE, AA1, FST, CTXT, FIX) \
246
(u64)((IIP)&0x00000001) << 3 | (u64)((TME)&0x00000001) << 4 | \
247
(u64)((FGE)&0x00000001) << 5 | (u64)((ABE)&0x00000001) << 6 | \
248
(u64)((AA1)&0x00000001) << 7 | (u64)((FST)&0x00000001) << 8 | \
249
(u64)((CTXT)&0x00000001) << 9 | (u64)((FIX)&0x00000001) << 10
250
251
#define GS_SET_PRMODECONT(CTRL) (u64)((CTRL)&0x00000001)
252
253
#define GS_SET_RGBAQ(R, G, B, A, Q) \
254
(u64)((R)&0x000000FF) << 0 | (u64)((G)&0x000000FF) << 8 | \
255
(u64)((B)&0x000000FF) << 16 | (u64)((A)&0x000000FF) << 24 | \
256
(u64)((Q)&0xFFFFFFFF) << 32
257
258
#define GS_SET_SCANMSK(MSK) (u64)((MSK)&0x00000003)
259
260
#define GS_SET_SCISSOR(X0, X1, Y0, Y1) \
261
(u64)((X0)&0x000007FF) << 0 | (u64)((X1)&0x000007FF) << 16 | \
262
(u64)((Y0)&0x000007FF) << 32 | (u64)((Y1)&0x000007FF) << 48
263
264
#define GS_SET_SIGNAL(ID, MSK) \
265
(u64)((ID)&0xFFFFFFFF) << 0 | (u64)((MSK)&0xFFFFFFFF) << 32
266
267
#define GS_SET_ST(S, T) \
268
(u64)((S)&0xFFFFFFFF) << 0 | (u64)((T)&0xFFFFFFFF) << 32
269
270
#define GS_SET_TEST(ATEN, ATMETH, ATREF, ATFAIL, DATEN, DATMD, ZTEN, ZTMETH) \
271
(u64)((ATEN)&0x00000001) << 0 | (u64)((ATMETH)&0x00000007) << 1 | \
272
(u64)((ATREF)&0x000000FF) << 4 | (u64)((ATFAIL)&0x00000003) << 12 | \
273
(u64)((DATEN)&0x00000001) << 14 | (u64)((DATMD)&0x00000001) << 15 | \
274
(u64)((ZTEN)&0x00000001) << 16 | (u64)((ZTMETH)&0x00000003) << 17
275
276
#define GS_SET_TEX0_SMALL(TBA, TBW, PSM, TW, TH, TCC, TFNCT) \
277
(u64)((TBA)&0x00003FFF) << 0 | (u64)((TBW)&0x0000003F) << 14 | \
278
(u64)((PSM)&0x0000003F) << 20 | (u64)((TW)&0x0000000F) << 26 | \
279
(u64)((TH)&0x0000000F) << 30 | (u64)((TCC)&0x00000001) << 34 | \
280
(u64)((TFNCT)&0x00000003) << 35
281
282
#define GS_SET_TEX0(TBA, TBW, PSM, TW, TH, TCC, TFNCT, CBA, CPSM, CSM, CSA, CLD) \
283
(u64)((TBA)&0x00003FFF) << 0 | (u64)((TBW)&0x0000003F) << 14 | \
284
(u64)((PSM)&0x0000003F) << 20 | (u64)((TW)&0x0000000F) << 26 | \
285
(u64)((TH)&0x0000000F) << 30 | (u64)((TCC)&0x00000001) << 34 | \
286
(u64)((TFNCT)&0x00000003) << 35 | (u64)((CBA)&0x00003FFF) << 37 | \
287
(u64)((CPSM)&0x0000000F) << 51 | (u64)((CSM)&0x00000001) << 55 | \
288
(u64)((CSA)&0x0000001F) << 56 | (u64)((CLD)&0x00000007) << 61
289
290
#define GS_SET_TEX1(LCM, MXL, MMAG, MMIN, MTBA, L, K) \
291
(u64)((LCM)&0x00000001) << 0 | (u64)((MXL)&0x00000007) << 2 | \
292
(u64)((MMAG)&0x00000001) << 5 | (u64)((MMIN)&0x00000007) << 6 | \
293
(u64)((MTBA)&0x00000001) << 9 | (u64)((L)&0x00000003) << 19 | \
294
(u64)((K)&0x00000FFF) << 32
295
296
#define GS_SET_TEX2(PSM, CBA, CPSM, CSM, CSA, CLD) \
297
(u64)((PSM)&0x0000003F) << 20 | (u64)((CBA)&0x00003FFF) << 37 | \
298
(u64)((CPSM)&0x0000000F) << 51 | (u64)((CSM)&0x00000001) << 55 | \
299
(u64)((CSA)&0x0000001F) << 56 | (u64)((CLD)&0x00000007) << 61
300
301
#define GS_SET_TEXA(A0, AM, A1) \
302
(u64)((A0)&0x000000FF) << 0 | (u64)((AM)&0x00000001) << 15 | \
303
(u64)((A1)&0x000000FF) << 32
304
305
#define GS_SET_TEXCLUT(CBW, CU, CV) \
306
(u64)((CBW)&0x0000003F) << 0 | (u64)((CU)&0x0000003F) << 6 | \
307
(u64)((CV)&0x00000FFF) << 12
308
309
#define GS_SET_TRXDIR(DIR) (u64)((DIR)&0x00000003)
310
311
#define GS_SET_TEXFLUSH(A) (u64)((A)&0xFFFFFFFF)
312
313
#define GS_SET_TRXPOS(SX, SY, DX, DY, DIR) \
314
(u64)((SX)&0x000007FF) << 0 | (u64)((SY)&0x000007FF) << 16 | \
315
(u64)((DX)&0x000007FF) << 32 | (u64)((DY)&0x000007FF) << 48 | \
316
(u64)((DIR)&0x00000003) << 59
317
318
#define GS_SET_TRXREG(W, H) \
319
(u64)((W)&0x00000FFF) << 0 | (u64)((H)&0x00000FFF) << 32
320
321
#define GS_SET_UV(U, V) \
322
(u64)((U)&0x00003FFF) << 0 | (u64)((V)&0x00003FFF) << 16
323
324
#define GS_SET_XYOFFSET(X, Y) \
325
(u64)((X)&0x0000FFFF) << 0 | (u64)((Y)&0x0000FFFF) << 32
326
327
#define GS_SET_XYZ(X, Y, Z) \
328
(u64)((X)&0x0000FFFF) << 0 | (u64)((Y)&0x0000FFFF) << 16 | \
329
(u64)((Z)&0xFFFFFFFF) << 32
330
331
#define GS_SET_XYZF(X, Y, Z, F) \
332
(u64)((X)&0x0000FFFF) << 0 | (u64)((Y)&0x0000FFFF) << 16 | \
333
(u64)((Z)&0x00FFFFFF) << 32 | (u64)((F)&0x000000FF) << 56
334
335
#define GS_SET_ZBUF(ZBA, ZSM, ZMSK) \
336
(u64)((ZBA)&0x000001FF) << 0 | (u64)((ZSM)&0x0000000F) << 24 | \
337
(u64)((ZMSK)&0x00000001) << 32
338
339
#endif
/* __GS_GP_H__ */
tamtypes.h
core
common
include
gs_gp.h
Generated by
1.18.0