User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
super_mario_64:fast3d_display_list_commands [2016/04/05 07:06]
queueram Add 01 G_MTX command details
super_mario_64:fast3d_display_list_commands [2018/01/10 05:01] (current)
cpuhacka101 [03: F3D_MOVEMEM]
Line 3: Line 3:
  
 ===== Fast3D Commands ===== ===== Fast3D Commands =====
 +
 +==== 00: G_NOOP ====
 +No operation. This should only be used for debugging purposes.
 +
 +''​00 00 00 00 00 00 00 00''​
  
 ==== 01: G_MTX ==== ==== 01: G_MTX ====
Line 22: Line 27:
  
 ==== 03: F3D_MOVEMEM ==== ==== 03: F3D_MOVEMEM ====
-Used in Super Mario 64 to load vector ​normals (shading) RGB values.+Used in Super Mario 64 to load vector ​lighting ambient/​diffuse RGBA values.
  
-''​03 [<color darkgrey>​TT</​color>​] 00 00 [<color purple>​AA AA AA AA</​color>​]''​+''​03 [<color darkgrey>​TT</​color>​] 00 10 [<color purple>​AA AA AA AA</​color>​]''​
  
-| <color darkgrey>​T</​color>​ | If 86, loads light values. If 88, loads dark values | +| <color darkgrey>​T</​color>​ | If 0x86, loads diffuse(lightvalues. If 0x88, loads ambient(darkvalues | 
-| <color purple>​A</​color>​ | Segmented address of vectors ​|+| <color purple>​A</​color>​ | Segmented address of RGBA |
  
-Example: Loads light RGB from 0x0 in RAM bank 0x0E; loads dark RGB from 0x08 in RAM Bank 0x0E +Example: Loads diffuse RGBA from 0x0 in RAM bank 0x0E; loads ambient RGBA from 0x08 in RAM Bank 0x0E 
-  03 86 00 00 0E 00 00 00 +  03 86 00 10 0E 00 00 00 
-  03 88 00 00 0E 00 00 08+  03 88 00 10 0E 00 00 08
  
 ---- ----
Line 53: Line 58:
 Signifies the start of a Display List. May be used to link data and branch the current DL. Signifies the start of a Display List. May be used to link data and branch the current DL.
  
-''​06 ​00 00 00 [<color purple>AA AA AA AA</​color>​]''​+''​06 ​[<color blue>​AA</​color>​] ​00 00 [<color purple>BB BB BB BB</​color>​]''​
  
-| <color purple>A</​color>​ | Segmented Address to branch to |+| <color blue>​AA</​color>​ | 00 = store return address, 01 = don't store (end DL after branch) | 
 +| <color purple>B</​color>​ | Segmented Address to branch to |
  
 Example: Loads a display list from 0xA50 in bank 0x07. Example: Loads a display list from 0xA50 in bank 0x07.
Line 92: Line 98:
 | 0x00001000 | cull front facing triangles | | 0x00001000 | cull front facing triangles |
 | 0x00002000 | cull back facing triangles | | 0x00002000 | cull back facing triangles |
-| 0x00004000 | Crystal effect? | 
 | 0x00010000 | Fog | | 0x00010000 | Fog |
 | 0x00020000 | Enable lighting? Vertex colors? | | 0x00020000 | Enable lighting? Vertex colors? |
Line 145: Line 150:
 Renders one triangle according to the vertices inside the vertex buffer Renders one triangle according to the vertices inside the vertex buffer
  
-''​BF 00 00 00 [<color darkred>​AA</​color>​] [<color darkgreen>​BB</​color>​] [<color darkblue>​CC</​color>​]''​+''​BF ​00 00 00 00 [<color darkred>​AA</​color>​] [<color darkgreen>​BB</​color>​] [<color darkblue>​CC</​color>​]''​
  
 | <color darkred>​A</​color>​ | First vertex to use for the triangle (* 0x0A) | | <color darkred>​A</​color>​ | First vertex to use for the triangle (* 0x0A) |
Line 153: Line 158:
 Example: Render a triangle using the vertex data specified at the vertex buffer positions 0, 1 (0x0A / 0x0A) and 2 (0x14 / 0x0A). Example: Render a triangle using the vertex data specified at the vertex buffer positions 0, 1 (0x0A / 0x0A) and 2 (0x14 / 0x0A).
  
-  BF 00 00 00 00 0A 14+  BF 00 00 00 00 00 0A 14 
 + 
 +---- 
 + 
 +==== E4: G_TEXRECT ==== 
 +Draws a textured 2D rectangle on the screen 
 + 
 +''​E4 [<color darkred>​xx x</​color>​][<​color darkgreen>​y yy</​color>​] 0[<color darkblue>​I</​color>​] [<color red>XX X</​color>​][<​color green>Y YY</​color>​]''​\\ 
 +''​B3 00 00 00 [<color #​BF9F00>​SS SS</​color>​] [<color #​8F3F10>​TT TT</​color>​]''​\\ 
 +''​B2 00 00 00 [<color #​3F3FFF>​DD DD</​color>​] [<color darkcyan>​EE EE</​color>​]''​ 
 + 
 +| <color darkred>​xxx</​color>​ | Lower-right corner X coordinate | 
 +| <color darkgreen>​yyy</​color>​ | Lower-right corner Y coordinate | 
 +| <color darkblue>​I</​color>​ | Tile descriptor to use for rectangle | 
 +| <color red>​XXX</​color>​ | Upper-left corner X coordinate | 
 +| <color green>​YYY</​color>​ | Upper-left corner Y coordinate | 
 +| <color #​BF9F00>​SSSS</​color>​ | Texture S coordinate at upper-left corner | 
 +| <color #​8F3F10>​TTTT</​color>​ | Texture T coordinate at upper-left corner | 
 +| <color #​3F3FFF>​DDDD</​color>​ | Change in S coordinate over change in X coordinate | 
 +| <color darkcyan>​EEEE</​color>​ | Change in T coordinate over change in Y coordinate |
  
 ---- ----
Line 175: Line 199:
 Determines how much data to load after SETTIMG Determines how much data to load after SETTIMG
  
-''​F3 ​00 00 00 ?? ?? ?? ??''​+''​F3 ​[<color darkred>​SS S</​color>​][<​color darkgreen>​T TT</​color>​] 0[<color darkblue>​I</​color>​] [<color purple>​XX X</​color>​][<​color darkcyan>​D DD</​color>​]''​ 
 + 
 +| <color darkred>​SSS</​color>​ | Upper-left corner of texture to load, S-axis | 
 +| <color darkgreen>​TTT</​color>​ | Upper-left corner of texture to load, T-axis | 
 +| <color darkblue>​I</​color>​ | Tile descriptor to load into | 
 +| <color purple>​XXX</​color>​ | Number of texels to load to TMEM, minus one | 
 +| <color darkcyan>​DDD</​color>​ | Change in T-axis per scanline |
  
 Examples: Examples:
Line 186: Line 216:
 Sets the texture properties (ex. mirroring) Sets the texture properties (ex. mirroring)
  
-''​F5 ​?? ?? ?? ?? ?? ?? ??''​+''​F5 ​[<color darkred>​XX XX XX XX XX XX XX</​color>​]''​ 
 + 
 +| <color darkred>​X</​color>​ | Bit-wise parameters | 
 + 
 +Bit-wise parameters:​ 
 + 
 +''​[<​color red>​fff</​color>​] [<color blue>​ii</​color>​] 0 [<color green>​nnnnnnnnn</​color>​] [<color #​BF9F00>​mmmmmmmmm</​color>​] 00000 [<color purple>​ttt</​color>​] [<color #​3F3FFF>​pppp</​color>​] [<color orange>​cc</​color>​] [<color darkred>​aaaa</​color>​] [<color darkblue>​ssss</​color>​] [<color darkgreen>​dd</​color>​] [<color #​8F3F10>​bbbb</​color>​] [<color darkcyan>​uuuu</​color>​]''​ 
 +| <color red>​fff</​color>​ | Sets color format | 
 +| <color blue>​ii</​color>​ | Sets bit size of pixel | 
 +| <color green>​nnnnnnnnn</​color>​ | Number of 64-bit values per row | 
 +| <color #​BF9F00>​mmmmmmmmm</​color>​ | Offset of texture in TMEM | 
 +| <color purple>​ttt</​color>​ | Tile descriptor being modified | 
 +| <color #​3F3FFF>​pppp</​color>​ | Which palette to use for colors (if relevant) | 
 +| <color orange>​cc</​color>​ | Clamp and Mirror flags for the T axis | 
 +| <color darkred>​aaaa</​color>​ | Sets how much of T axis is shown before wrapping | 
 +| <color darkblue>​ssss</​color>​ | Sets the amount to shift T axis values after perspective division | 
 +| <color darkgreen>​dd</​color>​ | Clamp and Mirror flags for the S axis | 
 +| <color #​8F3F10>​bbbb</​color>​ | Sets how much of S axis is shown before wrapping | 
 +| <color darkcyan>​uuuu</​color>​ | Sets the amount to shift S axis values after perspective division | 
 + 
 +|Color formats||| 
 +| 0 | RGBA | Color and alpha | 
 +| 1 | YUV |  | 
 +| 2 | CI | Index and look-up pallet | 
 +| 3 | IA | Grayscale and alpha | 
 +| 4 | I | Grayscale | 
 + 
 +|Bit sizes||| 
 +| 0 | 4-bit | I, IA, and CI | 
 +| 1 | 8-bit | I, IA, and CI | 
 +| 2 | 16-bit | RGBA, IA, and YUV | 
 +| 3 | 32-bit | RGBA |
  
 Examples: Examples:
Line 194: Line 255:
   F5 10 20 00 07 01 40 60 : Normal for 64x32 textures after G_SETTILESIZE   F5 10 20 00 07 01 40 60 : Normal for 64x32 textures after G_SETTILESIZE
   F5 70 10 00 07 01 40 50 : Grayscale for 32x32 textures after G_SETTILESIZE   F5 70 10 00 07 01 40 50 : Grayscale for 32x32 textures after G_SETTILESIZE
 +
 +----
 +
 +==== F6: G_FILLRECT ====
 +Draws a colored rectangle on the screen. Use command 0xF7 to set the color of the rectangle.
 +
 +''​F6 [<color darkred>​VV V</​color>​][<​color darkblue>​W WW</​color>​] 00 [<color darkgreen>​XX X</​color>​][<​color purple>Y YY</​color>​]''​
 +
 +| <color darkred>​VVV</​color>​ | Lower-right corner of rectangle, X-axis |
 +| <color darkblue>​WWW</​color>​ | Lower-right corner of rectangle, Y-axis |
 +| <color darkgreen>​XXX</​color>​ | Upper-left corner of rectangle, X-axis |
 +| <color purple>​YYY</​color>​ | Upper-left corner of rectangle, Y-axis |
 +
 +----
 +
 +==== F7: G_SETFILLCOLOR ====
 +Sets the fill color for use in fill mode.
 +
 +''​F7 00 00 00 [<color darkred>​CC CC CC CC</​color>​]''​
 +
 +| <color darkred>​CCCCCCCC</​color>​ | Fill value for use in fill mode |
  
 ---- ----
Line 285: Line 367:
   * http://​level42.ca/​projects/​ultra64/​Documentation/​man/​pro-man/​pro25/​25-01.html   * http://​level42.ca/​projects/​ultra64/​Documentation/​man/​pro-man/​pro25/​25-01.html
   * http://​wiki.spinout182.com/​w/​F3DEX2   * http://​wiki.spinout182.com/​w/​F3DEX2
 +  * http://​wiki.cloudmodding.com/​oot/​F3DZEX/​Opcode_Details