GPU/GL Arrays: Difference between revisions
 Identify commands by their ID, not by some random header they are used with.  | 
				|||
| Line 11: | Line 11: | ||
|-  | |-  | ||
| 0  | | 0  | ||
|   | | 0x0229  | ||
| u32, val<<8.  | | u32, val<<8.  | ||
| Unknown, val is 0 or 1.  | | Unknown, val is 0 or 1.  | ||
|-  | |-  | ||
| 1-2  | | 1-2  | ||
|   | | 0x0253  | ||
| Same as   | | Same as command 0x0229.  | ||
| Unknown  | | Unknown  | ||
|-  | |-  | ||
| 3  | | 3  | ||
|   | | 0x025E  | ||
| u32, val<<8.  | | u32, val<<8.  | ||
| This sets the GL rendering mode.  | | This sets the GL rendering mode.  | ||
|-  | |-  | ||
| 4  | | 4  | ||
|   | | 0x025E  | ||
| Value 0  | | Value 0  | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 5  | | 5  | ||
|   | | 0x025F  | ||
| Value 1  | | Value 1  | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 6  | | 6  | ||
|   | | 0x0253  | ||
| Value 0  | | Value 0  | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 7  | | 7  | ||
|   | | 0x0227  | ||
| u32  | | u32  | ||
| This specifies the indices data-type, and the indices array address.  | | This specifies the indices data-type, and the indices array address.  | ||
|-  | |-  | ||
| 8  | | 8  | ||
|   | | 0x0228  | ||
| u32  | | u32  | ||
| This specifies the number of elements in the array to use for rendering.  | | This specifies the number of elements in the array to use for rendering.  | ||
|-  | |-  | ||
| 9  | | 9  | ||
|   | | 0x0245  | ||
| Value 0  | | Value 0  | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 10  | | 10  | ||
|   | | 0x022F  | ||
| Value 1  | | Value 1  | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 11  | | 11  | ||
|   | | 0x0245  | ||
| Value 1  | | Value 1  | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 12  | | 12  | ||
|   | | 0x0231  | ||
| Value 1  | | Value 1  | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 13  | | 13  | ||
|   | | 0x0111  | ||
| Value 1  | | Value 1  | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 14  | | 14  | ||
|   | | 0x0229  | ||
| Value 0  | | Value 0  | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 15  | | 15  | ||
|   | | 0x0253  | ||
| Value 0  | | Value 0  | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 16  | | 16  | ||
|   | | 0x025E  | ||
| Value 0  | | Value 0  | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 17  | | 17  | ||
|   | | 0x02BA  | ||
| Value 0x7FFF0000  | | Value 0x7FFF0000  | ||
| ?  | | ?  | ||
|}  | |}  | ||
=====   | ===== Command 0x0200 =====  | ||
{| class="wikitable" border="1"  | {| class="wikitable" border="1"  | ||
!  Command Index  | !  Command Index  | ||
| Line 104: | Line 104: | ||
|-  | |-  | ||
| 0  | | 0  | ||
|   | | 0x0200  | ||
|    | |    | ||
| This sets the addresses for the GL arrays.  | | This sets the addresses for the GL arrays.  | ||
|-  | |-  | ||
| 1  | | 1  | ||
|   | | 0x02BB  | ||
|    | |    | ||
| ?  | | ?  | ||
|-  | |-  | ||
| 2  | | 2  | ||
|   | | 0x0232  | ||
|    | |    | ||
| Unknown, this command is used multiple times for specifying each parameter-buffer entry.  | | Unknown, this command is used multiple times for specifying each parameter-buffer entry.  | ||
|}  | |}  | ||
=== GL mode values for   | === GL mode values for command 0x025E ===  | ||
{| class="wikitable" border="1"  | {| class="wikitable" border="1"  | ||
!  Value  | !  Value  | ||
| Line 140: | Line 140: | ||
|}  | |}  | ||
=== Parameter value format for   | === Parameter value format for command 0x0227 ===  | ||
{| class="wikitable" border="1"  | {| class="wikitable" border="1"  | ||
!  Bit  | !  Bit  | ||
| Line 146: | Line 146: | ||
|-  | |-  | ||
| 30-0  | | 30-0  | ||
| Indices array address, relative to base set with   | | Indices array address, relative to base set with command 0x0200.  | ||
|-  | |-  | ||
| 31  | | 31  | ||
| Line 152: | Line 152: | ||
|}  | |}  | ||
=== Parameter structure for   | === Parameter structure for command 0x0200 ===  | ||
{| class="wikitable" border="1"  | {| class="wikitable" border="1"  | ||
!  Index Word  | !  Index Word  | ||
| Line 164: | Line 164: | ||
|-  | |-  | ||
| 0x2  | | 0x2  | ||
| Value is: <nowiki>(0xF0000000 + (val<<28)) | ((attrib_mask & 0xFFF)<<16)</nowiki>, where val is the total 4-bit value entries for the   | | Value is: <nowiki>(0xF0000000 + (val<<28)) | ((attrib_mask & 0xFFF)<<16)</nowiki>, where val is the total 4-bit value entries for the command 0x801F02BB parameter buffer.(Normally val is 8); attrib_mask is usually (0xFFF<<totalentries)  | ||
|-  | |-  | ||
| 0x3-0x26  | | 0x3-0x26  | ||
| Line 210: | Line 210: | ||
Size is 1-4. Using GL_FLOAT with a texture coordinates array causes the GPU to hang?  | Size is 1-4. Using GL_FLOAT with a texture coordinates array causes the GPU to hang?  | ||
=== Parameter structure for   | === Parameter structure for command 0x02BB ===  | ||
{| class="wikitable" border="1"  | {| class="wikitable" border="1"  | ||
!  Index Word  | !  Index Word  | ||
| Line 219: | Line 219: | ||
|}  | |}  | ||
=== Parameter structure for   | === Parameter structure for command 0x0232 ===  | ||
{| class="wikitable" border="1"  | {| class="wikitable" border="1"  | ||
!  Index Word  | !  Index Word  | ||
| Line 225: | Line 225: | ||
|-  | |-  | ||
| 0  | | 0  | ||
| Entry index + total   | | Entry index + total command 0x0200 parameter-buffer entries.  | ||
|-  | |-  | ||
| 1  | | 1  | ||
| Line 237: | Line 237: | ||
|}  | |}  | ||
Each parameter buffer for   | Each parameter buffer for command 0x0232 is an entry loaded from an array.  | ||
4 float24 values ?  | 4 float24 values ?  | ||