GPU/GL Arrays

< GPU
Revision as of 22:01, 24 February 2013 by Yellows8 (talk | contribs) (Created page with "This page describes the GPU commands used for OpenGL arrays. ==== Command Sets ==== ===== glDrawElements() ===== {| class="wikitable" border="1" ! Command Ind...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.