libultraship
Reimplementations of libultra (N64 SDK) functions for modern hardware
Loading...
Searching...
No Matches
f3dex2.h
Go to the documentation of this file.
1#pragma once
2
3constexpr int8_t F3DEX2_G_NOOP = OPCODE(0x00);
4constexpr int8_t F3DEX2_G_RDPHALF_2 = OPCODE(0xf1);
5constexpr int8_t F3DEX2_G_SETOTHERMODE_H = OPCODE(0xe3);
6constexpr int8_t F3DEX2_G_SETOTHERMODE_L = OPCODE(0xe2);
7constexpr int8_t F3DEX2_G_RDPHALF_1 = OPCODE(0xe1);
8constexpr int8_t F3DEX2_G_SPNOOP = OPCODE(0xe0);
9constexpr int8_t F3DEX2_G_ENDDL = OPCODE(0xdf);
10constexpr int8_t F3DEX2_G_DL = OPCODE(0xde);
11constexpr int8_t F3DEX2_G_LOAD_UCODE = OPCODE(0xdd);
12constexpr int8_t F3DEX2_G_MOVEMEM = OPCODE(0xdc);
13constexpr int8_t F3DEX2_G_MOVEWORD = OPCODE(0xdb);
14constexpr int8_t F3DEX2_G_MTX = OPCODE(0xda);
15constexpr int8_t F3DEX2_G_GEOMETRYMODE = OPCODE(0xd9);
16constexpr int8_t F3DEX2_G_POPMTX = OPCODE(0xd8);
17constexpr int8_t F3DEX2_G_TEXTURE = OPCODE(0xd7);
18constexpr int8_t F3DEX2_G_DMA_IO = OPCODE(0xd6);
19constexpr int8_t F3DEX2_G_SPECIAL_1 = OPCODE(0xd5);
20constexpr int8_t F3DEX2_G_SPECIAL_2 = OPCODE(0xd4);
21constexpr int8_t F3DEX2_G_SPECIAL_3 = OPCODE(0xd3);
22
23constexpr int8_t F3DEX2_G_VTX = OPCODE(0x01);
24constexpr int8_t F3DEX2_G_MODIFYVTX = OPCODE(0x02);
25constexpr int8_t F3DEX2_G_CULLDL = OPCODE(0x03);
26constexpr int8_t F3DEX2_G_BRANCH_Z = OPCODE(0x04);
27constexpr int8_t F3DEX2_G_TRI1 = OPCODE(0x05);
28constexpr int8_t F3DEX2_G_TRI2 = OPCODE(0x06);
29constexpr int8_t F3DEX2_G_QUAD = OPCODE(0x07);
30constexpr int8_t F3DEX2_G_LINE3D = OPCODE(0x08);
31
32/*
33 * G_MTX: parameter flags
34 */
35constexpr int8_t F3DEX2_G_MTX_MODELVIEW = OPCODE(0x00);
36constexpr int8_t F3DEX2_G_MTX_PROJECTION = OPCODE(0x04);
37constexpr int8_t F3DEX2_G_MTX_MUL = OPCODE(0x00);
38constexpr int8_t F3DEX2_G_MTX_LOAD = OPCODE(0x02);
39constexpr int8_t F3DEX2_G_MTX_NOPUSH = OPCODE(0x00);
40constexpr int8_t F3DEX2_G_MTX_PUSH = OPCODE(0x01);
41
42/*
43 * flags for G_SETGEOMETRYMODE
44 * (this rendering state is maintained in RSP)
45 *
46 * DO NOT USE THE LOW 8 BITS OF GEOMETRYMODE:
47 * The weird bit-ordering is for the micro-code: the lower byte
48 * can be OR'd in with G_TRI_SHADE (11001100) to construct
49 * the triangle command directly. Don't break it...
50 *
51 * DO NOT USE THE HIGH 8 BITS OF GEOMETRYMODE:
52 * The high byte is OR'd with 0x703 to form the clip code mask.
53 * If it is set to 0x04, this will cause near clipping to occur.
54 * If it is zero, near clipping will not occur.
55 *
56 * Further explanation:
57 * G_SHADE is necessary in order to see the color that you passed
58 * down with the vertex. If G_SHADE isn't set, you need to set the DP
59 * appropriately and use primcolor to see anything.
60 *
61 * G_SHADING_SMOOTH enabled means use all 3 colors of the triangle.
62 * If it is not set, then do 'flat shading', where only one vertex color
63 * is used (and all 3 vertices are set to that same color by the ucode)
64 * See the man page for gSP1Triangle().
65 *
66 */
67constexpr uint32_t F3DEX2_G_CLIPPING = 0x00800000;
68constexpr uint32_t F3DEX2_G_TEXTURE_ENABLE = 0x00000000;
69constexpr uint32_t F3DEX2_G_SHADING_SMOOTH = 0x00200000;
70constexpr uint32_t F3DEX2_G_CULL_FRONT = 0x00000200;
71constexpr uint32_t F3DEX2_G_CULL_BACK = 0x00000400;
72constexpr uint32_t F3DEX2_G_CULL_BOTH = 0x00000600;
73
74/*
75 * MOVEMEM indices
76 *
77 * Each of these indexes an entry in a dmem table
78 * which points to a 1-4 word block of dmem in
79 * which to store a 1-4 word DMA.
80 *
81 */
82constexpr int8_t F3DEX2_G_MV_MMTX = OPCODE(2);
83constexpr int8_t F3DEX2_G_MV_PMTX = OPCODE(6);
84constexpr int8_t F3DEX2_G_MV_VIEWPORT = OPCODE(8);
85constexpr int8_t F3DEX2_G_MV_LIGHT = OPCODE(10);
86constexpr int8_t F3DEX2_G_MV_POINT = OPCODE(12);
87constexpr int8_t F3DEX2_G_MV_MATRIX = OPCODE(14);
88constexpr int8_t F3DEX2_G_MVO_LOOKATX = OPCODE(0 * 24);
89constexpr int8_t F3DEX2_G_MVO_LOOKATY = OPCODE(1 * 24);
90constexpr int8_t F3DEX2_G_MVO_L0 = OPCODE(2 * 24);
91constexpr int8_t F3DEX2_G_MVO_L1 = OPCODE(3 * 24);
92constexpr int8_t F3DEX2_G_MVO_L2 = OPCODE(4 * 24);
93constexpr int8_t F3DEX2_G_MVO_L3 = OPCODE(5 * 24);
94constexpr int8_t F3DEX2_G_MVO_L4 = OPCODE(6 * 24);
95constexpr int8_t F3DEX2_G_MVO_L5 = OPCODE(7 * 24);
96constexpr int8_t F3DEX2_G_MVO_L6 = OPCODE(8 * 24);
97constexpr int8_t F3DEX2_G_MVO_L7 = OPCODE(9 * 24);
98
99/*
100 * MOVEWORD indices
101 *
102 * Each of these indexes an entry in a dmem table
103 * which points to a word in dmem in dmem where
104 * an immediate word will be stored.
105 *
106 */
107constexpr int8_t F3DEX2_G_MW_FORCEMTX = 0x0c;
108
109/*
110 * MOVEWORD indices
111 *
112 * Each of these indexes an entry in a dmem table
113 * which points to a word in dmem in dmem where
114 * an immediate word will be stored.
115 *
116 * These are offsets from the address in the dmem table
117 */
118constexpr int8_t F3DEX2_G_MWO_aLIGHT_2 = OPCODE(0x18);
119constexpr int8_t F3DEX2_G_MWO_bLIGHT_2 = OPCODE(0x1c);
120constexpr int8_t F3DEX2_G_MWO_aLIGHT_3 = OPCODE(0x30);
121constexpr int8_t F3DEX2_G_MWO_bLIGHT_3 = OPCODE(0x34);
122constexpr int8_t F3DEX2_G_MWO_aLIGHT_4 = OPCODE(0x48);
123constexpr int8_t F3DEX2_G_MWO_bLIGHT_4 = OPCODE(0x4c);
124constexpr int8_t F3DEX2_G_MWO_aLIGHT_5 = OPCODE(0x60);
125constexpr int8_t F3DEX2_G_MWO_bLIGHT_5 = OPCODE(0x64);
126constexpr int8_t F3DEX2_G_MWO_aLIGHT_6 = OPCODE(0x78);
127constexpr int8_t F3DEX2_G_MWO_bLIGHT_6 = OPCODE(0x7c);
128constexpr int8_t F3DEX2_G_MWO_aLIGHT_7 = OPCODE(0x90);
129constexpr int8_t F3DEX2_G_MWO_bLIGHT_7 = OPCODE(0x94);
130constexpr int8_t F3DEX2_G_MWO_aLIGHT_8 = OPCODE(0xa8);
131constexpr int8_t F3DEX2_G_MWO_bLIGHT_8 = OPCODE(0xac);
132
133/*===========================================================================*
134 * GBI Commands for S2DEX microcode
135 *===========================================================================*/
136/* GBI Header */
137constexpr int8_t F3DEX2_G_OBJ_RECTANGLE_R = OPCODE(0xda);
138constexpr int8_t F3DEX2_G_OBJ_MOVEMEM = OPCODE(0xdc);
139constexpr int8_t F3DEX2_G_RDPHALF_0 = OPCODE(0xe4);
140constexpr int8_t F3DEX2_G_OBJ_RECTANGLE = OPCODE(0x01);
141constexpr int8_t F3DEX2_G_OBJ_SPRITE = OPCODE(0x02);
142constexpr int8_t F3DEX2_G_SELECT_DL = OPCODE(0x04);
143constexpr int8_t F3DEX2_G_OBJ_LOADTXTR = OPCODE(0x05);
144constexpr int8_t F3DEX2_G_OBJ_LDTX_SPRITE = OPCODE(0x06);
145constexpr int8_t F3DEX2_G_OBJ_LDTX_RECT = OPCODE(0x07);
146constexpr int8_t F3DEX2_G_OBJ_LDTX_RECT_R = OPCODE(0x08);
147constexpr int8_t F3DEX2_G_BG_1CYC = OPCODE(0x09);
148constexpr int8_t F3DEX2_G_BG_COPY = OPCODE(0x0a);
149constexpr int8_t F3DEX2_G_OBJ_RENDERMODE = OPCODE(0x0b);
constexpr int8_t F3DEX2_G_MTX_PROJECTION
Definition f3dex2.h:36
constexpr int8_t F3DEX2_G_MWO_aLIGHT_8
Definition f3dex2.h:130
constexpr int8_t F3DEX2_G_MWO_bLIGHT_3
Definition f3dex2.h:121
constexpr int8_t F3DEX2_G_MWO_bLIGHT_5
Definition f3dex2.h:125
constexpr int8_t F3DEX2_G_MVO_L0
Definition f3dex2.h:90
constexpr int8_t F3DEX2_G_MVO_LOOKATX
Definition f3dex2.h:88
constexpr int8_t F3DEX2_G_SPECIAL_1
Definition f3dex2.h:19
constexpr int8_t F3DEX2_G_DMA_IO
Definition f3dex2.h:18
constexpr int8_t F3DEX2_G_TRI2
Definition f3dex2.h:28
constexpr int8_t F3DEX2_G_RDPHALF_2
Definition f3dex2.h:4
constexpr int8_t F3DEX2_G_OBJ_RENDERMODE
Definition f3dex2.h:149
constexpr int8_t F3DEX2_G_MV_POINT
Definition f3dex2.h:86
constexpr uint32_t F3DEX2_G_CLIPPING
Definition f3dex2.h:67
constexpr int8_t F3DEX2_G_MTX_LOAD
Definition f3dex2.h:38
constexpr int8_t F3DEX2_G_POPMTX
Definition f3dex2.h:16
constexpr int8_t F3DEX2_G_MWO_aLIGHT_3
Definition f3dex2.h:120
constexpr int8_t F3DEX2_G_NOOP
Definition f3dex2.h:3
constexpr int8_t F3DEX2_G_MVO_L2
Definition f3dex2.h:92
constexpr int8_t F3DEX2_G_MODIFYVTX
Definition f3dex2.h:24
constexpr int8_t F3DEX2_G_SPNOOP
Definition f3dex2.h:8
constexpr int8_t F3DEX2_G_ENDDL
Definition f3dex2.h:9
constexpr int8_t F3DEX2_G_MTX
Definition f3dex2.h:14
constexpr int8_t F3DEX2_G_SETOTHERMODE_L
Definition f3dex2.h:6
constexpr int8_t F3DEX2_G_MWO_aLIGHT_4
Definition f3dex2.h:122
constexpr int8_t F3DEX2_G_MTX_MODELVIEW
Definition f3dex2.h:35
constexpr int8_t F3DEX2_G_MVO_L3
Definition f3dex2.h:93
constexpr int8_t F3DEX2_G_MWO_bLIGHT_4
Definition f3dex2.h:123
constexpr int8_t F3DEX2_G_OBJ_RECTANGLE
Definition f3dex2.h:140
constexpr int8_t F3DEX2_G_OBJ_LDTX_SPRITE
Definition f3dex2.h:144
constexpr int8_t F3DEX2_G_MTX_MUL
Definition f3dex2.h:37
constexpr int8_t F3DEX2_G_OBJ_RECTANGLE_R
Definition f3dex2.h:137
constexpr int8_t F3DEX2_G_LINE3D
Definition f3dex2.h:30
constexpr int8_t F3DEX2_G_MWO_aLIGHT_2
Definition f3dex2.h:118
constexpr int8_t F3DEX2_G_DL
Definition f3dex2.h:10
constexpr int8_t F3DEX2_G_CULLDL
Definition f3dex2.h:25
constexpr int8_t F3DEX2_G_OBJ_LDTX_RECT
Definition f3dex2.h:145
constexpr int8_t F3DEX2_G_MV_MATRIX
Definition f3dex2.h:87
constexpr int8_t F3DEX2_G_MWO_bLIGHT_8
Definition f3dex2.h:131
constexpr uint32_t F3DEX2_G_CULL_BOTH
Definition f3dex2.h:72
constexpr int8_t F3DEX2_G_SETOTHERMODE_H
Definition f3dex2.h:5
constexpr uint32_t F3DEX2_G_TEXTURE_ENABLE
Definition f3dex2.h:68
constexpr int8_t F3DEX2_G_MVO_LOOKATY
Definition f3dex2.h:89
constexpr int8_t F3DEX2_G_MVO_L4
Definition f3dex2.h:94
constexpr int8_t F3DEX2_G_MV_LIGHT
Definition f3dex2.h:85
constexpr int8_t F3DEX2_G_MVO_L5
Definition f3dex2.h:95
constexpr int8_t F3DEX2_G_RDPHALF_1
Definition f3dex2.h:7
constexpr int8_t F3DEX2_G_TRI1
Definition f3dex2.h:27
constexpr int8_t F3DEX2_G_MV_PMTX
Definition f3dex2.h:83
constexpr int8_t F3DEX2_G_MWO_aLIGHT_5
Definition f3dex2.h:124
constexpr int8_t F3DEX2_G_QUAD
Definition f3dex2.h:29
constexpr int8_t F3DEX2_G_BG_COPY
Definition f3dex2.h:148
constexpr int8_t F3DEX2_G_MVO_L7
Definition f3dex2.h:97
constexpr int8_t F3DEX2_G_MWO_bLIGHT_6
Definition f3dex2.h:127
constexpr int8_t F3DEX2_G_SELECT_DL
Definition f3dex2.h:142
constexpr int8_t F3DEX2_G_MWO_bLIGHT_2
Definition f3dex2.h:119
constexpr int8_t F3DEX2_G_MV_VIEWPORT
Definition f3dex2.h:84
constexpr int8_t F3DEX2_G_MVO_L6
Definition f3dex2.h:96
constexpr int8_t F3DEX2_G_TEXTURE
Definition f3dex2.h:17
constexpr uint32_t F3DEX2_G_SHADING_SMOOTH
Definition f3dex2.h:69
constexpr int8_t F3DEX2_G_GEOMETRYMODE
Definition f3dex2.h:15
constexpr int8_t F3DEX2_G_SPECIAL_3
Definition f3dex2.h:21
constexpr int8_t F3DEX2_G_VTX
Definition f3dex2.h:23
constexpr int8_t F3DEX2_G_MWO_aLIGHT_7
Definition f3dex2.h:128
constexpr int8_t F3DEX2_G_MWO_bLIGHT_7
Definition f3dex2.h:129
constexpr int8_t F3DEX2_G_LOAD_UCODE
Definition f3dex2.h:11
constexpr int8_t F3DEX2_G_MVO_L1
Definition f3dex2.h:91
constexpr uint32_t F3DEX2_G_CULL_BACK
Definition f3dex2.h:71
constexpr int8_t F3DEX2_G_MOVEWORD
Definition f3dex2.h:13
constexpr int8_t F3DEX2_G_OBJ_LDTX_RECT_R
Definition f3dex2.h:146
constexpr int8_t F3DEX2_G_MOVEMEM
Definition f3dex2.h:12
constexpr int8_t F3DEX2_G_RDPHALF_0
Definition f3dex2.h:139
constexpr int8_t F3DEX2_G_OBJ_LOADTXTR
Definition f3dex2.h:143
constexpr int8_t F3DEX2_G_BRANCH_Z
Definition f3dex2.h:26
constexpr int8_t F3DEX2_G_MV_MMTX
Definition f3dex2.h:82
constexpr int8_t F3DEX2_G_MTX_PUSH
Definition f3dex2.h:40
constexpr int8_t F3DEX2_G_OBJ_MOVEMEM
Definition f3dex2.h:138
constexpr int8_t F3DEX2_G_MTX_NOPUSH
Definition f3dex2.h:39
constexpr int8_t F3DEX2_G_MW_FORCEMTX
Definition f3dex2.h:107
constexpr int8_t F3DEX2_G_BG_1CYC
Definition f3dex2.h:147
constexpr uint32_t F3DEX2_G_CULL_FRONT
Definition f3dex2.h:70
constexpr int8_t F3DEX2_G_MWO_aLIGHT_6
Definition f3dex2.h:126
constexpr int8_t F3DEX2_G_OBJ_SPRITE
Definition f3dex2.h:141
constexpr int8_t F3DEX2_G_SPECIAL_2
Definition f3dex2.h:20
#define OPCODE(x)
Definition lus_gbi.h:4