<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Captnoord</id>
	<title>3dbrew - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.3dbrew.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Captnoord"/>
	<link rel="alternate" type="text/html" href="https://www.3dbrew.org/wiki/Special:Contributions/Captnoord"/>
	<updated>2026-04-15T12:46:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://www.3dbrew.org/w/index.php?title=GPU/GL_Arrays&amp;diff=5107</id>
		<title>GPU/GL Arrays</title>
		<link rel="alternate" type="text/html" href="https://www.3dbrew.org/w/index.php?title=GPU/GL_Arrays&amp;diff=5107"/>
		<updated>2013-03-09T09:42:16Z</updated>

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