Changes

Jump to navigation Jump to search
3,660 bytes removed ,  09:15, 5 December 2015
m
no edit summary
Line 1: Line 1: −
This page describes the [[GPU_Commands|GPU commands]] used for OpenGL arrays.
+
Merged into [[GPU/Programming_Guide]].
 
  −
==== Command Sets ====
  −
 
  −
===== glDrawElements() =====
  −
{| class="wikitable" border="1"
  −
!  Command Index
  −
!  CommandID
  −
!  Parameter
  −
!  Description
  −
|-
  −
| 0
  −
| 0x00020229
  −
| u32, val<<8.
  −
| Unknown, val is 0 or 1.
  −
|-
  −
| 1-2
  −
| 0x00020253
  −
| Same as CmdID 0x00020229.
  −
| Unknown
  −
|-
  −
| 3
  −
| 0x0002025E
  −
| u32, val<<8.
  −
| This sets the GL rendering mode.
  −
|-
  −
| 4
  −
| 0x0004025E
  −
| Value 0
  −
| ?
  −
|-
  −
| 5
  −
| 0x000F025F
  −
| Value 1
  −
| ?
  −
|-
  −
| 6
  −
| 0x00010253
  −
| Value 0
  −
| ?
  −
|-
  −
| 7
  −
| 0x000F0227
  −
| u32
  −
| This specifies the indices data-type, and the indices array address.
  −
|-
  −
| 8
  −
| 0x000F0228
  −
| u32
  −
| This specifies the number of elements in the array to use for rendering.
  −
|-
  −
| 9
  −
| 0x00010245
  −
| Value 0
  −
| ?
  −
|-
  −
| 10
  −
| 0x000F022F
  −
| Value 1
  −
| ?
  −
|-
  −
| 11
  −
| 0x00010245
  −
| Value 1
  −
| ?
  −
|-
  −
| 12
  −
| 0x000F0231
  −
| Value 1
  −
| ?
  −
|-
  −
| 13
  −
| 0x000F0111
  −
| Value 1
  −
| ?
  −
|-
  −
| 14
  −
| 0x00020229
  −
| Value 0
  −
| ?
  −
|-
  −
| 15
  −
| 0x00020253
  −
| Value 0
  −
| ?
  −
|-
  −
| 16
  −
| 0x0002025E
  −
| Value 0
  −
| ?
  −
|-
  −
| 17
  −
| 0x000C02BA
  −
| Value 0x7FFF0000
  −
| ?
  −
|}
  −
 
  −
===== CmdID 0x826F0200 =====
  −
{| class="wikitable" border="1"
  −
!  Command Index
  −
!  CommandID
  −
!  Parameter
  −
!  Description
  −
|-
  −
| 0
  −
| 0x826F0200
  −
|
  −
| This sets the addresses for the GL arrays.
  −
|-
  −
| 1
  −
| 0x801F02BB
  −
|
  −
| ?
  −
|-
  −
| 2
  −
| 0x803F0232
  −
|
  −
| Unknown, this command is used multiple times for specifying each parameter-buffer entry.
  −
|}
  −
 
  −
=== GL mode values for CmdID 0x0002025E ===
  −
{| class="wikitable" border="1"
  −
!  Value
  −
!  Description
  −
|-
  −
| 0
  −
| ?
  −
|-
  −
| 1
  −
| GL_TRIANGLE_STRIP
  −
|-
  −
| 2
  −
| GL_TRIANGLE_FAN
  −
|-
  −
| 3
  −
| GL_TRIANGLES
  −
|-
  −
| 4
  −
| Unknown, this seems to have the same effect as value 0.
  −
|}
  −
 
  −
=== Parameter value format for CmdID 0x000F0227 ===
  −
{| class="wikitable" border="1"
  −
!  Bit
  −
!  Description
  −
|-
  −
| 30-0
  −
| Indices array address, relative to VRAM physical address 0x18000000. Thus, when this relative address is 0x08XXXXXX, the array is located in FCRAM.
  −
|-
  −
| 31
  −
| 0 = indices data-type GL_UNSIGNED_BYTE, 1 = GL_UNSIGNED_SHORT.
  −
|}
  −
 
  −
=== Parameter structure for CmdID 0x826F0200 ===
  −
{| class="wikitable" border="1"
  −
!  Index Word
  −
!  Description
  −
|-
  −
| 0x0
  −
| Base physical address >> 3, normally located in VRAM.
  −
|-
  −
| 0x1
  −
| Every 4 bits is used for specifying the array data-type and size for each entry.
  −
|-
  −
| 0x2
  −
| Value is: <nowiki>(0xF0000000 + (val<<28)) | (((0xFF<<totalentries) & 0xFF)<<16)</nowiki>.
  −
|-
  −
| 0x3-0x26
  −
| 12 entries, each entry is 3 words.
  −
|}
  −
 
  −
These parameters and the entries' parameters are set by gl*Pointer().
  −
 
  −
==== Entry structure ====
  −
{| class="wikitable" border="1"
  −
!  Index Word
  −
!  Description
  −
|-
  −
| 0
  −
| Physical address, relative to the base address.
  −
|-
  −
| 1
  −
| Entry index
  −
|-
  −
| 2
  −
| Value is: <nowiki>0x10000000 | (arraytype<<16).</nowiki>
  −
|}
  −
 
  −
When the entry is unused, the entry data is all-zero.
  −
 
  −
===== Entry array types =====
  −
{| class="wikitable" border="1"
  −
!  Type
  −
!  Description
  −
|-
  −
| 0x2
  −
| ?
  −
|-
  −
| 0x3
  −
| Normals array
  −
|-
  −
| 0x4
  −
| Texture coordinates array
  −
|-
  −
| 0xC
  −
| Vertex array
  −
|-
  −
| 0x10
  −
| ?
  −
|}
  −
 
  −
===== Array data-type/size values =====
  −
{| class="wikitable" border="1"
  −
!  Value
  −
!  GL type
  −
|-
  −
| 0x0 + ((size-1)*4)
  −
| GL_BYTE
  −
|-
  −
| 0x1 + ((size-1)*4)
  −
| GL_UNSIGNED_BYTE
  −
|-
  −
| 0x2 + ((size-1)*4)
  −
| GL_UNSIGNED_SHORT/GL_SHORT
  −
|-
  −
| 0x3 + ((size-1)*4)
  −
| GL_FLOAT
  −
|}
  −
 
  −
Size is 1-4.
  −
 
  −
=== Parameter structure for CmdID 0x801F02BB ===
  −
{| class="wikitable" border="1"
  −
!  Index Word
  −
!  Description
  −
|-
  −
| 0-1
  −
| u64, every 4-bits is a value from some array.
  −
|}
  −
 
  −
=== Parameter structure for CmdID 0x803F0232 ===
  −
{| class="wikitable" border="1"
  −
!  Index Word
  −
!  Description
  −
|-
  −
| 0
  −
| Entry index + total CmdID 0x826F0200 parameter-buffer entries.
  −
|-
  −
| 1
  −
| ?
  −
|-
  −
| 2
  −
| ?
  −
|-
  −
| 3
  −
| ?
  −
|}
  −
 
  −
Each parameter buffer for CmdID 0x803F0232 is an entry loaded from an array.
 
1,434

edits

Navigation menu