This page describes the GPU commands used for OpenGL arrays.
Command Sets
glDrawElements()
| 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
| 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
| 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
| 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
|
1 = indices data-type GL_UNSIGNED_SHORT, 0 = GL_UNSIGNED_BYTE.
|
Parameter structure for CmdID 0x826F0200
| Index Word
|
Description
|
| 0x0
|
Base physical address >> 3, normally located in VRAM.
|
| 0x1
|
Physical address, relative to the base address. When writing each entry: value |= entval << (index * 4).
|
| 0x2
|
Value is: (0xF0000000 + (val<<28)) | (((0xFF<<totalentries) & 0xFF)<<16).
|
| 0x3-0x26
|
12 entries, each entry is 3 words.
|
Entry structure
| Index Word
|
Description
|
| 0
|
Physical address, relative to the base address.
|
| 1
|
Entry index
|
| 2
|
Value is: 0x10000000 | (arraytype<<16).
|
When the entry is unused, the entry data is all-zero.
Entry array types
| Type
|
Description
|
| 0x2
|
?
|
| 0x3
|
Normals array
|
| 0x4
|
Texture coordinates array
|
| 0xC
|
Vertex array
|
Parameter structure for CmdID 0x801F02BB
| Index Word
|
Description
|
| 0-1
|
u64, every 4-bits is a value from some array.
|
Parameter structure for CmdID 0x803F0232
| 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.