Hack64 Wiki
Other Titles
Hack64 Wiki
Other Titles
This is an old revision of the document!
F3DDKR (unofficial name) is a modified version of the Fast3D microcode. It was created by Rareware for the game Diddy Kong Racing.
[XX XX] [YY YY] [ZZ ZZ] [XR] [YG] [ZB] [AA]
| XXXX | short | Position on X axis | 
| YYYY | short | Position on Y axis | 
| ZZZZ | short | Position on Z axis | 
| XR | byte or ubyte | X unit vector of normal or red color | 
| YG | byte or ubyte | Y unit vector of normal or green color | 
| ZB | byte or ubyte | Z unit vector of normal or blue color | 
| AA | ubyte | Alpha (Transparency) | 
[BF] [V0] [V1] [V2] [U1U1] [V1V1] [U2U2] [V2V2] [U3U3] [V3V3]
| BF | ubyte | 0x40 = Draw the backface of the triangle, 0x00 = Cull backface | 
| V0 | ubyte | First vertex index | 
| V1 | ubyte | Second vertex index | 
| V2 | ubyte | Third vertex index | 
| U1U1 | short | Texture coordinate on the U axis for the first vertex | 
| V1V1 | short | Texture coordinate on the V axis for the first vertex | 
| U2U2 | short | Texture coordinate on the U axis for the second vertex | 
| V2V2 | short | Texture coordinate on the V axis for the second vertex | 
| U3U3 | short | Texture coordinate on the U axis for the third vertex | 
| V3V3 | short | Texture coordinate on the V axis for the third vertex | 
Loads a matrix from a segmented address.
01 [II] 00 40 [AA AA AA AA]
| I | Index in the matrix array within DMEM. 0x00, 0x40, or 0x80 | 
| A | Segmented address of vectors | 
Loads up to 32 vertices from a segment address.
04 [NO] [II II] [SS SS SS SS]
| NO | Upper 5 bits = Number of vertices - 1, Lower 3 bits = Offset within vertex struct to start at | 
| I | (Where to start writing vertices inside the vertex buffer) * 2 | 
| S | Segmented address to load vertices from | 
Draws a batch of triangles from a segmented address. Up to 16 triangles can be drawn at once.
05 [N] [T] [LL LL] [SS SS SS SS]
| N | Number of triangles - 1 | 
| T | 0x01 = Enable texture, 0x00 = Disable texture | 
| L | Length of data to write in bytes ((N+1)*16) | 
| S | Segmented address to load triangle data from | 
DMA's a fixed-size display list from RDRAM and outputs the commands directly to the RDP. This is used by the game engine to load textures for models.
07 [NN] [LL LL] [SS SS SS SS]
| N | Number of commands | 
| L | Length of data in bytes (N*8) | 
| S | Segmented address to the display list. | 
Sets the perspective normal value. Might be unused.
B5 00 00 00 [PP PP] 00 00
| P | PERSPNORM value | 
The format is still the same as Fast3D, but two indices have been changed:
| G_MW_BILLBOARD | 0x02 | 0x01 = billboarding enabled, 0x00 = disabled | 
| G_MW_MVMATRIX | 0x0A | Specifies the index of the modelview matrix. |