User Tools

Site Tools


f3dex

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
f3dex [2018/05/02 12:43]
trenavix
f3dex [2024/02/27 04:57] (current)
BanjoFreak64 [F2: G_SETTILESIZE]
Line 1: Line 1:
 ====== Fast3DEX Display List Commands ====== ====== Fast3DEX Display List Commands ======
-The Fast3DEX display list commands are microcode that are passed to the RSP for rendering.  ​The are all 8 bytes long.+The Fast3DEX display list commands are microcode that are passed to the RSP for rendering.  ​They are all 8 bytes long.
  
 ===== Fast3DEX Commands ===== ===== Fast3DEX Commands =====
  
 ==== 00: G_SPNOOP ==== ==== 00: G_SPNOOP ====
-No operation. This should only be used for debugging purposes.+Stalls the signal processor (the RSP), and as a consequence,​ the RDP too. This should only be used for debugging purposes.
  
 ''​00 00 00 00 00 00 00 00''​ ''​00 00 00 00 00 00 00 00''​
Line 26: Line 26:
   01 00 00 40 00 21 3D B8   01 00 00 40 00 21 3D B8
  
 +----
 ==== 03: G_MOVEMEM ==== ==== 03: G_MOVEMEM ====
 Takes a block of memory from an address and puts it in the location pointed to by an index and an offset. Takes a block of memory from an address and puts it in the location pointed to by an index and an offset.
Line 158: Line 159:
 ---- ----
  
-==== B3: G_MODIFYVTX ====+==== B2: G_MODIFYVTX ====
 Modifies a four-byte portion of the vertex specified. Modifies a four-byte portion of the vertex specified.
  
-''​B3 <color #​ff7f27>​ww</​color>​ <color #​00a2e8>​nn nn</​color>​ <color #​C250FF>​vv vv vv vv</​color>''​+''​B2 <color #​ff7f27>​ww</​color>​ <color #​00a2e8>​nn nn</​color>​ <color #​C250FF>​vv vv vv vv</​color>''​
  
 | <color #​ff7f27>​w</​color>​ | Enumerated set of values specifying what to change | | <color #​ff7f27>​w</​color>​ | Enumerated set of values specifying what to change |
Line 190: Line 191:
 This opcode sets the higher half of the generic RDP word. This opcode sets the higher half of the generic RDP word.
  
-''​E1 00 00 00 [<color #​22b14c>​hh hh hh hh</​color>​]''​+''​B4 00 00 00 [<color #​22b14c>​hh hh hh hh</​color>​]''​
  
 | <color #​22b14c>​h</​color>​ | New value of high word | | <color #​22b14c>​h</​color>​ | New value of high word |
Line 285: Line 286:
 Modifies various bits of the lower half of the RDP Other Modes word. Modifies various bits of the lower half of the RDP Other Modes word.
  
-''​B9 00 [<color #​ed1c24>​ss</​color>​] [<color #​22b14c>​nn</​color>​] [<color #​00a2e8>​dd dd dd dd</​color>​]''​+''​BA 00 [<color #​ed1c24>​ss</​color>​] [<color #​22b14c>​nn</​color>​] [<color #​00a2e8>​dd dd dd dd</​color>​]''​
  
 | <color #​ed1c24>​s</​color>​ | Amount mode-bits are shifted by, or number of LSb of mode bits to be changed | | <color #​ed1c24>​s</​color>​ | Amount mode-bits are shifted by, or number of LSb of mode bits to be changed |
Line 334: Line 335:
   BB 00 00 01 FF FF FF FF : Standard - at start for extremely close to 1 scaling enabled on tile desc 0.   BB 00 00 01 FF FF FF FF : Standard - at start for extremely close to 1 scaling enabled on tile desc 0.
   BB 00 00 01 80 00 80 00 : Standard - at start for 0.5 scaling enabled on tile desc 0.   BB 00 00 01 80 00 80 00 : Standard - at start for 0.5 scaling enabled on tile desc 0.
-  BB 00 00 01 0F 80 07 C0 : Scale for environment mapping 64x32 (Metal mario) ​and enable tile desc 0.+  BB 00 00 01 0F 80 07 C0 : Scale for environment mapping 64x32 and enable tile desc 0.
   BB 00 00 00 FF FF FF FF : Disable tile descriptor 0 (end of DL).   BB 00 00 00 FF FF FF FF : Disable tile descriptor 0 (end of DL).
  
Line 342: Line 343:
 Loads a new 32-bit value data to the location specified by index and offset. Loads a new 32-bit value data to the location specified by index and offset.
  
-''​DB <color #00a2e8>ii</​color>​ <color #22b14c>oo oo</​color>​ <color #​A946F2>​dd dd dd dd</​color>''​ +''​BC <color #22b14c>oo oo</​color>​ <color #00a2e8>ii</​color>​ <color #​A946F2>​dd dd dd dd</​color>''​ 
-| <color #00a2e8>i</​color>​ | Index into DMEM pointer table(?​) ​+| <color #22b14c>o</​color>​ | Offset from the indexed base address ​
-| <color #22b14c>o</​color>​ | Offset from the indexed base address(?​) ​|+| <color #00a2e8>i</​color>​ | Index into DMEM pointer table |
 | <color #​A946F2>​d</​color>​ | New 32-bit value | | <color #​A946F2>​d</​color>​ | New 32-bit value |
  
Line 364: Line 365:
 Pops num matrices from the stack specified by modelview matrix stack. Pops num matrices from the stack specified by modelview matrix stack.
  
-''​D8380002 ​<color #​00a2e8>​aaaaaaaa</​color>''​+''​BD380002 ​<color #​00a2e8>​aaaaaaaa</​color>''​
  
 | <color #​00a2e8>​a</​color>​ | The number of matrices to pop | | <color #​00a2e8>​a</​color>​ | The number of matrices to pop |
Line 374: Line 375:
 ''​BE 00 <color #​22b14c>​vv vv</​color>​ 00 00<color #00a2e8> ww ww</​color>''​ ''​BE 00 <color #​22b14c>​vv vv</​color>​ 00 00<color #00a2e8> ww ww</​color>''​
  
-| <color #​22b14c>​v</​color>​ | Vertex buffer index of first vertex for bounding volume (*0x0A) | +| <color #​22b14c>​v</​color>​ | Vertex buffer index of first vertex for bounding volume (*0x02) | 
-| <color #​00a2e8>​w</​color>​ | Vertex buffer index of last vertex for bounding volume (*0x0A) |+| <color #​00a2e8>​w</​color>​ | Vertex buffer index of last vertex for bounding volume (*0x02) |
  
 This command takes the vertices in the vertex buffer from vfirst through vlast as describing the volume of the object being rendered (called the "​bounding value"​). If the bounding volume does not intersect with the current viewing volume (aka if the bounding volume is entirely offscreen), then the display list ends, equivalent to a B8 opcode. Otherwise, the display list continues as though nothing happened (equivalent to 00, then). This command takes the vertices in the vertex buffer from vfirst through vlast as describing the volume of the object being rendered (called the "​bounding value"​). If the bounding volume does not intersect with the current viewing volume (aka if the bounding volume is entirely offscreen), then the display list ends, equivalent to a B8 opcode. Otherwise, the display list continues as though nothing happened (equivalent to 00, then).
Line 398: Line 399:
  
 ==== C0: G_NOOP ==== ==== C0: G_NOOP ====
-Does nothing. Seemingly different from 00; this opcode ​may stall the RDP instead of the RSPor the other way around, though nothing has been really confirmed. (Judging by gbi.h from F3DEX)+Does nothing. Seemingly different from 00; judging by the names and position of this opcode ​and 00, this opcode stalls ​the RDP, whereas ​the other stalls the RSP.
  
 ''​C0 00 00 00 00 00 00 00''​ ''​C0 00 00 00 00 00 00 00''​
Line 407: Line 408:
  
 ''​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>​]''​\\ ''​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>​]''​\\ +''​B4 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>​]''​+''​B3 00 00 00 [<color #​3F3FFF>​DD DD</​color>​] [<color darkcyan>​EE EE</​color>​]''​
  
 | <color darkred>​xxx</​color>​ | Lower-right corner X coordinate | | <color darkred>​xxx</​color>​ | Lower-right corner X coordinate |
Line 426: Line 427:
  
 ''​E5 [<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>​]''​\\ ''​E5 [<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>​]''​\\ +''​B4 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>​]''​+''​B3 00 00 00 [<color #​3F3FFF>​DD DD</​color>​] [<color darkcyan>​EE EE</​color>​]''​
  
 | <color darkred>​xxx</​color>​ | Lower-right corner X coordinate | | <color darkred>​xxx</​color>​ | Lower-right corner X coordinate |
Line 524: Line 525:
 Sets the scissoring rectangle. Sets the scissoring rectangle.
  
-''​ED [<color #​00a2e8>​xx x</​color>​][<​color #​22b14c>​y yy</​color>​] [<color #​ff7f27>​m</​color>​][<color #​ed1c24>​vv v</​color>​][<​color #​B755FF>​w ww</​color>​]''​+''​ED [<color #​00a2e8>​xx x</​color>​][<​color #​22b14c>​y yy</​color>​] ​0[<color #​ff7f27>​m</​color>​] [<color #​ed1c24>​vv v</​color>​][<​color #​B755FF>​w ww</​color>​]''​
  
 | <color #​00a2e8>​x</​color>​ | Upper-left X coordinate of rectangle | | <color #​00a2e8>​x</​color>​ | Upper-left X coordinate of rectangle |
Line 580: Line 581:
 Sets the texture coordinates and size Sets the texture coordinates and size
  
-''​F2 ​00 00 00 00 [<color darkred>​WW W</​color>​][<​color ​darkgreen>H HH</​color>​]''​+''​F2 [<color darkred>SS S</​color>​][<​color darkgreen>​T TT</​color>​] 0[<color #​00a2e8>​I</​color>​] [<color purple>WW W</​color>​][<​color ​darkcyan>H HH</​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 #​00a2e8>​I</​color>​ | Tile descriptor to load into | 
 +| <color purple>​W</​color>​ | (width - 1) << 2 | 
 +| <color darkcyan>​H</​color>​ | (height - 1) << 2 |
  
-| <color darkred>​W</​color>​ | (width - 1) << 2 | 
-| <color darkgreen>​H</​color>​ | (hieght - 1) << 2 | 
  
 Examples: Examples:
f3dex.1525264991.txt.gz · Last modified: 2018/05/02 12:43 by trenavix