The general construction of a FIFO command is oooo cccc ssss ssss
o is the opcode, which is the general section of commands, and occasionally is all that is needed.
c is the subcommand, which is the operation to be performed selected from the opcode.
s is how many hwords will be pushed to the FIFO in total for this command, including this one.
Opcode | Subcode | Description |
---|---|---|
0000 | N/A | Performs no operation |
D/Z buffer refers to either Display or Z buffer. When WBEN has Z buffer set, the Z buffer is accessed. When it has the display buffer set, it accesses the display buffer.
Subopcode 0010 applies to both D and Z buffer images, depending on the WBEN mode.
The result of these is stored into the readback register
D/Z buffer refers to either Display or Z buffer. When WBEN has Z buffer set, the Z buffer is accessed. When it has the display buffer set, it accesses the display buffer.
Opcode | Subcode | Description | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1001 | 0000 | Texture buffer bank[0000 0000 000b bbbb] Texture buffer bank [1011 1110 1110 1111] Terminator (0xBEEF) | ||||||||||||||||||||||||||||||||
1001 | 0001 | Target[iiii iiii iiii iiii] Target register [1011 1110 1110 1111] Terminator (0xBEEF)
| ||||||||||||||||||||||||||||||||
1001 | 0010 | Mask[mmmm mmmm mmmm mmmm] Mask [1011 1110 1110 1111] Terminator (0xBEEF) | ||||||||||||||||||||||||||||||||
1001 | 0011 | PixelEngine control[cccc cccc cccc cccc] PixelEngine control register [1011 1110 1110 1111] Terminator (0xBEEF)
| ||||||||||||||||||||||||||||||||
1001 | 0100 | Clear Z value[zzzz zzzz zzzz zzzz] Clear Z value [1011 1110 1110 1111] Terminator (0xBEEF) | ||||||||||||||||||||||||||||||||
1001 | 0101 | Frame control[cccc cccc cccc cccc] Frame control [1011 1110 1110 1111] Terminator (0xBEEF)
| ||||||||||||||||||||||||||||||||
1001 | 0110 | Clear color value[cccc cccc cccc cccc] Clear color value [1011 1110 1110 1111] Terminator (0xBEEF) | ||||||||||||||||||||||||||||||||
1001 | 0111 | Intensity-Color mask[mmmm mmmm mmmm mmmm] Intensity-color mask [1011 1110 1110 1111] Terminator (0xBEEF) Sets the intensity and color depths. Intensity is the top, and color is the bottom. | ||||||||||||||||||||||||||||||||
1001 | 1000 | Flash Intensity-Color value[0000 vvvv vvvv vvvv] Flash Intensity-Color value [1011 1110 1110 1111] Terminator (0xBEEF) | ||||||||||||||||||||||||||||||||
1001 | 1001 | Clear texture select[cccc cccc cccc cccc] Clear texture select [1011 1110 1110 1111] Terminator (0xBEEF) | ||||||||||||||||||||||||||||||||
1001 | 1010 | Clear mask[mmmm mmmm mmmm mmmm] Clear mask [1011 1110 1110 1111] Terminator (0xBEEF) | ||||||||||||||||||||||||||||||||
1001 | 1011 | CWT X offset[xxxx xxxx xxxx xxxx] CWT X offset [1011 1110 1110 1111] Terminator (0xBEEF)
| ||||||||||||||||||||||||||||||||
1001 | 1100 | CWT Y offset[yyyy yyyy yyyy yyyy] CWT Y offset [1011 1110 1110 1111] Terminator (0xBEEF)
|
Opcode | Subcode | Description |
---|---|---|
1010 | 0000 | Fill buffer[0000 000x xxxx xxxx] X left [0000 0000 yyyy yyyy] Y top [0000 000x xxxx xxxx] X right [0000 0000 yyyy yyyy] Y bottom [dddd dddd dddd dddd] Pixel Data [zzzz zzzz zzzz zzzz] default Z [1011 1110 1110 1111] Terminator (0xBEEF) |
1010 | 0001 | Vertex test[xxxx xxxx xxxx xxxx] Vtx1 X coordinate (1.0.15) [yyyy yyyy yyyy yyyy] Vtx1 Y coordinate (1.0.15) [zzzz zzzz zzzz zzzz] Vtx1 Z coordinate (1.0.15) [...................] ... [xxxx xxxx xxxx xxxx] VtxN X coordinate (1.0.15) [yyyy yyyy yyyy yyyy] VtxN Y coordinate (1.0.15) [zzzz zzzz zzzz zzzz] VtxN Z coordinate (1.0.15) [1011 1110 1110 1111] Terminator (0xBEEF)Tests if the coordinates fit within the source matrix limits. |
1010 | 0010 | TE sync[1011 1110 1110 1111] Terminator (0xBEEF) |
1010 | 0011 | Matrix multiply, 3*1[nnnn nnnn nnnn nnnn] Mtx[0] [nnnn nnnn nnnn nnnn] Mtx[1] [nnnn nnnn nnnn nnnn] Mtx[2] [1011 1110 1110 1111] Terminator (0xBEEF)Mdst[0~2] = Msrc[0~2][0~2] * Mtx[0~2] |
1010 | 0100 | Matrix multiply, 4*4[nnnn nnnn nnnn nnnn] Mtx[0][0] (1.0.15 or 1.8.7) [nnnn nnnn nnnn nnnn] Mtx[0][1] (1.0.15 or 1.8.7) [nnnn nnnn nnnn nnnn] Mtx[0][2] (1.0.15 or 1.8.7) [nnnn nnnn nnnn nnnn] Mtx[0][3] (1.0.15 or 1.8.7) [nnnn nnnn nnnn nnnn] Mtx[1][0] (1.0.15 or 1.8.7) [...................] ... [nnnn nnnn nnnn nnnn] Mtx[3][3] (1.0.15 or 1.8.7) [1011 1110 1110 1111] Terminator (0xBEEF)Mdst[0~3][0~3] = Msrc[0~3][0~3] * Mtx[0~3][0~3] |
1010 | 0101 | Matrix multiply, 3*3[nnnn nnnn nnnn nnnn] Mtx[0][0] (1.0.15 or 1.8.7) [nnnn nnnn nnnn nnnn] Mtx[0][1] (1.0.15 or 1.8.7) [nnnn nnnn nnnn nnnn] Mtx[0][2] (1.0.15 or 1.8.7) [nnnn nnnn nnnn nnnn] Mtx[1][0] (1.0.15 or 1.8.7) [...................] ... [nnnn nnnn nnnn nnnn] Mtx[2][2] (1.0.15 or 1.8.7) [1011 1110 1110 1111] Terminator (0xBEEF)Mdst[0~2][0~2] = Msrc[0~2][0~2] * Mtx[0~2][0~2] |
1010 | 0110 | Matrix multiply, 4*4[nnnn nnnn nnnn nnnn] Mtx[0][0] (1.8.7) [nnnn nnnn nnnn nnnn] Mtx[0][1] (1.8.7) [nnnn nnnn nnnn nnnn] Mtx[0][2] (1.8.7) [nnnn nnnn nnnn nnnn] Mtx[0][3] (1.8.7) [nnnn nnnn nnnn nnnn] Mtx[1][0] (1.8.7) [...................] ... [nnnn nnnn nnnn nnnn] Mtx[3][3] (1.8.7) [1011 1110 1110 1111] Terminator (0xBEEF)Mdst[0~3][0~3] = Msrc[0~3][0~3] * Mtx[0~3][0~3] |
1010 | 0111 | Matrix multiply, 3*3[nnnn nnnn nnnn nnnn] Mtx[0][0] (1.8.7) [nnnn nnnn nnnn nnnn] Mtx[0][1] (1.8.7) [nnnn nnnn nnnn nnnn] Mtx[0][2] (1.8.7) [nnnn nnnn nnnn nnnn] Mtx[1][0] (1.8.7) [...................] ... [nnnn nnnn nnnn nnnn] Mtx[2][2] (1.8.7) [1011 1110 1110 1111] Terminator (0xBEEF)Mdst[0~2][0~2] = Msrc[0~2][0~2] * Mtx[0~2][0~2] |
1010 | 1000 | Matrix copy (dst -> src)[1011 1110 1110 1111] Terminator (0xBEEF) |
1010 | 1001 | Matrix copy (dst -> obj)[1011 1110 1110 1111] Terminator (0xBEEF) |
1010 | 1010 | Matrix copy (dst -> normal)[1011 1110 1110 1111] Terminator (0xBEEF) |
1010 | 1011 | Matrix copy (dst -> result)[1011 1110 1110 1111] Terminator (0xBEEF) |
1010 | 1100 | Matrix copy (src -> result)[1011 1110 1110 1111] Terminator (0xBEEF) |
1010 | 1101 | Matrix copy (result -> src)[1011 1110 1110 1111] Terminator (0xBEEF) |
1010 | 1110 | Matrix copy (dst -> light 1 vector)[1011 1110 1110 1111] Terminator (0xBEEF) |
1010 | 1111 | Matrix copy (dst -> light 2 vector)[1011 1110 1110 1111] Terminator (0xBEEF) |
Result is in the readback register.
Opcode | Subcode | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1100 | 0000 | Read TextureEngine register[rrrr rrrr rrrr rrrr] TextureEngine register number [1011 1110 1110 1111] Terminator (0xBEEF)
|
Result is in the readback register.
Opcode | Subcode | Description |
---|---|---|
1101 | 0000 | Texture buffer bank Read for 1001 0000 |
1101 | 0001 | Target Read for 1001 0001 |
1101 | 0010 | Mask Read for 1001 0010 |
1101 | 0011 | PixelEngine control Read for 1001 0011 |
1101 | 0100 | Clear Z value Read for 1001 0100 |
1101 | 0101 | Frame control Read for 1001 0101 |
1101 | 0110 | Clear color value Read for 1001 0110 |
1101 | 0111 | Intensity-Color mask Read for 1001 0111 |
1101 | 1000 | Flash Intensity-Color value Read for 1001 1000 |
1101 | 1001 | Clear texture select Read for 1001 1001 |
1101 | 1010 | Clear mask Read for 1001 1010 |
1101 | 1011 | CWT X offset Read for 1001 1011 |
1101 | 1100 | CWT Y offset Read for 1001 1100 |
Specifies the colors used for overlays. LUT 0 is always transparent.
Opcode | Subcode | Description |
---|---|---|
1110 | 0001 | Write LUT 1[0000 cccc cccc cccc] LUT entry data [1011 1110 1110 1111] Terminator (0xBEEF) |
1110 | 0010 | Write LUT 2[0000 cccc cccc cccc] LUT entry data [1011 1110 1110 1111] Terminator (0xBEEF) |
1110 | 0011 | Write LUT 3[0000 cccc cccc cccc] LUT entry data [1011 1110 1110 1111] Terminator (0xBEEF) |
Read the colors used for overlays. LUT 0 is always transparent.
Data is in the readback register.
Opcode | Subcode | Description |
---|---|---|
1111 | 0001 | Read LUT 1[1011 1110 1110 1111] Terminator (0xBEEF) |
1111 | 0010 | Read LUT 2[1011 1110 1110 1111] Terminator (0xBEEF) |
1111 | 0011 | Read LUT 3[1011 1110 1110 1111] Terminator (0xBEEF) |