GPU/External Registers: Difference between revisions

Moved GPU commands info to a seperate page.
Line 54: Line 54:
|}
|}


These 3 registers are used by [[GX_Commands|GX command]] 1. This is used for OpenGL commands.
These 3 registers are used by [[GX_Commands|GX command]] 1. This is used for [[GPU_Commands|GPU commands]].


== 0x1EF00010 ==
== 0x1EF00010 ==
Line 113: Line 113:


These registers are used by [[GX_Commands|GX command]] 3 and 4. For cmd4, *0x1EF00C18 |= 1 is used instead of just writing value 1.
These registers are used by [[GX_Commands|GX command]] 3 and 4. For cmd4, *0x1EF00C18 |= 1 is used instead of just writing value 1.
== GPU Commands ==
The buffer for [[GX_Commands|GX command]] 1 with the registers at 0x1EF018E0 is used for GPU commands including OpenGL commands, each 8-byte entry in the buffer is a command. Cmd+0 is the command parameter, and cmd+4 is the cmdID.
=== Commands ===
{| class="wikitable" border="1"
!  CommandID
!  Parameter
!  Description
|-
| 0x000F0010
| Value is 0x12345678
| This command is always the last command in the buffer.
|-
| 0x000F0110
| Value 0x1
| This command is immediately before CmdID 0x000F0010, this is used elsewhere in the buffer as well.
|-
| 0x000F0111
| Value 0x1
| This command is immediately before CmdID 0x000F0110, however CmdID 0x000F0110 doesn't always follow this command.
|-
| 0x000F0042
| float y vector
| This sets Y scaling for the current matrix.
|-
| 0x000F0044
| float x vector
| This sets X scaling for the current matrix.
|-
| 0x000F02C0
| <nowiki>0x80000000 | ID?</nowiki> When bit31 is clear, the specified vertices are not rendered via CmdID 0xXXXF02C1.
| This is used immediately before CmdID 0xXXXF02C1.
|-
| 0xXXXF02C1
| float X coordinate for the first vertex
| CmdID is <nowiki>0x000F02C1 | ((totalvertices<<22) - 0x100000).</nowiki> The vertex entries is the data following the command. The first word in the first vertex entry is the Y coordinate.
|}
=== Vertex Entry ===
{| class="wikitable" border="1"
!  Index Word
!  Description
|-
| 0
| X coordinate, for the first vertex this is stored in the command parameter instead.
|-
| 1
| Y coordinate
|-
| 2
| Z coordinate
|-
| 3
| Padding for the last vertex entry
|}