libultraship
Reimplementations of libultra (N64 SDK) functions for modern hardware
Loading...
Searching...
No Matches
f3dex.h
Go to the documentation of this file.
1#pragma once
2
3#define G_IMMFIRST -65
4
5constexpr int8_t F3DEX_G_SPNOOP = OPCODE(0x0);
6constexpr int8_t F3DEX_G_MTX = OPCODE(0x1);
7constexpr int8_t F3DEX_G_RESERVED0 = OPCODE(0x2);
8constexpr int8_t F3DEX_G_MOVEMEM = OPCODE(0x3);
9constexpr int8_t F3DEX_G_VTX = OPCODE(0x4);
10constexpr int8_t F3DEX_G_RESERVED1 = OPCODE(0x5);
11constexpr int8_t F3DEX_G_DL = OPCODE(0x6);
12constexpr int8_t F3DEX_G_RESERVED2 = OPCODE(0x7);
13constexpr int8_t F3DEX_G_RESERVED3 = OPCODE(0x8);
14constexpr int8_t F3DEX_G_TRI1 = OPCODE(G_IMMFIRST - 0);
15constexpr int8_t F3DEX_G_CULLDL = OPCODE(G_IMMFIRST - 1);
16constexpr int8_t F3DEX_G_POPMTX = OPCODE(G_IMMFIRST - 2);
17constexpr int8_t F3DEX_G_MOVEWORD = OPCODE(G_IMMFIRST - 3);
18constexpr int8_t F3DEX_G_TEXTURE = OPCODE(G_IMMFIRST - 4);
21constexpr int8_t F3DEX_G_ENDDL = OPCODE(G_IMMFIRST - 7);
24constexpr int8_t F3DEX_G_LINE3D = OPCODE(G_IMMFIRST - 10);
25constexpr int8_t F3DEX_G_RDPHALF_1 = OPCODE(G_IMMFIRST - 11);
26constexpr int8_t F3DEX_G_RDPHALF_2 = OPCODE(G_IMMFIRST - 12);
27constexpr int8_t F3DEX_G_MODIFYVTX = OPCODE(G_IMMFIRST - 13);
28constexpr int8_t F3DEX_G_RDPHALF_CONT = OPCODE(G_IMMFIRST - 13);
29constexpr int8_t F3DEX_G_TRI2 = OPCODE(G_IMMFIRST - 14);
30constexpr int8_t F3DEX_G_BRANCH_Z = OPCODE(G_IMMFIRST - 15);
31constexpr int8_t F3DEX_G_LOAD_UCODE = OPCODE(G_IMMFIRST - 16);
32constexpr int8_t F3DEX_G_QUAD = OPCODE(G_IMMFIRST - 10);
33
34// S2DEX
35constexpr int8_t F3DEX_G_SPRITE2D_BASE = OPCODE(9);
37constexpr int8_t F3DEX_G_SPRITE2D_DRAW = OPCODE(G_IMMFIRST - 2);
38constexpr int8_t F3DEX_G_NOOP = OPCODE(0xc0);
39
40/*
41 * G_MTX: parameter flags
42 */
43constexpr int8_t F3DEX_G_MTX_MODELVIEW = 0x00;
44constexpr int8_t F3DEX_G_MTX_PROJECTION = 0x01;
45constexpr int8_t F3DEX_G_MTX_MUL = 0x00;
46constexpr int8_t F3DEX_G_MTX_LOAD = 0x02;
47constexpr int8_t F3DEX_G_MTX_NOPUSH = 0x00;
48constexpr int8_t F3DEX_G_MTX_PUSH = 0x04;
49
50/*
51 * flags for G_SETGEOMETRYMODE
52 * (this rendering state is maintained in RSP)
53 *
54 * DO NOT USE THE LOW 8 BITS OF GEOMETRYMODE:
55 * The weird bit-ordering is for the micro-code: the lower byte
56 * can be OR'd in with G_TRI_SHADE (11001100) to construct
57 * the triangle command directly. Don't break it...
58 *
59 * DO NOT USE THE HIGH 8 BITS OF GEOMETRYMODE:
60 * The high byte is OR'd with 0x703 to form the clip code mask.
61 * If it is set to 0x04, this will cause near clipping to occur.
62 * If it is zero, near clipping will not occur.
63 *
64 * Further explanation:
65 * G_SHADE is necessary in order to see the color that you passed
66 * down with the vertex. If G_SHADE isn't set, you need to set the DP
67 * appropriately and use primcolor to see anything.
68 *
69 * G_SHADING_SMOOTH enabled means use all 3 colors of the triangle.
70 * If it is not set, then do 'flat shading', where only one vertex color
71 * is used (and all 3 vertices are set to that same color by the ucode)
72 * See the man page for gSP1Triangle().
73 *
74 */
75
76constexpr uint32_t F3DEX_G_CLIPPING = 0x00800000;
77constexpr uint32_t F3DEX_G_TEXTURE_ENABLE = 0x00000002;
78constexpr uint32_t F3DEX_G_SHADING_SMOOTH = 0x00000200;
79constexpr uint32_t F3DEX_G_CULL_FRONT = 0x00001000;
80constexpr uint32_t F3DEX_G_CULL_BACK = 0x00002000;
81constexpr uint32_t F3DEX_G_CULL_BOTH = 0x00003000;
82
83/*
84 * MOVEMEM indices
85 *
86 * Each of these indexes an entry in a dmem table
87 * which points to a 1-4 word block of dmem in
88 * which to store a 1-4 word DMA.
89 *
90 */
91constexpr uint8_t F3DEX_G_MV_VIEWPORT = 0x80;
92constexpr uint8_t F3DEX_G_MV_LOOKATY = 0x82;
93constexpr uint8_t F3DEX_G_MV_LOOKATX = 0x84;
94constexpr uint8_t F3DEX_G_MV_L0 = 0x86;
95constexpr uint8_t F3DEX_G_MV_L1 = 0x88;
96constexpr uint8_t F3DEX_G_MV_L2 = 0x8a;
97constexpr uint8_t F3DEX_G_MV_L3 = 0x8c;
98constexpr uint8_t F3DEX_G_MV_L4 = 0x8e;
99constexpr uint8_t F3DEX_G_MV_L5 = 0x90;
100constexpr uint8_t F3DEX_G_MV_L6 = 0x92;
101constexpr uint8_t F3DEX_G_MV_L7 = 0x94;
102constexpr uint8_t F3DEX_G_MV_TXTATT = 0x96;
103constexpr uint8_t F3DEX_G_MV_MATRIX_1 = 0x9e;
104constexpr uint8_t F3DEX_G_MV_MATRIX_2 = 0x98;
105constexpr uint8_t F3DEX_G_MV_MATRIX_3 = 0x9a;
106constexpr uint8_t F3DEX_G_MV_MATRIX_4 = 0x9c;
107
108/*
109 * MOVEWORD indices
110 *
111 * Each of these indexes an entry in a dmem table
112 * which points to a word in dmem in dmem where
113 * an immediate word will be stored.
114 *
115 */
116constexpr int8_t F3DEX_G_MW_POINTS = 0x0c;
117
118/*
119 * These are offsets from the address in the dmem table
120 */
121
122constexpr int8_t F3DEX_G_MWO_aLIGHT_2 = OPCODE(0x20);
123constexpr int8_t F3DEX_G_MWO_bLIGHT_2 = OPCODE(0x24);
124constexpr int8_t F3DEX_G_MWO_aLIGHT_3 = OPCODE(0x40);
125constexpr int8_t F3DEX_G_MWO_bLIGHT_3 = OPCODE(0x44);
126constexpr int8_t F3DEX_G_MWO_aLIGHT_4 = OPCODE(0x60);
127constexpr int8_t F3DEX_G_MWO_bLIGHT_4 = OPCODE(0x64);
128constexpr int8_t F3DEX_G_MWO_aLIGHT_5 = OPCODE(0x80);
129constexpr int8_t F3DEX_G_MWO_bLIGHT_5 = OPCODE(0x84);
130constexpr int8_t F3DEX_G_MWO_aLIGHT_6 = OPCODE(0xa0);
131constexpr int8_t F3DEX_G_MWO_bLIGHT_6 = OPCODE(0xa4);
132constexpr int8_t F3DEX_G_MWO_aLIGHT_7 = OPCODE(0xc0);
133constexpr int8_t F3DEX_G_MWO_bLIGHT_7 = OPCODE(0xc4);
134constexpr int8_t F3DEX_G_MWO_aLIGHT_8 = OPCODE(0xe0);
135constexpr int8_t F3DEX_G_MWO_bLIGHT_8 = OPCODE(0xe4);
136
137/*===========================================================================*
138 * GBI Commands for S2DEX microcode
139 *===========================================================================*/
140/* GBI Header */
141constexpr int8_t F3DEX_G_BG_1CYC = OPCODE(0x01);
142constexpr int8_t F3DEX_G_BG_COPY = OPCODE(0x02);
143constexpr int8_t F3DEX_G_OBJ_RECTANGLE = OPCODE(0x03);
144constexpr int8_t F3DEX_G_OBJ_SPRITE = OPCODE(0x04);
145constexpr int8_t F3DEX_G_OBJ_MOVEMEM = OPCODE(0x05);
146constexpr int8_t F3DEX_G_SELECT_DL = OPCODE(0xb0);
147constexpr int8_t F3DEX_G_OBJ_RENDERMODE = OPCODE(0xb1);
148constexpr int8_t F3DEX_G_OBJ_RECTANGLE_R = OPCODE(0xb2);
149constexpr int8_t F3DEX_G_OBJ_LOADTXTR = OPCODE(0xc1);
150constexpr int8_t F3DEX_G_OBJ_LDTX_SPRITE = OPCODE(0xc2);
151constexpr int8_t F3DEX_G_OBJ_LDTX_RECT = OPCODE(0xc3);
152constexpr int8_t F3DEX_G_OBJ_LDTX_RECT_R = OPCODE(0xc4);
153constexpr int8_t F3DEX_G_RDPHALF_0 = OPCODE(0xe4);
constexpr int8_t F3DEX_G_SPRITE2D_SCALEFLIP
Definition f3dex.h:36
constexpr int8_t F3DEX_G_MWO_aLIGHT_3
Definition f3dex.h:124
constexpr uint8_t F3DEX_G_MV_L4
Definition f3dex.h:98
constexpr int8_t F3DEX_G_OBJ_RECTANGLE_R
Definition f3dex.h:148
constexpr uint32_t F3DEX_G_CLIPPING
Definition f3dex.h:76
constexpr int8_t F3DEX_G_MWO_aLIGHT_7
Definition f3dex.h:132
constexpr int8_t F3DEX_G_SPRITE2D_DRAW
Definition f3dex.h:37
constexpr uint8_t F3DEX_G_MV_LOOKATY
Definition f3dex.h:92
constexpr uint8_t F3DEX_G_MV_L7
Definition f3dex.h:101
constexpr int8_t F3DEX_G_MWO_aLIGHT_8
Definition f3dex.h:134
constexpr int8_t F3DEX_G_CLEARGEOMETRYMODE
Definition f3dex.h:23
constexpr uint32_t F3DEX_G_CULL_FRONT
Definition f3dex.h:79
constexpr int8_t F3DEX_G_ENDDL
Definition f3dex.h:21
constexpr uint8_t F3DEX_G_MV_MATRIX_3
Definition f3dex.h:105
constexpr int8_t F3DEX_G_SPRITE2D_BASE
Definition f3dex.h:35
constexpr uint32_t F3DEX_G_CULL_BOTH
Definition f3dex.h:81
constexpr int8_t F3DEX_G_SETOTHERMODE_L
Definition f3dex.h:20
constexpr uint8_t F3DEX_G_MV_MATRIX_1
Definition f3dex.h:103
constexpr int8_t F3DEX_G_LINE3D
Definition f3dex.h:24
constexpr uint8_t F3DEX_G_MV_MATRIX_4
Definition f3dex.h:106
constexpr uint32_t F3DEX_G_CULL_BACK
Definition f3dex.h:80
constexpr uint8_t F3DEX_G_MV_VIEWPORT
Definition f3dex.h:91
constexpr uint8_t F3DEX_G_MV_LOOKATX
Definition f3dex.h:93
constexpr int8_t F3DEX_G_MWO_aLIGHT_2
Definition f3dex.h:122
constexpr int8_t F3DEX_G_OBJ_LDTX_RECT
Definition f3dex.h:151
#define G_IMMFIRST
Definition f3dex.h:3
constexpr int8_t F3DEX_G_MTX_PUSH
Definition f3dex.h:48
constexpr uint8_t F3DEX_G_MV_L2
Definition f3dex.h:96
constexpr int8_t F3DEX_G_MWO_bLIGHT_3
Definition f3dex.h:125
constexpr int8_t F3DEX_G_MWO_bLIGHT_2
Definition f3dex.h:123
constexpr int8_t F3DEX_G_MTX_LOAD
Definition f3dex.h:46
constexpr int8_t F3DEX_G_RDPHALF_2
Definition f3dex.h:26
constexpr int8_t F3DEX_G_BG_COPY
Definition f3dex.h:142
constexpr uint8_t F3DEX_G_MV_L1
Definition f3dex.h:95
constexpr uint8_t F3DEX_G_MV_L0
Definition f3dex.h:94
constexpr int8_t F3DEX_G_OBJ_LDTX_SPRITE
Definition f3dex.h:150
constexpr int8_t F3DEX_G_MOVEWORD
Definition f3dex.h:17
constexpr int8_t F3DEX_G_DL
Definition f3dex.h:11
constexpr uint8_t F3DEX_G_MV_TXTATT
Definition f3dex.h:102
constexpr int8_t F3DEX_G_LOAD_UCODE
Definition f3dex.h:31
constexpr int8_t F3DEX_G_MOVEMEM
Definition f3dex.h:8
constexpr int8_t F3DEX_G_POPMTX
Definition f3dex.h:16
constexpr int8_t F3DEX_G_SPNOOP
Definition f3dex.h:5
constexpr int8_t F3DEX_G_MWO_aLIGHT_6
Definition f3dex.h:130
constexpr int8_t F3DEX_G_RDPHALF_0
Definition f3dex.h:153
constexpr int8_t F3DEX_G_BG_1CYC
Definition f3dex.h:141
constexpr int8_t F3DEX_G_MW_POINTS
Definition f3dex.h:116
constexpr uint8_t F3DEX_G_MV_L6
Definition f3dex.h:100
constexpr uint8_t F3DEX_G_MV_L3
Definition f3dex.h:97
constexpr int8_t F3DEX_G_RESERVED3
Definition f3dex.h:13
constexpr int8_t F3DEX_G_QUAD
Definition f3dex.h:32
constexpr int8_t F3DEX_G_MTX
Definition f3dex.h:6
constexpr int8_t F3DEX_G_SETGEOMETRYMODE
Definition f3dex.h:22
constexpr int8_t F3DEX_G_SELECT_DL
Definition f3dex.h:146
constexpr int8_t F3DEX_G_RESERVED2
Definition f3dex.h:12
constexpr int8_t F3DEX_G_MWO_aLIGHT_5
Definition f3dex.h:128
constexpr int8_t F3DEX_G_OBJ_RENDERMODE
Definition f3dex.h:147
constexpr int8_t F3DEX_G_RESERVED0
Definition f3dex.h:7
constexpr int8_t F3DEX_G_MTX_NOPUSH
Definition f3dex.h:47
constexpr uint32_t F3DEX_G_SHADING_SMOOTH
Definition f3dex.h:78
constexpr int8_t F3DEX_G_MTX_PROJECTION
Definition f3dex.h:44
constexpr int8_t F3DEX_G_TEXTURE
Definition f3dex.h:18
constexpr int8_t F3DEX_G_MWO_bLIGHT_8
Definition f3dex.h:135
constexpr int8_t F3DEX_G_OBJ_LOADTXTR
Definition f3dex.h:149
constexpr int8_t F3DEX_G_TRI2
Definition f3dex.h:29
constexpr int8_t F3DEX_G_RESERVED1
Definition f3dex.h:10
constexpr int8_t F3DEX_G_MTX_MUL
Definition f3dex.h:45
constexpr int8_t F3DEX_G_RDPHALF_CONT
Definition f3dex.h:28
constexpr int8_t F3DEX_G_CULLDL
Definition f3dex.h:15
constexpr int8_t F3DEX_G_MWO_bLIGHT_4
Definition f3dex.h:127
constexpr int8_t F3DEX_G_SETOTHERMODE_H
Definition f3dex.h:19
constexpr uint8_t F3DEX_G_MV_MATRIX_2
Definition f3dex.h:104
constexpr int8_t F3DEX_G_VTX
Definition f3dex.h:9
constexpr int8_t F3DEX_G_MODIFYVTX
Definition f3dex.h:27
constexpr int8_t F3DEX_G_MWO_bLIGHT_5
Definition f3dex.h:129
constexpr int8_t F3DEX_G_RDPHALF_1
Definition f3dex.h:25
constexpr uint32_t F3DEX_G_TEXTURE_ENABLE
Definition f3dex.h:77
constexpr int8_t F3DEX_G_OBJ_SPRITE
Definition f3dex.h:144
constexpr int8_t F3DEX_G_BRANCH_Z
Definition f3dex.h:30
constexpr int8_t F3DEX_G_NOOP
Definition f3dex.h:38
constexpr int8_t F3DEX_G_OBJ_RECTANGLE
Definition f3dex.h:143
constexpr int8_t F3DEX_G_MWO_aLIGHT_4
Definition f3dex.h:126
constexpr int8_t F3DEX_G_MWO_bLIGHT_7
Definition f3dex.h:133
constexpr int8_t F3DEX_G_TRI1
Definition f3dex.h:14
constexpr int8_t F3DEX_G_MTX_MODELVIEW
Definition f3dex.h:43
constexpr int8_t F3DEX_G_OBJ_LDTX_RECT_R
Definition f3dex.h:152
constexpr int8_t F3DEX_G_OBJ_MOVEMEM
Definition f3dex.h:145
constexpr int8_t F3DEX_G_MWO_bLIGHT_6
Definition f3dex.h:131
constexpr uint8_t F3DEX_G_MV_L5
Definition f3dex.h:99
#define OPCODE(x)
Definition lus_gbi.h:4