Replace Tmem_nasm.asm with C++ code. Patch by pyro.
[Glide64.git] / ucode.h
bloba0c02eefdec319621cf828d2c4869023e17c3bd9
1 /*
2 * Glide64 - Glide video plugin for Nintendo 64 emulators.
3 * Copyright (c) 2002 Dave2001
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 //****************************************************************
22 // Glide64 - Glide Plugin for Nintendo 64 emulators (tested mostly with Project64)
23 // Project started on December 29th, 2001
25 // To modify Glide64:
26 // * Write your name and (optional)email, commented by your work, so I know who did it, and so that you can find which parts you modified when it comes time to send it to me.
27 // * Do NOT send me the whole project or file that you modified. Take out your modified code sections, and tell me where to put them. If people sent the whole thing, I would have many different versions, but no idea how to combine them all.
29 // Official Glide64 development channel: #Glide64 on EFnet
31 // Original author: Dave2001 (Dave2999@hotmail.com)
32 // Other authors: Gonetz, Gugaman
34 //****************************************************************
36 typedef void (*rdp_instr)();
38 // RDP graphic instructions pointer table
40 static rdp_instr gfx_instruction[9][256] =
43 // uCode 0 - RSP SW 2.0X
44 // 00-3f
45 // games: Super Mario 64, Tetrisphere, Demos
46 spnoop, uc0_matrix, rsp_reserved0, uc0_movemem,
47 uc0_vertex, rsp_reserved1, uc0_displaylist, rsp_reserved2,
48 rsp_reserved3, uc6_sprite2d, undef, undef,
49 undef, undef, undef, undef,
50 undef, undef, undef, undef,
51 undef, undef, undef, undef,
52 undef, undef, undef, undef,
53 undef, undef, undef, undef,
54 undef, undef, undef, undef,
55 undef, undef, undef, undef,
56 undef, undef, undef, undef,
57 undef, undef, undef, undef,
58 undef, undef, undef, undef,
59 undef, undef, undef, undef,
60 undef, undef, undef, undef,
61 undef, undef, undef, undef,
62 // 40-7f: Unused
63 undef, undef, undef, undef,
64 undef, undef, undef, undef,
65 undef, undef, undef, undef,
66 undef, undef, undef, undef,
67 undef, undef, undef, undef,
68 undef, undef, undef, undef,
69 undef, undef, undef, undef,
70 undef, undef, undef, undef,
71 undef, undef, undef, undef,
72 undef, undef, undef, undef,
73 undef, undef, undef, undef,
74 undef, undef, undef, undef,
75 undef, undef, undef, undef,
76 undef, undef, undef, undef,
77 undef, undef, undef, undef,
78 undef, undef, undef, undef,
79 // 80-bf: Immediate commands
80 undef, undef, undef, undef,
81 undef, undef, undef, undef,
82 undef, undef, undef, undef,
83 undef, undef, undef, undef,
84 undef, undef, undef, undef,
85 undef, undef, undef, undef,
86 undef, undef, undef, undef,
87 undef, undef, undef, undef,
88 undef, undef, undef, undef,
89 undef, undef, undef, undef,
90 undef, undef, undef, undef,
91 undef, undef, undef, undef,
92 undef, uc0_tri4, uc0_rdphalf_cont, uc0_rdphalf_2,
93 uc0_rdphalf_1, uc0_quad3d, uc0_cleargeometrymode, uc0_setgeometrymode,
94 uc0_enddl, uc0_setothermode_l, uc0_setothermode_h, uc0_texture,
95 uc0_moveword, uc0_popmatrix, uc0_culldl, uc0_tri1,
96 // c0-ff: RDP commands
97 rdp_noop, undef, undef, undef,
98 undef, undef, undef, undef,
99 rdp_trifill, rdp_trifillz, rdp_tritxtr, rdp_tritxtrz,
100 rdp_trishade, rdp_trishadez, rdp_trishadetxtr, rdp_trishadetxtrz,
101 undef, undef, undef, undef,
102 undef, undef, undef, undef,
103 undef, undef, undef, undef,
104 undef, undef, undef, undef,
105 undef, undef, undef, undef,
106 rdp_texrect, rdp_texrect, rdp_loadsync, rdp_pipesync,
107 rdp_tilesync, rdp_fullsync, rdp_setkeygb, rdp_setkeyr,
108 rdp_setconvert, rdp_setscissor, rdp_setprimdepth, rdp_setothermode,
109 rdp_loadtlut, undef, rdp_settilesize, rdp_loadblock,
110 rdp_loadtile, rdp_settile, rdp_fillrect, rdp_setfillcolor,
111 rdp_setfogcolor, rdp_setblendcolor, rdp_setprimcolor, rdp_setenvcolor,
112 rdp_setcombine, rdp_settextureimage, rdp_setdepthimage, rdp_setcolorimage
115 // uCode 1 - F3DEX 1.XX
116 // 00-3f
117 // games: Mario Kart, Star Fox
119 spnoop, uc0_matrix, rsp_reserved0, uc0_movemem,
120 uc1_vertex, rsp_reserved1, uc0_displaylist, rsp_reserved2,
121 rsp_reserved3, uc6_sprite2d, undef, undef,
122 undef, undef, undef, undef,
123 undef, undef, undef, undef,
124 undef, undef, undef, undef,
125 undef, undef, undef, undef,
126 undef, undef, undef, undef,
127 undef, undef, undef, undef,
128 undef, undef, undef, undef,
129 undef, undef, undef, undef,
130 undef, undef, undef, undef,
131 undef, undef, undef, undef,
132 undef, undef, undef, undef,
133 undef, undef, undef, undef,
134 undef, undef, undef, undef,
135 // 40-7f: unused
136 undef, undef, undef, undef,
137 undef, undef, undef, undef,
138 undef, undef, undef, undef,
139 undef, undef, undef, undef,
140 undef, undef, undef, undef,
141 undef, undef, undef, undef,
142 undef, undef, undef, undef,
143 undef, undef, undef, undef,
144 undef, undef, undef, undef,
145 undef, undef, undef, undef,
146 undef, undef, undef, undef,
147 undef, undef, undef, undef,
148 undef, undef, undef, undef,
149 undef, undef, undef, undef,
150 undef, undef, undef, undef,
151 undef, undef, undef, undef,
152 // 80-bf: Immediate commands
153 undef, undef, undef, undef,
154 undef, undef, undef, undef,
155 undef, undef, undef, undef,
156 undef, undef, undef, undef,
157 undef, undef, undef, undef,
158 undef, undef, undef, undef,
159 undef, undef, undef, undef,
160 undef, undef, undef, undef,
161 undef, undef, undef, undef,
162 undef, undef, undef, undef,
163 undef, undef, undef, undef,
164 undef, undef, undef, uc6_loaducode,
165 uc1_branch_z, uc1_tri2, uc2_modifyvtx, uc0_rdphalf_2,
166 uc1_rdphalf_1, uc1_line3d, uc0_cleargeometrymode, uc0_setgeometrymode,
167 uc0_enddl, uc0_setothermode_l, uc0_setothermode_h, uc0_texture,
168 uc0_moveword, uc0_popmatrix, uc2_culldl, uc1_tri1,
169 // c0-ff: RDP commands
170 rdp_noop, undef, undef, undef,
171 undef, undef, undef, undef,
172 rdp_trifill, rdp_trifillz, rdp_tritxtr, rdp_tritxtrz,
173 rdp_trishade, rdp_trishadez, rdp_trishadetxtr, rdp_trishadetxtrz,
174 undef, undef, undef, undef,
175 undef, undef, undef, undef,
176 undef, undef, undef, undef,
177 undef, undef, undef, undef,
178 undef, undef, undef, undef,
179 rdp_texrect, rdp_texrect, rdp_loadsync, rdp_pipesync,
180 rdp_tilesync, rdp_fullsync, rdp_setkeygb, rdp_setkeyr,
181 rdp_setconvert, rdp_setscissor, rdp_setprimdepth, rdp_setothermode,
182 rdp_loadtlut, undef, rdp_settilesize, rdp_loadblock,
183 rdp_loadtile, rdp_settile, rdp_fillrect, rdp_setfillcolor,
184 rdp_setfogcolor, rdp_setblendcolor, rdp_setprimcolor, rdp_setenvcolor,
185 rdp_setcombine, rdp_settextureimage, rdp_setdepthimage, rdp_setcolorimage
188 // uCode 2 - F3DEX 2.XX
189 // games: Zelda 64
191 // 00-3f
192 spnoop, uc2_vertex, uc2_modifyvtx, uc2_culldl,
193 uc1_branch_z, uc2_tri1, uc2_quad, uc2_quad,
194 uc2_line3d, uc6_bg_1cyc, uc6_bg_copy, uc6_obj_rendermode/*undef*/,
195 undef, undef, undef, undef,
196 uc0_tri4, uc0_tri4, uc0_tri4, uc0_tri4,
197 uc0_tri4, uc0_tri4, uc0_tri4, uc0_tri4,
198 uc0_tri4, uc0_tri4, uc0_tri4, uc0_tri4,
199 uc0_tri4, uc0_tri4, uc0_tri4, uc0_tri4,
200 undef, undef, undef, undef,
201 undef, undef, undef, undef,
202 undef, undef, undef, undef,
203 undef, undef, undef, undef,
204 undef, undef, undef, undef,
205 undef, undef, undef, undef,
206 undef, undef, undef, undef,
207 undef, undef, undef, undef,
209 // 40-7f: unused
210 undef, undef, undef, undef,
211 undef, undef, undef, undef,
212 undef, undef, undef, undef,
213 undef, undef, undef, undef,
214 undef, undef, undef, undef,
215 undef, undef, undef, undef,
216 undef, undef, undef, undef,
217 undef, undef, undef, undef,
218 undef, undef, undef, undef,
219 undef, undef, undef, undef,
220 undef, undef, undef, undef,
221 undef, undef, undef, undef,
222 undef, undef, undef, undef,
223 undef, undef, undef, undef,
224 undef, undef, undef, undef,
225 undef, undef, undef, undef,
227 // 80-bf: unused
228 undef, undef, undef, undef,
229 undef, undef, undef, undef,
230 undef, undef, undef, undef,
231 undef, undef, undef, undef,
232 undef, undef, undef, undef,
233 undef, undef, undef, undef,
234 undef, undef, undef, undef,
235 undef, undef, undef, undef,
236 undef, undef, undef, undef,
237 undef, undef, undef, undef,
238 undef, undef, undef, undef,
239 undef, undef, undef, undef,
240 undef, undef, undef, undef,
241 undef, undef, undef, undef,
242 undef, undef, undef, undef,
243 undef, undef, undef, undef,
245 // c0-ff: RDP commands mixed with uc2 commands
246 rdp_noop, undef, undef, undef,
247 undef, undef, undef, undef,
248 rdp_trifill, rdp_trifillz, rdp_tritxtr, rdp_tritxtrz,
249 rdp_trishade, rdp_trishadez, rdp_trishadetxtr, rdp_trishadetxtrz,
250 undef, undef, undef, uc2_special3,
251 uc2_special2, uc2_dlist_cnt, uc2_dma_io, uc0_texture,
252 uc2_pop_matrix, uc2_geom_mode, uc2_matrix, uc2_moveword,
253 uc2_movemem, uc2_load_ucode, uc0_displaylist, uc0_enddl,
254 spnoop, uc1_rdphalf_1, uc0_setothermode_l,uc0_setothermode_h,
255 rdp_texrect, rdp_texrect, rdp_loadsync, rdp_pipesync,
256 rdp_tilesync, rdp_fullsync, rdp_setkeygb, rdp_setkeyr,
257 rdp_setconvert, rdp_setscissor, rdp_setprimdepth, rdp_setothermode,
258 rdp_loadtlut, uc2_rdphalf_2, rdp_settilesize, rdp_loadblock,
259 rdp_loadtile, rdp_settile, rdp_fillrect, rdp_setfillcolor,
260 rdp_setfogcolor, rdp_setblendcolor, rdp_setprimcolor, rdp_setenvcolor,
261 rdp_setcombine, rdp_settextureimage, rdp_setdepthimage, rdp_setcolorimage
264 // uCode 3 - "RSP SW 2.0D", but not really
265 // 00-3f
266 // games: Wave Race
267 // ** Added by Gonetz **
269 spnoop, uc0_matrix, rsp_reserved0, uc0_movemem,
270 uc3_vertex, rsp_reserved1, uc0_displaylist, rsp_reserved2,
271 rsp_reserved3, uc6_sprite2d, undef, undef,
272 undef, undef, undef, undef,
273 undef, undef, undef, undef,
274 undef, undef, undef, undef,
275 undef, undef, undef, undef,
276 undef, undef, undef, undef,
277 undef, undef, undef, undef,
278 undef, undef, undef, undef,
279 undef, undef, undef, undef,
280 undef, undef, undef, undef,
281 undef, undef, undef, undef,
282 undef, undef, undef, undef,
283 undef, undef, undef, undef,
284 undef, undef, undef, undef,
285 // 40-7f: unused
286 undef, undef, undef, undef,
287 undef, undef, undef, undef,
288 undef, undef, undef, undef,
289 undef, undef, undef, undef,
290 undef, undef, undef, undef,
291 undef, undef, undef, undef,
292 undef, undef, undef, undef,
293 undef, undef, undef, undef,
294 undef, undef, undef, undef,
295 undef, undef, undef, undef,
296 undef, undef, undef, undef,
297 undef, undef, undef, undef,
298 undef, undef, undef, undef,
299 undef, undef, undef, undef,
300 undef, undef, undef, undef,
301 undef, undef, undef, undef,
302 // 80-bf: Immediate commands
303 undef, undef, undef, undef,
304 undef, undef, undef, undef,
305 undef, undef, undef, undef,
306 undef, undef, undef, undef,
307 undef, undef, undef, undef,
308 undef, undef, undef, undef,
309 undef, undef, undef, undef,
310 undef, undef, undef, undef,
311 undef, undef, undef, undef,
312 undef, undef, undef, undef,
313 undef, undef, undef, undef,
314 undef, undef, undef, undef,
315 undef, uc3_tri2, uc0_rdphalf_cont, uc0_rdphalf_2,
316 uc0_rdphalf_1, uc3_quad3d, uc0_cleargeometrymode, uc0_setgeometrymode,
317 uc0_enddl, uc0_setothermode_l, uc0_setothermode_h, uc0_texture,
318 uc0_moveword, uc0_popmatrix, uc0_culldl, uc3_tri1,
319 // c0-ff: RDP commands
320 rdp_noop, undef, undef, undef,
321 undef, undef, undef, undef,
322 rdp_trifill, rdp_trifillz, rdp_tritxtr, rdp_tritxtrz,
323 rdp_trishade, rdp_trishadez, rdp_trishadetxtr, rdp_trishadetxtrz,
324 undef, undef, undef, undef,
325 undef, undef, undef, undef,
326 undef, undef, undef, undef,
327 undef, undef, undef, undef,
328 undef, undef, undef, undef,
329 rdp_texrect, rdp_texrect, rdp_loadsync, rdp_pipesync,
330 rdp_tilesync, rdp_fullsync, rdp_setkeygb, rdp_setkeyr,
331 rdp_setconvert, rdp_setscissor, rdp_setprimdepth, rdp_setothermode,
332 rdp_loadtlut, undef, rdp_settilesize, rdp_loadblock,
333 rdp_loadtile, rdp_settile, rdp_fillrect, rdp_setfillcolor,
334 rdp_setfogcolor, rdp_setblendcolor, rdp_setprimcolor, rdp_setenvcolor,
335 rdp_setcombine, rdp_settextureimage, rdp_setdepthimage, rdp_setcolorimage
339 // uCode 4 - RSP SW 2.0D EXT
340 // 00-3f
341 // games: Star Wars: Shadows of the Empire
342 spnoop, uc0_matrix, rsp_reserved0, uc0_movemem,
343 uc4_vertex, rsp_reserved1, uc0_displaylist, rsp_reserved2,
344 rsp_reserved3, uc6_sprite2d, undef, undef,
345 undef, undef, undef, undef,
346 undef, undef, undef, undef,
347 undef, undef, undef, undef,
348 undef, undef, undef, undef,
349 undef, undef, undef, undef,
350 undef, undef, undef, undef,
351 undef, undef, undef, undef,
352 undef, undef, undef, undef,
353 undef, undef, undef, undef,
354 undef, undef, undef, undef,
355 undef, undef, undef, undef,
356 undef, undef, undef, undef,
357 undef, undef, undef, undef,
358 // 40-7f: Unused
359 undef, undef, undef, undef,
360 undef, undef, undef, undef,
361 undef, undef, undef, undef,
362 undef, undef, undef, undef,
363 undef, undef, undef, undef,
364 undef, undef, undef, undef,
365 undef, undef, undef, undef,
366 undef, undef, undef, undef,
367 undef, undef, undef, undef,
368 undef, undef, undef, undef,
369 undef, undef, undef, undef,
370 undef, undef, undef, undef,
371 undef, undef, undef, undef,
372 undef, undef, undef, undef,
373 undef, undef, undef, undef,
374 undef, undef, undef, undef,
375 // 80-bf: Immediate commands
376 undef, undef, undef, undef,
377 undef, undef, undef, undef,
378 undef, undef, undef, undef,
379 undef, undef, undef, undef,
380 undef, undef, undef, undef,
381 undef, undef, undef, undef,
382 undef, undef, undef, undef,
383 undef, undef, undef, undef,
384 undef, undef, undef, undef,
385 undef, undef, undef, undef,
386 undef, undef, undef, undef,
387 undef, undef, undef, undef,
388 undef, uc0_tri4, uc0_rdphalf_cont, uc0_rdphalf_2,
389 uc0_rdphalf_1, uc4_quad3d, uc0_cleargeometrymode, uc0_setgeometrymode,
390 uc0_enddl, uc0_setothermode_l, uc0_setothermode_h, uc0_texture,
391 uc0_moveword, uc0_popmatrix, uc0_culldl, uc4_tri1,
392 // c0-ff: RDP commands
393 rdp_noop, undef, undef, undef,
394 undef, undef, undef, undef,
395 rdp_trifill, rdp_trifillz, rdp_tritxtr, rdp_tritxtrz,
396 rdp_trishade, rdp_trishadez, rdp_trishadetxtr, rdp_trishadetxtrz,
397 undef, undef, undef, undef,
398 undef, undef, undef, undef,
399 undef, undef, undef, undef,
400 undef, undef, undef, undef,
401 undef, undef, undef, undef,
402 rdp_texrect, rdp_texrect, rdp_loadsync, rdp_pipesync,
403 rdp_tilesync, rdp_fullsync, rdp_setkeygb, rdp_setkeyr,
404 rdp_setconvert, rdp_setscissor, rdp_setprimdepth, rdp_setothermode,
405 rdp_loadtlut, undef, rdp_settilesize, rdp_loadblock,
406 rdp_loadtile, rdp_settile, rdp_fillrect, rdp_setfillcolor,
407 rdp_setfogcolor, rdp_setblendcolor, rdp_setprimcolor, rdp_setenvcolor,
408 rdp_setcombine, rdp_settextureimage, rdp_setdepthimage, rdp_setcolorimage
412 // uCode 5 - RSP SW 2.0 Diddy
413 // 00-3f
414 // games: Diddy Kong Racing
415 spnoop, uc5_matrix, rsp_reserved0, uc0_movemem,
416 uc5_vertex, uc5_tridma, uc0_displaylist, uc5_dl_in_mem,
417 rsp_reserved3, uc6_sprite2d, undef, undef,
418 undef, undef, undef, undef,
419 undef, undef, undef, undef,
420 undef, undef, undef, undef,
421 undef, undef, undef, undef,
422 undef, undef, undef, undef,
423 undef, undef, undef, undef,
424 undef, undef, undef, undef,
425 undef, undef, undef, undef,
426 undef, undef, undef, undef,
427 undef, undef, undef, undef,
428 undef, undef, undef, undef,
429 undef, undef, undef, undef,
430 undef, undef, undef, undef,
431 // 40-7f: Unused
432 undef, undef, undef, undef,
433 undef, undef, undef, undef,
434 undef, undef, undef, undef,
435 undef, undef, undef, undef,
436 undef, undef, undef, undef,
437 undef, undef, undef, undef,
438 undef, undef, undef, undef,
439 undef, undef, undef, undef,
440 undef, undef, undef, undef,
441 undef, undef, undef, undef,
442 undef, undef, undef, undef,
443 undef, undef, undef, undef,
444 undef, undef, undef, undef,
445 undef, undef, undef, undef,
446 undef, undef, undef, undef,
447 undef, undef, undef, undef,
448 // 80-bf: Immediate commands
449 undef, undef, undef, undef,
450 undef, undef, undef, undef,
451 undef, undef, undef, undef,
452 undef, undef, undef, undef,
453 undef, undef, undef, undef,
454 undef, undef, undef, undef,
455 undef, undef, undef, undef,
456 undef, undef, undef, undef,
457 undef, undef, undef, undef,
458 undef, undef, undef, undef,
459 undef, undef, undef, undef,
460 undef, undef, undef, undef,
461 undef, uc0_tri4, uc0_rdphalf_cont, uc0_rdphalf_2,
462 uc0_rdphalf_1, uc0_quad3d, uc5_cleargeometrymode, uc5_setgeometrymode,
463 uc0_enddl, uc0_setothermode_l, uc0_setothermode_h, uc0_texture,
464 uc5_moveword, uc0_popmatrix, uc0_culldl, uc5_dma_offsets,
465 // c0-ff: RDP commands
466 rdp_noop, undef, undef, undef,
467 undef, undef, undef, undef,
468 rdp_trifill, rdp_trifillz, rdp_tritxtr, rdp_tritxtrz,
469 rdp_trishade, rdp_trishadez, rdp_trishadetxtr, rdp_trishadetxtrz,
470 undef, undef, undef, undef,
471 undef, undef, undef, undef,
472 undef, undef, undef, undef,
473 undef, undef, undef, undef,
474 undef, undef, undef, undef,
475 rdp_texrect, rdp_texrect, rdp_loadsync, rdp_pipesync,
476 rdp_tilesync, rdp_fullsync, rdp_setkeygb, rdp_setkeyr,
477 rdp_setconvert, rdp_setscissor, rdp_setprimdepth, rdp_setothermode,
478 rdp_loadtlut, undef, rdp_settilesize, rdp_loadblock,
479 rdp_loadtile, rdp_settile, rdp_fillrect, rdp_setfillcolor,
480 rdp_setfogcolor, rdp_setblendcolor, rdp_setprimcolor, rdp_setenvcolor,
481 rdp_setcombine, rdp_settextureimage, rdp_setdepthimage, rdp_setcolorimage
484 // uCode 6 - S2DEX 1.XX
485 // games: Yoshi's Story
487 spnoop, uc6_bg_1cyc, uc6_bg_copy, uc6_obj_rectangle,
488 uc6_obj_sprite, uc6_obj_movemem, uc0_displaylist, rsp_reserved2,
489 rsp_reserved3, undef/*uc6_sprite2d*/, undef, undef,
490 undef, undef, undef, undef,
491 undef, undef, undef, undef,
492 undef, undef, undef, undef,
493 undef, undef, undef, undef,
494 undef, undef, undef, undef,
495 undef, undef, undef, undef,
496 undef, undef, undef, undef,
497 undef, undef, undef, undef,
498 undef, undef, undef, undef,
499 undef, undef, undef, undef,
500 undef, undef, undef, undef,
501 undef, undef, undef, undef,
502 undef, undef, undef, undef,
503 // 40-7f: unused
504 undef, undef, undef, undef,
505 undef, undef, undef, undef,
506 undef, undef, undef, undef,
507 undef, undef, undef, undef,
508 undef, undef, undef, undef,
509 undef, undef, undef, undef,
510 undef, undef, undef, undef,
511 undef, undef, undef, undef,
512 undef, undef, undef, undef,
513 undef, undef, undef, undef,
514 undef, undef, undef, undef,
515 undef, undef, undef, undef,
516 undef, undef, undef, undef,
517 undef, undef, undef, undef,
518 undef, undef, undef, undef,
519 undef, undef, undef, undef,
520 // 80-bf: Immediate commands
521 undef, undef, undef, undef,
522 undef, undef, undef, undef,
523 undef, undef, undef, undef,
524 undef, undef, undef, undef,
525 undef, undef, undef, undef,
526 undef, undef, undef, undef,
527 undef, undef, undef, undef,
528 undef, undef, undef, undef,
529 undef, undef, undef, undef,
530 undef, undef, undef, undef,
531 undef, undef, undef, undef,
532 undef, undef, undef, uc6_loaducode,
533 uc6_select_dl, uc6_obj_rendermode, uc6_obj_rectangle_r, uc0_rdphalf_2,
534 uc6_rdphalf_1, uc1_line3d, uc0_cleargeometrymode, uc0_setgeometrymode,
535 uc0_enddl, uc0_setothermode_l, uc0_setothermode_h, uc0_texture,
536 uc0_moveword, uc0_popmatrix, uc2_culldl, uc1_tri1,
537 // c0-ff: RDP commands
538 rdp_noop, uc6_obj_loadtxtr, uc6_obj_ldtx_sprite, uc6_obj_ldtx_rect,
539 uc6_ldtx_rect_r, undef, undef, undef,
540 rdp_trifill, rdp_trifillz, rdp_tritxtr, rdp_tritxtrz,
541 rdp_trishade, rdp_trishadez, rdp_trishadetxtr, rdp_trishadetxtrz,
542 undef, undef, undef, undef,
543 undef, undef, undef, undef,
544 undef, undef, undef, undef,
545 undef, undef, undef, undef,
546 undef, undef, undef, undef,
547 rdp_texrect, rdp_texrect, rdp_loadsync, rdp_pipesync,
548 rdp_tilesync, rdp_fullsync, rdp_setkeygb, rdp_setkeyr,
549 rdp_setconvert, rdp_setscissor, rdp_setprimdepth, rdp_setothermode,
550 rdp_loadtlut, undef, rdp_settilesize, rdp_loadblock,
551 rdp_loadtile, rdp_settile, rdp_fillrect, rdp_setfillcolor,
552 rdp_setfogcolor, rdp_setblendcolor, rdp_setprimcolor, rdp_setenvcolor,
553 rdp_setcombine, rdp_settextureimage, rdp_setdepthimage, rdp_setcolorimage
555 // uCode 7 - unknown
556 // games: Perfect Dark
558 // 00-3f
559 spnoop, uc0_matrix, rsp_reserved0, uc0_movemem,
560 uc7_vertex, rsp_reserved1, uc0_displaylist, uc7_colorbase,
561 rsp_reserved3, undef, undef, undef,
562 undef, undef, undef, undef,
563 undef, undef, undef, undef,
564 undef, undef, undef, undef,
565 undef, undef, undef, undef,
566 undef, undef, undef, undef,
567 undef, undef, undef, undef,
568 undef, undef, undef, undef,
569 undef, undef, undef, undef,
570 undef, undef, undef, undef,
571 undef, undef, undef, undef,
572 undef, undef, undef, undef,
573 undef, undef, undef, undef,
574 undef, undef, undef, undef,
576 // 40-7f: unused
577 undef, undef, undef, undef,
578 undef, undef, undef, undef,
579 undef, undef, undef, undef,
580 undef, undef, undef, undef,
581 undef, undef, undef, undef,
582 undef, undef, undef, undef,
583 undef, undef, undef, undef,
584 undef, undef, undef, undef,
585 undef, undef, undef, undef,
586 undef, undef, undef, undef,
587 undef, undef, undef, undef,
588 undef, undef, undef, undef,
589 undef, undef, undef, undef,
590 undef, undef, undef, undef,
591 undef, undef, undef, undef,
592 undef, undef, undef, undef,
594 // 80-bf: unused
595 undef, undef, undef, undef,
596 undef, undef, undef, undef,
597 undef, undef, undef, undef,
598 undef, undef, undef, undef,
600 undef, undef, undef, undef,
601 undef, undef, undef, undef,
602 undef, undef, undef, undef,
603 undef, undef, undef, undef,
605 undef, undef, undef, undef,
606 undef, undef, undef, undef,
607 undef, undef, undef, undef,
608 undef, undef, undef, undef,
610 undef, uc0_tri4, uc0_rdphalf_cont, uc0_rdphalf_2,
611 uc0_rdphalf_1, uc1_tri2, uc0_cleargeometrymode, uc0_setgeometrymode,
612 uc0_enddl, uc0_setothermode_l, uc0_setothermode_h, uc0_texture,
613 uc0_moveword, uc0_popmatrix, uc0_culldl, uc0_tri1,
615 // c0-ff: RDP commands mixed with uc2 commands
616 rdp_noop, undef, undef, undef,
617 undef, undef, undef, undef,
618 rdp_trifill, rdp_trifillz, rdp_tritxtr, rdp_tritxtrz,
619 rdp_trishade, rdp_trishadez, rdp_trishadetxtr, rdp_trishadetxtrz,
621 undef, undef, undef, undef,
622 undef, undef, undef, undef,
623 undef, undef, undef, undef,
624 undef, undef, undef, undef,
626 undef, undef, undef, undef,
627 rdp_texrect, rdp_texrect, rdp_loadsync, rdp_pipesync,
628 rdp_tilesync, rdp_fullsync, rdp_setkeygb, rdp_setkeyr,
629 rdp_setconvert, rdp_setscissor, rdp_setprimdepth, rdp_setothermode,
631 rdp_loadtlut, uc0_rdphalf_2, rdp_settilesize, rdp_loadblock,
632 rdp_loadtile, rdp_settile, rdp_fillrect, rdp_setfillcolor,
633 rdp_setfogcolor, rdp_setblendcolor, rdp_setprimcolor, rdp_setenvcolor,
634 rdp_setcombine, rdp_settextureimage, rdp_setdepthimage, rdp_setcolorimage
637 // uCode 8 - unknown
638 // games: Conker's Bad Fur Day
640 // 00-3f
641 spnoop, uc8_vertex, uc2_modifyvtx, uc2_culldl,
642 uc1_branch_z, uc2_tri1, uc2_quad, uc2_quad,
643 uc2_line3d, uc6_bg_1cyc, uc6_bg_copy, uc6_obj_rendermode/*undef*/,
644 undef, undef, undef, undef,
645 uc8_tri4, uc8_tri4, uc8_tri4, uc8_tri4,
646 uc8_tri4, uc8_tri4, uc8_tri4, uc8_tri4,
647 uc8_tri4, uc8_tri4, uc8_tri4, uc8_tri4,
648 uc8_tri4, uc8_tri4, uc8_tri4, uc8_tri4,
649 undef, undef, undef, undef,
650 undef, undef, undef, undef,
651 undef, undef, undef, undef,
652 undef, undef, undef, undef,
653 undef, undef, undef, undef,
654 undef, undef, undef, undef,
655 undef, undef, undef, undef,
656 undef, undef, undef, undef,
658 // 40-7f: unused
659 undef, undef, undef, undef,
660 undef, undef, undef, undef,
661 undef, undef, undef, undef,
662 undef, undef, undef, undef,
663 undef, undef, undef, undef,
664 undef, undef, undef, undef,
665 undef, undef, undef, undef,
666 undef, undef, undef, undef,
667 undef, undef, undef, undef,
668 undef, undef, undef, undef,
669 undef, undef, undef, undef,
670 undef, undef, undef, undef,
671 undef, undef, undef, undef,
672 undef, undef, undef, undef,
673 undef, undef, undef, undef,
674 undef, undef, undef, undef,
676 // 80-bf: unused
677 undef, undef, undef, undef,
678 undef, undef, undef, undef,
679 undef, undef, undef, undef,
680 undef, undef, undef, undef,
681 undef, undef, undef, undef,
682 undef, undef, undef, undef,
683 undef, undef, undef, undef,
684 undef, undef, undef, undef,
685 undef, undef, undef, undef,
686 undef, undef, undef, undef,
687 undef, undef, undef, undef,
688 undef, undef, undef, undef,
689 undef, undef, undef, undef,
690 undef, undef, undef, undef,
691 undef, undef, undef, undef,
692 undef, undef, undef, undef,
694 // c0-ff: RDP commands mixed with uc2 commands
695 rdp_noop, undef, undef, undef,
696 undef, undef, undef, undef,
697 rdp_trifill, rdp_trifillz, rdp_tritxtr, rdp_tritxtrz,
698 rdp_trishade, rdp_trishadez, rdp_trishadetxtr, rdp_trishadetxtrz,
699 undef, undef, undef, uc2_special3,
700 uc2_special2, uc2_dlist_cnt, uc2_dma_io, uc0_texture,
701 uc2_pop_matrix, uc2_geom_mode, uc2_matrix, uc8_moveword,
702 uc8_movemem, uc2_load_ucode, uc0_displaylist, uc0_enddl,
703 spnoop, uc1_rdphalf_1, uc0_setothermode_l, uc0_setothermode_h,
704 rdp_texrect, rdp_texrect, rdp_loadsync, rdp_pipesync,
705 rdp_tilesync, rdp_fullsync, rdp_setkeygb, rdp_setkeyr,
706 rdp_setconvert, rdp_setscissor, rdp_setprimdepth, rdp_setothermode,
707 rdp_loadtlut, uc2_rdphalf_2, rdp_settilesize, rdp_loadblock,
708 rdp_loadtile, rdp_settile, rdp_fillrect, rdp_setfillcolor,
709 rdp_setfogcolor, rdp_setblendcolor, rdp_setprimcolor, rdp_setenvcolor,
710 rdp_setcombine, rdp_settextureimage, rdp_setdepthimage, rdp_setcolorimage